cronの結果をメールで飛ばしてそれをgoogle calendarに貼る

Nobuo Danjou
2012-05-16T17:30:45+0900

メールのDateとReceivedの時間を見て処理時間が分かったりしていいかも、一覧性も上がるかも、ということで書いてみました。ほんとはwebサービスにしてもいいかなと思ったんですが、根性がないのでとりあえずProof of Concept。成功と失敗の判定をして、別々のカレンダーに投げてます。それぞれ色を変えておきます。あとはiCalなりカレンダーなりでアラートするといいかもしれません。できるんかな?ま、まわりくどいのは重々承知でございます。

https://gist.github.com/2708684

githubのissuesをバックアップする

Nobuo Danjou
2012-05-15T16:11:47+0900

最近githubにレポジトリを置いてプロジェクトを2件まわしまして、どちらも無事に終了しました。で、gitとかwikiとかはぜんぶgitで落としてきてどこへなりと置いておけばいいのですが、issuesをどうしようかしら、という問題に。githubに聞いてみたら、issues apiがあるからそれでよしなにやってくださいと言われてしまいました。で、使ってみたらバックアップって言うよりは、クライアントアプリを作るときにdashboardを再現する為に作ってあるような感じで、全部まるっととってくる感じじゃなかったです。結局、issuesって連番で、削除がないので、ものすごく単純にhtmlをガーッととってきてtarで固めておけばいいや、ということになりました。取得部分だけですが、こんな感じ。まあぐるぐるまわしてるだけですね。

https://gist.github.com/2699697

iOSの勉強を何年かぶりに再開した

Nobuo Danjou
2012-05-07T18:52:51+0900

各方面からiOS向けに書けねえのかゴルァと凄まれることが多くて、今後の人生設計というか収入源確保というか、いい加減手を付けないといけないなあ、と思っていたのですが、やっと飽きずに続けられる教材を教えてもらってCoreDataの使い方までたどり着くことができました。 iTunes U で配信されてるスタンフォードのやつです。無料!

http://itunes.apple.com/course/ipad-iphone-app-development/id495052415

あともうちょい。アニメーションとか飛ばしたいけど我慢して見よう。

http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2011-fall

に資料が置いてありました。プロジェクトはそのまんま使えます。

WE ARE TOKYO! WE ARE TOKYO!

Nobuo Danjou
2012-03-08T01:43:53+0900

大事なことなので二度いいました!

http://journal.soffritto.org/entry/506でお知らせしていたオーストラリア旅行は満貫叶って帰国したあとに自分向けのお土産のお酒の瓶を割ってしまい、「気を抜くべからず」という警句も受けて、さらによい旅になってしまいました。

えー、試合後につるんでる皆様には750mlではございますが、オージーワインを今度持っていきますのでよろしく。

陰毛に白髪

Nobuo Danjou
2012-02-27T20:01:28+0900

ついに。頭髪、髭、鼻毛、胸毛に続いてついに陰毛に白髪を発見しました。あと臑毛に生えたらフルハウス?5カード?いや、6カードか、だと思います。

最近duckduckgo使ってます

Nobuo Danjou
2012-02-25T10:47:16+0900

ご存知ですか。http://duckduckgo.com/という検索エンジンがあります。最近googleがあんまり使いたくない感じなので、代替サービスないすかねぇ、ってちょっとググったら(笑)出てきたので使ってます。

普段safariを使っているので、duckduckgoがおすすめしているGlimmerBlockerを使ってツールバーの検索窓からのリクエストを書き換えてduckduckgoに向ける方法を使っています。デフォルトだと、検索対象が英語になるので「kl=jp」を追加しました。

// extract search term from query string
var query = gb.request.urlQuery;
var ql = query.split('&');
for (var i=0; i < ql.length; i++) {
    if (ql[i].search('^q=') != -1) {
        var searchterm = ql[i].split('=')[1];
    }
}

// send redirect to new search engine
gb.response.sendRedirect("https://duckduckgo.com/?kl=jp&q=" + searchterm);

その後GlimmerBlockerの方が面白くなってしまい、いろんな広告をブロックして遊んでました。それと、http://tools.google.com/dlpage/gaoptout?hl=ja google analyticsのオプトアウトも入れたりしました。

Net::Google::DocumentsList TODOs

Nobuo Danjou
2012-02-13T09:59:22+0900

たいへんや

Linux のバックアップを Time Capsule にとる

Nobuo Danjou
2012-02-10T01:06:40+0900

恥ずかしながら、自宅サーバーのバックアップをまじめにとるぞ!とやっと思い立ちまして、以下のような手順でやることにしました。

UPDATE!!!

こちらもご覧下さい。

time capsule のマウント

mount -t cifs -o pass='mypassword' //my_time_capsule.local/share /media/timecapsule

うちの Time Capsule は「装置パスワード」の設定にしていたので、こんな感じにパスワードを指定してマウントしました。

バックアップディスクの作成

Time Capsule を cifs でマウントして、そこにディレクトリを切って直接 rsync してバックアップしようとしたんですが、そうすると cifs の制限で symlink がつくれないとか chown できないとか問題があるようなのであきらめ。 Time Machine でやってるのと同じ感じで Time Capsule 内にディスクイメージを作って、それをマウントしてバックアップすることにしました。

cd /media/timecapsule
dd if=/dev/zero of=backup.img bs=1M count=10K
losetup /dev/loop0 backup.img
mkfs.ext4 /dev/loop0
losetup -d /dev/loop0

これで backup.img に ext4 のファイルシステムができたので、以下のようにすればマウントできます。

mount -o loop /media/timecapsule/backup.img /mnt/backup/

バックアップ

あとは http://d.hatena.ne.jp/dayflower/20090513/1242194477 を参考にスクリプトを書いてやればオッケー。若干バカっぽいですが気にしないでください。これを /etc/cron.daily/backup に置いて、一日一度バックアップをとってみます。うまくいくかなぁ。

#!/bin/sh

media_dir=/media/timecapsule
image_name=backup.img
backup_dir=/mnt/backup/

target='home var etc'
gens=4

date=`date +%Y%m%d%H%M%S`

mount -t cifs -o pass='mypassword' //my_time_capsule.local/share $media_dir
mount -o loop "$media_dir/$image_name" $backup_dir

backup_count=`/bin/ls -1t $backup_dir|grep -v 'lost+found'|wc -l`
if [ $backup_count -eq 0 ]
then
    for d in $target
    do 
        mkdir -p $backup_dir/$date/$d/
        rsync -av /$d/ $backup_dir/$date/$d/
    done
else
    if [ $backup_count -gt $gens ]
    then
        rm_count=`expr $backup_count - $gens + 1`
        for rm_dir in `/bin/ls -1t $backup_dir|grep -v 'lost+found'|tail -n$rm_count`
        do 
            /bin/rm -rf $backup_dir/$rm_dir
        done
    fi
    link_dest=`/bin/ls -1t $backup_dir|grep -v 'lost+found'|head -n1`
    for d in $target
    do 
        mkdir -p $backup_dir/$date/$d/
        rsync -av --delete --link-dest=../../$link_dest/$d /$d/ $backup_dir/$date/$d/
    done
fi

umount $backup_dir
umount $media_dir

3/5 ~ 3/7 休暇を頂きます

Nobuo Danjou
2012-02-09T11:33:24+0900
ソフリット檀上です。

表題の通り、3/5 ~ 3/7の間休暇を頂きます。
その期間、メールの確認は一日一度程度、緊急時のリモートでの対応も
回線状態によりできない可能性があります。
期間中の作業予定がありましたら、前倒しで対応いたしますので
ご連絡ください。
通常業務には3/8より復帰いたします。

期間中はご不便をおかけしますが、よろしくお願いいたします。

ということでACLデビュー戦を見にオーストラリアにいってきます!初の南半球!

あけましておめでとうございます

Nobuo Danjou
2012-01-05T22:13:54+0900

天皇杯決勝、楽しかったです。思わず「よいお年を」と言ってしまう感じの、年の切れ目がぼやけた感じがよかったです。来年?今年?もまた決勝まで行きたくなります。ルーコンの言う通りだわー。ACLも楽しみです。J1はまずは残留目指してがんばりましょう。

弊社というかお仕事の近況です。年末までがっつりやってた案件がまだ続くんですが、年末年始のお休みに入ったタイミングで若干気が緩んでしまったので、昨日あたりから気合いを入れ直してもうひと頑張りです。ここ2ヶ月は独立して以来一番働いてる気がします。意外に体力が残ってたなー、というのと、独立して4年経ってペース配分がマシになってムラが減ったのかなー、と言う気がします。これに気を良くしてこのプロジェクトが終わったらがっつり自分プロジェクトをやってみたい、と思っています。ま、自分プロジェクトだと自己管理が難しくてうまくいかないことが多いのですが。言うだけ言ってみて、できるかどうかは、がんばってみます。その前に、このプロジェクトをしっかりやりきろう。

というような感じです。あまり先を見すぎずに、まずは目の前のことをしっかりやっていこうと思います。今年もよろしくお願いいたします。