DBのタイムアウトはサーバ側をクライアント側より長くする

多くのデータベースにはコネクションのタイムアウトという設定が存在します。指定した期間使われていないコネクションを解放するというもので、クライアント、サーバ双方で設定可能になっています。 タイムアウトはサーバ側の寿命がクライアント側よりも長く…

mongoDBクラスタにrestoreする時の高速化テクニック

developers.cyberagent.co.jp この記事のように新しいmongoDBクラスタにrestoreでデータを移行する場合のテクニックですが、新クラスタへの移行前にバックアップデータ等でrestoreを行って暖気しておくというものがあります。 mongoDBの大規模なクラスタに巨…

JavaScript配列の空要素の話

gfx.hatenablog.com 配列の空要素の問題ですね。容量は確保されてるが値が(undefinedさえも)入っていない状態。 $ node -p -e "new Array(3)" [ <3 empty items> ] この配列のlengthは3になるのだが、forEachなどのイテレーション関数では空要素は列挙され…

ニンテンドーラボの懸念点

ゼルダを筆頭に高品質なコンピュータゲームをリリースしながら、なおアナログとの融合を狙ってくるあたり任天堂は他のゲーム会社とは一線を画していますねー。あの会社には遊びは身体性を抜きに生まれないとかそんな感じの開発の哲学でもあるんでしょうかね…

2017年視聴アニメ

2017年の視聴アニメメモ 冬(1月〜) 完走3作品 幼女戦記 リトルウィッチアカデミア けものフレンズ けものフレンズが話題を独占した2017冬、俺的にはけもフレよりも幼女戦記で悠木碧の役の幅を再確認できたシーズンでした 春(4月〜) 完走4作品 終末なにして…

ちょっと変わったフィボナッチ数の作り方

15歳女子が「フィボナッチ数列は2進数でも美しいのか」を考察 算数・数学の自由研究作品コンクール「MATHコン」で日本数学検定協会賞を受賞 | プレスリリース | 公益財団法人 日本数学検定協会 フィボナッチと聞いて、昔編み出した少し変わったフィボナッ…

Jenkinsでgithubのpull requestをビルドする

Jenkins上でGithubのプルリクエストをビルドできたのでその方法を記録しておく。もちろんGithub enterpriseでも可能 この方法では通常のブランチをビルドできないのでブランチ用とプルリク用にジョブを2つ作らなくてはならないのが欠点 パラメータの設定 プ…

ブルームフィルタ

お花フィルタ?ではなく、ブルームという人が発明したアルゴリズムらしい。 ブルームフィルタ(bloom filter)とは ある要素が集合に含まれているかどうか高速に判定できる 空間効率がいい ただし 要素そのものを保持してるわけではないので、要素は別に保存…

Node v8.9.0 LTS & v9.0.0リリース

Node v8.9.0 LTSがリリースされました。 今回のリリースで機能的に特筆するようものはありませんが、今後はエッジな変態プログラマじゃない人もasync awaitを積極的に使ってOKという事で記念すべきリリースですね。コールバック地獄も過去のものになりました…

Node v8.xのHTTP/2を試す、その2

続き HTTP/2のpushも試す 今度はこんな感じ。createSecureServerにenablePushオプションを付けないとダメっぽい。 const http2 = require('http2'); const fs = require('fs') const server = http2.createSecureServer({ key: fs.readFileSync('./server.ke…

Node v8.xのHTTP/2を試す

Node v8.8.0がリリースされたが、まだLTSにならない。どうやらv8.x LTSは10/31リリース目標でまだお預けらしい。 気を取り直してv8.8.0のchange logを眺めると、今回のリリースからHTTP/2モジュールがデフォルトで有効になったようだ。実験的実装という位置…

golangのappendの速度比較

Go

appendって毎回新しいスライスが作られているような感じに見えるので、なんか遅そうなイメージがあるんすよね。まぁ、実際には内部で参照している配列のキャパシティに余裕があれば空きに追加されるだけなのでキャパシティさえあれば高速なのだが。 では、実…

Golangの構造体、値のスライスとポインタのスライス

Go

構造体の値のスライスとポインタのスライス、どちらがいいのか? こんな構造体とJSON文字列を定義して… type Hoge struct { Nyan int64 Wang string } const jsonStr = `[{"nyan":1, "wang":"aaaa"}, {"nyan":1, "wang":"bbbb"}]` ポインタのスライスの場合 …

JSコード片をObjectURL化してWeb Workerで実行

今Web WorkerといえばService Workerの話題ばかりですが、これからするのは普通のWorker(Dedicated Worker)の話です。 Web Workerはバックグラウンドでスクリプトを実行できるものです。 重い処理をJSで実行するとUIが固まって何の操作も受け付けなくなり…

Golangの構造体比較

Go

Goでは構造体を == で比較できるらしい。 package main import ( "fmt" "unsafe" ) type Hoge struct { t bool d int s string } func main() { a := Hoge{t: true, d: 1, s:"nyan"} b := Hoge{t: true, d: 1, s:"nyan"} c := a // 値コピー d := &a // ポイ…

絶対ハマるらしいgolangのnilにハマった件

絶対ハマる、不思議なnil - Qiita nil だと思ってやつが nil じゃなかった - Golang · m0t0k1ch1st0ry ハマりましたwwww func main() { var e1 error e1 = x() if e1 == nil { fmt.Printf("e1 == nil: %v\n", e1) } else { fmt.Printf("e1 != nil: %v\n"…

scannerで読み込んだ行を並列でjson.Unmershalすると壊れる

golang歴4時間です。 1行1JSONなファイルを処理するため、以下のようなコードをかいたところjson.Unmarshalでエラーになりました。 func main() { scanner := bufio.NewScanner(os.Stdin) ch := make(chan bool, 3) var wg sync.WaitGroup for scanner.Scan(…

Node.jsでセグメンテーションフォルトが発生したので調査した

Node.js v4.3をv4.8にアップデートしたところsegmentation faultが多発するようになった。 /var/log/messages を見ると以下のようなログが残っている May 15 08:51:32 hostname-hoge001 kernel: node[11262]: segfault at a764a503788 ip 0000000000aecd71 s…

Node.jsのヒープサイズ表示が修正されていた

以前、–max_old_space_sizeに大きな値を指定するとヒープサイズの表示がおかしいなー、もしかして4GB以上は指定できないのかなー、どうせそんな値指定しないからいっかー、とか思っていたのだが、表示のバグで6.10.1で修正されていた。 $ nvm use v6.10.0 No…

Node.js v8とasync function

Node.js v8.0.0のリリースが近い。v8は10月にリリースされるLTSの候補版、マイルストーンとして非常に重要なリリースとなる。 LTSラベルは4系列がArgon(アルゴン)、6系列がBoron(ホウ素)だったので、8系列のLTSはCarbon(炭素)あたりが有力なんすかね?…

mongoDBのcount正しくない問題

mongoDBでは、シャーディングされたコレクションのcountが正しい値を返さないことがあります。これには2つの原因があります。 チャンク移動中である 孤児ドキュメントが存在する 1は、チャンク移動中は正しい値が帰らないということです。シャード間でデータ…

Node.jsの循環参照問題

モジュールの循環参照というNode.jsユーザの間ではよく知られている問題がある。 requireしたモジュールのメソッドやプロパティがundefinedになってしまうという問題だ。これは以下の条件で発生する モジュールaとモジュールbが互いにrequireしている 間に他…

スクリプトのコマンドライン引数にタブを渡す

Node.jsとかRubyとかPythonのスクリプトでコマンドライン引数を受け取る時、引数にタブ文字を指定する方法 var a = process.argv[2]; console.log([1,2,3].join(a)); 実行 > node hoge.js \t 1t2t3 > node hoge.js '\t' 1\t2\t3 正解は > node hoge.js $'\t'…

JavaScriptの型変換に今更刺し殺される

ある日デバッガを見ていたらこんな文字列が目に入った Mon Feb 13 2017 18:55:53 GMT+0900 (JST)1000 ナニコレ…? ソース見たらこんな風になっていた var now = new Date(); var startTime = now - 1000; var endTime = now + 1000; Dateオブジェクトに数値…

mongodb 2系と3系でpropertyの並び順が変わった

mongodbを2.4から3.2にアップグレードする作業を行っている。3.2にするとテストが大量に失敗するようになったのだが、その原因の一つがこれ。 2.4 > db.Test.update({_id: "nyan"}, {$set: {hoge: {b: {x: 1}}}}, {upsert: true}); > db.Test.findAndModify(…

npm 2.15ではdevtoolsetのgccでビルドできません

Node.js v4系のネイティブモジュールをビルドするにはC++11対応のコンパイラが必要です。 CentOS 6のgccは4.4と古くてビルドすることができないのですが、devtoolsetでgcc 4.8を入れることでネイティブモジュールを npm install できるようになります。 sudo…

node.jsでモジュールを再ロードする

requireされたモジュールは、モジュールのフルパスをキーとしてrequire.cacheというオブジェクトに格納されており、これを削除すればモジュールを再びロードできるらしい。というわけでテスト。 # main.js console.log(process.pid); setInterval(function()…

ag(the silver searcher)でリテラル検索

agは内部でpcreを使っているようで、デフォルトで . はワイルドカードとして扱われてしまう。ドットそのものを検索するには ag -Q .save ./lib のように-Q(--literal、または-F)オプションを指定する。 -Qの代わりに2重のバックスラッシュでエスケープし…

ボックス=ミューラー法

よしコクのある乱数の実際のサンプルをアップした。こうやって並べてみると、味の違いは一目瞭然。 https://t.co/esbYaYWYLh— 深津 貴之 (@fladdict) November 4, 2016 ボックスミューラー法の養殖された乱数とはww? 10000.times { x = rand() y = rand()…

乱数にコクを出す?

togetter.com コクとはww? count = (ARGV[0] || 1).to_i 10000.times do puts Array.new(count) { rand() }.inject(&:+) / count end rand.rbとして保存 $ ruby rand.rb 1 | pbcopy これをgoogleスプレッドシートでグラフにする rand - Google スプレッド…