done is better than perfect

自分が学んだことや、作成したプログラムの記事を書きます。すべての記載は他に定める場合を除き個人的なものです。

プログラミング

JavaのUnmodifialeMapの使い道について

自分向け備忘録 下記のコードの問題点を考える。 class CustomerRecords { private Map<String, Customer> records; public Map<String, Customer> getCustomers() { return this.records; } } getCustomers() がreferenceを返してしまっているので、カプセル化に失敗していますね。 では、以下で</string,></string,>…

rm -fをした場合のexit-statusについて

bashにおいて、rmコマンドを使った場合のexit statusについてです。初歩的なことだとは思いますが、自分への備忘録。 結論を先に書くと、rm $PATH_TO_FILEをした時に$PATH_TO_FILEが元々存在しない場合、-fオプションがない場合はexit statusが1となり、-fオ…

Vimの正規表現で(変数) = (値)となっているものを(変数)だけにする

タイトルではわかりづらいかも知れません.以下の様なことをしたいときです. # このように変数 = 値が羅列されているときに・・・ listen = False command = False upload = False execute = "" target = "" upload_destination = "" port = 0 # こうしたい…

Mac OS ΧでProxy設定をCLIで操作する方法

自分用のメモ。 こちらの記事のとおりです。 例えば、SSH tunnelを使って自分専用のプロキシサーバーとローカルマシンとの間を安全に繋ぎたいときなどにこんな感じに書くと便利です。 #!/bin/bash sudo networksetup -setwebproxystate Ethernet on sudo net…

numpy.arrayやscipy.sparse.lil_matrixなどで指定した行だけでできた行列を作る

自分用メモ書き.ある行列から指定した行だけ(例えば[1,3,4]みたいな感じでリストで抜き出したい行が入っているとする)でできた行列を作る. In [1]: choices = [[0, 1, 2, 3], [10, 11, 12, 13], ...: [20, 21, 22, 23], [30, 31, 32, 33]] In [3]: import …

Go言語でPythonのcollections.Counterを簡単に実装してみた

Pythonのcollections.Counterは個人的にすごく好きなんですが,Go言語の練習を兼ねてGo言語で実装してみました. 完璧な実装ではなく,カウントできるのは文字列だけです.また,普通に実装間違えてる可能性もあります.自己責任でよろしくお願いします. Py…

Pythonの文字列連結に"+"演算子は必要ない

Pythonの入門サイトとかだと,文字列連結に+演算子を使うことがよく例示されているようです. s = "this " + "is " + "test" print(s) ==> "this is test" ですが,Pythonにおいて文字列連結には+演算子は必要ないです. s = "this " "is " "test" print(s) …

git diffで日本語の文字化けを治す

このページのまんまです. ファイルはutf-8なのになぜか文字化ける(というか,みたいな表記になってしまう)ので,↑のように設定しました. 環境はMac OSΧ 10.10.1,git versionは2.2.1です. $ git config --global core.pager "nkf -w | LESSCHARSET=utf-8 …

Pythonを始めた時から知っていたかったベターな書き方

かなり基本的な内容です.それと記事に一貫性があるわけではないです. 1. with statement 定番のwithです.ほとんどの場合で使えると思うので,積極的に使いましょう. Goでは同じようなことをdeferを使ったりしますね. # not good... f = open("./test.tx…

Numpyで1-of-K表現を簡単に作る方法

愚直にやるとめんどくさそうでしたが、結構簡単に出来たのでメモ。 一応、1-of-K表現とは、ある要素だけが1で、それ以外が0なベクトルです。 [0, 0, 1, 0, 0] みたいな奴。 ここでは、あるidxの要素が1、それ以外が0であることがわかっていると仮定する。 im…

Go言語でのSet(集合)型について

Pythonとかではset型が標準でありますが、Go言語には標準ではなさそうなので調べてみたら便利なライブラリが見つかったので簡単に紹介。 deckarep/golang-set 使い方は以下のような感じです。 package main import ( "fmt" "github.com/deckarep/golang-set"…

Go言語のencoding/gobは1GBまでのファイルしか読み込めない

結構悩んだのでメモ。あるmapやsliceなど、何かしらのデータの入った変数をファイルとして書き出して、後で利用したいことがたまにあります。 Pythonならpickleなどを使いますが、Go言語ではencoding/gobという標準ライブラリを使うと似たようなことができる…

Yosemiteを入れてからやったこと(クリーンインストール)

Mac miniが2年ぶりにやっとアップデートされたので買ってきました。某掲示板では結構酷評ですが、自分は今の所満足しています。Yosemiteでの環境構築を一から書いてみます。 homeの暗号化 Mac標準のFileVaultを使用します。システムの環境設定→セキュリティ…

GNU/LinuxやWindowsに入れたいフリーソフト

特にGNU/Linuxとかだと割りと頻繁にOSセットアップすることがあるので、個人的によく使うソフトを書き出してみます。 GNU/Linux (Ubuntu) Google Chrome ド定番ですね。OSを選ばず使えるのが本当に便利でよく使っています。Firefoxでもいいのですが、やっぱ…

Matplotlibで株価の推移を時系列で表示する

株や統計の勉強を兼ねて、まずはPython3+matplotlibで株価の推移を見てみることにしました。 シンプルにX軸に日付、Y軸に株価(終値)をプロットしてみます。 1. データ 今回使用するデータはk-db.com様からダウンロードしました。 一部抜粋すると、以下の様な…

Go言語でコマンドラインAA表示

Go言語で予め用意しておいたAAをランダムに表示するプログラム書いてみました。 はっきり言って実用性は皆無です。text/templateを使ってみたかっただけです。 プログラムとテンプレート // aacreator.go package main import ( "fmt" "io/ioutil" "log" "os…

Go言語でNgram (with channel)

Go言語で簡単なN-Gramのカウント部分(tokenに分割し、カウントするだけ)を実装してみたいと思います。 ただ実装するだけではつまらないので、channelを使って少しでも早くしてみます。 以下で出てくるGo言語のソースコードで、最初の行に書かれているのはフ…

7つのPythonにおける正規表現例 (Re Match Search FindAll)

7 Python Regular Expressions Examples – Re Match Search FindAlの一部翻訳+αです。 正規表現は特に混乱することが多いのでメモ。一部端折るので必ず元記事の方も参照して下さい。 また、必要に応じてPythonの公式ドキュメントも参照しています。 Pythonの…

Go言語のArrayとSliceについて

Go言語のArrayとSliceについて 調べるたびに忘れるのでメモしておきます。 基本的にGo Slices: usage and internals に基いています。 というかほとんど直訳です。 Introduction Sliceは他の言語のArrayに似ているが、違う部分がある。 Arrays Slice型はGo言…

bzip2とgzipのParallel版、pbzip2とpigz

bzip2とgzipのParallel版、pbzip2とpigz 巨大なテキストファイルを圧縮する必要に迫られたのですが、標準のbzip2やgzipは並列処理に対応しておらず、今どきのマシンだともったいないです。 そこで調べてみると、それぞれのParallel版が見つかりました。pbzip…

Pythonでのanyの速度

Pythonにはanyやallといった便利な関数があります。 こちらのサイトに、 しかし特にany関数では、ジェネレータ式を使用した方がパフォーマンスが良いと思う。 と書いてあったので、せっかくなのでipythonに慣れることも兼ねて簡単に計測してみました。 結果…

PythonでSkip-gramを実装した

Skip-gramについて、詳しくはこちら 英語版のWikipediaはこんなニッチな技術も乗っていたりするんですね。びっくりしました。 コードはこちら そうとう不効率な実装になってしまったが、いい実装が思いつかない…

Change apt source (Ubuntu 14.04)

If sudo apt-get update command failed like this: W: Failed to fetch http://jp.archive.ubuntu.com/ubuntu/dists/trusty/InRelease-- W: Failed to fetch http://jp.archive.ubuntu.com/ubuntu/dists/trusty-updates/InRelease-- W: Failed to fetch htt…

SSHでGNU/Linuxにログインした時のメッセージを変えてみた

SSHでDebian GNU/LinuxなどのUNIX系OSにログインした際,以下の様なメッセージが表示されることがあります. Linux v157-7-141-207 3.13-1-amd64 #1 SMP Debian 3.13.10-1 (2014-04-15) x86_64 The programs included with the Debian GNU/Linux system are …

文章間の距離を様々な尺度で計算できるパッケージを書いた[Golang]

Go言語でLevenshtein距離など様々な尺度で文章間の距離を測ることができるパッケージを書きました。 https://github.com/masatana/go-textdistance (現在のところ)対応している尺度は以下の通りです。 Levenshtein distance Damerau-Levenshtein distance Ja…

青空文庫のクローラをGo言語で作った

青空文庫のクローラをGo言語で書いてみました。 GitHub - masatana/aozorago 実際の実装はGitHubのリポジトリを見てもらえればわかると思います。 基本的にはトップページ→インデックスページ→図書カードページ→zipの流れで取ってきています。 Goroutinesを…

Install OpenCV via Homebrew

TL;DR Use Homebrew You can use Xcode! 1. Uninstall Macports Unfortunately, Macports and Homebrew will not coexist well together. Before installing Homebrew, you should uninstall Macports. (If you can’t uninstall it for some reason, please …

CourseraのMachine Learning EX6でハマったこと

今CourseraのMachine Learningのオンライン授業を受けています。 第6週まで来たのですが、Octaveの3.6.4バージョン以上を使っている人は注意が必要です。 visualizeBoundary.mの21行目を以下のように編集しましょう。 contour(X1, X2, vals, [0 0], 'LineCo…

Install tmux, python, numpy, scikit-learn, scipy from source (CentOS 5.5)

表題のとおりです。とある事情があって既存の環境を壊すことができなかったので、HOMEディレクトリに環境を整えてみました。 インストール時に躓いたものだけメモ代わりに残しておきます。 インストールする先は/home/{user}/binです。これだとインストール…

Web業界のエンジニアブログをまとめてみた

Web業界で有名(=僕がよく読む)なエンジニアブログをまとめてみました。順不同です。 Facebook Google Yahoo! Twitter Mixi GREE DeNA CyberAgent Hatena pixiv Evernote Microsoft Cybozu Wantedly=>Wantedly GitHub