先のエントリに引続き、コツコツとGitについて勉強します。

Git CheatSheet
http://zrusin.blogspot.com/2007/09/git-cheat-sheet.html

Git@Google Techtalk
追記:資料を見ながらだとさらにわかりやすいです。ここで取り上げました。

by Randal Schwartz(Perlの人?)
http://video.google.com/videoplay?docid=-1019966410726538802&ei=bz8XSOj2A5G8qgO79_3SBg&hl=en

長いのですが、20分くらいからがGitについての知らないことが多く紹介されていて面白かったです。40分すぎると頭がグルグルまわって来ましたが...先のエントリと合わせて何かつかめてきた感じ。スライドが公開されていないのが残念。

  • SHA1はシャーワン
  • 1ファイル=blobになっていてSHA1を持つ(あってるかしら?)
  • gitの後のハイフンは省略できる
    git-commit option1 = git commit option1

More Links

良さげなのですが、まだちゃんとチェックしていないページたち。

posted by Png satoko on Wed 30 Apr 2008 at 02:30 with 1 comment

http://blog.searchyc.com/
YCombinatorの検索機能としてSolrを採用したというお話です。
割と向こうではポピュラーみたいですが、日本語検索もOKなのかしらん...


最初はFerret(acts_as_ferret)を使ってみたらしいのですが、DRbを使ったproduction環境であまりにも不安定だったらしく、とん挫。
で、最近Solrを使って検索機能を再構築。構成的には、Solr:裏でJVM上で動かす、Rails2.0でUI(以前のを使いまわし??)のようです。

Solrを使っているサービス一覧

http://wiki.apache.org/solr/PublicServersより抜粋
すごくたくさんあるのですが、diggでも使っているのでデータの量が多くても使えるということでしょうか。 私的にはRailsで検索機能ときたらacts_as_searchableだっただけにカルチャーショックでした。

posted by Png satoko on Sun 27 Apr 2008 at 02:57

みんな長文なので訳せないのと、まだGit使ってないのでよくわかりませんが、ヒントがいっぱいぽぃURLを一覧にまとめました。

http://gems.github.com/
gemをgithubからインストールできるようになります。

http://b.lesseverything.com/2008/3/25/got-git-howto-git-and-github
Steven的Gitの使い方:オレはこう使ってるよ、まだ全部わかってるわけじゃないけど)

http://www.kernel.org/pub/software/scm/git/docs/everyday.html
日常使うGitコマンドの使い方例がいっぱい

http://railscasts.com/episodes/96
.gitignoreファイルを学んだ

posted by Png satoko on Sun 27 Apr 2008 at 02:24

面白いと思ったので、抜粋して翻訳です。
原文長いですが、面白いのでぜひtryしてみてください。

http://crave.cnet.com/8301-1_105-9923315-1.html
(Credit: Daniel Terdiman/CNET News.com)

IKEAの製品をたくさん組み立ててきたライターがIKEAの製品開発者June DeboehmlerさんとPRのMarty Marstonさんに話を聞く。

製品はまず値段から

「製品について決めるときは、まずは値段について考える。」と、Deboehmlerさん。「それから、消費者は何を必要としているかを考える。」

"When we decide about a product, we always start with the price," Deboehmler said. "Then, what is the consumer need?"

もったいない:製品編

「数えきれないトライアルの後に、やっとこれで完成だというところに行きつく。」 「デザイナーが四つん這いの状態で、"OK, これが製品だ"と言ってくる。それから(IKEA HQがある)スウェーデンに戻り、またパーツに分解するんだ。アーム部分の角度を変えればパッケージにより適するよりよい製品にできないかを決めるためだよ。」

"After many, many days of trials, we thought we had it right," Deboehmler said. "'OK, this is the product.' Our designer was on his hands and knees. Then we got it back to (Ikea headquarters in) Sweden and started taking it apart again, and decided we can make it better because we can fit more in the package if we changed the arm direction."

「紙の上では最適に見えるんだけど、でも実際手に取ると"あ、ここをこういう風に回転すると、このアーム部は7じゃなくて10取れるわ"ってわかるのよ」と、Marstonさん。

"When you see something on paper, it looks great," Marston said. "But it's not until you touch it that you say, 'Aha, if you turn it this way, we could get 10 arms out of this length of wood instead of 7."

結局Lillbergチェアはコンセプトから出荷まで10か月かかった。

The Lillberg chair took the design team about 10 months from concept to completion, including manufacturing time and global shipments.

製品の名前はスウェーデンの町から

Deboehmlerさん曰く、チェアからソファまで多くはスウェーデンの町の名前にちなんでいるということです。「スウェーデンをドライブして回っていると、突然、この町の名前、あのソファよってことになるんです」

Deboehmler said many, including the company's chair and sofa products, are named after Swedish towns. "So when you're driving around in Sweden," she laughed, "you suddenly see this town name that's a sofa."

もったいない:倉庫編

「パレット(荷台)サイズは(たった)二つしかないのよ」と、Marstonさん。

"We have (only) two pallet sizes," Marston said,

「これらの工場内は暗いまま、ロボットはライトを必要としないし、それに1日に24時間働いてくれる:製品をピックアップしたり、移動したり。」

These factories, Marston said, are dark, since no lighting is needed for the robots, and run 24 hours a day, picking and moving goods around.

Refs

dovetail joint
http://en.wikipedia.org/wiki/Dovetail_joint

posted by Png satoko on Thu 24 Apr 2008 at 13:22

script/generate mailerでgenerateされるテストコードの@expectedはTMailのインスタンスらしく、生すぎなことがあります。
というわけで、お手軽にテストする方法をぐぐりました。

via http://sablog.com/archives/2006/03/14/how-to-test-actionmailer-in-ruby-on-rails

   1  class SampleMailerTest < ActionMailer::TestCase
   2    tests SampleMailer
   3  
   4    def setup
   5      # テスト時に配送したメールの配列を保存する。
   6      ActionMailer::Base.deliveries = []
   7    end
   8  
   9    def test_welcome
  10      to = "satoko@s21g.com"
  11      sender = to
  12      sender_name = "satoko"
  13  
  14      SampleMailer.deliver_welcome(to, sender, sender_name)
  15      assert !ActionMailer::Base.deliveries.empty?
  16  
  17      sent = ActionMailer::Base.deliveries.first
  18      assert_equal [to], sent.to
  19      assert_equal "expected title", sent.subject
  20      assert sent.body =~ /^Recommended by #{sender_name}. Enjoy!$/
  21    end
  22  end

Refs

http://wota.jp/ac/?date=20050731

posted by Png satoko on Tue 22 Apr 2008 at 16:34

近々使うかもしれないので。

http://www.amazon.com/gp/browse.html?node=201590011

用語

  • Amazon Elastic Compute Cloud (Amazon EC2)
  • Amazon Machine Image (AMI)
  • Amazon S3 (Amazon Simple Storage Service)

まずはGettingStartedから

http://docs.amazonwebservices.com/AWSEC2/2008-02-01/GettingStartedGuide/
(注)下記は2006年10月12日時点での記事ですが、内容がGettingStartedと今も大体同じ感じです(コマンドもそのままぽい)。
ここギコ!さん乙!
http://kokogiko.net/m/archives/001772.html

必要なもの

  • SSHクライアント
  • JRE:version 5

何ができるのか

defaltで用意されているイメージに自由にツールインストールできる。
ただし、インスタンスを止めてしまうと加えた変更は全て破棄されてしまう。加えた変更も併せ再現可能な状況にしようと思えば、現在のインスタンスの状況をイメージ化して登録すればよい。

Refs

疑問

AMIインスタンスの再起動とOSの再起動って違うんだろうか。後で調べる。

Amazon EC2を人に勧めると必ず言われるのが、「インスタンスを再起動したらディスクが消えるのが怖い」。

これは「インスタンス」を再起動であって、OSを再起動してもディスクは消えないのだが、確かに起動に必要なファイルを消してしまって、OSが起動できなくなってしまうと、確かに取り出せなくなってしまいます。
http://blog.masuidrive.jp/index.php/2008/04/14/ec2-ersistent-storage/

posted by Png satoko on Tue 22 Apr 2008 at 07:46 with 3 comments

ここのレビューがためになりました。ので抜粋。
http://highscalability.com/google-appengine-second-look

Developer Forum抜粋訳

  • データベースのエクスポート機能はなし。自前で用意する必要あり。
  • limitに気をつけろ
    • 1MB upload limit
    • 1000 database return limit
    • Google limits your CPU usage
  • フルテキスト検索はサポート対象外
  • SessionはGoogleのを使え:djangoのauth, sessionは使えない
  • 遅い:It takes GAE almost 3 seconds to save 50 of dummy records (consisting of just 2 text fields).

以下、自分用メモ。

GAEでの注意

  • MySQLとBigTableは全然違う観点で作られている
    ちょっとのデータをめっちゃくちゃ早くするというものがゴールでなくて、多くのデータを処理し、分散させるというゴールにもとづいてデザインされている。
  • web appの開発ノウハウは全然役に立たない(Sessionがないとか、JOINがないとかが大きい理由?)
  • AWSのノウハウはGAEでは全然役に立たない(GAEはvm。モデルが違う)

早くするコツみたいなもの:遅いのは使い方が良くないから

例えばavg()、データをInsertする時に計算しておいて、表示するだけのほうがよい。
MYSQLだとアクセスがあったときにJOINして計算するのが普通だろうが、GAEではデータは分散されて保存されるので(+JOINがない)、そのたび計算するのだと遅くなる。
Insert時に計算はすべて終わらせて、あとはSelectだけということか。

Refs

http://hiroshiykw.blogspot.com/2008/04/google-app-engine_10.html

posted by Png satoko on Tue 22 Apr 2008 at 06:50

なんだそうです。瀧内さんいわく。
Debianで普通に入れると1.4.4.4が入るのでコマンドがなかったりして困るらしいです。

短かくてすみません。またインストール成功したらレポートします^^

追記:ついでにRailsのgitリポジトリ。
http://github.com/rails/rails/tree/master

posted by Png satoko on Mon 21 Apr 2008 at 15:02

Gitを使いたいのだけど、まだインストールしてませんw
なので予習を兼ねてBest Practicesを訳。間違っているかもしれないので、ご了承ください。

http://www.tpope.net/rails-git-best-practices

名前とメールアドレスを設定しよう

   1  $ git config --global user.name "Tim Pope"
   2  $ git config --global user.email "foo@gmail.com"

ついでにカラーリングコマンドも

   1  $ git config --global color.diff auto
   2  $ git config --global color.status auto
   3  $ git config --global color.branch auto
   4  $ git config --global color.interactive auto

コミットメッセージについてのベストプラクティス。実践したほうが、ログも見やすい。下記にコミットメッセージの良いお手本を挙げる。

   1  変更についての短いサマリ(50文字以内)
   2  
   3  必要であれば詳細を書く。それでも72文字くらいで。また環境によっては、1行目emailの件名、残りはbodyになることもある。サマリとbodyを分ける空白行は必須(bodyを省力する場合は、なくてもOK); ただしrebaseのようなツールを一緒に使うとうまくいかないことがある
   4  
   5  パラグラフは空白行の後に続けること。
   6  
   7   - Bullet pointsもOK
   8   
   9   - 一般的に、シングルスペースに続くハイフンやアスタリスクはbulletに使われ、それぞれのは空白行で区切られる。しかし、この辺はしきたりが異なることもあるので注意(訳間違ってるカモです)
  10  
  11   - 手動のインデント

Rails coreに自分のコードをコミットするなら、さらに付け足し。差し当たり、URL決めて、そこに自分の投稿を公開するか、又は、下記のコマンド群を発行しfileを取得しよう。そうすることにより、gitのam(ローカルの自分の変更履歴の再構築)コマンドで誰でも簡単に適用できる(訳間違ってるカモです)。

   1  $ git checkout my_funky_branch
   2  $ git rebase origin/master
   3  $ git format-patch --stdout origin/master.. > my_funky_patches

さらに、最新にしておくためのtip: 最新の変更をダウンロードするなら、git pullの代わりに、git pull --rebaseを使ってみよう。マージコミットで、履歴をクラスタ化するよりは、先のコマンドによって自分の変更を最新のものに再適用してくれるのだ。1点注意することとしては、もし変更を他のリポジトリにpublishしたら、このコマンドは使わないこと。既にオリジナルコミットを取得した誰かにところで問題が起こるかもしれない。

posted by Png satoko on Sun 20 Apr 2008 at 16:15

結論:svn/dav, svn/dbの権限変更が必要

下記の二つのDIRにapacheを動かしているユーザにオーナー権限を与えます
/usr/local/svn/dav #activity databaseというものらしい
/usr/local/svn/db #transactionログなどか

   1  # chown www-data:www-data -R /usr/local/svn/db
   2  # chown www-data:www-data -R /usr/local/svn/dav

エラーの内容など

   1  $svn ci -m "test"  
   2  svn: Commit failed (details follow):  
   3  svn: Can't create directory   '/usr/local/svn/db/transactions/1128-1.txn': Permission denied  

→ chown www-data:www-data -R /usr/local/svn/db

   1  $svn ci -m "test"
   2  svn: Commit failed (details follow):
   3  svn: Can't open activity db: APR does not understand this error code

→ chown www-data:www-data -R /usr/local/svn/dav

Refs

http://svn.haxx.se/users/archive-2005-10/0084.shtml
http://svn.haxx.se/users/archive-2004-02/1350.shtml

posted by Png satoko on Thu 17 Apr 2008 at 15:58
Contents
GitについてのビデオとCheatSheet
USサービスの検索機能トレンドはSolr?
Gitに関するリンク集
IKEA製品解剖学:翻訳
お手軽なActionMailerのテスト方法
Amazon EC2についての予習
Google AppEngineについての抜粋メモ
DebianでのGitお勧め:1.5.5をソースから入れる
tpope.netさんのRails with Gitのためのベストプラクティス
Apacheで動いているSVNへコミットエラー:Permission denied、Can't open activity db
Comments
KingofSmack: Here also good reads for this mobile applicatio... '14-5
satoko: stackoverflowでも同じエラーを挙げている人がいたので、1.3でアップロードしたよっ... '10-12
ujihisa: :%s/blog/glob/g '10-7
satoko: しゅが〜様 返事が遅くなって申し訳ありません。また、投稿百景ご購入ありがとうございます。 ... '09-10
しゅが~: こんにちは。投稿百景を発売日翌日から利用しています。本当にいいAppを作っていただきました。罫... '09-10
Services from s21g
twpro(ツイプロ)
Twitterプロフィールを快適検索
地価2009
土地の値段を調べてみよう
MyRestaurant
自分だけのレストラン手帳
Formula
ブログに数式を埋め込める数式コミュニティ