タグ

ブックマーク / blog.mirakui.com (24)

  • クックパッドを退職しました - 昼メシ物語

    2024年1月末まで在籍していますが昨年12月に業務は終えていて、いまは有休消化期間中です。2010年から約14年間勤めてきた、自分の生き様そのものとも言えるクックパッドを離れるのには、表現しきれないほど大きく、複雑な思いがあります。 僕がこの14年間でやってきたことを振り返ってみます。 入社 クックパッドに入社した時は新卒3年目相当で、26歳でした。もともと料理Ruby が好きで、当時まだ珍しかった Ruby on Rails でサービス開発をしているらしいという点や、当時からネットウォッチしていた @ryo_katsuma さんが所属していること、直属の上司の井原さんが転職したことが決め手になり、体当たりで飛び込みました。当時の僕はほとんど実績もなく、入れてもらえるかギリギリのところだったと思いますが、おそらく井原さんが頑張って交渉してくれたのだと思います。当に感謝しています。こ

    クックパッドを退職しました - 昼メシ物語
  • S3のダウンロード速度を1.5〜4.5倍高速化する怪しげな方法 - 昼メシ物語

    バケットのIPアドレスを適切なものに固定することで、期待値でいうと1.5倍、最大で4.5倍程度高速にダウンロードできます。 この方法は非常に効果が高いですが、非公式なものであり、ある日突然破綻する可能性もありますので自己責任でお願いします。 S3のバケットとエンドポイント まずは前提知識として、S3の名前解決について説明します。 S3のバケット "mybucket" というバケットを東京リージョンに持っているとします。するとそのバケットのドメイン名は mybucket.s3.amazonaws.comになります。これをエンドポイントと呼びます。このバケットの中にあるファイル "hello.txt" にアクセスする場合には、 http(s)://mybucket.s3.amazonaws.com/hello.txtというようなURLを用います。*1 エンドポイントのIPアドレス この myb

    S3のダウンロード速度を1.5〜4.5倍高速化する怪しげな方法 - 昼メシ物語
    yuiseki
    yuiseki 2017/04/03
  • gem管理の新標準ツール"Bundler"のTips - 昼メシ物語

    Bundlerは、rubygemsのラッパーです。Rails3のgem管理に採用されています。 Bundlerを使うことで、 このgem、手元にはインストールされているのに、番環境にインストールされてない! 開発環境にgemを入れまくったら、プロジェクトにどのgemが必要なのか分からなくなった! みたいな問題を解決できます。 詳しくは公式サイトをご覧ください。 今日はそんなBundlerについて色々分かってきたので、Tipsをいくつか紹介したいと思います。 前提知識 この記事は、このへんが理解出来ていることが前提です。 Bundler: The best way to manage Ruby applications Rubygems に /usr/bin を触らせないためには gem をユーザーディレクトリで運用する++ - きたももんががきたん。 Bundlerは1.0系以降を使おう

    gem管理の新標準ツール"Bundler"のTips - 昼メシ物語
    yuiseki
    yuiseki 2014/12/11
  • 1年前の自分と暮らす - 昼メシ物語

    mirakui_retro という twitter BOT を作って、かれこれ5年くらい運用している。 mirakui_retro は 、1年前の mirakui のツイートをツイートするという BOT だ。つまり、 mirakui_retro の以下の発言は、僕がその1年前に発言したものだ。 このインターネット時代に— Issei Naruta (@mirakui) January 21, 2013 ↓1年後 このインターネット時代に— mirakui_retro (@mirakui_retro) January 21, 2014 歴史 2009年頃、友達の間で Twitter BOT を作るのが流行ってて、 Ruby の勉強がてら作ったのがこの mirakui_retro だった。TwitterAPI 仕様で、遡れる発言数には制限があって、僕のツイートのペースだとだいたい3ヶ月前

    1年前の自分と暮らす - 昼メシ物語
    yuiseki
    yuiseki 2014/01/28
  • 「全自動パラメータチューニングさん」は何であって何でないのか - 昼メシ物語

    発表資料: 全自動パラメータチューニングさん // Speaker Deck ソースコード: https://github.com/mirakui/tuningsan これは何なのか ハッカソンイベント「Open Hack Day Japan」にて、24時間の制限の中で開発し、90秒でプレゼンテーションした作品です 2013/2/16〜2/18 にかけてヤフー株式会社で開催された、「Open Hack Day Japan」という大規模ハッカッソンイベントで開発しました。 上記のプレゼンテーションは発表で使用したものです。 Open Hack Day Japan - Yahoo! JAPAN 作品は、全参加作品の中で唯一のコマンドラインツールであり非常に地味でしたが、ありがたいことに KLab賞をいただくことができました。どうもありがとうございます。 指定した1パラメータの自動調整によって

    「全自動パラメータチューニングさん」は何であって何でないのか - 昼メシ物語
    yuiseki
    yuiseki 2013/02/21
  • Passenger 4.0 beta1 の新機能解説 - 昼メシ物語

    先日、 Phusion Passenger 4.0 beta 1 が公開されました。 近年は Passenger に代わり Nginx + unicorn の構成が Rails の業界標準になりつつありますが、Passenger 4 は大きく進化したようなので、そのアップデート内容を紹介します。 なお、この記事は 10/24 に公開された Phusion 公式ブログの記事「Phusion Passenger 4.0 beta 1 is here – Phusion Corporate Blog」を要訳したものです。説明をところどころ省いているので、詳しくは原文を参照してください。 What's new? 複数のRubyバージョンのサポート 1サーバで複数のアプリケーションをホストしている場合、アプリケーション毎に違うRubyインタプリタを指定できるようになりました。 イベント駆動 I/O

    Passenger 4.0 beta1 の新機能解説 - 昼メシ物語
  • Railsで遅いMiddlewareを探す - 昼メシ物語

    AさんはRailsで書かれたある遅いコードの検証をしていました。 X-Runtimeヘッダを見ると $ curl -Is localhost:3000/hello | grep X-Runtime X-Runtime: 5.008580 5秒もかかってる。 しかしRailsのログを見ると Started HEAD "/hello" for 127.0.0.1 at Tue Apr 03 13:04:11 +0900 2012 Processing by HelloController#index as */* Rendered text template (0.0ms) Completed 200 OK in 10ms (Views: 9.7ms) こんな感じで10msで返していることになっている。なんだこれは? こういう状況で疑わしいことの一つとして、Rack等のMiddlewareのど

    Railsで遅いMiddlewareを探す - 昼メシ物語
    yuiseki
    yuiseki 2012/04/04
  • 私がクックパッドの画像配信野郎です - 昼メシ物語

    一年ほど前にヤフーを退職した私ですが、その後なにをやっているかというと、クックパッドに入社して画像配信をしています。私が入社する前から動いていた画像配信の仕組みは設計が古くてなにかと困っていたので、より良いシステムを開発してリプレースというのをやっています。前職ではなかなかこういう基盤システムを一人でイチから作って運用までするという体験はできなかったので、でかい仕事をできるチャンスに恵まれて大変充実した毎日です。 入社当初はサービス開発の担当だったんですが、開発に必要な基盤システムを作り始めたらどんどんエンジニアリングのレイヤーが下がってきて、気づけばインフラチームに所属していました。 まあそんな話はさておき、この画像配信関連の成果をいくつかの勉強会で発表したので、その資料を紹介します。 サイバーエージェントxクックパッド合同勉強会(amepad) 弊社オフィスで開催された、サイバーエージ

    私がクックパッドの画像配信野郎です - 昼メシ物語
    yuiseki
    yuiseki 2011/08/16
  • 「※この発言は個人の見解であり、所属する組織の公式見解ではありません」をリリースしました - 昼メシ物語

    http://この発言は個人の見解であり.所属する組織の公式見解ではありません.tsuyabu.in/ 「※この発言は個人の見解であり、所属する組織の公式見解ではありません」は、発言専用のTwitterクライアントです。これを使って発言すると、その発言があくまで個人の見解であることを主張することができます。 使い方は簡単で、発言を140文字以内で入力し、「Tweet」をクリックするだけです。すると、以下のように、その発言が個人の見解に過ぎないことが明示されます。 技術的な説明 ただ Twitter Anywhere を html に貼りつけただけです。 まず、Anywhere アプリケーションをこちらから登録します。 https://dev.twitter.com/anywhere/apps/new この時に指定するアプリケーション名を「※この発言は〜」にしたというだけの話です。このアプリ

    「※この発言は個人の見解であり、所属する組織の公式見解ではありません」をリリースしました - 昼メシ物語
    yuiseki
    yuiseki 2011/02/21
  • 本当は速いImageMagick: サムネイル画像生成を10倍速くする方法 - 昼メシ物語

    一般的に ImageMagick のサムネイル画像生成は遅いとされており、パフォーマンスが求められるシーンでは Imlib2 などのより高速な画像処理ライブラリが使われることが多いです。 Imlib2 の高速さについては、以前「Imlib2でImageMagickより3倍高速かつ美しいサムネイル画像の生成 - 床のトルストイ、ゲイとするとのこと」という記事で紹介しました。この記事のベンチマークにおいて、Imlib2 によるサムネイル画像の生成は、 ImageMagick の3倍程高速でした。 しかし、 ImageMagick は Imlib2 より画質がよく、高機能で使いやすく、今も頻繁にメンテナンスされており、とてもよく出来ています。その点 Imlib2 は、2004年からメンテナンスされておらず、セキュリティホールが見つかっても、各Linuxディストリビューションがそれぞれパッチを当て

  • Amazon EC2インスタンスに簡単にSSHできるようになるツールec2sshを公開しました - 昼メシ物語

    みんなが大好きなクラウドホスティングサービスのAmazon EC2ですが、インスタンスをバンバン立てたり落としたりしていると、ホスト名の管理が面倒になってきますよね。たとえば「さっき立てたインスタンスにSSHしたい!」と思ったら、consoleをひらいて、「ec2-xxx-xxx-xxx-xxx.compute.us-west-1.compute.amazonaws.com」なPublicDNSをターミナルにコピペして…みたいな面倒な事をやってしまいがちです。 これを避けるためには、~/.ssh/configをマメに更新したりするといいのですが、これはなかなか面倒な作業です。インスタンスは一旦StopしてRunし直すと、IPが変わってしまいますからね。 そこでec2sshの登場です ec2sshは、インスタンスのNameタグからホスト名を生成して、~/.ssh/configに書きこむツール

    Amazon EC2インスタンスに簡単にSSHできるようになるツールec2sshを公開しました - 昼メシ物語
    yuiseki
    yuiseki 2010/12/06
  • function hoge(){} と var hoge=function(){} の違い - 昼メシ物語

    javascriptはあまり得意ではなくて、この件について、定期的に忘れて同じ質問を人にしてしまっているので、ここに書いておく。 function hoge(){} と var hoge=function(){} に違いはあるのか? という問題について。結論から書くと、hogeのスコープが違う。(2010/10/08追記:誤りです。スコープは一緒ですね。うまく言えませんすみません…) まず、無名functionをvarに入れた場合。 hoge(); // => エラー! hogeはundefined値 var hoge = function() { alert("hello!"); } hoge()を呼び出している部分は、var hogeの宣言より上に書いてあるのでエラーになる。 一方で、名前つきfunctionを定義した場合はというと、 hoge(); // => "hello!" fu

    function hoge(){} と var hoge=function(){} の違い - 昼メシ物語
    yuiseki
    yuiseki 2010/10/08
  • RailsじゃなくてもActiveSupportの自動require機能を使う - 昼メシ物語

    Railsでは、 config/application.rb で config.autoload_paths << Rails.root.join("lib") と書いておくと、例えば $ cat lib/my_library.rb class MyLibrary : endみたいなファイルが置いてあれば、Railsアプリ内で MyLibrary クラスを特にrequireしなくても使える。これは ActiveSupport::Dependencies というクラスが const_missing をフックして、 autoload_paths にあるディレクトリの中から適切なファイルを自動requireしてくれるから。 これは大変便利なので、Railsじゃないアプリから使いたい。 やりかた require 'active_support/dependencies' ActiveSupport

    RailsじゃなくてもActiveSupportの自動require機能を使う - 昼メシ物語
    yuiseki
    yuiseki 2010/09/25
  • Imlib2でImageMagickより3倍高速かつ美しいサムネイル画像の生成 - 昼メシ物語

    この記事の概要 Imlib2を使って画像のサムネイルを生成してみたところ、ImageMagickより3倍速かった。 また一般的には、Imlib2の方が画質が悪いとされているが、パラメータを調整することで、十分に美しいサムネイル画像を得ることができた。 はじめに Imlib2は画像処理ライブラリ。mixiの発表資料大規模画像配信とPerl によれば、mixiは高速に高品質なサムネイルを生成するために、ImageMagickでなくImlib2を選んでいる。 上記資料の中では、以下のように説明されている。 速度 Epeg > Imlib2 > Imager >>> ImageMagick 画質 ImageMagick > Imlib2 >>> EpegImlibの画質は多少ImageMagickに劣るが、速度は十分に速い、とのこと。 一方で、404 Not Foundという記事では、ImageM

    yuiseki
    yuiseki 2010/07/24
  • 8分21秒で分かるRubyとOAuthによるTwitterAPIの使い方(動画) - 昼メシ物語

    TwitterAPIのBASIC認証は近々廃止され、今後はOAuth/xAuthにシフトされます。 混乱している開発者も多いと思うので、今回はOAuth対応なTwitterBotを作ることを前提にして、その簡単なやり方を動画に撮ってみました。スクリーンキャストというやつです。 動画の内容 Twitter Botをアプリケーションとしてtwitter.comに登録 Consumer Key, Consumer Secret を取得 Twitter BotアカウントのAccess Token, Access Secretを取得 RubyTwitter Botアカウントに発言させるプログラムを作成 発言成功 補足:AccessToken発行に使用したスクリプト 動画の中で、AccessTokenの発行に、俺が書いたスクリプトを使っています。 これです。 http://gist.github.c

    8分21秒で分かるRubyとOAuthによるTwitterAPIの使い方(動画) - 昼メシ物語
    yuiseki
    yuiseki 2010/05/08
  • PosterousのCEO「Webはクソ。ブラウザはマジなんとかしろ」 - 昼メシ物語

    俺も使ってるお手軽日記サービスのPosterous。そのCEO、Sachin Agarwalが書いていた記事がなんとなく面白かったので和訳しました。 元の記事: The web sucks. Browsers need to innovate - Sachin's Space 部分的にかなり意訳したり強調したりしてます。以下文。 Webはクソ。ブラウザはマジなんとかしろ Webはダメダメなプラットフォームだけど、一方iPadは今後もどんどんすげーアプリがどんどん出てくるのは明らかだろう。 Web業界が長年かけて築いてきたWebサイト達よりもいいものを、どうしてiPadは最初のリリースにも関わらず出せてしまうんだろう? 「Webの終わり」を宣言するために、私はこの記事を先週から書き始めた。「Webは死んだ」とまでは言わない。でももう薄氷を踏んでる状態だ。 Webは静的なコンテンツを扱うには

    PosterousのCEO「Webはクソ。ブラウザはマジなんとかしろ」 - 昼メシ物語
    yuiseki
    yuiseki 2010/05/05
  • スピリチュアルエンジニアリング入門 - 昼メシ物語

    先日 hack05 というイベントで LT をしたので、そのときの資料をまとめておきます。 スピリチュアル エンジニアリングとは システム開発・運用にスピリチュアル要素を取り入れることでシステム安定化を目指します。 皆さんご存知の通り、人間の技術力には限界があり、予測不能な事故(バグ)はまさに、神の領域といえます。 そこで「ジンクス」「縁起かつぎ」「妖精さん」などの力を借りることで、人間の手ではどうしようもない事態を回避するというのがこのスピリチュアルエンジニアリングです。 スピリチュアルエンジニアリングの基原理 スピリチュアルエンジニアリングの基は「祈り」にあります。「絶対に動く」という祈りの強さがよりよいコードをもたらします。 スピリチュアルはすべてのエンジニアの身近に! 以下に当てはまる人がいたら、あなたも立派なスピリチュアルエンジニア! コーディング中に神が降りてきたと思う瞬間

    スピリチュアルエンジニアリング入門 - 昼メシ物語
    yuiseki
    yuiseki 2010/03/06
  • 冷蔵庫と壁の隙間に自宅サーバを設置するのはやめましょう - 昼メシ物語

    みなさん自宅サーバの1台や2台は持ってると思うのですが、日住宅というのは狭いです。それに夏は暑い。自宅サーバを設置するには適さない条件が揃っているのが日です。なのに何故あなたたちはサーバを設置するのですか? 狭い安アパートの中で、なんとかして自宅でサーバを運用しようとしたら、通常は、ノートPCをサーバにして冷蔵庫と壁の間にあるスキマに入れる、というスタイルが導き出されると思います。 これは古いノートPCに Ubuntu Server を入れてサーバにしています。写真をよく見ると、ルータと DSU もスキマに設置されているのが分かると思います。わずかなスペースを生かした、素晴らしい発想です。 ですが問題があって、夏場は冷蔵庫の廃熱、PCやルータの廃熱でスキマ空間の温度はぐんぐん上がり、すぐにサーバもルータも死んでしまいますので、常識的に考えてこんなことは今すぐやめた方がいい。 ところで

    冷蔵庫と壁の隙間に自宅サーバを設置するのはやめましょう - 昼メシ物語
    yuiseki
    yuiseki 2009/07/21
  • 各言語におけるtrue/falseまとめ - 昼メシ物語

    たとえば PHP で、 if ($hoge) { ... } とか書いてあったら、 $hoge がどんな値のときに if の中身が実行されるのか即答できますか。 こういう書き方は多くの言語で可能ですが、言語によって何が真で何が偽になるのかが異なるので、それぞれまとめてみました。 C言語 C言語には bool 型が無い。 0 (int) だけが偽となり、それ以外はすべて真となる。 NULL 定数は stddef.h で以下のように ((void*)0) と定義されているため、偽値として使える。 意見が分かれそうなところですが、個人的にはNULLを偽値として使用するは好きじゃないです。 #ifndef __cplsuplus #define NULL ((void*)0) #else #define NULL __null #endif C++ C++になると bool 型が出てくる。C と同

    各言語におけるtrue/falseまとめ - 昼メシ物語
    yuiseki
    yuiseki 2009/06/05
  • vimをruby用にビルドしなおしてvim-rubyを使う - 昼メシ物語

    CentOSとMacOSXで動作確認。 vimruby用にビルドされているか確認 以下のコマンド。 $ vim --version | grep ruby +printer -profile -python +quickfix +reltime -rightleft -ruby +scrollbindはい、ここで「-ruby」となっていたら残念です。vimをリビルドする必要があります。「+ruby」ならOKですので、次節は飛ばしてください。 vimをリビルド MacOSXならMacPortsが入ってる事前提で、 $ sudo port deactivate vim $ sudo port install vim +multibyte +rubyこれだけでチェックアウト&リビルドしてくれます。便利! その他Linux系では、下記のようにソースをチェックアウトしてビルドする。 $ svn c

    vimをruby用にビルドしなおしてvim-rubyを使う - 昼メシ物語
    yuiseki
    yuiseki 2009/05/07