2015-01-01から1年間の記事一覧

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…

Perl復習メモ

ファイルハンドル プログラムの引数(@ARGS)や、ワンライナーにパイプで渡す場合は、ファイルハンドルは省略できる while (<>) { # do something with $_ } connect済みのソケットを標準入力、標準出力と接続する # $socket is already connected open(STDIN,…

Google Code Jam レビュー : Round 1C 2015

解法見ないで解けたのはいいが時間内に終わらせるのは難しい... Round 1C 2015: Problem A. Brattleship · GitHub R x C の碁盤に、弟が1 x W の戦艦をC方向に沿って置き、兄が碁盤を見ずに戦艦を弾丸で仕留めるゲーム。弟は、兄が弾丸を打つたびに、弟が戦…

SSLサーバ証明書まとめ簡易版

ファイル拡張子 .DER/.PEMはエンコーディングを表している .DER : ASN.1で表されたものをバイナリにシリアライズ .PEM : ASN.1で表されたものをバイナリにシリアライズしてBase64でテキスト化(-- BEGINで始まるファイル) .CRT/.CER : 証明書≒「認証局の署…

Haskellで「1時間以内に解けなければプログラマ失格となってしまう5つの問題が話題に」の5問目を解いてみた

$ cat p5.hs import Debug.Trace output lst _ _ [] = lst output lst _ [] _ = lst output lst n (x:xs) (y:ys) | n==x = output (lst++[y]) (n+1) (xs) ys | otherwise = output lst (n+1) (x:xs) ys filt100 lst n [] = lst filt100 lst n (x:xs) | x==10…

WEB+DB PRESS plus シリーズ本(オンラインゲーム・サーバ/インフラを支える技術)

オンラインゲームを支える技術 ??壮大なプレイ空間の舞台裏 (WEB+DB PRESS plus)作者: 中嶋謙互出版社/メーカー: 技術評論社発売日: 2011/03/24メディア: 単行本(ソフトカバー)購入: 33人 クリック: 1,696回この商品を含むブログ (57件) を見る Javaでは、…

Bashで「1時間以内に解けなければプログラマ失格となってしまう5つの問題が話題に」の5問目を解いてみた

$ cat p5.sh #!/bin/bash.exe calc(){ if [ $1 -eq 10 ]; then [ $(expr $2) -eq 100 ] && echo ${2// /} else for x in ' + ' ' - ' ''; do calc $(expr $1 + 1) "${2}${x}${1}" done fi } calc 2 "1" $ time bash p5.sh 1+2+3-4+5+6+78+9 1+2+34-5+67-8+9 …

MySQL Master HA and Write Scale-out

MySQLとNoSQL MySQLでは、マスタ:スレーブを1:N構成とすることで、参照系クエリを複数のスレーブに振り分けることができ、スレーブを増やすことによって参照系クエリのスケールアウトが可能。 更新系クエリは、データを一意に保つためマスタ1台で対応する…

MySQL Semi-Synchronous Replication in Facebook

Yoshinori*1さんのブログポストについてまとめておく Yoshinori Matsunobu's blog: Semi-Synchronous Replication at Facebook MySQL standard Semi-Synchronous Replication MySQL 5.5から導入された機能で、コミット時にマスタのバイナリログとスレーブの…

Informational sources to MidoNet plugin for OpenStack Neutron

以前に見たと思った資料をこの度やっと見つけたので、忘れないようにまとめておく 情報資料 Neutronの検証 http://ja.community.dell.com/techcenter/m/mediagallery/3660 Neutron(OVS)とMidoNetの比較検証 http://ja.community.dell.com/techcenter/b/weblo…

SSHの接続断タイミング

SSH Frequently Asked Questions SSHサーバがクライアントからの接続を切断するのは、クライアントからの接続により起動されたSSHプロセスがexitしてpipeを閉じることで、SSHサーバ(sshd)がそのSSHプロセスのstdout/stderrに繋がるpipeでend-of-file(eof…

SQL実践入門読了

SQL実践入門──高速でわかりやすいクエリの書き方 (WEB+DB PRESS plus)作者: ミック出版社/メーカー: 技術評論社発売日: 2015/04/11メディア: 単行本(ソフトカバー)この商品を含むブログ (2件) を見る 集合論としてのクエリだけでなく手続き型のクエリや、…