なんとなく日記

Everyday studying...

slicehostでRails2.2.2を動かすまで

DreamhostでどうしてもRails2.2.2にできなかったので,カッとなってやってしまったログ. ##slicehostに登録する まあ普通に.いわゆるアレ張っておきます:). [https://manage.slicehost.com/customers/new?referrer=49a030fcbd9a4d672c26bd8e55597026] OS は慣れてる Ubuntu 8.04.1 を. ##Ubuntu 8.04.1 の構築 ###日本語 まずログインしてhttp://de-lab.com/article/slicehost-ubuntu-locale/を参考に. # dpkg-reconfigure tzdata # Asia -> Tokyo # apt-get install language-pack-ja # dpkg-reconfigure locales # update-locale LANG=ja_JP.UTF-8 % exit ###接続まで # apt-get update # apt-get install zsh # useradd -m rust -s /usr/bin/zsh # su - rust $ ssh localhost $ vim .ssh/authorized_keys 公開鍵接続できる状態になったので, # vim /etc/ssh/sshd_config PermitRootLogin no UsePAM no # /etc/init.d/ssh reload ###MySQL

forgot_passwordプラグインを使ってみる

restful_authenticationが入っていて,セットアップも終わっている前提でインストール. % cd /path/to/app % ruby script/plugin install git://github.com/greenisus/forgot_password.git % ruby script/generate forgot_password user % rake db:migrate 次はパスワード忘れ用画面へリンクを張ります. <%= link_to "パスワードを忘れた場合は", "/forgot_password" -%> 今回は application.rb で before_filter :login_required としていたので,app/controller/forgot_passwords_controller.rb で, skip_before_filter :login_required を追加.さらにここを参考に, 51 |# PasswordMailer.deliver_reset_password(@user) 52 | ForgotPasswordMailer.deliver_reset_password(@user) とコメントアウトします.サーバを起動してパスワード忘れリンクをクリックすると, ここにメールアドレスを入力すると こんな感じのメッセージが flash[:notice] で表示されてメールが送られてきます. Date: Sat, 22 Nov 2008 00:50:42 +0900 From: ADMINEMAIL To: rust.stnard@gmail.com Subject: [YOURSITE] You have requested to change your password Mime-Version: 1.

524万人が利用する食のインフラ 「クックパッド」のものづくり セミナー

日本一のRailsでの大規模サイトである「クックパッド」のお話を聞きに,WebCareer主催のセミナーに参加してきました. MacBook Pro 17inch だった. ##クックパッドとは ミッション:毎日の料理を楽しみにすることで,心からの笑顔を増やす 1998年オープン 料理のレシピを 公開する 探す 作者に報告することもできる 写真付きで 45万品のレシピがある 524万人/月 四国の人口よりも多い 月間 2.8 億 PV ###トラフィック 16~18 時がピーク 秋からバレンタインにかけてトラフィックが伸びる ##524万人をささえるサーバ・ネットワーク ###サーバ構成 apache x 8 app x 44 master x 1 log master 1 slave x 13 Apache 2.2.3 / Rails 2.0 / Tritton ###運用 capistrano god nagios munin(モニタリング) FiveRuns Manage(モニタリング) ###パフォーマンス

moduleのスコープについて調べてみた

いろいろ気になったので調査.以下のようなコードを用意. module Parent CONST = 2 end module Parent module Base BASE_CONST = 3 end end module Parent module Base class Child class << self def bar puts BASE_CONST puts CONST end end end end end class Hoge include Parent::Base def fuga puts BASE_CONST puts CONST end end class Huga include Parent def baz puts CONST puts BASE_CONST end end % irb >> foo = Hoge.new => #<Hoge:0x......> >> foo.

OSのキャッシュに貯めてからサーバを起動するのがいいらしい

http://codezine.jp/article/detail/3315?p=2 運用面で大規模データを扱う際に気をつけなければいけないのは、OSを起動した直後、すぐにサーバーを立ち上げないということだ。キャッシュが全く構築されていないので、ディスクにアクセスしに行ってしまいハングアップしてしまう。  次のデータは、OS起動直後に数GBのファイルをリードしたときのもの。最初はメモリがほとんど使われていない(4%)が、18時40分からの10分間でいきなり96%になっている。  このように、ページキャッシュは透過的に作用するので、大きなファイルを一気にリードするだけでキャッシュが溜まってくれる。ノウハウとしては、OSが起動したら、データベースのファイルを全部catして「/dev/null」に投げておくと、メモリにキャッシュが構築される。  性能評価を実地のマシンで行うときにも、キャッシュが最適化されるまで少し時間がかかる。最適化されてない状態でテストしても意味がない。負荷がだんだん落ち着いたところで測定するのがポイントだ。

Ubuntu 8.04 で Thrift を試してみた

##準備 % sudo apt-get install build-essential automake libtool flex bison libboost\* % sudo apt-get install libbit-vector-perl libclass-accessor-perl ##インストール % cd program/thrift % wget -O thrift.tgz "http://gitweb.thrift-rpc.org/?p=thrift.git;a=snapshot;h=HEAD;sf=tgz" % tar zxvf thrift.tgz % cd thrift % ./bootstrap.sh % ./configure --disable-gen-java --without-java --disable-gen-csharp --disable-gen-st --disable-gen-ocaml --disable-gen-cocoa % make % sudo make install % cd lib/perl % perl Makefile.PL % sudo make install % cd ../rb % sudo ruby setup.rb ##サンプル WEB+DB Vol.

iKnow Gem + API サンプル

iKnow Gem を使った簡単なサンプル作ってみた! require 'rubygems' require 'iknow' Iknow::Config.init do |conf| conf.api_key = 'KEY' end user = Iknow::User.find(USERNAME) puts user.profile.description これはお手軽でいいな.

iKnowデッベロッパー・カンファレンスに行ってきた

Ruby on Railsでのサービスということで(?),カンファレンスに行ってきました.iKnowも最近休みがちなので,景気づけの意味も含めて. ##ふぁーすといんぷれっしょん 外人率たけー ビールとかピザとかアメリカっぽい! しかし日本人比率もそこそこある? ##はじめの挨拶とか 3年ぐらい前から B2B -> B2C に変わった. 英語学習だけじゃなくて,日本語,その他の言語へも広げていきたい SNS は学習補助のため CGM的にコンテンツを作れるように目指している ##iKnow API MASHERY を通じて API を提供 Key の発行などの Proxy 的な役割 Next month : New replease Text to Speech 外部サービスを使っている API を使って item を作成できるようになる 非常にシンプルなAPI OpenSearch に対応 日本語 -> 英語 Next repelase OAuth に対応 学習の結果も登録できるようになる 単語の意味だけではなく,セマンティック的にサーチできるようにしたいなぁ(?) Open Social に対応する予定 ###Q&A どうやって金儲けるの? センテンスの中に企業名を入れたり ゲーム内広告のような感じ? 学習という集中するコンテンツなので,広告性が高いのでは 取得するデータにフィルターをかけれないのか 一括取得するときに,そのとき必要じゃないデータが付随してくるのを,何とかしてほしい. Open Search に対応するときに,何件あるかなどの情報を出すようになる 吹き出し(Skypeのあれ)を変更するAPIは? できるようにする サイズ指定で XML とか取りたい ##LT ###iPhone で復習できる App

Ubuntu と autotest と notify で快適テスト生活

まだ Test::Unit なんですが1,http://blog.s21g.com/articles/913を参考に autotest + notify を導入してみました. % sudo su - # gem install ZenTest # apt-get install libnotify-bin # exit % cp /var/lib/gems/1.8/gems/ZenTest-3.11.0/example_dot_autotest.rb ~/.autotest % chmod 644 ~/.autotest 次に .autotest の修正. # -*- ruby -*- # require 'autotest/autoupdate' # require 'autotest/camping' # require 'autotest/cctray' # require 'autotest/emacs' # require 'autotest/email_notify' # require 'autotest/fixtures' # require 'autotest/growl' # require 'autotest/heckle' # require 'autotest/html_report' # require 'autotest/jabber_notify' # require 'autotest/kdenotify' # require 'autotest/menu' # require 'autotest/migrate' require 'autotest/notify' # require 'autotest/once' # require 'autotest/pretty' # require 'autotest/rcov' require 'autotest/redgreen' # require 'autotest/restart' # require 'autotest/screen' # require 'autotest/shame' # require 'autotest/snarl' # require 'autotest/timestamp' # Autotest::AutoUpdate.

MySQL Serverのメモリ使用量の見積り

http://dsas.blog.klab.org/archives/50860867.html 仕事で12台の MySQL サーバの my.cnf を見直す必要があったため,上記リンク先の mymemcheck を使って見積もって見ました.実行環境は Ubuntu 8.04. で,実行しようとすると module 足りないといわれたのでインストール1. > perl -MCPAN -e shell > o conf commit > install CPAN > reload CPAN > install Readonly > install UNIVERSAL::require で,実行してみると,ちょっと欲しい機能があったので Ruby で書き直してみました. mysqlmemcheck 追加したのは,サーバ搭載メモリ容量(–memory=SIZE)とOSが使うメモリ容量(–system=SIZE)です.実際どれぐらい使われるのかと,余裕あるのかどうかなどの見積りに使えるかなと. この方法しか知らないんだけど,他にあるのかな [return]