仕事用に Skype 名を作成し、ついでに社内 Blog に Skype ボタンを貼りつけてログイン状態を表示できるようにしてみた。
そういえば電話もそうなんだけれど、本社に連絡を取るとき「もしかして会議中?」などと勘繰ってかけるかどうか迷ってしまうことがある。 かけたい人の予定がわかればいいのになと。
ならば逆もしかりだろうということで、自分の仕事のスケジュールを晒してみようと思いついた。 グループウェアとかそういうのは大袈裟なので、まずは社内 Blog のサイドバーに表示するようにしたい。
ということでこの3連休に実装してみた。
完全なスケジュールはほぼ日手帳に手書きで管理しているので、ミーティング・外出など晒しカテゴリのイベントだけを、電子化する必要がある。 手で HTML 毎回ごりごり書き直すのも嫌なので、スケジュール管理ソフトを使いたい。 この部分は KDE の KOrganizer を使うことにした。
で、KOrganizer のスケジュールを iCalendar 形式でエクスポート。 このファイルを社内 Blog を配信しているサーバに rsync で転送。
この処理はちょっと手間なので自動化したいところ。
この 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」のハッシュ階層として格納されているので、これを読み出せばよい。
で、この CGI プログラムが生成する JavaScript プログラムをサイドバーで JavaScript Include。
まずは表示までできるようになった。
これで
おいおいスケジュールの表示デザインとかは改良していきたい。 hCalendar 形式にしてスタイルシートでデザインするのがいいのかな。
Perl で書いた Web アプリケーションのポータブルな Win32 デモ環境として XAMPP を使ってみるとどんな感じになるか試してみた。
使ったバージョンは以下。
(http://www.apachefriends.org/jp/xampp-windows.html)
それぞれ 自己解凍型 7-ZIP アーカイブをとってくる。 最初に XAMPP を展開し、次にその xampp ディレクトリの中で Perl アドオンを展開。 xampp ディレクトリを c: の直下に移動する。
次にコマンドプロンプトを開き c:\xampp\perl\bin へ移動後 ppm コマンドを起動して作成済みの PPM パッケージをインストールする。 インストール先は \xampp\perl 以下とドライブ無しのパスで指定されているようで、問題なく必要な Perl ライブラリをインストールできた。
次に \xampp\xampp-control.exe を実行して GUI 管理ツールを立ち上げ、その画面から Apache を起動。 普通の Win32 版 Apache もインストールしてある 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分以上かかったよ。
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 の返り値チェックとか、改善すべきところはいろいろあるけれど、自分用にはまずこれでいいかな。
気が向いた時に外出先から更新かけます。
FOMA から Twitter に投稿する際にはとりあえず、自作 CGI プログラム(記事)を使っている。 これはこれでそこそこ使えるのだが、以下の点でちょっと不便であった。
(*) なんかはまあきちんとプログラム書けばいいのだけれども、そこまでするのも大変だったりする。
やはりメール投稿ができると便利そう。
Twitter 関連サービスは認証情報が不安で使ってこなかったんだけれども、まあ実は普段使っている Firefox 拡張機能 TwitBin って Tweetbar などと違って実はパスワードを http://www.twitbin.com/ に送ってしまってたりするので、最近まあいいかなと思えるようになってしまった (アマリヨクナイ)。
ということで tmitter を使ってみることにした。 昨晩登録しておいて、今朝1発目投稿。
やはり投稿画面を取得する必要がないと楽でいいな。 投稿メールアドレスや、自分への Bcc を設定したメールテンプレートを作っておけばささっと投稿できる。
いいかも。しばらく使ってみよう。
Twitter を使い始めてから1年が経った。
飽きずに使ってきたのはやはり API が公開されていて、いろいろ遊べるからだと思う。
全てはここから!
Twitter は 100SHIKI.COM では で12月31日に紹介されている。2007年の3月頃から流行りはじめた頃に始めてみた。
日本語を正しく通すにはちょっと工夫をする必要がまだあった頃。
2日目には投稿用 CGI プログラムを作成。tmitter を使い始めるまではケータイからはこの自作 CGI プログラムで投稿していた。
Twitter はやはりケータイからも投稿できた方が楽しい。
同じ頃に Tumblr も試してみている。Twitter のフィードを食わせているけれど、放置状態。
メールベース。tmitter サービス提供終了のアナウンスがあったので、その後 MovaTwitter 移行した。
tmitter 自体はその後サービス継続されることになり今も利用可能。
MovaTwitter 使用開始。今もケータイからはコレ。便利。
MovaTwitter のためにパケ・ホーダイを契約。このパケ・ホーダイ契約がきっかけで、各種ケータイサービスを活用するようになった。
今は特定の人のみ IM に流れてくるように Notifications 設定して、アラート的に使っている。検索は「Twitter 検索」で足りるので履歴としては活用していない。
今も継続しているけれど、履歴を見ることはほとんどないな。 いや、今日の記事まとめにはちょっと役に立った。
タイムラインのざーっと見るのに便利でしばらく使っていたんだけれど、その後 Linux 上で P3:PeraPeraPrv 常用するようになってから起動しなくなった。
良い Twitter クライアント。
継続して nDiki に表示中。ちらっとぐらいは見る人がいるのかな?
P3:PeraPeraPrv 使用開始。
今では MovaTwitter と合わせて一番使う Twitter クライアント。
ダイジェスト記事「今日のさえずり」を書くのに、自分用として便利に使用中。
作ってしばらく試したけれど、学習がどちらかに偏りがちなので使わなくなってしまった。
継続中。Flickr に写真をアップロードして、twitterfeed によって Twitter にアナンスすると 20 view ぐらい見てもらえる感じ。
継続使用中。Skype のコンタクトはあまり多くないので、今のところ同僚向けに晒しているといった感じ。
現在も稼働中。
現在も稼働中。twitterfeed での Flickr 写真アナウンスとあわせて、いい感じにアイコンが入れ替わるのでいいと思う。
社内 Web ページ全文検索用に設定していた Hyper Estraier だが、かなーり前からたまにクロール/インデックス作成に失敗してインデックスが壊れてしまうことがあった。で検索できないまま放置していたのだが、やはり時々検索したいというリクエストをもらったので、復旧することにした。 Hyper Estraier も 1.2.7 のままだったので、最新版に更新。 設置が 2006年6月なので3年ぶりの更新。
前回と同様ソースからのインストール。 今回は自分のホームディレクトリ以下に。 以下作業手順メモ。
wget http://qdbm.sourceforge.net/qdbm-1.8.77.tar.gz tar zxvf qdbm-1.8.77.tar.gz cd qdbm-1.8.77 ./configure --enable-zlib --prefix=$HOME/local/hyperestraier-1.4.13 make check make install
wget http://hyperestraier.sourceforge.net/hyperestraier-1.4.13.tar.gz tar zxvf hyperestraier-1.4.13.tar.gz cd hyperestraier-1.4.13 PKG_CONFIG_PATH=$HOME/local/hyperestraier-1.4.13/lib/pkgconfig ./configure --prefix=$HOME/local/hyperestraier-1.4.13 make make check make install
前回 /usr/local/var/lib/hyperestraier/estwaver に保存するようにしていたので、今回もそそれはそのままで。 クローラのルートにある _conf は作り直しの際に間違えて消してしまいそうになるので、ホームの etc においておいてシンボリックリンクをはっておく。 _conf は以前に作っておいたものを利用。
mkdir /usr/local/var/lib/hyperestraier/estwaver $HOME/local/hyperestraier-1.4.13/bin/estwaver init /usr/local/var/lib/hyperestraier/estwaver rm /usr/local/var/lib/hyperestraier/estwaver/_conf ln -s $HOME/etc/hyperestraier/_conf /usr/local/var/lib/hyperestraier/estwaver/_conf $HOME/local/hyperestraier-1.4.13/bin/estwaver crawl -revcont /usr/local/var/lib/hyperestraier/estwaver
cd $WEBDIR/search/hyperestraier cp $HOME/local/hyperestraier-1.4.13/libexec/estseek.cgi . chmod 755 estseek.cgi cp $HOME/local/hyperestraier-1.4.13/share/hyperestraier/locale/ja/estseek.* .
で estseek.conf を編集。indexname を /home/naney/local/hyperestraier-1.4.13/estwaver/_index に。その他好みにあわせて設定を変更。
前回の設定では、クロールとインデックスの更新夜中に行うからインデックスがロックされてもいいやと直にオリジナルのインデックスを更新するようにしていたが、今回はきちんとコピーして更新するようにした。 1日1回以下のスクリプトを実行するように設定。
#!/bin/sh PREFIX=/home/naney/local/hyperestraier-1.4.13 VARDIR=/usr/local/var/lib/hyperestraier test -e $VARDIR/estwaver-copy && exit cp -a $VARDIR/estwaver $VARDIR/estwaver-copy $PREFIX/bin/estwaver crawl -revcont $VARDIR/estwaver-copy $PREFIX/bin/estcmd inform $VARDIR/estwaver-copy/_index || exit rm -rf $VARDIR/estwaver mv $VARDIR/estwaver-copy $VARDIR/estwaver
リクエストしてくれた人、検索できるようになったから使ってね。
Web サイトの移行の話が出た流れで、この Web 日記についてちょっと考えたりした。
Perl で書いた自作の日記システム (CGI プログラム) で問題なく動いているが、手を入れずに使い続けているので将来環境(Perl やライブラリ)のアップデート時にハマるのではというのがあると、このまま記事が増え続けた時に問題が起きるのではというのがあり、気掛かりではある。
配信環境に依存しないように静的サイトジェネレータで生成する形に変えたらいいのではと、以前から思ったりしている。
ちょっとしか使ったことがない JavaScript を学ぶ機会としても Next.js とかどうかなとちょっと調べてみた。
個別記事ページを静的ページとして生成するのはいいとして、自動リンク機能で実現しているキーワード別ページとそのページングがちょっと厄介そう。やれるとしても今の URL 体系も一部変えなければいけないな。
Naney (なにい) です。株式会社MIXIで SNS 事業の部長をしています。
※本サイトの内容は個人的見解であり所属組織とは関係ありません。