[WIP]文書間類似度の参考文献

WIP

最近、仕事で記事レコメンドアルゴリズムをコンテンツベース(文書間類似度)を用いて実装して、記事CTRを大幅(高いものだと700%くらい)に上げられた。 そのとき調べたことを雑にまとめておく。 論文 http://www.sciencedirect.com/science/article/pii/S0…

ISUCON6

毎年恒例のISUCONに参加(オシャレ怪盗スワロウテイル)してきました。今年で4回目の挑戦になります。 ISUCON6予選 いわゆる、はてなキーワードクローン実装です。 加えて、各機能が別アプリ(別プロセス)で動作しており相互間はAPIでやり取りするという構…

fontdがCPUリソースを喰う

mac

ここ1、2年(遅くなったり普通だったりしたりして原因がわからず放置していた...)、Macのターミナル(iTerm)で作業すると、 fontd プロセスがとても重くなりもっさりする現象が続いていた。 原因は、zshのプロンプトに機種依存文字を使っていたからだった。 た…

goroutineのテストを同期的に行う

とある関数の評価値 ― 例えばファイルに文字列を書き込む ― をテストしたい場合、 その評価がgoroutine内だと、テスト側から実行しても、タイミングによって取得できないことがあります。 そこで、テスト側から評価するときにはchanelを渡す用にして、そのch…

ISUCON5予選

例年どおり、 @f440 とチームを組み、優秀な若者 @corrupt952 を加えて挑戦しました。 準備 過去の予選問題をチームでいろいろなアプローチで、実際の予選と同じ時間で解く 正攻法だったり 1プロセスオンメモリといったピーキー実装 各人がそれぞれミドルウ…

データ駆動 + Test::Unit

大量のログデータの処理の前段階として、fluentプラグインで処理させるときのこと。 fluentプラグインのテストはTest::Unitで書くのが主流なようで、Test::Unitを書いている。 ただ、プラグインは大量のデータを処理するので、テストケースの量も多くなって…

Redis 3.0.0

https://raw.githubusercontent.com/antirez/redis/3.0/00-RELEASENOTES 正式にRedis Clusterをサポートするstable版がリリースされたのでコード読んだりぽちぽち触ってみている。 クラスタリングとは全然関係ないのだけどdict.cはHash関数つくりたくなると…

Ruby2.2

わりと、Hashのkeyで評価したいことがあるな~と思っていたのだけど、Ruby2.2から表現できるようになっていた。 gist.github.com

コードレビューするときの視点

普段、Ruby(RailsやSinatraといったWAFにおける)のコードレビューするときに、 こういった事を念頭においてレビューする、というものが自分の中だけで閉じている気がしているので、 文章にしてリスト化しておくことでコードレビュー時に、自分自身も漏れが少…

Golangでエレガントだと思うこと

@kana さんとハッカソンしていて、Golangのどこが好きか? と聞かれた時にうまく説明できなかったのでまとめておきます。 よく、Golangはgoroutineとchannelが取り上げられることが多いと思いますが、 それよりも、僕がGolangをGolangたらしめていると考えて…

octopusに待望のsharding + replication構成がサポートされそう

Railsで、master/slave構成を作る場合や垂直分割する場合などは、octopusに頼る場合が多いです。 ただ、sharding + replicationの構成はずっとpendingのままで、僕も何度かトライしたことがあるのですがうまい設計を練ることができずにそのまま指を加えたま…

JSONを扱うときにkeyとfieldを対応づける

Goの、encoding/json の Unmarshal で、例えばJSONデータのkeyが小文字の場合、自動でcapitalizeしてくれる。 pakcage main import( "encoding/json" ) type A struct { A_Id int Field string } func main() { jsonBlob := []byte(` {"a_id": 100, "field":…

effective-goではない何か

去年からGolangを書き散らかしてみて、だいぶセンス感じとれるようになってきたので、Golangを書くときのイディオムのようなものをまとめてみる。 Golangをコーディングするディレクトリ 簡単な、10行20行くらいで済むコードであればどこで書いてもいいのだ…

ISUCON3 - 予選から本戦を終えて

TwitterでISUCONに参加したいとぼやいていたら、@f440 さんが一緒にどうかと誘ってくれたので、ISUCON3に参加してきました。 オシャレ怪盗スワロウテイルとして参加し、本戦2位という結果で幕を閉じました。 参加した動機として、自分がWebエンジニアとして…

SO_REUSEPORT ソケットオプション

Linux Kernel3.9(BSDでは割と以前から実装されていたけど)で取り込まれたSO_REUSEPORTソケットオプションは、異なるプロセスで同一のポートにbindできるようになるので、いろいろおもしろいことができそう。 https://lwn.net/Articles/542629/ これがmerge c…

guard文のあれこれ

あるメソッドで、渡されたパラメータによっては処理をまったくしないということがある。 その場合guard文を書くことでネストが深くならなくて、読みやすくなることはイディオムとしてよく知られている。 しかし、guard文を書くと逆に読みにくくなってしまう…

Mac OS -> Ubuntu

教授がMac OSをメインで使っていた影響で、学生時代からメインマシンにMacを使ってきたけれども、転職を期にUbuntuへ移行しました。 職場の開発マシンがUbuntuなので、普段からプログラミングスタイルや開発環境のノウハウを貯める xmonadの完成度が高くてプ…

nodeでRedisを使ってセッション管理

フレームワークにexpressを使う場合、connectが提供するsessionモジュールを使うと楽に実装できる。 さらに、Redisにセッションデータを保存する場合、connect-redisを使うと楽だ。 https://github.com/visionmedia/connect-redis 他にも、express-session-r…

nodeでWebアプリを開発するときに考えること

僕は、全体を俯瞰して作り出すので遅いのだけれども、トータルとして同じくらいのスピードになるかなと思って、新しい言語やフレームワークを使うときは、まずは全体で必要になりそうな技術であったり、問題点を潰すことにしています。 フレームワーク node…

Rubyの標準ライブラリ及びgemのtagsファイルをロードする

Vimスクリプトを書いた。 https://github.com/yoppi/config/blob/master/vim/dot.vim/ftplugin/ruby/tag.vim プログラミングしているときに、実装を知りたいときがよくあるので、Vimで素早くタグジャンプできるようにした。 ただ、 手動でtagsファイルを生成…

redisable

というgemを作った。 http://github.com/yoppi/redisable RubyオブジェクトをRedisとマッピングさせる既存の有名なライブラリに、 redis-objects(https://github.com/nateware/redis-objects) ohm(https://github.com/soveran/ohm) の2つがあるけど、次の欲…

RSpecMocks/rr

TestDoubleライブラリをrr(Double Ruby)からRSpec標準のRSpecMocksに切り替えてるのだけど、やっぱり違和感がある。 rrはTestDoubleの考えをそのままライブラリ化した実装で、xUnit Test Patternsを熟読した人にとって馴染み易いと思う。 だけど、RSpec Mock…

redis-commander

ローカルで開発しているときに、複数のredis-serverを立ち上げるので、たとえばsessionのテストでkeyを削除したくなったり、 アプリのデータを入れたくなったりしたときに、redis-cliで「どのプロセスに繋げばいいだっけ」ということが多々ある。 redis-comm…

thinのコードネーム

awk

が、rails serverするたびに目に入るので気になって一覧にしてみた。 $ git log -p lib/thin/version.rb | grep '\+\s*CODENAME' | awk 'match($0,/[\047"](.*)[\047"]/) { print substr($0,RSTART,RLENGTH) }' "Straight Razor" "Knife" "Chromeo" "Low-bar…

Amazonで配送先住所を間違って発注してしまった場合

Amazonで本を大量に買ったのだけど届け先を昔の住所で発注してしまって、変更しようとしても、配送準備中で変更できなくて詰んだ感ある。— Hirokazu Yoshidaさん (@yoppiblog) 2013年4月10日 def 住所変更可能か? 状況 == "未発送" end def 配送先住所をweb…

Enumerable#entries

にはまったというお話。 class Hash def method_missing(method, *args) ret = self[method] || self[method.to_s] return ret if ret super end end h = {root: {hoge: 1, foo: 2}, entries: [{hoge: 3, foo: 4}, {hoge: 5, foo: 6}]} h.entries #=> [[root…

免責条項

たまに「私は経験が浅く〜この記事の内容には間違いがあるかもしれません〜」という書き出しがある記事をみかけるのは、日本人の文化なのかなと思っていたら、英語圏の人もそういう文化があるんだ。 Disclaimer: This is my first blog post on frontend web…

RubyやRailsの情報収集

勉強会で話していて3回くらい「どこからRubyやRailsの情報を仕入れてますか」のような質問をされたので、 自分はどうやって情報収集してるんだろうとふと考えてみると、 Rails Casts(pro購読するのおすすめ) http://railscasts.com/ Ruby Weekly(メールで定…

Alfred2

mac

Alfred遅いとか言ってたけど、Alfred2にしたらすこぶる調子がよいのでQuickSilverからAlfredに戻した。

ゲーム

http://erogamescape.dyndns.org/~ap2/ero/toukei_kaiseki/memo.php?game=16505&uid=dov やっぱり作成者のエゴはいかんなと。

ClariS

おれいも2期ClasriSきた。ので、CD予約しました。 http://www.amazon.co.jp/dp/B00B4G1YT0/

QuickSilver

mac

Alfredを使っていたのだけど、ランチャーを開いて文字をタイプするたびに、mdsが毎回実行され鬱陶しいのでQuickSilverに戻ってきた。 あと、QuickSilverのほうが学習が賢い気がするんだよなぁ。 久々に使うといろいろ細かい更新があって、Ctrl-hで移動とかに…

Virtualboxでポートフォワードしたときに遅くなる

のをなんとかしたいなと。 VirtualBoxよくできてて、NAT周りのパラメータ設定も細かくできる。 http://serverfault.com/questions/447775/virtualbox-slow-upload-speed-using-nat http://www.virtualbox.org/manual/ch09.html#nat-adv-settings あたりを参…

キーボード

キーボードにだけはこだわるのだけど、僕が買ったり与えられたりするキーボード(ラップトップPCのキーボード含む)はどれも使いにくくて、なんかの嫌がらせなんじゃないかと思ったりする。 オフィス内でほかのエンジニアのキーボード全部試打させてもらったら…

Ruby 2.0.0-p0

__dir__は地味に嬉しい。今までどうしてたかというと、File.dirname(File.expand_path(__FILE__)のように書いてた defaultがUTF-8になったので、マジックコメント書かなくて良いのほんと助かる... いわずもがなな Enumerable#lazy refinementはこれからな感…

spring

といってもJavaのSpring Frameworkのことではなく、Rails preloaderの方。 https://github.com/jonleighton/spring zeusよりセンス感じるので乗り換えてみた。が、こういうぐぐらびりてぃが低い名前をつけるのはやめて欲しかったり...

compass

sprites画像を自動で生成してくれて楽だなと... ただ、development環境で一度生成された画像を削除したら、なぜかコンパイルされなくなって、rake tmp:clearして解決するまで相当時間かかって泣きそうに...

vagrant

mac

VirtualBoxの設定がめどいのでどうにかならないかと思いつつ、vagrant便利なんだよみたいな記事を読んだりして、じゃあ使ってみようかなと思うだけで結局使ってなかったのだけど、 $ vagrant sandbox on $ # 何かする $ # ( ゚д゚ ) 環境を汚染してしまう $ va…

5分でbowerをRailsに導入する

プロジェクトでjsのライブラリをどうやって管理するかみたいな話を隣の人としてて、 jquery-railsとかgem使う bundle updateで依存地獄なきにしもあらずなので、app/assets/javascript/vendor/とかに置く いやいやそれならvendor/assets/以下でしょ bowerっ…

MacのSkype6でテーマを変更する

「skype theme」とかでぐぐてヒットするもののほとんどがSkype5のテーマで、Skype6ではインストールできない。 http://lars-schroeter.com/en/skype-6-chat-style-on-mac-os この記事では、Skype6のテーマをハックする方法を詳しく紹介してくれている。 html…

RedmineのテーマをA1に変更してみた

Redmineのテーマは簡単に変更できるようにできていて、CSSやjs、画像をpublic/theme/{theme名}/にそれぞれ保存すると、Redmineの管理画面から選択できるようになる。 以外とテーマを作ってる人は多い。 A1というテーマに変更してみた。未来感じるデザインで…

Tuningathon#5 に参加してきた

チューニンガソン#5に参加してきました。 11:45 お題発表と同時にチューニングスタート。今回はMySQLのチューニング。内心喜ぶ。PHPでできたシステムのチューニングとかだと門外漢すぎて5時間勉強で終わりそうでしたし。 12:00すぎ ざっくり課題を把握して、…

2012年ダメ買いオブザイヤー

買い物はいくら下調べしたとしても、さらに実際に手にとって買ったとしても、使ってみてから良し悪しを実できるものです。 良かった買い物もあった一方、ダメ買いしたものもあります。2013年は無駄な支出を抑えるべく2012年にダメ買いしたものを整理してみま…

rmagickが特定の環境だとImageMagick6.8.0-10でビルドできない

自宅のMacOS X Lionだと、最新のImageMagickとlibtiffの組み合わせでrmagickをビルドできない問題に遭遇しました。 $ brew install imagemagick $ gem install rmagick ... imagemagickを6.7.1-1に、libtiffも3.9.5に落とすとビルドできます。 $ brew unlink…

Dvorak配列いいなと思い始めてきた

斜め後ろの人がRealforce + Dvorak配列という組み合わせで仕事しており、猛烈なタイピング速度を見るたびに、「これはQWERTYから乗り換えたほうがいいのか」と思い始めてきた。 とはいえ以前も、友人がKinesisを使っている時に、「これはHHKBから乗り換えた…

初回限定特典

来年の生きる目的として、主にこれとかこれとか。 プリコレのほうはOPが AiRI × 宮崎京一 という安定コンビでそれだけで買いなんですが、不安なのが初回限定版にCDがついてくるのかどうかというところ。 販売店毎の初回限定グッズは公開されていますが、本体…

プログラミング用フォントRicty、良い

3、4年くらいBitstream Vera Sans Fontを信奉して使ってきたけど、同僚がRictyを使っているのをみて、読みやすいなと思ったので入れてみると以外と良かった。 Vera Sansはもちろん和文フォントがないので、Macだとヒラギノ丸ゴシックとか使ってて、少し残念…

最近の集中力高める方法

最近の集中力高める方法として、 ポモドーロ導入(iPhoneアプリの30/30というのが使いやすい) musicForProgramming();を聞きながらコード書く を実践してる。ポモドーロは半信半疑なところがあったけど、一日のストーリーポイントの消化が多くなった気がする。…

いつの間にかActiveRecord::Base.default_timezoneが:localから:utcに変わっていた

今まで、Railsアプリを作るとき、i18nな環境以外ではUTCで動かすことはなくてtime_zoneをTokyoに直して使っていた。 config.time_zone = 'Tokyo' ただいつの間にか、 config.time_zone = 'Tokyo' # これが必要! config.active_record.default_timezone = :lo…

最近買ってよかったもの

Nexus7(32GBモデル) Nexus 7 32GB出版社/メーカー: Nexus 7メディア: この商品を含むブログを見る 開発用にAndroid端末が必要で半ば必要に迫られて購入したが、iPad Retinaと比べるとその軽さに驚愕した。 Nexus7買ってから、iPadは会社に置きっぱなしでNexu…