nDiki : cron

2006年6月1日 (木)

Hyper Estraier で社内 Web コンテンツ検索

昨日の自分のノート PCHyper 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 できるのだけれど、FirefoxInternet Explorer からだと駄目である。

いろいろビルドしなおしてみたけれどやっぱり駄目なので、今回は結局 estmaster をやめて CGI プログラム版の UI を使うことにした。 こちらだとクローリング中は検索ができなくなってしまうけれど、夜中に cron で回すから別にかまわないか。

インデックスの方針

以下のような感じでクロールし、登録することにした。

  • 社内メイン Wiki、自分の社内 Blog、公開 Web サイトのトップページをクロールの種文書とする。
  • それと社内メイン Wiki の更新情報ページも種文書とする。
  • 社内のサーバ、および公開 Web サイトのみクロールするように allowrx、denyrx を設定。
  • Wiki の編集ページ等をクロールしないように denyrx を設定。
  • 1日1回深夜に cron でインデックスを更新。
  • revisit は3日に設定。
    • いくつかの種文書は -revcont 付きで estwaver を実行しても毎回巡回して欲しいのだけれど、それはいまのところできないようだ。

特定の WikiBlog 内のみを検索したい時は、検索インタフェースの方で URL を指定絞り込めば良いので、それほど規模も大きくないし全部ひとまとめにインデックス化することにした。

後は使いながら微調整していくこととしよう。

スポンサード リンク
[ 6月1日全て ]

2006年7月29日 (土)

Debian GNU/Linux sid 環境を新 HDD

朝から ThinkPad X31HDD 新しく入れ替えて Debian GNU/Linux sidインストールを開始。

Debian GNU/Linuxインストール

今日は sarge のネットワークインストール CD イメージからブートしてインストール。 今回はブートドライブにできる「ThinkPad USB ポータブルCD-ROMドライブ」があり、またこのイメージで起動して e1000 が認識できるので楽勝である。

(第1回目USB FDD + PC カード NIC でインストール第2回目HDD 上のインストーラから GRUB からの起動によるインストールだった)

最低限のものを入れたらすぐ sidアップグレード

HDD からのコピー

ヤバイ状態の旧 HDDUSB 外付け HDD ケースに詰めて

  • /home 全部
  • /usr/local で必要なもの
  • 参照用に /etc の複製
  • /var/www、/var/spool

を新しい HDD にコピー。

次に環境の復旧。 以下備忘録。

MADWIFI

以前作った Linux kernel 2.6.15 deb パッケージをインストールした後 module-assistant で madwifi をインストールするも、ビルドした GCC のバージョンが違ってロードできず。 kernel は GCC 4.0 の時にビルドしたもので、madwifi は現在のバージョンである GCC 4.1 によるビルドであることが問題。

まずは前にビルドした 2.6.15 のソースディレクトリでカーネルパッケージを GCC 4.1 で作りなおしてインストールし、あらためて module-assistant。

 module-assistant prepare
 module-assistant auto-install madwifi

で /etc/network/interfaces を書き戻す。

SMTP サーバを Postfix

ここずっと使っていた qmail をこの機会にやめることにした。 Postfix へ。

全体の設定はインストーラに従って設定。

個人設定は、

~/.qmail

 | preline /usr/bin/procmail

として procmail を使っていたので、~/.forward を作って同様に procmail に流すようにする。

 "|IFS='' && exec /usr/bin/procmail -f- || exit 75 #naney"

~/.procmailrc は以前のまま。ClamAVbsfilter でふるいにかけた後、Maildir へ。

bsfilter は deb のものに

以前入れた時は deb が古かったので /usr/local に自前でインストールした。 まずはこれを古い HDD から戻して動作確認後 deb のものに切り替え。

.mew.el の中も

 (load "/usr/share/doc/bsfilter/examples/mua/mew4/mew.el")

に変更。

Samba

/etc/samba/smb.conf を書き戻す。smbpasswd でパスワード再設定。

X

とりあえずインストール時の設定で xorg.conf を作る。

 Load "freetype"

をコメントアウトして、

 Load "xtt"

に変更。

KDE

sid は現在 3.5.3 と 3.5.4 混在状態になっているため、依存関係の問題で簡単にはインストールできずてこずった。 kdebase-data と kdelibs-data の 3.5.3 を http://snapshot.debian.net/ からとってきて hold して 3.5.3 系 KDE として各種パッケージをインストール

フレッシュリーダー

以前インスールした状態に復旧

  1. libapache2-mod-suphp php5-cli をインストール
  2. /var/www/freshreader、/etc/apache2/sites-available/freshreader を戻す
  3. a2ensite freshreader
  4. /etc/init.d/apache2 reload
  5. /etc/hosts に freshreader を追加

cpufreqd

  1. cpufreqdインストール
  2. /etc/cpufreqd.conf を戻す
  3. /etc/init.d/cpufreqd restart

Skype

skype-beta-1.3.0.30-1_i386.deb をインストール

cron

一般ユーザ naney の crontab ファイルを再登録。

Perl モジュール

足りないと気がついた時点で順次インストール

autofs + smbfs (2006年8月3日)

/etc/auto.master、/etc/auto.misc を書き戻して /etc/init.d/autofs restart。

mt-daapd (2006年8月22日)

deb パッケージを公式サイトからダウンロードし、/etc/mt-daapd.conf を書き戻して /etc/init.d/mt-daapd restart

[ 7月29日全て ]

2007年4月16日 (月)

そんなにこまめにメールをチェックしなくてもいいのではないか

今までメール自動受信は GKrellM + fetchmail で 10分毎に行っていたのだが、1時間毎に変更してみた。

メールで気をわずらわせる回数を減らすのが目的。 短い間隔でメールが届いたことが知らされるたびにチェックしても、結局処理は先送りしてしまいがち。 であればもう少しチェック回数を減らして、そのかわりまとめて一気に処理してしまった方が効率が良いし結果的に返信も早くなるという目論見。

うまくいくようなら2時間間隔でもいいかもしれない (GKrellM では 60分毎より長い間隔には設定できないようなので cron か何かで)。

ということでお急ぎの方は電話チャットSkype携帯電話メールへ。

[ 4月16日全て ]

2007年11月9日 (金)

Twitter ステータスを nDiki サイドバーに表示

公式の Flash 版 Twitter badge をこのページのサイドバーに表示していたが、以下の点でちょっと不満だった。

  • 「Flash, Just Me」: 自分のみのステータスを表示できるが、1度に1つのみ。キャッシュの関係で古い情報が表示されがち。
  • 「Flash, With Friends」: 自分のみのステータスを表示できない。
  • 「HTML/JavaScript」: JavaScript ファイル読み込みなので、Twitter 側が重いとページのその先のレンダリングが止まってしまう。

「自分の過去のステータスを一覧的にサイドバーに表示する」のがしたいことなのだが、ちょっとマッチしない。 ということで Twitter から RSS フィードを取ってきて、サイドバーに表示することにした。

使ったモジュールは URI::Fetch + XML::RSS + Date::Parse。 それとユーティリティとして WiKicker::HTML と WiKicker::URI。

  1. cron で定期的に Twitter から RSS フィードをとってきて、Perl スクリプトで HTML フラグメントに変換。
  2. DiKicker が読み込む(サイドバーを含む)フッタファイルに挿入。

と簡単に実装してみた。機能的には概ね満足。

今後は L:~ や URL自動リンク化、キーワードの自動リンク化を適宜したい。

[ 11月9日全て ]

2008年2月25日 (月)

Twitter への書き込みを自動的に Skype ムードメッセージに設定する

Linux for SkypeSkype APID-Bus を使ってアクセスすることができる。 Debian GNU/Linux sid 上の Skype for Linux 2.0.0.43 で、Perl スクリプトから自動的にムードメッセージを更新するようにしてみた。

Skype が起動している状態で以下のスクリプトを実行する。

 #!/usr/bin/perl

 use strict;
 use warnings;
 use Net::DBus;
 use URI::Fetch;
 use XML::RSS;
 use Date::Parse;

 my $id = '自分の Twitter ID';

 my $time = time;
 my $fetch_response
   = URI::Fetch->fetch(
               "http://twitter.com/statuses/user_timeline/$id.rss?dummy=$time")
   or die URI::Fetch->errstr;
 my $rss = XML::RSS->new;
 $rss->parse($fetch_response->content);
 die 'no items' if @{$rss->{items}} == 0;
 my $item = $rss->{items}->[0];
 my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst)
   = localtime(str2time($item->{pubDate}));
 my $title = $item->{title};

 my $mood
   = sprintf("[%02d/%02d %02d:%02d] $title", $mon + 1, $mday, $hour, $min);
 my $bus      = Net::DBus->session;
 my $service  = $bus->get_service('com.Skype.API') or die;
 my $invoker  = $service->get_object('/com/Skype') or die;
 my $response = $invoker->Invoke('NAME twitter2skypemood');
 die $response if $response ne 'OK';
 $response = $invoker->Invoke('PROTOCOL 5');
 die $response if $response ne 'PROTOCOL 5';
 $response = $invoker->Invoke("SET PROFILE MOOD_TEXT $mood");

image:nDiki/2008/02/Skype-API-auth.png

のようなダイアログが表示されるので、「この選択を記憶する」をチェックして、はいを選択。

そうすると RSS フィードとしてとってきた 自分の Twitter メッセージが、Skype のムードメッセージに表示される。自分の環境では日本語も問題なく表示される。

うまくいったので cron で定期的に更新するようにしてみた。

Skype API 面白いかも。

追記

[ 2月25日全て ]

2008年2月26日 (火)

cron 呼び出しから D-Bus (Net::DBus) 使おうとしたら失敗していた

Twitter への書き込みを自動的に Skype ムードメッセージに設定するスクリプトを定期的に実行しようと cron に設定しておいたのだが、一向にうまくいく気配がない。

cron からのメッセージを見たら

process 22612: arguments to dbus_connection_ref() were incorrect, assertion "connection != NULL" failed in file dbus-connection.c line 2465.

This is normally a bug in some application using the D-Bus library.

org.freedesktop.DBus.Error.Spawn.ExecFailed: dbus-launch failed to autolaunch D-Bus session: Autolaunch error: X11 initialization failed.

と出ていた。 X 関連か?

cron から呼び出す際には DISPLAY=:0.0 してからこのスクリプトを呼ぶようにしたらうまく動くようになった。

[ 2月26日全て ]

2008年3月13日 (木)

Flickr写真を自動的に Twitter アイコンにする

2週間ほど前にtwitterfeed で Flickr に写真をアップロードしたら自動的に Twitter にタイトルと URL をポストするようにしたのだが、これだと写ツみたいに画像そのものはポストされず今一歩なので、写真自体を自動的に Twitter アイコンアップロードするようにしてみた。

流れは以下:

  1. cron で定期的に FlickrRSS フィードをフェッチする (URI::Fetch + XML::RSS)。
  2. 新しい写真アップロードされていたら(最新の写真が変化していたら)、RSS フィード中のサムネイル画像 URL を抜き出して画像をダウンロードする (URI::Fetch)。
  3. 正方形に crop。それからころころ Twitter アイコンを変えると誰だかわからなくなるので、決まった画像 (今のところ自分の写真)を重ねる (ImageMagick / PerlMagick)。
  4. Twitterアップロードする(アップロードスクリプト)。

例えば今日 VQ1005 で撮影して Flickrアップロードした写真を自動的に加工させたものがコレ。

image:nDiki/2008/03/Twitter-icon-2008-03-13.jpg

なんか偽中継のような嘘臭さがあるけれど、まあだいたいアップロードした写真は自分が実際にその場にいたのだから、あながちでもないんじゃないか。

[ 3月13日全て ]

2008年3月16日 (日)

今日のさえずり - 初歩的なミスだが PATH の違い

naney:2333995855

2008年03月15日

2008年03月16日

  • 00:47 手で実行すると動くのに cron からだと動かないスクリプトの問題がわかった。初歩的なミスだが PATH の違い。
  • 22:33 VQ1005、プロキッチン楽天市場店は売り切れたけれど、本店やYahoo!ショッピング店はまだ売っているみたい。
  • 22:52 1本単位で単4形ニッケル水素電池を充電できる充電器が欲しい。
[ 3月16日全て ]

2008年8月5日 (火)

Twitter への書き込みを自動的に Skype ムードメッセージに設定する for Windows

半年ぐらい前に Skype for LinuxTwitter への書き込みを自動的に Skype ムードメッセージに設定するスクリプト(記事)を作って cron で 10分毎に更新するようにした。

Windows BOX 上 Skype を使っている時も同様にできるように、Skype4COM を使うバージョンも書いてみた。 D-Bus ではなく Skype4COM を使うようにすることと、Skype4COM にはシフト JIS の文字列を渡すようにすること以外はほとんど同じ。

Skype4COM の DLL を登録し、Skype が起動している状態で以下の Perl スクリプトを実行。

 #!/usr/bin/perl

 use strict;
 use warnings;
 use Win32::OLE;
 use URI::Fetch;
 use XML::RSS;
 use Date::Parse;
 use Encode;

 my $id = '自分の Twitter ID';

 my $time = time;
 my $fetch_response
   = URI::Fetch->fetch(
               "http://twitter.com/statuses/user_timeline/$id.rss?dummy=$time")
   or die URI::Fetch->errstr;
 my $rss = XML::RSS->new;
 $rss->parse($fetch_response->content);
 die 'no items' if @{$rss->{items}} == 0;
 my $item = $rss->{items}->[0];
 my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst)
   = localtime(str2time($item->{pubDate}));
 my $title = $item->{title};

 my $mood
   = sprintf("$title [%02d/%02d %02d:%02d]", $mon + 1, $mday, $hour, $min);

 $mood = Encode::encode('shiftjis', $mood);

 my $skype = Win32::OLE->new('Skype4COM.Skype');
 $skype->Client->Start unless $skype->Client->IsRunning;
 my $profile = $skype->CurrentUserProfile;
 $profile->{MoodText} = $mood;

インストール済みだった ActivePerl 5.8.8.822 で動作を確認(ちなみに現時点での最新は ActivePerl 5.10.0.1003)。なお URI::FetchXML::RSS、Date::Parse(TimeDate) は標準では入っていないので PPM パッケージインストール

タスク スケジューラで10分毎に上記のスクリプトを wperl.exe で実行するように設定。 これで Windows 上でもさえずりをムードメッセージに設定できるようになった。

[ 8月5日全て ]

2008年11月15日 (土)

今日のさえずり - オーナメントすぐもがれる

2008年11月14日

naney:3028285041

2008年11月15日

[ 11月15日全て ]

About Me

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

nDiki1999年1月に始めたコンピュータ日誌を前身とする NaneyWeb 日記(兼パーソナルナレッジベース)です。ちょっとしたノートは nNote にあります。

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

月別インデックス
Process Time: 0.067229s / load averages: 0.72, 0.60, 0.50
nDiki by WATANABE Yoshimasa (Naney)
Powered by DiKicker