PythonでPandasのPlotを試す

qiita.com こちらの記事のオマージュです。環境は、Windows/Python3.4です。pandasなどはpipでインストールします。groupbyによる集計や、日本語表記などに対応しました。 gist.github.com 補記:可変長引数・キーワード可変長引数 $ cat kwargs.py def func…

Cythonによるパフォーマンス向上

Cython ―Cとの融合によるPythonの高速化作者: Kurt W. Smith,中田秀基,長尾高弘出版社/メーカー: オライリージャパン発売日: 2015/06/19メディア: 大型本この商品を含むブログ (3件) を見る Pythonのような書きやすいインタープリタ型言語で書き始めて結果を…

Pythonの正規表現でバックスラッシュを含む文字列とマッチする場合

Pythonのreモジュールでsearchなどの関数に正規表現を与える場合、rubyやperlなどのように正規表現を直接与えることができず、文字列として与える必要があるため、WindowsのPath区切りにマッチさせたいときなどに正規表現内にバックスラッシュを使いたい場合…

stroll(nicer walk)のC++バージョンを書いた

ディレクトリを幅優先探索で掘っていき、ディレクトリやファイルに対する条件を適用し、それらを与えた条件(関数)によってソートし、見つけたファイルパスを返すライブラリを書いた。ちょうどPythonのos.walkを高機能にしたもので、所望のファイルだけを取…

os.walkを便利に使える関数strollを書いた

リスト指定と正規表現マッチに対応し、ディレクトリパスとファイル名を返すようにして、関数名をnicewalkからstroll*1に変更(短い単語の方が良かった) ディレクトリの扱いを明確化。rootはカレントディレクトリのディレクトリ名で、pathはカレントディレク…

OpenCV入門

Max OS X(10.10.5)でOpenCVに入門してみた。写真はtoeさんです。 導入はbrewで簡単にインストールできるし、インクルード検索パスやライブラリ検索パスもpkg-configで簡単に指定できる。 ネガポジ反転は、~演算子(ビット反転・1の補数)を実行するだけで取…

Pythonのpickleでserializeできない問題の回避策(dill)

読み込んだデータをシリアライズしておきたい場合、pickleを使えば任意のクラスのオブジェクトを扱える。ファイルを開いて、dumpで書き出し、loadで読み出しを行えば良い。しかし、ある構造を持つクラスのオブジェクトをpickleでシリアライズしようとすると…

Pythonで統計処理した結果を表示する場合の便利関数を書いた

全てのキーの組み合わせが無い場合でも、defaultdictの初期値を用いて表を完成させるように修正。 pandasのMultiIndexを使って表示する処理を追記。 統計処理ではネストされた辞書(dict)が多用することで、比較的簡単に所望の複合キーに対応する値を取得し…

ファイルの最後の方に出現する行を取得する

大量のファイル、しかもサイズの大きいものを読み込んで、ある特定の小数の行だけを取り出したいような場合で、その特定の行がいつもファイルの最後に近い位置に出現することが期待できる場合、ファイルを先頭から読み込んで行って、特定の行に達するまで読…

セーブ機能を追加しました@transatonce.appspot.com

transatonce 単語を翻訳するとき、こういった要求を満たせるサイトがあると良いと思って作っているものです。 いくつかの単語を一度に翻訳したい(英文の記事や論文を読み終わったあとでメモしておいた単語を at once に翻訳したい) それらを一つのページで…

Valgrind で Pthread の Debug

OS X Yosemite (10.10.5) でC(GNU99)でpthreadを用いたマルチスレッドプログラムを書いていて、なかなかerrorが取れなかったときに以下ツイートを起点にした議論を見て、ValgrindのHelgrind toolが使えそうということで使ってみた。 pthread_create に渡した…

Go で Package を Build

うまくいかなくなったビルドが元通りにうまくいくようになったので、とりあえずそのメモ $ env | grep GO GOROOT=/usr/local/Cellar/go/1.5.1/libexec GOPATH=/Users/nishidy/.go $ head -n1 *go ==> count.go <== package ParseWikipediaXML ==> parse.go <…

Erlang で Process の Join

Erlang(BEAM)のProcessは、他言語でThread.Joinのようなスレッド・プロセスの終了を待つ機能が無さそうなので、Receiveを用いたメッセージパッシングで実装した 今回は、Preforkモデルのように予めProcessをワーカースレッド的に起動しておく実装ではなく、…

ISUCON5から学ぶいろいろ

ISUCON5のエントリを見てるとたくさん得られることがある。コンテストといっても、実際に課題になった技術は単に知っているだけのものとは違って、手を動かして実際に実装してみないといけないな、と思わせるには十分なインパクトがある。単に知っているだけ…

アンアラインメントデータアクセスについて

メモリにデータを格納する際、通常はアラインメントに沿って展開される。ワード単位以上のデータを格納する場合、その開始アドレスがワード単位の整数倍になっていないと、メモリフェッチが余分に発生してスループットが落ちるか、アラインメント違反によっ…

MySQLのグループコミットとそれに連想するもの

グループコミット MySQLでは、バイナリログへの書き込みのタイミングを、sync_binlogによってユーザが指定することができる。具体的にはsync_binlogの値によって、何回コミットを行ったらバイナリログをディスクにフラッシュするか、を指示するため、sync_bi…

Haskellのパース処理(文字コードについて)

文字コードについて Unicodeは文字集合である。Unicodeで規定される文字を、UTF-8やUTF-16などの符号化方式で扱うことができる(e.g. Shift-JISやEUC-JPは別の文字集合を扱う)。Unicodeでは文字集合を、コードポイントという各文字に対する通し番号のようなも…

純粋関数型言語 Haskell 基礎まとめ

すごいHaskellたのしく学ぼう!作者: Miran Lipovaca出版社/メーカー: オーム社発売日: 2012/09/21メディア: Kindle版購入: 4人 クリック: 9回この商品を含むブログを見る Haskellを学ぶ上で難しいのは、その概念が高度に抽象化されている点にある*1。そのた…

Embulk.batのハックについて

WindowsでEmbulkを使う場合はJavaをインストールした上で、Quick startにあるように以下のコマンドでファイルをダウンロードしたものを実行する > PowerShell -Command "& {Invoke-WebRequest http://dl.embulk.org/embulk-latest.jar -OutFile embulk.bat}"…

ConsulのDNSインターフェースから学ぶDNSの基本

ConsulはDNSインターフェースを通してノードとサービスの死活監視の状況を提供することができる e.g. ロードバランスのためラウンドロビンしているノード群を問い合わせ結果として提供するとき、問い合わせ結果からダウンしたノード・サービスを動的に外す D…

YAPC::Asia Tokyo 2015 に参加しました

自分が聞いた2日間の中で良かったトークと、見るべきだったけど見れなかったトークについても載せておいて、次回の教訓にする 単純だけど重要なことは、「直感で見たいと思ったものを優先して見る(なんやかんや深く考え過ぎない)」、「良い人のトークは良…

Rubyブロック・メソッド呼び出し

b2args(1,&pr)というように、実引数のProcオブジェクトに&を付けてb2argsに渡している理由は、b2argsの仮引数に&をつけているため。Procオブジェクトをブロックに変換したものが、b2argsに渡した時点で再度Procオブジェクトに変換される。 yieldは、仮引数の…

Rubyメタプログラミング

ゴーストメソッドを追加。(8/18) オープンクラス、名前無しクラスを追加。(8/15) extend、sendを追加。(8/31) TL;DR classはClassクラスのオブジェクト、moduleはModuleクラスのオブジェクト、である 特異クラスはclass << objectで、あるobjectに特異…

オブジェクト指向におけるポリモーフィズムについて

ポリモーフィズムに関する動作をどうすれば機械的に理解できるのかを考えていて何度も失敗して今に至るのだが、今回こそはと絵を作成してみた。JavaとC++(ほぼ同じ)でコードは絵と対応付けて実装している。 Javaであれば、private関数以外はサブクラスにオ…

ヒープ領域におけるメモリ管理について

プログラマによるマニュアル操作 mallocやnewによってヒープ領域のメモリを割り当てたり、freeやdeleteによってそのメモリを解放したり、といった操作を指す。Cではヒープ領域を扱うために必須の操作となる。 これらの関数や演算子で割り当てたメモリは、そ…

「データベース実践入門」読了

理論から学ぶデータベース実践入門 ~リレーショナルモデルによる効率的なSQL (WEB+DB PRESS plus)作者: 奥野幹也出版社/メーカー: 技術評論社発売日: 2015/03/10メディア: 単行本(ソフトカバー)この商品を含むブログ (15件) を見る 集合論に関する最初の方…

MySQL Thread Pool

MySQLサーバはスレッドモデルで動作しており、クライアントからの接続と1:1になるようにスレッドが生成される サーバ上のCPU数を超える同時接続が発生すると、コンテキストスイッチングによってCPUキャッシュのヒット率が下がり、これがパフォーマンスに影響…

プログラミング Erlang 捕捉不可終了シグナル

プログラミングErlang作者: Joe Armstrong,榊原一矢出版社/メーカー: オーム社発売日: 2008/02/23メディア: 単行本(ソフトカバー)購入: 8人 クリック: 284回この商品を含むブログ (97件) を見る 参考書のコードを実行して検証した P130のkillが捕捉不可と…

sed/正規表現メモ

sedについて 改行コードを変更したい 改行コードを\nから\r\nに(つまりLinux(LF)からWindows(CR+LF)に)変換したい sed -i 's/\n/\r\n/' file はダメで、sed -i 's/$/\r/' file とする必要がある パターンスペース $(行末)を\r(CR)で変換している…

「Mobageを支える技術」読了

Mobageを支える技術 ~ソーシャルゲームの舞台裏~ (WEB+DB PRESS plus)作者: DeNA出版社/メーカー: 技術評論社発売日: 2012/06/13メディア: 単行本(ソフトカバー)購入: 31人 クリック: 737回この商品を含むブログを見る わくわくしながら読める一冊ですね P…