トップ(最新) | <前

nDiki : CGI プログラム

CGI プログラム

スポンサード リンク

Related term

2006年7月15日 (土)

一般ユーザで Apache 2.0 を起動する最小限の httpd.conf このエントリーを含むはてなブックマーク

Perl CGI プログラムのテストの自動化には

などがある。 Apache を使うのがより実際の環境に近いテストができるのだが、通常動いている Apache を使って make test でテストできるようにするとすると「どこに配置するか」などの問題がでてくる。

となればいっその事、自分(一般ユーザ)で専用に Apache を起動した方が良さそうだ。 httpd.conf を用意するのが面倒だが、highperformance.conf 等をみる限り実はそれほど必須の設定は多くないようである。

@ httpd.conf を書く

ということで Debian GNU/Linux sidApache (2.0.55-4) で必要な設定は何か試してみた。少なくとも以下の設定は書いておく必要があるようだ。

 # httpd.conf for Debian GNU/Linux Apache 2.0.55-4
 Listen       9100
 ServerRoot   .
 DocumentRoot /home/naney/htdocs
 ErrorLog     error_log
 TypesConfig  /etc/mime.types
 PidFile      apache2.pid

これを httpd.conf として保存して、

 /usr/sbin/apache2ctl -f httpd.conf

で起動すればアクセスできるようになる。

 /usr/sbin/apache2ctl -f httpd.conf -k stop

で停止。

ServerRoot は起動時の -d オプションでも指定できるのだが、httpd.conf に書いておかないとうまく起動してくれなかった (-X を一緒に指定してデバッグモードにする場合は ServerRoot 無しに -d 指定だけでも動く)。

@ CGI プログラムを動くようにする。

CGI プログラムを動くようにするとすると例えば次のような感じ。

 # httpd.conf for Debian GNU/Linux Apache 2.0.55-4
 Listen       9100
 ServerRoot .
 DocumentRoot /home/naney/htdocs
 ErrorLog     error_log
 TypesConfig  /etc/mime.types
 PidFile      apache2.pid

 LoadModule cgi_module /usr/lib/apache2/modules/mod_cgi.so
 Options +ExecCGI
 AddHandler cgi-script .cgi

@ make test で動くようにするには……

ディストリビューション独自のパッケージングなどに対応するように、多少泥臭く環境検出する必要があるが、なんとか make test から呼べそうだな。

最近は WWW::Mechanize::CGIお気に入りなのだが、2つ以上の CGI プログラムにまたがるようなアプリケーションのテストには向かなさそうなので、今度この方法でも試してみたい。

スポンサード リンク


[ 7月15日全て ]

2006年7月22日 (土)

Rubric でプライベート SBS を立てるも 0.140 では日本語に不具合 このエントリーを含むはてなブックマーク

入社してから社内情報共有の一環として

といろいろ手をつけてきた。 次に狙っているのは SBS である。

Wiki社内 Blog に書くほどではないけれどメモ程度にブックマークしておきたい URL を、気軽に晒せるようにするのが目的。

はてなブックマークのような公開サービスは

  • タグ・コメント・傾向などが外に出るのはよろしくない
  • あるいは、それを気にして活用されない
  • そもそも社内リソースについてはブックマークできない

という点から、今回は利用できない。

ということで社内に SBS を設置したい考えている。

最初は Scuttle にしてみようと思ったのだが、PHP ベースであるのと MySQL を使うというところで気遅れしている。 いや SQLite でもいけそうらしいということで、実は Debian でちょっと試そうとしたのだが、テーブル作成の SQLMySQL 用で、これを修正するのが面倒なので断念。

次に Perl + SQLite で動く Rubric を試してみることにした。

@ Rubric 0.140

Rubric は CPAN にあがっているので CPAN.pm から install Rubric でインストールできる。 モジュールをインストールしたら、セットアップ。

  1. CGI プログラムを動かすディレクトリを決める (以下 $RUBRIC)
  2. Rubric tarball の bin/rubric.cgi を $RUBRIC/ にコピーし、必要なら #! を修正する。
  3. Rubric tarball の templates ディレクトリを $RUBRIC/ にコピーする。
  4. Rubric tarball の style/rubric.css を $RUBRIC/ にコピーする。
  5. Rubric tarball の etc/rubric.yml を $RUBRIC/ にコピーして環境に合わせて編集する。
  6. データベースを初期化する。0.140 には makedb.pl が同梱されていないので、0.13_01 の bin/makedb.pl を参考に perl -MRubric::DBI::Setup -e 'Rubric::DBI::Setup->setup_tables' で初期化する。ちなみに 0.140 付属の rubric コマンドで rubric db -s してみたが、これはうまく動かなかった。
  7. 必要に応じて .htaccess を作成・編集し rubric.cgi を CGI プログラムとして実行できるようにする。またその他アクセスされたくないファイルを deny するようにしておく。

これで OK。

rubric.cgi にアクセスしページが表示されればひとまず成功。 メニューの「register」から、ユーザ登録する。 確認用のメールが届くはずだが、面倒くさいのでこれを待たずに

 rubric user -a ユーザ名

でアクティベートする。

Rubric の HTML フォームからのブックマーキングは成功し、うまく動いているようである。 ただし、日本語の処理はどうもよくない。 title や description が化ける。 惜しい。

基本的には UTF-8 ベースでうまくいきそうなのだが、どこかで化けるようだ。 ちょっと手を入れれば直るかなと思ったが、化けるところと化けないところとがあるので逆に直す場所が多そうなので今日はやめておくことにした。

とりあえず Rubric はおいておいて、他のものも試してみることにするか。


[ 7月22日全て ]

2006年9月19日 (火)

Firefox 時間帯別ホームページ切り換え このエントリーを含むはてなブックマーク

昨日、ホームページからフレッシュリーダーを外した。 といはいえ、アンテナを張っておくという意味でそれなりに巡回しておく必要あり。

ビジネスアワーの中のちょっとした隙間時間でチェックしていくようにしたいので、平日の昼間は Web ブラウザホームページフレッシュリーダーにしておきたい。

曜日・時間でホームページを自動切り換えするような Firefox 拡張機能がないか探したけれど残念ながらみつからない。

ということで、曜日・時間をみてリダイレクト先を切り換えてリダイレクトさせるだけの簡単な CGI プログラムを作成してローカルホストの Web サーバに置き、Firefoxホームページに設定。 別にレスポンスにも不満はないので、これでいくことにする。

しかし、しばらくは RSS 巡回禁断症状が出そうだ。


[ 9月19日全て ]

2006年12月4日 (月)

SpeedyCGI 以下で WiKicker がうまく動かない? このエントリーを含むはてなブックマーク

WiKicker ベースのシステムが稼働しているホストが FreeBSD 5.2.1-RELEASE から FreeBSD 6.1-RELEASE に更新されるのにともない、再インストール作業を行った。

動作確認をしたところ CGI プログラムは動くものの Perl モジュール中の DATA セクションが読めていないようなエラー表示がされた。

もしやと思い SpeedyCGI を外したら正常動作。

SpeedyCGI 下で動くことを考えて、DATA セクションを1度しか読まないようにコーディングしてあるはずなのだが、はて。

他の作業もあり細かいチェックができなかったのでもしかしたら違うところでの問題かもしれないが、ちょっと厄介。


[ 12月4日全て ]

2006年12月11日 (月)

SpiderMonkey の素のインタプリタでは CGI プログラムには役立たず このエントリーを含むはてなブックマーク

Ajax を使うプログラムを書くことになりそうなので、どうせならサーバーサイドも JavaScript で書けないかなと調査。 有名どころの JavaScript エンジンというと SpiderMonkey なので、まずはこれでいけるか確認。

Debian GNU/Linux sid だと spidermonkey-bin パッケージに JavaScript shell プログラム smjs (js) が含まれている。 とりあえずコマンドライン引数 (arguments)と環境変数(environment)と標準入力(readline())から入力ができて、標準出力に出力 (print()) ができるので、最低限の CGI プログラムは書けそうだ。

ただこれだけでできる範囲のことなら、クライアントサイドでできてしまう。 単独だとあまり意味ないな。やはり embedded 用か。

Perl の JavaScript::SipderMonkey モジュールや JavaScript モジュールを使うと Perl のサブルーチンを JavaScirpt プログラム側から呼べる関数として与えた中で JavaScript を実行できるのでいろいろ遊べるようになる。 ただこれだと、Perl で書いちゃった方がよっぽど楽。


[ 12月11日全て ]

2007年1月8日 (月)

iCalendar 形式経由でスケジュールを社内 Blog に表示 このエントリーを含むはてなブックマーク

仕事用に Skype 名を作成し、ついでに社内 BlogSkype ボタンを貼りつけてログイン状態を表示できるようにしてみた。

そういえば電話もそうなんだけれど、本社に連絡を取るとき「もしかして会議中?」などと勘繰ってかけるかどうか迷ってしまうことがある。 かけたい人の予定がわかればいいのになと。

ならば逆もしかりだろうということで、自分の仕事のスケジュールを晒してみようと思いついた。 グループウェアとかそういうのは大袈裟なので、まずは社内 Blogサイドバーに表示するようにしたい。

ということでこの3連休に実装してみた。

@ 構成

@ 入力

完全なスケジュールはほぼ日手帳に手書きで管理しているので、ミーティング・外出など晒しカテゴリのイベントだけを、電子化する必要がある。 手で HTML 毎回ごりごり書き直すのも嫌なので、スケジュール管理ソフトを使いたい。 この部分は KDE の KOrganizer を使うことにした。

@ サーバへアップロード

で、KOrganizer のスケジュールを iCalendar 形式でエクスポート。 このファイルを社内 Blog を配信しているサーバに rsync で転送。

この処理はちょっと手間なので自動化したいところ。

@ 社内 Blog 内表示用 JavaScript Include ファイル生成 CGI プログラム

この iCalendar 形式ファイルを読み込んで、今日以降の10件(程度)を HTML フラグメントに変換し JavaScript プログラム (document.write() 列) として出力する Perl CGI プログラムを作成。

iCalendar の形式の読み込みについては Data::ICal や iCal::Paraser などの Perl モジュールを利用できる。 今回はシンプルに使えそうな iCal::Parser をチョイス。 基本的には

 use iCal::Parser;
 my $parser = iCal::Parser->new;
 my $calendar = $parser->parse($ics_file_name);

で読み込んだデータがハッシュリファレンスとして $calendar に設定される。 イベントは $calendar->{2007}->{01}->{01}->{$uid} のように「年、月、日、イベントUID」のハッシュ階層として格納されているので、これを読み出せばよい。

@ 社内 Blog サイドバーに表示

で、この CGI プログラムが生成する JavaScript プログラムをサイドバーJavaScript Include

まずは表示までできるようになった。

これで

をまとめて公開できる社内 Blog にアップグレード。

おいおいスケジュールの表示デザインとかは改良していきたい。 hCalendar 形式にして CSS でデザインするのがいいのかな。


[ 1月8日全て ]

2007年2月9日 (金)

XAMPPWiKicker を動かしてみた。PPM インストール OK。 このエントリーを含むはてなブックマーク

Perl で書いた Web アプリケーションのポータブルな Win32 デモ環境として XAMPP を使ってみるとどんな感じになるか試してみた。

使ったバージョンは以下。

(http://www.apachefriends.org/jp/xampp-windows.html)

@ C: ドライブで試す

それぞれ 自己解凍型 7-ZIP アーカイブをとってくる。 最初に XAMPP を展開し、次にその xampp ディレクトリの中で Perl アドオンを展開。 xampp ディレクトリを c: の直下に移動する。

次にコマンドプロンプトを開き c:\xampp\perl\bin へ移動後 ppm コマンドを起動して作成済みの PPM パッケージインストールする。 インストール先は \xampp\perl 以下とドライブ無しのパスで指定されているようで、問題なく必要な Perl ライブラリをインストールできた。

次に \xampp\xampp-control.exe を実行して GUI 管理ツールを立ち上げ、その画面から Apache を起動。 普通の Win32Apacheインストールしてある PC だったため、xampp-control から Apache を起動したらそちらが立ち上がってしまったが、これは Svc にチェックが入っていたからだった。Svc を外せば \xampp 以下の Apache がきちんと起動する。

あとは \xampp\htdocs 以下で WiKicker CGI プログラムの配置や設定ファイルを作成すれば OK。 もともと WiKicker は相対パスだけで動くようになっている*1ので、問題なく実行することができた。

*1多分

@ 他のドライブに移す

一度セットアップできた \xampp ディレクトリを TrueCrypt 仮想ドライブにコピーして起動してみた。

こちらも問題なく OK。

ということで XAMPP でお手軽に Perl CGI プログラムの動く Web サーバ環境を作れることを確認できた。

問題があるとすれば XAMPP + Perl アドオンが馬鹿でかいところか。400MB オーバー。 今回何が一番時間がかかったかって、XAMPP + Perl アドオンを展開した直後の xampp ディレクトリを、後でまた使えるように 7-ZIP の最高圧縮する処理に時間がかかった。 使っている PC では 50分以上かかったよ。


[ 2月9日全て ]

2007年4月7日 (土)

携帯電話(iモード)から Twitter を更新する このエントリーを含むはてなブックマーク

Twitter をいろいろ遊んでみて「やはり携帯電話から更新できないと」と思えてきた。

携帯電話からメールを送る事で Twitter にアップデートをかけてくれるゲートウェイを設置できれば一番いいのだけれど、そのようなメールアドレスを作る場所が今はない(さすがに会社のサーバはまずい)。

ということでiモードから更新をかけられるように短い CGI プログラムを書くことにした。 CPAN には Net::Twitter という Perl モジュールがあるのだが、JSON::Any (と JSON::XS / JSON / JSON::DWIW / JSON::Syck のどれか)が必要で、ちょっと大げさなので今回は使用は見送り。 普通に CGI.pm と LWP::UserAgent で書いた。

 #!/usr/bin/perl -w

 use 5.005_03;
 use strict;
 use CGI qw(-no_xhtml);
 use Jcode;
 use LWP::UserAgent;

 my $query     = CGI->new;
 my $user_name = $query->param('u');
 my $password  = $query->param('p');
 my $status    = $query->param('s');

 $user_name = '' unless defined $user_name;
 $password  = '' unless defined $password;
 $status    = '' unless defined $status;

 my $message = '';

 if ($user_name ne '' && $password ne '' && $status ne '') {
   my $ua = LWP::UserAgent->new;
   Jcode::convert(\$status, 'utf8', 'sjis');
   $ua->credentials('twitter.com:80', 'Twitter API', $user_name, $password);
   my $request = $ua->post('http://twitter.com/statuses/update.json',
                           {status => $status . ' '});
   if ($request->is_success) {
     $message = '<p>OK</p>';
   }
 }

 print $query->header(-type => 'text/html', -charset => '');
 print '<html><head><title>Twitter update</title></title><body>';
 print '<form method="post" action="twitter">';
 print 'ユーザ名:',   $query->textfield('u'),      '<br>';
 print 'パスワード:', $query->password_field('p'), '<br>';
 print 'ステータス:', $query->textfield('s'),      '<br>';
 print '<input type="submit">';
 print '</form>';
 print $message;
 print '</body></html>';

とりあえずこれで、iモードから送信できることを確認。 パスワードの入力が面倒だけれども、サーバ側に書いておくのも嫌なので毎回送ることにした。FOMA 端末側には定型文として保存しておく以外にいい手はないのかな。

最初うまく送れなくてなんだろうと思ったが、あきやん氏の「Twitterで日本語を入力する方法 (akiyan.com)」の記事にある

  • 全て全角文字で入力して、最後に半角スペースをいれる
  • 半角全角を混在させるときは、半角文字と全角文字の間にスペースをいれる

といった日本語を入力する際の注意点がらみだったようである。 とりあえず CGI プログラムの方で最後に必ずいわゆる半角空白を追加するようにしておいた。

文字数チェックとか Twitter API の返り値チェックとか、改善すべきところはいろいろあるけれど、自分用にはまずこれでいいかな。

気が向いた時に外出先から更新かけます。


[ 4月7日全て ]

2007年7月26日 (木)

携帯電話からの Twitter 投稿に tmitter を使ってみることにした このエントリーを含むはてなブックマーク

FOMA から Twitter に投稿する際にはとりあえず、自作 CGI プログラム(記事)を使っている。 これはこれでそこそこ使えるのだが、以下の点でちょっと不便であった。

  • iモード接続したり切ったりするのが面倒
  • 投稿の際まず入力フォーム画面を表示する必要があるのだが、電波状況が良くないと時間がかかったりして嫌
  • submit のレスポンス待ちでタイムアウトすると、送れたかどうか判断できない (*)

(*) なんかはまあきちんとプログラム書けばいいのだけれども、そこまでするのも大変だったりする。

やはりメール投稿ができると便利そう。

Twitter 関連サービスは認証情報が不安で使ってこなかったんだけれども、まあ実は普段使っている Firefox 拡張機能 TwitBin って Tweetbar などと違って実はパスワードhttp://www.twitbin.com/ に送ってしまってたりするので、最近まあいいかなと思えるようになってしまった (アマリヨクナイ)。

ということで tmitter を使ってみることにした。 昨晩登録しておいて、今朝1発目投稿。

やはり投稿画面を取得する必要がないと楽でいいな。 投稿メールアドレスや、自分への Bcc を設定したメールテンプレートを作っておけばささっと投稿できる。

いいかも。しばらく使ってみよう。


[ 7月26日全て ]

2008年4月6日 (日)

Twitter を使い始めて1年 このエントリーを含むはてなブックマーク

Twitter を使い始めてから1年が経った。

飽きずに使ってきたのはやはり API が公開されていて、いろいろ遊べるからだと思う。

@ 1年間の活動

@ 2007年04月06日 Twitter のアカウントを作成して、今何をやっているかを晒す

全てはここから!

Twitter は 100SHIKI.COM では で12月31日に紹介されている。2007年の3月頃から流行りはじめた頃に始めてみた。

日本語を正しく通すにはちょっと工夫をする必要がまだあった頃。

@ 2007年04月07日 携帯電話(iモード)から Twitter を更新する

2日目には投稿用 CGI プログラムを作成。tmitter を使い始めるまではケータイからはこの自作 CGI プログラムで投稿していた。

Twitter はやはりケータイからも投稿できた方が楽しい。

@ 2007年04月13日 クリッピングに便利な CMS 「Tumblr」を使ってみる

同じ頃に Tumblr も試してみている。Twitter のフィードを食わせているけれど、放置状態。

@ 2007年07月26日 携帯電話からの Twitter 投稿に tmitter を使ってみることにした

メールベース。tmitter サービス提供終了のアナウンスがあったので、その後 MovaTwitter 移行した。

tmitter 自体はその後サービス継続されることになり今も利用可能。

@ 2007年07月30日 tmitter サービス提供終了ということで MovaTwitter に移行

MovaTwitter 使用開始。今もケータイからはコレ。便利。

@ 2007年08月16日 半分は Twitter のためにパケ・ホーダイを契約

MovaTwitter のためにパケ・ホーダイ契約。このパケ・ホーダイ契約がきっかけで、各種ケータイサービスを活用するようになった。

@ 2007年08月16日 Gmail のチャット機能で Twitter ステータスを記録

今は特定の人のみ IM に流れてくるように Notifications 設定して、アラート的に使っている。検索は「Twitter 検索」で足りるので履歴としては活用していない。

@ 2007年08月17日 Twitter の自分のステータスログを「はてなRSS」のメール通知で保存

今も継続しているけれど、履歴を見ることはほとんどないな。 いや、今日の記事まとめにはちょっと役に立った。

@ Twit 0.93 入れてみた

タイムラインのざーっと見るのに便利でしばらく使っていたんだけれど、その後 Linux 上で P3:PeraPeraPrv 常用するようになってから起動しなくなった。

良い Twitter クライアント。

@ 2007年11月09日 Twitter ステータスを nDiki サイドバーに表示

継続して nDiki に表示中。ちらっとぐらいは見る人がいるのかな?

@ 2007年11月21日 P3 から初ポスト

P3:PeraPeraPrv 使用開始。

今では MovaTwitter と合わせて一番使う Twitter クライアント。

@ 2007年11月23日 最近の Twitter ステータスを nDiki 「最近のさえずり」ページに自動表示

ダイジェスト記事「今日のさえずり」を書くのに、自分用として便利に使用中。

@ 2007年12月29日 Twitter ベイジアンフィルタプロキシ

作ってしばらく試したけれど、学習がどちらかに偏りがちなので使わなくなってしまった。

@ 2008年02月22日 Twitter にケータイ写真を流すのに twitterfeed を使う

継続中。Flickr写真アップロードして、twitterfeed によって Twitter にアナンスすると 20 view ぐらい見てもらえる感じ。

@ 2008年02月25日 Twitter への書き込みを自動的に Skype ムードメッセージに設定する

継続使用中。Skype のコンタクトはあまり多くないので、今のところ同僚向けに晒しているといった感じ。

@ 2008年03月13日 Twitter のアイコンを Perl スクリプトで更新する

現在も稼働中。

@ 2008年03月13日 Flickr の写真を自動的に Twitter アイコンにする

現在も稼働中。twitterfeed での Flickr 写真アナウンスとあわせて、いい感じにアイコンが入れ替わるのでいいと思う。

@ 2008年04月04日 MAILPIA による Twitter チェック

最近始めたケータイへのメール通知。様子見中。


[ 4月6日全て ]

■よく検索されるキーワード

torrent(142) expressions(72) 書き方(46) 竹内まりや(46) perl(42) 提案書(38) linux(38) windows(36) アジェンダ(34) x31(32) cvs(28) wiki(27) usb(26) ドラマ(22) 使い方(20) svn(20) アジェンダとは(20) centos(20) ganttproject(20) 設定(19) java(19) インストール(18) 秋葉原(18) debian(18) thinkpad(18) サンプル(18) 動画(17) ノート(15) 手帳(13) a6(13) truecrypt(13) tc-1(13) tortoisesvn(13) 無印(12) ssh(12) rcs(12) subversion(12) 冷蔵庫(12) nikon(12) allinanchor:*.torrent(12) firefox(11) ガントチャート(11) 画像(11) 日本語(11) 生年月日(11) apache(11) メール(11) ダイソー(10) 無料(10) 壁紙(10) リフィル(10) ubuntu(10) 作り方(10) dropbox(10) c#(9) xp(9) oracle(9) xampp(9) terastation(8) 方眼(8) マイク(8) ヨドバシカメラ(8) テンプレート(8) ほぼ日(8) cwrsync(8) google(8) ming(8) 評判(8) 影舞(8) madwifi(8) アカウント(8) window(8) usbメモリ(8) gantt(8) project(7) 三条まゆみ(7) hdd(7) 変換(7) カバー(7) 交換(7)

この日記のはてなブックマーク数 Add to Google RSS

Process Time: 0.262439s / load averages: 0.86, 0.81, 0.88
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)