RubyKaigi2013に参加しました
2013/05/30~6/1の3日間で開催されたRubyKaigiに参加してきました。自分が参加した発表について、内容をまとめておきます。Ustream・スライドはここにまとまっています。
Ruby2.0 reference manual for Japanese
http://rubykaigi.org/2013/talk/S69
るりまの活動報告と、サードパーティ製ツールの紹介
The Future of JRuby?
Ruby 'root'
https://speakerdeck.com/hsbt/ruby-root
Rubyコミッターの仕事の紹介。pull requestのmergeや、Rubyでライブラリのテストが通るかの確認(http://ci.hsbt.org/)などを行なっている。
Toward efficient Ruby 2.1
http://rvm.jp/t.pdf
Ruby2.1のRestricted generational Garbage Collection (RGenGC) の説明。
bundle install` Y U SO SLOW: Server Edition'
BundlerAPIをHeroku上で動かした話。
Refining refinements
https://speakerdeck.com/shugo/refining-refinements
Ruby2.0で追加されたrefinements機能の説明。main.using(mod)を呼んだ以降でそのmoduleの関数が使えるようになる。monkey patchに似ているが、monkey patchは全てのクラスが影響を受けるのに対し、refinementsはusingが呼ばれたファイルのみ影響を受けるため、影響範囲を小さくできる。
High Performance Rails
http://rubykaigi.org/2013/talk/S76
CockpadでのRailsの高速化の話。
- response time (X-Runtime) を200ms以内にしている。
- Rubyは遅いので、できるだけRubyに処理をさせない。
- Rubyのバージョンを上げる。1.9.3から2.0.0にすると20ms早くなった。
- Railsの遅い、高速化が必要な場所
- ActiveRecordのモデル作成
- routing: url_forを含むviewのhelper
link_to 'hello', hello_index_url #=> 0.09659 ms link_to 'hello', controller: 'hello', action: 'index' #=> 10.97867 ms
# config.ru require "unicorn/oob_gc" use Unicorn::OobGC, 10 # unicorn config after_fork do |server, worker| GC.disable end
-
- unicorn-worker-killerを使って、メモリを使いすぎたときにworkerをkillできるようにする。
- Slow Queryを集計しておく
Continuous gem dependency updating with Jenkins and Pull Request
https://speakerdeck.com/kyanny/continuous-gem-dependency-updating-with-jenkins-and-pull-request
Gemfile.lockを更新してpull requestを送るJenkinsタスクを作成し、毎日実行する。
git checkout -b bundle-update-YYYYMMDD bundle update git add Gemfile.lock git cimmit -m 'bundle update' bundle exec rake spec hub pull-request
Security is hard, but we can’t go shopping
Concerning 'Applications'
https://speakerdeck.com/moro/concerning-application
ActiveSupport::Concernの紹介。
Refactoring Fat Models with Patterns
http://www.ustream.tv/recorded/33569967
https://github.com/codeclimate/refactoring-fat-models
codeclimateのブログと同じ内容。concernを使ったmix-inを否定しているところが、前の発表と真逆。
Millions of Apps Deployed: What We've Learned
アプリ作成のTips集
If you do not enter the tiger's cave, you will not catch its cub: Objects, DCI, and Programming
DCI (Data, context and interaction) の紹介。DCIは面白そうなので後で調べる。参考資料:
The Origamist's Ruby: Folding better code
リファクタリング方法について。
- Sandi Metz’ rules for developers
- Classes can be no longer than one hundred lines of code.
- Methods can be no longer than five lines of code.
- Pass no more than four parameters into a method. Hash options are parameters.
- Controllers can instantiate only one object. Therefore, views can only know about one instance variable and views should only send messages to that object (@object.collaborator.value is not allowed).
- “Learn the rules like a pro, so you can break them like an artist.” - Pablo Picasso
Be a library developer!
http://www.slideshare.net/kou/rubykaigi-2013
- Remember Than Imagine
- 問題を解決するための知識(パターン)があると、解決方法を創造するよりも早い
- Libraryを書くことで、知識を実装にする練習をしよう
'The Metric Talks or Not
https://speakerdeck.com/irohiroki/the-metric-talks-or-not
- burndownチャートは進捗を可視化することで、コードを汚くする圧力をかけてくる。コードをきれいにする圧力をかけるために、コードの綺麗さを可視化する必要がある。
- Static Analysis: https://github.com/metricfu/metric_fu
- Statistical Analysis: https://github.com/igrigorik/bugspots
Contributing to Ruby
どうやってRubyコミュニティーに貢献するか。rdocでドキュメンテーションされていない関数を探し、修正してpull requestを送るところまでをライブコーディングしていた。
LT
- 暗記用ツールankiの紹介。なぜPythonのツールをRubyKaigiで紹介したのかは謎。
- rspecの自動作成ツールrspec-kickstarterの紹介。既存のテストがないクラスを修正する際に、これでテストを作っておくとデグレが減るかも。
リーダブルコード
リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニックを読みました。どうやったらきれいなコードが書けるかについて、分かりやすく説明しています。200ページと薄いので、エンジニアなら読んでみて損はないです。これぐらい当たり前にできるようにならなきゃなー。
iPhone版『空気読み。』の隠しのリスト
たまにはプログラミングと関係ない話題を。
最近iPhoneアプリの空気読み。にはまってます。ここを参考にして「隠しのリスト」がほぼコンプリートできたので、やりかたをまとめました。残ってるのはNo.72だけですが、全然わからない…。
No. | 問題 | 隠しのリスト | 出し方 |
---|---|---|---|
1 | 電車で | そんな日もあるよね | 操作しない |
2 | マヨネーズ | ダイエット中 | 操作しない |
3 | ふせ | ご主人様じゃない! | 犬を左にスワイプ |
4 | エスカレーター東京編 | 運動不足解消 | 上にスワイプして駆け上がる |
5 | 渡り… | アウトロー | 右の画面外へ |
6 | サンタ | だるまさんが転んだ | 一度寝てまた起きる |
7 | 合コン | 壊れてるかもしれないし… | ボタン連打 |
8 | とりあえず | ご飯は飲み物! | ご飯セットにタッチ |
9 | フィーリングカップル | カミングアウト | 男にタッチ |
10 | 告る | せめてもの抵抗 | ボールが来る前に倒れる? |
11 | やさしさ | 忘れ物、忘れ物… | 左にスワイプ |
12 | 始業 | ノスタルジー | 着席した際にさらに後ろに倒れる |
13 | はじめてのデート | 生態研究 | 禁に近づく |
14 | メールに夢中 | 気のせい、きっと気のせい! | 携帯を連打 |
15 | ドミノ | 俺は流されない! | 右に倒れる |
16 | かさ | 小雨だからね | 傘をたたむ |
17 | バス | 両替しなくちゃ… | 右にスワイプ |
18 | 電車で2 | 障害がある方が燃える! | 右の画面外へ |
19 | デート | アニメ見たい… | アニメに近づいてから恋愛映画へ |
20 | 立ち位置 | ストーカーかよ! | 左右に高速移動 |
21 | ヅラ | ざわざわ… | タッチしない |
22 | 水戸の | 逃げるが勝ち! | 左の画面外へ |
23 | 歩調 | 波長もピッタリ | しばらくして現れる、アニメ女にそろえる |
24 | 付き合います | やっぱり無理 | 左側で画面外へ |
25 | キッス | つい、カッとして… | 体当たり |
26 | 戦隊オーディション | 辛いものは苦手 | 手を挙げかけて、右へ |
27 | ポーズ | 俺がレッドかも… | 上にスワイプ |
28 | 落ち物パズル? | 角があると強そう… | 頭のてっぺん |
29 | 脳内のアレで | 大は小を兼ねる | ダブルクリックで最大化 |
30 | 朝礼で | 迷うことあるよね…? | 右にスワイプ |
31 | つるつる | 今日は髭そり | バーバーに行く |
32 | バーで | 返品希望 | 受け取ったら相手に返す |
33 | 少年との約束 | プロのカガミ | ピッチャー返し |
34 | トップロープ | マウストウマウス | 相手の真下に移動 |
35 | 同じ方に… | 嫌な予感がするときがある | 操作しない |
36 | 大縄跳び | ピッタリジャンプ | 左右に合わせて飛ぶ |
37 | 夜露死苦 | キメッ! | 上にスワイプ |
38 | 接待 | 興味なし | ずっと右を向く |
39 | 再び電車で | あー!もう…! | 叩いて起こす |
40 | 一本じめ | 昔は本気で間違った | 3回叩く |
41 | 続・再び電車で | 紳士ですから… | 起こした後、左の画面外へ |
42 | 握手会 | 最後尾はこちら | A子の真ん前に割り込み |
43 | スカイダイビング | 俺が中心だ! | 輪の中心に移動 |
44 | グラビア | 世紀のスクープ? | 右にスワイプ |
45 | クーラー | 節電完了 | 電源ボタン |
46 | 立ち読み | 邪魔だよね | 隙間を空けておき、相手が来たら邪魔する |
47 | レンタル | 返却はお忘れなく… | 左の空箱を取る |
48 | 自販機 | 無駄遣い禁止 | おつり・返却レバーを押す |
49 | 焼き肉 | 遠慮の塊 | 自分の口にまっすぐもってくる |
50 | 気功の | 作用反作用 | 右にスワイプして攻撃 |
51 | 目線 | クローン…? | 右のエスカレータをずっと見る |
52 | 続々再び電車で | 視線が怖いです… | 左にスワイプ |
53 | 雨あがり | ターボ…? | スピードMax |
54 | くじ | 人生の厳しさ | 線をたくさん書く |
55 | 落ち物パズル2 | 消したった! | 右側のくぼみに入れる |
56 | 糸くず | モニター死亡… | モニターを落とす |
57 | ぐち | ほふく前進 | 左の画面外 |
58 | ヘッドフォン | マナーモード | VoLを0にする |
59 | クイズ | 経費削減 | 操作しない |
60 | デート2 | 焼き肉大好き! | すぐ焼肉屋へ |
61 | 回転寿司 | エビ好き! | エビだけ取る |
62 | 一本じめ二本目 | お約束 | 1回目の「よーお」で叩く |
63 | レジで | セルフレジ | 自分でレジに行く |
64 | コールアンドレスポンス | ロックだぜ… | 全部いえい |
65 | デート3 | 今日は映画以外! | 真中で画面外へ |
66 | 映画館で | 立ち見でも見たい | 右の画面外へ |
67 | 出撃!! | ランデブー! | 左に避け、シャアと同じ機体へ |
68 | スタンディングのアレ | つまらなかったから… | 右の画面外へ |
69 | バーで2 | ナイスアシスト、お前! | 一回止めて、次の人に渡す |
70 | がんばれ受験生 | やれやれだ… | 窓ガラスをタップ |
71 | すもう | 八百長禁止! | 右に押しだす |
72 | あのダンス | ギャグダンス | わからない…。 |
73 | 台風 | 史上最大級 | 台風に触りっぱなしで大きくする |
74 | SayHo!! | 新興宗教…? | 常に連打 |
75 | ペンライト | ワイパー | 左右に高速移動 |
76 | 仮装大会 | 醍醐味だよね | 司会が来てから点を入れる |
77 | トータライザー | 連打したくなる… | 連打 |
78 | 熱湯風呂 | フライング | すぐに押す |
79 | 熱湯風呂その後 | 熱さに強いんです! | 潜る |
80 | 衝撃告白 | 怪しいものではありません | マイクを隠す |
81 | 始球式 | プロ失格 | ボールを打つ |
82 | ウェーブ | 目立ちたがり | 何回も立つ |
83 | リフト | 上げてみただけ… | 上げた後下ろす |
84 | 山で | 寝たふりはダメらしい | 寝た後、画面外 |
85 | 続続々再び電車で | 因果応報 | 女の子の右隣の男の顔を見続ける |
86 | シートベルト | 罰ゲーム…? | シートベルトを口に |
87 | 参観日 | 油断大敵! | 親を選択 |
88 | テニス | 見てはいけない…? | 顔の向きを観客にあわせておき、UFOが来たら見ない |
89 | UFO | 頭上注意 | すぐに左にスワイプ |
90 | UFO内 | パニック中! | ずっと手を挙げる |
91 | 着替え | 俺が正義だ! | 右の画面外へ |
92 | エスカレーター大阪編 | 大阪ですから | 下りのエスカレーターに移動 |
93 | プロジェクター | 暗いとテンション上昇! | スクリーンの前でジャンプ |
94 | 解散宣言 | 解散、解散… | 操作しない |
95 | 節電中 | 換気 | 窓を5秒全開にして、しばらくしたら閉じる |
96 | 電車7人掛け上級 | 隣の車両はガラガラかも… | 左の画面外へ |
97 | 惑星上陸 | 急に用事が… | 下の画面外に |
98 | 必殺技が… | 逆転の一撃 | 右にスワイプし、必殺技を跳ね返す |
99 | さようなら | SKIP!! | ずっとタッチ |
100 | Gモード | バランスが大事 | ロゴを真ん中に |
Java開発環境の設定
自分のJava開発環境についてまとめました。もっといいツールが見つかれば更新します。
Tomcat
$ wget http://ftp.kddilabs.jp/infosystems/apache/tomcat/tomcat-6/v6.0.33/bin/apache-tomcat-6.0.33.tar.gz $ tar xzvf apache-tomcat-6.0.33.tar.gz $ mkdir -p /usr/local/app/apache-tomcat-6.0.33 $ ln -snf /usr/local/app/apache-tomcat-6.0.33 /usr/local/app/tomcat
Eclipse
インストール
設定
- メニューの英語化
- eclipse.iniに以下の2行を追加
-Duser.language=en -Duser.country=US
- 行番号の表示
- Preferences -> General -> Editors -> TextEditors -> Show line numbers
- どこで「;」「{」「}」を押しても行末にいれてくれる
- Preferences -> Java -> Editor -> Typing -> Automatically insert at correct position -> Semicolons, Braces
- 保存時にimportを修正
- Preferences -> Java -> Editor -> Save Actions -> Organize imports
- 改行コード
- Preferences -> General -> Workspace -> New text file line delimiter
- 文字コード
- Preferences -> General -> Workspace -> Text file encoding
- 自動でリフレッシュ
- Preferences -> General -> Workspace -> Refresh On Access
YouTubeに歌詞を表示するGreasemonkeyスクリプト
を書きました。http://userscripts.org/scripts/show/116088からインストールすると、ビデオの下に歌詞が自動的に表示されます。
Fabricによるデプロイの自動化
Python製デプロイツール『Fabric』について調べました。これを使って業務を楽にするスクリプトを作成したいと思っています。