Twitterで鳩時計

cuckoo_clock_jp
@big_ban_clock の日本時間対応版を作ってくれと言われたので、@cuckoo_clock_jp を作ってみました。
とはいえ、現在時刻を見て時報をツイートするプログラムを書いて、それをcronで動かしただけなんですけどね。

自宅鯖で動かしてるので、たまに鳴かないときがありますが、大目に見て下さい。

■ 追記

リクエストをしてくれたのは@yuki_oさんで、その後@cannaさんに画像を提供して頂きました。
こうして萌えBOTは作られるのですね。

Perlの気持ちよさ

C言語で次のように書くプログラムがあったとする。

int main(void) {
    int i;
    for (i = 1; i <= 10; i++) {         printf("%d", i);     }     return 0; }

1から10までの数字を表示するためのもの凄く簡単なプログラム。
これを見て、ある人は { } のムダに気付いたかもしれない。あるいはC++やC99では変数の宣言をこう書くだろう。

int main(void) {
    for (int i = 1; i <= 10; i++) printf("%d", i);     return 0; }

このようにしてプログラムを綺麗で簡潔な形に書き直すことは気持ちが良い。
(上記の書き直しが綺麗かどうかは別の議論として)

ところでPerlという言語は、このような書き直しの方法がたくさん用意されている。
例えば上のプログラムの例だと、そのまま移植すれば次のようになる。

for (my $i = 1; $i <= 10; $i++) { print "$i"; }

Perlの場合、これを更に書き換えて、次のように書ける。

foreach my $i (1 .. 10) { print "$i"; }

ここで終わりではない。
更に省略しようと思えば、次のようにまで省略できる。

print for (1 .. 10);

今回例に挙げたようなもの凄く単純なプログラムでも、どんどん書き換えや省略ができてしまうのがPerlの楽しさであり、その方法が思いついたときのささやかな喜びが、僕にPerlを好きにさせているんだと思う。

(とはいえ、PerlにはXSという難解な言語仕様が待っているんだけど)

ハンズフリーでSkype

Skypeで音声チャットをするときに、これまではマイクとイヤホンをPCに繋いで使っていたのですが、これだとコードの長さ分しか移動できず、PCから離れられません。
そこで、ハンズフリーのヘッドセットみたいなものが欲しいなと前から思っていたのですが、一般に売っているものは、いわゆるヘッドセットという形1のもので、これが結構耳や頭部への負担2になるのです。

そこで、ヘッドセットではなく、ピンマイクにイヤホンジャックが付いていて、イヤホンに好きなものを使える製品がないかなと思い探していたのですが、見つけました。

これだったらイヤホンを繋げば耳への負担も少なくて済むし、ヘッドホンを繋いで高音質を楽しむこともできます。
説明を見ると、どうも携帯電話をターゲットとした商品のようなのですが、Bluetoothで通信するのでPCでも使えると分かり、早速購入しました。

  1. 耳かけヘッドホンみたいな形
  2. 長時間付けていると耳が痛くなる

今日の献立ガジェット

Googleが提供するiGoogleではガジェットというパーツを追加して楽しむことができますが、中でも美人時計みたいに写真が表示されるガジェットは華やかで良いですよね。そこで僕は、美味しそうな料理の写真が表示されるガジェットを作ってみました。

とはいえ、1年半くらい前によく知りもしないJavaScriptを試行錯誤して使って作ったものなので、コードは汚いと思いますが、思い切って公開します。

Googleカレンダーのコピーの仕方

Googleカレンダーの内容を別のGoogleアカウントにコピーする方法のメモです。
複数のアカウントで同じカレンダー情報を共有して使いたいだけだったら共有設定すればいいだけなんですけど、コピー元のアカウントを破棄したい場合はこれだと気持ちが悪いので、一旦データをエクスポートしてからインポートします。

Googleカレンダーの「設定」→「カレンダー」を開き、カレンダー名を選んで、一番下の「限定公開URL」のところから、「ICAL」ファイルをダウンロード1します。

次にこのファイルをインポートすればよいのですが、そのままインポートすると、各予定の横に鍵のマークが付いて、「限定公開」という設定になってしまいます。
別にこのままでも問題ないのかもしれませんが、普通に予定を作った場合のデフォルトの設定は「初期値」なので、インポートした予定もこれと同じようになるように、先ほどダウンロードしたiCalファイルを少しいじります。

iCalファイルをテキストエディタ2で開くと、大文字アルファベットだらけの謎の言語が現れますが、よく見ると、BEGIN:VEVENTEND:VEVENTで挟まれたパターンがたくさん並んでいることに気付くと思います。
これがひとつの予定データです。
その中にある、CLASS:PRIVATEという行が、先ほどの「限定公開」を表していますので、iCalファイルの中から、この行を全て削除します。一括置換とかするとらくです。

で、それが出来てから、Googleカレンダーの、「設定」→「カレンダー」から「新しいカレンダーの作成」でインポートしたいカレンダーのタイトルとかを再設定して作成して3、それから「設定」→「カレンダー」→「カレンダーのインポート」で、先ほどのiCalファイルをインポートします。

以上、たいして難しいことではないのですが、若干面倒だったのでメモしておきます。

  1. 右クリックして「対象をファイルに保存」
  2. メモ帳とか
  3. インポート前にわざわざ新規作成しなければならないのが面倒だが。

screenコマンド

SSHを使ってリモートから作業をしていると、ネットワークの調子が悪く、コネクションが切れてしまうことがよくあります。
あるいは作業中であっても、退社の時間になったために、一度PCの電源を落とさなくてはならないことがあります。

そんなときに便利なコマンドとしてscreenコマンドがよく使われているのですが、たった1点の不満のために、これまで1使わないでいました。
しかし、その解消法が、会社の先輩に訊くことにより、あっさり見付かったので、ここに記しておきます。

不満だった点は、lessやviなどを閉じた時に、表示内容が残るというものです2

これを解決するscreenのコマンドは、altscreenというもので、screenrcに

altscreen on

と書いておけば、screenを使ってない時と同じように、viを閉じたら元の画面に戻るようになりました。

これさえ満たされれば、あとはscreenを使ってなかった時と同様に作業できるので、これからひとつずつscreenの使い方を覚えていこうと思います。

  1. コマンドの存在を知ってから5年間くらい
  2. これはTeraTermなどのクライアントを使っていても起こるのですが

ctags

Debianだとctagsの仕様がちょっと違うみたいで、普通にググった方法だとtagsファイルがうまく作成できなかったので、メモ。

具体的には、-Rオプションが効かないというか、別な意味1で使われてるみたい。
なわけで、findコマンドを使ってファイル一覧をパイプで渡す必要があるみたいです。

find /usr/local/src/ -type f -name *.php|xargs ctags -a -o /home/yuuan/tags

こんな感じでコマンド打ったらできました。
/usr/local/src/以下のPHPファイルに関するタグ情報を、/home/yuuan/tagsに書き込んでいます。

  1. 正規表現関係?

Flower

チューリップとカーネーション

実は最近転職したのですが1、大学の後輩から転職祝いにお花を頂きました。
翌日さっそく花瓶を買ってきて生けたのですが、部屋に帰ってくるととてもよい香りが部屋を満たしていて、疲れを癒してくれます。

最近は観葉植物の育成に試行錯誤していましたが2、生け花も綺麗でいいなあ。

嬉しかったです。^^

  1. 新卒で入社後7ヶ月で転職した青い鳥症候群の愚か者です……。
  2. アジアンタムと連呼してたらSEO効果でちゃってました。^^;