VMware Playerをタスクトレイへ(Trayzer)

ウェブの開発をする時は、メインマシンであるWindows Vistaを使い、VMware PlayerでFreeBSDやLinuxを起動している。
X Window Systemは使わずにPuttyでリモートログインしてターミナルからすべての操作をしている。
よって、VMwareのウィンドウはWindows上に表示される必要がなく、タスクバーにあるVMwareが邪魔だなと常々思っていた(特にALT+TABでアプリケーションを切り替える時)。
で、今朝ふと思い立ってネットで検索してみたら、「Trayzer」って任意のアプリケーションをタスクトレイに収納できるフリーウェアがある!
試しにインストールしてみたら、あっさりVMwareが画面から消え、ALT+TABでもVMwareが出てこない!
インストールして数十秒で気に入ってしまった。
こんな便利なソフトがあるなら、もっと早くから導入すれば良かった…。

イトーヨーカドーのネット通販で念願のキーピングスタイルケアを入手

イトーヨーカドー
イトーヨーカドーのネット通販で念願のキーピングスタイルケアを入手した。洗濯ノリの一種だけれども、近所のスーパー・薬局には売ってない。
(なんでだろ?すごくいい製品だと思うのに。)

近所にはないので、渋谷とか新宿なんかに行った時、薬局を見つけると、あるかな?と思い探してみるけど、売ってない。
楽天などで購入出来るけれども、元々の単価が安いので(詰め替えパックだと1個300円くらい)、送料が高くついてどうも買う気にならない。

もう夏本番で汗をかくので洗濯する回数も増え、手持ちのキーピングの残量わずかで、ピンチ…。
そこで発見したのが、イトーヨーカドーのネット通販
セブンイレブンで受け取ると、なんと送料無料!凄い!
仕事が忙しい人や外出が大変なお年寄りでも、日常の細々したものを買うことが出来る。
支払いもセブンイレブンで出来るので、クレジットカード持ってない人でもOK。
とても便利だ。

1

RALPH LAURENのスエードのバングル

今日、渋谷のILLMINATEで、RALPH LAURENのスエードのバングルを買った。
ちょっと寸が足りないので、在庫を出してもらい、一番長そうなのを選んだ。
マルジェラみたいでいいかも。
お店の人に水につけると臭くなりますからって教えてもらったけれど、すでにサロンパス風の臭いがする。

RALPH LAURENのスエードのバングル

サロンパス

新人プログラマー対象のウェブプログラミング講習

内容 新人プログラマー対象のウェブプログラミング講習
期間 2004年10月 − 2004年11月
OS Linux
言語 Perl, PHP, HTML(CSS), JavaScript
アプリ Apache, MySQL

あるウェブ系企業で、新入社員のプログラマーを対象としたウェブプログラミング講習の講師をしました。
期間は1ヶ月半ほどで毎日5時間ほどの授業で、講習後は簡単なウェブアプリが制作出来るレベルにして欲しいという事で、HTML、PHP/Perlプログミラミング、UNIX系OSサーバの基礎知識を教えました。
講習の大まかな内容は以下の通りです。

  • HTML/CSS(テーブルレイアウト、CSSレイアウト、論理的なマークアップなど)
  • JavaScript(入力値のチェック、ドロップメニューの作り方、セレクトタグジャンプなど)
  • Perl/PHP基礎(演算子 条件制御文 変数 関数の説明)
  • ウェブアプリの習作(掲示板などの作成を通して、データ加工や画面遷移の考え方について)
  • プログラミングの前提知識(ファイル・変数名の命名方、ファイル管理、コメントのつけ方)
  • UNIX系OSのサーバ管理・ネットワーク管理

参加した新入社員は6人いたのですが、Java経験者が1人いるだけで、他は趣味でHTMLを書いたことがある程度でした。
スタート時点での習熟レベルですでにバラツキがありますが、加えて学習スピードが各自違うので、全員に同じ内容で授業をすると、分かってる人は退屈に感じ、分からない人は分からないまま次に進んで身につかないという問題が起きました。
最初は市販のテキストをなぞる形式で授業を進めていたのですが、このような問題のため、各自に異なったプログラミング課題を出し、他の5人に課題を取り組ませつつ、1人のプログラムを添削指導するという形式に替えました。
6人いるとそれぞれ癖というか個性があります。
とにかく真面目に説明したことを一言一句メモしてる人、課題の内容を勝手に変えてプログラミングしようとする人、やる気がない人、やる気があっても出来ない人。
それぞれの人に合わせて対応するのが大変でした。

講習が終わって、会社の人事の人にレポートを提出したのですが、「この人はそのうち上手いプログラマーになると思います」と報告した人がいました。
講習前はまったくのプログラミング未経験者だったんですが、講習を始めてすぐに高い学習能力を感じました。
授業中の学習意欲が高く、いい質問が多かったです。
講習が終わった時点では6人の中で特別抜けてたわけではないのですが、これは放って置いてもすぐに成長するだろうなと予想しました。
そして、この仕事を終えて数年後、何気なくこの会社のホームページを見たら、その時の人がその会社のエースプログラマーみたいになっていて、社長賞をもらっている様子が掲載されていました。
やっぱりなと思った次第です。

別の会社ですが、高学歴な人がプログラマーで入社してすぐに辞めたりするのを見てます。
確かに高いレベルのプログラマーになるには数学などの能力が必要と思いますが、その段階に行く前に、プログラマー向きの能力というか、性格のようなものが求められると思います。
その人はそういう能力があったんだと思います。

有名検索エンジンポータルサイトのコンテンツ管理システムの開発

内容 有名検索エンジンポータルサイトのコンテンツ管理システムの開発
期間 2003年2月 − 2003年4月
OS Linux, Windows NT サーバ
言語 Perl, JSP, シェルスクリプト, HTML/CSS
アプリ Apache, IIS, PostgreSQL

某有名検索エンジンポータルサイトのトップページがリニューアルすることになり、そのトップページを運営スタッフが更新するためのコンテンツ管理システム(管理画面)を作って欲しいという依頼でした。
トップページはニュース・天気予報・占い・TV番組表・広告などたくさんのコンテンツから構成されており、それらのコンテンツはサイト内のコーナーとして独立したページ(ウェブサーバ)を持っています。

  • 各コーナーのページ(ウェブサーバ)からトップページ用のデータを抜き出すバッチプログラムを作り、
  • 集まったデータをトップページ担当スタッフが編集するための管理画面を作り、
  • 編集後のコンテンツを本番のトップページ用サーバにアップロードするシステム

を作りました。

内容としては以上ですが、設計前の説明で以下の制約を課せられました。

  • DBサーバを管理する人がいないから、PostgreSQLやMySQLなどのDBを使ってはいけない。
  • コンテンツ管理システムはLinuxで、トップページ用サーバは複数台のWindowsで動かし、それらの通信はFTPのみ。

アップロードシステムは、スケジュール指定出来る仕様になっており、DBを使うのがプログラミングする上で楽なわけですが、NGとのこと。
スタッフが手動でFTPすることも考慮する必要がありました。

考えた末、アップロード予定の日時を年月日時分で分割し、年月日時分をディレクトリ名にして階層的なディレクトリを作成し、そのディレクトリに(バッチプログラム及び管理画面で作られる)アップロード対象のコンテンツファイルを置くようにしました。
CRONで実行されるFTPアップロードプログラムはディレクトリをスキャンし、アップロードすべきファイルが見つかれば、全ウェブサーバにFTPアップロードする仕組みでした。
知らない人が見れば変わったことしてるなって感じですが、他にも事情があって、そういう設計にしました。

もともと3ヶ月くらい制作期間があったんですが、リニューアル後のトップページのデザインがギリギリまで決まらなかったり、各コーナー担当者にお願いしたデータ生成の仕様が上がってこなかったりで、実質、リニューアル前2週間ぐらいで一気にシステムを作り上げました。
リニューアルの日、リリース作業でも予期せぬ問題が起きたりで、この仕事の後は本当にくたくたになりました。

こんな事もありました。
この会社は母体が伝統的な大企業なので、労働組合が強く、その日もプログラムを書いていたら、17時(その会社の定時終業時間)に知らない社員の人がやってきて、「春闘だから、今日はこれまでだよ!さあ帰ろう!」って言われて、(1週間後にリリースで全然間に合ってないんですが…)涙目になるという出来事がありました。
ウェブ業界には定時なんてあってないようなものという認識がありますが、やはり天下の●●●は違うなと感心しました。

インターネット回線事業会社の社内ネットワークの構築管理

内容 インターネット回線事業会社の社内ネットワークの構築管理
期間 2001年12月 − 2002年12月
OS FreeBSD, Windows 2000 サーバ
言語 Perl, HTML/CSS
アプリ Apache, Postfix, BIND, PPML, AntiVir MailGate, Active Directory/DHCP/DNSなどWindowsサーバアプリ全般, RADIUS

某有名インターネット企業の関連会社で社内ネットワーク全般を担当しました。
この会社の業務はデータセンターでのインフラ構築でしたが、社内に大がかりなネットワークシステムがあり、その管理をしました。
社内サーバルームに5-6台のサーバラックがあり、サーバが20台くらい、大型のルータ、スイッチ、アプライアンスが多々ありました。
サーバの内訳は、ウェブサーバ・メールサーバが複数台の他、社員が社内LANにアクセスするためのダイヤルアップサーバとその管理のためのRADIUSサーバ、ウィルススキャンサーバなどでした。
ウィルススキャンを社内サーバで行うのは、当時としては珍しかったと思います。
社員は100人くらいでしたが、非常に人の出入りが激しく、様々な関係会社から社員が出向してきていました。
それらはすべてWindows2000サーバでドメイン管理していました。
それまではUNIX系OSしか経験がなかったのですが、ActiveDirectoryを利用したDNSやWINS、DHCPの管理は統合されていて便利で、オフィスサーバとしてはWindowsの方が使いやすいなと感じました。

この会社の社員は技術者の占める割合が大きく、管理職の人たちは日本のインターネット業界を創世したような人たちでした。
社内規則で終業時に日報を書いてメールで提出することになってたんですが、非常に提出率が悪い。
そこで技術部長さんが、日報の未提出者に提出を促すリマインダーメールを送信するバッチプログラムを書いてくれました。
このプログラム、ソースを見せてもらったんですが、200行くらいのawkで書いてあり、「awkでこんな長いプログラム見るの初めてだ!」と衝撃を受けました。
awkで書かれた業務プログラムに出会ったのはそれが最初で最後です。
その後、その技術部長さんにある仕事を頼まれ、Perlで書いて提出したら、「最近はPerlなんて流行ってるんだね」と、昔からUNIXを使ってる人にはPerlすら新参者の言語なのだと思い知らされました。

当時2002年。
会議室の大型プロジェクターで、みんなでワールドカップの日本戦を観たことが思い出です。

音楽情報サイト制作及び社内ネットワーク構築

内容 音楽情報サイト制作及び社内ネットワーク構築
期間 2000年12月 − 2001年12月
OS Linux, Solaris, Windows 2000 サーバ
言語 Perl, PHP, Java, シェルスクリプト
アプリ Apache, InpriseAppServer, IIS, BIND, Postfix, Windowsメディアサーバ, PostgreSQL, Oracle8i, Samba/Netatalk, FML, pcAnywhere
ハード Sun Enterprise220R, Compaq DL380, CISCO 2600/1600, Alteon AD3, Watchguard FireBox

某音楽系放送局のウェブサイトの運営会社で、サイト制作及び社内ネットワーク構築を担当しました。
アーティストの新譜のリリースなどに合わせて、サイトで特集を組み、プロモーションをするサイトでした。
親会社が音楽業界にコネクションがあり、ユーミンなどメジャーなアーティストも扱ってました。
で、今思えば、かなり先進的なサイトで、アーティスト本人のブログ、アーティストの愛用品のオークション、アーティスト参加のチャット大会などを行ってました。

特に売りだったのが、プロモーションビデオの配信でした。
今のようにYouTubeはなく、ネットで音楽を聴ける(見られる)のは貴重でした。
ライブ会場に行ってライブの模様を中継するライブストリーミングもよく行いました。
当時はライブ会場にインターネット回線はまずなく、ライブストリーミングが決まると、会場にNTTのISDNを何本か引いて(ADSLはまったく普及してない時期)、ISDN回線を束ねて帯域を増やし(CISCOの高いダイヤルアップルーターを使ってましたが、資料がなく、設定に苦労しました)、データセンターにあるWindowsメディアサーバに送信、そこでリアルタイムにエンコーディングして、ウェブサイトから配信していました。

ちなみに、データセンターは事情から大阪の堂島にあり、サーバ工事のために大阪にはよく行きました。
リモートからifconfigコマンド打ち間違えてアクセス不能で大阪に行ったり、Code Redが流行って大慌てで大阪に行ったりですとか。

以上のようなウェブサイトの運営が自分の主な仕事でしたが、他に社内ネットワークの構築も大きな仕事でした。
会社が引っ越して新しいオフィスに移るので、そこのネットワークを作ることになりました。
主な内容は以下です。

  • Linuxのルーター兼ファイヤウォールの設置
  • DMZに社外関係者向けサーバを設置
  • LAN内に社員向けのファイルサーバを設置
  • (デザイナーがコンテンツをアップロードできるように)ISDNでデータセンターのサーバに直結で転送出来るシステムの作成
  • 来客用のセグメントに無線LANアクセスポイントの設置

メインのインターネット回線は、引っ越し前のオフィスではOCNエコノミーという専用回線でしたが、(当時はOCNエコノミーは一般的だったのですが)128kbpsを共用という低速な回線なため、新しいオフィスでは今は亡き東京めたりっく通信からADSLを引きました。
ADSL開通工事の際は、めたりっく通信からエンジニアが二人も来てくれました。
無線LANも当時としては珍しかったと思います。
サーバの数は結構なものになり、かしめ工具でケーブルを何十本作って、誰もいないオフィスで一人で配線して回りました。
いよいよ引っ越しになり、自分の作ったネットワークが無事動いた時は大きな達成感がありました。

この会社ではいろいろと思い出深いことがありましたが、覚えていることをいくつか。
ある日、会社の営業の人が、このバンド、まだ無名だけど絶対流行るよとくれたデモCDがあって、聴いてみましたが、ボーカルの声が地味で(デモCDで録音が悪かったのかも知れません)、これは売れないだろうとCDはすぐにどこかに捨ててしまいました。
実は、それはバンプオブチキンの『天体観測』で、この後に大ヒットしたわけですが、あのデモCD取っておけば良かったと後悔しました。

ここの会社ではFMラジオを1日中流してあり、当時よくオンエアされていたのが、くるりの『ばらの花』でした。
これを聴きながら、サーバ作ったり、プログラム書いたりしてました。
この曲を聴くとと当時のことをしみじみ思い出します。

レンタルサーバでのサーバ構築管理

内容 レンタルサーバでのサーバ構築管理
期間 1999年11月 − 2000年12月
OS Solaris, Linux
言語 Perl, PHP, シェルスクリプト
アプリ Apache, BIND, Sendmail, PostgreSQL, Majordomo, Realサーバ, CyberCache
ハード Sun Enterprise450, Sun Ultra5/10

レンタルサーバ会社での勤務で、主な仕事はウェブサーバやメールサーバの構築でした。
技術者は自分を含めて3-4人、デザイナーが1人、総務が1人、社長が1人という会社でした。
ここのレンタルサーバはサーバがSolarisなのを売り物にしていて、当時、OSはSolais2.6、ハードはSun Enterprise 450やNetraもありましたが、台数が多かったのはUltra 5でした。

今だとUltra 5のようなワークステーションをサーバにするレンタルサーバ業者はないでしょうが(というよりもSolarisをウェブサーバにしてるところがない?)、当時はSolarisを安く動かせるということで、Ultra 5を使ってました。
会社にはUltra 5 が何台も積み上げられていて、週に何度も、マシンにOSをインストールして、ApacheやSendmailをインストールして、レンタルサーバの管理用のCGIをインストールして、それをデータセンターに設置しに行ってました。

sun ultra 5会社は大手町と神田の中間にあり、データセンターはKDD大手町ビル(当時はKDDとDDIは別会社)で、歩いて10分程度。
むき出しのUltra 5を手で持ってKDDビルまで歩いて行くんですが、Ultra 5は微妙に重く、途中の鎌倉橋あたりで必ず休憩をしてました。

KDD(KDDI)ビルは当時(も今も?)インターネットの中心で、自分たちがハウジングしてるラック以外には、誰でも知ってる某検索エンジンサイトなど錚々たる顔ぶれでしたが、セキュリティは非常に甘かったです。
本来は、事前に入館予定のFAXを送り、ビルに入る際に守衛さんに入館証を見せて入館するんですが、急いでる時は、「すいません、FAX送ってないんですが、緊急なんで!入館証は忘れました。」と言って名刺を見せるだけで入れました!

当時のインターネット業界はまだ牧歌的でした。
あれから10年。
何も変わってないような、すべてが変わってしまったような…。

PostgreSQLしくみ勉強会に参加

先週の土曜日、PostgreSQLしくみ勉強会に参加してきた。

会場の産業技術大学院大学
会場の産業技術大学院大学

2本立てで構成されていて、最初はチューニングの話。
ここに資料がある。
かなり高度な内容で参考になったが、遅刻してしまい、半分くらいしか話が聞けなかったのは今回の反省点。

チューニングの話の後、plploxyとpgbouncerというPostgreSQLのロードバランシング(レプリケーション)の話だった。
事前の内容説明で、タイトルが 『 plploxy + pgbouncerについて(ハンズオン) 』 となっていて、ハンズオンって何だろう?って思っていたのだが、会場には備え付けのPCにPostgreSQLを用意されており、講師の人の説明を受けながら、実際にplploxyやpgbouncerをインストール、設定してみる形式だった。
こういうのをハンズオンというのか。
会場で配布されたOpenSolarisのブータブルCDでSolarisを起動し、そこから仮想OS環境のCentOSを起動して、PostgreSQLにアクセスするという複雑な構成。
講師の人は、どこそこのファイルに実行権を与えてシェルスクリプトを実行しろとか、普通にターミナルの操作を要求してくるので、諦めて話しを聞いてるだけの参加者も結構いたような。
講師は、桑村潤さんという方で、そう言えば名前を聞いたことがあるなと思ったが、マンモス本書いてた人なのか。
桑村さんがターミナルの操作をする様子は、前面の大きなプロジェクターに映し出されてたんだけど、テキストファイルを閲覧するのに(lessやlvじゃなくて)moreを使っていた。うーん、いまどきmoreか・・・と。
伝統的なUNIX使いなんでしょうね。

Catalyst(またはPerl)のドキュメント

Catalyst(Perlで一番メジャーなウェブフレームワーク)を採用しているサイトの追加開発をしてる。
以前買ってあまり読まずにいた『モダンPerl入門』を読みながら、Catalystを学習している。
本で足りない部分を補うために、ネットで検索して、Perl開発者のブログの記事を参考にしている。
「はてなブックマーク」(http://b.hatena.ne.jp/t/catalyst?sort=)の中から、めぼしい物を適当に読んでるけれど、ブログだから内容が断片的で、古い記事だと今では非推奨な方法で書いてあったりするので注意が必要。

Perlって、Catalystに限らず(と言っても、他にメジャーなのはCGI::Appぐらいだけど)フレームワークの本ってあまりない。
PHPのCakeやZend、RubyのRoR、JavaのStruts、C#のASP.NETなどは、専門の本がたくさん出てるのに。
何でフレームワークの本がないんだろうって理由を考えると、Perlライブラリの流行が早くて、本を作ってもすぐに内容が陳腐化するからというのもその一つでは?
Perl本体は5.8のリリースからもう7年も経っていて大きな変化はないけれど、ライブラリは似た機能のライブラリがCPANに次々にリリースされる。
Perlだけ追っかけてる分にはいいだろうけど、たまにしかPerl触らないとついて行けない。系統だった学習が出来るように、もう少し整理されたドキュメントが必要じゃないかなと思う。
CPANのドキュメントは詳しいことはソースを読めみたいな感じだし。
PHPが普及した理由って、日本語のドキュメントが大量にある事が大きいと思う。

JavaScriptの勉強でBresenhamアルゴリズムを知る

最近はJavaScriptの勉強をしてる。
一応仕事のためで、マストで必要ってわけじゃなかったけど、どうせならJavaScript使って見るか!ってことで。
教材にしたのは、この、TinyTable(http://www.leigeber.com/2009/03/table-sorter)というテーブル(表)を任意のカラムでソートするためのライブラリ。
これはとても良くできていて、このまま使っても良かったんだけど、ソースコードを見てみると、変数名が短くて意味不明だったり、実行速度を上げるため?なのか分かりづらい処理があったので、若干機能を修正して移植してみた。
車輪の再発明ってやつ。

もう一つは、グラフ表示のライブラリというか、コードプロジェクトのチュートリアル記事(http://www.codeproject.com/KB/scripting/javascriptlinedrawing.aspx)。
前にFlashの勉強をした時も思ったけど、グラフィックのプログラミングすると、数学の能力が求められるなって。
昔、♪サインコサイン何になる〜って受験生の歌があったと思うけど、やっぱ数学は大事だよ!
この記事では、グラフを描くのにBresenhamアルゴリズムというのを利用している。
解説を読むとああそうかって思うけど、こういうのを自分で思いつくBresenhamさんは賢い人なんだろうなあ。

wikiの文法

仕事で調べたメモをPukiwikiで公開してるんだけど、Pukiwikiの文法って、小気味いいと思う。
*1個でH1タグ、**2個でH2タグって自明だし、−でULタグ、+でOLタグっていうのも、納得がいく。
HTMLに変換しなくても、Pukiwikiの文法が残ってるテキストの状態でも見やすいのがいい。
行頭にスペース1個でPREタグになるのも、そういう点でよい。
Pukiwiki以外のwikiの文法に詳しいわけじゃないけど、とりあえずTracのwikiの文法は酷いと思う。
何であんなにしちゃったんだろう。