2013/02/04

Linux から L2TP/IPsec で VPN

最近、Softether が開発している PacketixVPN 4.0 に、L2TP, OpenVPN, MS-SSTP が対応して、その界隈ではとても熱い感じです。
おかげで、様々なクライアントから特別なソフトウェアの導入なしにつなげるようになったことで、夢が広がります。
まだ、ベータ版というか、RC1 の状態ですが、ダウンロードして試すことができます。

クライアントから、手軽に L2TP/IPsec したいよね?

そんなわけで、Linux からも L2TP/IPsec で VPN したいわけです、しかも手軽に。
クライアントからつなぐ際、PPTP とか OpenVPN であれば、NetworkManager が対応しているわけなんですけど、L2TP/IPsec は StrongSwan が対応しているようで、なんかうまくいきません。
(少なくとも PSK, 事前共有鍵 を使った接続はできなさそうだった)

設定ファイルをぽちぽちいじるのも、なんか前世代的で面倒です。
それに、結構色々設定しなきゃいけません。

l2tp-ipsec-vpn を使ってみる


色々探してみたのですが、OpenSwan をバックエンドとして使う l2tp-ipsec-vpn を使うのが良さそうです。
これなら、GUI からぽちぽち設定してつなぐことができます。PSK にも対応してます。

Debian (wheezy 以降) や Ubuntu であれば、以下のようにしてインストールするだけです。
sudo apt-get install l2tp-ipsec-vpn
メニューから GUI のプログラムをたちあげると、上記のような設定画面が出てくると思います。

設定とか

接続の設定画面はこんな感じですね。
"Use pre-shared key for authentication" の部分に PSK (事前共有鍵) を入力します。

今回の接続先の、Packetix VPN の L2TP/IPsec は PAP にしか対応していませんので、PPP タブに移って、"Allow these protocols" を選択して PAP にチェック入れた後、"User name" と "Password" を入力します。

それと、"IP Settings" の中の "Obtain DNS server addresses automatically" にチェックを入れておきましょう。
これにチェックを入れないと繋がらないかもしれません。
または、DNS サーバーのアドレスを手動入力しましょう。

設定が終わったら、GNOME3 であれば、右下のタスクバーみたいなところに l2tp-ipsec-vpn が常駐しているはずなので、設定名をクリックするとつながります。

初期設定は、VPN を貼ったネットワークがデフォルトゲートウェイになるので、設定を変更したい場合は "IP Settings" -> "Routes..." で設定しましょう。

Linux でも割と手軽に、L2TP/IPsec で VPN を張ることができました。
接続先も Packetix VPN を使えば、とても簡単に設置することができるので、良い時代になりましたね...

2013/01/13

MacBook Air のキーボードを分解掃除した

普段は MacBook Air に Debian を入れて、持ち運び用の使っているのですが、正月に気を抜いたら、キーボードに飲み物をこぼしてしまいました。しかも、ファンタグレープ...
なかなか拭く物が見つからず、少し染みこんでしまったようです。

おかげで、数日後に、水飴状になったファンタが、キーボードの動きを固着させてくれたというか、全体的に動きが悪いです。
すぐキーが戻ってこなくなるとか、パリパリした音がなるとか。

なので、思い切って分解しました。
といっても、MacBook のキーボードは、キーの下の方を爪で引っ掛けて、上方向に持ちあげれば、簡単にパチっと外れます。
割と力を入れてもそれなりに大丈夫ですが、自己責任で。

こぼしてしまったあたりを分解して、パンタグラフの部分も取り外して楊枝を駆使して掃除しました。
ほとんど元に戻ったのでよしとしますが、あと1年ぐらいは持ってくれないとな...

Apple に持って行ったら、キーボード全交換とかですごい額取られそうである。
キーボードの表面だから良かったけど、Apple の製品は気軽に分解して掃除できないのは、ちょっと苦しい。

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
めでたしめでたし。