iTunesがバージョンアップされ7.2になっています。
早速更新をして何が変わったかを確認…
外から見える部分については、何も変わっていない気がする。
軽く早くなったとか、そう言うのだったら嬉しい。
それならば、ちょっと使ってみないと分らないか。
iTunesがバージョンアップされ7.2になっています。
早速更新をして何が変わったかを確認…
外から見える部分については、何も変わっていない気がする。
軽く早くなったとか、そう言うのだったら嬉しい。
それならば、ちょっと使ってみないと分らないか。
EclipseのRuby on Rails開発環境、RadRails and Ruby Development Tools (RDT)がバージョンアップ(といっても5/14の様だが)されていて、ついにEclipse内でステップ実行が出来るようになっている。
コードを追いかけながら動きを掴めるのは初学社にはありがたい。
ServersビューのWEBrickやMongrelサーバのプロパティーを表示すると、「Run Mode」というのが追加されていて、ここを「run」から「debug」に変更するとOK。
既にインストールされている場合は「Help」メニューの「Software Updates → Manage Configuration → Search for updates of the currentry installed features」からRadRailsが最新かどうかの確認と、最新ではない場合はアップデートできる。
まだ入ってないなら「Software Updates → Find and Install... → Search for new features to install」で http://update.aptana.com/install/rails/3.2/ をURLに追加して続ければOK。
ただし、かなり動作が遅くなるので、常時debugモードにしておくとストレスがたまりそうですが(笑)
ほとんどPHPでできているシステムなのですが、訳あってPerlから更新作業をする必要ができてしまい(というかPerlで書きたかった)一通り思い通りに動くものができた。
ところが日本語のデータが化ける。MySQL(バージョンは4.1)で保持している日本語のデータはSJISで格納されている(不本意ながら今さら変えられない)。そして、もちろんDBIでINSERT/UPDATEする時にEncode::decode/encodeを使ってSJISで格納しているにも関わらず化けてしまう。かなり悩んだあげく、やっとMySQLのドキュメントを見つけた。
次のようにconnect()直後に送信/受信のキャラクタセットをSJISであると指定してあげれば良い様です。
WindowsのPoderosaからsshでFirewall内のサーバに接続していた時は、セッションのタイムアウトで接続が切れてしまうのに対応するため、「オプション設定」の「ターミナル」にある「KeepAliveパケットを送信する」オプションをONにしていた。
最近、Mac OS Xをメインに使用しているが、Terminalから件のサーバにつないだときに、切れてしまうのをどうすれば良いのか、やっと分かりました。
~/.ssh/config ファイルに下記の行を追加します。
60は60秒です。セッションのタイムアウト時間が長い場合は、環境に合わせてもっと長くするべきかも知れません。
自分のためのリマインダーです(笑)
Amazon ECSですが、以前のエントリーでamazon-ecsを使うつもりと書いたのですが、これカテゴリーのトラバースをするOperationであるところのBrowseNodeLookupに対応していなさそうな感じ。
カテゴリーは結構使えそうな情報なので、他を当たってみたところ、素直(なのかどうなのか分りませんが)にNet::HTTPとREXMLで自分でやっても大したこと無さそうだという結論に。
試しにBrowseNodeLookupでサブカテゴリーにどんどん降りていくRailsアプリを書いてみたが、わりとすぐにできた。それもリクエストとレスポンスは開始1時間後にはできていて、そのあとREXMLの使い方がイマイチ分らず悩んでいただけでした。
やってておかしくないのにもかかわらず、XMLは何故だか使ったことがなかった私(笑)
ふと見ると、Iron Maiden 1111。
狙ってないで(笑)
最初からそうなのかも知れないが、EclipseのRuby Editorでインデントが微妙に崩れてしまっていることに気づき、気持ち悪い
どうやら、bold化されているキーワードやインスタンス変数が先頭に来ている行で、構造的にはあっているはず(デフォルトのスペース2個です)インデントが崩れて表示されていると思われる。
Eclipseのフォントの設定(Windows Menu → Preferences... → General → Appearance → Colors and Fonts → Ruby → Ruby Editor Text Font )をどう変更しても直らない。
Ruby EditorのSyntax Coloringの設定( Windows Menu → Preferences... → Ruby → Editor → Syntax Coloring)で、Boldにチェックが入っているElementを付けたり外したりすると、Preview表示からして、ぶっとなったり、しゅっとなったりしてずれているのが分る(バカっぽい表現で好感度アップ)
ずれるのは許せないので多少、コードの識別が悪くなってもBoldじゃない方がよい!
BoldになっているElementを全てBoldじゃなくしてみると、崩れなくなった。
うむ。美しい。
むろん崩れなければBoldの方が良いので、RadRailsの更新が入ったら、対策されていないか確認する必要がある。
Ruby on RailsでViewに<input type="text"/>タグを出力する際、
text_field() と text_field_tag() があって、どちらを使えばよいのか分らず暫くキョトーンとしていたのですが、やはりライド・オン・Railsは優れています。最後の「付録 Appendix」のリファレンスに一言で分りやすく記載されていました。
ヘルパメソッドリファレンス(P353, 357)より参照。
■text_field() 達のグループ。
ActionView::Helpers::FormHelper
モデルを対象とするヘルパです。
■text_field_tag() 達のグループ。
ActionView::Helpers::FormTagHelper
モデルオブジェクトではなく、値を対象とするヘルパです。
すなわち、
・前者はテンプレートにアサインされたRailsのモデルオブジェクトとその属性にアクセスできるように、
・後者はHTMLタグの名前と値からアクセスできるように
HTMLタグをレンダリングするということらしい。前者が高レベル、後者が低レベルなAPIとも言えましょうか。
ちなみに、同じくここで知りましたが、tag()、content_tag() というパラメータで渡された名前とハッシュによる属性指定(および、content_tag()の場合はcontent部)によって、どんなタグでも生成できる、ヘルパーも発見。
divの様なタグを<%= %>の中で生成できて、Rubyの変数へのアクセスがし易くなり、コードも見やすくなる効果があるそうだ。
良く考えられている。
例によって、これで1時間近く悩んでいたのであった。そんな訳でコーディングがなかなか進まない。しかし納得したので気持ちは良い。
当然作るアプリは最初、日本語が使えれば良いということで、viewなどはガリガリ日本語で直接書いてしまうのが、手っ取り早くて良いような気がした。
しかし性格的に全体がカッチリしてないと次に進めないのか、多言語対応するための仕組みを調べ始めてしまう。めっちゃ参考にしているライド・オン・Railsでは、Special-GenerationとRuby-GetText-Packageが紹介されている。
Supecial-Generationはscaffoldジェネレータの拡張で、多言語対応というより、Ruby on Railsの中の日本語に対応しているミニフレームワークと言った雰囲気。ちょっと私の趣味に合わない気がしたのでスルーの方向で。
Ruby-GetText-Packageはスタンダードっぽい。こっちを採用し、ごにょごにょ始めることに。
躓いたのは、InstantRailsでpoファイルのマージが出来ないというところ。ライド・オン・RailsではRakefileを拡張し、rakeタスクとしてpoファイルを作成できるようにしているが、内部でmsgmergeというコマンドが使われており、それが見つからないらしい。msgmergeはGnu GetTextのコマンドの様だ。
InstantRailsのRubyのインストールセットの中にrmsgmergeというコマンドがあり、これをGnu GetTextの代わりに使えるという情報をゲットした。やり方は<InstantRails install path>\use_ruby.cmdファイルに
という行を追加するというもの。これではInstantRailsのruby用コマンドプロンプトからしか実行できないが、radrailsでPATHを指定する方法が分らず妥協するとする。
あと、use_ruby.cmdファイルの冒頭のコメント部に、「このファイルはInstantRailsによって生成されるので、テンプレートな<InstantRails install path>\conf_files\use_ruby.cmdファイルを編集するように」といった、お達しがあるのだが、言われるままに変更してもいっこうに、コマンドプロンプトの環境が変わらなかったため、仕方なく直接書き換えました。
iPodで聴いた曲をLast.fmに送れるiSprogglerですが、最近聴いた時間がかなりずれます。
実に11時間ずれている。9時間ならGMTとの差かなという気もしないでもなかったのだが、よく分からない。
あと、今日はiPodで同じアルバムをループして聴いていたので気づいたのだが、同じ曲を何回聴いても、iSprogglerで一度に送られる場合は1回となってしまう様です。おそらくiTunesの「最後に再生した日」という項目を元に送信しているためで、「最後に再生した日」は後で聴いた日時で上書きされるからだと思われる。
私の聴き方なら、特に問題ではありませんが。
面白いことにiTunesで聴いた場合も、同じ曲を続けて聴くと送信されないようだ。2曲を代わり交代に聴く分には、ちゃんと全て送信される。iPodからの場合はよりどころとなるデータがなくなるので、仕方ない気がするが、iTunesは毎回送れるわけで、いささか中途半端な感は否めない。
いや、同じ曲をずっと聴き続けることはまれだし、送られないからといって困るわけではない。
今日は日付が返ってきたら、アマゾンに注文しておいた泣き虫 弱虫 諸葛孔明 第弐部 酒見賢一著が届いていた。嬉しい。
1年以上も枕元に積ん読にしていた泣き虫弱虫諸葛孔明 酒見賢一著だが、GWに一気に読み、強烈に面白かったので早く続きが読みたかったのだ。
第弐部の帯より、泣き虫弱虫諸葛孔明 第壱部の紹介を参照します。
そして第弐部は長坂坡までの様です!楽しみだ。
先日、tracのDB定義をsqliteのコマンドで直接参照するというのを書いたのですが、この時、sqliteのコマンドラインツールが入っていなかったため、yumを使ってインストールした。
これが良くなかったようで、今朝からtracに接続できなくなっていた。なぜ今朝からかというと、金曜の夜に一度ブレーカが落ちてtracを運用しているサーバを再起動したので、httpサーバ(さらに詳しく言うとmod_python)の読むライブラリがその時から新しくなり、その後、誰もアクセスしなかったため、今朝気付いた訳です。
#ブレーカが落ちるオフィスというのもアレですが(苦笑)
現象はhttpdがメモリをどんどん食いつぶしてメモリーエラーで落ちる。落ちるまでの間ロードアベレージもCPU使用率もバンバン上がる。最初はHDDのせいか?メモリ不良か?とハードを疑った(ブレーカー落ちの不正終了もあったので)のですが、他のサービスは問題なく動いているため、とりあえず、yum updateしてみた。
すると、こっちも落ちる。
# yum update Setting up Update Process Setting up repositories Reading repository metadata in from local files Traceback (most recent call last): File "/usr/bin/yum", line 29, in ? yummain.main(sys.argv[1:]) File "/usr/share/yum-cli/yummain.py", line 97, in main result, resultmsgs = do() File "/usr/share/yum-cli/cli.py", line 471, in doCommands return self.updatePkgs() File "/usr/share/yum-cli/cli.py", line 949, in updatePkgs self.doRepoSetup() File "/usr/share/yum-cli/cli.py", line 75, in doRepoSetup self.doSackSetup(thisrepo=thisrepo) File "__init__.py", line 260, in doSackSetup File "repos.py", line 287, in populateSack File "sqlitecache.py", line 96, in getPrimary File "sqlitecache.py", line 83, in _getbase File "sqlitecache.py", line 76, in getDatabase File "sqlitecache.py", line 49, in loadCache File "/var/tmp/python-sqlite-root//usr/lib/python2.3/site-packages/sqlite/main.py", line 244, in execute MemoryError
これでsqliteのバージョンが合ってない事に気付きました(遅い)最後に行った設定変更をまず疑うのが基本でした。
OSはCentOS 4.3なので、RPMを探すとsqlite-3.2.2-1.i386.rpmである。金曜に入ったsqliteは、sqlite-3.3.3-1.2。
# wget http://ftp.riken.jp/Linux/centos/4.3/os/i386/CentOS/RPMS/sqlite-3.2.2-1.i386.rpm # rpm -Uvh --oldpackage sqlite-3.2.2-1.i386.rpm
これで無事yumも起動、tracにもアクセスできるようになりました。ここのCentOSのバージョンも上げたいところだなぁ。
Railsでコードを書き始めたのだが、意外とサクサク進まない。
こちとら、JavaでHibernateでバリバリ書いていたという自負(苦笑)があり、Railsのテーブル関連も、最初にRailsによるアジャイルWebアプリケーション開発を読んだとき、特に引っかかることもなくすらすら読めたし、Railsのmigrationも良くできている。Controllerだって、Strutsに比べたら簡単そうだ。Viewに関しては更に、である。
しかし実際にコードを書きながら進めていくと、この場合、モデルやコントローラを作るのか作らないのか、名前はどうするの?など、規約を知らないために右往左往してしまっている。本を読んでいると、分らないことは特になく、何でも今すぐ作れそうな気がしてしまうが、自分がやろうとしていることを、どうやるのかがすぐには分らない。
ウリであるところの規約は、規約自体を知らなければ意味がないと言うことです(笑)
いや別にRailsをけなしているわけではなく、これは当たり前のことで、今までの開発ツールであれば、
(1) 設定方法を調べ
(2) 設定し
(3) 設定を使う
といった3段階でやっていたことを、
(1) 規約を調べ
(3) 規約を使う
の2段階にしてくれる上に、感覚的には前者の(1)、(2)の難易度は後者の(1)よりも相応難しかったはずです。
ツールの使い方につても、習熟が足りない。generate modelやscaffoldや、rake db:migrateやその他、いろいろをいつやって、何ができて、本当にやっていいの?など迷う。
今はまだRailsをさわり始めたばかり(しかもほぼ休日の数時間)なため、なかなかノリが見えてこないが、慣れたらいけるはず。出来る子のはず(笑)
ある程度の規模のアプリを書くためにはRailsの規約の何パーセントくらいが分ったらサクサクいけるのかを身をもって体験していきたいと思います。今のところ…20%くらいか(自己申告)
連休にRuby on Railsでいろいろと試していたのは、もちろん作りたいサービスがあるからです。
それにはAmazon ECSを使うつもりであります。
処理自体は先日試した amazon-ecs プラグインで比較的簡単に書けそうですが、ECSからどのような情報が取得できるのかなど、具体的なところは、ちゃんとAmazon E-Commerce Service Developer Guideを見ないと分りません。
そして、もちろん英語なのでどの情報が必要なのか、いささか苦労しながら(笑)探したtころ、当面必要である、書籍の検索には次のリファレンスを見れば分りそうです。
上から、
明日は早速、検索部分を作ってみたい。
既にいない人のコードを修正するはめになり、今日そのコードを読んでいて、奇妙なことに気づきました。
この様なコード(あくまでもサンプルです)だったのですが、IEでは期待通りの動きをするのに、それ以外のブラウザでは、おかしなことになります。
ちなみに期待通りの動きとは、上の例ですとresult1のdivに下記のように表示される事です。これが期待通りというのは、あくまでも私の予想です。というのもIEではちゃんと動くが、それ以外ではまるで動かないコードの原因だったからです。
それでFirefoxでの出力を確認してみたわけです。
なんだか、読めてきました。
MDS DOM:element.getElementsByTagNameを見てみると、
とある。標準規格であるところのECMAScriptの定義を見てみると、
NodeListを見ると
どうやら、Mozillaのがちゃんとしているらしい。
そこで、MSのドキュメントを探してみると、なんだか同じ様な記述が。ということはと、
こんな風に直して実行してみると、IE、Firefox共に同じ動きをしました。ちなみにMacのSafariでも問題ありませんでした。
プロジェクト管理ツールtracのレポートはSQLを変更して、かなり自由にカスタマイズできるのですが、trac自体のテーブル定義がどうなっているのか、よく分からない。
最初から入っているレポートのSQLを参照すると、まぁだいたいは分かる。分かるのだが、もっと便利な項目が隠れていないか知りたいと思いGoogleに聞いてみたが。意外とすんなり見つからない。
私の探し方も悪いのかもしれないが、sqliteでスキーマ情報をダンプするコマンドがある事が分かり、それでやっと知る事ができた。これ。
いちいち、コンソールからこれをやるのも面倒なので、ここに載せておきます。
ちなみに、使っているtracのバージョンは
Trac 0.10.3 Trac-Ja(インタアクト株式会社による日本語化版)
sqlite> .schema CREATE TABLE attachment ( type text, id text, filename text, size integer, time integer, description text, author text, ipnr text, UNIQUE (type,id,filename) ); CREATE TABLE auth_cookie ( cookie text, name text, ipnr text, time integer, UNIQUE (cookie,ipnr,name) ); CREATE TABLE component ( name text PRIMARY KEY, owner text, description text ); CREATE TABLE enum ( type text, name text, value text, UNIQUE (type,name) ); CREATE TABLE milestone ( name text PRIMARY KEY, due integer, completed integer, description text ); CREATE TABLE node_change ( rev text, path text, node_type text, change_type text, base_path text, base_rev text, UNIQUE (rev,path,change_type) ); CREATE TABLE permission ( username text, action text, UNIQUE (username,action) ); CREATE TABLE report ( id integer PRIMARY KEY, author text, title text, query text, description text ); CREATE TABLE revision ( rev text PRIMARY KEY, time integer, author text, message text ); CREATE TABLE session ( sid text, authenticated integer, last_visit integer, UNIQUE (sid,authenticated) ); CREATE TABLE session_attribute ( sid text, authenticated integer, name text, value text, UNIQUE (sid,authenticated,name) ); CREATE TABLE system ( name text PRIMARY KEY, value text ); CREATE TABLE ticket ( id integer PRIMARY KEY, type text, time integer, changetime integer, component text, severity text, priority text, owner text, reporter text, cc text, version text, milestone text, status text, resolution text, summary text, description text, keywords text ); CREATE TABLE ticket_change ( ticket integer, time integer, author text, field text, oldvalue text, newvalue text, UNIQUE (ticket,time,field) ); CREATE TABLE ticket_custom ( ticket integer, name text, value text, UNIQUE (ticket,name) ); CREATE TABLE version ( name text PRIMARY KEY, time integer, description text ); CREATE TABLE wiki ( name text, version integer, time integer, author text, ipnr text, text text, comment text, readonly integer, UNIQUE (name,version) ); CREATE INDEX node_change_rev_idx ON node_change (rev); CREATE INDEX revision_time_idx ON revision (time); CREATE INDEX session_authenticated_idx ON session (authenticated); CREATE INDEX session_last_visit_idx ON session (last_visit); CREATE INDEX ticket_change_ticket_idx ON ticket_change (ticket); CREATE INDEX ticket_change_time_idx ON ticket_change (time); CREATE INDEX ticket_status_idx ON ticket (status); CREATE INDEX ticket_time_idx ON ticket (time); CREATE INDEX wiki_time_idx ON wiki (time);
JavaScript用の単体テストフレームワーク、さっそく調べてみると、JsUnitが見つかりました。おなじみのJUnit.org系列です。
日本語のドキュメントとしては、NRIのオブジェクトワークス | オープンソースドキュメントの「[PDF]jsUnit利用ガイド」 が優れています。(PDFファイルへの直接リンクは避けておきます)
JsUnitなかなか良いです。
ひとつだけハマりました。私のミスなんですが、テストケース内でJsUnitのライブラリjsUnitCore.jsを読むときのURLを間違うと、テストがタイムアウトする動きになります。どうしてなのか理由がわからず、しばらく悩みました。
何もせずにタイムアウトする時は、テストケースを書くHTML(もしくはHTMLをレンダリングする、アプリケーションのソース)内のJavaScriptの読み込みパスをチェックしましょう。
仕事でJavaScriptのコードを書くことが増えてきたのだが、単体テストが大変な気がする。
Java生活が長かったので、全部をUnitTestしまくるUnitTestジャンキーほどではないにしても、ライブラリ的に何度も呼ばれるメソッドについては、厳重に境界テストを含めたUnitTestを書く癖が付いてる。
これが気軽に出来るのはEclipseとJUnitのおかげだったのだが、さて最近は仕事ではPHP、JavaScriptを書くことが多い。特にPHPは元々あるコードへの追加修正が主で、その上、元の作りがアレな事もあり、メソッドレベルの単体テストを殆どやっていない。というかメソッド(関数化)されてたらラッキー。グローバルな異存関係がありすぎてリファクタリングも大変といった有様。
JavaScriptに関しては、これからという感じなのが幸いして、まだ手の打ちようがありそうだ。そこでJavaScriptのJUnitみたいなのが欲しい。今日は、もう眠いので探すのは明日ですが(笑)
Subversionを入れた。
連休中はRuby on Railsのお勉強だったので必要なかったが、実際にコードを書き始めると、一人でもバージョン管理システムがあれば非常に便利だ。
このサーバが Fedora だった時はビルドしてインストールしてあったのだが、CentOS を一から入れ直したので入っていなかった。
前に入れたときのビルドが非常に面倒だったので、今回はパッケージを使って入れる。
以下、やり方。
#とは言っても、とりたてて、載せるほどでもないのだが…
コレで入ってしまう。
Apacheを改めて入れている理由は、稼働しているのが Apache 1.3系で、パッケージのSubversionを使うのは面倒だから。というか出来ないかも。
なので、パッケージで入れたApache 2.0系を別ポートで起動することにした。
Subversionの設定をする。
/etc/httpd/conf.d/subversion.confを修正。
/etc/httpd/conf/httpd.confを編集し、Listenするポートを変更。(仮に9999とする)
そして、サービスが自動起動するように設定して、httpd起動。
これで全て準備OK。コマンドラインでテストしてみます。
iPodで聴いた曲がLast.fmにiSprogglerで送信されてない?問題ですが、翌日はちゃんと送信された。
たまたまだったか。
そうだった。最初は、この休み中にBlogツールを変更しようと思っていたのだった。
今使っているのは、MovableType 2.64と旧世代の遺跡ですが、前はそれほど更新もせず、書いても短い文章だけだったため、特に不便を感じていなかった。
まる2年、休止している間に、世の中はフリーのBlogツールで溢れ、おれおれサーバ(人聞きが悪い)上で動くBlogツールも先日ちょっと調べただけでも複数見つかる。良い世の中だ。
当初の目的をすっかり忘れて、休日はRuby on Railsを楽しんでしまったが、Blogツールを自分で作ろうとしてRailsを一生懸命やっているわけではない。
#typoにちょっとクラっときてカスタマイズして使おうかと思ったのは確かだが…
今のところNucleus CMSが第一候補です。
この旧MTは友人用にずっと、動かしておいて、私だけが使うために設置するなら、マルチBlogでなくても良いのでWordPress、ppBlog、P_BLOG Projectも魅力的。みんなデフォルトのデザインでもちゃんと使えそうだ。見た目は大事だ
しかし、これらはPHPでできている。使うだけなら、別に何で実装されていようと気にすることはないはずである。が、このMTを自分でカリカリ、カスタマイズしたりした経験上、PHP以外がありがたいことは確かだ。何故か。PHPが好きじゃないから。
とすると、adiaryが俄然、浮上してくる。こちらは最初に見た目を頑張って作らないといけなそうですが、Perlってのは素敵。そういう意味ではRubyであるtDiary.orgもあるが、もうあまりアクティブじゃないように見えるのがちょっと。
そんなわけで、Ruby on Railsも楽しいし作りたい物もあるので、まだしばらくは、このままかな。
ライド・オン・Rails ですが、面白そうなので、リファレンス系のページはばっさり飛ばして、「Amazon Webサービスとの連携」やってみます。
本ではruby-amazonを使っての説明ですが、ちょっと調べると、amazon-ecs がよさげ。gemで簡単にインストールできます。
そうするとサンプルも書き直さないといけない。こんな感じか。
本ではruby-amazonが返すオブジェクトをそのまま使ってビューをレンダリングしてるが、amazon-ecsはイメージURLの持ち方が単純でないので、Bookモデルに詰め替えることにします。small_img_urlというフィールドを勝手に追加してます。
この辺、Rubyに慣れてないんでアドホックですが、たぶんそのうちクールな方法を習得するはず。今は一杯一杯。
Ruby Amazon E-Commerce REST Service API (amazon-ecs)によると、
という風に、AmazonのAPIドキュメントAttributes of Items in the Book Storeに忠実に取得できて気持ちいいと思い、使おうとしたのですが、
そして、これを表示するビューは、こんな感じか、
まだまだ拙いが、なんとなく分ってきたかな。
早くRuby on Railsを自由自在に使いこなしてアプリを作り始めたいのだが、そうこうしているうちに大連休の最終日夕方(死)
やはり、そう甘くはないと言うことで(笑)しかしRuby on Railsはこの先、相当な武器になりそうなので、やっていく。
まだまだライド・オン・Rails 頑張ってます。この本、もう少し先の「Railsエッセンシャルズ」という章を先読みしたのですが、リファレンスとしても、非常に優れてました。解説も非常に分りやすいし、記載の内容が少し古い(書籍では仕方ないですね)以外は、とても満足してます。買って良かった。
グラフィカルなカレンダーを表示するという所で、CalendarHelperというのが紹介されていて、実際にサンプルを動かすのですが、記載のサイトに行ってみると、DynamicCalendarHelperと、名前もグレードアップしている雰囲気です。
本では.rbファイルをダウンロードしてきて所定のフォルダにコピーというインストール方法で説明されていますが、プラグインのインストールに対応したようです。
で、サクっとインストール完了。
しかし、ということは、本の通りにはいかないということで、やはり最初の例でつまずく。
まずは
今までの経験を元に、application.rbにrequire 'calendar_helper'を、application_helper.rbにinclude CalendarHelperを追加したところ、なんと成功!
引き続きライド・オン・Rails を進めております。
サンプルでlogin_engineというユーザ管理を全部やってくれる仕組み(プラグイン?)を使っているので、言うとおりにやっていたのだが、またもハマる。db:migrateができない。本の内容にくわえて、ちゃんとバージョンが違った場合に備えてLoginEngineのREADMEも参照しながらやったのだが、全くうまくいかない。
どうも、LoginEngine.configというメソッドを呼べないらしいのだが、environment.rbに言うとおりの記述を追加しているし、なんだか悪くないと思われるのだが。
またも行き詰まってしまったので、Google先生に頼ってみると。見つけた。
Rails 1.2.3でEngines及びLogin Engineプラグインを利用する
このレポートは激しく素晴らしい。これがなかったら私もEngines 1.2 Releasedを、さらに拙い英語力で読み解いている間に休日が終わってしまうところでした。感謝感激であります。
しかし、Rails思ってた以上に躓いてしまう。まぁ、あんまり簡単だと、それはそれでつまらないから良いか(笑)
ライド・オン・Rails 62P より
これは、本質的に重要っぽい。良く覚えておこう。
フレームワーク全体のノリが分るようになるまで、なかなか大変。面白いけど。
login_engineを使ってみる説明の所なのだが、ApplicationControllerのbefore_filterにフィルタを噛ましている。これでこのアプリケーションの全アクションでlogin_requiredを強制させられるという寸法か。
ライド・オン・Railsのlayoutファイルを修正する所で、
ググったところ、SaikyoLine.jpの@content_for_layoutって。というのを発見。なるほどです。しかし、これ去年の9月のだ。私はかなり遅れているなぁ。
ライド・オン・Rails 56P より
これは、なかなか素敵な仕組みだ。認証チェックにはやっぱり普通、コレですかね?
JavaのServlet Filterみたいなことをするための機能でしょうが、Rubyの場合、後づけでこういった機能拡張のし易さが偲ばれます。
ライド・オン・Rails通りに進めているわけですが、formの機能の単体テストを実行すると
とか言われてしまう。廃止予定っていいな。end_form_tagって識別子がよっぽど気に入らなかっただろうか(笑)
end_form_tag は単なる end に変わるらしい。Rails Forumを参照。
しかし、格好いいかどうかは別にして、私は end のみより end_form_tag の方が読みやすい気がするのだが。
また、前回の続き。
できた!
プロジェクトの設定を見ていても全くうまくいきそうな気がしなかったので、Instant RailsのMySQLの起動設定ファイル、my.ini (Windows以外のプラットフォームだとmy.confのことですね?)で
ちなみにInstant Railsのmy.iniファイルはExplorerから探しまくらなくとも、メニューのConfigure⇒MySQLで開けます。
ただ、これって、そういうもんなのか。何となく腑に落ちない。database.ymlの指定くらいはちゃんと見てくれても良いと思うのだが。
確かにライド・オン・Rails Ruby on Railsを徹底攻略ではMySQLのインストールでデフォルトの文字セットは「Best Support For Multilingualism」を選べとなっていて、そうするとutf8になるのだろう。
これはInstant Railsが日本で使うにはちょっとインスタントじゃなかったという事だ。しかしもっと早く気づいても良いとは思う>自分。
前回の続き。
db:test:clone_structure というrakeタスクがあるのを見つけたので、実行してみると、ちゃんとutf8でDBとテーブルができた。
しかし、test:unitsを実行すると、またlatin1_swedish_ciである。君はスウェーデンが好きだな!
Railsやってます。RailsによるアジャイルWebアプリケーション開発は随分前から持っていて、通勤時間などを使って、わりと読んだんですが、やはり知識と実地はかなり違っていて、じっさいにやってみると手が止まる。ちょっと、この本、通しでやるには重くて、この休み中それだけで終わってしまいそうな雰囲気。
本屋に月刊マガジンを買いに行くついで(?)に他のRails本を見てみると、ライド・オン・Rails Ruby on Railsを徹底攻略が目にとまった。短時間に一通り会得するのに良さそうだ。時間節約のために3000円使った(笑)
しかし、今までの経験から、どうせ色々細かいところはWEBの権威あるソースを参照しないといけないとは思います。
そして、さっそく夕飯後に初めたのだが、やはりつまらないところでハマる。単体テスト実行するってところで、言うとおりにすると、テーブルのデフォルトエンコードが latin1_swedish_ci なるエンコードになり、データはutf8で入れてるので文字化け。DB自体をutf8で作っておいても、latin1_swedish_ciで作成し直される始末。開発用DBのmigrateはうまくいくのだが、test:unitsだとそうなる。database.ymlでも全てのスキーマ定義でちゃんとutf8を指定しているし、念のために ActiveRecord::Migration の create_table にデフォルトをutf8にするオプションを書いても、test:unitsはダメ。あう~。
快適に使えていたはずのiSprogglerが何故か2、3日前からiPodで聴いた曲を送ってくれなくなった…
Last.fmのサイト側での変更をまず疑ったのですが、iSprogglerのログを見る限り送ろうとしていないご様子。
原因を調査中であります。
もう日付が変わってしまったか。
昨日からやり始めたRailsでのコード書き。コードを書くところまで言ってません><
「まず最初の作業はMySQLのrootユーザにパスワードを設定して、開発用DBユーザを作成する事からか。」
っていう、まずのところでいきなりはまりました…
phpMyAdminでrootのパスワードを変えて、定義ファイルconfig.ini.phpのパスワードを合わせて変えても、接続できないのだ。
いろいろ試した結果、mysql/bin/mysql.exeを使ってコンソールで
とやって、変更後のパスワードを入れればちゃんと接続できる。
途中、飽きてWebをサーフィン(死語?)したりしながら数時間、悩んだあげく、見つけました。
パスワードハッシュメカニズムは MySQL 4.1 で更新され、セキュリティが向上し、パスワード盗難の危険性が少なくなっています。 ただし、この新しいメカニズムは 4.1 サーバと 4.1 クライアントしか理解できないため、互換性の問題があります。 4.1 クライアントはパスワードハッシュの新旧メカニズムの両方を理解できるので、4.1 より前のサーバにでも接続できます。しかし、4.1 より前のクライアントが 4.1 サーバに接続しようとすると、問題が発生する可能性があります。たとえば、4.0 mysql クライアントが 4.1 サーバに接続しようとすると、以下のエラーメッセージが表示される可能性があります。
Instant RailsのMySQLのバージョンは5.0.27。PHPが参照しているMySQLクライアントのバージョンは3.23.49。もろに当てはまります。
サーバが覚えているパスワードを古い形式に再設定してみると、
しかし、クライアントのバージョンが古すぎないだろうか…なにかミスったのかしら?
数ヶ月前にRuby on Railsを試してみようと調べたところ、Instant Railsが楽だったので、今回も使うことにして、バージョンをチェックすると1.3a。
今の最新は1.7という事なんで、ダウンロードだ。
How To Upgradeによると、
前のInstant Rails 1.3aからは特にこれといって引き継ぐこともないので、全部やらなくても大丈夫そうだ。
アップグレードしなきゃいけない人で気をつけるべき所は、おそらくMySQLのデータ移行だろう。ChangeLogを見ると、バージョン1.6でMySQLのバージョンが5.0.27に変わっている。前は4.1.x系だったので説明の通りdump/importが必ず必要でしょう。まぁInstant Railsはそれぞれのフォルダ単体で起動するので、既存ディレクトリに上書きさえしなければ、古いのを起動してdump、新しいのを起動してimportとやれば簡単なはず。
そして、予想通りサックリ起動。phpMyAdminにもサックリ接続。サンプルアプリケーションもサックリ起動し、サックリ接続。さすがInstant Rails。まず最初の作業はMySQLのrootユーザにパスワードを設定して、開発用DBユーザを作成する事からか。
サンプルアプリのtypoですが、簡単なBlog管理ツールだ。えらい良くできてるなぁと関心しきり。ただ記事のポストができなかった。なにか設定が足りないのかも知れない。このコードは後で参考になりそう。
いくつか考えているアイディアがあるので、この休み中に公開できる辺りまでこぎつけたい。
仕様がだいたい固まっている、簡単なサービスを作ろうと思うが、開発言語でやっぱり悩む。
Javaはわりと好きで一番習熟しているのだが、ちょっと億劫というか身軽さが足りないというか、面倒というか。どうせならTeedaを使ってサクサク作りたいとも思うし。
Teedaがあまり悩まずに、評判どおりサクサク行ければ、決まりなんだが、どうもやっぱりそんなには甘くない様子だ。もっと前から考えているほかのアイディアではTeedaでGoしているので、今回は速さを重視して別の言語で。
そこで赤丸急上昇なのがRuby on Rails。いや、もういまさらとも言えなくはないが。
実際はRoR自体まだ詳しくは知らないため、Java(というかTeeda)の場合と同様の懸案が存在するわけですが、こちらには本やWebに情報が多い。そこが違い。本質的に違うところは別なんでしょうが、開発者のやる気をどれだけ削がないかという面で重要だと思われる。
弱点としては運用サーバを作るのが難しいらしいという点か。あ、あと繰り返しですがRoR自体を詳しくは知らないということ。
Perl。素敵にクールなPerlで書くというのも最有力候補。フレームワークなし、CGIとTemplateモジュールだけでもそれなりにいける。どうせ今回作る奴は小さいアプリだし。でもなんか新しく作ろうとすると、ツール側にも新しいものを求めてまうのが開発者というものですから、フレームワーク探しとかを始めてしまい、なかなかコードを書き始めない。mod_perlにしないと負荷がとかも、負荷が高くなるほどアクセスが来て困りそうになったら考えればよい、のに考えてしまう。
まぁ、「まぁ」は使ってもいいと思います。(巷で話題になっているそうですな)
まぁ、「まぁ 結論」でググッた結果を見ればさもありなん、という気もしないでもないが。
まぁ、結論としてはRoRに傾いているわけです。(ウザ?)
一昨日、招待を受け、噂のTwitterを始めました。
非常に話題になっているだけあって、シンプルかつハマリ度の高いツール。
gihyo.jpの先取り! Twitter使いへの道 AtoZが入門には最適。
なんとなく検索してみたところ、GoogleのiSprogglerの日本語検索結果でこのBlogが1ページ目に表示されてる!
おそらく、今だけですが、なんだか嬉しい。
Last.fmのデザインが変わった!
よりWeb2.0的、グラデーションのかかったデザインだ。うむ。綺麗である。
いささか、ダッシュボードに比べて自分のページをクリックしにくい…かと思ったら、アイコンクリックでもOKだった。
ざっと見たところ機能的な変化はなさそう。デザインだけ?
イベントにNEW!が付いているが、前からなかったっけ?
相変わらず重いのにも変わりもない(笑)
そして、得意の時間がかかった上に真っ白(死)
ほんと相変わらずだなぁ(微笑)