タグ

ブックマーク / rosylilly.hatenablog.com (18)

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

    白金動物園は ISUCON 9 選において優勝しました。言葉になりません https://t.co/Zhy9tzsA2M— Issei Naruta (@mirakui) October 5, 2019 感無量です。 やったことは GitHub 上ですべて公開されています。 github.com いつものことですが、メンバーが何をしていたのか細かいことまでは知りません。 自分の記憶 [10:23:27] 862fe59 : Fix initialize MySQL file MySQL のイニシャライズ実行ファイルのユーザーを root に変更。各位の手元で動かすときに楽させるため。 メンバーの手元の MySQL がどういう設定になっているのかは大体知ってるし。 [10:27:33] 2c68bf1 : Change database user 同上事情。こちらはアプリ側。 [10:40

    白金動物園として ISUCON 9 に出場し、優勝しました - 鳩舎
    a2ikm
    a2ikm 2019/10/07
  • Object Design Rough Talks #1 - 鳩舎

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

    Object Design Rough Talks #1 - 鳩舎
    a2ikm
    a2ikm 2017/09/14
  • Mac の常にスクロールバーを出す設定は最高 - 鳩舎

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

    Mac の常にスクロールバーを出す設定は最高 - 鳩舎
    a2ikm
    a2ikm 2015/12/01
    基本隠さないほしい
  • ISUCON5 で準優勝しました - 鳩舎

    今年も @mirakui と @sora_h と一緒に ISUCON5 に出場して、準優勝しました。 やったこと 時間は投入した時間。 12:00 : API リクエストを送る先の services が DB に入ってるけど大した数でもない(7つ)ので、全部アプリケーションにハードコードした。 これはのちにリクエストにプロキシを挟む時にコード変更だけでよくなったので地味に効いた。なお、これによる高速化はあんまりしなかった(そりゃそうだ)。 13:16 : API リクエストへのパラメータを保存している subscriptions の保管先を DB から Redis へ変更。 DB 問い合わせへの高速化というより、 JSON 形式から MessagePack 形式での保存になったことの方が重要な気がしてる ま、これも大した効果は出てない。 initialize でバグったら話にならないから、

    ISUCON5 で準優勝しました - 鳩舎
    a2ikm
    a2ikm 2015/11/01
  • 1人でよいコードを書く - 鳩舎

    1人でよいコードを書くのは、3人でよいコードを書くことの3倍難しい。悪いコードを書くときに説得する人間が 1/3 でよいので、つまり自分に向かって『まぁいいじゃん今回は』と言えば事が済む。続けているといつの間にか引き返せないところまできていて、適当に書いた個人プロジェクトは設計的破綻を起こし、コーディング規約もなにもあったもんじゃないという破滅が待っている。 ということで、1人でよいコードを書くために。今回は Rails プロダクトを1人で書くとして。 rubocop コーディング規約と、あまりに長すぎるメソッドやあまりに長いクラス定義などを見つけてくれる。全てに従うと厳しすぎて死ぬので、適宜各チェッカを無効にするのがよい。 僕はこんな感じの設定で使っている。 AllCops: Includes: - Rakefile - Gemfile - config.ru Excludes: - b

    1人でよいコードを書く - 鳩舎
  • 『DCI なんて面倒なだけで Service 使えばいい』への返答 - 鳩舎

    NOTE: 最下部に追記があります。 よく言われる話として、 DCI なんて実装が面倒な上に夢の実装の話をしており、現実解としては Service クラスを用いて実装すればシンプルな実装になるのだから、そういったものは必要ないのだ、というご意見への返答です。 こういった批判の文脈の際、 Service クラスというのがどこの Service クラスを指しているのか、が問題なのですが、 DDD における Service ではないように思えるので、おそらく PofEAA などで語られる Service Layer などを指していると思われます(違うならそう言ってください)。 PofEAA における Service Layer(以後、 Service と呼ぶものはこの PofEAA における Service です)はドメインオブジェクトからアプリケーションロジックを切り離すことを主目的としていま

    『DCI なんて面倒なだけで Service 使えばいい』への返答 - 鳩舎
  • Github から公開鍵を取ってくる gem を作った - 鳩舎

    先週の記事が思ったより反応よかったんだけど、自分のニーズにいま一歩足りてなかったから作った。 github-keys $ gem i github-keys $ github-keys rosylilly とかで取ってこれる。ユーザーの公開鍵はもちろんだけど、僕としては Organization の公開鍵を取ってくるみたいなことしたくて、例えば HAML とかは haml の Organization を作って運用してるんだけど、この org の人全員の公開鍵が欲しいみたいなタイミングあると思う。そういう時に https://github.com/haml.keys とか叩いても何も取れないから、 Organization の名前を引数に渡したらメンバー一覧をとって、そこからまた keys を取ってくるみたいな処理にした。ので今だと $ github-keys haml とかすると HAM

    Github から公開鍵を取ってくる gem を作った - 鳩舎
  • speed_gun で Rails のパフォーマンスを測定する - 鳩舎

    Web アプリケーションのパフォーマンスにうるさいみなさんこんにちは。 Rails アプリのパフォーマンスプロファイリングだと、 rack-mini-profiler が有名で、それ以外だと New Relic とかを使って測定していくのが普通のようですが、物足りない部分があったので、自前でプロファイラ gem を作りました。 Rubygems: http://rubygems.org/gems/speed_gun / Github: https://github.com/rosylilly/speed_gun 詳細は Github の README なんかを見ていただくとして、基的には rack-mini-profiler 的な情報収集が出来ると思ってもらって差し支えないです。 ちなみに計測画面はこんな感じ。 大きなスクリーンショットはこちら 小さくて何も見えないかも……とりあえず3セ

    speed_gun で Rails のパフォーマンスを測定する - 鳩舎
  • ファイルアップローダを作ろう - 鳩舎

    How to じゃなくて、何かの言語を学ぶ、もしくはあるパラダイムにチャレンジするとき、に僕がよく使うサンプルアプリケーションとして、ファイルアップローダというのがあり、それの仕様をまとめておこうと思い至っただけです。 ちょっと研修資料っぽい感じになっちゃったけど、まぁいいか。 アプリケーションの概要 非ログイン型のファイルアップローダです。ファイルの保持先は S3 や Disk 、 DB への Blob などいくつかの選択肢が提供されます。 HTTP のフォームからファイルがアップロードされ、リストで表示されるだけの簡単なアプリケーションです。 ファイルには有効期限があり、それを過ぎるとダウンロードできなくなる、かつリストにも表示されなくなります(保存先の実ファイルも削除されていることが望ましいです)。 また、ファイルにはプライベートモードがあります。プライベートモードのファイルはリスト

    ファイルアップローダを作ろう - 鳩舎
    a2ikm
    a2ikm 2013/10/25
    よさげ
  • Gondler という bundler for golang を作った - 鳩舎

    2番煎じ乙。 Gondler という Bundler みたいなツールを go 向けに作りました。gom という先行実装があるのでもう作らんでもええかな感があったのですが、Ruby っぽいけど Ruby じゃない Gomfile とか、bundle exec 相当の機能がないとか、そういう理由でわざわざ自作しました。 基的には bundler なので、バージョン、というよりコミットハッシュとかをロックするのに使います。 fork 元の gom との違いは インストール先ディレクトリがデフォルトでは .gondler になっている(変更可能(gom は変えられない)) Gondler 環境下の repl が起動できる(gondler repl) Gomfile を自動生成する機能はない Travis 用の yml を自動生成する機能はない bundle exec 相当の gondler ex

    Gondler という bundler for golang を作った - 鳩舎
  • 関連モデルの命名 - 鳩舎

    今日は Rails での『関連モデル』の名前について考える。 構造としてはこんな感じ。 ・ルーム(Room)に所属するユーザー(User) ・ルーム(Room)での管理者権限を持つユーザー(User) どちらの関連も N:N の関連。いわゆる has_may な感じ。 で、こういう時の命名って Room モデルと User モデルだから RoomUser とか UserRoom とかっていうモデルやテーブルを作りがちなのだけれど、今回は同様の形態の関連が2つあるのでちょっと微妙な事になりそう。 っていうか、まずもって RoomUser モデルってなんだよ。なんのモデルだよそれ。って感じなので名前を考える。 ルーム(Room)に所属するユーザー(User) 関連モデルのデータは大抵2つのフィールドを持っている。 Migration あたりから抜き出すと t.references :room

    関連モデルの命名 - 鳩舎
    a2ikm
    a2ikm 2013/05/13
    あとは、関連を貼るときの行動を英語の動詞にして、その名詞を探すのも便利。subscribeからsubscription、followからfolloweeship/followershipとか
  • 適切な名前がつかないモデル - 鳩舎

    ちょっと目についたので。Dis りたい訳じゃないです。 これ適切な名前が見つからないとき困るんだよなぁ。あとで思いついて変更なんて作業はしたくないし。割り切ってRoomUser式に統一した方が気が楽だと思う。 http://b.hatena.ne.jp/kensatou/20130512#bookmark-145186810 id:kensatou さんの言う『適切な名前が見つからない時』がわからないのでなんとも言いがたいのですが、割りきって RoomUser 式に統一は悪手だと僕は思っています。 大体からして何らかの案件なり要望なり青写真なりをモデルに落とし込んでいる時に『名前がつかないモデル』が出てくるということは、それは何かが噛み合っていない状況のアラートだと思っています。 ぱっと思いつく状況だと 英語力が足りない: 僕は大抵このパターンなので辞書を引きます。それでもわかんなかったら

    適切な名前がつかないモデル - 鳩舎
    a2ikm
    a2ikm 2013/05/13
    そうか、ドメインか。
  • rails 4 concern 便利 - 鳩舎

    Rails 4 から入る app/models/concerens を使う。 class User < AR::Base include Cryptable end を app/models/user.rb に作って module Cryptable def password BCrypt::Password.new(read_attribute(:password)) end def password=(password) write_attribute(:password, BCrypt::Password.create(password)) end end みたいなコードを app/models/concerns/cryptable.rb に作るだけ。 便利なので活用していきたい。これが app/models/concerns/user/cryptable.rb とかにすると inc

    rails 4 concern 便利 - 鳩舎
    a2ikm
    a2ikm 2013/04/07
    concern便利そう
  • Play Fast Award を受賞しました - 鳩舎

    3/1 に、会社で Play Fast Award というのを受賞しました。 弊社には Play Fast Episode というのがあって、どういうやつかっていうと、普通にスタッフがスタッフの仕事を観て『イイネ!』と思ったら褒めちぎるエピソードを投稿するという場所があります。 Play Fast Award はその中でも特によかったエピソードの人に贈られるもので、今回の受賞者は僕ともう一人で二人の受賞者でした。 ついでなので、もらった時に思った事を書いておきます。 名前を呼ばれた時はなんかやらかしたかと思って焦った 全スタッフの前で突然『草野さん』って名前呼ばれた時、僕はちょうどコンソールのログを眺めていて(話は一応聞いてました)、『ヤベェなんかやらかしたか!!!!』と思ってすごい焦った覚えがあります。隣に居た id:con_mame が落ち着いていなかったら僕は多分焦って変な一発ギャグ

  • Github があると VPS のセットアップが楽 - 鳩舎

    Github っていう超ベンリスーパークールサービスがあるんですけど、このサービスを使うと VPS のセットアップがすごく楽。 皆いろんなマシンとか持ってて SSH 鍵もいくつも持ってると思うんだけど、このサービスを使えば VPS のセットアップの時にいちいちいろんな公開鍵を集めて SCP で配置するみたいな手間がなくなる。 具体的には $ wget https://github.com/[username].keys $ mv [username].keys .ssh/authorized_keys $ chmod 600 .ssh/authorized_keys すると良い。 Github に登録してある公開鍵は上記の URL で取れるので、例えば友達と共有サーバーを作るみたいなときにも役に立つ。 ギッハブマジ便利だなー

    Github があると VPS のセットアップが楽 - 鳩舎
  • DCI を考える #2 - 鳩舎

    追記 まじで鳩さんのスライドでDCIについて理解したつもりになるの危険だからやめた方がいいです。せめて d.hatena.ne.jp/digitalsoul/20… を読みましょう。DCIはエンドユーザのメンタルモデルを実装に落とし込むための設計パラダイムです— Naoto Takai (@takai) December 27, 2012 ということで、以下の内容はすべて間違いである可能性が高いです。 元記事 これまでのあらすじ: ActiveStrategy はイマイチなアプローチだよね。 文脈によって可能な挙動が変わり、モデルは基的にデータのみを持つことでクリーンな状態を保とうといっているのに、便利な include を提供する ActiveStrategy はやはりイマイチなアプローチで、挙動の切り分けが容易になるのはいいことだけれど、それって今までの include 地獄から何も

    DCI を考える #2 - 鳩舎
  • DCI を考える - 鳩舎

    追記 まじで鳩さんのスライドでDCIについて理解したつもりになるの危険だからやめた方がいいです。せめて d.hatena.ne.jp/digitalsoul/20… を読みましょう。DCIはエンドユーザのメンタルモデルを実装に落とし込むための設計パラダイムです— Naoto Takai (@takai) December 27, 2012 ということで、以下の内容はすべて間違いである可能性が高いです。 元記事 Data - Context - Interaction いわゆる DCI が最近の人気らしい。 DCI そのものの説明をこのエントリでする気はないので、 Sapporo Ruby Kaigi の角谷さんのプレゼンなどを見るとよい。 Rails の場合、 Data はまぁ ActiveRecord / Mongoid などのいわゆる MVC におけるモデル、であっていると思う。これに

    DCI を考える - 鳩舎
  • Lightweight git hook management tool その名も git-hook を作りました - 鳩舎

    どうもこんにちは。フックしてますか。ジャブからローにつなげてますか。 そんなこんなで最近は僕もそこそこ git に慣れてきて助けてもらわなくても良くなって来ました。 しかし人間の欲望はとどまるところをしらず、「なんか定形作業めんどくせーなだるいしなんかうまいことどうにかなれよ面倒くせぇ」とか考え始めるものです。たとえば「テスト通ってないコードコミットするなってリーダーがいうけどいちいち手でテスト走らせて確認すんのだるいからなんかうまいこと自動で動かんかな」とか。 git は大変よくできたツールですので、そういうのもちゃんと用意されています。hooks といって、コミットのタイミングなどで特定のシェルスクリプトなりなんなりを動かすことが出来るよう配慮されているのです。すげーな git 。 しかしこいつがマジめんどくさい。自分でシェルスクリプト書くとか絶対嫌だし、すでにそのへんに転がってるのを

    Lightweight git hook management tool その名も git-hook を作りました - 鳩舎
  • 1