メールのDateとReceivedの時間を見て処理時間が分かったりしていいかも、一覧性も上がるかも、ということで書いてみました。ほんとはwebサービスにしてもいいかなと思ったんですが、根性がないのでとりあえずProof of Concept。成功と失敗の判定をして、別々のカレンダーに投げてます。それぞれ色を変えておきます。あとはiCalなりカレンダーなりでアラートするといいかもしれません。できるんかな?ま、まわりくどいのは重々承知でございます。
githubのissuesをバックアップする
最近githubにレポジトリを置いてプロジェクトを2件まわしまして、どちらも無事に終了しました。で、gitとかwikiとかはぜんぶgitで落としてきてどこへなりと置いておけばいいのですが、issuesをどうしようかしら、という問題に。githubに聞いてみたら、issues apiがあるからそれでよしなにやってくださいと言われてしまいました。で、使ってみたらバックアップって言うよりは、クライアントアプリを作るときにdashboardを再現する為に作ってあるような感じで、全部まるっととってくる感じじゃなかったです。結局、issuesって連番で、削除がないので、ものすごく単純にhtmlをガーッととってきてtarで固めておけばいいや、ということになりました。取得部分だけですが、こんな感じ。まあぐるぐるまわしてるだけですね。
iOSの勉強を何年かぶりに再開した
各方面から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!
大事なことなので二度いいました!
http://journal.soffritto.org/entry/506でお知らせしていたオーストラリア旅行は満貫叶って帰国したあとに自分向けのお土産のお酒の瓶を割ってしまい、「気を抜くべからず」という警句も受けて、さらによい旅になってしまいました。
えー、試合後につるんでる皆様には750mlではございますが、オージーワインを今度持っていきますのでよろしく。
最近duckduckgo使ってます
ご存知ですか。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
- OAuth2 authentication http://code.google.com/intl/ja-JP/apis/accounts/docs/OAuth2.html
- changes http://code.google.com/intl/ja-JP/apis/documents/docs/3.0/developers_guide_protocol.html#Changes
- resumable upload http://code.google.com/intl/ja-JP/apis/documents/docs/3.0/developers_guide_protocol.html#UpdatingContentResumable
- archive http://code.google.com/intl/ja-JP/apis/documents/docs/3.0/developers_guide_protocol.html#Archives
たいへんや
Linux のバックアップを Time Capsule にとる
恥ずかしながら、自宅サーバーのバックアップをまじめにとるぞ!とやっと思い立ちまして、以下のような手順でやることにしました。
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 休暇を頂きます
ソフリット檀上です。 表題の通り、3/5 ~ 3/7の間休暇を頂きます。 その期間、メールの確認は一日一度程度、緊急時のリモートでの対応も 回線状態によりできない可能性があります。 期間中の作業予定がありましたら、前倒しで対応いたしますので ご連絡ください。 通常業務には3/8より復帰いたします。 期間中はご不便をおかけしますが、よろしくお願いいたします。
ということでACLデビュー戦を見にオーストラリアにいってきます!初の南半球!
あけましておめでとうございます
天皇杯決勝、楽しかったです。思わず「よいお年を」と言ってしまう感じの、年の切れ目がぼやけた感じがよかったです。来年?今年?もまた決勝まで行きたくなります。ルーコンの言う通りだわー。ACLも楽しみです。J1はまずは残留目指してがんばりましょう。
弊社というかお仕事の近況です。年末までがっつりやってた案件がまだ続くんですが、年末年始のお休みに入ったタイミングで若干気が緩んでしまったので、昨日あたりから気合いを入れ直してもうひと頑張りです。ここ2ヶ月は独立して以来一番働いてる気がします。意外に体力が残ってたなー、というのと、独立して4年経ってペース配分がマシになってムラが減ったのかなー、と言う気がします。これに気を良くしてこのプロジェクトが終わったらがっつり自分プロジェクトをやってみたい、と思っています。ま、自分プロジェクトだと自己管理が難しくてうまくいかないことが多いのですが。言うだけ言ってみて、できるかどうかは、がんばってみます。その前に、このプロジェクトをしっかりやりきろう。
というような感じです。あまり先を見すぎずに、まずは目の前のことをしっかりやっていこうと思います。今年もよろしくお願いいたします。