Skip to content

Instantly share code, notes, and snippets.

View yuskesuzki's full-sized avatar

Yusuke Suzuki yuskesuzki

View GitHub Profile
で、最後に、このへんの右の方の、ログの統計情報をどういう風に扱っているのかって
いう話なんですけど…。
今までアプリケーションサーバーが、ユーザさんがアクセスしてきたログが、生ログと
して一時的にIDCの方のデータセンターの方にログとして書き出すんですけど、今は、
hourly、一時間に一回、AmazonのS3のストレージの方にログ情報をけっこうコンパクト
にまとめてあげています。
で、このログの解析なんですけど、「たべみる」ってさっき言っていた、ログを利用し
て運営しているWebサービスの方はEC2とHadoopを利用して、ログ情報からガツッとデー
で、これらのより詳しい所については、「ウェブオペレーション」っていう、弊社の濱
崎というのが、「日本の料理のインフラ」という事で、インフラ寄りの細かい事を書い
てるので、外のジュンク堂で売ってるので、ぜひ皆さん、興味があったらご購入くださ
い。
それでは、続きましてCOOKPADの開発についての話です。
で、COOKPADはエンジニアがこれだけいて。
今は30人以上のエンジニアがRailsアプリの開発などに日々とりくんでいます。
で、これらのすごい細かい事については、「大江戸Ruby会議」の01で、「高速なテス
トサイクルを回すには」ってことで話していた…、話したので、ぜひ、テストの高速化
に興味がある人は、この辺を読んでみてください。
次にデプロイについての話なんですけど、COOKPADでは、デプロイについてルールをいく
つか設けていて、1個目はCIのビルドが通ったらっていうのと、2個目はその、デプロ
イするときにきちんとnotificationを送る、3つめはデプロイが終わった後に、問題が
ないか、正常かどうか確認するというフェーズを取り入れています。
で、CIが通るかどうか、まあここは継続的インテグレーションで行っていて、継続的イ
で、実際そうすると、じゃあInternal Server Errorが起きたらどうなるんだよ?ってい
うときには、Rubyの例外catch機能を利用して、例外が発生したとき、Extensionからの
例外だった場合は自動で無効化するような実装が入っています。
そのため、なんかExtensionでエラーが起きたら自動で無効化されて標準の機能に差し変
わるので、開発者はそこらへんでエラーが起きてCOOKPADが落ちちゃうよーってのを気に
せず、どんどんどんどん機能を拡張していくことが可能となってます。
で、実際これ、COOKPADの一般の人がアクセスしたときのレシピの画面なんですけど、特
定のExtensionを有効にしたのが、右の半分がちょっとモザイク…新機能なんでちょっと
$KCODE="u"
require "rubygems"
require "open-uri"
require "nkf"
require "kconv"
require "jcode"
require "rexml/document"
class Classifier
require "naivebayes"
# training
nb = Naivebayes.new
datas = %w[ローズキングダム ウオッカ スクリーンヒーロー アドマイヤムーン ディープインパクト
アルカセット ゼンノロブロイ タップダンスシチー ファルブラヴ ジャングルポケット
テイエムオペラオー スペシャルウィーク エルコンドルパサー ピルサドスキー シングスピール
ランド マーベラスクラウン レガシーワールド トウカイテイオー ゴールデンフェザント
ベタールースンアップ ホーリックス ペイザバトラー ルグロリュー ジュピターアイランド
シンボリルドルフ カツラギエース スタネーラ ハーフアイスト メアジードーツ
@yuskesuzki
yuskesuzki / test1.html
Created January 28, 2012 02:25
enchant.js sample 1
<script type="text/javascript" src="./enchant.js"></script>
<script type="text/javascript" src="./plugins/ui.enchant.js"></script>
<script type="text/javascript">
/*
* ---------------------------------------------------------------------
* enchant.js サンプル
* クマをカーソルキーで動かしつつも、グルグルとオブジェも回してみる
*
* 同じディレクトリ内に
final int RED = 0;
final int ORANGE = 1;
final int YELLOW = 2;
final int GREEN = 3;
final int BLUE = 4;
final int INDIGOBLUE = 5;
final int PURPLE = 6;
int COLORMAX = PURPLE;
int boxsize = 45;
@yuskesuzki
yuskesuzki / drawRainbow2
Created July 21, 2014 15:08
Processing sample 2
final int RED = 0;
final int ORANGE = 1;
final int YELLOW = 2;
final int GREEN = 3;
final int BLUE = 4;
final int INDIGOBLUE = 5;
final int PURPLE = 6;
int COLORMAX = PURPLE;
final int RAINBOWSIZEMAX = 250;
final int RED = 0;
final int ORANGE = 1;
final int YELLOW = 2;
final int GREEN = 3;
final int BLUE = 4;
final int INDIGOBLUE = 5;
final int PURPLE = 6;
int COLORMAX = PURPLE;
float dr = 0.0;