2013年7月30日

Web サイトのページを at コマンドで公開予約

全然目新しくない話だけど。

今日新曲を公開したのだが、自分の場合最近は動画サイトに動画をアップロードすることが多い。
動画をアップロードする場合、サイトへのアップロードとサイト側での変換で待ち時間もあるし、複数のサイトにアップロードするならサイトごとに待ち時間もマチマチ(ギャグじゃない)なので、一応公開時間が同時になるように公開予約登録するように最近はしている。
単に足並みを揃えたいという個人的な欲求を満たすためだけど。

で、動画は予約登録できるんだけど、動画ファイルを紹介するサイトを作る時にそっちも予約公開したいなと思ったので、今回は at コマンドを使って予約登録してみた。

Clip to Evernote

2013年7月25日

html2jsonml

https://bitbucket.org/oov/html2jsonml

HTML から JsonML に変換するツールを作った。
JSON が処理できる環境ならこれで簡単に HTML を分解処理できて便利。だと思う。

Go 言語の HTML パーサは HTML5 のルールに従っているらしいので DOCTYPE 宣言の前に script タグが出てくるとか、HTML タグが2回始まってるとか、「色々 HTML 側が頭おかしくてもブラウザが表示できてるからセーフ」っていう類の書き間違いは大体上手く処理できるんじゃなかろうか。
Clip to Evernote

2013年7月11日

「『作曲できる奴ちょっとこい』のデータで遊ぶ」の作り直し

2010年の12月頃に作った作曲できる奴ちょっとこいのデータで遊ぶを、久しぶりに作りなおしてみた。

当時はまだ正式リリース前の Go 言語を使って HTML の取得とサイトの表示を、取得した HTML の解析には Python で BeautifulSoup を使っていた。
今日では Go 言語も正式リリースされ、HTML 解析周りの処理もサブリポジトリで exp を卒業して code.google.com/p/go.net/html になり、github.com/PuerkitoBio/goquery のようなお気楽なライブラリもあり、頑張らなくても楽しい時代がやってきた。甘い汁美味しい! 甘い汁美味しい!

データの格納先に関しても、Go Team による LevelDB の実装はまだ未完成らしいのだが、探してみると github.com/syndtr/goleveldb は Pure Go 実装でキビキビ動いてくれるので SQLite3 だった前回とは違い今回は LevelDB に変更した。甘い汁美味しい! 甘い汁美味しいよおお!

そんなわけで今回はデータ収集、解析、サイトまで全て Go 言語で作り、しかも Cgo も使わずに完成まで辿りつけたので、クロスコンパイルで各プラットフォーム用のバイナリを生成して、サイトをまるごと配布してみた。
展開状態でも LevelDB が Snappy で圧縮されてて 150MB ぐらい、全体的に重複部分が多いので全体を 7z で固めても 40MB を切る程度のデータ量に収まって満足。

面白い歌詞生成して遊びましょう
Clip to Evernote