タグ

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

  • 開発合宿をする際の知見 - 昼メシ物語

    数年前から身内で時々集まって開発合宿をしていて、成功失敗あわせて知見が貯まってきたので備忘録として記事にしておきます。 なお、ここで開発合宿と言っているのは1,2部屋に1泊して済ませるような規模のもので、ホワイトボードでブレストしまくりといったものではなくて淡々とみんなでパソコンするみたいなものを想定しています。 宿選び あえてオススメの宿リストみたいなのは書きません。なぜなら開発合宿向けの宿まとめみたいな記事を真に受けて失敗したことがあるので、そのようなリソースをインターネットに増やしたくない。 開発合宿で有名な某旅館は、割安ではあるが無線LANが弱すぎ、温泉はぬるすぎ、メシもいまいちという品質なのに、開発合宿に選ばれがちである。○○旅館に行ってきましたという開発合宿レポートをみんながブログに書くから検索にヒットしてみんなそこに行くみたいになってて、負の連鎖が起こってる。 無線LANより

    開発合宿をする際の知見 - 昼メシ物語
  • 本当は速いImageMagick: サムネイル画像生成を10倍速くする方法 - 昼メシ物語

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

  • 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年前の自分と暮らす - 昼メシ物語
  • 今さら聞けない Immutable Infrastructure - 昼メシ物語

    Immutable (不変な) Infrastructure は、サーバを一度セットアップしたら二度と変更を加えないという運用スタイルのことを指します。 クラウド環境では、必要に応じてすぐにサーバを用意し、不要になったら簡単に破棄することができます。Immutable Infrastructure は、このようなクラウドの特性を活かす運用スタイルとして、注目されつつあります。 背景 Immutable Infrastructure が提唱された背景にある技術として、 Auto Scaling や Blue-Green Deployment*1 などがあります。 Auto Scaling Auto Scaling は、負荷に応じて自動的にサーバ台数を増減させる技術で、 AWS では標準で提供されています。常に必要な台数だけ起動していればいいので、コスト削減になるというものです。 Auto S

    今さら聞けない Immutable Infrastructure - 昼メシ物語
  • AWS re:Invent と Immutable Infrastructure - 昼メシ物語

    先日 Las Vegas で開催された AWS re:Invent 2013 に参加してきました。 非常に活気あふれる大規模なカンファレンスで、大変刺激を受けました。 今日は、いま何かと話題になっている Immutable Infrastructure に関連した発表を2つ紹介します。 Stop Worrying about Prodweb001 and Start Loving i-98fb9856 slideshare: Stop Worrying about Prodweb001 and Start Loving i-98fb9856 (ARC201) | AWS re:Invent 2013 AWS の Chris Munns 氏による発表です。タイトルからして面白いですね。エモいです。 この発表は以前から目をつけていたんですが、スケジュールの都合で出られず、残念でした。こうしてス

    AWS re:Invent と Immutable Infrastructure - 昼メシ物語
  • Rails3.2からログの行が他プロセスのものと混ざるようになった件について - 昼メシ物語

    Rails 3.2.0 から、マルチプロセス環境下(Unicornなど)では、 Rails.logger によるロギングが、以下のように複数のリクエスト同士で「混ざる」ようになってしまいました。 Started GET "/search?q=blip" for 0.0.0.0 at 2012-03-12 02:20:18 -0700 Processing by SiteController#search as / Parameters: {"q"=>"blip"} Started GET "/search?q=2bxen" for 0.0.0.0 at 2012-03-12 02:20:20 -0700 Processing by SiteController#search as / Parameters: {"q"=>"2bxen"} Rendered site/foo.html.erb

    Rails3.2からログの行が他プロセスのものと混ざるようになった件について - 昼メシ物語
  • WEB+DB PRESS vol.70に「実践Rails高速化」を寄稿しました - 昼メシ物語

    技術評論社の紹介ページ: http://gihyo.jp/magazine/wdpress/archive/2012/vol70 WEB+DB PRESS vol.70 に「実践Rails高速化」という特集記事を寄稿しました。 記事は40ページで、内容はこんな感じです。 第1章 Rails は遅いのか イントロです。 第2章 遅いコードの特定 Railsアプリをプロファイリングする方法です。 第3章 Rails キャッシュ機構の活用 Railsのキャッシュ機能は色々あってややこしいのでまとめてみました。 第4章 ActiveRecord の高速化 へんな使い方をしてスロークエリを出さないように気をつける方法などです。 第5章 HTTP レイヤの高速化 ETagちゃんとしろみたいなことを書きました。Asset Pipelineについても書いてあります。 第6章 高速 Unicorn サーバの

    WEB+DB PRESS vol.70に「実践Rails高速化」を寄稿しました - 昼メシ物語
  • ActiveRecordが発行するSQLをフックして色々やるためのライブラリArproxyを公開しました - 昼メシ物語

    https://github.com/cookpad/arproxy http://rubygems.org/gems/arproxy これは何? Arproxyを使うと、ActiveRecordが発行したSQLDB Adapterによって実行される直前をフックすることができます。これによって、カスタマイズしたクエリログを出力したり、どこからクエリが発行されたのかをトレースしたりすることができるようになります。 Arproxyでは、DB Adapterのフック処理を以下のように定義します。これはクエリが実行されるたびにバックトレースを出力する例です。*1 class QueryTracer < Arproxy::Base def execute(sql, name=nil) Rails.logger.debug sql Rails.logger.debug caller(1).join(

    ActiveRecordが発行するSQLをフックして色々やるためのライブラリArproxyを公開しました - 昼メシ物語
  • #RubyKaigi 2011で気になったgem 13選 - 昼メシ物語

    Rubyist達の夏フェスであるところのRubyKaigiが今年も開催され、猛暑の練馬が大いに盛り上がりました。今回が最後の開催とのことで、関係者各位は素晴らしい会議を当にどうもありがとうございました。 さて、今年のRubyKaigi2011での各セッションで紹介されたgemのうち、気になったものをピックアップしてみました。 1. fakeweb fakewebは、指定したURLのHTTPレスポンスを偽装する、テスト用のライブラリ。外部サービスと連携するプログラムのテストを書くにはとても便利ですね。 Engine YardのAndy Delcambre氏による「Toggleable Mocks and Testing Strategies in a Service Oriented Architecture」という発表で紹介されました。 以下、サンプルコードです。(READMEより) F

    #RubyKaigi 2011で気になったgem 13選 - 昼メシ物語
  • 私がクックパッドの画像配信野郎です - 昼メシ物語

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

    私がクックパッドの画像配信野郎です - 昼メシ物語
  • 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(){} の違い - 昼メシ物語
  • 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 - 昼メシ物語
  • 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はクソ。ブラウザはマジなんとかしろ」 - 昼メシ物語
    bojovs
    bojovs 2010/05/04
  • 冷蔵庫と壁の隙間に自宅サーバを設置するのはやめましょう - 昼メシ物語

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

    冷蔵庫と壁の隙間に自宅サーバを設置するのはやめましょう - 昼メシ物語
  • 各言語における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まとめ - 昼メシ物語
  • 1