Ruby

2003年12月20日 土曜日

ついに雪が…

ついに雪が降る季節が到来してしまいました。しがないFR乗りとしてはドラテクを鍛える時期と思って地道にがんばりましょう。今日は下記の通り仙台に行く用事があったのですが、会社が終わった時間帯では仙台に行く道はブラックアイスバーン状態で、もうつるつるでした。今日は乗って帰れないかも…

タラ・カリシェイン, ラエル・ドーンフェスト / 「Google Hacks

8月に出て以来買おうと思っていた本の1冊。ちょっとお値段がと思っていたのですが、もう我慢できなくなったので勢いで購入。Perlのソースが山のように載っているので、これをちびちびrubyやらVB.netに移植すれば結構楽しめると思う。個人的にはSearch Engine Optimaze(SEO)対策のための賢い検索方法を模索できないかなと思うのです。SEOのせいでGoogleはSEOをされた屑情報が上位にくることが多くなった気がする。屑ではないものがSEOされる分には問題ないんだけども、世の中どうして_屑情報を垂れ流す輩がSEOに夢中なんだろう…_

2003年11月29日 土曜日

TLUC 第3回Ruby勉強会

今日は東北Linuxユーザー連合会(TLUC)が主催している月末の定例勉強会に参加。奇数月月末は「Ruby勉強会」を連続して行い、偶数月末は内容を補完するためのネットワーク(TCP/IP周り)の勉強会というメニューになっている。もともと僕が_今年はRubyで遊び倒したる!_と思って企画した勉強会なのだが、奇数月の月末は5月以降地震対応でとても忙しかったせいで、今回からの参加となる。CGIを書くのもRubyだとなかなか楽しいものだ。

お買い物

木曜日にlilyが引退して以来、なにかと不便な状況で、なんと_3日も持たず_我慢できなくなったので、PCを購入することにした。(まぁ予定の行動なので。) 今回いろいろと構想を立ててみたが、予想以上にPentium4の価格が下落したので、おもしろみはないが実を取るということで、Pentium4でマシンを作成することとした。今回使い回す部品は、キーボード・マウスといった入力機器とDVD±RWドライブのみなので、結構な買い物となった。勉強会から直行でDOS/V パラダイス仙台店に行ってパーツを物色。高橋@衣川さんのご協力なしにはこのような構成と運搬ができなかった。どうもありがとうございました。
で、買い物の内容。
CPU: Intel Pentium4 2.8C GHz
25000円あたりまで価格が下落してお買い得感が高くなった気がする。5000円ケチって2.6GHzにするよりは、いまなら2.8GHzだろう。
Mother Board: Gigabyte GA-8I875
いろいろ考えたが、ChipSetは無難なIntelを選ぶこととした。選びどころはいっぱいあると思うが、今回はメモリのパフォーマンスを優先して取って、Intel 875P+ICH5Rということにした。サウスブリッジは調査したマザーボードではだいたいICH5Rになっているっぽい。将来SerialATA RAIDを構築するための布石ということで。実際のボードは今回はいろいろなギミック満載のGigabyteのGA-8I875にした。Gigabit−Ether(Intel Pro/1000CT)/ATA100/SerialATA/USB 2.0/IEEE1394/6Ch Audioとカバーしていれば十分すぎるだろう。
DDR-SDRAM: PC3200 SAMSUNG 512MBx2
Dual転送を有効に活用するため、1GBにするために512MBx2という構成。相性問題が結構厳しいということで、メーカー品に手を出してみる。
Graphics: ATI RADEON9600
MatroxのMillenium G650とずいぶん迷った。結論としては_画像編集も重要だが、ゲームでも遊びたい!_ということとなった。画像編集をするという線は譲れないところなので、発色が良いATI RADEON9600とした。(まぁ今までATIでしたし、Power MacもRADEONなんだから画像編集でも問題なしということかねぇ。)
HDD: IBM IC35L120AVV207-1
HDDはどれでも良いという結論で、_120GB、キャッシュがいっぱい_という条件付けで選んでみた。HDDはメーカーの当たりはずれがどーのこーのという輩が多いが、僕は最近どのメーカーでもロット依存であたりを引くのもはずれを引くのも似たようなものと思っているので、今回は敢えて過去に2台お亡くなりになって買わないと誓っていたIBM/HitachiのHDDに手を出してみた。
液晶モニター: Nanao FlexScan L567-BK
これは2ヶ月以上も前から結論がでているモニター。はっきり言って今あるものの中ではこれしか選択肢がない。(この品質・価格で、Tilt機能はすごくいい感じだし、左右にモニターを90度回転できるんだもの。)これだけヨドバシカメラにて購入。
日本Falcom: Ys6 The Ark of Napishtim
ベンチマーク用のソフト(笑)。Ysファンとしては買わねばなるまいと思っていたのだが、液晶ディスプレイを購入したポイントで購入。3Dバリバリのゲームに仕上がっているので、ベンチマークにはちょうど良いのかも。
今日の買い物の成果の山
早速組み立てだな…

2003年11月09日 日曜日

選挙

「イギリス人は自由だと思っているかもしれないが、選挙が終わると奴隷になる。」と言うのは、Jean-jacque Rousseauの「社会契約説」だったか。これは議会制民主主義の痛烈な批判な訳だが、まぁ今の日本は議会制民主主義の国なので、ルソー先生に奴隷呼ばわりされる選挙に行った人以下の存在にはなりたくないと言うことで、今日は選挙に出かける。
まぁ投票所は歩いて3分くらいなので、天気も悪いし暇だったというのはあるのだが。なんだか凄く久しぶりに選挙に出かけた気がする。僕としてはmatz氏と同じように、いつ政権交代が起こってもおかしくないんだぞという意思表示を行って、もうちょっと政治屋さんに緊迫感を持って仕事をしてもらうべく、野党第一党に投票したわけであるが、僕のところもなんだか保守が強いので、なんだか無駄な票になりそう。(保守の強さはmatz氏のところの比ではないけれど。)
それにしても選挙関連の番組を見ていると、保守政党が_改革・改革_と叫ぶというのはどうもおかしい。結局政治も国も動かしているのは_官僚である_と言うことか。(でも特に外務省とか財務省とかの方々にはたいした仕事が出来ていないんだから、我々と同じく給与カットされてしかるべきだと思うのだがなぁ。)
たまには危険な意見を吐いておくのも良いだろうと言うことで。だれか_育英会の奨学金は貸与ではなく供与にする_なんていう政策を出す人いないかなぁ。そうしたらいつでも学生に戻るんですけれど。

2003年10月27日 月曜日

.NETの呼び声

最近、VBAでのプログラムにほとほと嫌気がさしてきたのであるが、お仕事関係ではMicrosoft WindowsというかMicrosoft Officeの呪縛を逃れることは出来ない。それ故プログラム環境としてVisual Basic for Application(VBA)を使うことになるのであるが、不満は多いので使っていてなんだかだめだめだなぁと思うことを列挙してみよう。

  • _必ずExcelやWord文書の付録_みたいなものになる。文書を開くときに何となく厭な気分になる。(回避法はあるけれど。)
  • 当然コードの_履歴管理をするのが大変_。(何が楽しくてVisual Source Safeを使わねばならないのか。頼むからCVSSubversionを使わせてくださいな。)
  • 正規表現が使えない。(がーん。 かなり不便。)
  • 正規表現を差し引いてもテキスト処理がいまいち。(変形CVSなテキストを読むのがもう大変。)
  • しょっちゅう関数の名前がだぶる。(名前空間をサポートしてくださいよ。僕のボキャブラリが寂しいだけ?)
  • 使えるデータ型が_恐ろしいくらい貧弱_。(未だに基本な型と構造体と配列くらいしかなく、ハッシュやリストのような現代的な言語でサポートされているデータ型は_当然ない_。)
  • クラスは作れるが、継承は出来ない。(勘違いしている人は多いけれど継承はOOPの必須事項ではない。)
  • スレッドって何だっけ?
    という具合で、結構痛いところが満載なのである。そこまで使い込んでいるんだったらVisual Source Safeというか、OfficeのDeveloper Editionを買えばいいじゃんと言う意見もあろうが、僕はお仕事のためにわざわざOffice Developer版を買うほど酔狂な人間ではありません。 ちなみに家のPCにはOfficeをインストールしてません。家に帰って_Excelのアイコンを見るのも厭です_。ということで、会社で買ってくれないものを使う気にはならんのです。
    かといって、Windows Scriptの上で動く現代的なスクリプト言語であるActivePerlActiveRubyは、_デフォルトでインストールされない_ということもあって、プログラムを使ってもらうという前提の開発では、管理が発生するためにメインの言語として選べない。(ExcelはどのPCでもバージョンは同じであることを前提に出来るが、PerlやRubyのバージョンなどの管理は職場で誰がするの?)
    ひょっとしたらVBA自身は、Office2003でVB.netのような言語の現代化が行われるのではないかと多少期待したのだけど、VBA自身はVBA 6.3から6.4にアップデートで余り変化はないみたい。(がっかり。 まぁ無論会社ではOffice2000までしか使ったら駄目ということになっているので、Office2003は使えないのだが。)
    という状況で、なんだか良い解法は無いなぁと思っていたのだが、先日のTCP/IP勉強会で、PostgreSQL方面の高橋さんより、「そういう話なら、.NETが良いよ。」という話を聞いたので、早速試すことにした。
    よく.NETのページを眺めていると、.NET Framework SDKには、コマンドライン版のC++とC#とVBのコンパイラが付属してくるのね! てっきり、C#やVB.netで遊ぶにはVisual Studio .NETを買わねばならないのかと思っていたのであるが、僕が組むプログラムの規模ではVisual Studioには手を出さなくてよさそう。
    ダウンロード・インストールをしている間にWebをさまよえば、_フリーの統合環境は転がっている_もので、Javaの開発環境から進化して、C++やC#やPerlやRubyやXMLなどの編集が行えるJavaで書かれているEclipse(エクリプス)や、C#の開発環境に特化しつつVBの開発環境にも使えそうなC#で書かれているSharpDevelop(SharpDevelop-JP)といったオープンソースな環境が出回っているので、なんだか簡便な開発環境が整いそうである。
    今日はつらつら.NETのドキュメントとC#やVBのサンプルソースを眺めているわけだが、眺めているだけでも上記の問題は解決しそうである。例えば順に並べるとこんな感じ。
  • ソースコードは_ただのテキストファイルになる_(当然)
  • 当然コードの管理にCVSSubversionを使える。
  • Microsoft .NET Framework ではPerl5のような正規表現がサポートされている。
  • テキスト処理はようわからんが、コンソールアプリを書けるからたぶん大丈夫でしょう。(調査中)
  • 名前空間をサポートしている。(僕のボキャブラリが寂しくても_安心だ_。)
  • コレクションクラスが_充実している_。(ハッシュもリストも_当然ありますよ_。)
  • VBでも継承ができるようになった。(VB7からは継承が出来るようになりました。)
  • スレッドを考慮したプログラムも当然書ける。
    という具合。ガベージコレクションもしてくれるのですか。メモリ管理関係も結構楽になるのかしら… しばらく眺めて勉強してみることにするが、MSと仲良く付き合うには、_過度の期待はしない_ことと_仕様はどうせすぐに変わるもの_と思って、_適当に勉強すること_と言うのが重用である。どうせ勉強しても長く持たないバッドノウハウだらけになるに決まっているのだから。
    今日の日記はリンクをいっぱい付けてみた。疲れたなぁ。

2003年10月25日 土曜日

上野 宣 / ネットワーク初心者のためのTCP/IP入門

表紙がちょっとアレゲだけども、中身はしっかりと書かれているTCP/IPの入門書である。東北Linuxユーザー連合会(TLUC)の「TCP/IP勉強会」の指定教科書になっているので買ってみました。なかなか本屋で見かけなくて今日も3件回ってしまった。仙台の本屋さんもなかなか品揃えが悪くて使い物にならないなぁと思う今日この頃である。
内容はTCP/IPの階層構造でネットワーク層(IP/ICMP/IGMP/ARP)、トランスポート層(TCP/UDP)、アプリケーション層(各種プロトコル)の順に概要をわかりやすく説明していると思う。このあとにリンク層とIPv6の説明が続くので、一通りの理解をするにはこの本を読めば十分ではないかと思う。TCP/IPを理解していないネットワーク管理をこれからやる人は読んでおくべき、勧められる本の一冊だと思う。
この本を読みつつ、telnetを使いこなして各種プロトコルの振る舞いを学んで、簡単なPerl/Rubyスクリプトでサーバとかクライアントを書くことで理解が深まるものと思う。ちょっと昔までは内容がいい感じにすっ飛んでいたが、「インターネットを256倍使う本」が良い線だったのだが、いかんせん古くなってしまった巻はあるなぁ。誰か似たような本書かないかなぁ。(僕が書けと言われるかも知れない。)

2003年10月23日 木曜日

NLUG解散の話

昨日、TLUC-MLで三浦さん聞いた話。名古屋のLinuxのユーザー会が解散したそうだ。(上記リンクもNLUGのページではないところに設定している。NLUGのWebサーバもいつまで動いているか分からないからだ。) こういう話は多かれ少なかれ、どこでも感じるところはあって_ついに来るべきものが来たか_と思っている。僕が参加している東北Linuxユーザ連合会(TLUC)もMLの流量と話題が寂しいし、Activeなメンバがほんとに少なくなってきているので。
ただLinuxに限って活動をするという風に考えてしまうと、どんなイベントを行ったとしても、なにもLinuxでなくても出来るという一昔前から見れば贅沢な状況になったこともあって、いろいろとLinuxのユーザー会という存在意義を問い出す事となり禅問答のように考え込んでしまうことになるのだが、NLUGでは解散という結論に至ったと言う事だ。自然消滅・休眠状態というところが多い中で、彼らはそれなりの議論をして活動のけじめを付けたのだから、僕はそれはそれで立派なことだと思う。まぁLUGの運営に参画しているという観点で物を言えば、同行者が一人いなくなるのはやっぱり寂しいものだけれど、時代の流れなのかも知れない。(もし贅沢な環境が衰退を呼んでいるとすると何とも悲しいのだ。)
まぁ数年前の各地LUG立ち上げ時は、インストールをネタにしたインストール大会みたいなイベントを行っていた(まぁ普及活動なんですが)こともあったが、今となってはどのディストリビューションを使ってもインストールが非常に簡単になったし、僕らが*BSDをつかっても簡単にインストールできちゃう。さらにKnoppixのようなCD起動のものが出てきたことがあって、現状で行う意味消失している事もあって、現状でLUGの活動の質的転換を要求されていると考えるべきなのでしょう。
Linuxにしかできないことに限って活動を展開するというのは、現状ではいろいろと非常に難しく、そういう方向だけを考えても仕方ないので、もうちょっと広く世の中を見ることにして、Linuxを介して集まった仲間と言う認識で活動を続けていくのが良いのかなと考えている。(何を題材に扱ってもできるけど、Linuxベースでやった方が自然という雰囲気を指向する。) そういう仲間で共有できるような題材があれば、勉強会やイベントのネタにつかっている状況で、一昨年はXML関連の勉強会、昨年はHTML関連の勉強会、今年はRubyやTCP/IPの勉強会を提案し実施している。(僕は企画した割に、忙しくて全く参加できず非常に悔しい思いをしているが、それでもみなさんに楽しんでいただけているようなので満足している。(こういう方向で質的転換を図っているのだが…)
こういう方向で物を考えているのだが、LinuxをはじめとするPU-Unixは普及活動期から、普及してしまった時期に入ったわけで、いろいろと価値観やら物事の進め方が変わってしまったも致し方ないものなのかも知れ無いなぁと思うわけだが、何ともとりとめがないのよねぇ。(考えはまとまらないし。)

2003年10月11日 土曜日

雑誌の記事って電子化されないものか

最近雑誌を買わなくなって久しいのだが、たまに読みたい連載があっても_収納スペースの確保・整理する手間・捨てる手間_を考えると買わないと言う選択をしがちである。(僕がだめだめなだけかも知れないが、真面目に家の中の本の収納スペースが飽和しているのですよ。もうハードカバーと文庫本しか買う気がしない。)
僕が買う雑誌といえばここ数年はほとんど最近コンピュータ関連の雑誌なので、なおさら思うところであるが、記事の電子データも付けてくれない物だろうか? 最近読んでおきたいなと思っている連載は、Unix Userに連載されている西田 亙さんの「GCCプログラミング工房」とLinux Magazineに連載されていたまつもとゆきひろさんの「Ruby入門」なのだが、上記の理由の方が優先していて雑誌を買う気にならない。記事の内容が良いだけに実に勿体ないのである。
最近コンピュータ関連の雑誌が売れないと言われ続けているが、速報性ではWebにはもう勝てないので、ビジネスモデルを転換して、有用な読み物の連載を軸に雑誌を作ってもらい、CDROMで記事の電子データも付ける。ただ電子化してもその月しか売れなければ売り手としては厳しいので、_電子データを1ヶ月後ないしは数ヶ月後にCDROMにして付録にする_というのはどうだろう? これならば連載を読むために雑誌を買い、その記事の電子データが欲しくて次の月の雑誌も買うということで、売り上げをある程度見込めて、雑誌の記事の再利用性が高まって嬉しくないだろうか?
一度電子データになってしまえば自分の家でデータベースに組み込むなりなんなりして保存すれば、場所も要らず、検索性も増して、非常に便利なのだが、そういう企画を実現してもらえないものかねぇ。とくにUnix Magazineのように、記事がそのときに必要なくて、数年後にヒットするような雑誌の場合、保存場所と検索性の向上こそが切実な問題なのである。
まぁそんな話を、あおしまさんと話をしたのです。

2003年09月27日 土曜日

毎週土曜日はハマリだなぁ

今日はちょっとしたトラブルをきっかけに芋蔓式にどんどん大きなトラブルを引き当ててしまった。気が付いたら、結構な時間になってしまい疲労感だけ残る。毎週引き継ぐ仕事のみが多くて大変申し訳ないのである。

デザイン・パターンを勉強しなければ…

最近、プログラム関連の記事やら本を読んでいると_「なんたら・パターン」と言ういかにもデザイン・パターン用語_を見かけるようになって、「???」となることが多いので、ぼちぼち勉強しておかないとだめかなと思っているのです。
どの本を読めばいいのかと言う話を考えていると、さすがにGoF本は難しそうなのでやめにして、やっぱり結城さんの「Java言語で学ぶデザインパターン入門」(ホームページ)を種本にして、Javaのソースを読みつつ、rubyに移して勉強すれば、良い勉強になるかもと思っているのですが、実際のところどうなんだろうか…
たまには言語に依存しないプログラミングの方法論を勉強しておかないと駄目かなと思っています。まぁ実装方面にすぐ走れなくても、人が何を言っているのか理解できないとそれまでなので早急に勉強しておかねばと思うところと、手持ちのネタは多いほどいろいろできるものなので。
明日本屋巡りをしてみようと思いつつ、RubyでデザインパターンだったらRubyの作者のまつもとゆきひろさん自身が書かれている「オブジェクト指向スクリプト言語Ruby」に書いてあるよんという話を聞いて、久しぶりに眺めてみた。内容は、第5章の後半がデザイン・パターンの話ですな。Observer/Proxy(Delegator)/Iterator(Cursor)/Strategy/Singleton/Template Methodが解説されていますねぇ… (ここまで読んでなかったんだな。なかなかこの本を読みこなせて無いなぁ。この本結構目から鱗なところがあって楽しいのだが…)

2003年09月11日 木曜日

RelaxNGの勉強をしようかと。

今回のコンテンツの見直しで、元々やろうと思っていたXML化の推進をしないとやっていられない状況になってきました。ぼくはXHTML 1.0のFramesetが嫌いな人なので、今のようなページ構成になっています。しかしそれぞれのページで部品として共用している部分を書き換えることになると、手修正だけではやってられないと言うことで、XMLで書いた部品を寄せ集めてXHTML 1.1(or XHTML 2.0?)にレンダリングした方が良さそうです。
最近の流行りであれば、真面目にXMLに突っ走るならCocoon 2みたいな物を使うか、よりお手軽なZope、もっとお手軽な方向としては、XOOPSのようなWeb Applicationか、がらっと変えてtDiaryみたいな日記ツールとかblogなツールを普通、選ぶのだろう。
ただ今のところ動的なサイトにしたくないのと、JavaやpythonPHPに依存できない環境であること。Java以外は一生コードを見ないですむなら見たくないという個人的な偏見と趣味とRubyPerl(これも使いたくはない)はサーバで使える環境にあるので、選択肢はこれらのどっちかですな。
ただCGIなどでページをDynamicにページを生成するとCGI自身のメンテがかったるいので、WikiWiki Cloneは却下で、結局今のところはStaticなページ構造にして置いた方がよいかもと個人的に思うので、XML文書を書いてXSLTでXHTMLに変換するのがよいかなと思っている。最終的な目標はサーバにXMLファイルをいっぱい置いておいて、半動的生成を目指そうかと思うわけだが、しばらくはXMLで書いて、makeでStaticに作ってしまえと言う感じである。
XMLで適当に文書を書くと自分で作ったXML文法(XMLボキャブラリというのかな)を忘れてしまうと言う問題があり編集の便利さを追求するためにも、僕の場合は必ず文書型定義(DTD)を書く必要がある。ただ_DTD自身がXMLじゃないやん_とか_いまさらDTDなんて勉強しても仕方ないやん_ということで、何かしらのSchemerを勉強せねばと言うことになったわけだ。こういう用途でThe World Wide Web Consortium (W3C)御謹製のXML Schemaを使うほど暇人でもないので、Relaxを勉強かと思ったのである。いろいろ調べているうちに、Relax NGのページやTutorialを眺めていると、こっちの方がえらく簡単ということで_勉強する気になった。_(ようやく表題の話になった。)
ということで、いったんどういう事を書いているのか再分析して、Relax NGパターンを書き下して、DTDを生成してみようと思う。

2003年08月06日 水曜日

今日のVBAとの闘い

前回のVBAとの闘いでは、Cで言うところのsscanf()みたいな関数がないので、テキストファイルからの入力は不便じゃのうという話だった。普通のExcelのユーザ(VBAを使いこなしている人はすでに_普通の人ではないと言う意見はあるが_)は、CSVなファイルもExcelで開いてから、VBA側でセルを参照して値を取り出すのかな? 僕はそういうデータ構造を考えないプログラムを書く趣味を持ち合わせていません。
今回の闘いは、まともにCollection系のライブラリが欲しいという話。ちょっと考えてみると、文字列をKey、構造体をValueとするHashを使えれば、一発でおしまいという話だったのだが、VBAやVBっていまいちCollection系のデータ構造がまるでないので、いかんせんいろいろと貧弱すぎだなぁと思うのよね。結局配列で非常に安直な実装にしたのだが、どうにかならんもんかね。VBプログラマはデータ構造なんて考えてプログラムをしないのかねぇ。で、あらかたプログラムを書いた後に、