2008年12月27日土曜日

はてぶについて

慣れてくるとなかなか使いやすい「はてぶ」ですが、もう少しUIがほしい。つまり、ページ上からメタデータをあれば取って、タグ(キーワード)処理する。なければユーザ自身がタグ処理でき、それを共有できるようにする。

タグにより様々な分類を行うことができる。はてな系お得意の「なになにマップ」やグラフでスタッツを楽しく表示するというのもイイというかほしい。

一番欲しいのは分類してもっとすっきり小さめの字で一覧(ツリー)表示してくれることと、検索できるようにすること。

あ、検索で思いついたこと。googleの検索対象をはてぶページにするというのはいいね。そもそもgoogleの検索コマンドでURLを複数指定できれば、単にURIで実現できてしまうのか。ダメならURIをくるくる回して結果を表示。表示形式は全体通しでずらずらっと表示する方法と、まずURLを表示して、その配下のページ単位に表示する方法の2つが欲しいね。

ところではてぶが使いやすいと思えるようになってきたのは、ログインしっぱなしで使っているからというのが大きいと思います。

2008年12月26日金曜日

機械におまかせ

何事も機械まかせにしたい自分としては、Force.comのドキュメントを読むという単独作業ではなく、Force.comに関することを管理するためのオブジェクトが欲しい。

$> force.com new
$> Hi, I'm Amanda. an instance of force.com agent.

で、エージェントパネルにAmandaという名前でforce.comのエージェントが1個作成される。
名前や挨拶は自動かつ片言であり、設定変更が可能だ。
GUIでも可能だが、コマンドをキーボードで入力したほうが、IMっぽくていい。

これまではforce.comの情報を得ようとしたら、サイトに(ブラウザで)行って、ログインして、必要なページを探すかショートカット(ブックマーク)から開くかしたり、面倒。これからの時代はいよいよ強大なマシンパワーと回線パワーを得て、こうしたエージェント指向な時代に突入する予感。

物事、得てして遠い過去にそれは考えだされていることが多いと思う。特に科学より工学においては物理的限界に阻まれることが往々にしてある。過去のアイディアをもう一度大々的に検証し直してみるべきかもしれない。エージェントというアイディアも確か20年は前のアイディアでは無かったか?(私は識者ではなないので本当はもっと古くからある何かなのかもしれないが)




2008年12月21日日曜日

netbeans@Macでメニューの(A)を消す

日本語wikiではニーモニックと呼ばれているこれですが、ダウンロードファイルのリンクをそのままクリックすると、(デフォルト動作では)ダウンロードと同時に展開されてしまうので、上手くいきません。大分前にもそれではまってしまったことがあり、その時は展開しないようにダウンロードしてやり直したのですが、今回はふと思い立ってゴミ箱をよく見てみると、あ、残ってました。これで今後は無駄なダウンロードをしないで済むと思います。理想を言えば初めからMacOSX版はこうなっていてくれるとうれしいですね。実害はないので優先順位が低いのは致し方ないところです。

netbeansで編集ウィンドウでファイルを選ぶメニュー

こんな便利な者が有るとは露知らず。


グラブによるスクリーンキャプチャ

Macのスクリーンキャプチャは今までショートカットキー(⌘+シフト+4など)を使ってきましたが、メニューを表示した状態のキャプチャができませんでした。グラブ(アプリケーション−ユーティリティ−グラブ)を使う事で解決。

2008年12月16日火曜日

読めるかも

どうしてもテーブルを実行時に生成したいので、google("rails 実行時にテーブルを作る")といい加減にググってみたら、railsでwikiクローンを作るというページがヒット。

http://tam.qmix.org/wiki/Minki01.html

まだ02を読み終わった段階ですが、何も知らなかったころと違い、スラスラ読めるのが驚きです。

ユーブックマークなんだけど

ユーブックマークに登録するのに、やはりブックマーク専用サーバにログインして、というのはなんかつかいづらい。浮き島構想がいいのはわかっているんだけど。。そういえば前にブラウザのブックマークとシームレスにって。

それもいいけどもうちょいこうなんかなあ。欲しいね。

浮き島として、ブログとかSNSとかで代用という話もあったんだけど、記事の中で参照しているURLを左に一覧で。で、URLをマウスオーバーしたとき右にその記事。URLのさらに左、つまり行頭にソーシャル数(同じURLを参照しているページ数や、ブックマークされてる数)を表す。これをURLを張ったときに、トラックバック的に相手と情報交換する仕組みが欲しいね。

ブックマークしただけでブログになる。ログなんだからそれは正しいと思う。

ブックマークも自分にとっては情報源という意味で百科事典に近い。従って分類やインデックスが欲しいし、検索も欲しい。でもUIの基本として、左にインデックス、右に情報っていうのがいいな。

2008年12月10日水曜日

情報の到達度を計る

閑話休題。

いま、画像をほしいをどう概念交換するかについて思いを馳せながら、ふと、Sun Tech Daysのスピーカー情報がちゃんとしてないというブログを思い出して一句(だから句じゃないし)。

今どうやってイベント専用ページを作っているのか全く分かりませんが、まず参加者の立場からみてみましょう。

私の場合、まずサンのイベントセミナーページのフィードを食べています。これをThunderbirdで読んでいるのですが、これが一番早かった。早速イベントを見て、なるほどまだちゃんと出来てないうちにもう登録開始とはすごい!うれしい!と思いました。時代ですねぇ。。これで毎日何処かしら更新されていたら面白かったのに、とは思います。誰がやるの?という問題は、ボランティアで解決したいですが、主旨が保たれなくなっては元も子も有りません。

さて、つづいてSDCか、MLか、から送られてきたメールです。この辺がサンの場合分かり難いと私思うんですが、SDCに登録したプロファイルに基づくニュース配信だと思っていたのですが、今回のイベント登録に際して例の時計を貰う登録を行って、実はSDC登録はされていないというのが分かりました。最近覚える必要を感じないものはほとんど覚えてない私は、メールが来た頃にはフィードで知ったことを忘れていて、あれ?メールがだぶってる、と思ってしまい、何か必死になって前に来たと思い込んでいるメールを探し、なんでないんだ?と物凄い悩んだものです。すったもんだのあげく漸く思い出して、事なきを得ました。

その後も結構ウェブ上の至る所で広告を目にした気がします。他にも紹介記事を何本か(たしか何かをググった反動で)見たと思います。

以上から、今回私は、フィード、ML、ブログ、広告の情報と接したわけです。そして、これらの情報はすべてカウントできます。さらに適当な分母を用意すれば、何人とか何分とか、人と時間単位でのネット上の視聴率とかがわかるのではないでしょうか。他のイベントとの比較も取れるかもしれません(ランキング)。

ここまで書いてようやく、何か登録すれば出来るサービスがすでにあっても良さそうなことに気がつきましたが、(あったとして)どうやってやるんでしょうね。総アクセス時間、総アクセス人数、総アクセスページ(URLとします)数などは、プロバイダが公開してくれれば分かるのでしょうが、するかなそんな面倒なこと。広告載せてるサイトからの情報は出るでしょうね。あとはテレビの視聴率見たいに統計的手法でサンプリングから、ということでしょうか。

そうだ、大元のインフラで計測してくれればいいんじゃない? 無理か。

とりあえず分子側の情報だけでも良しとしますか。それと統計的な解析を誰か絡めてください。

まあそうやってどれだけ告知されたのかを担当者のケータイにメータ表示(5分置きに更新)されたら嫌だろうなあというオチでした。ちなみにグラフはですね、あの〜砲丸投げとか槍投げとかの投げ物競技の扇形のグラウンドに書かれたメジャー。あれですね。到達スピード範囲で色が段々薄くなっていくのと、幅がユーザ層(あとツールの種類と切り替えで使っても可)を、縦が時間とか人数の割合ですね。分子だけなら実際の数になります。円形? 扇型がいいなあ。間を取って270度に開いた形とか。オープンソースのマークみたい。あれ、変えた方がいいと思うのは私だけ?

深みにはまるのを恐れてググってはいません。あー全然閑話休題にならなかった。メジャーの話だけで良かったのに。

あとスピーカーの名前にマウスオーバーするとググった経歴や関連情報(過去のセミナーや入手可能なドキュメント一覧など)がゲットできるといいですね! この辺が概念交換機の狙い目です。

2008年12月9日火曜日

memo

ブログツールにマイティ(ITの駄洒落)辞書を。
Bloggerにアクセスして簡単追加、参照、共有。
本当は出典ページに直接書き込めるのがベスト。
直接とはいってもこれは例の翻訳で使う付箋的コメント機能を使う。

例:
外部キー制約:foreign-key constraints
出典:http://www.redhillonrails.org/foreign_key_migrations.html

はてぶ:ブラウザへ統合=>グリースモンキーでページをスクライプ(APIがあればMashup)
普通のブラウザのブックマークとシームレスに。

OpenOfficeでショートカットキーが変更できない

OpenOffice Impress(プレゼンソフト)でショートカットキーが変更出来ない件で悩んでいます。
/Users/Blanca/Library/Application\ Support/OpenOffice.org/3/user/config/soffice.cfg/modules/simpress/accelerator/en-US/current.xmlにそれらしき記述を見つけたのですが、ダメ。修正前に複製したので、間違って複製したほうを直したか?と思ってみてみると、なんと、直したはずのcurrent.xmlだけでなく、複製したほうも両方とも元のまま! よしここはcurrent.xmlを書き込み禁止にしてやろうと。いまからやるところ。

やりました。無駄でした。

Finder で変更箇所を探そうとしても、ぜんぜん表示されない。さっき書き換えたcurrent.xmlも、ですよ。だめだこりゃ。サポートコール行きですな。

NeoOfficeも表示崩れまくりだし。自分でOpenOfficeを修正できればいいんですけどね。

諦めてワードでも買うかな。。

2008年12月4日木曜日

百マス単語帳

一人芝居の中で、twitterでフォローしまくるよう、社員に指示を出したところ、

「いやぁぁ英語ばっかりですねぇぇ」
「いいじゃん別に」
「いや、英語話せないんですよ。。」
「だから? 俺だって話せないよ」
「何か言われたらどうするんですか?」
「言われないよ、twitterなんだから」
「いや、でも、名指しで来られたりすると」
「こないでしょそんな〜(笑)それって心配性ですらないじゃん」
「いやぁぁぁでもですねぇぇぇ」
「いいじゃんじゃ相丼脳イングリッシュで」
「それってスペルこう( I don't know english )です?」
「それでいいんじゃない?自信ないけど」
「understandとかじゃなくていんですか?」
「...おまえさ、先週一週間で、一体何人のアメリカ人がunderstandって単語使ったんだよ。使わないよ今時understandなんて難しい単語」
「まじですか」
「さあ。数えてみな」

ということで、まずは私が愛用させて頂いているNativeCheckerさんで単純に「i don' know」と「i don't understand」の数を比較してみることに。

i don't know : 521,000,000
i don't understand:    55,800,000

その差は歴然。

まあ、単純比較ですからね。学術的、科学的根拠が乏しいことは言わずもがなでしょう。

私がやってみたいのは、webにおける単語の統計を取ることです。
さらにこれを時系列で見ていけば、言葉の移り変わりもある程度見えて面白そうだなと。
他にもいろんな枠組み(系統)で見ていけば、使用頻度の高い専門用語なんかも見えてきそうですね。

日本語でもやりたいんですけど、単語の区切りがめんどくさそう。よく何とか法って聞きますけどね。まあでも単語だったら時間さえあれば辞書と比較するでも良いですしね(前から比較して長い単語を取るとか)。『Wikipediaの見出しと実際のWeb』とか。これなら確かAPIも何かあったと思うので、面白いのができそう。とりあえず、タグ分類 Top 10 vs 見出し語 top 10の百マス単語帳でも作ってみるかな。

たためる(閉じれる)広告 USTREAM

USTREAMがやってくれました。

ついさっきまではなかったので、本当に今さっき追加されたのではないかと思います。もしくは偶々実験中だったのかもしれません(実際に広告をクリックしてもサイトが表示されなかったので)。

私もMashupEXで取り入れようとしていた『閉じれる広告』。先を越されてしまった。とはいえ、ストリーム上の広告の話で、閉じたら[+ad]が残るとか、他の広告は少なくともまだ従来通りのようですし、私のやり方と同じという訳ではないようです。それに私の場合はもっと広告を主体に考えているので、広告専門サイトと連携するような格好で実現したいと思っています(とあくまで自分とは違う点を強調したがる悪しき性)。

ところで広告専門サイトって、ないんですよね。見つからないだけなような気がしますが。もし本当になければ、立ち上げましょう! ええ立ち上げますとも。

ポストのフォロー

前にどこかで書いたはずですが、---- なんて説明したらいいのだろう?---- 自分のポストに対して掲示板のスレッドのようにネストしてフォローをポストできるようにしたいです。

特に『わからない!』ポストに『わかった!』と自己完結するような場合。コメントに書いてはネストしないので、細かい(自分の中での)やりとりが表現できないし、一つのまとまったエントリとして成立しない。タグで括るのもアリですが、タイトル毎にタグが必要になってしまうのが面倒。それにタグ自体を選ぶときに数が多くなりすぎて、タグを選ぶのがまた大変になります。

とはいえ、ブログの最大の特徴は時系列にあるわけで、ブリジットジョーンズの日記がネストしてたらちょっとおかしい。やっぱり時間順に並んでいて、内容が交錯するっていうのが一つの醍醐味なわけです。ですから例えフォローができても、已然、時系列で表示することができるわけですが、何か調べもののようなポストについては、纏めて見たいわけです。特にこのブログのように本当にログとして書くことが主たる目的の場合は。

別にいいんですけど

ログインしてない状態でこのブログにアクセスすると、英語のページに行くことが多い今日この頃です。大丈夫?Bloggerさん。

スタイル言語

スタイル言語というものがあるということを初めて知った。
いままでスタイルシート=CSSだと思っていたが、style属性を調べるうちにこちらで学びました。ありがとうございます。

2008年12月3日水曜日

雲の上のケイナイ

それでいま私はnetwork.comでハイドラジンとかProjectケイナイ(スペル不詳)のつづきはwebで、に行こうとしてるわけで。。。

サイトを理解するブラウザ

そういえばCSSも当然対応しなければならないわけだが、例の本の考え方を踏襲(とうしゅう)するつもりなのは良いとして、それをすっかり忘れかけていた! あぶないx2。もう自分のレイアウトが見えてくるとね。今回はというかCSS対応を実装するまでは、自分レイアウトでOKと言ったためか。

とにかく書こうと思ったのはそうではない。
ブラウザって、ページしか分かってくれないんだよね?という確認と、そうならそうと、サイトを分かってくれるブラウザが有っても良さそうなもんなのになあというGoogleさんを横目でチラ見。

ニューブラウザにはそういう機能がぜひともほしいね!というオチでよろしこ。

なんでCSSからそうなったかというと、2ページあったとして、1ページ目も2ページ目も<head>を投げるよね。で、そこにCSSの在処を書くよと。そうすると、同じCSSなのに2回言わないとわからない?っていうか、そもそもサイト全体でこんなCSSがあって、とか、例えば検索ページなら10ページとかあるのを、ページネーションだっけ?そういうことをみんな別々に実装するわけだ。それってどうなの?と。

まあそっから話は他のページ要素にも及んでしまうので、だからそれはサイトの作りの問題だろって言われればその通り。それでいいのかって話をしてるので噛み合ないわけだ。

もう少し立体的な構造体として考えたいよね。そうサイト全体を概念体として。

その上で実装展開としてのMVCなんじゃないかと。そうすると自由な発想でというか、もっとスタンドアロンなGUIアプリのようなサイト作りができるのではないかと。

微妙に話がずれたか。

だからさ、セッション管理じゃなくて、サイト管理にすりゃいんじゃない?

2008年12月2日火曜日

MacOSXのJava (2)

JavaSE6のインストール先は:

アプリケーションー>ユーティリティ ー> Javaー>Java Preference
を起動すると、いろいろ出てくる。画面上、ドラッグしてJavaSE6を一番先頭に移動する。見た目クリックされた行が反転しないので、ドラッグが効かないように見えるが、大丈夫。

変更前:
$ java -version

java version "1.5.0_16"

Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_16-b06-284)

Java HotSpot(TM) Client VM (build 1.5.0_16-133, mixed mode, sharing)


変更後:

$ java -version

java version "1.6.0_07"

Java(TM) SE Runtime Environment (build 1.6.0_07-b06-153)

Java HotSpot(TM) 64-Bit Server VM (build 1.6.0_07-b06-57, mixed mode)


確かに1.6.7._07に変わってる。ちなみにこの間、ログオンし直し、ターミナル再起動はしてない。

2008年11月30日日曜日

大世界人のカレンダー

確かに素晴らしい。でも最高じゃないな。
少なくとももっといいカレンダーがあるよ! 俺の頭の中に。

Google Sitesも予想と違った。。残念。

あるとき

プログラムコードは主として誰のための言葉か?

と言う。

私はコンピュータと答えるが、

人間と答える人も多いようだ。

2008年11月28日金曜日

再び、Rails本

MashupEXの設計が進んでいくと、具体的な実装ということに当然なってくるわけですが、ここでRailsをかじった気になって、後の細かい小技は逆引き本で、なんて生意気な行動に出てしまいました。余計わからなくなりそうだったので、一旦Rails本に戻って第23章です。web v2.0とvがついているのがこの本を買うのを躊躇した点の1つです。ま、どうでもいいことでしたね。本質をちゃんと見ようとしない悪い癖です。反省。。

逆引き本も、ああこういうのがあるんだ的な、馴染むという点では、あながち悪い物では有りませんでした。もう少しレベルアップするか、行き詰まって藁をも掴む場合には、また手に取ることができるでしょう。1週間以内には到達したいです。それじゃ遅い?

2008年11月27日木曜日

Thunderbirdで家と職場を同期する

RSSをThunderbirdで見ていますが、家と職場で両方設定するのが面倒です。
。。。よく考えたら、メールも同じことですね。でもWebメールって使い辛いんですよね〜なんとなく。IMAPも何となく。

メールの話はおいといて、まずRSSの購読ですが、これもWebで見ようとすると億劫(おっくう)になると思うので、Thunderbirdがクライアント間で同期を取ってくれればいいのではないかと。あまり難しい方法じゃなくて、ちょっとローテクっぽく、次のような感じで。

まず、家でメール情報をtarします。といっても同期用にThunderbirdが管理データを追加してExportしたものです。それをメールで自分宛に送ります。このメールアカウントは家でも職場でも受信可能なものである必要がある点が人によっては難点ですが、そういう人はそもそも同期を取る必要がありませんね!

で、そのメールを同期時に指定するわけです。メールを選んで右メニューから同期みたいなUIがいいですね。そうすると、追加したアカウントやRSSを同期した上、オプションでメールそのものを同期してもいいですね。そしたらまずそのアカウントだけメールを受信して、最後に受信した同期用メールを自動検出して自動的に同期するっていうのも便利かも。

それよりiGoogleを使いこなした方が良いのだろうか?と思ったりして。でも何となく使いにくいんだよね。。

あ、いっそ自分でweb上にデスクトップ作ればいいんじゃん。な〜んだ簡単な話だった!

2008年11月23日日曜日

cafe2.0 TESTDRIVE Oliva: RoRアプリケーションの配備

cafe2.0 TESTDRIVE Oliva: RoRアプリケーションの配備

リンクを作るで作ったエントリ。これがbacklink?
どうやってつかうんだろう?

RoRアプリケーションの配備 (2)

ちょっとエントリーの順番が前後しちゃいましたが、最近デプロイの話を聞いてから、Netbeansを使っていることもあり、ついついJRubyやGlassFishに頭が向いてしまいます。ネイティブRubyをGlassFish V3で動かす記事もあるので、やってみたいのはやまやま、ついそっちを除いてしまうのは分かるんですが、ぐっとこらえて、まずはローカルで動くようにしましょう。

モデルの作成

データベースの格好は何となくまとまってきました。さてそこでモデルですが、考えてみると、adminやstoreというモデルの単位がはっきりしない頭。まあ、深く考えずにいきましょう。

2008年11月22日土曜日

You! 翻訳

最近英語アレルギーから脱しつつ有る私!は、たった今、『Miles to go ...』をみて、よし、これを翻訳しよう、と思った。すごい進歩だと自分でも関心する。レベルが低くて申し訳有りません。 

ところで、翻訳サイトを作るというのは、半年か1年ぐらい前からあるアイディアですが、--あ、これWanted!にしょうかな--、これにはローミングという考えが背景にあります。

例えば私が『Miles to go ...』を翻訳したいと思ったとします。これを個人的に行い、結果を自分だけのメモ帳に保存しておく分には、著者の許可は不要です。しかしもし、これを誰かと共有したいと思ったら、多少問題が起こるかもしれません。勝手にインターネットで公表しようとすればなおさらです。

ローミングとは、ローミングブラウザを介してアクセスすることにより、該ページをユーザの嗜好に合わせて書き換えるものです。Greasemonkeyのようなプラグインをイメージしても良いかもしれませんし、私の知らない間にすでにそういうアプリケーションがあるかもしれません。ただし、プラグインではありません。Webアプリケーションとしてのブラウザです。私はこれをニューブラウザと呼んでいますが、普通にWebアプリケーションのUIが他のページを見るための機能を持っていること、およびそのコンテンツに干渉することから、一種のブラウザだと考えているためです。

つまり、ニューブラウザは、通常のブラウザで表示される素のコンテンツに、翻訳などの付加情報で変換したり、コメントなどを追加した、二次的なコンテンツを表示するものなのです。

ここでいうユーザの嗜好の中に、言語翻訳機能があります。ローミングサーバは、ユーザが登録したページの翻訳情報を相対的なページの位置情報と共に保存します。それにより指定されたURLでアクセスした時に、翻訳情報を表示できるようになります。

ユーザが自分で翻訳しただけの状態であれば、他のユーザはその情報にアクセスできません。共有許可を著者に取った後、はじめて共有URLに置かれ、他のユーザもアクセスすることができます。共有URLにある情報を見るか否かはユーザ次第です。デフォルトでONにもOFFにもできますが、気に入らない(というより不快な)情報だけを後からON/OFFすることもできますし、不正だと思われるコンテンツの通報も可能です。一方、発信したユーザは、誰がON/OFFしているかは知ることが出来ません。しかし、その割合は知ることができます。あまりにもOFFの多いコンテンツは、その理由について、誰かに意見を求めてみても良いでしょう。また、OFFが多いコンテンツや通報されたコンテンツは調査の対象となり、違法行為が確認されれば、然るべき対応が取られます。

もちろん著者が共有に問題(著作権侵害)を感じたら、いつでも共有を禁止にすることができます。このような情報もまた調査され、対応されることになります。

共有許可のプロセスは、今のところ人力で行うことを想定しています。もし社会的に支持されるようになれば、robot.txtのような情報で自動的に可否を判断できるようになるでしょう。それまでは多少時間がかかっても著作権を重んじるべきです。

そこで著者に許可を求めるわけですが、利用者の負担はできるだけ軽減したい。そこで登録したURLをローミングサービス側で調査し、問い合わせ先を探し、許諾を得るというプロセスになります。

私は英語のプロではありません。それどころか、まともに会話したり読み書きしたりすらおぼつかない状態です。でも、そんな私でさえ分かる英語もあります。それは、技術的に必要に迫られた、翻訳というより、書いてある内容を理解するための最低限の意訳レベルにすぎませんが、もしそれを原作と関係付けて保存できれば、それは自分が繰り返し見るときに非常に役に立ちます(毎回辞書を引かなくていい)し、さらに他の人と共有できれば、きっと同じレベルの人にも役立つでしょう。そして私が勇気を持って恥を忍び、つたない訳を公開すれば、見るに見かねた人が、やさしく間違いを指摘し、正しい訳を示してくださるに違い有りません。そうなればきっと他にも追従してくれる人が現れるはずです。そしてそれは多くの理解を助け、読者を増やしてくれるはずです。ですから基本的に著者にも歓迎されるはずだと私は思います。

他にも例えばja.netbeans.orgのような公式に翻訳された情報が載っているサイトで、英語と日本語のページが別々に存在するサイトがあります。これは非常に有り難いのですが、未翻訳のページに行ってしまうと、そこから先のリンクは常に英語のページになってしまいます。これは致し方ないところです。

しかしまあ、このような状況は解決できないわけではありません。URLの対応表を作り、Greasemonkeyのようなプラグインを使ってユーザスクリプトを書けば、日本語ページを表示する、ということはできそうです。リンクといっても結局URLですからね。特にja.netbeans.orgのように、英語と日本語のページのURLに規則性がある場合は、対応表も楽になるでしょう。指定したURLが日本語ページでない場合、対応する日本語URLがあれば、そちらを表示する、たったこれだけです。あとは如何に多くの言語に対応するかと、できればページのヘッダに小さい(流行のブックマークボタンのような)言語ボタンを置いて、あれ?っと思ったらすぐ原語ページを表示できるようにしたいですね。それとこれってスペイン語だとどんな感じ?とか。

しかしこういったものも含めて、シームレスに他言語に対応できればいいんじゃないかなと思います。

2008年11月21日金曜日

RoRアプリケーションの配備

NetBeansを触っていると、一見、JRuby+GlassFishだと配備も簡単そうに感じたんだけどそれはなぜ?
http://blogs.sun.com/mingzhang/entry/jruby_rails_with_jpa_onとか見ると、めんどくさそうだよ?

クックパッドさんはcapistranoを使ってるそうです。う〜ん。いずれはJRuby+GlassFishへ。Javaにしたいから。

と思ったら、ここにV3での配備についての記述を発見。が、サーブレットの呼び出し? それは今要らない。

あとはこういうのもある。

なんか、違うねえ。

もっとこう、普通にRubyをJRuby+GlassFishで使いたいだけなんだけどね。「だけ」っていうのが怪しい。

MacOSXのJava

http://developer.apple.com/jp/qa/qa2001/qa1170.html

RoRセミナー

昨日、ウェブキャリアさん主催のRoRセミナーに2ヶ月連続で参加させて頂きました。

すごい人です(た)。

今回はクックパッドさんの橋本さんが、クックパッドについて、哲学を語ってくださいました。リクルーティングの一環ということもあったようですが、それにしてもすごい人。懇親会ではさながら橋本詣のような長蛇の列。私も最後の最後にご挨拶だけさせて頂きました。質問コーナーでは私が前から気になっていた、埋没される投稿コンテンツについて、クックパッドさんでは検索の工夫などにより、ロングテールになっていて、結構くまなくアクセスされるようになっているとのことです。アクセス解析的なスタッツが見えるのかどうか知りませんが、コンテンツを提供されているみなさん、これからもどんどんアップしましょう! みんな見てますよ〜。(かな?)

と、ここで実はすごい偶然が。「すみません、お隣よろしいですか?」と声をかけてきたのは、MA4で一度ご挨拶させて頂き、その後ご丁寧にメールまで頂いた方。混雑してきた会場のため、3人がけのテーブルの真ん中に後から来た人が座っていくという状態での出来事でした。帰りも別々に出たのですが、偶然地下鉄のホームで再会:)。渋谷まで楽しい会話をさせて頂きました。ショートムービー、ぜひやりましょう。

そういえば、cafe2.0企画の中に、ドキュメンタリー制作というのもあったことを思い出しました。ハリポタの作者よろしく資料メモをファイルボックスに入れとくんだったか。

2008年11月19日水曜日

HanKo :WEB印鑑作成APIに学ぶ

ウェブキャリアさんのWebAPI『Hanko』を試しに使わせて頂きました。HTMLのタグを貼るだけ、超カンタン。色も色々あるみたいで、とってもGoodですね〜。

なのですが、何にも分かってない私はimgタグのsrcのurlにパラメータが書かれているのを見て「あれ。これrailsだとどうするの?」と。で、そもそもrailsの場合(私わかってないかもしれないので間違ってたらご指摘ください)/で囲ってパラメータを指定してるので、この?name=高橋&size=50&type=maru&color=red"というつなぎ方が分からない。。。
ということでググり方も全然ダメで、当てもなくrails本をめくっていくと、結局URLの解釈について第20章でルーティングとURLということで、書いてあって、ここを何度か行ったり来たりしているうちに、「あ、railsはhanko/img/name/50/maru/redじゃね?」と。ここでhankoはコントローラ、imgはアクション、name,50,maru,redがパラメータ(コントローラ、アクション名は今テキトーに付けました)。これにそってconfig/routes.rbにmapを追加すればいんでしょ?

なるほど、きっとそうだ、そうに違いないと。
なんかブラウザのURLって普通に&とか?とか書いてあるし、いろんなWebAPIのパラメータみてもだいたい?とか&で繋がってるし。これってきっとなんか他のフレムワク用なんだろうと勝手に思い込みして解決というか問題先送りします。間違ってたら恥ずかしいね。。でもしょうがない。

と思ったら、そうだ食べログ見てみようと。で、いろいろアクセスしてみると、あれ、?&だ。あ〜そういえば、formとかって確かブラウザがID=値で送ってくるよね?あれのこと?

じゃあ登録フォームと同じじゃん。どれどれ。
<input name="commit" type="submit" value="Create" />
これ、どうやってんだっけ? rails本をめくると、書いてない。。なんだよ〜productのデータチェックで騙された感じ? どうやって処理してるんでしょ〜か、railsさん。また振り出しだ。

でいろいろググって見ると、こんな親切なページがあって、もう一度adminページのブラウザ上のソースを見ると、
<p><label for="product_title">Title</label><br/>
<input id="product_title" name="product[title]" size="30" type="text" /></p>

<p><label for="product_description">Description</label><br/>
<textarea cols="40" id="product_description" name="product[description]" rows="20"></textarea></p>

<p><label for="product_image_url">Image url</label><br/>
<input id="product_image_url" name="product[image_url]" size="30" type="text" /></p>

<p><label for="product_price">Price</label><br/>
<input id="product_price" name="product[price]" size="30" type="text" value="0.0" /></p>

<p><label for="product_special">Special offer</label><br/>
<input id="product_special" name="product[special]" size="30" type="text" /></p>

とある。で、コントローラのメソッドとして、
def create
@product = Product.new(params[:product])
if @product.save
flash[:notice] = 'Product was successfully created.'
redirect_to :action => 'list'
else
render :action => 'new'
end
end
となっている。つまりproductが配列になっているということだが、どこでProductクラスのメンバとしproduct_title などが作られているのか? それらしい名前があるのはマイグレーションしかない。ということは、newのパラメータparams[:product]でブラウザから受け取ったパラメータが渡り、このパラメータで指定された名前のカラムがproductsテーブルにあるかどうかチェックしてるってことか? う〜ん。なんだかなあ。要するに最初の疑問はimg src="hoge?=a=1&b=2"っていうのがどう渡るのかということで、submitの時も同様な形式だとすれば、img srcの場合も同じやり方なのか。ただしテーブルを使ってないので、登録フォームのやり方はおいといて、こういうのやり方でできるのかなあ。

とりあえず必要になったときにやります! 今はここまでということで。

少し休もう

なぜかBlogger@Safariがすごく遅い。重い。一体なんなんだ?
こういうとき、プロバイダが悪いのか、行き先が悪いのか、簡単に分かるステータスってないもんだろうか。

それはさておき、今日は朝から体が別人のようで、右側が強烈に頭痛。仕方ないので夕方まで寝てみました。う〜ん体は多少動くような感じだけど、頭痛が相変わらずひどい。寝なきゃ良かったのか? で、夜になって、初めて行った近くの家庭的イタ飯屋さんでトマトとバジルのサラダを食べたら、半分ぐらい解消した気がする。きっと朝風呂が良くなかったのではないかと反省。まああと実際目が疲れているというのもあると思う。

ということで、今日はほとんど何も手に付かない状況。

少し休んだ方が良いと思う反面、休みたくない。でも結局身体が言うこと利かないのでしょうがない。

2008年11月18日火曜日

jester

ここ。

JavaScriptでサーバサイドのDBをRESTで扱うためのライブラリ、かな?

yahoo!ニューストピックスAPIのレスポンスのスキーマをどう扱えば良いかという問題で、rubyで探していたが、ふとJavaScriptで出来ればブラウザだけでできるじゃないかということに気づいたかどうかは知らないが、JavaScriptでRESTのXMLを扱うライブラリを探していたらJesterがそれとなく出てきた。良さそうな代物に見えるけど、大々的にググられるわけじゃない辺りがどうなの?

ところで肝心なこのニュースのレスポンスには対応するXMLSchemaが定義されて公開されているが、実際のデータ(レスポンス)をこのスキーマで検証する方法は? ということで、こちらをこれから拝見しようかと思っているところ。

つづく。

2008年11月17日月曜日

railsでリレーション(2)

すいませんこれ、トラックバックってどうやって張るんでしょうか。

それはさておき、ここを読みながら改めてRails本のP125を読むと、なるほど、と。よい復習になりました。これで(頭の)一段奥に入ったような気がします。

railsでリレーション

ファミリテーブルはディレクトリと本体に分かれる。ノードのオバケだ。だからこそ自分でリストDBを(最終的には)作るわけだけど、RDBで別に王道を行くつもりはないので、まずできるところから。

ググ(Rails テーブル リレーション )ってみるとこんなきれいなページが検索トップに。これからみるところでブックマーク代わりに。

って読みながら「なるほどx2と」マーカーしたりコメントつけたりしたい訳ですが、はて?FireFoxのプラグイン?どっかで見たような気が。

そういうのいちいち探すとめんどくさいので、サイトに1行JSを追加するだけで、できるといいのにね。そしたらブログのデフォルトONにしておけば、流行ると思うね。できると思うし。DOM見てツリーのパスとカーソル位置ってわかるのか?でもクリップしてるんだからね、きっと何か方法あるんだよ。ブロガさん側もどこが注目されたか詳細にわかってよろしい。問題は保存場所だな。サーバに置きたくないなあ。本文はローカル(cookieか保存ファイルを指定)、ポイント(URI---これってカーソル位置まで指定できるんだっけ? でも出来なかったらURIじゃないんじゃないの?)はサーバに。しょうがないか。まいいや、この話はまた今度。


2008年11月16日日曜日

netbeansのコード補完 for mac

⌘+¥。こちらからの情報に感謝です。
Spotlightのショートカットを外すとControl+スペースでも表示されます。Spotlghtのショートカットはシステム環境設定のSpotlightの項目にあります。

2008年11月15日土曜日

Cのソース

11/10、日本androidの会の11月のイベントに参加させて頂きました。お土産にAndroidソース&Rubyスクリプト入りDVDを頂きました。ありがとうございます。それにしても凄い人でした。抽選は伊達じゃなかったですね。

久々に組み込み系の話を聞いて、Dalvik VMのCソースを眺めて、自分の土俵だなあと実感しました。でも後戻りするつもりは有りません。それはover Clock! しますから。

google earthでみつけたNASAの写真

宇宙飛行士が撮影した地球の写真と衛星画像にチェックを入れて、日本を見たら、北海道の辺りにNASAアイコンがあり、クリックしてみると見事な5角形が。

google galaxyにブログを置く。

odt形式のドキュメントをアップロードしたんですが、さすがにページの背景に設定した画像(透かし:watermark)は表示されない。そこで生ファイルを置けないものかとgoogleのサービスを見てみたが、どうやら無いみたいだ。mobilemeも全然使わないうちにトライアルが終わりそう。dropboxも遅いらしいし、クライアントにインストールするのはちょっと。有料でもいいからgoogleで扱ってほしいけど、googleグループとか使えばいいんだろうか? それともNingのようなSNSに移行したほうがいいのだろうか。

そうしてgoogleを見ているうちにそういえばgoogle earthって使ってなかったことを思いだして、遅ればせながらgoogle earthをインストール。ああ、ここにブログを置きたい。写真は置けるみたいなのでそこをゲートウェイにしても、いいかしらbyミシェル。そのうちgoogle galaxyとかが出るだろうから、そしたら。。。あ、google galaxyって想像してみるとかなり良いね。行ってないところはシミュレーションで十分。まずは有名な星雲から。

そういえば月を勝手に(といっても確かどこかの州の裁判所が所有権を認めただか許可しただか)売ってる人がアメリカにはいるけど、googleは勝手に双子座を売ったりしない。無料で使わせてくれるはずだから。

リクエスト出しとこう。

2008年11月14日金曜日

読み返し

ここらで以前に読んでいた本を今読むとどうなのか、読んでみました。

まずRAILS OF RUBY ON RAILSという、真っ黒ベタに白抜きの文字の本。私にはこのインクが肌に合わず、途中わざわざコピーを取って読んでたのですが、内容はもっと分からないものでした。今見ると「何が足りないのか」よく分かります。もちろん全部はまだ読めませんけどね。私にはデモ本もしくは1つのTipsあるいは逆引き、ですが、この本で理解出来てしまう人は凄いですね。ただ後半のCASE STUDYの特にインタビューは、サイト作ってる方や運営している方々の生声、興奮が伝わってきて良いと思います。

こういう路線ならCUT(雑誌)みたいにすればいいのに。余計なお世話です。せめてもう少しインクや製本(ページがほつれやすく、一部ページがはがれてきました)をなんとかしてほしかった。

10日でおぼえるRuby on Rails入門教室。これは出だしから好きで、なかなか良い本だと思うのですが、私の思考回路に多分合わないのでしょう。なのに出だしが良かっただけに、これで頑張ればと無理に固執しすぎたのは間違いでした。やはりある程度仕組みを理解できないと、覚えられないというか、頭に入ってこない。ちょっとしたことなんですけどね。いろんな本を読みましょう。

ということで、不満は多々あるものの、基本的に今のところRails本で行きたいと思います。

が、このままDepotをやっていても自分にとって得策ではないような気がしてきました。不満の多くはMVCとしての実装や、仕様と実装に対する考え方の差によるもので、一重に自分のWebアプリの経験不足と、逆に他の開発の仕事の経験値だと思います。

ギャップが埋まった訳では有りませんが、ギャップが見えてきて、埋めていく手がかりが掴めてきたと思います。であれば、まずは自分の考えに基づいて、自分自身のアプリケーションをもうRails化した方が良さそうです。その上でDepotと比較し、または後半のRails詳細へと入っていく、そんな方法に変更してみます。

とはいえ、MashupEXのアウトラインとコンセプトは明確なので、Depot式にイテレーションしながらやっていってみようかと思います。

ただ、私はイテレーションが大嫌いだと思います。でもここまでせっかく無理してきたんですから、最後まで無理してでもやり遂げたい。だからどこまでイテレーション出来るか分かりませんが、がんばります。あ、がんばりますはダメなのか師匠、すみません。やります。やり遂げます。よろしくです。

2008年11月13日木曜日

P128 誤植?

図10.1 で、コード上は『Name:』になっているが、フォームイメージの中では『名前:』に翻訳されているので、一瞬、対応関係が分からない。

P124 誤植?

欄外*1の1〜2行目、『外部キーのようなデータベースレベルでの制約の指定にはあまり気が使われません。』

気が使われないって、どういうこと? どういう関係なの? 気功師?

自動的に外部キー制約をモデルに追加するプラグインもあるそうだが、そもそも外部キー制約って何か分かってないことに気づき。
CreateLineItemsとLineItem?

そっか、CreateLineItemsはマイグレータ(こういう言い方は怒られる?)だっつうの。む〜ん。どうせならモデルからマイグレーションできればいいのに。ま、違うんだろうなあ何か。

ここで書きたかったのは、マイグレーションはモデルとは別ということをしっかり頭に叩き込むということ。

テーブル構成というかDBの作り方

これをみると、品目のテーブルがline_itemか。何で最初のマイグレーションに個人情報しか入ってないのか。余計混乱。流せ流せ。

品目を1個のテーブルにして、そこに沢山の注文を全部まぜこぜにして入れるのか。なるほどね。RDBってそんなんだったけね。そうそう、何かテーブルのキー寄りの項目が同じ行が沢山並んで、最後の方だけユニークになってんだよね。それ(前半部分の同じ値)がどうにも無駄に見えてしょうがなかったのを思い出しました。あれってなかなか消化できないんだよね。当時はdosの時代でmifes系のエディタを使っていたので、矩形でカットしたい思いに駆られたものです。今は大丈夫。

でも何か分かってきて楽しい。executeの呪文も今は無視してみよう。

品目って何?

P125を読んでるだけだとよくわからなかったので、"注文 品目"でググると、注文品目というフォームがあった。幕の内弁当、2個。なるほど、俺の頭でいう明細のことか。

p114 誤植?

トラブルシューティングの3つめ。『テストで混乱がうまくいかない』

ローカルファイルに保存する

これはブラウザプラグインかローミングじゃないと無理。

ウィッシュリストやリマインダ機能がないサイトの情報を自分で管理するための仕組み。商品ページが変わったるするとそのままでは使えないが、情報としては残るので、そこから商品の再検索などができるし、Tipsに『そのとき私はこれがほしかった』を入れておける。ぜひこれをブログパーツにしたいところ。

最終的にはマッシュアップできるのが望ましい。それを一旦ローカルファイルを経由するというのも、仕組みとしては面白いかもしれない。もちろんこのローカルファイルは本質的にいうと、そのサイトの外にある、ということなので、ローカルのさす場所が実はネット上のユーザドメイン(ブログなど)を指すことも論理的には可能。これがマッシュアップとは言えないのは、通常(現状)のマッシュアップはサイト主導なので、サイト側がマッシュアップサイトになってる必要があるから。

例えばオープンマッシュアップAPIがあったとする。買い物サイト自身ではウィッシュリストを持っていない。そこでOpenMashupAPIのユーザメッセージにそのサイトで買い物に必要な情報、例えば商品ID(独自の商品IDで構わない)や値段などを送信するためのJavaScriptを呼び出す1行をボタンなどに貼付けておく。

このJavaScriptはユーザメッセージを受け取ることができるサービスをプリセットしたりできるオープンソースなコードで、現在よくみられるブログやブックマーク,SNSなどへの接続と同じ類の物になる。ただここに汎用サイト指定やファイルに保存も追加して、拡張性を高めておきたいところ。以前USTREAMで使っていたメニュー形式のものが近いが現在USTREAMでは使われなくなってしまったので、あれが『何』だったか分からなくなってしまった。

ウィッシュリストを構築する方が簡単だしユーザの嗜好もわかってマーケットに活用出来る有益な情報が自分のところにだけ得られる、というならそれもいいだろう。しかし外に情報を出すことによって、ユーザは様々な利用が可能になる。ウィッシュリストも1つではないし、リマインダ機能も1つではないのだ。ブログやカレンダーと連携したり、他のリマインダに連動したり、それを様々な店舗間で比較したり。

そういう機能が囲い込みを阻害する場合もあるだろうが、そういう機能が主流になったら逆に取り残されてしまう。もちろん、よほどその店の商品やサービスに自信があれば別だ。


cookie上のデータの管理

DB上にカートの中身を置くとき、それを消すタイミングを忘れずに調べること。例えば...

・ユーザがcookieを消したときにDB上のカートを消す。
・ユーザがブラウザを終了したとき。(残す場合もあり得る)

廃れつつあるコンポーネントって?

P107(第9章)の*1にコンポーネントを使う方法が有ると書かれている。これじゃない?俺がほしいのは。と思って22.9(p476)を軽く読んでみると、どうも違うようだ。

ところで、p476には、ショッピングカートが自己完結したアプリケーションではなく、ショップの基盤となるコンテキストの一部だという内容のことも書いてある。果たしてそうだろうか。Rails流にはそうなのだろう。でも私はユニバーサルカートというアイディアを捨てたりはしない。これ(ユニバーサルカート)もずいぶん古いアイディアだが一向に実現しようとしない行動力の無さには、呆れることすらできない。

2008年11月12日水曜日

カートのリストの順番が入れ替わる?

これも何か再現しない。む〜ん。まいっか。そもそも実践で使うかどうかもわからないわけだし。ただなぜここに書くかというと、悩んだ履歴を残しておきたいから。

なんだこりゃ? flush[:notice]を使うと、カートが壊れる?

そうではありません。さっき追加したrescueのelseが抜けていたせいでした。。。

flushを外しても同じだが、cookieを消すと直るので、確かにカートを何か壊している。でもflushじゃない、、とその下にあ〜elseがないじゃないか! XXXXが。すいません。

rake db:sessions:clearがうまく動かない?

P95のようなエラーが出る。CartItemを修正したからだと思う。そこで、rake db:sessions:clearを実行したが、うまく動いていないのだろうか。こんなメッセージ。

(in /Users/Home/Documents/Rails/Depot)
Gem::SourceIndex#search support for String patterns is deprecated
/Users/Home/Documents/Rails/Depot/config/boot.rb:20 is outdated

とりあえずまたブラウザのcookieを消して対応。cookieを消したらうまくいきました。



DRYにもほどがある

DRYっていっても1つのインスタンス変数が複数のメソッドに出てくれば、その都度書かなければならない。まあ普通でしょう。でもそこでスペルを間違っても、実行するまで分からない。undefindとか言ってほしいなあ先に、せめて。お願いします。無理か。。。嗚呼、インタプリタ様。

attr_readerが索引に載ってない

これって漏れ?
何だっけattr_readerって。アクセサ自動生成だったような気が。ググってみるとやはり。でもこの本の何処に載っているのか知りたい。でも探すのは面倒。rubyのリファレンスで再度確認。

さらっと流す

P96の欄外*3にあるように、どうやら色んな失敗をわざと入れて改良という筋書きを描きたいようです。うまく自分と重なれば有り難いわけですが、解決方法にも色々あるわけですし、それがRailsの問題というより、Webアプリケーションとしての在り方や実装方法だったりすると、厄介です。

ということで、さらっと流すことが重要です。難しいけど。

例えばP95のadd_productが気に入らないとしても、仮想イテレーションを元に設計されたものなら、相手してもしょうがない訳です。

ただこうした実際のコードを通じて、いろんなことが見えてきているということが、この本が有益であることの証だし、この本に「自分の完璧」をぴったり重ねることはできない。そのズレをきちんとズレとして認識しつつ、それをちゃんと流していくことが大事。


宅配ボックス

Amazonで体重計を買った。自分の体重ではなく、飼い犬の体重を計るため。
そういえば宅配ボックスがあるじゃん。宅配業者さんはどういう基準で体重計を入れるか入れないかを判断するのだろう? もちろんボックスの大きさは体重計が十分入る大きさである。

2008年11月11日火曜日

カートに追加できない

session.rbにclass Session
def []

 Cartのinitializeに来ない。
為にしadd_productで@itemsがnilならCart.newを。
で、

if @items == nil
then
@items = Cart.new
end

って書いたら、NetBeansが電気マークを出して、なにやらクリックすると、

@items = Cart.new if @items == nil

って直してくれた。ありがとうNetBeans!

追ってみると、session[:cart]がnilじゃない?っぽい。
でも session[:cart] ||= Cart.new じゃブレークポイントが張れない。そこでsession[:cart]がnilじゃないかどうか、適当なロジックを足して確認。すると、本当にsession[:cart]がnilじゃない! なんで?

とりあえずお腹がすいたので晩飯を食いに出かけたその道すがら、突然思いついたことが。「あ!わかった!」と、思わず声を上げてしまいました。cockieだ。最近MacBookのSafari、リセットしてない。だからずいぶん前にやったNetBeansに付いてくるサンプルのDepot動かしたときのsessionのcockieが残ってんじゃないか?

さっそく戻って試してみると、ほらね。やっぱそうじゃん。まずいんじゃない?ブラウザが終了してもセッションが切れないなんて。Bloggerは? (とここでSafariを一旦終了) 大丈夫だね。ちゃんとクリアされて、再度ログインから始まる。当たり前か。

念のため、もう一度、サンプル版のDepotを動かしてみる。あ、マイグレーションからか。大丈夫か? やってみよう。あれ、サンプルのデータが入らない。カートは空。追加は出来る。ブラウザ終了して再度実行。カートは空。大丈夫じゃん。どういうこと? 

データベースを確認してみると、マイグレーションで「バージョン0へ」をやってもデータが残ったまま。NetBeansからやってるからか? コンソールでやってみよう。

rake db:migrate VERSION=0

同じだ。もういい、あきらめよう。とりあえず原因はわからないけど、cockieが残ってしまい、session[:cart]がうまく動かなかったと。



P91 思い出してください。・・はい。。。

session[]というハッシュ(連想配列)は、どこに定義されるのか? つまり、誰が持っているのか。

P91に「思い出してください。現行のセッションはRailsによって、コントローラから見るとハッシュであるかのようになっています。」
Rails本より引用)

ん? 思い出す? 思い出せない。。
何処にそんなことが書いてあったのか? これか〜。P90「Railsはコントローラ内に、sessionと呼ばれる、ハッシュに似た特別なコレクションを保持しています。」(Rails本より引用)

ハッシュであるかのようってどういうこと? プログラムじゃないじゃんそんないい加減なもの。まあいいや、理解不能の上塗りは。

とにかく、この「session」って何?メソッド?何のオブジェクトの?何処にある? さあ。

currency_of_this_store

number_to_currencyが気に入らなかったので、application_helper.rbに勝手にcurrency_of_this_storeを追加してそこで¥を付けることに。でもここで¥スペースを入れてるんだよね。だけど¥と数字の間の隙間ってビューだよね。画像の場合もあるよね。だから本当はビューオブジェクトとして処理したいんだけど、取りあえず入れる所がないので、adminのリストでも使うことを考慮して、application_helper.rbに入れることにしました。

メソッドの呼び出し時のパラメータ指定を()したりしなかったり。

外して書ける場合は外す、みたいな不統一性は、可読性を下げると思うし、間違いも起こりやすいと思う。冗長性を排した良い書き方などと言う人がいますが、賛成しません。ただRails流といえばそれまで。は〜。ため息をつくと幸せが一つ減るとか、言われたことがある。それ以来ため息はつかないようにしてきたが、最近出るこれはきっと「弱音を吐く」ってやつか?

そういえばさんまのからくりTVで太鼓を教えるおやじさんが、「がんばるって言うのは日本人の悪い癖、やるかやらないか、どっちかなんだよ」(注:表現は不正確です)みたいなことを言ってたのを思い出した。XX〜やるぞRails。

全角英数の入力方法

全角英数の入力方法を調べていたら、™(トレードマーク)などのショートカットが載っているサイトを発見。他にも面白そうなエントリがあるのでメモします。

おっと、それじゃなくて、全角英数は言語環境の設定からことえりで全角英数にチェックを入れる。

ちなみにことえりのメニューに出てくるショートカットの記号で「^」が分からない。コントロールキー? あたりだ。こちらを拝見。ありがとうございます。

2008年11月10日月曜日

add_to_cartはまだ追加されていない

って自由課題に書くことじゃないと思うよ。普通分かるだろう?と怒られそうだけど、そんなときは、分かる人がこの本読むかよ!と逆切れましょう。飛ばしたかと思ってずいぶん探したんだから(3分ぐらい)。

でも日時を表示してみましょうと言われて、いらないいらないと思ったが実は覚えてないので3秒で出来ない自分だからこそ、Clock!が必要なのさ。必要は発明の母なり。

numner_to_currency

通貨をフォーマットしてくれるヘルパーさん。国際化対応のために。 こうやって書けば書くほど、ちがうんだよなあって気が、秋なのか?と共に深まっていきそうな予感。

でもドルで出されてもなあ。rails.orgのapiリファレンスを見ても書いてないなあ。まさか例題にhushでポンドとかって書いてあるけど、そんなわけないよね〜。国際化っていうんだから、currency(通貨)のデフォルトをサイト対象国の販売通貨にするってことだよね? もちろんUSドルのサイトが単に日本語化されていて、日本から買えるけどドルだよ、っていうのはあるけど、この場合の国際化には当てはまらない。Amazonさんみたいにamazon.co.jpで買うと円だよということじゃないと。

分からないので、練習ということで、unitでも指定してお茶しよう。

ん〜ぜんぜんだめだ。普通に"¥"ってやると¥だし"¥ "(ブランク1個)だとそう出るし。単に:unitで指定した文字が手前に付くだけっぽい。ん〜それ何のミーニングがあるの?byネッササリー体操。

NoMethodError in Store#index

商品レコードを登録したら、こうなってしまった。
1個もレコードがないと、タイトルだけ表示されるのになぜ?

あ、わかった。

product.titleとすべきところを、@product.titleとしてしまっていたからだ。

で、よくメッセージを読むと、ちゃんと書いてあるじゃん。

NoMethodError in Store#index

Showing app/views/store/index.rhtml where line #5 raised:

You have a nil object when you didn't expect it! The error occurred while evaluating nil.title

ほら、nil.titleって。ちゃんと読もうね! こんなに親切にエラーメッセージ出してくれてるんだからさ。

言い訳すると、NoMethodErrorっていうのが、先入観の塊を作ってしまっておりました。猛省(もうせい)いたします。

ところで猛省ですが、「もうしょう」と読んでました。Mac付属辞書を見ても「もうしょう」とは出てませんね。で、思ったんですが、プログラミングをなさる皆さん「定数」を何と読みますか?

私は自信を持って「じょうすう」と読みます。昔コンパイラ関係の仕事にちょっとだけ携わらせて頂いたときに、「じょうすう」と読むんだと教わったからです。あ、あと、漢字じゃないですけど「Warning 」、これ何てカタカナします? 私はこれも同じ理由から自信を持って「ウォーニング」と言わせて頂きます。でも実際なかなか言い辛いんですけどね。ときどきワーニングって言ってしまいます。

DBが合わないとNo Method Store#Index・・・間違い

これは間違いでした。書き直します。

正確なメッセージはチャプチャする前に変えてしまったので分かりませんが、だいたいそんな感じのメッセージが表示されていました。

DepotというサンプルはNetBeansのサンプルソースとして入っていて、最初にこのiMacでやっていたのですが、自分のMacBookで作業を進めていたものをソースだけもってきて続きをやろうとしてたので、DBが合わない(Schemaとテーブルのカラム)

ところでMySQL Administratorでデータベースの表示「Catalogs」を見ると、「Schemata」って書いてあって、例えばdepot_developmentを削除しようとすると選択したSchemaを削除するか?と聞いてくる。ということは、depot_developmentという単位はSchemaってことなのか。私はてっきりテーブルのカラムのことをSchemaっていうのかと思ってました。ざんねん。テーブルをダブルクリックして中身を表示すると、columns/indicesと書いてある。indicesっていうのがindexの複数形っていうのも今知ったよ。。。インディシーズ?

ということで。


<br>と<br />の違い

こういう検索は難しい。ようやくここで発見。ありがとうございます。
XHTML式だと。なるほど。ぜんぜん分かってないので先行こう。

1つだけ。
どちらも適切なDTDに沿って使えば正しいタグだとある。Depotの例でいうとdtdファイルのURLが書いてあるので、きっとこれの事だろうと解釈。これはscaffoldで作られたadmin.rhtmlには自動的に挿入される。

2008年11月9日日曜日

P83 レイアウト store.rhtmlとadmin.rhtmlの違い過ぎ

またしてもstore.rhtmlは特別扱いな感。admin.rhtmlはどうやって出来たんだっけ?最初からあったような気が。あ、あった。generateのscaffoldをかけたときだ。scaffoldはモデルとコントローラのペアで作るよね。なんでstoreはscaffold使えないんだろう? モデルは最初のコントローラとしかscaffoldできないの? む〜ん。

確か最初の方にRailsは実際のwebアプリケーションから共通項を抜き出して開発されたフレームワークって書いてなかったっけ? adminと1個のモデルとの結合なのか、adminとモロproductの結合なのか知らないけど、そこにscaffoldが当るっていうのがなんだろうって感じだねぇ。。もっともっとテンプレートっぽいフレームワークのほうがいいんじゃない?いっそのこと。

クラウド(が一般化すれば)なコマンドラインで、webapp newとかやると、webappなアプリケーションが1個インストール(インスタンス化)されるのを想定していますが、なんか中途半端な感じがします。テンプレートなら10分と言わず、1Clickでブログできるだろうに。

もし本当にrailsがこんなんだったら絶好のチャンスですし、さもなくばいずれ自分の勘違いに気づくでしょう。

P80 adminとの違い過ぎ

確かに、販売可能な商品の一覧と管理上の商品一覧とは違うだろうが、チュートリアルとしてどうなんだろうこの扱いの違い過ぎは、と思ってしまう。

これは考え方の違いなのかもしれないし、何か別な理由かもしれない。adminもstoreもURL上はadmin,storeで終わっているのにadminのデフォルトは説明がなく、storeはindexだとか、データベースから商品の一覧をモデルに問い合わせるとなっているが、adminのときはデフォルトでリストが表示されたわけだ。ちなみにadminの場合、コントローラのコードはscaffold :productで、URLのアクションに相当するメソッドも書かれていない。

そういえばHello World!の例ではどうだっけ?と見返してみると、ちゃんとsay/helloとなっていて、sayコントローラにhelloメソッドを実装している。

だんだん分かってくると、こちらの理解からみた矛盾がまた新たに発生してくる。困ったもんだ。しかしそれだけ『よくデキテキテルわ』ということだ。

コード管理サービス

バージョン管理に関するエントリを読み返していて思ったのですが、なんだっけ?すぐ忘れる。。。思ったのですが、思い出した。実際にコード管理サービスを行うことについて一句。

コードを保守するリモートディスクサービスをやります。そこから統計的なコード情報を得て、学術的なフィードバックを行ったり、バッチ情報を流したり、製品情報を流したり、そういうサービスも良いのではないかと。

ここに置くコードは何もオープンである必要はありません。しかしサービス側はコードを静的や動的に解析し、二次的情報を無制限に得る権利を有することとします。ユーザは自分たちのコードがどの程度主流なのか、知ることが出来ます。自分たちのコードの冗長性はどうなのか、使用しているクラスやライブラリはどの程度推奨や標準に沿っているのか、そういったフィードバックを得ることができます。

もちろんここに静的解析結果報告や使用しているコードが何らかのパッチに影響を受ける場合のアラートなど、様々な付加サービスを有償もしくは無償で提供していくことが考えられます。また、従来の広告と異なり、コードを技術的に評価することで、より高度な質の高いジョブマッチングを行ったり、開発元に利用頻度情報を提供することで、素早いフィードバックを促したり、さらにそうした開発元の対応を評価してユーザにフィードバックしたり、多種多様な可能性が広がると思います。

Google Code?でしたっけ? いろんなコードを集めているというか登録できるというのか、そんなサービスがあると思いますが、まずはそれで何ができるのか、できないのか、調査してみたいと思います。

ぱっとみ、ダウンロードして使ったりするだけなんでしょうか。特に機能的なサービス(機能が何を指すかだけど、コード解析や付帯したコード管理など)は無いみたい。

実際コードをホスティングすると逆に使えないユーザも出てくると思うので、ウェブアプリなんだけどローカルでも動く(Javaアプレット?)というのは、クラウドの過渡期としては必要かもしれない。そこを敢えてリモートでCPU使ってサービスしてペイできるかは、非常に重要な問題。

_formのadmin/createの謎が分かった。

_formはadminというコントローラに対応すビューなので、常にadminなんだ。と思う。いまからstoreを作ってview/layoutsの下にコントローラと同じ名前であるstoreを取って、store.rhtmlを作るとある。

でもadminを作る際の説明では単にcssへのリンクをHTMLページ内に記述するという文脈でさらっと出てくるだけだ。やってることは同じはずなのに、方やレイアウトの作成方法として載ってるというのは、非常に不公平な感。

なかなか馴染んでないけど、少しずつ馴染んでいるのもまた事実。カメのようだけど自分では納得感があって気分的にはいい感じ。

Macのウィルスチェッカー

Mac用ウィルスチェッカー『ClamXav』をインストール。これは『ClamAV』のGUIアプリケーション。親切なことにClamXavをインストールして最初に起動したときにClamAVがインストールされてないと、自動的にインストールするか聞いてきて、そのまま続けてClamAVをインストールすることができる。便利〜。

ところでClamAVのパターンファイルはいつ誰がどうやって更新してくれているのだろう?


<form action="admin/create" method="post">

http://localhost:3000/admin/newのページのHMTLソースをブラウザでみると、<form action="admin/create" method="post">になっている。

でも_form.rhtmlにはadminっていうのが出てこない。なかなか繋がらないねえ。。

ここまでHTMLのformタグの意味は書いてあっても具体的な送信内容について説明されてるところがなかなか見つからなかったが、ここを見て漸く理解。ありがとうございました。

『読めば分かる』サイトにはこういうところも当然入ることになる。ボリューム的に大変だろうけど、こういうサイトは特に日本語ではなかなか無いと思うので、ぜひやり遂げたいと思います。たくさんの人が参加してもらえるよう頑張ります。タイトルはちょっと弱気な『読んで知る』でもいいかな。

2008/11/9 わかった

2008年11月8日土曜日

バージョン管理

さて漸く午後に入ります。第7章です。ここで自由課題を追加してしまったので、ソースを替えようかと思って一句。浮かびました。

バージョン管理ツールがどれほど使いやすくて素晴らしいのか分かりませんが、使っていることを普段感じさせないというものは、まだ無いように思います。無知なだけでしたらごめんなさい。

大勢で1つのプロジェクトを更新する、ということと、純粋にバージョンという意味には本質的な違いがあると思います。私が考える本質的なバージョンとは、変更履歴の集合(積み重ね)です。

一方、複数の人が同じファイルを修正するというのは、同じファイルの違う場所なのか、同じ場所なのかという、単純に競合の問題だと思います。ですから当然一人でやってるときには、競合の問題は起こり得ません。

しかし競合の問題も各人からみれば、2つ(変更前と変更後)の違いでしかありません。実際、異なるファイルであれば、競合は起きない訳です。ただし全体として1つ選ぶとき、各人のどのバージョンをそれぞれ選ぶのか、ということになってきます。そこで初めてプロジェクトとしての総合的なバージョンという概念に当てはめたバージョン管理が必要になってくるわけです。そしてそこから翻って個々人のバージョンにおいて、プロジェクト全体のバージョンとどういう関係なの?という属性が付いてくるというか、必要になってくるわけです。

話を初めの方に戻すと、使っていることを感じさせない、というのは、何らかの文書を作成するものであれば大概やっている自動保存というものになると思います。それと自分が明示的に保存したい場合。そしてバージョン管理のためには、保存の度に2つの保存の間の差分と、その全変更履歴が正しく保存され、後でそれに基づいて、さまざまな管理操作ができる、ということになってくると思います。

従ってバージョン管理のリポジトリとの出し入れの間だけバージョン管理されているというのは、本質的なバージョン管理として、ちょっと弱いと思うわけです。つまり、あるエディタがバージョン管理ウェアに対応するということは、保存先(開く元)としてOS管理上のファイルを指定するのではなく、バージョン管理上の仮想ファイルとやりとりする必要がある、というkとです。

で、そういうものを私は作りたいと。

ディスク管理ソフトの作り方を知ってる訳じゃないのでアレですけど、Macで言えば、仮想ファイルをマウントして使う。アプリケーションからみると普通にファイルですが、仮想ファイルの管理モジュールを介在させ、ユーザから見えない所で差分情報を管理します。プロジェクト単位のバージョン管理を行う場合は、アドミンツールを使って仮想ファイルをコントロールします。また仮想ファイル(ディスク)としてマウントすることで、WebDAVやSFTP、SSHなど、ネットワーク上に配置することも可能でしょう。

また、プロジェクト管理ツールとも連携して、あるバグ票、あるリリースバージョンといったクエリから差分情報だけを抜き取ってバグ票に添付する、FAQに流す、チュートリアルにエクスポートする、といったことが可能だと思います。

ま、かなり適当なことを書きましたが、兼ねてから明確なイメージが沸かなかったので、この機に書いておきました。

PDF + 音声 &| ビデオ

Sun Tech Daysに行く予定です。去年はぜひ宣伝してくださいということでした。今年もそうであることを願っています。その前提でハンディカムで撮ったビデオとプレゼン資料としてアップされるであろうPDFを連携させたいと思っています。が、なかなか思うようなソフトが見つからないので、自分で作ってみようと思っています。仮に名前を猿芝居とします。

1.猿芝居にはビデオ、PDF、タイムラインデータが渡されるものとします。
2.データはURLでホスティングされている場所を示すか、ローカルファイルから取得可能とします。
3.これら3つのデータをセットにしたデータもXML等で記述可能とします。
4. タイムラインデータは、単純に経過時間とページのペアとします。
5.できれば途中でマニュアルでPDFを操作したり映像(音声)を操作したりできるようにしたいと思います。このとき映像とPDFの同期を付けたり外したりできるようにします。
6. 猿芝居はAjaxなWebアプリとし、とはいえ最初にJavaScriptを取得したら、以降はブラウザでのみ動作可能としたいと思っています。
7.せっかくなので、商用用途で使えるよう、広告挿入(開始前、視聴中)を可能にしてみたいと思います。
8. ブログパーツとして埋め込めるようにしたいと思います。

さてどうなることやら。

base.rb render のソース

base.rbでpartialを検索すると、次のifの辺りでしか使っていない。
それはともかく、

          elsif partial = options[:partial]
            partial = default_template_name if partial == true

とある。elsif で中に入ってくるならpartialはtrueだけじゃないかと思うが違う?
あ〜true以外で真になるってこと? 例えは"form"は真だけどtrueじゃない。ということはpartial => trueってやると?、default_template_nameがpartialに設定されると。ということは、呼び元(new.rhtml)が、render :partial =>'form' なので、partialは...'form'だが。む〜ん。

あ、あった_form.rbにnewのフォームのERbが。な〜んだよ。でもどうやって動くかは謎。そのうち出てくるでしょうということで、先に進もうと思ったけど、ちょっと調べてみることに。

まず<label for="product_price">について。product_priceというIDとこのラベルを関連付ける? で、<%= text_field 'product', 'price'  %>っていうのは、なんだろう? ググってみるけどどうもよくわからない。これがどう展開されてラベルが何と関連づくのか。ボタンならいざしらず、単なるテキストボックスで、値を入力したときに何かコードを動かしてるわけでもないと思うのだが。

とりあえず単純に、追加した項目名=specialを当てはめて行を追加してみる。

あ、表示された。試しに30% OFFと入れてみる。createボタンをクリック。あ、リストに30%が表示された! 一瞬喜んだが、何も理解出来てないことに気づいて落胆。もうちょっとだな。。。

p77 Product Listにpriceを追加

p77自由課題にあげられた、priceの表示をpruduct  listに追加しようと思ったのですが、ついでに特価などのアテンション表示を上に付けられるようにしようと思い、いろいろコードを見てるのですが、よくわからない。特に、render partial =>'form'。

特価情報は練習なので、最初テキストで追加するだけで良いのですが、priceのときは動的scaffoldを使っていて、たぶんこれが勝手にテキストボックスを追加しなのではないかと思っているわけです。で、new.rhtmlをみると、renderになっているので、一体どうやって追加したら良いのかと。

きっとこの先出てくると思うので、先に進みます。

HTMLに慣れてきた感

(1) HTMLだけ
(2) HTML+CSS
(3) HTML+ERb

この理解には、CSSクリエイティブ・デザイン ISBN-10 4774131636 の果たした役割が大きいと実感しています。

例えば最初、表示、編集、破棄のlink_toの行の改行(<br/>)が抜けていたため、3行縦並びではなく、1行横並びになってしまっていたんですが、CSSで右詰めって言ってるから、右詰め、右詰め、右詰めってくるよなあ3つ。。あ、改行いるんじゃね? と思って本のリストをよく見るとちゃんとbrタグが入っていたことに気づいたわけです。我ながらおおすごいじゃん、わかってきてるじゃないか、と嬉しかったです。

よく、デキテキテルわ。byミシェル。

ということで一気にぐったりして爆睡してしまいました。

この後、
(4) HTML+ERB+JavaScript

となると思います。

2008年11月7日金曜日

迷惑千万なウェブサイト

まったくムカつく!この無意味にCPU100%にするウェブサイトが未だにあるとは。

ブラウザ(だけじゃないんだけど)のCPUの利用率を監視して、3秒以上負荷をかけたら自動的にブラックリストに入れて、二度とアクセスできないようにするアプリを作るぞ!

既出でしたらお教えくださいませ。

履歴を見ても分からないのはなぜ?

バックスラッシュは[option+¥]

MacOSXでは半角エンマークと半角バックスラッシュが違うって知ってました?? 一体どういうことなんでしょう?

と、ググってみると、あちらこちらに分かりやすく情報が掲載されていました。また、MacOSXでバックスラッシュを入力するには「Option+¥」との情報はこちらから。みなさんありがとうございます!

UTF-8ではエンマークは[U+00A5]、バックスラッシュは[U+005c]。しかしShift-JISは0x5cだから、エディタがUTF-8に変換する場合は、エンマークのA5をとるか、バックシュラッシュの5cを取るか、という問題があると。bashでエンマークを打つと勝手にバックスラッシュになるので、同じだと思っていた。この辺は昔から*nix系を使うと必然的にシェルを使うわけだが、そこではいつもエンマークがバックスラッシュだったので、そう思い込んでしまったんだろうな。

てことで、NetBeasnで正規表現を書くときは、[option+¥]、を忘れずに。

第7章 ここからが午後?

ということで、ここまでは午前中だったらしいです。

P70 validates_format_ofが動かない

普通にaaa.jpgとか、本のように/images/abc.jpgとかやってるんだけど、常にエラー。とりあえずコメントアウトして、ペンディングにして、先進みます。

で、エラーチェックは前にも書いたように、レコードに変化がないと動きません。当然ですね。そうすると、このチェックを入れる前に登録したレコードが置き去りにされます。かといってチェックは自動で出来ても、結果を表示する方法がいまは1レコード用のページしかないし、DBに項目もないので、どうするんだろう?

こういうのがレコードまでケアされないマイグレーションの問題と同じで、こっちはレコードを処理するコードに変化があったら、DB全体として見た場合に扱いが変わるということなんで、その辺だね。

だからもっとこう、データチェックなんてそれこそ必須処理なんだから、Railsにもっと頑張ってもらいたいところ。この先出てくるのかも知れないので、取りあえず推移を見守るということで。

p69,p70 あれ? validateは誰がいつ呼ぶ?

priceをチェックするvalidateですが、一体いつ誰がどのタイミングで呼ぶのでしょうか。

あ、P69に書いてあった。申し訳ない!
RailsがProductのインスタンスを保存する前に自動的に呼び出す、とある。インスタンス? あ、インスタンスって、そういえばこいつらのインスタンスって誰が「持ってる」の? 何気にMigrationとかもそうだよね。全然気にしてませんでした。うっかり。

まあ、Railsがどっかでやっとっくよ!なんでしょうが、Productみたいにいつ動くのか分からないと、作ったうちに入らないよね当然。

Productは多分商品1個でインスタンス1個でしょ。バカみたいな答えで申し訳ない。ということは、レコードを追加したときNewだよね? そっか、で多分ActiveRecord絡みの何かがそれをテーブル単位かなんかでさらに管理(保持)すると。想像ですけど。

だとして、レコードの追加や更新があった時に?DBを更新する動きになるわけで、そんときか。そのときにvalidateを呼ぶんだねきっと。ということは、きっとこれも規約に則ってないとダメってことだよね。つまり、validateっていう名前で、多分パラメータなしっていうこと。じゃないと呼べない? どうだろ。この人たちrubyコードを構文解析して値を取るっていうのを、確かRailsのバージョン取得でやってたからね。油断は禁物。とりあえずこれ以上は想像しててもしょうがないのでペンディングにして、今後の経過を見守ろう。

Migrationに関してはねえ、インスタンスは1個なんじゃない? でコマンド実行時にやると。で問題ない気がするけど。

P68 validates_presence_ofで問題発生

Titleが赤枠で囲まれてない。メッセージはTitleもエラーだと言っている。本の写真では囲われてる。はて?

あ、validates_presence_of切ったとき、パラメータのtitleをtileにしてるからだ。でもそれだったらTileっていうフィールドがないっていうエラーだよね? でもメッセージは can't be blank(空はダメ)になってる。はて?

tileをtitleに直したら赤枠が表示されました(面倒なので写真はなし)が、メッセージは同じ。ってことはそういうメッセージってことだねきっと。

P68 どんな感じになるの?っていう感覚

ちょっと脱線します。

validates_presence_of (チェックする項目の羅列)というメソッドは指定されたフィールドの存否と内容が空でないことをチェックしてくれ、エラーがあると画面にエラーメッセージを表示してくれる。

こういうメソッドを気軽に試せる環境も入れていきたい。対象は、rails本を読みを得て初心者は脱した初級〜上級者。動くリファレンとして。P68までのレベルでなら開発者が手動で追加しなければならない部分も自動化できると思う。

その上でそれ(本来開発者が自分で追加する内容)を、いわゆるToDOもしくはタスク一覧などの形での情報提供もやっていきたい(動くマニュアルという構想もST青山の時代からある構想だけど、一向に取りかかれていない現実:P)。

逆引きや検索、実際のページからオブジェクトを指定しての逆引きとかもやりたいね。ページにインスペクトボタンを内蔵して(firebugのような)ブラウザのプラグインじゃなしに、あくまでWebアプリとして実装したい。だったらページにツールバーを出せばいいのかな。そうすれば色々載せられるし。ユーザ(セッション)管理上でちゃんとやればいけると思います。だんだんC9fonに近くなってきた。


ということでググ: CORBA

CORBAをググってみました。

聞いたことはありましたが、何だかメインストリームじゃなさそうな、でもメジャーな技術なような。こちらに独習用のドキュメントがあります。閲覧にはログインが必要で、ここから無料の会員登録を行います。

2008年11月6日木曜日

NetBeans RoR Special Edition

NetBeansをRoR専用にカスタマイズするというのも面白そうだけど、時間がないので無理だな。それだったらJavaScriptで動くエディタを見つけるか作るかして、Webアプリケーションにしたいし、MashupEXにVisual Daze! RoR を入るのが先か。

NetBeansをどうにかする前段として、NetBeansのモジュールをもっと分解して独立した部品にしたい。コマンドというよりウィジェットとかJavaAppletとか。実験的にRESTなWebアプリにしてみるとか。

OpenPluginというよりOpenPlugだろうか。ググってみるとモバイル系の会社がフランスにあるようだ。Plugletとすると、Java Pluglets APIがあり、Appletとはローカルディスクにインストールされる、Appletが&ltapplet>タグで起動されるのに対し、Context-typeで起動される違いがあるらしい。む〜ん、ぜんぜん違うなあ(求めているものと)。あとはCORBAか?

chane_columnは失敗に終わった。

マイグレーションコードを書いていたら、,(カンマ)が先頭に来ると構文エラーになる。これはNetBeans 6.5 RC2でのこと。強引に実行  ruby script/generate migration update_price してみるとホントだ、エラーになる。

Cで書くときからの習慣で、自分の気にしている意味に応じて改行する、カンマで区切るときは、カンマを先頭にする、という「冗長な」記法を好んで使っていたので、やってみましたが、すっかり嫌われてしまいました。まいいです。理由は今は分かりませんが、そのうちruby本(プログラミングRuby第2版)に取り組むようになったら消化したいと思います。

で、カンマさえ後ろなら改行しても大丈夫だったので、思いつきで項目の属性変更してみようと、:scale => 1 をchange_columnでやってみましたが、どうもうまく行きません。取りあえず、remove_columnしてからadd_columnするとうまくいくので、migrationはOKなようです。MySQL Query Browserで内容も確認したので、合ってると思います。

※ちなみにMySQL Query Bworserは日本語の値はうまく表示出来ないようなので、そのうち代わりのものを探したいと思います。


scaffoldは足場って言ってるじゃん最初から

なんだけど、とあるセミナーでしていた、scaffoldがなかなか良くて、これを改造して作っていく、みたいな話を、素人が中途半端に聞いたせいだと思うんですが、10分で作るデモってこれメインじゃないですか。フォーカスされてるわけですよ私から見ると。他の人には、何れ取っ払われる足場であって、エレベータじゃないっていうのは、当たり前のことなんでしょうか? む〜ん。

だからVisualだぜ!RoRみたいなものが必要な気がするわけです。だってHTMLも知らなきゃシェルのコマンドだってろくに打てないやつに、『自動で出来るよ!』って言われた日にゃあねえ、最後まで面倒見てよ、って思ってしまうよと。

ですが、作った人自らの口ではっきり言ってもらえたおかげで、すっきりしました。(P65 David曰く)

P60..61 db:migrate時に

db:migrateで、テーブルproductsに追加する項目のうち、:description, textを間違って、:testにしてしまい、エラーが出たので、:textに直してやり直したがエラーが消えない。VERSION=0で戻そうとしてもdownが動いた感じがしない。そこで強引にupにdrop_tableを入れると削除出来ないと言われる。仕方なくMySQLのGUI Toolからテーブル(products)を削除しようとしてもエラーになってしまう。

さらに仕方なしにGUI Toolでdepot_developmentを全部消して、もう一度db:migrateを実行したら今度はうまくいった。む〜ん。

ちなみにこの状態でVERSION=0をやってみたがうまくいったようだ。お、shema_infoがある。これは残ってて良いのかな。

よく考えてみると、NetBeansのサンプルソースにDepotが付いていて、これを動かしたことがあるので、そのときに作成したテーブルが残っていたせいかもしれない。もっかいやる?

P61

P61より引用『downメソッドはupメソッドの結果を元に戻します。』
これはウソでないかい?。元に戻すかどうかはそこに書いたコード次第であって、Railsがやってくれるわけではないと思う。

本当かどうか確かめるために、ちょっと先をめくってみる。分刻みのイテレーションって言ってるのだから、次のバージョンアップについてきっと書いてあるだろう。

案の定、すぐ、P65には足りない列の追加という項目が出てきて、P66でそのコードの説明があるが、やっぱり手で追加するんじゃないか。すなわち手で書いたコードでは戻るかどうかはわからない。残念な結果だけど疑問は解決した。

downメソッドのテストも毎回必ずしないと元に戻すなんて出来ない。だいたいテストしてもバグがあるんだから、元に戻せるなんて言い過ぎだ。こういうところは声を大にして言っていこう。

それより何より、戻すかどうかわからないコードをデバッグするのは相当ストレスだと思うけど、それってRailsが最も嫌う無駄な雑用に近い保険じゃないんだろうか。

それに、どうせupメソッドを見て書くに等しいdownメソッドなら、必要になったときにupメソッドをみて書けば良い。そうすればトータルの時間はずっと少なく済むはずだ。

戻せると思い込んで、いざ戻そうってときに動かないショックは、大きいよ。

P60

productという名前のモデルをジェネレータで作成すると、Productsというテーブルを関連付けるとはまだ何となくわかる=>productのモデルのDBテーブル名を複数形名とする命名規則ってことだろう?

で、このテーブルをどうやって見つけたのでしょう?とあるが、どういう意味?それがdatabse.ymlファイルのdevelopmentエントリを記述するときにテーブルを探す場所を指定していたのですと言われてもなあ。どこにも指定してないし。ymlは最初っから場所決まってるし。DB上のテーブルはdepot_developmentでマイグレーションを実行しなければ、productsテーブルは作られないわけだし。意味不明だ。とりあえず無視。

2008年11月5日水曜日

ハードディスクのデータはそんじょそこらの磁石じゃ消えない?

さて、プレゼント用の磁石を探そうと、ハードディスクに入っている磁石を探していたら、ハードディスクのデータが磁石で消えるというのは都市伝説だったことが判明! みなさん知ってました? いろんなQ&Aサイトで、みんな声を張り上げてデータが消える!と叫んでおられたやうですが、ハードディスクのモータ部分なんでしょうか そこに強力な磁石が入っています。まあ、家庭とか会社で一般的に使う磁石で消えるなら、あの内蔵された磁石でとっくに消えてるでしょうなあ。

ハードディスクの物理処分で散々分解して破壊しまくって、この磁石スッゲー強力とか感心してたくせに、私も丸っきり120%ゼッタイ消えると思ってました。ぜんぜん考えもしなかった。頭悪ぅ。

ハードディスクのモータ部分の磁石についてはこちらを参照しました。

Rails本の原作

原作(※)が来ました。やや遅れて注文したプログラミングRuby第2版 言語編 ISBN4-274-06642-8 も一緒に配達されて助かりました。ここまで本格的に覚えるつもりは全くなかったのは前に書いたと思いますが、著者がDave Thomasさんが中心ということで買ってみました。ライブラリ編はRails本を買いにいったときもあったのですが、そっちはまたの機会に。

def respond_to(*type,&block)が分かるといいですが。

さてハードディスクに磁石で書き込むリナクサのことは英語で何て書いてあるでしょうか?

原作p25より引用:
『"I-code-by-twiddling-the-bits-on-my-hand-drive-with-a-magnet"』

正解者の方には抽選で1名の方にハードディスクのビットを反転させるのに最適なごく有りふれた磁石をプレゼント!みなさんふるってご応募ください、みたいな企画を考えてます。ところで単語を何故かハイフンで繋いでますが、どうしてでしょう? どなたかご教授くださいまし。

※原作:Agile Web Development with Rails  ISBN-10 0-9776166-3-0

ウェブなのにチェーン店

ウェブ上にチェーン店やフランチャイズを持つというのはどうなんだろう。

一見、ウェブは繋がってるんだから1個だろう、と思うのは正しいでしょう。でもそこを何とか、複数の店舗に分けるんですよ。

どう分けるかという問題もありますが、とりあえず普通に地理的に分けてみましょう。で、やはり普通に店長もしくはオーナの所在地別に分けます。そうすると、お店のブログは当然地域密着型にしやすい。場合によっては商品の在庫をその地で持ったり、リアルなデモ店舗をもったり、地域とマッシュアップしたり、交流を図ることができるような気がします。

例えばMashupEX山中湖支店というのがあれば、山中湖に関係あるサイトという認識をされるでしょうし、実際、山中湖の観光とマッシュアップしたり、日々の山中湖の写真や動画が配信されれば、そのサーバが実際にはパリにあったとしてもいいわけです。

ウェブショッピングモールに望むこと

例えば私の好きなAmazonに望むこと。

1. カートの中身を右袖に軽く表示してほしい。
買い物をしてる最中、リアルな買い物ならカートは手元にあって、何が入っているか常に分かるもの(預けるなどの例外もあろうが)。

2. 商品を表示したとき、その商品が、今カートに入っている/カートに保存している/ほしい物リスト(ウィッシュリスト)、を軽く表示してほしい。

例えば(メーラーのDockアイコンのような)カウンタ付きアイコンでリストの数や順位(ウィッシュリスト)などを合わせて表示。そもそもウィッシュリストに優先順位を付けて欲しいとか、ウィッシュリストに入ってたヤツを買ったら購入済みにして何冊も買わせないようにして欲しいとか、そういう要望もある。

3. ポイントを増やして欲しい。

4. カレンダーを付けて欲しい。

5. ウォレットを付けて欲しい。

これら3つ、特に4と5は他社のウェブサービスに解放して欲しい。つまりAmazonをパーソナルステーションにしてしまうのだ。だってクラウドの先頭切って走ってるのはAmazonだし、色んなものが買えるわけだし。ダメならYahoo!JAPANさんに行こう。

というか、自分でやろう。

ところでどうしてAmazonが好きなのか。自分でもよくわかりませんが、多分まだ日本のサイトが無い時代にアメリカのサイトで洋書を買ってDHLで2、3日で届いたときの感動とか、その後わざわざマウスパッドを送られてきたときの驚きとか(何か勝手に抽選で当ったか、クリスマスプレゼントだったか)、そういうファーストインプレッション的なものだと思います。


P46 ulタグ

リスト表示にULタグを使うとよいでしょうという教えを読んでULタグをググってみると(そう私はHTMLのタグさえろくに知らない)OLタグも気軽に便利でいいね。こういうのがなぜオブジェクトになってないんだろう。HTMLもろくに知らないヤツはそう思います。

MashupEXのプロファイルにもULやOLで実装するリストがあってもいいよね。

P44 ハッシュの正体はキーワードパラメータ

キーワードパラメータね、やっぱり。最初にそう思ったんだけどさ、メソッド側のコードを見たときに、普通(誰の?)で考えたらシンボルが何かを判断してるところが確か無かったんだよね。見間違いなのか、それとも何か違うのか。そのうち連想配列をハッシュっていうのがおかしいとか、考えが捩れてきて理解不能に陥っていったような気がする。

VBでもあるよねパラメータに名前付けるの。書き方忘れたけど。そうやっとくとIntegerが2個以上並ぶ場合に並べ間違いがない。でもめんどくさくて結局使わなかったような気もする。バグったときは使おうかと思うんだけどね。

そういう理解でいいのかな?もーこのハッシュ君は。

Rails本 p44より引用:
『パラメータの意味がわかったところで、再びアプリケーションの説明に戻りましょう。』

はーい!先生!

理解するって本当にすっきりするよね。

<>を半角で書く

<> これは全角です。
html等を書くとき、Bloggerで書こうとすると、&ltとかを使っても、2回目以降の編集で、そっくり消えてしまう(その行だけ/まだ1行しか書いてないけど)。この前見つけたソースを表示する用のアレ、アレを使えば良いのかなあ。でもめんどくさそうだよね。Bloggerのエディタに普通にソースコードテキストボックスみたいなツールが組み込まれてればいいのに。自分が作るシステムには是非取り入れたいと思います。ていうか、プタレットなので、ん〜、ソースコードテキストボックスとしてウィジェット的部品にするのがどうなのか?(良いのか悪いのか)悩むところ。悩まず両方やれ。そのほうが早い。悩んでると遅いんだよね結局。買い物なら2つ買えないけど、プログラムなら2つでも3つでも好きなだけ書けるじゃん。

rhtmlにインスタンス変数を書くこと

<%= @controller_instance_variable %>

こう書いたとき、インスタンス変数ではなくメソッド(いわゆるアクセサ(ゲッタ))を使えばビューからコントローラのプライベートな変数に直接アクセスしている感じがなくていいのではないかと思うが、当然何か理由があるんだろう。

そもそもビューは(ここまでのところ:P41)クラスじゃない。単なるテンプレートでしかない。いや、ユーザが関与する部分としては、という意味で。

Joeの疑問(p41)ではRubyのメタプログラミング機能をうまく利用して、テンプレートオブジェクトに注入するとあるので、コントローラからRailsに戻ったときに、何をするのかが具体的に分かれば、疑問は解消すると思うので、とりあえず先へ進もう。


※これがよく分からない。オブジェクトはクラスかクラスのインスタンス(厳密にはクラスもメタクラスのインスタンスなので表現が難しいが)ではないのか? ビューオブジェクトもこれに従うのか、従わないのか。


2008年11月4日火曜日

P41 Joeの疑問、私の疑問

Rails本P41にテンプレートオブジェクトとある。テンプレートはクラスではない、まったく素のERb用ファイル、HTMLと<%が混在したファイルでしかない。なのにオブジェクト? オブジェクトとは一体、どういう、関係なの? byミシェル

とにかくERbファイルの中のスコープ(名前空間)の付いてないインスタンス変数は、全部コントローラのものだということになる。いいの? いい。

クロネコメンバースについて質問

クロネコメンバースの会員宛に荷物を送るとき、名前と会員番号、もしくはニックネームと送付用IDだけで送れるのだろうか。

そうなれば、オークションやバーチャル図書館で相手の配送先というプライバシーをクロネコ会社さんが保護することで、送付元は気を使う必要がなくなり、非常にうれしい。ニックネームとIDで使うのがいいな。IDだけだと、使い辛い気がする。

もしまだやってなかったら是非。あるいは佐川急便カードで。Yahoo!でやってしまうと、ショップの自由度が問題になるので、そこは物流、もしくはクレジットカードか、専門の管理会社か。専門の管理会社なら他のステータスなんかも総合的に管理するのがいいかも会社としては。とするとベリサインのような認証局、銀行、保険会社、カード会社。この辺だろうな。政府っていうのもあるけど公務員には責任が重すぎる(営利目的に徹することが出来ない)と思う。物流が認証局っていうのも、実際個人宅に人が行くというインタフェースを運用してるという重要性から言ったら、アリかもね。さあ!どうでしょ。

P598(2) ブロックとはメソッドに関連づけられてるもの

今までブロックをメソッドのパラメータだと思っていました。だからおかしかったのか。でもまてよ? Railsのコードのrespond_toのdefにはdef respond_to(*type,&block)ってあったよね。

P598 誤記というか文章理解の問題?

P598,A.9 ブロックといてレータで(以下引用)『yieldはメソッド呼び出しに類似した形て、yieldが記述されているメソッドからそのメソッドに関連づけられているブロックを呼び出すものだと考えれば良いでしょう。』(引用終わり)
このyieldが記述されているメソッドからというのは確かにそうなんですが、もっとつっこんで、「yieldと書いた位置から」になどにしたほうが良いのではと思いました。果たして合ってるでしょうか。

それが何をしているかを知っておくことは良いことです

P38

Rails本p38より引用:
『Railsのコードを見たとき、それが何をしているかを知っておくことは良いことです。』

同感です。

今後もこの調子で、「細かいが知らないと困ること」は常に知っておけるようにしてもらえることを願ってます。

10日でおぼえる本は自分には不向き

Rails本、P36まで来ました。

HTMLテンプレートか。そうだよなテンプレートだよな。と妙に納得を深めて、10日で覚える本はどう書いてあったろう?と思い、見返してみると、ただrhtmlファイルとしか書いてない模様。やはり10日でおぼえる本は自分には不向きな本だったということが良くわかる。この本も随所になるほどと思うことが書いてあって、その辺からとても気に入ってたんだけど、結局進んでいってもRailsの正体が全く掴めない。掴めた感じがしない。それは多分、Rails自体をよく知るという風になってないからではないかと思う。

Rails本は最初にHello World!を表示するアプリケーションを作って説明を行っているが、まさに簡潔で、ユーザがどんなコードを何処に追加したかとか、ブラウザの起動から一連のURLの解析と流れなんかが、丁寧に書かれている。それでいてRailsであるが故なのか、説明量自体はとても少くて済んでいる。

rhtml(ver1.2なので)をテンプレートと呼ぶことだけを取っても、理解しやすさが私には大きく異なる。もっと酷い本では、何の役目も説明せず、ただ<% %>で囲むとどうです、とか、ヘルパーなんちゃらを呼びます、とか。それじゃ何の応用も利かないでしょう。単なるデモ本でしかない。デモという目的であれば良いんだろうけど、身につけるための参考書足り得ない。

今更ながら第2版のコメントをAmazonで見ましたが、全コメントが5つ星(現時点で4つ)だったのが頷けます。でもくどいようだけど、本屋さんでチェックしたときには、まあとてもこんな分かりやすい、読みやすい本には思えなかった。やはり立ってパラパラめくるだけじゃわからんってことだね。

ちなみにAmazonの『なか見!検索』で私が気に入った『はじめに』が見れますが、はじめにじゃなあと全く読んでいませんでした。でも買うと気合いが入ってたしね、ちゃんと読んでよかったね。結局気合いだね。

Sun Tech Days 2008

Sun Tech Days 2008のお知らせがメールで届いた。あれ重複? とっくに申し込んであるのに、と思ってメールを探してみたけど、ない。え:なんで?

あーわかった。フィードでイベント&セミナー登録してたからだ。そっちで先に見たんでしょう。ほらキーワードがメールだと3つあるし。Sun Tech DaysのサイトではADVANCE: YOUしか書いてない。タイトルのFlashにはEMPOWER:YOU を加えた2つしかない。DEVELOP: YOUはどうしたんでしょうね。やっぱフィードのほうがいいんだね。でも例えば世のMLを全〜部フィードに替えたらサーバは持つんでしょうかね。素朴な疑問。

ところでこのADVANCE: YOUの書き方を見てるとJavaFXみたいに見えるわけですが、Project Hydrazineのセッションは皆無だけどJavaFXはハンズオンもある。HydrazineはJavaFXで手ザインツールとやり取りするような記事を見かけたので、まずはJavaFXということなのでしょうか。去年のTech Daysの時点ですでにSunSPOTの開発までJavaFXを使ってましたからね。

ただ気になるのは超ホットな話題っていうのが見当たらない?こと。気がつかないだけ? 3日目のアプローチ(学生さん用)が新しいけど、なんでまたfacebookアプリなんでしょうね。

Rails本には冗談が書いてある

変な冗談が書いてあるので、原作が読みたくなった。英語読めないけど。

英語の学習用に。例えば「強調表示機能」や「構成要素」の原文ってなんだろうと。勉強しながらユーディクショナリを作っていこうと思います。ところで、こういう断片的な訳語を公開するのって著作権的にどうなんだろう? 出来てから考えます。公開しなければ自分の私的利用でしかないわけだし。

Rails本より引用:P21『オレはハードディスクのビットを磁石で反転させて書くぜ』と言い出すようなLinuxユーザなら(以下省略)』(以上引用終わり)。さあこれを英語で何というでしょうか?

こういうテクノロジックでロングテールな冗談を集めたユーなサイトも作りたい! 広告月商目標1万円。April Fool Awardを4/1に。おまけで「これを英語で(君なら)何て言う?」ページを付けるので、みんなトラバしてね。スペイン語を筆頭に各国語で。だったら言語自体も自由にしとこう。『これを(私なら)*語でこう言う』かな。そっかジャンル限定っていうのもなあ。あ、さっきの話だと限定チャンネルだから良いのか。いや、これは違うでしょ。ジョークっていう時点でチャンネルだよ。冗談チャンネル。そう考えると大きさ(業界風に言うと粒度)って面白いというか難しいというか。

注)私はトリビアとロングテールを少数派(自分には重要でも他人には重要でない)という意味で同じに捉えています。もともとWeb2.0を知る前は沢山のトリビアなサービスを展開するというのが基本理念でした。その頃、Web2.0というのはセマンティックウェブのことだと思ってました。間違いです。

18:28 追記
Rails本に学ぶ英語100。Railsの勉強をしながら、英語を、学びましょう。byミシェル

2008/11/5 12:59 追記
April はやめて、Summer Fools' Awordにしよう。夏をクールに。 寒さもどんとこい。

コンバース

コンバースのブラックサバスモデルというのがあるらしい。

その話を聞いて一句。

1. コンバースだけを集めたサイトを作る。月商目標1万円。
2. ブラックサバスのニュースサイトを立ち上げる。月商目標1万円。

ブラックサバスファンではなく、ロニージェイムスディオファンで、ネオンの騎士のファンです。高校3年のとき、修学旅行と東京公演が被ってしまい、本気で東京公演に行こうとして、親の許可まで取ったものの、友人が修学旅行ぐらい言っといた方が良いと説得され、自分も思い直して、じゃなかったかなと思うのですが(あやふやな記憶)、結局、修学旅行を取ったのは事実です。で、たしかFMでライブの模様が放送されたと思うんですが、ロニーが風邪かなんかで声が完全につぶれてしまって、酷い状況だったのを覚えています。ホント行かなくてよかった。。。

で、本当の一句。

1. 特定の商品だけを集めたサイトを沢山作る。最初に思ったのは黒いシャツ専門チャンネル。おおっ、チャンネルときたね? いいねチャンネル。販売にチャンネルって新しいんじゃない? あるのかもしれないけど。ウケるかどうかも分からないけど。販売チャネルっていうとまた意味が違うし。

2. 特定のアーティスト限定のニュースサイトを作る。このニュースサイトは現在のブログみたいにウェブアプリケーションとして売り出す(売るっていうのは名前を売るって言う意味で金銭的な売るではないです)。これもチャンネルだね。

チャンネルっていうのは昔から思っている一つの基本的なメタファで、きっと多くの人がそう思ってるんじゃないかと思う。ちなみに私は電話番号とチャンネル番号が残ると思ってましたが、電話番号は妖しくなりつつあります。チャンネルもチャンネル番号としてしまうと、生存率は低いかもね。わかんないけど。



ビューはテンプレート

テンプレートねえ。ビューを何で書くかということだと思うけど、結局設定ファイルみたいなもになるのか?HTMLテンプレートは。設定ファイルとプログラムコードの違いは何かというと、CPU的実行コードか否かということなのか。ん〜微妙だな。

テンプレート、テンプレート、テンプレートと。

んーやっぱり違うね、自分の感覚とは。まそれは(それで)良い話だし。Rails的にはビューはHTMLテンプレートだと。

Rails本こそRails初心者が最初に読むべき本だと思う

めちゃめちゃ面白いじゃん!
こういう説明こそ重要かつ最初に読むべきもの。アマゾンのコメントもブログエントリを張れるようにしたほうがいい。この辺はもう今更な感じだが、自分がやりたいのはそもそも現在のブログアプリじゃないので、あくまで現状のブログ環境に対して言っているだけ。でもAmazonのようなサイトにしてみれば、自分のところにコンテンツ自身を入れてくれないと面白くないんだろうなあ。まさか投稿した場合と同じく二次的著作物として非独占的権利を有するとかなんとか、言い出したりはしないと思うけど。どっかで始めたよね最近、商品にその商品に関するブログをくっつけるサービス。どこだっけ? まいいや今は。

Amazonにコメントしようと思ってしまったので脱線してしまったが、話を元に戻すと、本当にこの本こそ、Rails初心者が『最初に』読むべき本だ。あ〜失敗した。出版社はもう少し外見に拘って欲しかったなあ。そんな要望は自分だけかもしれないけど。これをカラー写真入りで雑誌みたいにかっこ良く、段組みとかもつけてやったら、良いと思うんだけど。『Web Designing』さんにやってほしい。もしくは『CSSクリエイティブ・デザイン』の著者/編集者の方々に。

あ、また脱線。

−この本こそ、Rails初心者が『最初に』読むべき本だ。で、これを読んで分からないところを他の情報で補えば良い。ウソだと思ったら、最初のほうだけ(今11ページ目の中程までを読んでこれを書いてます)立ち読みさせてもらうと良い。ツタヤに置いてあればなあ、コーヒー飲みながら遠慮なくチェックできるのに。図書館の蔵書としても必須アイテムだと思う。読み終わって尚考えが変わらなければ、そして近くの図書館にこの本がなければ1冊寄贈します。−

あ、Kivaみたいにバーチャル図書館ってどう?(あげるんじゃなくて貸すっていう意味でKivaみたいかなと思いました)どこで止まるか分からないけど、まず私が誰かにこの本を着払いで届けます。受け取った人は送料だけ負担すれば良いわけです。で、次に読みたい人にまた着払いで送ります。途中で売られてしまったり、読むにも時間かかるし、現実的ではないけどね。面白そうな気はします。常に私に送り返すだと送料が無駄になるし、住所が私に集まるのは良くない(集めようとしないでね)。そうするとやっぱり図書館みたいな公的ハブを利用する方がいい。で図書館も協力してくれて、寄贈本コーナーというか「お勧め寄贈本」ステータスを本に付けてくれるといいね。それもそうだけど、単純に口コミシステムを図書館自体にリアルに導入してくれればいいのか。借りた人がコメント付けて返せるようにする。でまあ非常識なものは除いてそのまま本に挿んでおく。もちろんWebも良いんだけど、いちいちPCで調べてとか、ケータイで見れたとしてもね、ちょっとめんどくさいと思う。実際本を手に取ったときに後ろを見ればコメントが書いてある方が、UIとして、ユーザビリティが高いと思う。

私は別にチュートリアレット構想があるわけだけど、この本のベータ版を永遠のベータとして残してくれて、そこ上で他の本(サイト)が補完する。これが理想だな。自分の書くつもりの本はこんなに内容的に素晴らしくはならないだろうけど、構造的にはそうするつもり。題材はもちろんMashupEXそのもの。そしてこれから作るであろうあらゆるプログラムというプログラムすべて。オープンソースって素晴らしい。発明したフリーソフトウェア財団とリチャードストールマンという人(および彼をサポートした人々)の先見の明と、もちろんオープンソースとしてメジャーにした多くの貢献者の素晴らしさを、ようやく実感しつつある感じ。Web2.0の本質はそこにこそあると思う。

言語環境やOSやデバイスに固執しない

ウェブログはログとして使えば良いわけで、何も読み物としての完成度を求める必要はない。

何故Javaかと言えば、多くのデバイスをターゲットに出来るからだ。RoRはHTML(現在のWebアプリ)しか相手に出来ない(と思っている)。

いろいろ思うことはあるが書きたいような書きたくないような。要するに次こそJavaだと。いや違う。言語環境やOSやデバイスに固執しない、これが元なんだから、別に今慌ててJavaである必要は全然ない。また間違うところだった。つまらない損得勘定は捨てること。大丈夫。俺は間違ってない。必ず出来る。だからやるんだ。やり遂げるんだ。:-)

Rails本に移った訳

10日でおぼえる本からRails本に移った訳を忘れてしまった。あ、思い出した。ハッシュの使い方がどうしても気になっていて、まずそこを解消したいと思ったから。Rails本に載ってるかどうかは分からないが。別に投げた訳じゃない。

2008年11月3日月曜日

RailsにおるアジャイルWebアプリケーション開発

出だし読み物として面白い。
第2版に寄せて、監訳者序文、はじめに」と読んだところ。
監訳者序文を見ると、Railsの火付け役という第1版も読んでみたくなった。Amazonで確か中古で安く売ってたので、買ってみようかな今度。今は時間がないのでやめましょう。

マイグレーションでDBを戻せる?

マイグレーションでやる前から気になっているのは、戻す場合。
普通、バージョンを戻したりはしない。トラブルがあってこそだ。まあ、それが言い過ぎだとしても、毎回戻したりはしないはずだ。ということは、使われない「戻すコード」を大量に書いてテストしてしまうということになる。しかもRubyコードで手書きするということは、バグがあるということ。つまり、戻らないということ。

もっと賢い方法だとばっかり思ってた。
10日でおぼえる本にはすごいことが書いてある。drop_tableだって。消すのか? これは最初のバージョンだからね。その前は確かにテーブルが無い状態だった。先をめくってみると、002バージョンではちゃんとスキーマを元のもので書き直している。書き直している!? DRYなのか?これって。せっかくなんだから、up間の差分を判断して、戻して欲しいよね。

それと実際にレコードがある程度溜まった状態で変更があった場合、元に戻すということは、その間変更のあったレコードを元に戻す必要があると思う。データベースは、レコード有っての物種だからね。そう考えると、以前のバージョンをテーブル毎保存しておいて、そこへ戻すほうが合理的かつ安心。

つまりマイグレーションで行うバージョン管理とは、スキーマレベルということなのだろうか? それは余りにもお粗末だ。きっとまた、私が大きな勘違いをしているに違いない。

それはそうと、DB側で世代管理機能ってあってもよさそうだけど、一体、ドウナッテルノヨbyミシェル。



namespaceは:で

Rake騒動のおかげで、こちらを拝見することができ、長年(といっても3日程)疑問だった:コロンがネームスペース修飾だということが分かった。そういう理解でいいんだろうか? 何せ#はコメントだけじゃないからね。{}もブロックだけじゃないからね。

Rakefileにlib/tasksに置いたrakeファイルを記述する方法は?

10日で本にrakeのタスクの構文と例が載っているが、肝心のrakefileにlib/tasksの下に置くrakeファイルの書き方が載ってないので分からない。

と思ったら何のことは無い、デフォルトのままでlib/tasksに.rakeファイルを置けば良いだけだった。NetBeansでRakeファイルの作成が無かったため、何でも良いだろうとRubyファイルの作成としたのだが、こうすると強制的に.rbが末尾に付与されてしまい、IDE上で名前の変更として.rakeを付けても、.rake.rbとなるのであった。な〜んだよ。。。

でも10日でおぼえる本には「Rakefile内dタスクファイルを探索するためのパスを設定します」p69 と明記されているよなあ?と思ったら、これが読み間違いで、よく読むと「Railsが」行うこととして書いてある。すまん。申し訳ない。

なぜ気づいたかと言うと、コマンドラインからやって作ったプロジェクト上で同じことをするとうまくいったから。なんでNetBeansだとダメなんだ?ということでよーくみたら、そういうことでした。

2008年11月2日日曜日

RoR本の購入

前から何度も立ち読みやAmazonでチェックしていた本だが、なかなか買うところまで行かなかった。今回余りにも分からないことが多すぎて(それでも大分馴染んできたが)、ついに購入に踏み切りました。


当然な人には今さら何言ってんの?的本ではないかと思いますが、こんな厚くて見辛い本、私は見た目で引きます。それに作者の本より、良き理解者の本を好む質(タチ)なので、ROR作者作という点で逆に引いたのと、 RoR2.0対応じゃないということで敬遠してました。でもあるとき、NetBeansのサンプルソースとしてついているDepotというアプリケーションが、このサンプルだということを発見して、絶対買おうと思って高島屋の紀伊国屋さんに行きましたよ確か、2週間ぐらい前? や〜っぱり買えませんでした。でも今は気合いが違いますからね。何でも来いです。(知りたいことがこれに)載ってるかどうかは分かりませんでしたが、まあ、これに載ってなかったらしょうがないだろうと。

2. Ruby on Rails逆引きクイックリファレンス ISBN978-4-8399-2826-1

これもこんなレベルまで踏み込む予定は全くありませんでしたから、それにクイックリファレンスという割にはリファレンスっぽくない感じがしていたので、これは全然買う予定じゃありませんでした。でも今までの流れから、どうせ藁をも縋る思いで買うんでしょ?みたいな感じで。

あ、藁っていうのは相対的な意味であって、こっちがカナヅチなんで、浮き輪も藁も同じに感じるということです。

3. Railsレシピブック 183の技  ISBN-978-4-7973-3662-7

これも2.と同様、逆引き系です。2.を買ったので、比較とかN増しとかいう感覚で買い増しした感じです。なぜ183個なのかということについては特に気にしてません。

4.UNIXシェルスクリプト辞典 ISBN4-7981-0923-1

これはおまけ(といっては失礼ですが)。この間MySQLで空のテーブルが何個作れるか試すのに作成はいいんだけど削除で"y"って入力を返すのがわからず、どこかのQ&Aサイトで質問して教えて頂きました。自分でもecho y | echo ってやったんだけど、これだと改行しかしないので、ダメだと思ってしまった(何故だろう?)。echo y | mysqladmin -u root detete file名でやったわけですが、rootがパスワードなしでいいと割り切っていたので(実験ですから)。で、試しにexpectを使おうとしたんですが、これがまた全然ダメで、そういう関係ないところで時間無駄にしてしまって、大いに反省していたところに、偶然Ruby売り場の隣に置いてあったので、衝動買いしてしまいました。でも肝心のコマンドが本とMacOSXで合ってるのかやや心配です。

クラスメソッド

この辺がなんだかなあなのでメモ。
クラスメソッドとクラスの特異メソッドの違い。
クラスとメタクラスの関係。

Classクラスがその他のクラスのメタクラスじゃないのか?

なぜなら、例えばObjectクラスはClassクラスのインスタンスだから(だと思うから)。つまりクラスのクラスということでメタクラスなんじゃないの?

でもここにはClassのインスタンスとしてObject(などのメタじゃないクラス)と同名のメタクラスがClassのインスタンスとして存在すると。で、それがObjectが持っている? 持っているっていうのは、どういう格好だろう? クラス変数として? わからん。『もちろんClassで定義されているメソッドもクラスメソッドとして使えます』ってどういうこと? またクラスメソッドって何ってなるじゃん。


必要に迫られるまで、ペンディングだが、経過をメモ。

受け入れる

例えば繰り返しについて考えてみよう。
intであろうと、floatであろうと、
for( i = 0 ; i <10 ; i++ )
{
    m[ i ] = rand( i ) ;
}
は(mについて)同じ結果になる。
しかしオブジェクト指向で実装する場合、integerとfloatは別クラスであるため、両方とも繰り返し構造が必要になる。とすれば、1つの繰り返し処理で両方処理できるのではないか?できる、したい、する、となる。でもそれにmix-inを使わなければならないのだろうか。もし進化の木が一本の根につながるのであれば、さらに掘り下げればビッグバンを越えてインフレーションまで1つの川を遡るのであれば、むしろ、どこかの段階で繰り返しメソッドが入るべきではないかと思う。

しかしコンピューティング上のオブジェクトは、あくまで便宜上のものであり、生物や宇宙の進化を表しているわけではない。うまく利用することこそが重要視されて驚けない。しかも数学的な問題となれば、なおさら物質的な問題そのものとは違ってくるだろう。

「なるほど。」

ということは、特に数学的な特徴を活かした機能に関しては、オブジェクトの木とは違う場所にあって然るべきなのかもしれない。長年理解できなかった答えとは、こういうことじゃないか? それが概念交換機へと繋がる源流なのかも。

rubyのモジュールの実際のコードや使われ方もまだ見ていないけど、名前はともかく、本来のオブジェクトとは別にしてmix-inして取り込むというのは、実は非常に合理的な考えなような気がしてきた。考えが一転してしまった。

本当はモジュールのようなやり方に納得できない病が発生しそうだったので、前に言ったように考え方に合意せず、受け入れようという主旨で書き始めたのに、30秒程冒頭部分のことを考えてたら、こんなエントリになってしまった。

まてよ? だとしたら、宇宙はどこから数学をmix-inしたんだろう。

2008年11月1日土曜日

yied の読み方

辞書の発音記号を見ると、jíːldとなっている。カタカナで訳す("yield".katakana)とジールド? 

でもジーっぽい単語を適当に見ていくと、dʒíː ばっかり。例えばジープはJeepでdʒíːp。google( "yield イールド" ) だと沢山出てくるので、やはりイールドなのか? でもeastは íːst、ってやったら偶然イースト菌のイーストがyeastでjíːstなのを発見。

どうしても知りたい。で、こちらを見つけました。

なるほど、やっぱり違うんだ。だったら発音が付いている辞書で実際に聞いてみれば良い。なぜ最初にそれを思いつかなかったのか? バカだなあ。

まずeastを聞いてみるとイースト。yesetを聞いてみるとイイースト?もしくはィイーストみたいな感じです。イがダイナミックというか長い。私的にはイイーストですが、一般的にはイースト、でしょうな。うん、納得。あれ?肝心のyieldは?というと、なんかふつーにイーオドって聞こえます。(このオはよくLはこうなりますよね)。ちなみにこれらの発音はExcuite辞書で聞きました。

ところでrubyでカタカナに訳してくれるメソッドはある? さっき"yield".katakanaって書いたけどruby的には"yield".to_katakanaってしたいのかな? ググってみると、katakanaもto_katakanaもあるけど英語(外国語)→カタカナっていうのは見つからないね。辞書が必要な割に誰も必要としてないってことか。

とにかく、イールドで納得した私でした。

イテレータの意味

繰り返し子?http://www.swlab.it.okayama-u.ac.jp/man/ruby/uguide/uguide09.html
思わす「くりかえしっこ」と読んだけど、「くりかえし・し」?

いずれにせよ、イテレータの意味が「iterate: 繰り返していう[する]。反復する」だったとは不覚も不覚。何で意味調べようとしなかったんだろう。

2008年10月31日金曜日

Rubyがなぜ読みやすい?

# はコメントなのか?違うのか? わかりずらい。

読みやすいって言う基準は何?
結局正規表現とかシェルのパイプで繋ぎまくったスクリプトが読みやすい、つまり書き方が分かっていれば簡潔、っていう読みやすさだと思う。だって全然読めないじゃん。パラメータ受けてないのに、書いてないときは呼び元で指定?? じゃ何が来るか分かんないじゃん。でもコレとかアレが来る前提で書くわけでしょ? 故に読みやすいと。いや〜絶対くじけると思う。そもそも出来るだけ冗長に書こうとする人間には無理。

例えば、
a[1] ||= 1
a[1]がnilでなければ1が代入される。理屈はそうなんでしょうね。でもこれを見て、直感的にそうだと分かる人がどれだけいるんだろう。簡潔と短いは同じじゃないはず。知ってる人にしか分からない。それは言語ですからね。でも同じ言語の中で、一つの文法にそってない。

によると、まず文法として、

式1 op= 式2

という形、つまりa[1] += 1、a[1] |= 1、a[1] ||= 1などがある。
ところが、opが、&&、||の場合とそれ以外の場合は意味が異なる。
opが、&&、||以外の場合は、

式1 = 式1 op 式2

&&、||の場合は、

式1 op ( 式1 = 式2 )となる。

つまり、||の場合は式1から評価するため、式1がtrueだと(式1 = 式2 )は評価されないことによるわけだ。しかし計算上、式1がtrueなら(式1 = 式2 )は評価されないということを意識するというのは、読みやすいということになるのだろうか。

a || b

と書いたとき、次の2つの文を比べてみよう。

(1)『aかbの「どっちかが」trueならtrue、それ以外はfalse』
(2)『まずaを先に判断して、aがtrueだったら、true、falseだったら次にbを判断して、trueだったらtrue、そうじゃなかったらfalse。』

どちらがより一般的な考え方なのか。それが読みやすさに繋がる意識の源ではないかと私は思う。というかそれが私。

私は「英語のように書ける」という説明を読んでこう思いました。私自身の英語力の問題はさておき、自然言語とコードが一致する、と。それは私向きに違いないと。何故かと言えば、私は例えば仕様書を日本語で書いたようなコードを書こうとするから。だから1行しかない関数が山のようにあったり、C言語なのに、値を返すだけの関数があったり。それはできるだけ思ったまま書きたいから。コンピュータのためのコード編集はその後やればいい。そうすればどうしたい(実際にした)けどペンティアムのためにこうしようという履歴が明確になって、意識とコードがずれない。

rubyには他にもProc.newのパラメータが呼び元で指定するとか、短く書きたいがためにハッシュの{}を省略するほうが美しいとか、とにかく意識とのギャップがそこここに散らばってる気がする。それが自分の意識の中で普通になれば、短い分読みやすくなる(速く読める)のかも。事実、Rubyの代表作であるRoRのプログラムが、その賞讃とは裏腹に読み難いという、何とも皮肉な評価を目にする。オブジェクト指向は外から使い安くする分、中身が苦労してるというのは最もな話。でもそれは読みやすさとは関係ない。RoRが読み難いならRubyで書いたプログラムは読み難いと思って、なぜ間違いなのだろうか。

evalはどうだろう? まだ簡単な例しか見てないけど、読みやすいのだろうか? HTMLやXMLを出力するのは良く分かるけど、同じ要領でclassを出力するのはねえ。何となくテーブルをオブジェクトにするには、それも有りなのかもしれない気はしてるけど。

余りにも遠い道のり。このままではダメだ。
ここは一つ、劇的な割り切りとすっ飛ばし!が必要だな。

ということで、10日でおぼえる本に戻ろう。
そして軽く一本書き上げよう。

俺だけが分からず屋で、Rubyが読み難かったり書き難かったりしても、いいかしら?byミシェルじゃない、いいんだよ。

iPhoneを使っていて、例えばTapTapRevengeで別なウェブサイトに移動したり(Safariに移行)、NIM EDITION のボタンから、App Storeに移動したりすると、もう元のTapTapRevengeには戻れない。マルチタスクじゃないからというのは確かにそうだけど、同じことはマルチタスクマルチウィンドウであるMacでの作業でも言える。このブログを書く前はRubyのチュートリアルを読んでいたわけだけど、ちょっと休憩ってことでiPhoneへ。そこで今言ったことを感じたので忘れないうちにメモしとこうとBloggerへ。だからうっかりすると、あれ、何やってたんだっけ?ということで、なかなか戻れなかったりする。ブラウザだけで作業してれば履歴で分かるけど、OS自体に操作履歴が残るわけじゃないので。

人間自身がマルチタスクで作業していることも良くあることで、NetBeansの最新版をダウンロードしてたり、インストールしてたりして「待ち時間」ができると他のタスクに移行する。原理的にはコンピュータ(OS)と同じ。もっともコンピュータの方が、もっと効率的に沢山のタスクをこなすわけですけどね。

そこで新しいUIにタスク指向というアプローチを取り入れてみたいと思います。アクティブなアプリケーションを監視するだけでも、そこそこのことは出来そうです。


JSR

私の7不思議の一つであるJSR。
JSR XXXという3桁のマジックナンバー。
JSRも分解したい。(イコール概念辞書に入れる)
JSRリアライザとかJSRインストーラとか。
今日のJSRを電車のLCDビジョンで英会話スクールの後に流すとか。

Sun Tech Daysの申し込み受付が始まったので、妄想が尽きない。

2008年10月30日木曜日

ビジネスプラン募集のメモ

ビジネスプラン募集か。メモしておこう。
ちなみにGrails Japanese サイトの広告をクリックしました。

2008年10月29日水曜日

lambda as Proc.new

どういうときに使い分けるのだろう? それとも分けないのか? 気まぐれなのか?



JOHNNIE WALKER Blue Label


約¥12,000で購入。注いだときにボトルの口から垂れてしまうのは、何とかならんものか。注ぐたびにティッシュで拭いているのだが、それってとてもおかしい。

フィッシング対策画面

URLをチェックしましたチェックボタンを付けてみようかと思う。
But, フィッシング側ではそんなことをしていないので、普段から利用しているサイトで、かつ、フィッシングチェックボタンが本物はあるということを分かってないと無理か。

2008年10月27日月曜日

私が書くもの

今まで中々理解出来なかったのが、JSPにしろRoRにしろ、なぜ独自構文(と言っては語弊があるかもしれません)を使わずに、HTMLに埋め込む形 (%,%=など)を取るのかということ。

もちろん、ページをHTMLで表現しているから、というのは分かりますよ。そうではなく、どうせプログラムを介して動的にHTMLを出力するのだから、もっとドラスティックに、例えばもっとページオブジェクトのコレクションのような、プログラム寄りな構造を取っても良いのではないか、という思いがあって、HTMLに埋め込むという考え方は、受け入れ難いものがあるわけです。

RoRを使う上で、ERbは避けて通れませんし、秀逸なプラグインを使わせて頂く上でも、郷に従う必要があります。しかしまだ自分の書くプログラムがRoRを出力するという手があります。HTMLが吐けるなら、RoRを吐けない理由はありません。

2008年10月26日日曜日

計画の確認

しかしここに来てぶれが激しく、何度も同じことを自分に言い聞かせてようやく納得しつつあるので、ここでダメを押すべく記録しておきます。

当初、普通にruby on rails + MySQL(などのRDBMS)という構成を一次として考えていましたが、データ構成を普通に考えると、既存のRDBでは微妙な感じというか、無理がある(素直じゃない)。

では本来の目的であるDBを先に作るかという話が蒸し返されるわけですが、それならRubyよりJavaでと思うわけです。で悩むと。

そもそもなぜRubyかというとRuby on Railsだからであり、なぜRuby on Railsかといえば、10分でウェブアプリが作れるからだったのですが、実はそれは私以外の人のことだったということが分かり、本来であれば、Ruby on Railsに拘る必要は無くなったわけです。

ところが、とあるセミナーでRoRで実践開発されている方、しかもそれまではJava+Struts等で構築されてきた方が、今後はもう全部RoRで行く、というお話を伺って、じゃあ、自分もがんばって最後までRoRでMashupEXを完成させようと思った、思ってしまったことが、今はRoRに拘る理由の1つです。

それに苦労してRoRで曲がりなりにもアプリケーションを書き上げられれば、少なくとも自分目線でのチュートリアレットを書けるわけですから、苦労が無に帰すことは有り得ません。

問題はDBか。DBは作るかなRubyで。
その後、反省を踏まえて、オールJavaでClock!から書き上げると。

MySQLのテーブルの大量作成と削除

#!/bin/sh
i=0
j=10
while [ $i -lt $j ]
do
let i="${i}+1"
echo tbl$i
echo y | mysqladmin -u root drop tbl$i
done

mysqladmin でパスワードが要るようだと、expectを使うのか?と思っていろいろトライしてみたが、どうしても途中のコマンドをunknownとかいうので、諦めた。やっぱりシェルスクリプトって自分には分かりづらい。http://kansai.anesth.or.jp/gijutu/expect/howto-expect.htmlにTcl/Tkの拡張言語ってあるが、なんだろ? そもそもシェルの立場が分かってないってことだね。

で、本題のテーブルの作成と削除ですが、一万個は普通に100個0.5秒ぐらい?な感覚でコマンドラインがスクロールしてました。CPUの使用率はアクティビティモニタで眺めていると、ターミナルのエコーバックのせいもあってか、7割ぐらい行ってる感じに見えますね。そこでターミナルのウィンドウを最小化(ゴミ箱の横に表示されるように)して見ましたが、あまり変わりませんねえ。まあ、常にこんなことをやるわけじゃないので、ピーク時の問題の1つということでしょうか(10k問題じゃないですけど、テーブル作成につながる機能を1万ユーザが同時に行った場合)。

MySQLはライセンスが良くわからないので、今度10/30,31に行われるショーで聞いてこようと思いますが、”商用でも無料”で使えそうで、かつXMLも扱えるらしいPostgreSQLも試してみたいです。

2008年10月25日土曜日

WANTED! リソースエディタ

このエントリはフィクションです。

最近ほとんどがウェブアプリなせいか、リソースエディタでいろいろカスタマイズできるのはいいのですが、コンフリクトっていうのでしょうか、どうやって衝突をうまく避けようか、というのが悩みの種です。結局、都度自分で設定すれば良いんでしょうけど、なかなかめんどくさいというか、そこでリソースの変更作業に移ってしまうと、それまでの作業が中断してしまい、最悪戻れなくなるんですよね。

で、最近は疑義だけを発動しておいて、溜まったら、もしくは暇なときアラートで本当に暇だったらやるようにしています。でもそうすると逆に、あれ、何てメッセージにしようとしたんだっけ?ってなってしまうことも。

キャラもんが増えてきたせいで、どうしても捻りたくなってしまうんですよね。ええ、未だにミシェル先生とか、結構抜けれません。確認ダイアログは殆ど、「入っても、いいかしら?」になってます(公開したいんですけど、パクリものなので今のところ遠慮ギミです)。

昔はというか、出た当時は主に日本語版のアプリケーションのメッセージがどうもしっくりこない、人によって意見がまっぷたつに割れて、翻訳チームもほとほと困ってしまうという、個人差を吸収するところから始まったはずなのに、まあ、フタを開けてみたらそれだけ個人差があったということでしょう。でも、他人が作ったソフトに「それ何のミーニングがあるの? もっとミーニングのあることしたほうがいいよ。」とか言われるとムカつくかもしれませんが、自分で設定する分には全然OKなわけですしね。

まあ、今思えば、PostgreSQLのpgAdminで『サーバ localhostを消去したいと思うことは確かですか?』みたいな日本語も、楽しかったですけどね。

今後、概念辞書が熟(こな)れてくれば、もう少し自動化も進んで、デフォルトのリコメンドでもそこそこ楽しくなるかもしれません。

WANTED!

試しにWanted!をここに書いていってみようと思います。

今までバックアップが出来ない(方法が分からない)ので、メールで保存していたものです。Wanted!とは、1996年頃だったと思います。ジオシティーズという無料のホームページサイトが初めて?サービスされ、手軽にウェブページを公開できるようになったのを契機に、自分もウェブサイトを立ち上げようと思いました。やるとなったら少々オーバーリアクティングな私はいきなり独自ドメインを取り、月5000円もするレンタルサーバを借りたのです。大したコンテンツも流せないまま終わってしまいましたが、そこでやろうとしていたのは日記や掲示板ではなく、自分なりの番組を流すということでした。その中の1つがWanted!です。

これは架空のアイテムやサービスなど、自分が欲しいと思ったものを、さも存在するかのように紹介する大ウソ記事です。私なりにという点では、フィクション番組のつもりだったわけです。しかし当時は自分でリンクを管理するのがとにかく面倒でしたし、かっこいい画像ファイルを作ろうとしてもそれだけで何日も費やした挙げ句、満足いくものが出来ないという始末で、そのうち手を引いてしまいました。

最初の話は各サイトに地図座標が貼ってあるという前提で、訪問すると自分用の世界地図にプロットされていくというものだったと思います。白紙の世界地図というアイディアは、確か何かのパクリだったと思います。何かゲームでそんなのがあったような。

「君は世界を征服したか」みたいな結びに自己満足していたのですが、今もあまり変わってませんね。

そもそもアイディアは何処から来るのか、ひょっとして伝染病のように空気感染(もしくは空間感染)するのではないか、みたいなことから、同じことを考えている人がどれだけいるのかいないのかを知るのが主旨だったと思います。

自分がこんなのが欲しい、あったらいいなで終わったらモッサいので、それが実在してこんな風に使われててなるほどね、みたいなところまでフィクションとして書けば、出来はともかく、番組としてアリじゃないかなと。

PostgreSQLのVACUUMing

http://kaiunix.cs.shinshu-u.ac.jp/Lesson/DataBase/POSTGRE/sql-vacuum.html

PostgreSQLのアドミンGUIツール『pgAdmin III』を起動したらDid you know?とかいってVACUUMingがどうのと言っていたので、調べてみた。定期的に実行すると良いらしい。
最初ブイエーシーユーユーエム、アイエヌジー?って読みました。

「バキュームしても、いいかしら?」 by ミシェル。

リンクの内容は少し古いバージョンについてですが、取りあえず何者か分かれば良かったので。

PostgreSQL8.3.4をインストール

ほとんどデフォルトだが、localeだけはdefault localeからja_JPに<なんとなく>変更。
それとadminパスワードがmysqlと違って必須だったので(パスなしは不可)設定。

Bashのseq

MacにBashのseqが入ってないのは何故?

seqはfor i in 'seq 1 10' のように書いて、from〜toの値を順に+1して返す。'seq 1 2 10'と書くと1〜10で増分+2を表す。

sqlのテーブルがどこまで作成できるかをbashで書こうとして調べていたが、コマンド自体が無いことがわかった。

いろいろ調べてhttp://furyo.on-air.ne.jp/linux/bash.htmlが非常に参考になった。私の勘違いを全部指摘してくれた。まさに私の為に書いてくれたようなもの。

それにしてもBashって全然理解できない。

2008年10月24日金曜日

SyntaxHighlighter クリップボードへコピーがいい!

http://code.google.com/p/syntaxhighlighter/

XMLの扱いを調べていて、偶然JQueryでXMLを操作するページになかなかいいサンプルコード表示されていたので、?をクリックしてみると、http://code.google.com/p/syntaxhighlighter/
だということが分かった。ハイライトに興味があったのではなく、クリップボードにコピーできる点。安全なコード、もしくは危険なコードでも安全に実行できる(危険な場合は警告が表示される)のであれば、さらにいいと思います。いわゆるデモボタン。

使ってないので何とも言えませんが、1つのコード(の塊)を書くだけで済むところが重要です。見た目のコードとデモコードが違うと色々問題がありますからね。

Javaのホットトピックセミナーで毎回パズラーという意地悪問題?が出るのですが、大概答えは4択などの選択型になっています。実行すれば答えが分かるので、パズラーサイトを作るとすれば便利。YouPuzzler! とかPuzzletとか作りたいですね。

いろんなやり方があるんでしょうが、思いつくのは普通にサーバサイドの簡易実行環境をWebアプリにすることですが、コンソールっぽくすると面白いと思います。コンソールといえば、昔からコンソールの中にウィジェット(ウィンドウアプリ)が文字と同じようにというか、混在して表示できるコンソールを作りたいんですよね。もちろん文字と一緒に流れていっちゃいます。「それ何のミーニングあるの?」「もっとミーニングのあるプログラムつくたほうがいいよ」byネササリー体操。

2008年10月23日木曜日

Google Analyticsを入れてみました。

Google Analytics(以下GA)を入れてみました。
Blogに入れてどうなのか分かりませんが、可能な範囲でいろんな場所からアクセスして結果を観察したいと思います。

で見つけたエントリがこちら。リンクに細工するとそれがGA上で管理できるそうです。具体的にどこがクリックされたのかが分かるというのは面白いですね。

http://www.itmedia.co.jp/news/articles/0805/02/news007.html によると、
GA with Bloggerみたいなものが非公開テスト中だそうですが、あれば便利そうですね。でも本当はアクセス解析より「へえボタン」とアクセスカウンタをおいて、全体、タグ単位、エントリ単位などでその統計情報を見たい派。そうした中でプラスアルファとして、どこから来たのあんた?とかが分かるというのは面白いし、あれば使いたいですよね。でも本当に見るかどうか分かりませんけど。

ところでへえボタンをエントリに自動的置くにはどうしたら良いんでしょうか?

2008年10月21日火曜日

Yahoo!地図の表示
食べログボタン(条件固定)
イケてるCafe(王冠アイコンの下に"キング") ミケランジェロ
関連情報を設定
・ROBOT設定 --- 0 件
・運営会社(ASOホームページ) --- 設定ユーザ名(プロファイルへのリンク)

UNDERCONSTRUCTION

-- WebAPIバナー --
3X3,もっとみる

-- JavaScriptバナー --
JQuery
Dojo
prototype.js
LightBox

-- login --
login,sign up

2008年10月20日月曜日

ロギング

操作ログをユーザ領域に落とす。
どうもBloggerの編集がうまく、手早くできまません。
突然色や下線が付いたりして、その度にHTMLの編集です。

Fluid

Fluid.

WebサイトをMacデスクトップアプリケーションのようにするMacOSXアプリケーションのようです。要はローカルディスク上に、特定のwebサイトを表示するための専用ブラウザをインストールするようです。Site Specific Browsers(SSBs)と呼ぶらしいのですが、Dockにもちゃんとアイコン表示されるので、そのままDockに追加することも可能です。


Fluidを実行すると、インストールしたいURLと名前、保存場所やアイコンなどを聞いてくるので、それを設定してcreateするだけ。

例えばFlickrだとこんな感じで表示されます。

どうやら対応サイトによって見栄えを変えてくれるみたいですが、逆に変えない方法は分かっていません(というか使えてない)。

本当はMeccaというSafarベースのブラウザがあるということで、これを何とか手に入れたかったのですが、どうやってもダウンロードURLがわからない。

2008年10月19日日曜日

さて、今日からはむき出しでいきます。

当初からそういう意味でのオープンがテーマの一つでしたが、実践するとなると、その心理的障壁はとてつもなく大きいものです。ましてやそれを一人でというのは実に大変ですが、裏を返せばその程度の力しかないわけです。それが本当に大変だというのは、それが大変だと思う人間にしか当てはまりません。

カッコつけたつもりはないのですが、未熟な考えを公開するのは怖いものです。でももう時間もありませんし、自意識過剰でも仕方ありません。超新星大爆発といきます。そのあと太陽として恒星になるのか、星屑になるのか。

2008年10月18日土曜日

MashupEX 〜 Mashup Awards 4

いよいよ今週末(2008/10/19日曜日)に表彰式が行われる『Mashup Awards 4』

残念ながらエントリーはさせて頂いたものの、力及ばず、いや、全く及ばす、未だ完成に至っておりません。それどころか、Ruby on Railsの習得もままならない状況。お恥ずかしい限りです。

さて、言い訳したところで恥の上塗り、その辺りの苦労話はモノが出来て時間的余裕ができたら白状していきたいと思います。今後は来月中旬完成を目指し、最低限エントリー作品の完成にはここぎつけたいと思っておりますが、ここにそのサイトのあらましを記しておきたいと思います。

サービス名;MashupEX(マッシュアップエックス、またはマッシュアップイーエックス)
URL:www.mashupex.com
概要:各社ご提供WebAPIを気軽にお試し。取得情報を地図や表に表示。

MashupEXはEx〜のためのウェブアプリケーションです。Ex*な言葉にはExperience(体感),Exploreing(探索),Exchange(交換),Exclusive(じぶんだけの),Extension(拡張)など、Mashupを通じて得られる新しい何かを表すものがたくさんあります。

「このあいださ〜、あたし〜、なんか〜、%'$`$#0)!のアッピー(apiのこと?)を〜、"#)$0(とイクスチェンジして〜、あと%8(#$)でプチエクステ?しちゃったんだけど〜、それって結局エクスクルーシブじゃん?ロングテール的には〜」

みたいな光景が代官山界隈で普通になるよう、What's EX? ( ワッッツエッックス、ハァン?)としてAtom(アトム)でPushしていきたいと思ってます。

なぜ代官山かというと、このプロジェクトの拠点があるから。代官山を大マッシュアップタウン、マッシュアップのメッカにするのが私の次なる野望です(もちろんジョーダンです)。


MashupEXって一体、どんなサービスなの? ね? ねぇ? ねぇえ? by ミシェル

昨今のWebAPIは非常に優れたRESTfulな使い勝手の良い秀逸なサービスが多いのはご存知の通りです。でも例えばXMLで返ってくるものをそのままブラウザで見ても、あんまり見やすくない。そこでこれを地図や表にしてもう少し見やすくすることで、手軽に、あ〜なるほど的にWebAPIを理解できるようにしようというサービスです。

もちろん秀逸なMashupアプリケーションには、地図だ表だなんて全然関係ない、私なんかが思いもつかない、ユニークなものが沢山あると思います。ですから将来的にはあらゆるインフォグラフを取り込んでいけたら、とても贅沢なことだと思います。

それともう一つ、Mashupですから、複数のサービスとの重ね合わせや絡み合いが大事というか絶対条件だと思いますので、それがお手軽にできるようにしたいですね。色んな情報を重ねて表示したり、最初に得た情報から次の情報を引くとか、そういった「組み合わせ」を簡単にできるようにすることが、サービスにハーモニーや奥行きを生んで、人をワクワクさせたり楽しくさせたりすると思うんです。そしてきっと自分だけの発見も生まれるはず。

それってpopflyでいいんじゃない?とかそっちのほうが圧倒的にかっこいじゃん、と思ったあなたはまったく正しい、その通りだと思います。まあ私自身popflyを使ったことがあるわけじゃなく、いろんなレビューを見た感想でしかないのですが(safariでいくとサインアップに失敗する)、あれはおそらく凄いと思います。じゃあなんで?

それは、私の作品として、独自のテーマがあるからです。その中でも今回MashupEXとして表現したいのが「自分が扱いやすいレベルでの抽象概念で表現する」ということ。

例えばIntegerという型は非常に抽象的なわけです。クラス的にはここから何かの番号やID、日付、順位など、より具体的に表現することができます。具体的になれば、その情報の意味が理解しやすくなります。しかし一方で、都道府県IDのようなローカルルールに基づく具体化よりは、都道府県名のほうが分かりやすいでしょう。しかし、都道府県名で処理しようとすると、それはひらがななのか、漢字なのか、データ上のエンコーディングはどうなるのかといった、実装上の問題、つまりコンピュータ的にどうなのよ?ということになってきます。ですから通常は
都道府県を番号で表現してますといった注釈とともに、数字でコンピューティングするのが一般的なわけです(無論私見ですが)。

つまり、コンピューティングにおける概念には、人の解釈とコンピュータへの実装との分岐点があるわけです。さらに言えば、人と人の間にも隔たりがある場合があるでしょう。

これを私の主観による概念で処理し、さらに各ユーザ毎の主観で処理し、その中の共通性で処理する、それが「自分が扱いやすいレベルでの抽象概念で表現する」ということなのです。

まあ、こんな抽象的な話をつたない文章力で図解もなく書き綴ったところでどうにもなりません。とにかく早く実装して、一人でも多くの方に使って頂けるようにしたいと思っております。そしてWhat's EXに「食べログで行く、香港2泊3日食べ歩き。〜セレブ編〜」と入れたいですね。

※香港現地の情報は今日現在食べログさんには載っていないようです。
※本当にこれを載せるとしたら、内容的には「香港に行ったつもりで、チャイニーズ三昧」とか「香港で出会った日本の隠れた名店探しの旅」かな。

それともう一つ、オープンソースにすること。一口にオープンソースといっても、よく見るとライセンスが色々あって、JavaScriptを多用することを考えるとどこまで可能なのか、現時点では分かっていません。しかしMashupEXとして私が作成したソースはすべて公開する予定です。それはMashupEXだけではなく、Cafe2.0 CONCEPTO Oliva プロジェクトの基本です。

さて、当面の目標ですが、
1.1. Yahoo! JAPAN様の地図を使えるようにする。
1.2 手頃なリスト(リストビューやテーブル)表示ができるようにする。
1.2. RESTfulなWebAPIを使えるようにする(初版は埋め込み)。
1.3. 抽象概念をファミリとして使えるようにする(初版は埋め込み)。
1.4. 各種データをプロファイルという形で統一的使えるようにする(初版は埋め込み)。
1.5. WebAPIの各パラメータをファミリ化する(初版は埋め込み)。

おっと大事なことを忘れてました。進捗報告を行うためにも、
1.0 What's EXをAtom(RSS)で配信できるようにする。
を追加します。

リストについてはこういうのが欲しいというのがあるのですが、それが出回って無ければ何とか自分で作りたいと思っています。

ここまでできたら自分のイメージとWebアプリケーションとしての実装上のギャップがよくわかってくると思うので、それ以降はまた検討しなおしますが、現状は次のように思っています。

2.1. 埋め込みだったものを登録して使えるようにする。
2.2 複数のAPI呼び出しを保存できるようにし、後で呼び出して使えるようにする。
2.3 複数のAPI呼び出しを重ねて(マージして)表示できるようにする。
2.4 APIの呼び出し結果を元に、次のAPIの呼び出しができるようにする。
2.5 JavaScriptを駆使したAPIに対応する。

ができたら、
3.1 JavaScriptを駆使したAPIを登録して使えるようにする。

4.1 CSSを登録して使えるようにする。

5.1 カレンダーにポーティング
5.2 ブログにポーティング
5.3 SNSにポーティング

その他、ユーザ管理(ログイン)とか、ファイルに保存とか、サーバに保存といったオプション的な機能も、行き当たりばったりで追加していきたいと思います。


2008年7月14日月曜日

全角@キーが入らない!

ひらがらモードで@を押下すると。「になってしまうようになった。突然。しょうがないので再起動してみたが変化なし。ヘルプをみるとシステム環境設定のキーボードとマウスのキーボードの欄にキーボードの種類を手動選択できるとあるが、実際そんなものは出てこない。キーボードの接続を切ってみたが同じ。ひょっとしたら何か違うキーボードを差せば出てくるのかもしれないが、そんな都合のいい物は持ってないし。

そこでいろいろネットで検索したが、appleの使えないヘルプが出てくる程度。サポートに電話しようにも今日は時遅し。19:00まででした。そこでやむなく、OKWebに質問してみようと、質問事項を入力していると、突然復活した!

ということは、ひょっとしてsafariのjavascriptが悪さしていて、OKWebの質問の入力で直ったんじゃないかな。だってそういえばだよ、何か買い物とかして住所とか入力してるときに、一度半角にして入力した後で、全角部分の間違いを修正しようとしても、以後一切全角にならないことが多々あるじゃん。まあ、あれはあれなのかもしれないけど。

一応、メモしておくということで。