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

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年にダメ買いしたものを整理してみま…