2010年3月2日火曜日

デブサミ 2010 そして OSC 2010 Tokyo/Spring に参加してきました

OpenSolaris のコミュニティでは、なぜか山形県在住なのに Tokyo OpenSolaris User Group の Leader の1人となっている私ですが、デブサミ2010 そして OSC 2010 Tokyo/Spring に参加してきました。デブサミ2010 のほうは特にコミュニティの代表ということで、OpenSolaris のブース入りし、ライトニングトークでもちょっと喋らさせていただきました。



また、OSC 2010 Tokyo/Spring では関係者というよりも普通の参加者としてお忍び(?)で参加してさとうさんを驚かせるというネタを仕込んだのですが、一通りネタを披露した後は OpenSolaris のブースでご紹介とOpenSolaris 2009.06 の CD 配布などを手伝わせていただきました。OSC 2010 Tokyo/Spring では、ライトニングトークだけではなく、新機能の説明セッションも開催されましたが、また例によってライトニングトークの模様をYoutube にアップロードいたしました。



この2つのイベント、IT系のイベントという共通項はありますが、雰囲気の異なるイベントでして、重厚(?)な雰囲気のデブサミに対して学園祭に近い賑やかさが魅力のOSCとそれぞれ異なった魅力がそれぞれのイベントにあったと思います。

一連のイベントで印象深かったのは、デブサミのほうに参加された、すくすくスクラムさんやDevLOVEさんのような現場改善をめざすグループの和気藹々ぶりが光ってたことです。どうしてもITなお仕事はバグ取りとか障害対応とか心が後ろ向きになりがちなイベントが多いのですが、コンピュータを作ってモノを作ることそのものの楽しさや意義を再確認させられました。

また OSC 懇親会でお話した @nanbuwks さん提唱の #hydrastyle が非常にクールで感動しました。そうだよ小池スタイルなんてヌルい、ヌルすぎだぜ。小池スタイルが登場してから漠然と持っていたモヤモヤを解消してくれたということでこれは個人的にツボでした。

OpenSolaris のコミュニティーという看板のようなものを掲げて遠征してきましたが、こういったイベントに出てくる方々はみなすばらしい人ばかりで色々な刺激を受けて帰ってきました。ひたすら hack にいそしむのも悪くはないのですが、こういったイベントに参加するというのも有意義なことなのかもしれません。

2010年2月23日火曜日

twitter 発(?)の IPS mirror ツール

ブログではご無沙汰になってしまいましたが、みなさんいかがお過ごしでしょうか。私は相変わらず OpenSolaris 使い込んでいます。

OpenSolaris では IPS というパッケージ管理システムが導入されて、このシステム経由でパッケージやシステム全体のアップデートを行うのですが、この IPS サーバは実はpythonでwebアプリとして書かれています。普通に使っている分にはあまり気にならないのですが、バリバリ開発していると手元にこの IPS レポジトリのミラーが欲しくなります。

IPS レポジトリについては根こそぎミラーする術は公式には用意されていないのですが、IPSサーバは OpenSolaris に組み込まれているので、配布されているものをうまく準備できればミラーを作ることが可能です。ミラーを作る術についてはこれまでにもいくつかのスクリプトが作られており、中でも Andrzej Szezo さんの ips-mirror.py スクリプトが有名です。

このスクリプトを使うと一応ミラーを作ることは可能なのですが、IPS サーバ側の事情なのかたまにファイルの一部が欠落してしまったり、そもそもダウンロードするファイルの数が膨大(リリース1つx86/sparc両方ダウンロードで大体 350,000ファイル程度)だったりと、なかなか大変な仕事だったりします。

折しもさとうさんがtwitterでこの辺のことをボヤいていたこともあり、ips-mirror.py を改造してみたら、まるで「ぶっこぬきツール」なものができて関係筋に受けてしまったので、fork という形で ipsget.py ということで公開してみました。

ipsget.py についてはさとうさんイカす記事を書かれていたので、使い方の説明はそちらに任せて、ちょっとしたポイントを紹介したいと思います。

この IPS ではファイル名を自分自身の sha1sum 値にしてさらに gzip 圧縮しているのですが、ダウンロードしたファイルを検証するために sha1sum を調べる機構が必要になります。この機構、python 2.5 以降では hashlib モジュール、 python 2.4 までは sha モジュールでそれぞれ提供されています。さらに Solaris 10 では python 2.4 のみということなので、普通に考えれば hashlib バージョンと sha バージョンを用意しなければならないということになりますが、それではちょっと残念だったりします。

じゃあどうしようかということで、苦肉の策で書いてみたのがこんな感じです。
try:
from hashlib import sha1
except ImportError:
from sha import new as sha1

(途中略)

hash = sha1(gzip.GzipFile(fileobj=sf).read()).hexdigest()

なんか微妙な技を使ってしまった気がしますが、そんなこんなで OpenSolaris と Solaris 10 の両方でなんとか動くものができました。ということで、IPSをバリバリミラーしたいという方で気が向いた方がおられましたら ipsget.py おためしください。