cnosuke's blog (′ʘ⌄ʘ‵)

へっぽこエンジニア

#isucon参加記録 またはへっぽこ学生エンジニアは如何にしてRedisを愛するようになったか。そしてエモい話。

先週末の日曜日、#isucon のオンライン予選に参加しました。
「休学って楽しいよね! (まてぃー「僕はちがいます!」)」というチーム名で、大学の知人である、あおみかんさん(@AknEp)とまてぃくん(@rkmathi)とで参加しました。
余談ですが、僕は今は復学しています!
(けど週の大半は毎日の料理を楽しくするお仕事をしています)

結果は

という感じで、大変嬉しいことに学生枠でギリギリ3位に入ることが出来ました!
いえーい ✌(◔ڼ◔)✌

早速追記: やっぱりバグのせいでスコアが満たず駄目だったようですヾ(。>﹏<。)ノ゙

時系列っぽく振り返ってみる

  • あおみかんさんがAMIからインスタンスを建ててくれる。
  • 最初インスタンスガチャしたほうがいいのかなぁという話もしたけど、最終的にAMI提出して運営側でチェックされることになるから意味ないかということで素直にそのまま使う。
  • 先ずは一通りコードを読む。
    • ActiveRecordとか使ってないことに気づく。そういえばARでmodel作るの激重だったなぁ。まぁ使ってないのかーとか考える。
  • とりあえずSQLにIndexを貼りまくる作業をする。
  • 平行してまてぃくんが unicorn + nginx に変更する作業をする
  • gzipの罠をしっかりと踏む。
  • トップページ開く度にわざわざカウントしてるの大変そう。 => memcached(もどき)に乗っけてカウントを管理しよう!ということで実装する。
    • これ、かなり早い段階でやったんですが、それが後で災い結果を生むことに・・・。
  • puma + Rubinius にしてみる
    • 爆速との噂を聞いて。
    • 結果、MySQLのconnectionが足りなくなったりして大変なことに。(増やそうにもそれがどの程度意味があるのかよくわからなくなった)
    • 結果、断念してunicornに戻す
  • あおみかんさんがユーザのログイン周りとかセッションまわりを鬼改造する
  • markdownのレンダリングredcarpet に変える
  • 起動時に既にあるmarkdownデータを全てレンダリングしてmemcachedに突っこむことにする。
  • 新規作成データも全て突っ込むことにして、読み込み時のmarkdownレンダリングを全て無くす
  • Dallimarshal data too shortって怒られる。
    • 結局memcachedがニセモンであることには最後まで気づかなかった...
  • 怒られたら逃げるが勝ちの精神でRedisを使うことにする。*1
  • Redis最高!!Dalliに怒られない!
  • markdownのレンダリングもRedisに乗っけてると速い!Redisいい人!*2
  • 記事のカウントを非SQLにした部分で紛込ませてしまったバグが今になって火を噴く。 ごめんなさい・・・。
  • 必死で対応するも時既にお寿司*3

という感じでした。

反省点+もっとこうした方が良かったかなぁと思うこと

  • ちゃんと最初から最後までベンチマークテストがちゃんと走ってそこそこのスコアを出すことを確認し続ける。
    • いろんな理由でまともにベンチ出来たのがそもそも少なかったと思います。
  • プルリク開発的なのやったほうがよかったかも。
    • バグを未然に防ぐ + 変更点をみんなで共有するのは大事そう。
    • CI的にベンチ走らせれば前項との関係も良い感じ。
    • めんどくさがらずにcapistranoとかも使えるようにしたほうが良かったと思う。
  • 初期のサーバの状態をもっとちゃんと確認する。
    • memcachedの罠
    • topとかもまともに使わなかった。
  • 定石的なチューニングをちゃんとする。
    • my.cnf とか手が回らなかった。
    • Redis も使うならちゃんとチューニングしないとあんま意味無いらしいですね・・・
    • unicorn のworker数ももっと調整するべきだった。
    • そういえば結局varnishも使わなかった。

なんか思ってたり考えてたりしたことを整理出来てなかったせいもあって、ちゃんと出来なかったってのが多い気がしますね。
あと、知ってても実際ちゃんと使ったことが無かったせいで、あんまり意味が無かったり使おうと思ってもすぐに使えない、というパターンも多かったと思います。

まとめ的なsomething

すごく楽しかった。

普段の仕事もまぁ高速化を考えてはいますが、いざインフラまわりも含めて自分でやるとなると、結構知識であったり経験が不足している部分が多いなぁと改めて知らされた。
なんとなく知っているけれども、実際に触ったことが無かったりちゃんとチューニングしたことないもの多いなぁと反省。 一方で、少なくとも知っているという状態(あたまに少しはインデックスがあるような状態)のおかげで、少しは何をしたらいいかがわかったのはよかった。

今後

いろんな高速化のテクニックをもっと学ぶ。
DBまわり勉強しなおしたい・・・
Redisかわいい

あとがき+エモい話

もっと学生の参加者が増えて欲しいなぁと思いました。
実際、僕ら自身もどこまで出来るか全くわからない感じで、「記念受験だね」と良いながら参加しましたが、結果的には記念以上にもっと価値があるものが得られたと思います。
僕らのチームメンバーはまてぃ君以外は休学期間を挟んでたり、今も復学してるけど仕事メインでやってるような感じで、果たして学生なのか?というと微妙な感じではありますが、まだまだ経験不足なヒヨッコという点ではちゃんと学生"枠"だと思います。
今回の#isuconに参加したことで、自分の知識を少し整理出来たり、足りない知識だったりに気づけて凄くよかったですし、他のWeb系に興味がある学生諸氏にも是非勧めたいと思いました。

あと、全て終わったあとのtwitter上に見る一体感とかね、あれヤバイですね。

実は学生諸氏にとって1番価値があるのは、結果うんぬんじゃなくて、終わったあとに感じる、他の参加者との一体感かもしれない。

僕らは、まだヒヨッコですからみなさんは僕らの名前も知らないだろうし、僕らも超有名人のみなさんを羨望の眼差しで見つめる可愛い少年です。

そんな僕らが、他の参加者のみなさんのブログを読んだりtwitterを見てたりして、ある種のカタルシスのような気持ちと共に感じた一体感は、僕ら自身もWeb系の業界の一員にしっかりと参加しているような、そんな感覚でもあったのかもしれません。

もしかすると本戦に参加出来ないかもしれませんが*4、私個人としては予選参加だけでもかなり大きな価値を得ることが出来たと思います。

運営者のみなさま、他の参加者のみなさま、ありがとうございました&&お疲れ様でした。

PS. 五万円欲しい

*1:実はRedisは最初から使うことを考えていた。実際に使うことにしたのはかなり終盤。

*2:というかRedisじゃなくても先にレンダリングしてるから速いだけ

*3:誰かお寿司食べにいきましょう

*4:バグが残っていてAMIが不安定なので失格になるかも・・・

俺プレゼンツ 野菜ジュース大賞 2013

http://instagram.com/p/bWPkRDpROC/

野菜ジュース大賞 2013

やっぱり書かずにはいれないですわ。

基本的には、僕は飲み物は珈琲かお茶もしくは水くらいしかいつも飲まない(というかこれらを飲む量が異常)なんですけど、家ではやっぱり健康的なことも意識して野菜ジュースも良く飲みます。

で、せっかくなら美味しいもの飲みたいじゃないですか。やっぱりね。

というわけで、いつもいろんな種類のを買ってみていろいろ飲んでみるんですが、やっぱりこの写真の商品、TOPVALUの 「野菜と果実 橙色のジュース」 が1番美味しいと思う。

味の一つ一つは他の野菜ジュースでもありそうな感じなんですが、組み立て方というか変化が上手いなぁと思うんですよ。ちょっと詳しく書いてみます。

1. 口に含んだ時の柑橘系の風味

赤色系の野菜ジュースとかはトマトベースだったりするので、口に含んだ瞬間はトマトの酸味が効いているものが多い印象です。
非赤色系の野菜ジュースはにんじん系の甘みが最初から強く感じられたりします。
この商品は、トマトやレモンの 皮のような風味 を強く感じます。まさに口に含んだ瞬間が。

2. 基本はオレンジ系だが、にんじん・さつまいも・かぼちゃ系の甘み

そして、味は全体的にはトマトやレモン系の感じなんですが、どちらかというと下の上で転がしてみると にんじんやさつまいも、カボチャ系の甘み を感じて、ちょっとオレンジ系は後退して行きます。
つまり、口に含んでいる時は最初に感じた香りから想像されるほどオレンジジュースのようなパンチの強さは無くて、もうちょっとパンチが強く無い淡い甘さが広がっている感じですね。

3. 最後はセロリ・パセリがきれいにまとめる

そして、これ。これが最強。
結構甘すぎる野菜ジュースとかってあるじゃないですか?
甘すぎるものじゃなくても、トマトジュースとか、それ系の野菜ジュースって口に残る感じあると思うんですね。でも、僕はその感じがあんまり好きじゃないんですよ。
で、コレ。コレですよ。飲み込む時に感じるセロリとかパセリとかの感じが、 もの凄く綺麗に後味をさっぱり と終わらせています。

飲み始めのオレンジの皮の風味とセロリ・パセリの風味ってどことなく近いところもあるような気がします。
飲み始めから変化はありつつも、最後には最初と同じ系統の風味を感じるからこそ、綺麗にまとまって感じるのかもしれません。

他...

確か、同じ売り場には 赤色の野菜ジュース も売っていた気がしますけどこっちはむしろ美味しくないですね。味に変化が乏しいというか、あんまり面白くない感じ。

ちなみに、この野菜ジュースの他には、カゴメの野菜生活の紫色のやつも好きです。

カゴメ 野菜生活100 紫の野菜 200ml×24本

カゴメ 野菜生活100 紫の野菜 200ml×24本

これですね。これも結構美味しいんですが、感覚的には葡萄ジュースって感じですね。

あとは、健康考えると下記のようなものもいいのかなぁーとは思いますが、正直言って美味しく無い。
まぁ、当たり前なんですが、味が濃すぎるし、美味しく飲むって感じでは無いかなぁと思います。
もちろん、毎日飲めるレベルだし、あれば全然飲めますが、 美味しく飲む わけでは無いかなぁ。

伊藤園 1日分の野菜 200ml×24本

伊藤園 1日分の野菜 200ml×24本

あと、伊藤園の充実野菜シリーズとかもスーパーではよく売っていると思いますが、正直好みでは無いですね・・・。

他に美味しくて、かつ、 入手しやすい 野菜ジュースをご存じでしたら是非教えてください。

PS.

そろそろ自分で野菜ジュースとか作ってみてもいいかなぁとは思ったり。
そういえば、毎日の料理を楽しみにする某社さんのやさい便って野菜ジュース用のセットとかも扱ってるのかなぁ。スムージー的なやつとか。
あとで調べてみよう。

コートダジュールのクレープがうまい

http://instagram.com/p/bN0qNEJRP0/

http://instagram.com/p/Z4xOLlpRLo/

タイトルそのままなのですが、つくばにあるコートダジュールというお店のクレープが超うまい。

これでお値段300円だからなかなか頑張ってると思う。 このボリューム感で300円て凄いなぁ。

こんな感じで値段よりも価値がある!て思えるように僕も頑張りたいものです。

でもこのクレープに勝つのは大変そうだなぁ。心が折れます。

モテるサーバ管理力を磨くための4つの心得「サーバルームでは仮想マシンを起動出来ない女をアピールせよ」等

元ネタ: モテる女子力を磨くための4つの心得「オムライスを食べられない女をアピールせよ」等
参考:モテるクライアント力を磨くための 4 つの心得 「REST API にアクセスできない女をアピールせよ」等 « takeshik.log



こんにちは、情報システムを専攻している学生です。私は学歴も知識もありませんしブスですが、サーバ管理に関してはプロフェッショナル*1。今回は、モテるサーバ管理力を磨くための4つの心得を皆さんにお教えしたいと思います。


1. あえてIPv6非対応のルータを飲み会に持っていく
あえてIPv6非対応のルータを使うようにしましょう。そして飲み会の場で好みの男がいたら話しかけ、わざとらしくコンソールに接続していじってみましょう。そして「あ〜ん! このルータ本当にマジでチョームカつくんですけどぉぉお〜!」と言って、男に「どうしたの?」と言わせましょう。言わせたらもう大成功。「ルータとか詳しくなくてぇ〜! ずっとコレ使ってるんですけどぉ〜! 踊るひろゆき*2が見られないんですぅ〜! ぷんぷくり〜ん(怒)」と言いましょう。だいたいの男は新しいルータを持ちたがる習性があるので、古かったとしても1世代前のIPv6対応ルータを使っているはずです。

そこで男が「せめてトンネリングでIPv6にしないの?」と言ってくるはず(言ってこない空気が読めない男はその時点でガン無視OK)。そう言われたらあなたは「なんかなんかぁ〜! 最近6to4(RFC3056)が人気なんでしょー!? あれってどうなんですかぁ?IPv6で接続したいんですけどわかんなぁぁああい!!*3 私かわいそーなコ★」と返します。すると男は「6to4でしょ? 品質が保証されないよ。パケット盗聴などのセキュリティ問題も起こりやすいし*4。本当に良くわからないみたいだね。直接IPv6での接続が欲しいの?」という話になって、次の休みの日にふたりでIXからIPv6の専用線を引き込むデートに行けるというわけです。あなたの女子力が高ければ、男がL2インテリジェントスイッチ買ってくれるかも!?


2. Ubuntuでaptitudeするとモテる
「インストール!」とか「アップグレード!」などを実現する「aptitude」をUbuntuに入れると、Debian信者の男性ユーザーは「なんかこの子カワイイなぁ」や「支えてあげたいかも」と思ってくれます。aptitudeではapt-getよりもちょっとだけ依存関係が賢いとか言われてたりする*5ので 「aptitude」 を多用することによって、男性はあなたを可憐で女の子らしいと勘違いしてくれるのです。そういうキャラクターにするとほぼ絶対にGUIUbuntuを使ってる同性に嫌われますが気にしないようにしましょう。*6


3. とりあえず男には「えー! なにそれ!?  知りたい知りたーい♪」と言っておく
飲み会などで男が女性に話すことといえばサーバやネットワークの話ばかり。よって、女性にとってどうでもいい話ばかりです。でもそこで適当に「へぇーそうなんですかぁ〜?」とか「私はいつもWindowsServerですねぇ」と返してしまうと、さすがの男も「この女GUIだな」と気がついてしまいます。GUI女だとバレたら終わりです。そこは無意味にテンションをあげて、「えー! なにそれ!?  知りたい知りたーい♪」と言っておくのが正解。たとえ興味がない話題でも、テンションと積極性でその場を乗り切りましょう。積極的に話を聞いてくれる女性に男は弱いのです。

いろいろと話を聞いたあと、「〇〇は〇〇で、〇〇が〇〇なんですね!*7 覚えたぞぉ! メモメモ!」とコメントすればパーフェクト。続けて頭に指をさしてくるくる回しつつ「セット!キー!バリュー! セット!キー!バリュー!」と言って、「どうしたの?」と男に言わせるのもアリ。そこで「私のキーバリューストアに記録しているのでありますっ☆」と言えばNoSQL力アップ!*8 そこでまた男は「この子おもしろくてクラウドかも!?」と思ってくれます。私の家はサーバもNASもありませんし計画停電対象地区*9ですが、こういうクラウドを使えば自宅サーバがない私のようなバカ女のほうがモテたりするのです。男はブロードキャストストームのようなパケットの荒波に浸りたいですからね。*10


4. サーバルームでは仮想マシンを起動出来ない女をアピールせよ
男とサーバルームに入ったら、真っ先にESXiなどのインストールディスクを探して「あーん! 私これ入れられないんですよねぇ〜(悲)」と言いましょう。するとほぼ100パーセント「どうして? VMwareが嫌いなの?」と聞かれるので、「VMware嫌いじゃないし、別にKVMでもいいんだけど入れられないんですっ><」と返答しましょう。ここでまた100パーセント「嫌いじゃないのにどうして入れられないの?」と聞かれるので、うつむいて3〜5秒ほど間をおいてからボソッとこう言います。「……だって、……だって、VMのっけたらサーバのメモリが不足しちゃうじゃないですかぁっ! ホストちゃんかわいそうですぅ! まだ(インスタンスが)生まれてないのにぃぃ〜(悲)。pingpingとすら鳴けないんですよ……」と身を震わせて言うのです。

その瞬間、あなたのVM力がアップします。きっと男は「この子のサーバは未だにx64じゃないのか!なんて優しい天使のようなコなんだろう! 絶対にゲットしてやるぞ! コイツは俺の女だ!」と心のなかで誓い、あなたに惚れ込むはずです。意中の男と付き合うことになったら、そんなことは忘れて好きなだけ仮想マシンを作っても大丈夫です。「VMM入れられないんじゃなかったっけ?」と言われたら「Xeon買った」とか「メモリ買い足した」、「そんなこと言ってない」と言っておけばOKです。


(もちろん、全体的にネタなのでマジレスご容赦下さい。)

*1:もちろんネタ。実際はまだまだ初心者ですので。

*2:http://ipv6.2ch.net

*3:実は筆者は本当によく分かってない。誰か教えてくだしあ><

*4:ja.wikipediaに書いてあった

*5:噂?根拠はよくわからないです。知ってる人教えて下さい。

*6:ちなみにUbuntuでは普通にapt-getに統一したほうがいいとかいうのも聞いたことがある。詳しい人教えて下さい。

*7:いいの思いつかなかった

*8:あんまりよく分かってない。最近いじってみたいと思ってる。

*9:茨城県なので一応対象から暫定的に外れてますが。

*10:僕はもちろん嫌ですけどね





DSC01759, originally uploaded by Cnosuke.


気が付けば、秋ですね。



いつもの通学路にある木が、もう丸裸になってました。

なんか、秋というと、いろいろと昔のことを思い出しますなぁ。



どの季節も好きですが、秋のこの寂しげな感じ、凄く好きです。