award on railsで審査員賞をいただきました。
去年に引き続き受賞しました。ありがとうございます。
http://rails.drecom.jp/award2007
が、作者の名前が違ってるwww
知らない間にMySQL5.1がRCになってた
で、日本語マニュアルもあるみたいですね。
http://dev.mysql.com/doc/refman/5.1/ja/index.html
で、この5.1で一番気になるのClusterあたりを見てみると
MySQLクラスタディスクデータ:5.1.6以前のMySQLバージョンでは、NDBClusterストレージエンジンは必ずメモリ内に保存されていましたが、MySQL 5.1.6からはディスク上のクラスタデータ(ただし、インデックスではない)に保存されることが可能になりました。このことで、MySQLクラスタは以前よりも少ないハードウェア(RAM)で拡大できるようになりました。項14.11. 「MySQL Cluster ディスク データ ストレージ」 を参照してください。
ディスク上のクラスタデータ(ただし、インデックスではない)に保存されることが可能になりました。
う〜ん。なんでインデックスはだめなんだろう・・・
「Appty::GroupMail」というWEBサービスをリリースしました
去年に引き続き、Award on Railsに参加しました。
1週間ほどで実装したのですが、やりたいことの半分も実装できなかったのが残念。
というわけで、どんなアプリか説明します。
Appty::GroupMail(アプティ・グループメール)
概要
メーリングリストとかにCCにgm@appty.comというアドレスを入れて投稿すると、
- 件名をキーにスレッドを作る
- Re:とかを取り除いたとき、同じ件名になればスレッドの下に本文がアーカブされていきます
- 件名をキーにWikiページを作る
といった機能です。
目的
web2.0とかマッシュアップとか色々いっているけど、仕事とかでは今も昔も情報共有にはメーリングリストですよね?
でも、メーリングリストにはアーカイブ機能がついてないことも多いので、このサービスを使えば、メンバーとメールアーカイブを共有できます。
こんな時に便利かも
使い方
会員なら
ログインして、公開グループの一覧でご意見を募集しています。
http://www.freeml.com/appty?sid=7092b606fec3edc3cb507c098cd12ae5
でオープンなメーリングリストを作っているので、ご意見とかメールに投げてみてください。
irbの便利な小技
Rubyでプログラムを書いているとき、ちょっとオブジェクトの中身を見たいときとかに便利なのがirbです。
Railsだと
script/console
とすればRails環境で使うことができます
usersというテーブルがあるとします
id | integer |
name | text |
とあれば、コマンドラインで
u = User.new
u.name = "ああああ"
u.save
みたいに使えます。
この便利なirbですが、より便利に使う方法を紹介します。
補完
これもshellと同じでtabキーを押した時に、候補を一覧で出すことができます
what
たとえば、3.14を4にするメソッドが思い出せない/分らない場合、どうしたらいいでしょう?
gem install what_methods
Ruby on Railsの開発環境3
先週、Macを買おうと思い、ヘタれてThinkPadX60を買ってしまった・・
やっぱり重いのはイヤですね。
core2duoのB5モバイルノートにメモリを3G積んでも17万円弱で買えたので、モノ自体は満足しています。
僕としてはこの夏は青空プログラミングを推奨したいと思います^^;
(emobileも勢いで契約したので、外からでもVPNで社内のサーバにはアクセスできます。天気の良い日は公園とかで仕事しようかとたくらんでます)
このノート1台で開発用とクライアント用とで併用して使うにはVMPlayerにCentOS5.0を入れておけば十分かと思っています。
現在の問題点
- Windows Vistaの動きがあやしい
- スリープモードから復帰しないことが結構ある
- なぜかディスクに書き込みするのが遅い
- 開発環境
Railsからbigintを使用する時の注意点
idとかの AUTO_INCREMENTのカラムをbigintで使用している時、特に32bitを超える数値の時(自分のPCは32bitマシン)は明らかに挙動がおかしい。
例えば
id | bigint |
title | text |
body | text |
というテーブルがあり
alter table posts auto_increment = 100000000000000;
と設定し
post = Post.new post.title = "aaa" post.body = "bbb" post.save!
とした場合、MySQL C API の関数 mysql_insert_id()を実行します。
この関数は、直近の INSERT クエリにより AUTO_INCREMENT カラム用に生成さ
れたIDを取得します。が、mysql_insert_id() の返り値の型を long 型に変換します。
AUTO_INCREMENT カラムが BIGINT 型である場合、返される型は不正確になります。
なので、
redirect_to :action=>:show,id=>post
saveのあとに詳細ページへリダイレクトすると、modelのidの数値が不正なのでRecodeNotFoundとなります。
解決方法は
module ActiveRecord module ConnectionAdapters class MysqlAdapter < AbstractAdapter def insert(sql, name = nil, pk = nil, id_value = nil, sequence_name = nil) #:nodoc: execute(sql, name = nil) id_value || @connection.query("SELECT LAST_INSERT_ID();").fetch_row()[0].to_i #id_value || @connection.insert_id end end end end
をenviroment.rbとかに書けばOK!
いや〜これで軽く半日はハマった^^;
でも、これは他の言語でも同じ現象起こしそうだ・・・