日記才人、とてもじゃないが元旦には間に合わない。すんません、すんません。
日記才人、とてもじゃないが元旦には間に合わない。すんません、すんません。
そういえば、この間某所で噂のライブドアオートのCMを見てしまった。・・・堀江さん、いったいどうしちゃったんですか。せめて薄ら笑いしてなかったらまだよかったのに・・・いや、薄ら笑いしてなくてもすでにコンセプトが・・・
っていうか、ライブドアのCMって去年のブログもそうだけどセンスがイマイチ・・・・広告代理店がマズいのだろうか。
いかなきゃよかったよ。本当。なんかこの前も少し書いたけど、アメリカ時代の友達は俺はもう少し選ぶべきだった。もうこれからは付き合う相手を厳選するよ。時間と金の無駄遣いだ、これは。
寂しさとかに負けて後々嫌になる相手と過ごす時間って本当もったいないわ。逆に、どんなに非常識に見えても気の合う相手とは頑張って付き合おうっと。
今日はこれから今年最後?の飲み。その前に日記才人のだいたいの機能をそろえようと思ったのだけど、ちょっと間に合わなかった・・・くそ。それではいってくるぜ。
http://search.cpan.org/~mahito/Class-Args-0.02/lib/Class/Args.pm
気になったのでCPANのrecentリストから見てみたが、なんじゃこりゃ。
Module->func();
Module::func();
を同じように扱うためのモジュールらしいが、正直言ってそれらを同じように扱おうとする事自体がすでに間違っている。
知り合いの日記を覗いたら、マイホーム建築云々書いてある。へー。っていうか読んでるのしらねーだろうけど。
(↑現在MSNに登録してる名前の欄)昨日はとりあえずちょこまかした用事を片付けて、だいたいメインの仕事は終わったわけだが、日記才人がある。とほほ。
公言していた本番前までに書く機能のうち、URLを以前の/index.plから書き直すヤツはとりあえず品川駅で書いた(けどまだ稼働させてない)。index.plだけで動かすのはいいアイデアだと思ったんだが、デバッグが難しすぎた。ごめんね、ごめんね。とりあえずストレス無しで動くとは思うんだが。
経験値のヤツはまだやってない。これはひょっとしたらデータベースを一回止める必要アリ。フレームは半分くらいできてる。新規登録はこれから。あと大事なのを忘れてた。検索!
一応pg_sennaを使ってみようかと思ってるんだが、前にこれで失敗したからなー(笑)わははh。
誰がログイン中なのか書いた。あとマイ日記才人に足すのが足りなかった。書いた。削除ボタンも書いた。とりあえず風呂でもいくかなー
まだデータがそろってないので全部マッピングされるわけではないが、もう設定ファイルをいじるだけでマッピングができる。問題は昔の投票をどうやってマッピングするかだなー。POSTなのでredirectするわけにはいかぬ。これだけはinternal_redirect()するかな。
[internal_redirect()で一発でできた!]
マイ日記才人を書き直したら今度は投票ができなくなってしまったので考えてみたんだが、やっぱり同じコードでHTML作成したいよな、ということでHTMLをサーバーサイドで作成するんではなく、サーバーサイドで埋め込みのJSON構造体を作成してそれをjavascriptで展開する方法に変えてみた。
<script language="javascript">
<!--
var hash = new NikkiSite.LocationHash();
if (hash.param['p'] > 1) {
NikkiSite.showLoading();
new Ajax.Request(app_uri + '?p=' + hash.param['p'], { asynchronous: 1,onComplete: updateList} );
} else {
var next_page = 2;
document.getElementById('next-link').onclick =
NikkiSite.ajaxNextPageCallback(app_uri, next_page, updateList);
var list = <% JSON->new(skipinvalid => 1)->objToJson([ map { NikkiSite::App::ListRecent->d2h($_) } @diaries ]) %>;
NikkiSite.HTML.mylist(list);
}
-->
</script>
<% ... %>内がHTML::Masonのコード。このNikkiSite.HTML.mylistをupdateList()コールバック内で呼ぶようにすると、一ページ目は埋め込みのデータを使い、それ以降はajaxでガンガンとってくるようになる。これでどうだ、これで!
昨日紆余曲折を経てようやく某案件のためにNetAppシステムが稼働しはじめた。昔俺が毎日のようにディスクを初期化しては俺の書いたテストツールを走らせてたシステムだ。もう懐かしいったらありゃあしない。
good ol' daysにちなんで最初のシステムは早速autofsとsymlinkでまとめてみたぞ。さー、これでいくらでもデータをいれてやるぜ、ベイベー!
またもやNの案件でデータセンターへ。今日は相手の業者さんも含めて皆遅刻気味。とにかくちょこまかと問題の起こる案件だこれは。
ところ今日先方は技術者4人+営業1人で来てたのだが、途中から営業さんのほうは本当にやることがなくなってしまったし、俺も一緒に来てたK女史と一緒に他の作業に没頭してたので暇だったらしい。作業をしている技術者の横に立って、見るふりをしながら寝てた。ワロす。
予定ががんがん遅れまくってその後飯食って渋谷に移動。内容も知らんのに入ったミーティングだったが、なんとか乗り切れた模様。っていうか、皆ミーティング中に電話かけまくり。すげーな。
起きたら自分がワインくさい。忘年会の影響ですね。横たわったまま30分程かけて昨日ishinaoさんに言われたヤツ、とりあえずマイ日記才人だけでやってみた。機能的には全然文句ないんだけど、JavascriptとPerlで同じHTMLを2回書くの嫌だなぁ。なんかその辺りを自動的に生成するようにしようかな・・・
(また)よっぱらって帰ってきたところ、日記才人にメッセージ。・・・またストーカーだよ。ほんとうぜー。っていうか、俺は他の人にそんなこと言った事ないのに、「死ね」とまで言ったのに、なにがわからないのかね。病気なんだろうなぁ。多分これ読んだ人引くと思うけど、ちょっとだけマジで死んでくれないかな、と思う。
死ね、とまで言ってもわからないのってどうすればいいんだよ、本当。
年末にやるぜ。
どうも頭が理解している以上に疲れているらしい。足が重い。くらくらする。やばいなー。仕事の相棒さんには「ドリエルを買いなさい」「病院に行きなさい」と散々言われるし、昨日忘年会した人達には「寝ろ!」と言われるし、なんとなく自覚症状もでてきたんだけど、しかしなー。
やっぱりドリエルなのか。
工事のおじちゃん達がにこやかに「では朝9時半でどうでしょうか?」と言ってくれたので、朝から昨日の水漏れの件に関して調査工事。わしはドトールでコーヒーを買って、PCをいじりながら横でぼけぼけ。
ソフトのインストールでもするかなー。
あー、書こうと思ってたCでのYAML実装が、AutrijusAudreyの手によって。RubyのYAML実装はCなのにPerlのはPurePerlしかないのはまずいよなぁ、と常々思ってたんだが、これで開発が進めば安心してYAMLが使えるようになる。
某イタリアンで16人も集まって忘年会。ワインがぶがぶ。
新橋に「あたご屋」という、豆腐懐石の店があるのだが、ここがすこぶるうまい。豆腐をものすごい色んな形で工夫してだしてくれる。でももちろんそんな小細工しないでもうまい豆腐を使っているのだが。
ここが大好きで何回も通っているのだが、とうとう年内で営業が終わってしまう。つぶれるとかではなく、なんらかの理由で店を続けない決断をしたらしい。というわけでこの3ヶ月くらいで4回か5回通っているのだ。今日はここで忘年会。完全に名前を覚えられてた。
しかしうまかったなぁ。湯豆腐、本当にうまかった。ああ、これがもうこれから食べられないなんて・・・悲しい。
事務所に行ったら管理人と業者らしき人達がウチの部屋の前でたむろしている。なんだろう?と思ってたら「あ!帰ってきた!!!!」と大声。なんじゃー、と思ったら、どうも階下で水漏れしてるらしい。それがどうもうちの部屋らしい。
ちなみにうちの事務所は一応ワンルームマンションを事務所として使っているので、キッチンと風呂場もついている。どうもそこから漏れてるっぽいとの事で、結局一日中誰かが出入りしてて仕事にならん。
今日は棚の取り付けとかを重点的に。あと、細々としたものの買物。とうとうビックカメラのポイントが4万ポイントを超えたので、PSPを購入。塊魂やるぜ。途中で某商社に苦情いれまくり。ふざけるな。PCのセットアップ、続き。KVMスイッチと一緒に動かそうとすると色々と問題が。
ちなみにいまだに塊魂をやる時間がない。
自分の手に負えない、自分でどうにもできない、というより誰にもどうにもできない状況を受け止めるのは辛いな。まわりにはしょうがない、と言うが、あんまりしょうがないとは思っていない。どうにかできるんじゃなかったのか。どうにかしたかった。
薬剤師Cにちゃんと寝ろと言われた。
明日は9時半に事務所にいないといけない。
目がちょっとかすむ。
元気に飛び回ってる。相変わらず寝れないけど多分まだ体は平気だろう。
色々ご迷惑をかけていますが、一応投票、閲覧、マイ日記、メッセージ等ができるようになったので一応www.nikki-site.comを正月3が日の間くらいに「復活」させようかと思います。
これから実装する予定なのは
くらいかな。何か抜けてたら教えてください。あと備考:
ついては特に問題がなければ12月のデータはなかった事にして1月からまた始めたいと思います。意見、希望などはこのブログとか、mixiでお願いします
たまに気になるので自分のプロジェクトはプログラム行数を以下のように数えている:
find lib -name '*.pm' -exec cat {} \; | wc -l
まー、コメントとかも入っちゃうし正確な値ではないのだけど、でもなんらかの指標にはなる。ちなみに日記才人は現在ぴったり5600行。
これがこの前から某所で某若人が苦しんでるプロジェクトになると14310行。うーん。がんばれよ、としかいいようがないが・・・。
正直モバイル対応って真面目にやった事ないんだけど、皆一体どうやってやってるんだろう。「こうすればモバイル対応できる」みたいな手引書とかないのか。っていうか、色んなキャリアーの色んなブラウザにどうやって対応してるんだ。装飾を減らせばそれでいいのかなー。
なんか突然そう思った。
半分くらいまで読んでペンディングになってた「東京タワー」をドトールでコーヒー飲みながら読んでたら涙がでてきてやばいやばい。一気に読み終えたが、本当たまらんのう。隣のオヤジが次から次へとタバコを吸ってなかったらもっとよかったのに。
タバコの匂いが立ちこめる話でもあったのでなんとなく読んでた本とはあっていたのだが。ああ、ヤバい泣ける。
なんか眠い。眠くてしょうがない。ものすごい長時間寝たにも関わらずまだ眠い。
ふと気になってみてみたら、イブでも意外とアクセス多いな>日記才人。
今日久しぶりに近所のラーメン屋で担々麺を食べてきた。一瞬丼ものも頼もうかと思ったけど止めておいたら、食べ終わった時にはいい塩梅だった。なんか昔に比べていくら食べてもおなかがすいているってのはどんどんなくなってきてるのが最近実感できる。
ま、体がもう求めてないんだろうな。
今は事務所だけど、すぐに某データセンターに行ってカンヅメ作業しなくてはならないので今書ける間に書いてしまおう。
自分は最近HTML::Mason使いなのでよくテンプレートにPerlを埋め込む。普通~に
<%init>
my @list = NikkiSite::Data::Diaries->latest();
</%init>
% foreach my $d (@list) {
<div><% $d->title %></div>
% }
みたいな事をするのだが、「テンプレートにコードを混ぜるなんてとんでもない!」というp純粋主義者もいる。HTML::Templateなんかはその路線を踏襲してて、プログラマーとHTMLコーダーの境界線が結構キレイにひかれている。
多分どっちのアプローチもそれほど間違っていなくて、ただ実際問題としてどういう体勢で開発しているのかがポイントなんだろうなぁと思うのだ。例えば自分が開発する場合は、ごくごく少人数(っていうか俺だけっての多い)だったりするので自由度の低い、しかし哲学的に構成されたパラダイムというのは利点が少ないわけだ。Javaなんかも俺の中ではその範疇に入る。自分はJavaを教えていた事もあるし、ちゃんと使い方をわかっているけどあの物々しさはさっとアプリケーションを書きたい時には開発行程が長過ぎる。
逆にテンプレートとコードをちゃんと分離させないとプログラマーでないHTMLコーダーの人がとても困る事がある。ライブドアなんかではまわりがプログラマーだらけだったからひょいと隣の人に聞けばわかる事だったからそれほど問題でもないけど実際問題としてそういう職場がどれだけあるのか。なかなかないような気がするな。
ただ、純粋分離アプローチはあまり現実に即してない気がする。現実的にはプログラマーが忙しくてコード部分に手をつけられないとか、プログラムが動いているサーバーは止める訳にはいかないけどテンプレートだけだったら再コンパイルすればどうにかなるとか、色々と制限があって、テンプレートでちょこっとコード部分をかけたら・・・って時は多いはずだ。っていうか、日記才人を開発してて時々一瞬サーバーが502返すのは、mod_perlに組み込んだモジュールを再度強制的に読み込みさせるためで、これがHTML::Masonのテンプレートだとセーブするだけで勝手にオブジェクトコードを再コンパイルしてapacheの再起動無しで反映してくれんだよね・・・。だからちょっとした修正はHTML::Masonレベルで行ってしまう。これだとサービスの停止はない。
ちなみにmod_perl上でDBD::Pgのserver_prepare => 1を使ってApache2::Reloadとかを有効にしてるとClass::DBIファイルを書き換えたりした時にすげー面倒くさい事が起こるので要注意。server_prepareを向こうにすればいいんだけど、このせいで俺はApache2::Reload恐怖症になってしまって今でも怖くて使えずにいる。
ともあれもしコーディング規約としてコードをテンプレートに埋め込まないということを指定されたとしても俺は絶対に「コードをテンプレートに埋め込める」フレームワークを使うな。いざという時にコードは絶対に埋め込めない!なんてそんな現場から見ると浮世離れした理由で仕事を邪魔されちゃたまらん。
ってなわけでとりとめもない独り言でした。
この間友達の彼女と電話で一瞬話した時の彼女の感想が「思ったより渋い声してる」だったそうで。今までもよく声がいいとはよく言われたが(喋りだすとエロエロであかんと駄目だしされることもしばしば)なんか言われる度に「ほへー」と思うのであった。
某USの会社と仕事をしているせいで朝ミーティング急増中。昨日商談中に知らされて今日も今日とて朝9時から・・・とほほ。
そういえば最近F社とかC社とか商社系の所とのおつきあいが多くて、とてもためになるというか、仲介役をしたり人を叱責するなんて思いもしなかった俺がそういうチャンスを与えられてて勉強になる。ぺーぺーとは言え、人を使う立場になってきたんだなぁとなんとなく思いつつ仕事をしているのでした。
しかし眠い。
MochiKitというJavascriptライブラリをHTML::MasonリストにSebastian Reidelがポストしてたので見てみた:
http://mochikit.com/screencasts/MochiKit_Intro-1.mov
MochiKit.DOMは結構圧巻。見てる時に久しぶりに「Holy Shit!」と叫んでしまった。
まず前提:日記才人が時々Internal Server Errorでエラーになるのだが、これがどうもデータベースサーバーのほうが「これ以上の接続はうけつけられん!」と文句を言ってるからだと言ってるのがわかった。これが限界値ではなく、設定でそうなっているので設定値を変えればいいのだが・・・・変えられん。
なんで変えられないかと言うと、semaphoreという排他制御を司るリソースの数が足りないから。これの値を大きくすればいいのだが、これをするにはカーネル(OSの根幹)の設定を変更した上で再コンパイルしないといけない。
で、したわけです。すごい面倒くさかったけど・・・。でもこれをした後再起動したらハードディスクの一部を認識しない、みたいな妙なエラーがでて起動できない。とほほ。それで悩んでたら結局時間切れになってしまった。
というのが顛末です!
カーネル再構築、結局トラブル+時間切れでできなかったのでメモ:
FreeBSD 5.3なんだけど、誰かどうしたらいいのかわかんないかなー。とほほ。というわけで時間切れなのでまた明日かな。
う、うほー。WebサーバーとDBサーバーがあって、DBサーバーのほうのカーネルパラメターを変更しようと思って再構築したのでリブート!・・・と思ったら、Webサーバーのほうでカーネル再コンパイルしてた・・・orz
馬鹿だ俺。
ついこの間PostgreSQL8.0が出たばっかりだと思ったのにもう8.1.1がでてるー。うえーん。
Webはmake buildworld; make buildkernel (GENERIC)済み。今DBのほうをmake buildkernel (GENERIC)してるところ。
ちょっとマズいバグの出し方をしてしまって、テンパってます。がんがれ、俺。
時々死にたくなるのはこういう夜。きっと誰も悲しむ事もないんだろう、というより悲しむ人がいるのかとどうか確かめるためだけに死んでみたくなる。えらく傲慢な考えだとはよくわかってるつもりだからさすがに騒いだりせんけど、こういう不特定多数が読む場所では書きたい。
日本ではこういう気持ちになる回数が比較的少なかった。アメリカでは毎週のように落ち込んでた。今思うに付き合ってた相手もまずかったのだろうな。今日久しぶりにアメリカ時代の日本人友達に会った。別に悪意の篭ったことをされたわけでもなく、普通に食べて飲んで、仕事もあったのでさっと別れた。でもなんなんだ、この疎外感というか、よそよそしさは。この人だけじゃない、向こうでつきあってた人達の相当数にこういう感じを受けてた。責めてるわけではないのだけれど・・・。
逆に言うとそういう付き合いでもしてしまうほど孤独だったんだろうなぁ。
日本でじゃあどうかというと結構うまくやってると思う。でもこの3週間程は忘年会シーズンを口実に毎日のように飲んでるけど、多分飲まないと寝れない感じなんだと思われる。一人でいられない。静寂が恐怖だ。暗闇が恐ろしい。
結局もう10年近くも前に言われた部分が直っていない。自分の存在意義が見いだせない。自分のこういう部分が大嫌いだ。
コレで痛いと言われようがなんだろうが、俺はこうなんだよ。うるせー。
週末に直したと思ったのにまだなんもうごかんとの連絡・・・orz。本当は色々物を買いに行かなくちゃ行けないのだけど・・・というわけで朝一から作業。一応これでいいかな、と思うのだけど要観察
なんか頭がごちゃごちゃしてる。とりあえず、(1)定例会議はなくなった(2)買物にはいまから行こう!(3)その前にタクシーで荷物を運ばないと。
うし、がんばるぞ。あ、でもその前にシャワーを・・・
皆で夜通しコーディング。今回俺はちと別件があったのでそちらをまず優先。だいたいメドがたったところで参加。だがやっぱり連日の早朝ミーティングとかが効いてたのか結構使い物にならなかったような気がする。とほほ。
終わった所でご飯を食べに行って、軽くビールとスコッチ。あとは何故か勢いでDの家でマリオカート。そして今に至る。
午前7時半か・・・いい天気だなぁ。サイクリングか散歩にでもいきたかったのだが・・・まだ作業中。とほほ。
昨日も今日も朝9時から溜池山王でミーティング。その前の晩は接待で飲まされてるし、死ぬー。ミーティングがすぐ終わるとは思ってなかったので行けない事にしてたその後のアポがあったのだが、意外とはやめに終わったので頑張って新宿へ。小一時間程話してから今度は一路渋谷へ。うどんなんぞ食べてたら途中、今日も泊まり込みのコーディング大会があることを知り、愕然。
その後オフィス開き。ちょこまかしたものを買ったり、ガスとかを開通させたり、あとデスクが届いた。組み立ててキレイ。うひ。
ビアードパパをお土産に買って、コーディング大会会場へ。そして今にいたる。しかし疲れた。まだ起きてなければいけないのか・・・
この前買ったシステムの関係で接待してもらったのだがそこは自分の古巣で、当時の支社長さんなんかに頭を下げられたりして緊張することこの上ない。
うまいワインを飲ませてもらったのだがおかげでちーとも酔えなかった。タクシーに乗せられて家に着いてからようやく酔いがまわりだしたらしくSにメール。酔っ払いをちゃんとあしらってくれるのは好きよ(笑)
オヤジが今日ブラジルに帰っていった。そういうわけで昼は実家で一緒に。その後昼過ぎにオヤジと家族は成田へ。俺は渋谷某所へ。どこででも仕事ができたのとあちこちの案件を抱えているのでとりあえずT氏に電話。これでオフィスにいたらそっちへ行ってそっちの仕事をしようと思ったのであった。
そうしたらいたので、ビアードパパでお土産買ってオフィスへ。思いのほか皆喜んでくれた。
某店でチキンファヒータ食べた。
http://www.youmaga.com/seattleite/cooking/04.html
うまーい。ファヒータってアメリカにいる時は全然食べたくなかったんだけどなぁw。上司が連れて行ってくれたサンノゼの場末のメキシコ人しかいかないレストランのがとてもうまかったな、そういえば。
毎日がめまぐるしい。場所を移動して、コードを書き、知らない世界の人と話し、自分でもどうにもならないかもしれないような所に自分が4年かけたコツコツためたお金を使い。考えている暇もない、というのはこういう事なのかな。
それなりに遊んではいるが、しかしそれでもそれが独立したイベントとして頭の中に登録されずに全てが連続した瞬間のようになっている。ほんの数週間前まではそれほどでもなかったが、このごろは特にこの傾向が強い。
まわるまわる。
そういえば明後日からオフィスが使える。
今朝起きたら日記才人が真っ白になってた。全然わけわからん。しょうがないので今リブートしてみた。
・・・結局設定ミス。わからないのはなんで昨日作業した時にリブートとかしてないのに勝手に設定が反映されているのかどうか。まぁええわ。ついでにメッセージが呼び出せないってのも直した!javascriptでHTMLをエスケープしてたんだけど、多分JSONでデータを受け渡す時に数字の値(でも本当は文字列)が勝手にint型とかになってString型じゃなくなってた。
NikkiSite.escapeHTML = function(string) {
var p = string;
try {
p = p.replace(/</g, "<");
p = p.replace(/>/g, ">");
} catch (e) { p = ''; }
return p;
};
の一行目を
var p = '' + string;
で問題解決。いや~、これはハマるね。
渋谷の某所で小さいオフィスを契約した。16日から使える。50万円くらいふっとんだ。鍵をもらった。色々と書類に判子を押した。感慨深かった。
・・・あ、ガスとか水道とかの手配せにゃ。
某プロダクトを家に持ち帰ってきてから数ヶ月。すっかりそれがある生活になじんでしまったため、もう今更それ無しなんて考えられないのだが、今日あえなく返還する事に。とほほ。
毎朝起きて必ず・・・毎年正月は必ず・・・。なんかそういうルーチンと無縁の生活を送ってきたのでどうもそう言う事を言われてもなじめない。悪い言い方をするといきあたりばったりの生活を送ってきたわけだが、それでも毎日ルーチンがないってことはいつも「今日は何をしよう?」と思えてとてもいいんだけどな。
アボカドバーガー、超うま。でもちと高過ぎるといえば高過ぎるので(セットで1300円くらい)そうそう行かないとは思うが・・・。でもアボカドたっぷりでうまかったー。
俺のデザインミスもあるのだが、どうも以下の現象がよく起きてる気がする
ページにアクセス→認証OK→ページ内からAjaxでアプリにアクセス
→ちょうど認証が切れて、Ajax拒否→ブラウザがほげってページが表示できない
これ、まずいよねー。認証が必要なAjaxアプリに関しては認証が必要だけど、普通のページにアクセスした瞬間にはアクセスが正しく終了する事が保証されるようなAPIが必要ってことだな。そんな無茶な・・・
なんかいい方法あるのかな。
Xango 0.99を使って日記才人クローラー書いてみた。1999年くらいに停止した、自動更新報告チェックですな。でも今度はRSSかAtom配信が必要。
ちなみにXangoはXango::Broker::Pushを初めて使ってみた(笑)ちゃんと動く事を確認しますた。
以前最速インターフェース研究所で見たlocation.hashでパラメターを引き連れて行く方法でajaxを使ってるページのページングを実装してみた。基本的には、ページ移動をした時に
location.hash += 'p=' + page;
みたいにして連れて行くだけ。あとは現在のページを知るのに、以下のようなオブジェクトを定義して、
NikkiSite.LocationHash = function() {
this.parseHash = function(h) {
var list = h.split(/&/);
for(i = 0; i < list.length; i++) {
var chunk = list[i];
pair = chunk.split(/=/);
this.param[pair[0 = pair[1];
}
};
this.hash = location.hash;
this.hash = this.hash.replace(/^#/, '');
this.param = {};
this.parseHash(this.hash);
};
こんな感じでページをしてxmlHttpRequestを投げる:
var hash = new NikkiSite.LocationHash();
var app_uri = '/hoge.app?p=' + hash.param['p'];
new Ajax.Request (app_uri);
これで他のページにページ移動しても#p=1みたいな感じにページが常に残る。
日記才人の得票ランキング開発できた。とりあえず今日の得票ランキングと、それをあとは自動的にログにまわすヤツがあるのでいいかな。次はちょっとページングでも見るか・・・location.hashをうまく使えないかな。
家に帰ってきてちょっとだけ寝てから実家へ。横浜中華街でご飯を食べてから、一旦実家に行ったものの何故かこんな日に限って今までそんな事を言った事のない親がカラオケに行きたいとかぬかすのでおつきあいで徹夜カラオケの後にまたカラオケに行く事に。まぁ折角なので「VIPPOP STAR」を練習。結構歌えそうだ。ちゃんと覚えよう~。
しかし眠い。さて、日記才人の仕事するぞ!
・・・だめだ。バグだらけ。8.0.4に戻さないと・・・
泊まり込み作業の後「このまま解散してもつまらーん!」と思って皆でちょっくら飯。その後新宿のカラオケへ。歌いまくって始発で帰ってきた。
↑で、駄目だこりゃと思ってたらhttpdが異常に落ちるので(Segfault)gdbを通してhttpdを動かそうと試みると
gdb /usr/local/apache/modperl/bin/httpd
(gdb) R -X
ってやるだけで、gdbがまともに動き出す前にgdbごと落ちるというまこと奇妙な状況に。しょうがないのでhttpdを-ggdb付きでコンパイルしようかなーと思ってたのだが、その際にconfigureを再度走らせてみたところdb.hをすごい頑張って探してる。そうかー、っと思ってFreeBSD portsからdb4.4.2をインストール。その後にhttpdをコンパイルしてインストールして日記才人を動かしてみたところ・・・
・・・落ちない。全然落ちない。なんじゃこりゃ・・・。まぁなにはともあれ一応この部分は解決。
日記才人の新作リストの過去ログを見れるようにした。・・・「新作」リストの「過去」ログ?・・・。・・・。・・・。意味ないじゃん。得票ランキングの過去ログは意味あるけど・・・。
まぁいいや、仕組みは一緒だ。
昨日無事帰ってきた。旅は楽しかったが、今日おみやげのきびだんごをこれからカンヅメ作業をするオフィスに持ってくるのを忘れた。とほほ。
午前4時20分。マリオカートもやりたいんだが、とほほ。
のそのそと起きだして人生二度目の後楽園。水道橋にあるヤツじゃないよ、岡山のほう。相変わらずそれほどタイミングとかに恵まれなかったのでこう、花が咲き乱れてる感じじゃなかったのだが、まぁそれでもいい感じ。
入園したとたんボランティアのガイドのオジさんがいるから、一緒にいけばーと言われてじゃあ・・・ってなわけでガイドさんについてあるいて小一時間程。正直あんまりうまいガイドじゃなかったけど、それでも色々と教えてくれたので結構楽しめた。ただ、俺があからさまに怪しい(平日に男が一人後楽園ってのもなー)のであんまり話しかけてくれなかったけど・・・。
その後水辺のもも君にお参りして(コレ必須)、軽く讃岐うどんを食べて一路東京へ。楽しかったー。
岡山駅近くのネットができるホテルでガリガリコード書き。他の人と飯を食っていたSが体が空いたので近くのバーで飲み。ここがまた普通のビルの上のほうにあるんだが、夜景がとてもキレイ。バーテンの方(女性なんだが、サバサバしてるしすごい安心して話して酒を頼めるタイプ)の後ろの2面が全部窓(2面といっても直角ではないんだが)。これがいい。
結局スコッチばっかり飲んで朝3時半まで飲んでた。俺はいいが、おまえは大丈夫なのか、S。
まだ帰りたくないし友達Sにも会いたいので岡山に寄り道。とりあえず今日はこのままホテルで作業作業作業・・・。そう言ってる間にhttp://dev.nikki-site.comを仮オープン。この後毎日行われる自動処理を作り込む。
(写真はまた後日)
さて、日記才人の事とか色々あったので逃避のために放浪癖が発症してしまったので昨日ふと新幹線に乗って広島まで来てしまった。ええ、プラーッと来ましたよ。なんかこういう急に遠出ってアメリカでは結構やってたけど日本ではまだあまりやってない・・・
のぞみに乗ってる間、ガリガリと日記才人のコード書き。気がつくとその時点ではネット接続がなかったので試していなかったものの、必要な分の9割方のストアドプロシージャを書き終わっていた。ついでにメッセージのテーブルスキーマを変更して、送信箱と受信箱とわけて表示可能にしたり、色々と変更。
広島に着いたあと昨日の晩は友達Rと午後5時くらいからぐびぐび飲みまくって10時くらいには撃沈。ところが2時間程で起きてしまい、その後延々とコード書き。気づいたら午前4時過ぎ。うへー。なんかNHKの延々とニュースをリピートするチャンネルに微妙に気を取られながら寝たような。
8時過ぎに起床。サクサクっとビジネスホテル朝食を食べて、日経を読みながらコード書き書き。途中で気づいたらようやく某レジストラがDNSの設定を変えてくれたのでhttp://dev.nikki-site.comを設定始め。しかしなんかウマくいかない(後で見たらAllow from 127.0.0.1が動いてなかっただけだ。とほほ)。
そんなところで時間オーバー、宮島へ。結論から言うとすげー楽しかった。定番の大鳥居も鹿もよかったが(ちなみにしゃもじは折角なので買った)、なんといっても一番よかったのが大聖院。ここの建物はとても作りが凝っていて、しばし柱とか屋根とかをじーーーーっと見てる怪しい人になっていた。ここの屋根は柱から実際の屋根が始まるまで三段にも張り出して行く形で、龍やら貘やらの装飾がこれでもかというほどある。これがまた美しい。七福神が祀られているお堂は八角のもので、これまた天井の梁が美しい形に整然と並んでいる。とにかく建物が美しい場所だったなぁ。
その後紅葉に埋もれた道を少しだけ登って、少し小高いところの茶屋で甘酒を一杯。そこからは大鳥居がキレイに見えて、なんとも贅沢な景色。ちょっと休んだあと、お土産屋のほうへいって物色。鹿は少し図々しかったのでちょっとムカついたが、一頭なら可愛かったなぁ。
ハイキング好きな人と来るとかなり楽しいかも。そういえばおみくじは「吉」だった。
とてもステキなペアを発見。Class::DBI::Loaderを使うと、DB上の全てのテーブルをClass::DBIとして定義してくれるわけだが、たいていの場合実際のデータオブジェクトにさらにメソッドを足したりしたい事が多い。
日記才人の場合、例えばPostgreSQLのストアドプロシージャを使う事が多く、それを適時呼んでいる:
package NikkiSite::Data::Diaries;
use strict;
use base qw(NikkiSite::Data::Base);__PACKAGE__->set_sql(latest => <<EOSQL);</pp>
SELECT * FROM nsRetrieveLatestDiaries(?)
EOSQL
まぁ、これを使う所はとりあえず置いておいて、これをClass::DBI::Loaderが定義する情報の上に足したいので、できればこのlib/NikkiSite/Data/Diaries.pmというファイルをrequireしたい。
今まではopendir()とか使ってあまりカッコ良くないことをしていたのだが、ふとModule::Pluggableの事を思いだしたので早速使ってみた。NikkiSite::Data::Loaderという、DBからデータをロードするためのモジュールに
package NikkiSite::Data::Loader;
use strict;
use Class::DBI::Loader::Pg;
use Module::Pluggable
search_path => 'NikkiSite::Data',
except => [ 'NikkiSite::Data::Base', 'NikkiSite::Data::Loader' ],
require => 0,
;
use NikkiSite::Config;BEGIN
{
my $config = NikkiSite::Config->instance;
my $ds = $config->param('DefaultDataSource');my $loader = Class::DBI::Loader::Pg->new(
dsn => $ds->{dsn},
user => $ds->{user},
password => $ds->{password},
options => $ds->{options},
namespace => "NikkiSite::Data",
additional_base_classes => [ qw(NikkiSite::Data::Base) ],
);foreach my $p (__PACKAGE__->plugins) {
eval "CORE::require $p";
warn if $@ && $@ !~ /^Can't locate /;
}
}
きゃー♪これだけで全部requireしてくれちゃう。なんてステキなの。
自前のPerlをビルドした上でautoconfをFreeBSDのportsから入れようとするとp5-Locale-gettextが必要云々言われる。export PERL=/path/to/my/perlでどのPerlを見るのかはオーバーライドできるので、その後perl -eshell -MCPANからLocale::gettextを入れようとすると色々と文句を言われる。
FreeBSDには最初からlibintl.soが入っているのだが、gettext()がないとか言われるのだが、これはMakefile.PLがアホなせい。53行目の
system($cc . " -o conftest " . $libs . " conftest.c");
を以下のように変えるとコンパイルが通る
system($cc . " -L/usr/local/lib -I/usr/local/include -o conftest " . $libs . " conftest.c");
バグ発見。Postgres8.1からはpg_attrdefから取得できるSERIAL型の表示が変わっているのだが、Class::DBI::Pgがそれに対応していない。106行目辺りを以下のようにするとOK:
my ($sequence) =
$nextval_str ?
($class->pg_version >= 8.1 ?
$nextval_str =~ m/^nextval\('"?([^"']+)"?'::regclass\)/ :
$nextval_str =~ m/^nextval\('"?([^"']+)"?'::text\)/) :
'';
バグレポートはまた後で・・・
昼飯を馬鹿食いしてしまった。気持ち悪い。昨日もジャンクばっかり食ってたし、なんか調子が乱れてるなぁ。
CPANでインストールするヤツをゾクゾクと。Apache::XMLRPC::Liteだけはローカルパッチあてないとなぁ。
postgresqlを8.1、mod_perlを2.02にアップグレード。今コンパイル中。
今回のポイントは基本的には一個だけ:
毎日のリセットをいらないようにする
・・・とはいえ、これがデータベースの再設計が必要な物なのでいままで敬遠してきた。あー、3年前にもっとDBに関して知識があったらなぁ。ああ、くそくそ。
日記才人をストップした。開発当初の設計ミス等が今になって(サーバーがBSDに変わってから?)噴出した形で、この半年は特にひどかった。だけどまぁ動いてるし、まぁいいかと思って今までリアルな仕事やその他現実のあれこれを優先して日記才人の事は先送りしていたのだが、もうそうも言ってられなくなってきたので今朝これを停止しました。
本来なら開発をしながらプロダクションサーバーはそのままにしておくべきなのだが、正直それでは開発が進まない(保守部隊と開発部隊いないと開発時間がのびるだけよ・・・)。というわけで停止中、以前から開発中だったバージョンの開発をすすめていく予定。
とりあえず今apacheを最新の物にして、perlのバージョンもついでにアップグレードする。
うへー。とりあえず勇気のある人は日記才人の基本的な部分だけは使えるようにhttp://dev.nikki-site.com/とかで不完全版を公開しようかと思ったのだけど、nikki-site.comのDNS情報がロックされてる!なんでだーーーー。
くそー、この時間じゃあもうなにもできん・・・orz
で、結局焼酎お湯割3杯とビール飲んできたのだけど、さっきまで約3時間くらいコード書き。とりあえず手動更新はオッケー。マイ日記とかの表示系もOK。疲れたー
品川駅で某H社の人達と会う。スタバで落ち合うと聞いていたのですっかりコーヒーのつもりだったのだけれども、落ち合った瞬間居酒屋に移動(なんかコテコテの居酒屋にいったのすごい久しぶり)
結局まぁ具体的な話にはならなかったので今日は結論でず。もっと早く終わってるはずだったのにな。タメになる話もあったのでよかったんだけど。
テレビ一日中つけてるけど、ダッシュも笑点もイマイチつまんないな。今日はコンビニ弁当しか食べてないのも関係あるよーな気はします。
マグロ釣ったー!!あと八種類で魚はコンプリート。
夜10時頃からスコッチとか持ってHろゆきの家へ。がぶがぶ飲んでたら(スコッチボトル半分を1時間ちょいで消費)撃沈していて、次起きた時はもう皆帰るような時間だった。うへへ。いやー、しかしよう飲んだ。
RTをセットアップしようとしてmod_proxyの設定とかしてたらApache2.2がリリースされたって!
http://httpd.apache.org/docs/2.2/new_features_2_2.html
どうしようかなー、インストールしてみようかなー。
たぬきちデパート、金のスコップゲット。ぼーっとゲームやってたら手足が冷たくなってきた。
UDPとか、使った事のないプロトコールのドキュメントを読んでますがりがり。しかも夜中2時に何やってるんだ、俺は・・・
しかし全然わからん。mDNSとDNSSD、どっちが今使われてるんだ?developer.apple.com読んでると、mDNSに関してはdeprecatedってなっていてDNSSDの.hを読めみたいになってるけど、Net::Rendezvousとか読んでるとmDNSふんふん言ってるし。わかんねー。
http://www.perlmonks.org/index.pl?node_id=513817
File::SpecとCwdを使ってパスを作成した場合の細かい違いについて。*nix系だけでなく、Win32とかを視野に入れてポータブルなコードを書く場合はこういう事に関しても知ってないとまずいんだよねぇ。俺はちなみによく「今実行されたファイルの位置から判別したパスを@INCに入れる」という行動はCwdとかを使うとうまくいかないので、__FILE__とFile::Basenameでやってる:
use File::Spec;
use File::Basename;
BEGIN
{
# このファイルがある場所から../libやその他のディレクトリをうまくパスやら
# 設定やらに入れる
my $curdir = dirname(__FILE__);
my $libdir = File::Spec->canonpath(File::Spec->catdir($curdir, File::Spec->updir, 'lib'));
unshift @INC, $libdir;
}
アップグレードしたぜー。
ふと思い立ってMr & Mrs Smithを見てきた。結果からいうとおもしろかった!久しぶりに映画の予告だけでは話が終了していない映画だったのが新鮮(これが新鮮という時点でもうアレだが)。オチがないのがいまいちだけど、アンジェリーナジョリーとブラピの掛け合いとかはとてもよかったなー。
しかしひさしくこの「思い立って映画を見に行く」というのはしてなかったな。
某案件のバグ取りで検索をしていたらあるページに友人の再婚の結婚式に出席した人の話が出てた。結婚式でそれぞれの生い立ちを説明していたが、その友人のほうは大学時代でスライドが終わっていたという話。
そんな状況は想像した事がなかったのではあ、なるほどねぇと思いながら読んでた。
これ、ぶらり途中下車の旅でやってたんだけど絶対うまいと思う。
http://www.tokyo-calendar.tv/backnum/bnview.cgi?id=11150
行きたい行きたい行きたい。
特に理由もなくプチ断食決行中。一日持つかどうか。何故弱気かというと、次のエントリーみたいなものをテレビで見たりして早速メモしたりしてるからです
某Tさんがちろっと書いてたので早見で「とくダネ!」鑑賞。はてなをフィーチャーしたスポットが5分ほど。靴下は出なかった。
Daisuke Maki (a.k.a lestrrat): Perl hacker, Director of Japan Perl Association, YAPC::Asia Tokyo Organizer (2009-2012), Fluent in Japanese, English. Ex-Brazilian (sorta)
#perl #c #ruby #java #mysql #english #japanese #opensource #stf #cooking #scotch #cigar
翔泳社よりモダンPerl入門(2010)を出版させていただいております。できれば内容をアップデートしたいので是非皆様・・・現在の在庫処理にお力をお貸しください!><