nDiki : CGI

CGI: The Common Gateway Interface

CGIとはHTTPサーバなどの情報サーバから外部ゲートウェイプログラムへのインタフェースの標準のこと。

CGI に準拠しているプログラムを CGI プログラムと呼ぶ。

CGI - Computer Generated Image

Computer Generated Image の略。

2008年12月25日 (木)

PlaggerTwitter のあれこれをメールで通知

Twitter 上で要チェックなポストは、今年の4月から MAILPIAケータイメール通知するようにしていた(記事)のだが、最近メールが届かなくなってしまった。 フィードを変更してみたりメールアドレスを変えてみたりしたが駄目。 他に良さそうなフィードメール通知サービスが無さそうだったので Plagger を使うことにした。

Plagger は以前途中までインストールしようと思ったのだが、依存 Perl モジュールが多くて途中でやめてしまった。 今回は目的があってインストールするので、頑張ってインストールした。

インストールするホストに libxml2 と OpenSSL が無くて必須モジュールが入らなかったので、これを別途インストール。 PlaggerSubversion リポジトリの trunk をチェックアウトしてインストール。 依存 Perl モジュールCPAN から。

ケータイ向けにテキスト形式のメールを送る Publish プラグインWeb で見つけたものを流用。まずは以下の3つレシピcron で 10分毎に実行するように設定した。 メールは基本的に Gmail アカウントに送ってフィルタでケータイに転送。 うまくいっている感じ。

Twitter リプライをメールで通知

PlaggerTwitter にログインして replies API にアクセスするようにもできるけれどパスワードを書いておきたくないので、先月作成した CGI スクリプト(記事)経由で取得することにした。

  [Twitter]
    ↑
  [replies.atom さらし CGI スクリプト]
    ↑
  [Plagger (cron で 10分毎)]
    ↓
  [Gmail]
    ↓
  [ケータイ]

指定した Twitter-ers のポストのメール通知

Plagger で直接各 Twitter-ers のフィードを取ってこれるけれど、10分毎にアクセスするほどでもないので、Google リーダーTwitter-ers のフィードをフェッチさせてタグでたばねて公開したフィード経由で取得することにした。

Plaggerレシピをいじらないで Google リーダー上で Twitter-ers を追加・削除でき、Google リーダーでもポストを読めるというのが利点。 ポストが少ない Twitter-er のフィードは Google リーダーが巡回頻度を下げるのでタイムラグが大きくなることがあるのが欠点。

 [Twitter]
   ↑
 [Google リーダー]  ← [Web ブラウザ (設定・チェック)]
   ↑
 [Plagger (cron で 10分毎)]
   ↓
 [Gmail]
   ↓
 [ケータイ]

twitter検索結果をケータイにプッシュ

外出先などで、居場所やイベントの情報を Twitter でチェックしたい時がある(役に立つかどうかは別として)。 ケータイから定期的に検索かけるなんてありえないので、メールでプッシュしておいて(気がむけば)読むぐらいにしておきたい。 キーワードの設定・管理については、操作・サーバ実装とも楽したい。

Twitter 関連ということで頻繁にケータイでアクセスして画面に出ている MovaTwitter を活用したい。 ということで MovaTwitter のクリボーに「アクセス keyword」と書くことで検索キーワードを指定できるように組んでみた。

 [MovaTwitter クリボー] ← [ケータイ (キーワード書き込み)]
   ↑
   ↑ クリボーのフィードを読んでキーワードを取得
   ↑
 [CGI スクリプト] → [twitter検索]
   ↑
 [Plagger (cron で 10分毎)]
   ↓
 [Gmail]
   ↓
 [ケータイ]

いまさらだけれど、Plagger 便利だな。 とっかかり(インストールと概要理解)がちょっと難しいけれど、それを乗り越えてしまえば Perl なんでどうとでもなるという感じ。

[ 12月25日全て ]

2009年12月23日 (水)

www.naney.orgさくらのレンタルサーバへ移転

naney.org メールサーバの移転に次いで、Web サーバの移転作業。

静的コンテンツのアップロード

現行 Web サーバUnisonファイル同期している Web コンテンツを、さくらのレンタルサーバUnisonファイル同期

WiKicker のインストール

nDiki 用に DiKicker (WiKicker) を make install。

 %bash
 $perl -MCPAN -e mkmyconfig
 $perl -MCPAN -e shell
   o conf makepl_arg PREFIX=/home/naney/local/WiKicker
   o conf mbuildpl_arg --install_base=/home/naney/local/WiKicker
   o conf commit
   notest install CGI::SpeedyCGI

 $tar zxvf WiKicker-0.420.tar.gz
 $cd WiKicker-0.420
 $export PERL5LIB=$HOME/local/WiKicker/lib/perl5/site_perl/5.8.9
 $perl Makefile.PL PREFIX=$HOME/local/WiKicker
 $make
 $make install

以前きっちり Module::InstallMakefile.PL を作っておいたおかげで、比較的スムーズにインストールできた(自画自賛)。

ちょっとはまったところは CGI::SpeedyCGI の make test を実行する(される)と SSH 接続がサーバ側から切られてしまうという現象にあったところ。 テスト用に大量にスクリプトが起動されるの検出して自動的に kick されたのだろうか。

.htaccess の修正

さくらのレンタルサーバでは .htaccess Options が使えないようなので削除。 ExecCGI や MultiViews が有効になっているようなので問題なし。

いつくかのスクリプトの修正

Perl 5.005_03 用に書いてあったスクリプトについて、Perl 5.8.9 で文字化けしないように utf8 まわりを修正。

cron 設定

1時間毎に実行したい処理を列挙するシェルスクリプトを1つ作って、コントロールパネルから1時間毎に実行するように設定。

現行サーバでは任意の crontab を設定できたので、1時間毎はちょっと物足りない。 おいおい負荷にならない範囲で、外部から定期的に HTTP アクセスして処理を定期的に実行できるようにもするかな。

DNS 設定変更

まだ動いていないスクリプトもあるけれど(大きいところだと NaneyOrgWiki (Wiki))現行サーバの解約日もせまっているので、サーバ移転させてしまうことに。

VALUE-DOMAINDNS サーバ設定を変更し www.naney.orgさくらのレンタルサーバにアクセスできるように A レコードを変更。

今のところ特に重い等もなく順調。 現行サーバでは深夜非常に重くなる時間帯があったのだが、それが無くなるのが嬉しい。 また容量が100MB*1から10GB*2になったので心理的にセーブしなくて良くなった。

年内に移行できて良かった良かった。


[ さくらのレンタルサーバ プレミアム ]

*1メール等別

*2メール他を含む

今日のさえずり - チョコレート臭のするリップクリーム塗られた

2009年12月22日

  • 09:36 東京水のお父さん若すぎ。娘はいくつの時の子だ?
  • 09:46 今年もビックカメラでカレンダーご自由にお持ちくださいになってるな。これって例年通り1枚もの? 車窓から見下ろしているからよくわかんない。 L:有楽町
  • 11:20 カシオ計算機株式会社の高精度計算サイト keisan で二項分布のグラフチェックしている。このサイト便利だな。 http://bit.ly/6H554E
  • 11:36 やはり結果が二項分布になっていなかったのは毎回 new System.Random().NextDouble() されていたからだな。1つの Random オブジェクトを使うように修正しておく。
  • 12:32 清まる東京ミートレア店のチラシに「住所かけ」と @nyafuru に指示された。
  • 12:34 泣く泣く書いた。 QT @Naney: 清まる東京ミートレア店のチラシに「住所かけ」と @nyafuru に指示された。
  • 12:45 2009年12月18日の歩行: 5898歩、4.54km、51分、5.29km/h、消費 224.9kcal、脂肪燃焼 32.1g、3.3エクササイズ。
  • 12:46 2009年12月19日の歩行: 3750歩、2.88km、34分、5.05km/h、消費 146.9kcal、脂肪燃焼 21.0g、2.0エクササイズ。
  • 12:48 2009年12月20日の歩行: 569歩、0.42km、5分、4.48km/h、消費 21.6kcal、脂肪燃焼 3.1g、0.3エクササイズ。
  • 12:49 2009年12月21日の歩行: 8585歩、6.60km、73分、5.37km/h、消費 337.8kcal、脂肪燃焼 48.2g、5.0エクササイズ。
  • 13:02 今日は窓ガラス清掃の日か。
  • 15:15 何でダイワハウチュなんだ? - デスクトップジーヴォβ http://bit.ly/4n80D1
  • 17:03 歯医者なのでそろそろ会社出ます。
  • 17:27 ヨドバシカメラ同時プリント回収。
  • 18:21 歯医者行ってくる。
  • 18:27 歯医者到着。腹減った。
  • 19:01 歯の定期健診終わり。なんかチョコレート臭のするリップクリーム塗られた。
  • 19:03 少し歯石があるぐらいで良く歯磨きできているとのこと。
  • 19:06 デンタルフロスほとんどサボっていたので気になっていたが問題なし。その事について聞いたらできればしてくださいと苦笑いされた。
  • 24:19 さくらのレンタルサーバWiKicker インストール中。
  • 25:48 さくらのレンタルサーバDiKicker を動くようにした。サーバ移転してもこれでとりあえず nDiki は維持できそう。
  • 25:51 さくらのレンタルサーバCGI::SpeedyCGI を make test すると途中でサーバ側から SSH 接続切断される。テストで大量にプロセスが起動されるのでそれで切断されちゃうのかな。
  • 26:55 寝る。

2009年12月23日

  • 12:47 ヒンジカバー装着。ストレージクリップがとまりにくくなったけど、まずまず。
  • 14:15 これからケーキのデコレーションするよ。
  • 15:13 デコった。 http://movapic.com/...
  • 16:27 ケーキ食べたし次、肉調達してくる。
  • 16:38 今年は近所の肉屋開いてた。ローストチキン確保。
  • 18:52 うちで @nyafuru のスヌーピーアイコンが好評。
  • 24:35 MovaTwitter クリボー(メモ帳) の RSS フィードがいつの間にか無くなっている。利用していたので残念。 #movatwi
  • 24:54 A レコードを変更して Web サーバも新サーバに移行。
[ 12月23日全て ]

2009年12月26日 (土)

今日のさえずり: 今晩は細谷精肉店のきりたんぽ鍋セット

image:/nDiki/Flickr/4228896260.jpg

[ 12月26日全て ]

2009年12月30日 (水)

Net::OAuth を使って Twitter からフィードを取得

Twitter の replies (mentions) をフィードリーダや Plagger で読めるようにするために、Basic 認証Twitter にアクセスしてフィードをとってきてそのまま出力する Perl CGI スクリプトを書いて使っていたのだが、やはり Basic 認証が嫌なので OAuth 認証に書き換えた。

Net::Twitter モジュールだと取ってきたフィードが Perl のデータ構造になってしまいそのまま再度出力するのが面倒なので、Net::OAuth モジュールでリクエストを作って投げるようにした。

以下エラー処理等を省略したコード。

Web サイトに設置すれば(CGI スクリプト側で認証を済ませて)認証無しで replies のフィードが取れるようになるので簡単にフィードリーダで読めるようになる。

 #!/usr/bin/perl -w

 use strict;
 use warnings;
 use CGI;
 use LWP::UserAgent;
 use Net::OAuth;
 use Data::Random qw(rand_chars);

 $Net::OAuth::PROTOCOL_VERSION = Net::OAuth::PROTOCOL_VERSION_1_0A;

 my $consumer_key    = 'YOUR CONSUMER KEY';
 my $consumer_secret = 'YOUR CONSUMER SECRET';
 my $access_token    = 'YOUR ACCESS TOKEN';
 my $access_token_secret = 'YOUR ACCESS TOKEN SECRET';

 my $url    = 'http://twitter.com/statuses/replies.atom';
 my $method = 'GET';

 my $query = CGI->new;

 my $request = Net::OAuth->request('protected resource')->new(
   consumer_key     => $consumer_key,
   consumer_secret  => $consumer_secret,
   request_url      => $url,
   request_method   => $method,
   signature_method => 'HMAC-SHA1',
   timestamp        => time,
   nonce        => join('', rand_chars(ssize => 16, set => 'alphanumeric')),
   token        => $access_token,
   token_secret => $access_token_secret,

   extra_params => {count => '200'});

 $request->sign;

 my $ua = LWP::UserAgent->new;
 my $response;

 if ($method eq 'GET') {
   $response = $ua->get($request->to_url);
 }
 else {
   $response = $ua->post($request->to_url);
 }

 print $query->header('application/atom+xml; charset=utf-8');
 print $response->content;

今日のさえずり - 年賀状作成特設会場とした

rimage:/nDiki/Flickr/4228131129.jpg

2009年12月30日

[ 12月30日全て ]

2010年1月9日 (土)

今日のさえずり: 知らなかったけれどメルセデス・ベンツって CGI エンジン塔載してたりするんだ

  • 11:31 知らなかったけれどメルセデス・ベンツって CGI エンジン塔載してたりするんだ。 Apache とどっちが性能いいのかな。
  • 11:33 @nyafuru 誕生日オメデトウ!
  • 11:33 @nyafuru ミニーのポップコーンいいなあ。うちで羨ましく見てます。
  • 11:38 ロディの iPhone カバーかわいい。
  • 15:06 Rody Store ロディ iPhone 用シリコンカバー http://bit.ly/7YOzeC
  • 15:11 三菱東京UFJ銀行 ATM にある封筒の表が全面「振り込め詐欺にご注意ください!(とイラスト)」になってる。使い回しずらくなったなあ。
  • 15:29 引き出しを整理中。埋蔵金がちょこちょこ出てくる。
  • 15:34 近谷先生退職記念パーティーの招待状が出てきた。そういえばこの時近谷研究室卒業メーリングリスト開設されたんだっけ。
  • 15:42 ピン札ストックも無駄に沢山あることが判明。
  • 15:55 有楽町西武のギフトカードが3000円分でてきた。多分10年ぐらい前の。
  • 15:56 DCギフトカード1000円分でてきた。どこから入手したか不明。
  • 16:07 100%。 RT @coachingbot: 自分の事どれぐらい好きですか?
  • 16:13 我が家ルールにより2年以上経過したレシートを破棄する。
  • 16:28 マザー牧場のレシートが出てきて「アレッ?」と思ったら、川崎店って書いてあった。ソフトクリーム食べた時のか。
  • 17:06 楽しげな音楽とともに加湿器水切れ。
  • 17:54 ロディストア Rody Store の公式アカウントがありましたか。 @RodyStore
[ 1月9日全て ]

2010年3月12日 (金)

今日のさえずり - 英辞郎で英辞郎を検索

rimage:/nDiki/Flickr/4432182956.jpg

2010年03月11日

  • 08:38 ウルトラマンライブ2010「ウルトラ8兄弟の奇跡」のウルトラマンの顔ぶれが、自分の中の7兄弟と違いすぎて愕然。
  • 08:49 コンコースでホワイトデー用の何か売ってる。 (@ 秋葉原駅 w/ 2 others)
  • 12:11 ねぎ塩豚カルビ弁当(昼食) 398円。 (@ ファミリーマート神田佐久間町店) http://4sq.com/biJuCj
  • 20:11 特のりタル弁当(夕食) 390円。 (@ ほっともっと東神田二丁目店) http://4sq.com/arhPYT
  • 22:34 4月19日から京浜東北線・根岸線に女性専用車導入か。3号車(大船側から3両目)。いつも乗っている車両ではないな。大井町駅だと大宮方面行き 7:27 発から 9:26 発まで。

2010年03月12日

  • 09:38 オトクーポン退会(iモード関連整理の一環として)。
  • 09:41 @Meg_mama こんにちは。Xperia 予約して楽しみに待っています。価格未定ですが、各種ポイント充当で財布の負担を軽くしたいと思っています。
  • 09:45 前に座っている人のバッグに方眼ノートが入ってた。友達になれそうな気がした。
  • 09:48 お友達にナレソウ。 RT @hiro: @Naney 方眼ノートならいつもポケットに入っています
  • 09:55 秋葉原iPad よりデカイやつ。 http://movapic.com/...
  • 10:14 英辞郎で英辞郎を検索。「英辞郎 に該当する項目は見つかりませんでした。」
  • 11:07 RHODIA No11 のストックが無い。補充しなくては。
  • 12:19 めぼしいもの無かった。 (@ Starbucks Coffee)
  • 12:23 めぼしいもの無かった。 (@ 無印良品 アキバ・トリム)
  • 12:47 おにぎりセットL(昼食) 375円。 (@ サンクス秋葉原駅前店)
  • 17:56 XZ 平面上の回転行列のための sin の計算が間違えていて泣けた(自分が書いたやつ)。
  • 17:58 右手座標系3次元座標系の XZ 平面て混乱する。
  • 19:25 30時間超過の承認がおりた。
  • 19:39 大盛たらこスパゲティ(夕食) 398円。 (@ セブン-イレブン神田佐久間町店) http://4sq.com/cEfW1k
  • 20:27 納期直前だけど、ボスもそのボスもサクっと出ていった。
  • 20:55 CGI プログラムのことを CGI と言っちゃう奴出てこい。
  • 21:18 マジデスカ。 RT @yaizawa: ガラッ) RT @Naney: CGI プログラムのことを CGI と言っちゃう奴出てこい。
  • 21:18 一休みに万年筆にインクを補充して、また Visual Studio タスク一覧上の TODO つぶし。
  • 21:25 インタフェース自体の事を指したいこともあるので CGICGI プログラム/スクリプトはきちんと区別している。野暮だけど。
  • 21:34 ブラインドがカタカタなって「誰かそこに居るの!」と一人オフィスで何度もなるので、掃除のために開けた窓おわったら閉めて帰って欲しい。っていうか寒いし。
  • 21:46 「ありがとう!30周年今夜かぎりの春のドラえもん祭」観たいと思ったが、掃除当番の日ではないか。
  • 21:55 @madaaamj Web サーバが外部プログラム(CGI プログラム) を CGI というインタフェース(きまり)に従って実行してそのレスポンスを HTTP などのレスポンスとして返すという流れです。
  • 23:09 I'm at 秋葉原駅 (秋葉原駅, 千代田区) w/ 2 others. http://4sq.com/68fhHr
  • 24:23 @yamakiyo 自分のところにも何通かそういう文字化け通知メールがきてます。ここ数日の foursquare システム更新で何か変わったのかな。
  • 24:42 Pontaカード届いた。
[ 3月12日全て ]

2011年10月15日 (土)

YAPC::Asia Tokyo 2011 2日目

@kazuho → @kazeburo → @nekokak → @hiratara → @comewalk → @aloelight → @sartak → @Yappo → LT → @hidek → @lestrrat

雨大丈夫かなーと思って家を出たら、いきなりザーザーで折り畳み傘をさしたものの、ちょっと濡れたかなって感じで、着替え調達を口実に昨日ちょっと欲しいなと思った Perl T シャツを買ったんだけれど、そのあとは雨はあがりましたとか。

トーク

続 Unix Programming with Perl Kazuho Oku

IPC::Open3 の話とか。

運用しやすいWebアプリケーションの構築方法 masahiro nagano

過去 Log::Log4perl とかをチョイスしていたけど、より Log::Minimal の方が手軽そうでいいな。

watch your log nekokak

DevOps なお話。

開発と運用のコミュニケーション大切。開発だけれど障害出ると「ヤバい俺か?」といつもビビる。

Monads in Perl Masahiro Honma

モナド。

今までスルーしてたので参考になった。「Perl でモナドってみた」については理解するのに良いけど、(Perl において)プラクティカルかというと微妙だなという第一印象。まだ掘り下げて学ぶ必要あり。

Evolution of API With Blogging Takatsugu Shigeta

Blog をとりまく今までの歴史など。

少人数でのWebアプリ開発 - CGIからPSGIまでの変遷 aloelight

私的開発スタイルの変遷について。

DTrace: printf debugging for seventh-level wizards sartak

DTrace で何かごにょごにょやってた。

Perl Hackers Hub の舞台裏 Kazuhiro Osawa

スピーカーが一方的に話すだけではない YAPC らしいセッションを試みるなど、チャレンジングな良いトーク。

LT

いろいろ。

Managing A Band Of Hackers Hideo Kimura

マネージメント視点での話。他に無いトークで良かった。 DeNA にもってかれた。

Closing Daisuke Maki

時間もおしてたので、マキで。

トークとしては、やはり聞いてる自分が「お、これは自分でもやってみたいな」とか「ここに生かせるな」と思えるものが印象に残るし満足感が高いね。ここは落とし穴だから注意ねとか、ハマッたのでこんな工夫してみたよとかも引きこまれる。

逆に Perl 的な話だったとしてもモジュールの羅列紹介とかだとちょっと退屈。

内容レベル的には、浅すぎず、後半だんだん高度な話になってきたところでギリギリついていけるぐらいがいいかなと。

以上はもし自分がトークする立場になった時の参考用のメモ。

YAPC::Asia Tokyo 2012 もぜひ開催を!

[ 10月15日全て ]

2013年1月29日 (火)

今日のさえずり: アルフと言えば「留守番はまかせて」

2013年01月29日

[ 1月29日全て ]

2013年3月14日 (木)

今日のさえずり: 「デジタル小作人」というワードがあるのね

  • 09:31 Google リーダー衝撃的すぎる……。
  • 09:54 はてなRSS
  • 10:35 “Official Google Reader Blog: Powering Down Google Reader” http://t.co/DgYjW5Bbkj
  • 13:37 今週は昼休みとか放課後とか出歩いてしこたま花粉吸ってるので、今日はおとなしく社内にいる。
  • 13:40 座席温めてます。 (@ 株式会社ミクシィ (mixi, Inc.)) http://t.co/imGXw7u1zO
  • 14:23 「デジタル小作人」というワードがあるのね。
  • 17:27 健歩大会の紙受けとった。
  • 23:07 CGI 的なパラメータを生環境変数から取ろうとしてウンウンしてる人、早めに気がついて止めるべきであった。
  • 23:23 おっと、床屋の予約まだだった。
  • 24:00 @sseze バグは見切りをつけるんじゃなくてしっかり潰す。それ以前に何のために何をどこまで作るのかをきちんと見極める。
  • 24:05 黄色いのが光っているというのはピカチュウ世代。
  • 24:10 @sseze まあエンジニアっぽくていいですよね。
[ 3月14日全て ]

2013年12月10日 (火)

Plack Handbook 読んだりとか、技術交流的 LT における出会いの仕組み何がいいのかなとか 【日記】

SEO 的に重要なキーワードが前の方にあった方がいいらしいので「【日記】」というのは後ろにもってきてみる。

今日は久しぶり通勤時に冬の土砂降りで、家を出て2分で靴とジーンズがズブズブ。もうこれはどうしようもないレベル。やはり会社に靴と靴下置いておいた方が生産性に寄与する気がする。

あと昼に Plack Handbook を一読。今まで読んでいなかったのでモグリだった。チーム内の持ち回りのプチ勉強会CGIPSGI とかの話を担当する予定なんだけれど、Plack の部分はこれ読んでねで終わりな気がする。

あと技術交流的な LT 、交流がメインならトーク + 懇親会に一工夫なにかできないかなと考えたり。トークの後の懇親会でエンジニア同士交流ご自由だけでなくて、何か強制的にグルーピングしちゃうような。とか、名刺交換じゃなくてその場で強制友人申請大会にするとか。自分自身、社交型エンジニアじゃないのでそういう仕組みがあると出会いがあっていいなあと。

[ 12月10日全て ]

About

Naney Naneymx

Naney (なにい) です。株式会社MIXIで SNS 事業の部長をしています。

※本サイトの内容は個人的見解であり所属組織とは関係ありません。

Process Time: 0.028209s / load averages: 0.47, 0.37, 0.30