日本で2番目に大きなタイ焼き

全然関係ないのですが、近所になでしこジャパン丸山桂里奈さんが住んでいます。

先日、桂里奈さんのブログで日本で2番目に大きな鯛焼きというものが紹介されていました。
近所のお店だったので、私も購入してきました。そのお店での一番大きなサイズの鯛焼きは全長26cmで500円です。
食べきれないかなと思いましたが、甘さ控えめで、牛乳を飲みつつ完食できました。

ちなみにお店の方に聞いてみたところ、日本一大きな鯛焼きはギネス向けに特別に作られたやつらしいとのことです。

ツイート収集その後(運用へ)

Twitter Streaming APIでのストリーミング切断

ツイート収集スクリプトが止まってしまう件は、tweetstreamの中でリコネクトできないというようなエラー表示でした。その後も同様に停止したのですが、3時に開始したものが5:39に停止していたので、長時間接続していると切ってくるというわけではないっぽいです。
うっかりterminalを閉じてしまったので、ちゃんとエラーメッセージを見られないんですけどね……。

エラーで停止した場合の対応はcronで再起動

Rubyスクリプト内でハンドリングするというのも手ですが、cronでプロセスを確認して、起動していなかったら起動するというのがお手軽でしょう。
無駄な労力は使わない主義です。ちゃっちゃとRubyスクリプトを書く能力がないとも言う。;(

とは言え、cronの設定なんてこの5年くらいはやった記憶がありません。もしかしたら10年近くやったことがないかも。
そんなわけで、Googleさん頼りです。いろいろ網羅的に面倒臭いことが書いてあるページが多かったのですが、ごく単純にcrontabコマンドを-e付きで呼べばエディタを選べるようになっていたので、僕の場合はvim.tinyの3番を選んで、テーブルを編集、と。

$ crontab -e
no crontab for sugiyama - using an empty one

Select an editor.  To change later, run 'select-editor'.
  1. /bin/ed
  2. /bin/nano        <---- easiest
  3. /usr/bin/vim.tiny

Choose 1-3 [2]: 3

編集画面では最後に1行追加。

 */15 * * * * ~sugiyama/foo/twstream_check.sh

これは15分ごとに1回、この「~sugiyama/foo/twstream_check.sh」ってシェルスクリプトを動かすってことで。

プロセスチェックしてプロセス起動する

このシェルスクリプトも深く考えないでイイカゲンな感じで書きました。もっとイイ感じでさらに簡単にできる気もするんですけど、動けばいいや……。

#!/bin/sh

proccnt=`/bin/ps -ef|grep twstream.rb|grep -v grep|wc -l`
if [ $proccnt -eq 0 ]; then
	~sugiyama/foo/twstream.rb >/dev/null 2>&1 &
	echo restarted twstream.rb at `date`.
fi

最近胃カメラに初挑戦して胃潰瘍跡が見つかったので、ストレスは溜めないようにしています。胃潰瘍を患っていたとは気付いていませんでしたが、たぶん10年前に血を吐きながらSE稼業をしていた頃のものでしょう。つらい時代でした。いまならもうちょっとうまく立ち回れるような気もしますが、それはさておき。

プロセス一覧から該当Rubyスクリプトgrepで抽出して、wcで行カウントし、0行ならプロセス起動、と。UNIX系初心者でもだいたいわかりますね。僕は20年くらいUNIX初心者のままです。;)
あ、あと、echoでの英語メッセージもおかしいですよね、たぶん。でも、日本人ならわかってくれるに違いない。てか、僕はわかるからいいんです。

cronによる再起動結果をメールで受け取れるように設定

cronで動かしたスクリプトからの標準出力は(上記echoのメッセージ)は(デフォルトでは)メールでcrontab設定者に送られます。
でも、うちのUbuntuでメールってどうなってるんだ?
ってことで、「mail」と入力してみました。

$ mail
プログラム 'mail' は以下のパッケージで見つかりました:
 * heirloom-mailx
 * mailutils
次の操作を試してください: sudo apt-get install <選択したパッケージ>

いまどきのLinuxは親切で驚きました。こんなことまで指南してくれるのですね。mailutilsを導入してみました。apt-get installしたら、そのまま設定画面が開きました。ローカルでの運用なのでとくに難しいこともなく、言われるがままに設定。

$ mail
Cannot open mailbox /var/mail/sugiyama: 許可がありません
No mail for sugiyama

お、なんかショボいエラーが出ている。
パーミッションを手作業でいじるってのもなんかおかしいし、一発メールを送ってみます。

$ mail sugiyama
Cc: 
Subject: hoge
hogehoge

送れたっぽいです。

$ mail
"/var/mail/sugiyama": 1 message 1 new
>N   1 SUGIYAMA  Fri Dec 16 06:37  13/412   hoge
? 1
Return-Path: <sugiyama@xxx.com>
X-Original-To: sugiyama@bar
Delivered-To: sugiyama@bar
Received: by bar (Postfix, from userid 1000)
	id 9BEA912033F; Fri, 16 Dec 2011 06:37:26 +0900 (JST)
To: <sugiyama@bar>
Subject: hoge
X-Mailer: mail (GNU Mailutils 2.2)
Message-Id: <20111215213726.9BEA912033F@bar>
Date: Fri, 16 Dec 2011 06:37:26 +0900 (JST)
From: sugiyama@xxx.com (SUGIYAMA)

hogehoge
? d
? q

いい感じです。

試しにcronで動くシェルスクリプトをいじって、正常な場合でも標準出力に出力するようにしてみたところ、正しくメールが届きました。
ツイート収集の運用は、趣味でやる分にはこんな感じで充分かな。