ウェブサービスを作っています。

2009-01-01から1年間の記事一覧

api.rubyonrails.org の NestedAttributes の説明が間違ってる気がする

http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html accepts_nested_attributes_for の :allow_destroy の説明で class Member < ActiveRecord::Base has_many :posts accepts_nested_attributes_for :posts, :allow_dest…

Exception Notifier コンポーネントを公開

例外発生時にメールで知らせる CakePHP のコンポーネント Exception Notifier を作りました。 Rails の Exception Notification みたいなやつです。 まだまだβ版ですが、gist に置いておくので、適当に fork してください。 http://gist.github.com/98770 使…

Zend_Service_Technorati を使ったら結構はまったのでメモ

PHP

PHP やってます。 ところで、テクノラティの API をきれいに扱える Zend_Service_Technorati というライブラリがあります。 使ってみたら確かにきれいに書けたのですが、結構変なことが起こったのでメモ。 基本的には、 search('はてな', array('language' =…

WillPaginate で使う params[:page] に文字列が渡されると例外が発生する

ので、config/initializers/rails_ext.rb などに以下を追加。 module WillPaginate module Finder module ClassMethods def wp_parse_options_with_normalize_page(options) page, per_page, total = wp_parse_options_without_normalize_page(options) page…

PHP でメソッドチェインやイテレータなど

PHP5.3 で遊んでみました。 関数を引数に渡すことができるようになったので、配列ラッパクラスを定義すれば、こんなことができます。 map(function($v) { return $v * 2; })->each(function($v) { echo "{$v}\n"; }); 結果 6 4Ruby なんかと比べればやはり冗…

Paperclip で保存先を動的に指定する

path とか url に proc を渡す。第1引数に Attachment オブジェクトが入ってきます。 has_attached_file(:header_image, :path => proc { |attachment| ":rails_root/public/images/games/#{ attachment.instance.code }/header_image.:extension" }, :url …

ブロック内を表示するヘルパーメソッドの作り方と RSpec によるテストの書き方

こんなの。 <% output_block_with_date do |t| %> 現在の時刻は、<%=h t %> です。 <% end %> ヘルパー。 def output_block_with_date(&blk) concat capture(Time.now, &blk) end concat は、 と同じような意味で、ビューに文字列を出力するメソッドです。 c…

Shoulda は RSpec でも使える

なんかこんなのが動いた。びっくりした。 class Post < ActiveRecord::Base validates_presence_of :title end describe Post do it { should validate_presence_of(:title) } end 便利マクロが使い放題。 やり方は、config/environment.rb に config.gem 'r…

UNIX 勉強中

ディレクトリのリンク数が 2 以上の理由がよくわからない

Application Template

git + rspec + i18n な Application Template を gist に置いた。 最近は log, tmp ディレクトリなどがない場合、自動生成してくれるみたい。 gist: 84433 - GitHub 使い方は、 $ rails アプリ名 -m http://gist.github.com/84433.txt

SSH のパスフレーズを毎回打たなくてもよくする設定

ssh

.zshrc などに記述。 echo -n "ssh-agent: " source ~/.ssh-agent-info ssh-add -l >&/dev/null if [ $? = 2 ] ; then echo -n "ssh-agent: restart...." ssh-agent >~/.ssh-agent-info source ~/.ssh-agent-info fi if ssh-add -l >&/dev/null ; then echo …

validates_fullwidth_length_of プラグインを公開

全角単位で validates_length_of を実行する Rails プラグイン validates_fullwidth_length_of を GitHub で公開しました。 http://github.com/milk1000cc/validates_fullwidth_length_of/tree/master 詳しくは README をご覧いただきたいのですが、いわゆる…

Google カレンダー不調の原因は dolipo だった

追記(2009/03/18 08:10): これだけではまだ「設定」リンクなどが不調でした。 Uncacheable.wiki に書くのではなく、ブラウザなどの「プロキシなしで接続」設定に「.google.com」を追加したところ、大丈夫になったようです。 ここ数日間 Google カレンダーが…

リモートリポジトリの branch を参照する

git

リモートリポジトリのブランチ challenge を参照したいとする。 まず、 $ git branch -r origin/challenge のようになるはず。あとは、 $ git checkout -b huga origin/challenge で、ローカルリポジトリに huga ブランチを作って、このブランチは origin/ch…

mysql.sock の場所を確認する

mysql_config --socket

Zenbe Lists が良すぎる

巷で人気の todo 管理と言えば Remember The Milk ですが、私にとっては機能が多すぎて checkpad から乗り換えられずにいました。 自分に必要な機能は リストを作ることができる タスクを手動で並べ替えることができる PC と iPhone で同期できる くらいで、…

帰国

月曜日に帰ってきました。 アジアの数カ国に行っていたのですが、タイ (バンコク) が一番良かったです。 ぼったくりもあるし、きれいな街とは言い難いかもしれないけど、かなり都会ですし (大戸屋とかある)、屋台もいい感じ、すごく優しい人もいる、英語が割…

一週間ほど旅に出ます

いろいろあって、旅に出ます。(卒業旅行です) 初めての飛行機、初めての海外です。 旅の間はパソコンやインターネットに接触しない可能性が高く、一週間もパソコン使わないとか 10 年以上ぶりで禁断症状が出そうで恐いですね。

なんか大量にデタッチされていた screen セッションを消す

rm /tmp/uscreens/S-milk1000cc/* これが正しいのかは不明

iTerm で 256 色 emacs + screen

mac

追記(2009/03/14 12:31): 元記事に誤りがあったので修正しました。ご迷惑おかけしました。 まずは、256 色 screen をインストール。 wget http://ftp.gnu.org/gnu/screen/screen-4.0.3.tar.gz pty.c 38 行目 # include <sys/stropts.h>のせいで make に失敗するので、この行</sys/stropts.h>…

it_should_behave_like が割と便利

成功時 / 失敗時なんかで振る舞いを分けるけど、その前に共通の処理を書いてる、って場面は結構あります。 たとえば def create @article = Article.new(params[:article]) if @article.save ... else ... end end みたいなやつです。if の前に、共通の処理…

チュートリアルを進める

前回の続きです。このチュートリアルを進めます。 マイグレーションファイルというかモデルができたので、rake db:automigration を実行します。 automigation は、なかなかいい仕組みだと思います。 $ rake db:automigrate (in /Users/milk1000cc/Sites/pri…

Merb をインストール

そろそろ Merb をいじってみようということで、眠いのでインストールと最初の一歩だけやってみました。 こちらを参考に。 $ sudo gem install merb $ sudo gem install merb --development どっちかだけでよかったはず。大量に入ります。 development だと c…

ブログに貼られている Dailymotion 動画の mp4 を簡単にダウンロードするスクリプト

見あたらなかったので、作りました。 Dailymotion 動画が貼られているブログのパーマリンクを渡すと、 javascript:document.write('%3Ca%20href=%22http://www.dailymotion.com/...のような結果が出力されます。 これをコピーして、ブラウザのロケーションバ…

javascript:alert(0.1+0.2)

0.30000000000000004 これに書いてあります。JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティス作者: Douglas Crockford,水野貴明出版社/メーカー: オライリージャパン発売日: 2008/12/22メディア: 大型本購入: 94人 クリック: 1,643回こ…

面倒くさがりやのあなたがうまくいく55の法則

面倒くさがりやのあなたがうまくいく55の法則作者: 本田直之出版社/メーカー: 大和書房発売日: 2009/01/15メディア: 単行本(ソフトカバー)購入: 15人 クリック: 156回この商品を含むブログ (152件) を見る「レバレッジ」がタイトルについていない本田さん…

Safari や Opera でも動く LDR Hatebu Comments を作りました

livedoor Reader で、はてなブックマークのコメントを閲覧できるようにする LDR Hatebu Comments という Greasemonkey スクリプトを作りました。Safari (GreaseKit) や Opera でも動作します。 LDR Hatebu Comments for Greasemonkey "l" キーでアクティブな…

最近読んだ本

読書は1冊のノートにまとめなさい 100円ノートで確実に頭に落とすインストール・リーディング (Nanaブックス)作者: 奥野宣之出版社/メーカー: ナナ・コーポレート・コミュニケーション発売日: 2008/12/05メディア: 単行本購入: 22人 クリック: 1,200回この商…

FasterCSV でヘッダを考慮

あけましておめでとうございます。 csv ファイルでは、しばしば 1 行目をカラム説明行として使う場合があります。 FasterCSV では、これを考慮して出力することができるんですね。 require 'rubygems' require 'fastercsv' data = [ { 'ID' => 1, 'name' => …