人生でもっとも厳しいのは大人になるまでである
Ruby on Rails で kaeruspoon をはじめから作り直してみました。一番の違いはブログをやめて日記にしたところ。手打ちでHTMLタグを書き書きしていたころのサイトと同様に、毎日零時過ぎに自動的に更新します。ブログはやっぱりなんだかしっくりきませんでした。
まだ今のところ kaeruspoon は未完成です。
Ruby on Rails で kaeruspoon をはじめから作り直してみました。一番の違いはブログをやめて日記にしたところ。手打ちでHTMLタグを書き書きしていたころのサイトと同様に、毎日零時過ぎに自動的に更新します。ブログはやっぱりなんだかしっくりきませんでした。
まだ今のところ kaeruspoon は未完成です。
昨日は朝7時に帰宅。前の日から会社の人とずっと飲んでました。仕事にいくユルさんを送り出してからホットカーペットの上でお昼まで熟睡。なんだかもったいない時間を過ごしている気がしないでもありません。
午後からはkaeruspoonの続き。ちょっとだけAjaxを取り入れようかと試作中。Javascriptを直接書いてみたい気もするのだけど、今回はRailsの力を使おう。とりあえず夕方までこつこつコーディングをしました。
豆乳鍋をはじめて食べました。豆乳ってあまり好きじゃないんだけど、豆乳鍋は野菜がすごくおいしくなってびっくりした。なかなかいいです。
kaeruspoonにはトラックバックのかわりにリンク元表示機能をつけたのだけど、その情報はデフォルトでは表示させてなくて、Ajaxでクリックしたときにだけ表示するようにしてみた。クリックを押すたびに表示/非表示を繰り返そうと思ったのだけど、
link_to_remote("リンク元[#{count.size}]",
:update => "diary_referer#{id}",
:url => diary_referer_url(:id => id),
:complete => "Element.toggle(\"diary_referer#{id}\")")
これだと一回目のクリックが表示されません。二回目以降は期待通りに動くのですが。どう見ても、最初のトグルスイッチのデフォルト状態がオンになっていることは明白。オプションで指定できるのかとも思ってみましたがよくわからず。かわりにこんな記事を発見。なるほど、表示先の要素で指定するのが本当のような気がしてきました。というわけで以下のようにしてみました。
<div id="diary_referer<%= diary.id %>" style="display:none;"></div>
これでばっちり動きました。これなら、最初は表示していないということも明白になるし、なかなかいい感じです。
ユルさんがまだ仕事から帰ってきていなかったので、kaeruspoonをいじくって待つことにしました。とても寒くてエアコンが追いつかない中、キーボードを叩きます。今回はkaeruspoonの独自記法に関する機能の実装。最初はcontrollerにコードを書いていたのだけど、おかしいことに気づいてhelper上でメソッドを作りました。preタグの扱いにちょっと考えたけど、とりあえず勢いで以下のように実装です。
def view_text(text)
text_list = Array.new
pos = 0
while start_pos = text.index(start_mark, pos)
if start_pos != pos
text_list << {:name => "text", :start => pos, :end => start_pos -1}
end
end_pos = text.index(end_mark, start_pos)
if end_pos
text_list << {:name => "pre", :start => start_pos, :end => end_pos}
pos = end_pos + end_mark.length
else
text_list.pop
text_list << {:name => "text", :start => pos, :end => -1}
pos = -1
end
end
if text_list.empty?
text_list << {:name => "text", :start => 0, :end => -1}
else
if (pos != -1) && (text.index(start_mark, pos) == nil)
text_list << {:name => "text", :start => pos, :end => -1}
end
end
html = ''
text_list.each do |part|
if part[:name] == "text"
part_text = text[part[:start]..part[:end]].strip
part_text = exchange_http(part_text)
part_text = exchange_strong(part_text)
part_text = part_text.gsub("\n", "<br/>")
html << '<p>' + part_text + '</p>'
else
part_text = text[(part[:start] + start_mark.length)..(part[:end] - 1)]
part_text = h(part_text)
html << '<pre>' + part_text + '</pre>'
end
end
return html
end
start_mark, end_markに関しては実際はメソッド内で定義しているのだけど、ここでは省略しています。
リファクタリングはまだしてません。もっと全然スマートにできそうですが、その前に掲示板機能を作っちゃおうと思います。リファクタリングは最後回しです。サンデープログラマですね。TDDも全然やってないし。いけませんいけません。
ユルさんがシチューを作ってくれました。のんびりした夜を過ごしています。
ロックこそがぼくに残された最後の音楽。Pandoraは、PCを開いてから閉じるまでのあいだ、ぼくが常に接続しているサイトです。
ここでは自分の好きな曲やアーティストを入力すると、それやそれに近い音楽が次々と登場して聴くことができます。しかも一曲ずつフルに。自分の趣味に近い曲が次々と現れるので、今まで知らなかったバンドを発見するのもたやすいところがこのサイトの一番すごいところ。洋楽好きな人はみんなそうだろうけど、まず自分に合った曲を見つけることが一番大変。このサイトではその悩みが解消されます。気に入った曲が出てきたらすぐに購入することもできるし、ただBGMとしてずっと流し続けることもできるし、もう手放せない感じです。ぼくはプログラミングしているときはよくロックを聴くので重宝しています。
そんなロックのノリでキーボードをぶっ壊しそうですが、kaeruspoonの掲示板機能を実装しました。各日記ごとにコメントをつけられるのですが、これは掲示板のページで抽出して読むことができます。もちろん、ここで書き込むことも可能。さらに日記に関連づけられていないスレッドも作ることができます。見た目は昔懐かしい掲示板そのもの。いや、実はぼくのデザインセンスは90年代で止まっているのです。古いの大好き。落ち着くなあ。ここでもちょこっとAjaxを使いました。一度覚えると、あらゆるところで使いたくなるので注意が必要です。
今日はZガンダムを見ました。映画版のやつ。実は、Zガンダム自体観るのが初めてです。シャアがカッコ悪く登場しているらしいのですが、確かにちょっとカッコ悪かったですね。本当のシャアはキシリア様と一緒にあの爆発で死んだんだよ。ちなみにぼくが一番好きなのはブライトさんです(どうでもいいお話)。
昨日はユルさんと明治神宮に行ってきました。初詣にあんなところに行く気はしませんが、一度は行ってみたかったのです。都会の真ん中にある神社ですが、木々に囲まれていてなかなか静かでした。本殿では結婚式もやっていて、武石さん夫妻の結婚式を思い出します。しかし、ここには神社が備えているべき厳かな雰囲気というものがありませんでした。まだ新しい神社だからかもしれません。高千穂神社などとは比較にならないもの。
明治神宮のあとは原宿の竹下通りへ。ここに来るのは高校の修学旅行以来です。めちゃくちゃ人が多くて、めちゃくちゃ変な格好の人たちがいました。そうですね、子供の遊び場です。大人のぼくには無理がありました。そのあとは表参道へ。ウワサのイルミネーションをちょっと見たかったのですが、寒かったので諦めます。タグホイヤーの店先でカレラを眺めて帰りました。
kaeruspoonは一通りの機能の実装を終えました。あとはリファクタリングをしながらデザインをなんとかしたいですね。それからAjaxチャットをそのうち作ろうかと思います。
藤堂さんと創作合宿をやろうなどという話をしているとかしていないとか。創作合宿って何かといえば、みんなで集まってどこかへ行ってそこで観光もせずにただ黙々と創作活動をしようという活動です。どこかで聞いたことがある、っていうか、つまりこれはいわゆる開発合宿の創作家バージョンなのです。開発合宿は、「はてな」の人たちがやっていて有名でぼくも密かにやってみたいと考えているけど、ぼくの会社じゃまずありえないようなお話です。開発合宿の雰囲気はIDEA*IDEAの中の人のレポートなんかを読むとよくつかめると思います。これを創作活動でやってしまおうというお話。
というのも、今のぼくは全然作品が書けなくなってしまっていて、なんでもいいからここを打破してまたあの頃みたいにガシガシ書きたいのだけどどうしたらいいのかわからない、みたいな深い森の中に迷い込んでしまっているので、なんでもいいからやってみたいというのが本当のところです。
ユルさんにクリスマスプレゼントとしてハードディスクを買ってもらいました。これでサーバー復活です。さらにRAID1で組んだので、冗長性もばっちり。今、OSをインストール中です。OSはcentOSを選びました。
とりあえずwebサーバー復活です。といってもlighttpdの設定にハマってしまって、それは後回しに。現状はWebrickで動いています。早急にlighttpdで動かすようにしましょう。今日はこれでおしまい。
lighttpd、大はまりです。前に使っていたときは肩すかしかと思うくらいすんなりと動いたのだけど、今回は全然ダメ。なにがダメってちゃんと起動してくれない。/etc/init.d/lighttpd start をカマしてokがででも、status確認をすると、「lighttpdが停止していますが、PIDファイルが残っています」みたいなメッセージが帰ってくる。stopかけても確かにプロセスとファイルが残っているので強制的にそいつらを排除、それからstatus確認すると、今度は「サブシステムがロックされています」みたいなメッセージが出てくる。/var/lock/lighttpdを消してからstatus確認で、ようやく「lighttpdが停止しています」になるという状況。startかけると最初に戻る、というループ状態です。あーもう。今日はもうやめよう。明日、ちょっと試してダメだったらインストールしなおした方がいいかもです。
今日から冬休み。のんびりユルさんと過ごしたり本を読んだりしよう。lighttpdはインストールしなおしたり、ソースからコンパイルしてみたりしたけどやっぱりダメでした。冬休み中に、もう一回サーバの構築からやり直すかもです。
サーバをもう一度構築しなおします。そうしたら何の引っかかりもなくlighttpdが起動しました。なんだよもう。まあよかったよかった。
Internet Archiveというサイトがあって、1996年からネット上のサイトを保存し続けていて今では850億ページもデータベースにあるようです。ぼくが21歳のころに作っていたサイトもありました。なつかしすぎる。でも肝心の旅行記の部分はアーカイブになくて残念でした。ちなみにそのころのぼくのサイトの名前は「つかさの部屋」でした(だせー)。当時の個人サイトはみんな「○○の部屋」という名前がついていたのです(あながち誇張でもない)。
25歳の頃のぼくのサイトもありました。小説をばりばり書いています。サイトのデザインもなんだかけっこういい感じ。kaeruspoonのデザインは、そいつの復刻版にしようと思います。
あ、それからSubversionを使って開発環境を整えました。サーバ上にリポジトリを置いて、開発はノートPC上のcoLinuxで行います。適当にぐりぐりやったらコミット一発OKで反映です。素敵だ。
昨日は大掃除をしました。ぼくの書斎もぴかぴか。ぴかぴかなのは好きです。散らかってるのも好きだけど。あまっていたディスプレイを使って、デュアルディスプレイ環境を作ってみました。
お、プログラマみたい。ノートPC上でがしがしコードを打って、もう一個のディスプレイですぐさまチェックです。楽チンだね、これ。ディスプレイが広く使えてストレスが軽減しました。もっと早くからやっとけばよかったよ。ホントはもっと広い机の上で並べて置けたらもっといいのだろうけど、これでも充分です。
kaeruspoonのデザインを2001年頃のものに戻してみました。なかなかいい感じです。
またもやInternetExplorerのせいでちょっと苦労しました。なんであの野郎だけ変なことになってるんだ。こうして夜は更けていきます。
デュアルディスプレイだと、ブラウジングしながらバイクの動画を見るなんてことも楽々です。素敵だ。