nDiki : CGI プログラム
Related term
2005年5月10日 (火)
■ iモードHTMLシミュレータ Version 7.2

iモード向けの簡単なCGI プログラムの開発を社内で頼まれているので、動作・レイアウト確認用にシミュレータを探してみる。
あら、NTTドコモで配ってらっしゃる。 ということでダウンロード。昔633S用につくったiモード向けページなどを閲覧してみる。
機種別のプロファイルのようなものはなくて、自分で画面サイズやiモード対応HTMLバージョンの選択をしてあげる必要があるけれど、HTTPヘッダのチェックやHTMLのソース表示、文法チェック機能などがあり今回はこれで充分いけそうだ。
- 私的10大ニュース2005 [ comp ] (2005-12-31)
- 22:00 画像サイズと名前 (2002-01-20)
- GanttProject で開発スケジュールを作成 (2004-08-26)
- 15:00 妻、N503iS 新規契約 (2001-12-08)
- 633S ファーストインプレッション (2001-12-10)
2005年5月12日 (木)
■ iモード向けの簡単なCGI プログラムで CGI::Session を使う

簡単なユーザ認証のある、iモード向けデータ入力CGI プログラムを作成。
当初ホスティングサービスのサーバ上に置くつもりだったので CGI.pm だけでちまちまと書いてみた。データは hidden で持ち歩けばいいかと思ったが、コーディングしているうちにiモード端末の制約などもあって面倒になってきた。
ということで融通のきくサーバを前提として CGI::Session を利用するように作成変更。セッションオブジェクトにデータを置くようにしたら、急に楽になった。 やっぱり hidden は無理があるな。
- 携帯電話(iモード)から Twitter を更新する (2007-04-07)
- 携帯電話からの Twitter 投稿に tmitter を使ってみることにした (2007-07-26)
- ケータイ用にプライベート Wiki を設置 (2008-01-07)
- 一般ユーザで Apache 2.0 を起動する最小限の httpd.conf (2006-07-15)
- iモードHTMLシミュレータ Version 7.2 (2005-05-10)
2005年9月12日 (月)
■ nDiki のコメント欄にコメントスパム

更新チェックをしたら、nDiki にコメントが入っていたので「どれどれ」と見てみる。
うぎゃー。
丁度攻撃を受けているところやんけ。
NaneyOrgWiki にもリンクスパムな書き込みがちょくちょくあるのだが、幸い絨毯爆撃的なものは受けていない。 今回もそんな感じでたかだか数十回ぐらいの書き込みだろうと、.htaccess で接続元のIPアドレスを deny しつつコメントを消していく。
……はっ、速い。
追いつかん。終わらん。
マジ攻撃ですか。IP アドレスもかなり散らしてきてますか。 あきらめて、CGI プログラムを移動して書き込みできないように。
その後もしばらく連続アクセスがあったが、途中で気がついたのか止まった。
ということで、現在一時的にコメントの全文表示・新規不能状態。
くっつき BBSを使っているのだが、まさかこれが攻撃されるとは。 そろそろ DiKicker 自体にコメント機能を直接実装しようとしていたところだったのだが、いろいろ対策を打たないといけないと思うと萎えるなあ。
- サーバ高負荷状態につき DiKicker 機能修正とサーバ設定変更 (2006-03-03)
- [ Perl ] Log::Log4perlのはまりどころ (2004-03-02)
- DiKicker にそろそろコメント機能を実装するか (2005-01-26)
- mixiに登録 (2004-11-19)
- Rubric でプライベート SBS を立てるも 0.140 では日本語に不具合 (2006-07-22)
2005年10月1日 (土)
■ mixipress でコミュニティ掲示板もチェック

この週末 mixi で遊びのついでに mixipress も試してみることにした。
mixipress はPerlで書かれたCGI プログラムで、アクセスするとmixi にログインして「最新のマイミクシィの日記・参加しているコミュニティのBBSへの投稿・以前コメントした日記・日記へのコメント・メッセージ・足あとのダイジェスト」を含むRSSを返してくれる。
ローカルの Apache に mixipress 0.31 をインストール。 0.31 が出た後、 mixi 側で URL の変更があったのでそれに対応するように一部正規表現を修正。
で Sage でアクセス。 ふむふむ、これだと面倒で見ていなかった掲示板のチェックも楽だ。
- Debian に RSS リーダ「フレッシュリーダー」をインストール (2006-03-06)
- m4s tkh再会新年会 (2005-01-06)
- mixi のプロフィールをランダム更新 (2005-09-30)
- [ 日記 ] SpeedyCGI による、同時処理数制御 (2004-01-20)
- 今日のさえずり - 「はてなMobileGateway」かましてから、OK... (2008-01-03)
2006年2月18日 (土)
■ Perl CGI プログラムのテストには WWW::Mechanize::CGI を

CGI プログラムを書いていて、いつも困るのがリグレッションテスト。
パッケージのビルド時に実行するテストスーツ (make check / make test 用テストプログラム群) に含めておきたいが、さすがにその場で Web サーバの下へセットアップするわけにもいかない。 ミニ Web サーバを同梱してテストスーツ内で起動する方法はちょっとおおがかかりだし、ポート番号の選択やらサーバの停止の問題もあって、かなり面倒。
結局、テストスーツの中で環境変数や標準入力など CGI リクエスト環境をセットアップして、CGI プログラムを実行するという王道(?)かつ泥臭いテストを書くことになったりする。
何かいいものはないかと探していたところ、WWW::Mechanize::CGI というものをみつけた。
LWP::UserAgent を継承した WWW::Mechanize モジュールは Web ブラウジングを容易にする有名どころのモジュールである。
WWW::Mechanize::CGI モジュールはさらにこれを拡張したモジュールで、HTTP リクエストを、仮想的に CGI プログラムやサブルーチンへの呼出しにしてくれる。 これを用いるとあたかも Web サーバ上の CGI プログラムにリクエストしレスポンスを受けとっているかのように、テストプログラムを書くことができる。
素晴しい。
さっそく WiKicker のテストを書き換えてみた:
use Test::More tests => 2;
use WiKicker::WikICGI::Controller;
use WWW::Mechanize::CGI;
use File::Temp qw(tempdir);
use File::Spec;
my $www_dir = tempdir(CLEANUP => 1);
my $mech = WWW::Mechanize::CGI->new;
$mech->cgi(sub {
$ENV{PATH_INFO} = '' if $ENV{PATH_INFO} eq '/';
WiKicker::WikiCGI::Controller->new->run});
$mech->env($mech->env,
SCRIPT_FILENAME => File::Spec
->catfile($www_dir . '/wiki'),
SCRIPT_NAME => '/wiki');
my $response = $mech->get('http://localhost/wiki');
ok($response->is_success);
like($response->content,
qr|<title>WikiForum\[WiKicker\]: FrontPage</title>|);
WWW::Mechanize::CGI オブジェクトを new した後、cgi メソッドで CGI サブルーチンを指定するか、cgi_application メソッドで外部 CGI プログラムを指定する。 ここでは直接、CGI サブルーチン (WiKicker::WikiCGI::Controller->new->run を実行)を指定した。
なおここで WWW::Mechanize::CGI が使っている HTTP::Request::AsCGI 0.5 における PATH_INFO の扱いが Apache などとは違って、空でも必ず '/' が入るようになっている。 これだと WiKicker では困るので、サブルーチンのところで修正している。
後は必要ならば WWW::Mechanize::CGI::env で、追加の環境変数設定を行っておく。
セットアップが済めば通常の WWW::Mechanize と同様に get 等でリクエストを行いレスポンスを受けとることができるようになる。
いい。しばらく試してみて不具合がなさそうなら、定番のテストスタイルにしたい。
ちなみに Test::Harness 用の Test::WWW::Mechanize にあわせて、Test::WWW::Mechanize::CGI というものもある。 これらを用いるとさらにテストを書くのが楽になるが、依存するモジュールも多いので無理に使わないほうがいいかもしれない。
- Test::WWW::Mechanize で Web アプリケーションをテ... (2006-09-13)
- 一般ユーザで Apache 2.0 を起動する最小限の httpd.conf (2006-07-15)
- 他の Web サイトの情報を URI::Fetch でキャッシュ付き取得 (2005-10-29)
- CGI プログラム、Out of memory! に泣く (2001-01-04)
- [ WiKicker ] 「最近のアクセスログ」処理思案 (2004-01-17)
2006年3月3日 (金)
■ サーバ高負荷状態につき DiKicker 機能修正とサーバ設定変更

www.naney.org をホスティングしているサーバが重いと思ったら、同じサーバ上のあるユーザの CGI プログラムが5プロセス無限ループしてるっぽい……。 load average 20前後。
あおりを受けて、nDiki が大変なことになっている。
nDiki は SpeedyCGI を使っているのだが、バックエンドの speedy_backend が捌ききれず、フロントエンドの speedy が大量に待ちに入ってしまっている。
MaxBackends を調整しても駄目(下手にバックエンドプロセス数を増やしても、結局処理が追いつかない)。
ということで急遽対策。
@ 高負荷時にはてなブックマークへのアクセスを停止
load average が高い時には、はてなブックマーク上の検索結果を表示させるために行なっているはてなブックマークへのアクセスを休止するように変更。 24時間に設定してあるキャッシュの有効期限が切れていても、高負荷の時にはアクセスにいかないようにする。
これで DiKicker の処理時間を短縮。相手側サーバへの負担も軽減。
@ Google Desktop からのアクセスを一時的に拒否
おかげ様でここ最近 nDiki の RSS へのアクセス数が増えてきている。 ありがたい事である。
しかしながら DiKicker の RSS レスポンスは、あまり賢くなく毎回データベースから最新記事情報を抽出して生成しているため、それほど処理が速くない。
なのでアクセス頻度を高くしている RSS リーダがどこかで同時に起動しているとちょっとしんどい。 特にここ最近 Google Desktop からのアクセス数が増えている感じ。
さすがに今日はサーバの負荷が高く処理が追いつかなくてどうしようもないので、一時的に Google Desktop を拒否することに。
.htaccess に設定を追加。
BrowserMatch "Google Desktop" denybrowser deny from env=denybrowser
近日中に、RSS 処理を改善してすぐに解除する予定。
@ robots.txt に Crawl-delay: を追加
効果があるかどうかは不明だが、Crawl-delay: に対応するというクローラ (Slurp、msnbot) 向け設定を追加。
User-agent: Slurp Crawl-delay: 20 User-agent: msnbot Crawl-delay: 20
アクセス数としては Googlebot と Slurp がダントツ。 しかし Google は無下にする訳にもいかないしなぁ。
- [ Perl ] Log::Log4perlのはまりどころ (2004-03-02)
- さらにサーバ負荷状態悪化。対応に追われる。 (2006-03-04)
- www.naney.org サーバ断続的にダウン (2006-04-30)
- [ WiKicker ] SpeedyCGI 対応するも…… (2003-11-09)
- Rubric でプライベート SBS を立てるも 0.140 では日本語に不具合 (2006-07-22)
2006年4月30日 (日)
■ www.naney.org サーバ断続的にダウン

朝 www.naney.org の過去記事を確認しつつ作業をしていたら、9:00 前に急にアクセスできなくなった。 ping も通らない。 9:20 ぐらいに 1度復帰したが、また10:00 前にダウン。
それから何度も落ちては復帰を繰り返すようになってしまっている。 SSH で接続している途中にも突然刺ささるし、傍から見ていても原因が良くわからない。
昨日 WiKicker をアップデートしたから「もしかしてうちが原因?」とちょっと心配もしたりするのだが、無限ループに入ったりメモリを使い尽すようなコードが追加してはいないはずだしなぁ(ローカルでのテストではそのような現象は見られない)。
落ちる直前まで見ていてもそれほど load average が高いわけでもないようだしなぁ。
とまぁ、しばらく様子を見ているうちに NaneyOrgWiki と nDiki が Internal Server Error。 止められた。 正確には SpeedyCGI のフロントエンド speedy コマンドの実行権限を管理者に落とされた。
- (大半はロボットによるものなのだけれども) NaneyOrgWiki と nDiki のどちらか(あるいは両方)に常にアクセスがあってスクリプトが動いている
- top すると他のユーザの CGI プログラムは 'perl' か 'perl 5.00503' と表示されるのに対し、これらは speedy、speedy_backend と表示されるため、管理者の目を引きやすい
ということもあって疑われたと推測。
一応こちらでも SpeedyCGI を使わないで直接 Perl で実行するように変更してみたり、Memcached を起動するのをやめてみたりなど設定を変更してみたりするのだけれど、関係なく落ちる落ちる。
管理者がシステムの設定を変えていないで発生するようになったのなら、ハードウェア障害が起きているんじゃないかと想像してしまうのだが、実際どうなんだろうか。
結局夜 23:00 過ぎだかに落ちたあとは復帰する様子がないので(管理者が落ちたかな?)、今日はあきらめ。
- [ Perl ] Log::Log4perlのはまりどころ (2004-03-02)
- サーバ高負荷状態につき DiKicker 機能修正とサーバ設定変更 (2006-03-03)
- [ WiKicker ] 「最近のアクセスログ」処理思案 (2004-01-17)
- [ WiKicker ] Memcachedのメモリ使用量 (2004-02-15)
- サーバの負荷が高くなったら DiKicker が 503 を返して沈静化を... (2007-04-05)
2006年5月28日 (日)
■ WiKicker 0.31 リリース - s キー問題を修正

2006年5月22日以来、約1週間ぶりのリリース。
- Internet Explorer から編集画面で s を押すとプレビュー画面になってしまう問題を修正。
- image、limage、 rimage スキーマで画像 URL を相対参照した場合、CGI プログラムをベース URL とみなして絶対パスを求めるように改良。
- Windows 上での Apache 2.0.53 では PATH_INF... (2005-04-10)
- Hyper Estraier で社内 Web コンテンツ検索 (2006-06-01)
- mapperl.pl (2002-01-22)
- WikiPage 編集画面で Ctrl+S を押すとプレビューするようにしてみる (2006-04-29)
- WiKicker に Flickr 関連機能追加 (2005-02-11)
2006年6月1日 (木)
■ Hyper Estraier で社内 Web コンテンツ検索

昨日の自分のノート PC で Hyper Estraier の試用を踏まえて、社内のサーバに Hyper Estraier を設置する。
@ インストール
いまだ Red Hat Linux 8.0 であるサーバに、昨日と同様に Hyper Estraier 1.2.7 を /usr/local/hyperestraier-1.2.7 以下にインストール。
この環境では ./configure 時に iconv が見つからないため、最初に libiconv 1.9.2 を /usr/local/hyperestraier-1.2.7 に入れ、続けて QDBM、Hyper Estraier の順にインストール。
estwaver + estmaster でクローリング + 文書登録も問題なく完了。
@ search_ui がうまく動かない。
で検索をしようと http://ホスト:1978/node/ノード名/search_ui にアクセスするも、検索フォームを含め何も表示されない。あれ? 他の管理ページは問題なく表示されるのに search_ui だけ駄目。
GNU Wget だときちんと HTML を GET できるのだけれど、Firefox や Internet Explorer からだと駄目である。
いろいろビルドしなおしてみたけれどやっぱり駄目なので、今回は結局 estmaster をやめて CGI プログラム版の UI を使うことにした。 こちらだとクローリング中は検索ができなくなってしまうけれど、夜中に cron で回すから別にかまわないか。
@ インデックスの方針
以下のような感じでクロールし、登録することにした。
- 社内メイン Wiki、自分の社内 Blog、公開 Web サイトのトップページをクロールの種文書とする。
- それと社内メイン Wiki の更新情報ページも種文書とする。
- 社内のサーバ、および公開 Web サイトのみクロールするように allowrx、denyrx を設定。
- Wiki の編集ページ等をクロールしないように denyrx を設定。
- 1日1回深夜に cron でインデックスを更新。
- revisit は3日に設定。
- いくつかの種文書は -revcont 付きで estwaver を実行しても毎回巡回して欲しいのだけれど、それはいまのところできないようだ。
特定の Wiki や Blog 内のみを検索したい時は、検索インタフェースの方で URL を指定絞り込めば良いので、それほど規模も大きくないし全部ひとまとめにインデックス化することにした。
後は使いながら微調整していくこととしよう。
- Debian GNU/Linux に Hyper Estraier 1.2... (2006-05-31)
- Rubric でプライベート SBS を立てるも 0.140 では日本語に不具合 (2006-07-22)
- Linux で使えるデスクトップ検索ツール Beagle でローカルファイ... (2006-08-08)
- はいぱー日記システムで日記を開始 (2001-05-11)
- Debian に RSS リーダ「フレッシュリーダー」をインストール (2006-03-06)
2006年6月11日 (日)
■ WiKicker 0.34 リリース - 添付機能のコードを追加

2006年6月8日以来、3日ぶりのリリース。
zakwa 氏からの要望により、WikiPage のコピー直後に編集画面に移れる edit now オプションを追加。
また大きな改良として「添付機能」を追加した。 まだ最初のコードなのでエラー処理等が甘いが、それなりに動いているのでコミット。 まだ権限設定がないので、公開サーバでは使用しない方が良い。
添付ファイルのダウンロードを WiKicker 本体の CGI プログラムから行わせるか、独立の CGI プログラムにするか迷ったが、結局別物にした。
というのが大きな理由。
@ 設定方法
WiKicker のページにまだ設定方法を書いていないので、こちらへ。
@ attachment CGI プログラムを設置
例えば attachment というファイル名で以下のような Perl CGI プログラムを作り、Web サーバから実行できるように設定を行う。
#!/usr/bin/perl use strict; use warniings; use WiKicker::WikiCGI::AttachmentController; WiKicker::WikiCGI::AttachmentController ->new(properties_file => '対応する wiki の設定ファイル名')->run;
@ Wiki のプロパティに設定を追加
次に Wiki の設定ファイルに以下を追加。
param.NormalPage.attachment: enable param.NormalPage.attachment.uri: attachment
param.NormalPage.attachment.uri には上で作った CGI プログラムの URI (相対/絶対)を指定する。
これで各ページに attachment (添付)というリンクが表示され、添付機能が使えるようになる。
@ WikiPage での参照の仕方
# リンクを作成 [[attachment:ファイル名]] [[attachment:ページ名/ファイル名]] <- 別のページの添付ファイル # 画像をインライン表示 [[image:attachment:ファイル名]] [[image:attachment:ページ名/ファイル名]]
- Windows 上での Apache 2.0.53 では PATH_INF... (2005-04-10)
- Perl CGI プログラムのテストには WWW::Mechanize::... (2006-02-18)
- WiKicker における PageName 最長文字数 (2006-06-10)
- WiKicker 0.35 リリース - 添付機能の修正など (2006-06-20)
- XAMPP で WiKicker を動かしてみた。PPM インストール OK。 (2007-02-09)
スポンサード リンク
■よく検索されるキーワード
torrent(109) x31(45) thinkpad(31) 動画(29) 提案書(26) mp980(24) 手帳(24) windows(23) linux(23) 画像(21) 使い方(21) リフィル(21) debian(20) usb(20) tc-1(19) perl(19) 筆まめ(18) 壁紙(17) ほぼ日手帳(16) 冷蔵庫(14) ドラマ(13) wiki(13) 書き方(12) ダイソー(12) システム手帳(12) 宮根誠司(12) ノート(11) so905ics(11) 無印(11) バッグインバッグ(11) 映画(11) 設定(10) 修理(10) 宮根(9) ssh(9) a6(9) ほぼ日(9) 黒田征太郎(9) バッグ(9) gmail(8) 感想(8) 娘(8) f-01a(8) メモリ(8) gtd(8) ブログ(8) nikon(8) allinanchor:*.torrent(8) ボールペン(7) 方眼(7) ポイント(7) 4c(7) ヨドバシカメラ(7) ケース(7) twitter(7) apache(7) ht-01a(7) ヨドバシ(7) ubuntu(7) truecrypt(7) n-02a(7) 作り方(7) minolta(7) af(6) インストール(6) ガントチャート(6) mp3(6) zippo(6) hdd(6) emacs(6) レビュー(6) カバー(6) vq1005(6) 日本語(6) ハクキンカイロ(6) 無印良品(6) グレゴリー(6) 交換(6) nikkor(6) pixus(6)■注目キーワード
購入 買った 発売日 フリー 無料 価格 値段 作り方 選び方 使い方 方法 設定 サンプル ダウンロード 限定 在庫 予約 穴場 比較 検証 レビュー 感想 評価 評判 使用感 使ってみた 口コミ 噂 最新 MP3 動画 意味 お薦め お勧め おすすめ 便利 Blog ブログ mixi 修理 デザイン ビックカメラProcess Time: 0.339089s / load averages: 0.26, 0.40, 0.32
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)



スポンサード リンク