なんとなく日記

Everyday studying...

Debian 5.0.1(lenny) で Xen をセットアップするまで

最初から Domain-U を作成するまで.ほぼ下記参考のままです. 参考 : http://d.hatena.ne.jp/fujisan3776/20090309/1236576002 ##lenny のインストール 要点は標準システムのみにすることです.あとは普通にインストールします.今回は amd64 だったので,64bit install です. ##Domain-0 のセットアップ 足りない部分を install していきます. $ su - # apt-get install sudo openssh-server # visudo # sudo の設定 # vim /etc/group # group に sudo した場合の編集 # vim /etc/ssh/sshd_config # sshd の設定(root とか) # vim /etc/network/interfaces # DHCP でセットアップした場合の変更など # /etc/init.d/networking restart # /etc/init.d/ssh restart 次に Xen Kernel のインストールなど $ sudo apt-get install xen-linux-system-2.6.26-2-xen-amd64 \ xen-tools linux-headers-2.

Capistrano でサーバをセットアップする

例えば新しく作成したサーバに database.yml とか設置しておきたい場合には自分でコピーする必要があったんですが,capistrano 使えば,deploy:setup のときに自動的に配置してくれるようにできます. set :initial_config_files, %w(database.yml thin.yml environment.rb environments/production.rb) after "deploy:setup", :role => [:app] do try_sudo "chmod -R g+w #{deploy_to}" try_sudo "chgrp -R wheel #{deploy_to}" try_sudo "mkdir -p #{shared_path/config/environments" initial_config_files.each do |file| upload("config/shared/config/#{file}", "#{shared_path}/config/#{file}" end end さらにデプロイ時にその設定ファイルをコピーしたい時には下記のように. set :config_files, %w(database.yml environment.rb environments/production.rb) after "deploy:update_code", :role => [:app] do config_files.each do |file| try_sudo "cp #{shared_path/config/#{file} #{release_path}/config/#{file}" end end

Google Developers Day 2009に行ってきた

基調講演は飛ばして午後から参加.android携帯もらえました.これが目的と言っても過言ではない. ##App Engine Fred Sauer @fredsa いかに scale out するかということについて,データベース的な話 list properties storage overhead を回避するために使う(?) CPU を使う -> serializing/desirializing order はプロパティが1つだけの時に使える ex) Microblogging 要するに twitter Fan-out 投稿が他の人の timeline に現れるってことか? RDBMS なら JOIN する Google App Engine なら list properties を使う Bigtable で分散されている linear に scale するらしい 5000 indexed properties per entity ストレージ的にはRDBMSと同程度 それで scale するならすごいな CPU cost 削減のために(serialization) 一般的な RDBMS のように,本文などのデータと,replatinship のみのインデックスデータに分割する MessageIndex から KEY のみを取得して,k.

集合知勉強会@万葉

レコメンデーションエンジンを作る会 どうしようか考えながらの進行.ライブ感たっぷり! 今回は中華屋ではなかった.チャーハン・・・・ しかし2杯目以降のビールはうまかった. ##jugyo さんによる軽い説明 背景 Cicindela の導入が面倒だったので,もっと手軽なものを Ruby で作りたいと思って 構想 Cicindela と似たような作りにする livedoor がオープンソースで公開している 簡単にインストール・運用も簡単に Cicindela アプリケーションでリコメンデーションしたいときに,サーバを立てればいいような感じ. サーバとは HTTP 通信でデータを送ればいいらしい. 「突き詰めると,こちらが買わせたいものを見せることがレコメンデーションエンジンになる」という話も ##計画とか とりあえずアプリケーションから呼び出して,リアルタイムで計算して,結果を返す 性能はあまり考えない. あとで考える. ##協調フィルタリングの協議 「あとで行く」というサービスを元に考えると,「ユーザ」と「場所」で考える. 好きな食べ物リストで 食べ物は カレー 中華 焼き肉 いくら ホットドック スパゲッティ 獅子唐辛子 メロン - ピアソン相関はできたっぽい. - あとで gist に上げる. 飲み物で 相関から一番近い人を探して,抜けている部分をピックアップすれば,それがレコメンドになる. ##まとめ

Tokyu.rb#8に行ってきた,が・・・・

あまり Ruby の話してませんでした!むしろ某御大とかクリドラとか時代劇とかで熱く語って,カラオケでいろいろ熱唱してた記憶しかない.これはこれでいいのか.いや,いいのだ. と言うわけで,次は SICP 原書読書会の開催.ただしメンバーは決まっているので募集かけたりはしません.と言うか読書会ってそういうもんじゃないのかなと思ってたりもします. 場所は,大田区のどこか or [id:littlestarling] さんのとこ or 某万葉 かなと思ってます. 初回は 6⁄13(土) か 6⁄14(日) の予定.Google Group とか作っとこうかな. さて,今日中に原書買わないと....

オレオレDebian サーバをセットアップする#6

##目的と参考と過去ログ http://d.hatena.ne.jp/conceal-rs/20090514/1242295818 http://d.hatena.ne.jp/conceal-rs/20090518/1242617005 http://d.hatena.ne.jp/conceal-rs/20090518/1242643016 http://d.hatena.ne.jp/conceal-rs/20090519/1242699858 http://d.hatena.ne.jp/conceal-rs/20090519/1242706919 http://d.hatena.ne.jp/conceal-rs/20090525/1243243424 ##Gem のパッケージを作る Rails 自体は REE に入っているので,その他の Gem パッケージを作ります.ファイルを設置するだけでいい場合は前に紹介した方法でいいのですが,build するようなものは作れません. なので checkinstall を使います. ###checkinstall のインストール $ sudo apt-get install checkinstall ###RMagick のパッケージ作成 まずは ImageMagick が必要なので,equivs の Depends に追加します. 次に checkinstall を使って RMagick の deb パッケージを作ります. $ mkdir ~/source/gems $ cd ~/source/gems $ wget http://rubyforge.org/frs/download.php/56818/rmagick-2.9.2.gem $ sudo checkinstall -D /opt/ruby-enterprise/bin/gem install rmagick-2.9.2.gem ...snip... $ ls *.deb rmagick_2.9.2-1_i386.deb いろいろ聞かれますが,適宜入力. ###CD の作成 できあがった deb パッケージを所定のディレクトリに入れて,appserver.

オレオレDebian サーバをセットアップする#5

##目的と参考 http://d.hatena.ne.jp/conceal-rs/20090514/1242295818 http://d.hatena.ne.jp/conceal-rs/20090518/1242617005 http://d.hatena.ne.jp/conceal-rs/20090518/1242643016 http://d.hatena.ne.jp/conceal-rs/20090519/1242699858 http://d.hatena.ne.jp/conceal-rs/20090519/1242706919 ##ディスクのパーティショニング ここを参考に調整.例えばこのように設定すると, /boot に 50MB ~ 最大 100MB /home に 100MB ~ 最大 5GB /opt に 500MB ~ 空き全てまで拡大 / に 200MB ~ 最大 50GB swap に 64MB ~ 最大 8GB のように割り当てできる.ディスク容量に応じて目一杯使ってくれます. ##ネットワークの設定 debconf/priority を ciritical にするとホスト名指定のダイアログが出てこないので,例えば下記のように指定する. debconf debconf/priority select high d-i netcfg/get_hostname string sbox d-i netcfg/get_hostname seen false d-i netcfg/get_domain string stnard.jp ##アカウントの追加設定 sudo をデフォルトで設定しておきたいので,ファイルツリーからのパッケージを作成してインストールするようにします. $ mkdir -p default-sudoers/etc $ mkdir default-sudoers/DEBIAN $ vim default-sudoers/DEBIAN/{postinst,prerm,control,compat} $ vim default-sudoers/etc/sudoers $ sudo -R chown root.

Git勉強会#3@万葉

今日は n-iwamatu さんが講師でコンフリクト大会! ##あなたとコンフリクトしたい チーム分けしてコンフリクト合戦 ###チーム分け Red Blue Green green0 ですた. Pink ###コンフリクト合戦開始 コンフリクトしまくり.そしてバージョン管理できていない 各々が別個に conflict をマージしまくってるのが原因 どうすれば? 管理者を立てる 中央にリポジトリを立てる こちらでやっていく. 誰かが中央リポジトリを変更していたため,全員 push 失敗! push -f で強制的にできるが,やってはいけない! 途中のコミットを変更できるが,それを中央リポジトリでやると,pull できない状況になってしまう. rebase と pull と merge の違い 自分のコミットがあって, origin/master に新たなコミットがある場合は, git rebase は,リモートリポジトリ等を基準に,自分のコミットを再構成(re-base)する. git merge は,自分のコミットに,リモートリポジトリのコミットを上乗せする感じ. git pull は原則 merge ベース.ゆとり.–rebase オプションで,rebase する pull になる. pull 禁止!相手の修正のことを考えて,rebase することを心がける 順番が違う.どちらを基準とするかによって,使い分ける. 自分のコミットがないときは, pull で持ってくれば,新しいコミットを,単に持ってくるだけでいいはず. 間違えて pull した場合でも,git rebase すると,rebase した状態にしてくれる. rebase 最強. 中央リポジトリに近いほどマージがOKになる. 取り込む方が merge する感じ. 親がメインになので,親を基本と考えて rebase する. 相手を考えて行動することが重要というか,ちゃんと管理ポリシーを立ててやりましょうねと言うこと.

オレオレDebian サーバをセットアップする#3

##目的と参考 http://d.hatena.ne.jp/conceal-rs/20090514/1242295818 http://d.hatena.ne.jp/conceal-rs/20090518/1242617005 http://d.hatena.ne.jp/conceal-rs/20090518/1242643016 ##もう一度 Simple-CDD を使ってみる実験 とりあえず再実行 ###preseed.cfgの編集 長いので省略.こんな感じ. ###CDの作成のテスト $ mkdir ~/work/my-simple-cdd $ cd ~/work/my-simple-ccd $ build-simple-cdd ###追加パッケージ これだけでは普通のインストールとあまり大差ないので,初期インストールするパッケージを追加してみます. $ cd ~/work/my-simple-ccd $ mkdir profiles $ cp ~/work/preseed.cfg profiles/mylenny.preseed $ for p in openssh-server build-essential postfix sudo; do echo $p >> profiles/mylenny.packages; done ###CDの作成のテスト この状態でCDを作成してみます. $ build-simple-cdd --profiles mylenny 設定した preseed どおりに進むことを確認. ###ローカルパッケージをダウンロード 次は Ruby Enterprise Edition は Ubuntu 用のパッケージ1を使います. 他にも追加したいところですが,実験なのでこれだけに. $ cd ~/source $ wget http://rubyforge.

オレオレDebian サーバをセットアップする#4

##目的と参考 http://d.hatena.ne.jp/conceal-rs/20090514/1242295818 http://d.hatena.ne.jp/conceal-rs/20090518/1242617005 http://d.hatena.ne.jp/conceal-rs/20090518/1242643016 http://d.hatena.ne.jp/conceal-rs/20090519/1242699858 ##MySQL 5.1.34 をどうするか. とりあえず,http://www.dotdeb.org/ から持ってきて実行. ###equivsを使ったメタパッケージの作成. MySQL 5.1.34 のテストをしたいので,データベースサーバのセットアップ用メタパッケージを作ってみます. $ equivs-control dbserver-setup $ vim dbserver-setup $ equivs-build dbserver-setup 内容はこんな感じ. ###MySQL 5.1.34 のダウンロード. ここを mirror します. $ wget -m -np http://download.softagency.net/debian/dotdeb/dists/lenny/mysql-dfsg-5.1/ $ cp download.softagency.net/debian/dotdeb/dists/lenny/mysql-dfsg-5.1/binary-i386/* ~/source/debs ###CDの作成. $ cd ~/my-simple-cdd $ cp profiles/mylenny.packages profiles/dbserver.packages $ echo "dbserver-setup" >> profiles/dbserver.packages $ cp profiles/mylenny.preseed profiles/dbserver.preseed $ build-simple-cdd --profiles dbserver --local-packages "/home/ogawa/source/debs/" できあがった CD で,MySQL 5.