日本の最高気温記録が更新された

暑さ番付、東の横綱熊谷市で日本の最高気温記録を塗り替える41.1度をマークしたそうです。 今日の熊谷、午前中の最低気温がなんと28.0度、日の出とともに気温が上がり、正午に39度、13時に40度近くまで上昇。その後も勢いは衰えず、14時23分に41.1度に到達し…

nginxのlocationの優先順位を誤解していた

最近nginxを触っていて、locationの優先順位、主に^~の有無による前方一致の扱いについて誤解していたことに気づいた。 まず正解から。locationは以下の流れで決定される 完全一致チェック -> location = path {} locationとURIが完全一致すれば、この設定で…

Scalaのimplicitパラメータは何のための機能?

最近Scalaのコード読むことが増えたんですが、implicitパラメータのついた関数が多用されるとメッチャコード読みにくいんすよねアレ。このドワンゴのScala研修テキストにあるようなコード この3つのメソッドは共通してConnection型を引数に取るのに、呼びだ…

2018冬アニメ

完走4作品 宇宙よりも遠い場所 ゆるキャン△ オーバーロードII ヴァイオレット・エヴァーガーデン 世間的にはポプテピが流行っていたようだが、内輪ネタの悪ふざけには興味がないので見ていない。 宇宙よりも遠い場所は久々の大当たり。早見沙織が出るから見…

bundlerでmysql2のインストールが失敗する

bundle updateしたらエラーが出た。 MacOSX high sierra 10.13.4 Ruby 2.5.1 (rbenv/ruby-buildでインストール) MySQL 5.7.21 (brewでインストール) linking shared-object mysql2/mysql2.bundle ld: library not found for -lssl clang: error: linker comm…

Rubyのバッチを直してメモリ1/1000、速度4倍にした話

弊社、GoやScala、Node.js、Pythonに比べてRubyの地位があまり高くありません。そんな中メモリを20GBも使い、2時間もかかるRubyのバッチがあって、やっぱRubyダメじゃんと思われていたりします。 いやいやそれRubyのせいじゃないでしょう、と。私もRubyプロ…

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

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

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

developers.cyberagent.co.jp 真新しいmongoDBクラスタにデータをrestoreする時に高速化テクニックとして、メンテナンス開始前にバックアップデータ等を一度restoreしてmongoDBクラスタを暖気しておく方法があります。 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オブジェクトに数値…