D-7 <altijd in beweging>

Day to day life of a Perl/Go/C/C++/whatever hacker. May include anything from tech, food, and family.

カテゴリ:ひとりごと


今は事務所だけど、すぐに某データセンターに行ってカンヅメ作業しなくてはならないので今書ける間に書いてしまおう。


自分は最近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恐怖症になってしまって今でも怖くて使えずにいる。


ともあれもしコーディング規約としてコードをテンプレートに埋め込まないということを指定されたとしても俺は絶対に「コードをテンプレートに埋め込める」フレームワークを使うな。いざという時にコードは絶対に埋め込めない!なんてそんな現場から見ると浮世離れした理由で仕事を邪魔されちゃたまらん。


ってなわけでとりとめもない独り言でした。



    このエントリーをはてなブックマークに追加 mixiチェック


時々死にたくなるのはこういう夜。きっと誰も悲しむ事もないんだろう、というより悲しむ人がいるのかとどうか確かめるためだけに死んでみたくなる。えらく傲慢な考えだとはよくわかってるつもりだからさすがに騒いだりせんけど、こういう不特定多数が読む場所では書きたい。


日本ではこういう気持ちになる回数が比較的少なかった。アメリカでは毎週のように落ち込んでた。今思うに付き合ってた相手もまずかったのだろうな。今日久しぶりにアメリカ時代の日本人友達に会った。別に悪意の篭ったことをされたわけでもなく、普通に食べて飲んで、仕事もあったのでさっと別れた。でもなんなんだ、この疎外感というか、よそよそしさは。この人だけじゃない、向こうでつきあってた人達の相当数にこういう感じを受けてた。責めてるわけではないのだけれど・・・。


逆に言うとそういう付き合いでもしてしまうほど孤独だったんだろうなぁ。


日本でじゃあどうかというと結構うまくやってると思う。でもこの3週間程は忘年会シーズンを口実に毎日のように飲んでるけど、多分飲まないと寝れない感じなんだと思われる。一人でいられない。静寂が恐怖だ。暗闇が恐ろしい。


結局もう10年近くも前に言われた部分が直っていない。自分の存在意義が見いだせない。自分のこういう部分が大嫌いだ。


コレで痛いと言われようがなんだろうが、俺はこうなんだよ。うるせー。



    このエントリーをはてなブックマークに追加 mixiチェック


本当の罪とは知らないという自分を認められない事である。


技術というのは長年の、幾多数の人達の努力を積み上げてきたものだと俺は思うので、若い/経験の浅い人が「効率のいい」「正しい」やり方を知らないというのは全く問題ない。敢えてことさらのように書くが、!!全く!!問題ない。


だけど、知らないまま間違った方向に突っ走るのは罪だ。問題に直面した時、ある場面までは自分の力でゴリ押ししてみようと思うのはしょうがない事だが、どこかで「これはひょっとしたら正しいやりかたではないのではないか」「ひょっとして自分の知らないやり方があるんではないか」と思うべきである。希にそういう状況を完全な独創で打破できる人もいるが、そういう人は多分自分のやってる事にことさら疑念など抱かないはずなので自分で打破できるとすでに確信しているはずなので特に迷う事はないだろう。


問題は自信も根拠もないのに、だれにも質問もせずそのまま突っ走って迷路の奥深くに入ってしまうヤツだ。知らないのは罪じゃない。だけど自分でできないと思ったらすぐ聞け!聞かずに迷宮の奥まで行ってしまったら引き返せない。いや、引き返せるけど、その時は周りのみーーーーーーーんなを巻き込んで迷惑をかけてるのだ。


他人に頼りすぎるのも問題だが、黙ってりゃ自分だけで解決できるかどうかくらいは把握してほしいもんだ。わからないと認めるのはそんなに恥ずかしい事か?



    このエントリーをはてなブックマークに追加 mixiチェック


自分がプログラマーになったのはとても些細な理由からで、ものすごく大雑把に言うと自分が理系が好きだったのと大学に行く際親から「理工系で手に職をつけなければ費用は出してやらん!」とはっきりと言われたので、じゃあコンピューターでもやるか、という実にくだらない理由だった。


その後紆余曲折を経て今どうにかこうにかCPANにモジュールを色々登録できてたり、あちらこちらのプログラムにパッチを送ったりとできたり、それよりなにより親に言われた通り自分の食い扶持くらいはなんとか稼げるくらいにはなった・・・つもりだ。


でもこういう業界で働いていて、しかもプログラミング/エンジニアリングのスーパースターみたいな人達と会ったり仕事したりしてて思うのはやはりエリートの彼らと凡人の自分とでは設計開発思想が違うなぁ、というところ。


すごい人達のプログラムはすごい。わけのわからない事をやってるように見えて実は今まで存在しなかった物を作り出し、それでありながら高性能だったりする。だがそれらの成果物のうち、10個のうち7個くらいはインターフェースのせいで他のプロジェクトで使い回しができなかったり、ドキュメントが足りなかったりで、どうも「わかる人にだけ使ってもらえればいい」的な物だったりする。


俺はアメリカの大学2期生の時にC++の授業の単位を落としたくらいで(4期生の時に取り直した)、正直元々そんなにプログラミングの才能なんてないんだが、そんな時助けられたのがJavadocで、あの言語の隅々まで網羅してあるドキュメントがなければプログラマーをやめて調理人の道を歩んでいたかもしれない*1。いわゆる、天才でなくともわかるように(しかし簡潔に)凡人用に説明をしてくれるツールがあったおかげでなんとか理工系にいられたのだ。


これが悪いかというとちょっと違って、実際に最先端の物を作るのにそんな細かい所まで全部決まったり終了したりするのを待っていたら先に進まなかったりするのでそれはそれでいいのだが、凡人を自称する俺としてはそこをどうにかするように事を進めて行くのが俺の立ち位置だったりするんではないかと思ったりする。


特にオープンソースの世界では他人に受かってもらってなんぼである。直感的かつ使い回しが効くインターフェース、そしてそれらをつなぐドキュメンテーションがなければ他人の訳の分からないコードなんて使いたくないし、逆に使ってくれると思えない。使ってもらえなければオープンソースのコードなんて書いてる意味ねーじゃん、と思う。


そんな自分が目指すのは割と"Programming For The Masses"のような感じ。じゃあなにをやっているかというと別に大した事はやってなくて、とにかく他人が操作しなくてはいけないレベルにおいて



  • 「文章のように読める」インターフェースを目指す

  • 初期化/設定/内部データへのアクセスはなるたけ容易にする

  • コードは必ずサンプルを書く


という3か条を満たす事は目指している。天才は上記がなくったってソースコードを読んだり、理論的な事を解説した論文とかを読んでれば使い方とかがなんとかわかったりしてしまうものらしいが、俺はほとんどの場合ソースコードは読む事はできるけどそれから実際のコーディングをすらすらするのはやっぱり無理だしそこまでの情熱があることも少ない。やはり上記3点がないブツは敬遠する傾向がある。っていうか、それくらいできてないコードはあまり信用できない、と言ったほうがいいかもしれない。


実際にアンケートを取ったわけではないので俺のレベルのエンジニアがどう思ってるかは知らないが、やっぱりエンジニアリングってのは「大衆」が使えてこそその意義があると思う。


品川駅でコーヒー飲んでたらこんなに書いてしまった。そろそろ移動すべ。なんかとりとめもなくなってしまったが自分はいわゆる最先端にはいないかもしれないが、これからもそういう事に気をつけて行きたいと思うのだ。




*1:実は辻調理学校のパンフまで取り寄せてた



    このエントリーをはてなブックマークに追加 mixiチェック


この前Tさんと話してたりして思ったんだが、俺はやっぱり「インターネットを作った」世代ではなくて「インターネットがあって当たり前」の世代なんだよなぁ。開発する時にネットワークはつながってて当たり前。必要な物はインターネットに最低限ヒントが落ちてて当たり前。逆に言うとネット接続がないとPCなんて俺にとってかなり無用の長物だし・・・


なにはともあれ、開発の際の意識とか、結構そういうところで左右されてるなぁと。



    このエントリーをはてなブックマークに追加 mixiチェック


ピータン+豆腐の料理の、普通の卵よりはあきらかに小さいピータンを指差しながら:



これって豆腐っていうかうずらだよね。



「豆腐じゃなくてピータンだよね」と言われて固まりました。



    このエントリーをはてなブックマークに追加 mixiチェック


今ちょっぴり不能なんですが、正直ちょっとびびってます。



    このエントリーをはてなブックマークに追加 mixiチェック


某案件でNetwork Appliance (NetApp)の方々とちょっと商談。数十テラバイト級のストレージが欲しいのだが、XRaidとかが競合している。俺はやっぱりアメリカ時代自分が勤めていた会社の製品でしかもその間ユーザーとして会社でずっと使い続けてきた事もありNetApp製品がどんなものか知ってるのでNetApp製品を使いたい。


しかしそこはそれ、やっぱり高すぎては意味がないので決定権を持ってるT氏にはちょいと薦めて、あとはNetAppの営業の人に任せておきたい。昨日はその商談。やっぱり話を聞いてて自分が思いつかない構成とかを示してくれて、営業の人ってやっぱりすごいなーと。その後飲みに行って色々ごにょごにょと。


よくよく考えると大学のシステムにもNetAppが入ってたので合計8年近く使っていたのだな。


そういえばsnapshotに助けられた事もあるな・・・



rm -rf very_important_project/

あひゃーーーー!・・・っていうのも



cd .snapshot/hourly.0
cp -R very_important_project/ ~/

一発で復活。ま、こんな事やるのは今回のシステムでは滅多にないんだけど、安心感がね。



    このエントリーをはてなブックマークに追加 mixiチェック


某所でひじょーに細かいミスを見つけたのだけど、そっちで指摘するのもアレなのでここでメモ。曰く、




require Module import Module qw(foo bar) if $condition;



eval "use Module qw(foo bar)" if $condition

と比べるとevalを使用する方法は$conditionが正になるまでエラーが検出できないのに対してrequire...の方はコンパイル時にスペルミス等を検出できるため、良いと思う



というコメント。俺も使うとしたら最初のほうに近い構文を使うのだけど、スペルミスの検出・・・?それは違うな。まず、コンパイル時に何かチェックが通ると言うのがおかしい。


例えば下記ソースでBEGIN {}ブロックはコンパイル時に実行されるので、BEGIN{}ブロックより前にrequire文の間違いが検出されればいいのだが、実際はそうならない:



use strict;
requir POSIX; # should be "require"
BEGIN { print "Compilation done\n" }

Perlにおけるベアワード(この場合、POSIX)まわりの処理は変数を使っている時と明らかに違うので注意。これが



use strict;
my $module = "POSIX";
eval "require $modul"; # should be $module
BEGIN { print "Compilation done\n" }

だったら確かに$moduleのスペルミスは検出してくれるんだけどね。というわけでミニPerl講座でした。



    このエントリーをはてなブックマークに追加 mixiチェック


長くて読み難いのでとりあえずコメントからは消しとくけど、以下どうぞ。



taka 『僕は以前ブログをしていたのですが、あなたと雰囲気が似ているとかの訳のわからない理由であなたと思い込まれてストーカーされている者です。


自分のブログは閉鎖しました。


好意的な感じでコンタクトをとってきたので、不覚にも携帯番号を教えてしまいました。何度もあなたじゃないことはいいました。その場では理解しても次の日にはまた電話してきます。あげくのはてには「大ちゃんお疲れ様。あんまり無理しないでね」等の留守電を毎日残してきます。当然すぐに着信拒否しましたが、毎日着信履歴に残っています。今までもう連絡しませんと何度も言わせることはできましたが、すぐに忘れてしまう病気のようです。


あなた宛のメールがきていましたので添えておきます。


一時期この量の倍以上のメールが1日2通来てました。


-------------------------------


こんばんは、○○です。


これはだいちゃんに向けて書いているメールです。


何言ってるか分からなかったら、スルーしてね。


あのウケミレンアイ。。。はKさんが書いてる気がしちゃった。


誓って言うけど、私は不倫なんかしたこともしたいと思ったことも無いです。


ネットでモテたいと思ったことも無い。


Kさんが周りの男性に崇めたてられたいっていうのが


つくづく分かったよ。。


前に彼女の取り巻きさんの男性が私に接触してきたのを


まだ根に持ってるみたいです。


私、バカ正直に携帯電話で報告したのよ。


「沙希(漢字忘れたけど、サキさん)さんらしき人が連絡来ましたよ」


って。


彼女の声のトーンがその時変わったんだ。


あちらが勝手に接触してきたのを私は無視したの。


だけど彼女の捉え方では


「自分の男友達を食った」


という表現になっちゃうのね。そういう表現が驚くわ。。


あと、彼女のところの女性の常連さんが


私に悩みの相談してきてたりしたのも嫌がってたな。。


例の「SAY HELLO」の本を贈ってくださった女性。


私は別にKさんと対抗する気持ちなんてこれっぽっちもないのに


彼女は私の存在が疎ましいんだよね、きっと。


サイト閉鎖して以来、一切彼女の友達には接触してないのにな。


とにかく私のことを追いかけ続けるんだろうね。


今後、彼女はじめ、嫉妬に狂った粘着質の人に


ずっとまとわりつかれるのかと思ったら


私、具合が悪くなってきちゃった。胃が痛いよ。


だいちゃん、お願いだから守ってね。


私、前の職場では、こういう嫉妬の炎で倒れちゃったの。


やっぱり日記でやりとりするの、ダメだよ。。


メールとか電話とかメッセじゃないと、


私、他人の嫉妬で倒れちゃう。。


わけわからないメールでごめんなさい。。


胃が痛くて、つらい。。


-------------------------------


何のことやらさっぱりわかりませんし、興味もありません。


僕がここでこんなことをしたところで、あなたの自作自演と思うだけでしょうが、着信履歴に残っているあの女の名前を見るだけで反吐がでるのでここに書き込むに至りました。


ちなみに東京少女という本は、あなたがストーカーのことを想って書いた本だと言い張っていました。あの女は病気です。』(2005/08/21 14:26)



いやぁ、本当に同じストーカーだとしたら笑えるなぁ。



    このエントリーをはてなブックマークに追加 mixiチェック


堀江さん・・・あんたはいったいなにをしたいんだ。



    このエントリーをはてなブックマークに追加 mixiチェック


そろそろ出かけなくちゃいけないんだけど、今ふと思ったのでひとりごと:Cache::FastMmapを書いてくれた人、ありがとおおおおおお!!!すごい助かってるですよ・・・


ん、そういえば昨日YAML::XS書いてくれとかお願いされたような気がする。できるかなぁ。っていうか、できると思うけど、○○(某会社名)でcontract fee出してくれよぉ。そしたら頑張って夜も寝ないで書くから!



    このエントリーをはてなブックマークに追加 mixiチェック


やばい。馬鹿にしてたのに上戸彩をマジで可愛いと思ってしまった。やばいやばい。



    このエントリーをはてなブックマークに追加 mixiチェック


ストーカーがうぜぇコメントのこしていったのだけど自分のページをロードする度に毎回目に入るのが嫌なのでコメントは削除してHTMLコメントとして残しておく事にした。


もうかれこれ一年半、メールを拒否ってるのになんで俺と何かあると思えるんだ。頭悪いというレベルを超えてるよ。



    このエントリーをはてなブックマークに追加 mixiチェック


実はこれまでにメジャーなクローラーを2個程書いた事があるのだが、某所で見つけたドキュメントで片方は礼儀正しい、片方は極悪と書かれていた。極悪のほうは昔書いたもので礼儀正しいのは最近書いたものなんだが、なんだかちょっと笑えてしまった。


ちなみに極悪なほうはもう触らなくなってから9ヶ月近いので他の誰かが手を加えて改良したりしたのかもしれん。



    このエントリーをはてなブックマークに追加 mixiチェック



http://www.oreilly.com/catalog/advperl2/toc.html



なんじゃこりゃ、XSが消えてInline::Cばっかじゃん。Advanced XS Programming For Perlとかいう本でもないかな。自分で書くか?(笑)



    このエントリーをはてなブックマークに追加 mixiチェック

このページのトップヘ