衆院選の選挙期間にも入ったということで、意識の高さを発揮し、議論を深めるために選挙カーAAとそのジェネレーターを作った(元はワゴン車AA)。久しぶりにJavaScript書いてちょっと疲れた。あと、AAの作り方に関する知見が深まった。
衆院選の選挙期間にも入ったということで、意識の高さを発揮し、議論を深めるために選挙カーAAとそのジェネレーターを作った(元はワゴン車AA)。久しぶりにJavaScript書いてちょっと疲れた。あと、AAの作り方に関する知見が深まった。
今更だけど、Go言語(golang)を始めようという気持ちになった。8割方はなんとなくだけど、Windows用のバイナリを作りやすいという噂があるのと他のプラットフォームにも対応させやすそうな感じがするので。
モバイル環境で開発できるといいなということで、残りストレージ7GBくらいしかないけどWindows 8.1タブレット(32bit)をメインの開発環境にすることにした。まともなBluetoothキーボードはあるのでコード書くのに不便なことはないはず。
入門するのにどのあたりから入るのがいいか最近golangとかscalaづいているという話のはて社の美顔器氏に伺ったところ A Tour of Go と Go by Example を教えてくれたのでこのへんをいじってみようかと。あと適当にe-book探したら An Introduction to Programming in Go が引っかかったので配布されてた無料のPDF版をKindleに突っ込んでみた。この本の情報が古い可能性はある。
そんな感じでやっていく気持ちが出てきたところで、初日だしとりあえず端末にコンパイラ入れるかということで公式サイトのインストーラー(go1.3.1.windows-386.msiってやつ)を使って入れた。普通にさくっとインストールできたので特に問題なし。Windows再起動したらパスも通ってcmd.exeからもcygwinからもgoコマンド叩けるようになった。
Google Latitude廃止まではLocation Badgeを公開にしておけば認証なしでjson APIっぽく現在地取れたけど、廃止されてから取れないので代わりを模索中。具体的には、現在地を取得して、Twitter IRC Gatewayからの投稿に位置情報として付加していたのができなくなっている。
まず最初に考えていたのがGoogle+ APIのプロフィールのcurrentLocationプロパティから取るのだったけど、地名しか取れないので精度の問題でよくないのと、APIが面倒でよくわからない(試しに取ってみたらcurrentLocationとかみつからなかった)。なので、諦めた。
で、いけそうかなと思ったのがこれ http://stackoverflow.com/a/17626982 。Location HistoryはGoogle Mapsに統合されて生き残ってるので、KMLのAPIを叩いて取得するという方法。大体リアルタイムに反映されているのでLocation Historyで問題ない。ただ、これはWebでGoogleにログインしていないと取得できない。自分だと二段階認証設定しているのでわりと面倒なので、Mechanizeでcookie保存とかもしつつやる感じになりそう。なので、やる気が高まったらやりたい。
tiarraは自宅サーバーで動かしていて、サウンドドライバも入れていてスピーカーにもつないでいるので、notifyするときのユーザー名を喋らせてみることにした。
喋らせるの(Text to Speachだっけ)はespeakとかいうのを入れた。
$ sudo apt-get install gespeaker xsel
それで tiarra/module/Auto/Notify.pm の適当な使ってるところに(自分だとここでいじった send_nma の中 )
my $username = $msg->prefix;
$username =~ s/[!@].*//;
$username =~ s/[\W\s]//g;
system "/usr/bin/espeak '".$username."'";
こんな感じで追加。Perlもtiarraのオブジェクトがどうなってるのかもよくわからないので適当だけど動いている。
今年を振り返るかーと思ったのでメモ。最初に再生した順とか再生数ならLast.fm見ればいいしその辺は便利。
$ sqlite3 /var/cache/mt-daapd/songs3.db
sqlite> .output albums2013.txt;
sqlite> select artist, album from songs where time_added > 1356966000 group by album order by time_added;
sqlite> .quit;
これでalbums2013.txtに2013年にライブラリに追加されたアルバム一覧が出力される。1356966000っていうunix time直接入れているところはさくっと日付からsqliteで変換してもらう方法あるような気もするけど調べるのめんどいので直接指定してある。
ログインめんどいのと他人も公開してくれると参考になってうれしいので先に率先してTwitterに自動投稿するようにした。発送情報とかもとってもいいけどとりあえず注文履歴だけ数時間おきにチェックするように。他のお買い物サイトも統合したい感じはある。
Google Latitude 対応とか勝手にして煮詰めたタレの概念を導入してしまい危ういところだったけれど、対応した。
元: https://github.com/cho45/net-irc/blob/master/examples/tig.rb他の部分の対応は適当に 1 を 1.1 に置き換えたりすれば使えたりするので省略して、APIのバージョンをpathに書かなくていいようにしたり page(path, query, name, authenticate = true, &block) で呼べるようにしたりした後、
lists = page("1/#{@me.screen_name}/lists", :lists, true)
を
lists = api("lists/list",{ :screen_name => @me.screen_name }, true)
に、
members = page("1/#{@me.screen_name}/#{list.slug}/members", :users, true)
を
members = page("lists/members", { :owner_screen_name => @me.screen_name, :slug => list.slug, :list_id => list.id }, :users, true)
にしたらそれっぽくなった。うちは雑な環境なので tig.rb ベースが楽だけれど、今だと atig の方が普通の人は楽かもしれない。
JavaScriptを切ると使えないAjax使ってるサイトが嫌いで、RailsやるのにもあまりAjaxとか使わない方がいいかなと思ってたけど、簡単にAjaxを使いつつJavaScriptオフでも不自由なく使えるような実装ができるようになっていて便利な時代になったものだと思った。
それっぽく一通りできる感じになった気がする。昔symfony使ってたので思い出してきてやりやすかった。coffee script デフォだったので少しいじったけど慣れるにはもう少し時間かかりそう。慣れたら楽なのだろうけど。Ajaxもそれなりに便利にできた。本とか全然読んでないけどどうなんだろ。DBは、タグの実装とかはRDBよりMongoDBの方が楽で好きなのでMongoDB(mongoid)使ってるけどActiveRecordだからそんな呼び出し方とかはそんな変わらないということだろうか。とりあえずやりたい処理はできているのでいいのだろうけど。
今後の予定
あと、Rails関係なくWebフロントエンドデザインからコーディングをちゃんとかつサクッとできるようになりたい。
知り合いにRails使いは多くいるものの、入門の割にはあまりがしがし聞かずに勝手に調べてやってるのですこしずつ進んでいる。