タグ

ブックマーク / blog.kyanny.me (11)

  • rbenv のメカニズム - @kyanny's blog

    rbenv 環境下で実行された Ruby プログラムの中から他の Ruby プログラムを起動するときに、 rbenv 環境をリセットしたい―要するに別のバージョンの Ruby で外部プログラムを実行したい―という事情があったので rbenv のメカニズムについて調べた。 rbenv 環境下で ruby コマンドを実行するとき、実際にコンパイルされた ruby バイナリが直接実行されているわけではない。 rbenv 環境をお膳立てした上で ruby バイナリを exec するラッパーのシェルスクリプトが実行される。こういうものを binstub と呼ぶ。 binstub である ruby という名前のシェルスクリプトの中身をみてみると、最終的に rbenv exec というサブコマンドを呼び出している。 rbenv のサブコマンドはリポジトリでいうと libexec ディレクトリ以下にある。

    rbenv のメカニズム - @kyanny's blog
    deeeki
    deeeki 2013/05/13
  • Rails と時刻 - @kyanny's blog

    時刻の扱いは難しい。タイムゾーンを跨ぐと格別に難しい。 Rails を使っていても難しさに変わりはない。むしろ時刻のやっかいな部分を隠蔽してくれるが故に余計にややこしくなることもある。 config.time_zone と config.active_record.default_timezone Rails アプリケーションで時刻を司る代表的な設定値は config.time_zone と config.active_record.default_timezone だ。いずれも config/application.rb で設定できる。詳細は Ruby on Rails Guides: Configuring Rails Applications 参照。 config.time_zone でアプリケーションのタイムゾーンを設定する。デフォルトでは UTC になる。日向けのウェブサイトで

    Rails と時刻 - @kyanny's blog
    deeeki
    deeeki 2012/08/16
  • 「RSpec は英語として読みやすいから良い」というお題目はなんだったのか - @kyanny's blog

    rspec-2.11 がリリースされましたね。いくつかの変更点の中に、今後は should ではなく expect を推奨し、デフォルトでは expect のみが有効化されるようになる、というものがありました。 http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax 個人的にこの変更は説得力に欠けるなーと思っていて、 expect 推しにする理由が should は Kernel にはえるので Kernel を include しない BasicObject のインスタンスに対して should を呼ぶとおかしくなる 標準ライブラリ delegate は Kernel のメソッドの一部だけを include するので rspec と delegate のどちらが先にロードされるかによって should の挙動

    「RSpec は英語として読みやすいから良い」というお題目はなんだったのか - @kyanny's blog
  • bundle のなかで bundle する - @kyanny's blog

    Bundler.with_clean_env と bundle install --gemfile について追記しました bundle exec した環境下でさらに bundle exec したいことがある。 bundle exec rake resque:work で起動した Resque ワーカーのなかで system("bundle exec rake spec") のような外部コマンドを呼び出すとか。ありますよね。ぼくは最近ありました。そしてハマった (そしてググりづらかった) のでこれ以上犠牲者を増やさないためにブログに書く。 bundler は実行時にいくつかの環境変数を定義するが、この場合問題になるのは BUNDLE_GEMFILE と GEM_HOME だ。 BUNDLE_GEMFILE は bundler が参照する Gemfile のパスで、 GEM_HOME は ge

    bundle のなかで bundle する - @kyanny's blog
    deeeki
    deeeki 2012/05/07
  • highscalability.com の Tumblr のアーキテクチャについての記事を読んだ - @kyanny's blog

    High Scalability - High Scalability - Tumblr Architecture - 15 Billion Page Views a Month and Harder to Scale than Twitter を読んだ。すごく面白かった。 Kindle で引用したところを中心にメモ。 Tumblr のソーシャルグラフの特徴 The graph for Tumblr users has hundreds of followers. This is different than any other social network and is what makes Tumblr so challenging to scale. Tumblr だと follower が数百人いるユーザーはザラにいる。 follower の多いユーザーの post は多くのユーザ

    highscalability.com の Tumblr のアーキテクチャについての記事を読んだ - @kyanny's blog
  • おれがはてなブログPro初日に1年コースを契約した理由 - @kyanny's blog

    http://b.hatena.ne.jp/entry/staff.hatenablog.com/entry/2012/02/13/172342 はてなブログProに対して「高い」とか「競合に比べて機能が少なすぎる」とか「腕に覚えがあるエンジニアならさくらのVPSで全部自力で作れてしまう」とか、肯定的ではないコメントが散見されるので、初日にProにした俺ががなぜ1年分8200円を払う気になったのか書いてみる。 高い? 当に?他が不当に安すぎるのでは?これは正直いって職業柄ふつうの人に比べて金銭感覚が狂ってる自覚はある。けどあえて書くと、ウェブサービスの価格は安すぎる。BtoCなウェブサービス運営の仕事に就いたことがある人ならば同意してもらえると思う。フリーミアムとか無理だから。はてなブログはリリース当初から記事下にアドセンスをでかでかと貼っていて評判が悪かったけど、広告モデルは規模が全て

    おれがはてなブログPro初日に1年コースを契約した理由 - @kyanny's blog
  • ■ - @kyanny's blog

    日記。なんか心がギスるなぁ・・・ 自分が憧れるような情熱があり意識が高く能力のあるひととお近づきになりたい、そういうひとと接していろいろなことを学んだり盗んだりしたいと思うと同時に、そうではないひととは付き合うのはほどほどにしておきたいという非常に何様だよお前という感じの感情が芽生えていることを自覚して嫌悪感に陥ったのちに、立場を変えてみれば自分が憧れるようなひとたちからみて自分自身が「ほどほどにしておきたいひと」に過ぎないのだという事実に思い当たってしまいだいぶ悲惨な状態に・・・ 100% 自分のせいだけどこれはけっこうダメージがあった。 こういうむき出しの醜いものをさらけ出すのは正直どうかと自分でも思う。これがセルフブランディングのためのブログだったなら絶対書かないほうがいいだろう。けどこれはまず第一に日記で、一番の読者は自分自身なのだから、自分のために書くべきだ。それは二つの意味が重

    ■ - @kyanny's blog
    deeeki
    deeeki 2011/11/05
    《立場を変えてみれば自分が憧れるようなひとたちからみて自分自身が「ほどほどにしておきたいひと」に過ぎないのだという事実》
  • Log::Minimal インスパイアなロガーのラッパー - @kyanny's blog

    弊社は椅子の飛ばない穏やかな社風ですが、ログは重要ですね。しかし logger.info とか何度もタイプするのはめんどいし、時刻とか(超大事!)どこで呼ばれたとか(大事!)を真面目に入れるとロガ―呼び出しが長くなって嫌ですね。なので Log::Minimal っぽく infof とか書けるようにした。 https://gist.github.com/1109108 module Log module Minimal [:fatal, :error, :warn, :info, :debug].each do |method| define_method "#{method}f" do |message| time = Time.now.iso8601 level = method.to_s.upcase caller = "%s#%s:%s" % [self.class, action_

    Log::Minimal インスパイアなロガーのラッパー - @kyanny's blog
  • 大江戸Ruby会議01に行ってきた - @kyanny's blog

    大江戸Ruby会議01 - Regional RubyKaigiに行ってきた。 Asakusa.rb の皆様、発表者の皆様、ありがとうございました。とても楽しかった。以下、例によって感想をつらつらと。 100.times { Asakusa.rb.meetup! }, @a_matsuda コミュニティとは、みたいな話が聞けたのがよかった。自分が勉強してスキルアップしたい、ではなくて、 RubyRuby を取り巻くもの(もちろん人も)に関心があるひとたちの集まり、という。 Asakusa.rb のような「コミュニティ」にはもともと憧れがあって、いいなーでも家からも職場からも遠いし・・・とか思っていたんだけど、一度行ってみたいと思ったし、それ以上に「じゃあ自分が近場で仲間を集めて何かすればいい」と強く思った。で、懇親会や帰り道で @mori_dev さんと @1syo さんにそれぞれ別

    大江戸Ruby会議01に行ってきた - @kyanny's blog
  • gem ソムリエになる方法 - @kyanny's blog

    http://d.hatena.ne.jp/tokuhirom/20080520/1211292598の Ruby 版があるといいなと思ったので、自分で書いてみます。「もっといいやり方があるよ」という方からのフィードバックをお待ちしています。 ruby-toolbox.com をみる 僕の知る限り、 rubygems には search.cpan.org のような配布されているパッケージを Web 上で閲覧できるインターフェースがありません。 CPAN Ratings や CPAN Testers に相当するサイトもありません。 rubygems.org 上でパッケージを閲覧・検索できるとコメントをいただきました。また、 CPAN モジュールに比較してパッケージの名前を自由につける気風があるようなので (例: Web::Scraper vs scrAPI, Nokogiri, earthq

    gem ソムリエになる方法 - @kyanny's blog
    deeeki
    deeeki 2011/03/31
  • MySQLのインデックスを学ぶ (1) - 刺身☆ブーメランのはてなダイアリー

    実践ハイパフォーマンスMySQL 第2版とLinux-DBシステム構築運用入門を読んで、 MySQL のインデックスについて勉強しなおしている。理解が曖昧だった部分の知識を深められたり、自分の間違いに気づけたりして、とても収穫が多い。 フルテーブルスキャンとフルインデックススキャン Linux-DBシステム構築運用入門 P185 に書いてあるケース。インデックスを利用してても対象レコード数が多いとランダムI/Oが大量に発生して遅くなる。読むべきレコード数が多いのならばフルテーブルスキャンのほうがI/O一回で多くのブロックを読み込めるので速い。 IGNORE INDEX ヒントを与えてパフォーマンスを改善するという例があった。 マルチカラムインデックスと範囲検索 SELECT * FROM users WHERE a = ? AND b >= ? and (c IS NULL OR c >=

    MySQLのインデックスを学ぶ (1) - 刺身☆ブーメランのはてなダイアリー
    deeeki
    deeeki 2010/09/23
  • 1