鳩舎

レースしない

白金動物園として ISUCON 9 に出場し、優勝しました

白金動物園は ISUCON 9 本選において優勝しました。言葉になりません https://t.co/Zhy9tzsA2M— Issei Naruta (@mirakui) October 5, 2019 感無量です。 やったことは GitHub 上ですべて公開されています。 github.com いつものことですが、メンバーが何をし…

Mac の常にスクロールバーを出す設定は最高

エンジニアが『このデザインは最高!』とか褒めてるサービスもどんどんぶっ壊れるし最高の気持ちになれる。とりあえずエン転職さんははてブに出してる広告直したほうがいいです。肝心の社名が切れてます。 さあ、今すぐ有効にしよう! (こういうの気を使っ…

ISUCON5 で準優勝しました

今年も @mirakui と @sora_h と一緒に ISUCON5 に出場して、準優勝しました。 やったこと 時間は投入した時間。 12:00 : API リクエストを送る先の services が DB に入ってるけど大した数でもない(7つ)ので、全部アプリケーションにハードコードした。 これ…

(個人用途において)ほぼ最強に近いスクリーンキャプチャ / スクリーンキャスト環境

スクリーンキャプチャやそれらを共有するツールはいろいろ出ては消えの状態で、どれを使うのがいいのかという話になると難しいかと思います。 スクリーンキャプチャを撮りたい状況には概ね3くらいあって 単純にファイルとして保存したい チームメンバーや友…

ISUCON5 予選でアニメ見た

今年は参加者側として ISUCON5 に出てきました。チームは白金動物園。いつもの(@sora_h, @mirakui)メンツです。 何やってたかについては大体 sorahのエントリ に書いてあるので割愛。というか前頭葉破壊されて覚えてないです。 真剣な与太話 9:30 チームビル…

VOD で配信されてるアニメ検索するページ作った

TL;DR https://anime-search.herokuapp.com/ 捗る 動機 各社の一覧ページ、わざわざ五十音順でページ分けされたりしていて厳しみがあるので、一括で検索するページが欲しかった。 あとインクリメンタルサーチしたい。 内容 現在はバンダイチャンネルと D ア…

アニメ視聴に主眼を置いた VOD サービスの比較と解説

2015-04-30 版。俺が使ってるあのサービスがねえぞどうなってんだという方はコメントでサービス名を書いていただけますと僕が金を払いに行きますのでよろしくお願いします。 TL;DR コスト及び物量重視なら d アニメストア。コメント見たかったらニコニコ。い…

ISUCON4 お疲れ様でした

今回の ISUCON 、みんなはどうだったかな?楽しかったかな?ベンチマーカーについての文句?いいよ、こいよ、俺がベンチマーカー実装者だ。 ということで、まずはお詫びを。今回、過去の ISUCON に比べて本当にトラブルが多くて申し訳なかったです。次の出題…

git-set-mtime を Docker のためにリリースした

Docker のキャッシュは mtime ベースっぽい - 鳩舎 って話は前にしたんだけど、そんでじゃあどうするのっていう解決策がなかったので、 CI サーバー上で都度ソースをひっぱってくるような場合でも Docker のキャッシュを効かせるために、 git-set-mtime を作…

uninclude v1.1.0 をリリースしました

特定の極小数の一部 Ruby ユーザーの皆様お待たせしました。Ruby 2.1.0 以上でも uninclude が使えるようになりました。 新しくリリースされた uninclude v1.1.0 のテスト済み Ruby のバージョンは以下です。 ruby-head 2.1.3 2.1.0 2.0.0 1.9.3 1.9.2 1.8.7…

SSHKit within as 順序 意味なし

ruby の SSHKit というのがあって、まぁいろいろ端折ると on "10.0.0.1" do as :root do within "/tmp" do execute :echo "Hello > log" end end end みたいなのが書けて、『あー 10.0.0.1 に入って root に sudo して /tmp に cd して echo するんだなー』…

Docker のキャッシュは mtime ベースっぽい

タイトルそのまんま。 Dockerfile ではすでに ADD したファイルの追加なんかはキャッシュされるのでスキップされる # Dockerfile FROM ubuntu ADD text text こんな感じの Dockerfile があったとして、これを2回ビルドすると、2回めの時には Step 1 : ADD te…

github.com のソースコードプレビューでタブ幅8で困っている人向け

.code-body .line, .file-diff .file-diff-line { tab-size: 2; -moz-tab-size: 2; -o-tab-size: 2; } 何らかの方法で上記の CSS を読み込むと2タブになります。4タブがいい人は2を4にしましょう。 go fmt は基本的に問答無用でタブインデントにするので、こ…

適当に CLI から pushover に通知送る go app 書いた

https://github.com/rosylilly/pprocess ~/.pprocess.json に { "token": "application token", "user": "user token" } てな具合で設定を保存して、 $ go get github.com/rosylilly/pprocess $ pprocess -m "通知" とか送ると、 Pushover 経由で通知が飛ぶ…

Object Design Rough Talks #1

Object Design Rough Talks というイベントを開催して、Points of View という内容で話ました。 いろんな意味で面白いイベントだったので、詳細なまとめはまたこんど。

Rails 4.1.0.rc2 で AR オブジェクトその他の #to_json に Oj を使う

config/initializers/json_with_oj.rb あたりに以下のコードを置く class Oj::Encoder def initialize(options) @options = options end def encode(value) ::Oj.dump(value, @options) end end ActiveSupport::JSON::Encoding.json_encoder = Oj::Encoder …

1人でよいコードを書く

1人でよいコードを書くのは、3人でよいコードを書くことの3倍難しい。悪いコードを書くときに説得する人間が 1/3 でよいので、つまり自分に向かって『まぁいいじゃん今回は』と言えば事が済む。続けているといつの間にか引き返せないところまできていて、適…

引数

引数、変数によってオブジェクトに適切な名前を与えるのはあたりまえのことです。 class Calc def plus(x, y) x + y end end calc = Calc.new calc.plus(1, 2) この場合、 #plus の中で 1 は x 、 2 は y と名前付けがされており、それぞれ加算式の左の項と…

メソッド

思いつきの雑文 メソッドを『呼び出している』のは誰か、という疑問。これが最近僕の中で実にひっかかりを覚えるところなので。 とりあえずコード。 1) publisher.send 2) publishing.execute この2つの違いについてずっと考えている。なにが違うと言われる…

mysql.NullTime を JSON に変換出来るようにしたい

ポッポー package main import ( "github.com/go-sql-driver/mysql" ) type Pigeon struct { LastFlewAt mysql.NullTime `json:"last_flew_at"` } みたいなことしたいとき、普通に mysql drvicer 生で使ってるとこういうことは起こらないけど gorp とか使っ…

『DCI なんて面倒なだけで Service 使えばいい』への返答

DCI

NOTE: 最下部に追記があります。 よく言われる話として、 DCI なんて実装が面倒な上に夢の実装の話をしており、現実解としては Service クラスを用いて実装すればシンプルな実装になるのだから、そういったものは必要ないのだ、というご意見への返答です。 …

Go で CPU を使い切る

単に CPU 時間を使い切るだけならすぐ出来る package main import ( "runtime" "time" ) func main() { runtime.GOMAXPROCS(runtime.NumCPU()) for i := runtime.NumCPU(); i > 0; i-- { go loop() } for { time.Sleep(1 * time.Second) } } func loop() { f…

speed_gun で Rails のパフォーマンスを測定する

Web アプリケーションのパフォーマンスにうるさいみなさんこんにちは。 Rails アプリのパフォーマンスプロファイリングだと、 rack-mini-profiler が有名で、それ以外だと New Relic とかを使って測定していくのが普通のようですが、物足りない部分があった…

自前 error にエラーコードなどを付与している時

自前で Error() string なメソッドを持った struct を定義した際、エラーコードなどを持たせていて、それを取り出したい。 package main import "log" type MyError struct { Message string } func (e *MyError) Error() string { return "MyError" } func …

STI と Polymorphic を同時に使うとハマる

以下の様なクラスがあるとき class Company < AR::Base has_many :employments has_many :engineers, through: :employments, source: :employee, source_type: 'Engineer' end # STI の基底クラス class Employee < AR::Base; end # STI class Engineer < E…

ファイルアップローダを作ろう

How to じゃなくて、何かの言語を学ぶ、もしくはあるパラダイムにチャレンジするとき、に僕がよく使うサンプルアプリケーションとして、ファイルアップローダというのがあり、それの仕様をまとめておこうと思い至っただけです。 ちょっと研修資料っぽい感じ…

ActiveSupport::Autoload を単体で使う

ruby 標準の autoload は後々非推奨的なアレになりそうらしいので require 'active_support/dependencies/autoload' module Mod extend ActiveSupport::Autoload autoload :Foo # => require 'mod/foo' autoload :Bar, 'bar' # => require 'bar' autoload_un…

golang を始めた時

そういやまだ新しい経験だから覚えてるし、 golang を勉強していった過程を書いておく。 正しさとかは気にせず、動くものが出来るまでがむしゃらに。 Hello, world まで 特にひねりはない。 homebrew は便利だ。 $ brew install go $ cd ~ $ mkdir -p go/src…

grape-msgpack v0.1.0

grape-msgpack という gem を作った(github / rubygems)。 最近 golang ばっかり触ってるように見えるのは幻覚で、僕はずっと Rubyist だし Ruby は最高だしオープンクラスは地獄だ。 Grape では Formatter がいくつか選べるようになっていて、大体 JSON マ…

Go Conference 2013 Autumn で Gondler の話をした

Go Conference 2013 Autumn で命短し恋せよ乙女というタイトルで Gondler の話をしてきました。 他にもたくさんおもしろい発表があって、個人的には Hatena で Go の REST サーバーを立てて運用している話とかおもしろかったです。 Golang in Production !!…