前言撤回日記

brandless

こうしてヤケクソ気味に更新していると「ヒマか?ヒマなのか?ヒマならとっととウチの仕事を片付けろこら」とお客様から叱責を受けそうであるが、全然ヒマじゃねえんですよ。

これがセルフブランディングの一環であれば他の仕事を差し置いての更新もまったく妥当な話なのであるが、仕事の半分はWebデザインなのに、今さらサーバ立てて趣味でWebプログラミングでも始めっか、とか言っている時点でブランドどころかむしろマイナスイメージ。

でもまあ身の丈以上に見られるくらいならいっそ実際よりもバカだと思われてる方がマシである。
今後も下手にかしこぶったりしないで、致命的なくらいイメージを低める事を言ったりやったりしていくのも一つの戦略であろうと思った。言い訳だけど。

シッポなし

あら、出てしまった。

ワイヤレスMighty Mouse。
アップル – Mighty Mouse

まだ今のマウス買って半年くらいしか経ってない。本当にマウスイヤーですね。
http://elbro.net/blog/archives/000376.html

単三電池二本入りか。一本でも動くあたり、気が利いている。
まあ実物さわってから買うかどうか判断する事にしよう。

虫フォト

虫嫌いの人に申し訳ないついでに。

改めて見ると案外、虫の写真をたくさん撮っている事に気付く。

060727bug01.jpg
060727bug02.jpg
060727bug03.jpg
060727bug04.jpg
060727bug05.jpg
060727bug06.jpg
060727bug07.jpg
060727bug08.jpg
みんなそれぞれに美しいものであるなあ。

虫パニック

060727beetle.jpg 先日、夜にコンビニへ行ったら、入り口にコイツがたたずんでいた。
何となく拾って店内に入り立ち読みしていると、いきなり飛び始めてしまった。

となりでやはり立ち読みをしていた茶髪で長身のイケメンのお兄さんが「ちょちょちょちょ、ちょっと待ってちょっとマジムリ、うわわわわこっち来んなこえー虫マジこえー飛んでんの初めて見たーうわうわうわうわー」とか大変なパニックになって逃げまどう。

本当に虫が苦手な人っているんだなあ。申し訳なかった。……とか言いつつ写真を掲載。
ヤツは今、かたわらで虫用ゼリーをむさぼり食っている。

瑕疵担保責任

プログラミング、とか言っててひとつ疑問が浮かんだんですけど、ソフトウェアをインストールする時によく「このソフトウェアを使用することで発生するいかなる損害にも責任を負いません」とか、かなり無責任なダイアログが出て「同意する」をクリックしないとインストールできないようになってる事がありますよね。

お金を出して買ったソフトなのにそんな一方的な契約内容を許諾しないとインストールできないというのはどうなんだ、と思うんですけど、まあ、それは置いといて、こういうソフトを作ってる会社って全部自社で作ってるとはかぎらなくて、きっと外注のプログラマーやソフト屋さんに発注したりしますよね。

と、ここまで書いたら僕の疑問はもうお分かりかと思うんですけど、そういう場合、外注先から納品されたプログラムにバグがあって損害を被っても責任は問わないんですかね。
そういう契約を結んでるはずですよね。エンドユーザーにはそれを強要してるんだから。

もしそれで外注の瑕疵担保責任を追及するならダブルスタンダードじゃないですか。

いや、ダブルスタンダードって言ってみたかっただけのエントリーなんですけど。

感動の完動

とりあえず動いたので何か書き込んでみる。
で、書き込んだあと「write」ボタンをクリック。

Error (dbmopen)

かーっまたエラーか!
どうもデータベースファイルが開けないっぽい。
フォルダをみるとそれらしいファイルがない。
いぶかしく思いながら探し回ると、なぜか一つ上の階層にデータベースファイルが作られている。

これをプログラムソースと同じフォルダに移動。
だがまだエラー。ソースの中のデータベースファイル名をフルパスに書き換える。再度エラー。
結局データベースファイルのパーミッションを777に設定したらようやく動いた。

長い道のりである。プロが作った、完成されたプログラムを設置するだけでこの有様。
プログラミングってただごとじゃないですね(ソース一行も書いてない)。

YukiWikiMini

さて、CGIの動作も確認できたので、Web上で配布されているプログラムをローカルサーバで動かしてみることにする。

不特定多数の人が閲覧だけではなく編集する事を前提に作られたサイトがある。
例えばウィキペディアなどだ。
こういったサイトはwikiエンジンと呼ばれるプログラムを使って作られている。
僕は結城浩さん作のwikiエンジン「YukiWikiMini」をレンタルサーバ上で動かしてメモ帳代わりにしているのだが、これをローカルで動かしてみよう。……って順序が逆のような気もするけれども。

まずプログラムソースをダウンロードする。中身は以下の3つのファイル。

「ykwkmini.cgi」 プログラム本体
「jcode.pl」 perlで日本語を扱うためのライブラリ
「ykwkmini.txt」 プログラムの簡単な説明とか

この中で稼働に必要なのは上の2つだけ。いたってシンプル。

これらの入ったフォルダを/ユーザー/(ユーザー名)/サイト/に置いてブラウザからアクセスしてみる。

「Not Found」

なんでだよ! どう見てもあるじゃんココに!
もしかしてサブディレクトリに入ってるとダメとか?
で、出してみて再アクセス。

「Internal Server Error」

……少しマシになった。
とりあえずパーミッションを設定。

「Internal Server Error」

ダメか。
このぶっきらぼうなエラーメッセージでは何の事やら分からないのでターミナルで動かしてみる。

「Can’t locate jcode.pl in @INC」

jcode.plが@INCの中に見つかりません?
なんのこっちゃ。
試しに「ykwkmini.cgi」をmiで開いてみると
require ‘jcode.pl’;
の一行がある。外部ソースを読み込むにはrequire ‘ファイル名’;という命令文を使うのだろう。
でも「jcode.pl」はちゃんと同じディレクトリに入ってるじゃないの……。

改行コードを確認するとCRになっていた。
これをLFに修正。

おお、動いた動いた。

早くも撤回

前回のソース

#!/usr/bin/perl

print “Hello World!”;

ではエラーになりますな。
ブラウザに表示させる時は最低でもContent-typeの記述がいるという(ターミナル内で実行するだけなら大丈夫)。

#!/usr/bin/perl

print “Content-type: text/plain?\n?\n”;
print “Hello World!”;

これでOKなはず。
しかしいきなり間違えるとは。先が思いやられるなあ。

Hello World!

CGIが動くかどうかテストしてみよう。
まずWeb共有が正常に稼働しているかどうかはブラウザから「http://localhost/~ユーザー名」にアクセスしてみれば分かる。
/ユーザー/(ユーザー名)/サイト/index.htmlが表示されれば成功。

とりあえず改行コードを設定できるテキスト編集ソフトを起ち上げる。僕は「mi」を愛用しています。

新規ファイルを作成し、改行コードをLF(Unix)にして以下を入力。

#!/usr/bin/perl

print “Hello World!”;

一行目はPerlで書かれた命令文を実行するソフトウェア(インタプリタ?)へのパスで、環境によって変わる。ターミナルで which perl と打てば場所が分かる。
次は空行、次は「チミチミHello World!と表示してくれたまい」という命令文だ。
最初にプログラムを組むときはこの文言を表示することが法律で義務づけられている。
このファイルを「helloworld.cgi」という名前で/ユーザー/(ユーザー名)/サイト/に保存。

ターミナルで sudo chmod 755 と打ち込んだあとにhelloworld.cgiをターミナルウィンドウに放り込み、リターン。

ブラウザを起動してhttp://localhost/~ユーザー名/helloworld.cgiにアクセス。

Not Foundなら前述のコンフィグファイルの編集が間違っているかhelloworld.cgiの保存場所が間違っている。
~ユーザー名/以下にディレクトリを作るとうまくいかなかったので、対症療法だがいったんサブディレクトリから直下に出す。
Internal Server Errorなら構文エラーかパーミッションエラー、でなければ改行コードが違う。
ターミナルに perl -wc と打ち込み、helloworld.cgiを放り込んで構文チェック。

Hello World! と表示されたらおめでとう、無事スタートラインに立ったことになる。

ローカル

さて、まず手元のパソコンでCGIが動くようにしなくてはならない。
自作のプログラムを公共のサーバでいきなりテストするわけにはいかないからでやんす。

ちなみに環境はMac OSX 10.4.7 Tiger。

以下手順。

「httpd.conf」というファイルと
「ユーザー名(PCにログインする時のユーザー名).conf」というファイルを編集すればCGIが動くようになる。そんなもん面倒くさいからCGI.appとかにしてダブルクリックで起動するようにしてほしいものだけれども、仕方がない。

場所はそれぞれ
「/etc/httpd/httpd.conf」
「/etc/httpd/users/ユーザー名.conf」

不可視フォルダなのでFinderメニューの「移動→フォルダへ移動」で探す。
デフォルトでは編集不可になっているので「ファイル→情報を見る」でアクセス権をシステムから自分に移して編集する。

・httpd.confの編集
239:#LoadModule perl_module libexec/httpd/libperl.so
240:#LoadModule php4_module libexec/httpd/libphp4.so

283:#AddModule mod_perl.c
284:#AddModule mod_php4.c

882:#AddHandler cgi-script .cgi

の各行から「#」をはずす。

399:Options Indexes FollowSymLinks MultiViewsを
Options Indexes FollowSymLinks MultiViews ExecCGIに変更。

・ユーザー名.confの編集
Options Indexes MultiViews ExecCGIを追加。

で、システム環境設定→共有からパーソナルWeb共有を開始するとローカル環境でCGIが動く(ハズ)。

Copyright © 2004 elbro.net