2013/01/09

Python の JSON モジュールの速度を比較してみる

とりあえず結果から

Python 2.6 の json モジュールはかなり遅いみたいです。
速度を気にする場面では避けたほうが無難です。
Python 2.7 以降では改善されているよう。(3.x は未確認)

以下、結果の詳細

ちょっと速度が気になる場面が出てきたので、自分で少し JSON のシリアライズのベンチマークを取ってみた。
Python 2.6 から、標準で json モジュールが組み込まれていますが、これ以外にも様々なモジュールがあります。
確か、組み込みの json は simplejson が元になっているような気がしました。

ベンチマークのとり方は、今回利用するアプリケーションに特化したベンチマークを取ろうとしたので、その形式になっています。
単純な50万個のリストが並んだリストです。シリアライズのみ。

ベンチマークに使ったコードは以下においておきます。
https://gist.github.com/4486729

2013/01/05

Raspberry Pi のセットアップから日本語化まで

先月辺り、僕のところにもやっと Raspberry Pi が届きました。

"ラズベリーパイ"というこのボード、$35 で買える ARM の SoC が乗った名刺サイズコンピューターというやつです。
Linux が動いて HDMI, LAN, USB がついていて、SD カードがストレージになります。
RAM は 512MB も積んでいます。(僕に届いた新しいモデルの場合)

詳しい仕様は、以下のサイトを見てみてください。
とにかく、ガジェットオタクとしては格好のおもちゃなわけです。
しかし、乗り遅れたこともあって、7月初めに注文して、届いたのが12月初旬という...

とりあえず動かしてみる

とりあえず Raspberry Pi を動かしてみたいと思います。

まあ、Raspbian という Raspberry Pi 向けの Debian が用意されていて、これを書き込むだけなんですけど。
必要なものはこんな感じです。
  • MicroUSB ケーブルか、MicroUSB ACアダプタ
  • 4GB 以上ぐらいの SD カード
  • USB キーボード・マウス
  • HDMI ケーブルと対応したディスプレイ
  • 有線 LAN (ソフトウェアのインストールに必要)

2013/01/02

"Your Twitter archive" が来た!

Twitter ユーザーの長年の悩み、 それは Twitter に投稿したつぶやきの過去ログが全て見られないこと。
現在は、Web インターフェース上ではある程度しか遡ることができません。
しかし、Twitter もユーザーがすべての Tweet を見れるのを望んでいることはわかっているようで、近日中にできるという噂は聞かれていました。

そして、先日やっと正式にアナウンスがあったわけです。
Twitter Blog: Your Twitter archive

すべての Tweet がダウンロードできるようになるというもの。
ただし、現在は英語版に設定しているユーザーの中でゆっくり機能の適用が進行中ということで、すべてのユーザーに浸透するまで数ヶ月ぐらいかかるようです。

今日確認したら、僕のアカウント (@hktechno) にはすでにこの機能が来ていました。
まだかまだかと待ち望んでいたのでいすが、思ってたよりははやく来た感じです。
はやく全員がこれができるようになる、そして Web で見れるようになるといいですね。

ダウンロードすると、Twitter の生データとしては JSON 形式に抽出できる js ファイルと、CSV のファイルが含まれていました。
その他に、綺麗に UI が整備されたローカルで動く HTML と JS が同梱されていて、過去の自分の Tweet を閲覧・検索することができます。

ちなみに、僕の Twitter の "Your Twitter archive" を当面の間以下に公開しておきます。
悪趣味な方は見てみると良いかもしれませんw
http://tweets.hktechno.net/

ちなみに生データはここから。開発用に?どうぞ。
http://tweets.hktechno.net/data/

2012/12/31

2012 年のまとめと 2013 年の予定

こんにちは。
もう、2012 年も終わりですね。

新しいブログを始めようと思って Blogger で始めたものの、この半年ちょっとであまり書けてなかった。
ブログってあとで見て面白いので、今から来年になるまで、今年あったことを書けるだけ書いてみようと思います。

2012年の hktechno を三行でまとめると

  • 未踏、スーパークリエイターになりました
  • 不思議な会社を流れで変な人と共同で設立しました
  • 大学は無事2年生の無限ループから脱出できました
こんな感じですかね。
いつもより、大きな動きがある1年だった気がします。

Open Design Computer Project と未踏


ご存知の通り(?)、今年はほとんどこれをやっていました。
http://open-arch.org/

オリジナルコンピューターの制作、僕はその開発環境の開発をやっていました。
プロジェクト自体は去年から続けていて、今年は未踏に採択されて、引くに引けない状況、というやつですね。
去年の段階でほとんど仕様などは決まっていたので、今年はずっと実装してました。

といっても、本気で集中できたかと言われたら、なんとも言えないかなぁ。
未踏の期間が2月からで、最初の頃は binutils の移植をして、4月ぐらいから gcc の移植を始めたわけですが、躓いてばかりだったな...
今違うアーキテクチャの移植をしろとか言われたら、もっとはやく移植できたと思うけど、これは後の祭りというやつで。

未踏の開発期間はあっという間に流れてしまった感じですけど、色々意見をもらえたり、サポートがあったり、出会いがあったり、面白かったです。
ただ、未踏ってもっとすごいところだと思っていたのだけど、そのイメージはなんか崩たかなー。
すご開発者がいっぱいいるわけではなく、すごい発想が浮かぶ人がいっぱいいるみたいな。

技術だけじゃうまくいかないんですよね、それがよくわかったというのもあります。
ただ、僕は技術オタクなので、実装力ないとむかついてくるんですよねwww
発想力は他の人に任せて、僕はこれからも技術を極めていこうかなと... まだまだですが。
職人的なイメージというか、プログラムを書くことにこだわりを持つ人間になりたい。

それでも、なんだかんだでスーパークリエイターに認定されてしまいました。
特に認定されたからってどうってことはないんですけど、なんとなく嬉しいですよね。
最初の頃はスーパークリエイターになってやると思ってましたけど、開発期間後半になるにつれだんだん自信なくなってきて、だめかなぁ思っていたので、意外でした。
もしかしたら、採択されたのも偶然だったのかもしれませんが...
担当していただいた、越塚PMと未踏関係者の皆様ありがとうございました。

話は戻って、プロセッサ開発、僕はプロセッサ自体を開発してたわけじゃないですが、仕様考えたり、自分たちで良いと思うものを考えて創りだすのって楽しいですよね。
本当は、それに乗るオペレーティングシステムまで開発したかったのですが、コンパイラもできてないのに、そこまで開発できるはず無いですよね...
これから頑張ります。
来年の目標かな、そううまくはいかないだろうけど。

未踏のこともうちょっとブログに書きたかった感もありますね...

未踏の出会いとビックリバコ株式会社の設立


8月で未踏が一段落ついて、後半はこれに関わっていました。
まあ、早い話が起業に関わったなわけなのですが、全く先が見えません!!
僕が社長でも無いですし、Co-Founder になるのかもしれませんけど、お手伝いをしてあげる、というぐらいのつもりでした。
しかし結局出資金もある程度出して、取締役になって... という感じなので、共同経営者なのか?あまり実感が無いけど。

ほかから出資とか全く受けてませんし、まったりやっていこうと思います。
いいです、しばらくはそれで。とりあえず、潰れない程度に、ある程度楽しめれば。
当たり前のように、考えが甘かったというのもありましたけど、まあのりで...

社長さんは、未踏で同じPMの担当だった人で、僕とは正反対の人です。
インタラクティブ系だし、実装力全くないけど、アイデアはなんか変なものが出てくる。
未踏のお金もあったし、誘われたのでなんかやってみようという感じです。
とりあえず、今も頑張ってます。

今は、一緒にやってる相手が未踏で開発してたサービスが余りにもあれ(とか言っちゃいけないけど、開けてはいけないパンドラの箱だった...)なので、それをやりつつ、受託も面白そうなの受けてみようか、といった感じです。
とりあえず、リリース予定のサービスがこれ。当たるかどうかはかなり不明。
僕にお仕事を投げてくれる人がいるのであれば、いろいろ考えますよ!(と一応宣伝)

未踏の出会いってすごいですね。
人との出会いは大切にしなきゃいけないですね...

その他

来年は大学4年生になれそうですよ!
去年留年してしまいましたけど、今年はちゃんと3年生になれて、順調です。
よかったよかった。

来年は、つまり進学か就職か... ってところなのですが、前述の会社の話もあるので、たぶん進学します。
そのまま今の大学の大学院にいければいいのですが、これまた数学の壁があるため、そのままうまく行けるかどうかはわかりません。

うう、ってここの時点で来年まであと10分しかない...

来年の目標

あきらめないで走り続ける!
技術をもっと極める。
もっと幅広い視野を持つ。
うまくいかなくても、逃げない。
週1ぐらいでブログ書く!
なんか自慢できることをひとつやる。
mist32 アーキテクチャに OS 載せる。

時間がないから終わり!!

2012/12/26

gitolite で誤った公開鍵を設定して gitolite-admin を push してしまった時の対処

gitolite を、某所で導入しているのですが、先日やらかしてしまったことを...

gitolite といえば、git リポジトリをたくさん作って管理するのにとても最適なソリューションなわけですが、公開鍵の設定とかも gitolite-admin というリポジトリを使って設定するようになってるんですよね。

この前、公開鍵の設定をするときに少しミスってしまいました。
keydir/user_name.pub に公開鍵を設定するのですが、複数の鍵をこのファイルに入れられると思っていたのですよね。

しかし、そううまくはいきませんでした。
$ git push
Counting objects: 9, done.
Delta compression using up to 3 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (5/5), 1.56 KiB, done.
Total 5 (delta 0), reused 0 (delta 0)
remote: Already on 'master'
remote: WARNING: a pubkey file can only have one line (key); ignoring foo.pub
remote: WARNING: a pubkey file can only have one line (key); ignoring bar.pub
というわけでダメみたいです。
gitolite は、authorized_keys と違って、ひとつのファイルにひとつの鍵しか入れられないみたいです。
WARNING を出してきたくせに、reject されませんでしたが、もう一度修正して push してみると...
$ git push
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
(ノ∀`)アチャー

試しに root でログインして、/var/lib/gitolite/repositories/gitolite-admin.git を直接 clone して見ましたが、push しようとすると...
# git push -f

Counting objects: 10, done.
Delta compression using up to 3 threads.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 1.75 KiB, done.
Total 6 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (6/6), done.
remote: Use of uninitialized value in do "file" at hooks/update line 36.
remote: Null filename used at hooks/update line 36.
remote: error: hook declined to update refs/heads/master
To /var/lib/gitolite/repositories/gitolite-admin.git
 ! [remote rejected] master -> master (hook declined)
error: failed to push some refs to '/var/lib/gitolite/repositories/gitolite-admin.git'
(ノ∀`)アチャー

と思っていたのですが、救いの手がちゃんと用意されていました。
# su - gitolite
$ cd .ssh
$ ls
authorized_keys  known_hosts  old_authkeys
ちゃんと一つ前の公開鍵がここに設定されているんですよね。
これを書き戻すだけでどうにかアクセスできるようになりました。
$ cp old_authkeys authorized_keys
めでたしめでたし。

2012/10/07

Debian wheezy で Skype を使う (Multiarch)

最近、amd64 な Debian sid (wheezy/testing) で Skype が使えなくなったー。
と思っていたのですが、どうも Debian が Multiarch に対応したようですね。
ARM 周りのサポートおかげでしょうか?
そのおかげで、ia32-libs などがなくなって、Skype の 64bit 版が使えなくなりました。
しかしながら、Multiarch を使えば、引き続き使えるようなのでそれをご紹介。

Multiarch とは、例えば i386 のバイナリを amd64 な kernel, マシンの上で動かせるようになるものです。
メインターゲットは x86 ではなく、ARM も複数の arch が最近出てきて (armel, armhf) その周りの対応のおかげのような気がしないでもありません。
このあたりに詳しいことが書いて有ります。

とりあえず、Multiarch で x86-64 なマシンの上で、i386 バイナリが動くように設定してみましょう。
やりかたは、Debian Wiki を参考にしました。

Architecture の追加

まずは dpkg に、multiarch で使う新しい architecture を追加します。
$ sudo dpkg --add-architecture i386
以下のように、foreign-architecture が追加できたことが確認できます。
$ sudo dpkg --print-architecture   
amd64
$ sudo dpkg --print-foreign-architectures
i386

apt の設定

/etc/apt/sources.list を以下のように編集します。
deb 行の [arch=amd64,i386] の部分を追加してください。
deb [arch=amd64,i386] http://ftp.jp.debian.org/debian/ wheezy main non-free contrib
deb [arch=amd64,i386] http://security.debian.org/ wheezy/updates main contrib non-free
それができたら、apt-get update します。

やらなくて良いみたいです。、

Skype のインストール

まずは、依存関係からチェック。
Multiarch で他の arch のバイナリをインストールする場合、パッケージ名に :i386 のような postfix をつけます。
$ sudo dpkg -I skype-debian_4.0.0.8-1_i386.deb
 Depends: libasound2 (>> 1.0.18), libc6 (>= 2.3.6-6~), libc6 (>= 2.7), libgcc1 (>= 1:4.1.1), 
libqt4-dbus (>= 4:4.5.3), libqt4-network (>= 4:4.5.3), libqt4-xml (>= 4:4.5.3), libqtcore4 (>= 4:4.6.1), 
libqtgui4 (>= 4:4.6.1), libstdc++6 (>= 4.4.0), libx11-6, libxext6, libxss1, libxv1

$ sudo aptitude install libasound2:i386 libc6:i386 libc6:i386 libgcc1:i386 libqt4-dbus:i386 
libqt4-network:i386 libqt4-xml:i386 libqtcore4:i386 libqtgui4:i386 libstdc++6:i386 libx11-6:i386 
libxext6:i386 libxss1:i386 libxv1:i386
Skype のサイトから 32bit (i386) 版をダウンロードしてインストールします。
$ sudo dpkg -i skype-debian_4.0.0.8-1_i386.deb
これでおわり。
他にも Multiarch が使えるようになると、色々できるようになるので、使ってみてください。

追記:
Debian Wiki にもやり方が掲載されてました。こちらもご覧ください。
http://wiki.debian.org/skype

2012/08/27

セキュリティ・キャンプ 2012 のお手伝いをしてきた


すでに1週間前の話になりますが...
(写真は今年の宿泊場所の夜景、34階!)

セキュリティ・キャンプ 2012 に、1年ぶりにお手伝いに参加してきました。
http://www.security-camp.org/

まず、セキュリティキャンプを知らない方のために簡単に説明しておくと、応募用紙のマジキチ比較的お手柔らかな問題と熱意を提出した中から選ばれた学生を、5日間研修施設に閉じ込めて招待して、クラスごとに最強の講師陣がセキュリティに関する講義と演習とCTFを開催するイベントです。

セキュリティ・キャンプ (前年度までセキュリティ&プログラミングキャンプ) には、チューター制度というものがあり、参加者ではなくチューターとしてお手伝いに参加することができます。
2008年にキャンプに参加して、09, 10 と2回チューターをやって今年で3回目です。
そろそろやめなくちゃなと思いながらも。