ページ

2010年4月30日

ServersMan@VPSが使えるようになった

ちょっと前に申し込んだServersMan@VPSですが、やっと使えるようになりました。

とりあえず、ほとんどすべての人がsshでログインして最初にやることは、cat /proc/cpuinfo だと思います。これをやると、えっ、めちゃくちゃ沢山出てきます。僕はCPUは2個か4個ぐらいだろう、多くてもHyerThreadを含めて8個だろう、と高をくくっていたら、CPUの数は16個もあります。CPUは「Intel(R) Xeon(R) CPU L5520  @ 2.27GHz」です。僕はこれがどんなものか知りませんが、クロック数を見ると悪くなさそうです。

使用できるメモリは256Mなのですが、こっちはまだ、サービスをまともに動かしていないのでわかりません。メモリが足りなければ、もう一個上のプランが1000円弱で、メモリが512Mも使えるので、移行してもいいレベルです。2000円出せばメモリが1Gになります。

上のプランはサーバ管理ツール(詳細は知らない)がついていますが、500円の安いものはついていません。サーバの管理自体はシェルでできればいいので気になりませんが、モニターするには自分でがんばらないといけないようです。CPUとかメモリ、ディスクIOとか、基本的なところだけモニターしたかったのですが、ぼちぼち設定してきます。

ネットワークはどれくらい出るか、しりません。sshでつないで操作している分には不満はありません。それから、IPv6のアドレスもちゃんと割り振られています。将来的にも安心です。

OSはCentOS 5.4です。パッケージが古くさいです。安定性というか、安心感をとるか、先進性をとあるかという選択なんだと思いますが、僕はubuntuとかの新しめのパッケージが入っているものが好みです。まあ、おインストールされているPythonが2.4という化石だと言うのが不満の理由なんですが。と言うことで、Python2.6をインストールしました。

そのうちデータベースを入れて、ごにょごにょし始めます。まあ、何があってもこの安さにはかなわないでしょう。



lxmlのメモ

ちょっと、htmlをパースしたくなりました。パースしたものをxpathで操作してみたくなりました。BeautifulSoupを使おうと思ったのですが、googleさんのお告げによるとlxmlらしいです。lxmlってxmlパーサーだとじっちゃんの代から言われていたので、htmlも食べてくれるとは知りませんでした。パッケージを見ると、lxml.htmlモジュールがいます。いけそうな感じです。どれくらい変なhtmlに対応しているかは分かりませんが、この記事によるとBeautifulSoupの13倍速いらしいです。IBMの記事だとlxmlよりcElementTreeの方がさらに高速らしいです。

さて、lxmlを使ってxpathで要素を抽出してみました。



import sys
import codecs
from lxml import etree, html


filename = sys.argv[1]
encoding = sys.argv[2]
print filename
print encoding
fp = codecs.open(filename, encoding=encoding)
content = fp.read()
fp.close()

root = html.fromstring(content)
elems = root.xpath('//div[@id="block_story"]')[0]

fp = open("part.xml", "w")
part = etree.tostring(elems[0], encoding="utf-8")
fp.write(part)
fp.close()
ファイルから読み込んで、文字列のhtmlとしてパースして、xpathで要素を取得して、文字列ににしています。何が難しいかというと、XPathを書くのが難しいです。

なぜこうなった⁈

geventのサンプルを動かしてみたよ

geventでごにょごにょ遊ぶ前に、サンプルを動かしてみました。



urls = ['http://www.google.com',
"他いろいろ"]

import time
import urllib2

proxy = {'http':'http://192.168.0.230:3128/'}
proxy_handler = urllib2.ProxyHandler(proxy)
opener = urllib2.build_opener(proxy_handler)
urllib2.install_opener(opener)

def got(url):
print "url" + url
data = opener.open(url).read()
print "url done " + url
return 0

start = time.time()
jobs = [got(url) for url in urls]
end = time.time()

print end - start
上のコードが普通のコードです。会社の中でやったので、proxyが通るように書いています。ちゃんと比較するんならスレッドにすべきなのかも知れませんが、手抜きです。

で、次のコードがgeventを使ったコードです。おサルさんをけしかける(monkey.patch_all())と、ネットワークが非同期で動くようになります。

urls = ['http://www.google.com',
"他いろいろ"]

import gevent
from gevent import monkey
monkey.patch_all()

import time
import urllib2

proxy = {'http':'http://192.168.0.230:3128/'}
proxy_handler = urllib2.ProxyHandler(proxy)
opener = urllib2.build_opener(proxy_handler)
urllib2.install_opener(opener)

def got(url):
print "url" + url
data = opener.open(url).read()
print "url done " + url
return 0

start = time.time()
jobs = [gevent.spawn(got, url) for url in urls]
gevent.joinall(jobs)
end = time.time()

print end - start
で、geventを使わない方はこんな感じの出力です。

urlhttp://www.google.com
url done http://www.google.com
urlhttp://xxx1
url done http://xxx1
urlhttp://xxx2
url done http://xxx2
urlhttp://xxx3
url done http://xxx3
1.55014014244
順次実行されていきます。次がeventletを使った奴。

urlhttp://www.google.com
urlhttp://xxx1
urlhttp://xxx2
urlhttp://xxx3
url done http://xxx1
url done http://xxx2
url done http://www.google.com
url done http://xxx3
1.30022597313
と言うことで、httpへのアクセスがブロックせずに動作していることが分かります。いや、わかりにくいか・・・・。実行時間は、最初のコードがスレッドを使っていないので、公平ではありません。厳密に見ると、メモリ使用量とかCPUの使用率とか、Pythonのスレッドモデルとかいろいろありますが、まあ、今回は感じをつかむと言うことで・・・。eventletを使うとパッケージが違いますがほぼ同じコードです。
これをTwistedのコールバックでも、waitfordeferredでもめんどいし、標準ライブラリをそのまま使うこともできないので、大変です。まあ、eventlet + twistedの組み合わせはなしと言うことで・・・。

とにかく、コールバックじゃないと、やっぱ楽だな〜。他のライブラリがそのまま使えるのも楽だな〜。

2010年4月29日

マネージャになりたがらない開発者達


世の中にはプログラマからSE、そしてプロジェクトマネージャというキャリアパスがあるらしいです。僕はプログラマとSEは何が違うのか知りません。まあ、このキャリアパスは世の中的には普通です。昔から疑問だったのは、PMがごろごろいても仕方ないので、このキャリアパスでPMになれなかった人たちはどこに行っちゃったんでしょう?もっとも、ロータスの開発にいた人たちは今、どんな仕事をしているんだろう?と言うことでもあります。

今日は、会社の偉い人からどうしてアリエルの開発の人はマネージャになりたがらないのでしょう?と聞かれました。「少なくとも20代でマネージャになりたがるような人は僕は信用しない」と答えました。僕が目指していたアリエルは技術がすべての会社です。開発のマネージャには、マネージャとしての能力だけじゃなくって常に技術的な尊敬を集めることができないとその文化がなくなってしまいます。20代はもっとも技術を学ぶ時期で、業務に直結することからインフラ周りまでやるべきことは沢山あります。そんな早い時期からマネージャのための何かをやる必要はないです。

で、そのあとにマネージャになりたい人が出てきてもいいんじゃないかな〜、と思うんですが、僕も含めてマネージャになりたい人がいません(正確には少なすぎます)。マネージャまではいかなくても、もう少し、リーダー的な人がいてもいいような気がします。希望はそうですが、強制はしないです。なりたい人はそうなればいいし、プログラマのままでいたい人はプログラマでいられることは大事です。どちらの方が優れているとことはないです。僕は、両方をやっています。会社の中山さんは立場的にはとっても偉そうな人なんですが、プログラマのままの人です。開発部長は、よく分かりません。

ただ、マネージャになることは、うーん、まあ、いろいろです。どうしてそれを目指すのか、わからないです。僕はとっても小心者です。勉強会の企画も怖いです。プログラマのまま、技術だけと向き合える立場のほうが楽しいと思います。そんな会社です。




2010年4月27日

今度のありえるえりあ勉強会はJavaだ


次回で4回目となるありえるえりあ勉強会のお題は「ディープすぎるJava・・・」です。一応、2ヶ月ペースになるようにがんばっていますが、多少はスキップするかも知れません。まだ、試行錯誤で方向性も定まっていなかったりしますが、その時々の僕の気分次第で続けていけたらいいと思います。

最初の勉強会は、Emacsでした。Software Design
に「Emacs虎の巻」という連載を会社の人が始めたので、それで何かできたら面白いかも?と言うところから始まりました。2回目は、当時ウノウにいたテスト番長に会ってみたくなって、共催で「テスト勉強会」をしました。3回目は、アリエルの松山がIPA未踏ユースでEmacs関係のプロジェクトを始めたので、またまた、Emacsです。ちなみに、他の会社ではIPA未踏に関わった人を沢山雇っている会社はありますが、現社員でIPA未踏のプロジェクトを立ち上げたところは少ないです。そして、アリエルはプロジェクトに採用された人が3人もいます。これは凄いことです。

で、今回はJavaです。5月28日(金)、場所は溜池山王と赤坂の中間ぐらい。ワークスアプリケーションズという、アリエルの親会社の会議室が会場です。

Effective Java 第2版 (The Java Series)
の翻訳やJava 2 Standard Edition 5.0 Tiger
の執筆で知られている柴田芳樹さんをお招きして開催します。今まで面識はなかったのですが、ブログのファンなので是非お願いします、とお願いしたら引き受けてもらえました。とても感激です。かなり前からずっと、お話ししてみたい人でした。柴田さんに会ってみたくて題材をJavaにしたと言っても過言ではありません。

それから、「パーフェクトJava (PERFECT SERIES)
」という本を執筆したアリエルの開発部長の井上がJava EEのお話をします。ことあるごとに、修行だと言って、実践J2EEシステムデザイン
の本を勧めるので、本当はJ2EEのお話をして欲しかったのですが・・・。

それ以外は、まあ、いろいろです。楽しんでください。なるべく、普通じゃないように考えています。

ちなみに、一般的に勉強会は、勉強会自体も面白いかも知れませんが、その後の懇親会でいろんな人とお話しするのが一番楽しいです。懇親会にでないのではとってももったいないな〜、と思ったります。

それから、Javaの勉強会ですが、僕はJavaがあまり好きではありません。



2010年4月23日

[翻訳] geventのeventletとの比較

最近、ブログを書いていなかったので「Comparing gevent and eventlet」を訳してみました。ざっと訳しただけなので、間違っていたらごめんなさい。他のドキュメントは気が向いたら訳すかも知れませんが、多分訳さないでしょう。



この記事では、geventを始めた理由とeventletとの比較を説明します。

経緯

Bob Ippolitoは2006年にEventletの最初のバージョンを書きましたが、割とすぐに開発をやめてしまいました。Donovan Prestonは当時働いていたLinden Labの他の人とメンテナンスを行いました。ステートマシンやコールバックを使うよりも簡単にネットワークソフトウェアを方法を探しており、2008年にEventletに興味を持つようになりました。GreenletをベースとしたEventletは、当時あった他のフレームワーク(PYthonネイティブのジェネレータ、生のgreenletCorotwine)よりも、使いやすさという点で進んだものでした。

その時関わっていたプロジェクトはTwistedを使っていたので、二つのライブラリを統合することから始めました。作業をしているとEventletの大量のバグを見つけて、ほとんどのコア部分を書き換えました。修正したブランチは取り入れられて、2009年にEventlet 0.8.1としてリリースされました。その時までにDonovanはLinden Labを去っており、Ryan Williamsが主要なメンテナになっていました。

2009年の夏にネットワークライブラリを主要なコンポーネントにする新しいプロジェクトを始めました。しかし、Eventletは次の二つの要求を満たしませんでした。

  • libeventを使っているCで書かれた別のライブラリがあり、それらを統合して一つのプロセスで動作させたいので、libeventのイベントループを使う必要があった。当時のEventletはまともにlibeventをサポートしていなかった。
  • モンキーパッチでPythonのライブラリを使う予定だったので、socketモジュールが完璧に動作する必要があった。当時のEventletはいくつかのバグがあり、socketの処理が止まってしまった。

pyeventベースのhubで時間を費やしました。その結果、hub APIをピュアPythonのイベントループに対応させようとして、他のEventletのAPIと互換性がなくなりました。円滑に動作させるためには、他のすべてのhubのインターフェースと実装に大幅な変更が必要でした。socketモジュールのバグはイベントループ固有のもので、pyevent用にバグを修正しても、他のhubにはまだバグが存在していました。Eventletを大幅に書き換えるために、後継プロジェクトを開始しました。

geventはeventletのバグ修正版として開始して、いくつかの機能をドロップしました。

違い


1. geventはlibeventがベース

libeventは人気があり、ポータブルなイベントループです。Linuxではepoll、FreeBSDではkqueueのように使用するシステムの最速の仕組みでアプリケーションが動きます。ピュアPythonでのイベントループを持ち、つい最近までepollをサポートできなかったeventletと違って、geventのすべてのイベントループは実世界で、ハイスケーラブルな環境で十分テストされています。

優れたパフォーマンスは、libeventと密接に統合したメリットの一つですが、他にもメリットがあります。

  • シグナル操作はイベントループに統合されている
  • 他のlibeventベースのライブラリは、単一のイベントループでアプリケーションに統合できる
  • DNSへの要求は、ブロッキングコールで使うスレッドプールを介さずに非同期で解決される。
  • WSGIサーバはlibeventの組み込みHTTPサーバをベースにしていて、超高速

2. geventのインターフェースは標準ライブラリのインターフェースにあわせてある

たとえば、gevent.even.tEventthreading.Eventmultiprocessing.Eventと同じインターフェース、同じセマンティックですが、greenletを通して動作します。eventletはEventクラスもありますが、理由もなく独自の仕様になっています。

新しいインターフェースに明確な利点がない限り、geventでは標準的なインターフェースを使っています。いくつかのケースでは、クラス全体を歳実装する必要がなかったところでも、メソッドの仕様を標準ライブラリにあわせるように変更しました。

次のものが、仕様を変更した例です。

  • wait()は例外を発生しない
  • get()は例外を発生させるか、値を返す
  • join()はwait()のようですが、実行用です。

一貫したインターフェースはコードを読んだり理解するときのスピードをあげることができます。同様に、APIの学習を容易にします。

後方互換性を気にしなくても良いので、geventはすべてのAPIのEventletが持っていた癖を修正しました。APIの品質はユーザとeventletのメンテナが理解しています。geventのlibevent固有ではない部分は、eventletに取り入れられています

3. geventはeventletではない

geventにはeventletにあるすべての機能はサポートしていません。すでにeventletを使っている場合、次のケースではgeventに乗り換えるべきではありません。

  • eventlet.db_poolを使っている場合。geventには対応するモジュールがありません。
  • eventlet.processesを使っている場合。ライブラリにはサブプロセスのサポートがまだありません。これは、自分でサブプロセスを実装するです。
  • eventletのthreadpoolを使っている場合。geventは現在は対応するモジュールがあります。ユーザがコントリビュートしたものですが、すぐにはライブラリに組み込めないでしょう。
  • eventletをTwsitedのreactorで実行している場合。
  • libeventを使えない場合。

geventは誰でも使える小さくて安定したコアを目指しています。可能なときはいつでも、ジョブをlibeventにデリゲートします。コルーチンベースのプログラミング用に便利な抽象レイヤーを提供します。eventletにインスパイアされましたが、eventletのフォークではなく新しいAPIが特徴です。実装はもっとシンプルで、もっと安定しています。


他の人がなぜgeventを選択したかや、eventletからgeventに移行するときに発生するかも知れないことも読んでみてください。

Thanks to Marcus Cavanaugh, Brad Clements, Nicholas Piël, Andrey Popp and Bob Van Zant for reading drafts of this.

2010年4月22日

geventをインストール

Twisted教は面白いのですが、疲れるのも事実です。そこで、eventletに乗り換えようとしたら、jbkingより「ナウでヤングな若者はgeventだ(意訳)」と教えてもらって、とりあえず、入門することにしました。
eventletとgeventの違いを読んでいると、源流はeventlet見たいですが、eventletの気にくわないところとバグを直したみたいです。僕はeventletをかなーり前にテスト的なコードしか書いていないので、何が困っているのか分かりませんが、守るものもないので、とりあず、geventでやることにします。
依存しているライブラリはgreenletとlibeventです。greenletはeasy_installでいれときます。ドキュメントをちゃんと読まずにインストールしたので、libeventが入っていませんでした。本当は、入っているつもりだったんです。最新のlibeventをダウンロードしたら、その横にちょっと古いlibeventがあります。展開してビルドした形跡はあるのですが、/usr/libにも/usr/local/libにも~/libにも~/mypy/2.6/libにもいません。どこにインストールしたか不明です。
とりあえず、~/mypy/2.6にlibeventをインストールします。と言ってもlibeventの1系の最新をダウンロード、展開して、

$ ./configure --prefix=~/mypy/2.6
$ make && make install

するだけです。geventはeasy_installで入れるつもりが、トラブったのでいろいろ見ているせいでtarボールをダウンロードして

$ python setup.py build -1 -I~/mypy/2.6/include -L~/mypy/2.6/lib
$ python setup.py install

でインストールします。終わったらpythonを起動して、import geventでエラーが出ないことを確認。あとは、めくるめくgeventの世界へ・・・

※ コマンドの~は適当に展開してね。

それから、geventをインストールしようとしたらコンパイルエラーが出たとtwitterで日本語でつぶやいたら、Denis Bilenkoと言う人(geventの中の人)が、「@liris do you have libevent and its headers installed?」と英語で返してきました。twitterは不思議です。

2010年4月21日

社内Twitterもよく分からない

数年前に社内ブログが流行りました。今もそこそこ使われているのかも知れませんが、僕は否定的な見方です。ちょっと前はSNSの影響で社内SNSがブームというか、社内SNSができないかという問い合わせが増えました。今でもたまにあります。社内ブログを否定的に見ていましたが、メジャーにならないだけで、特定の分野にはマッチすると思っています。

社内SNS?これは、完全に駄目でしょう?会社の中のある人は、「会社の中で仲良しごっこして何が面白いんでしょう?」と言っていました。これはさすがに言い過ぎで、ある程度までは機能すると思いますが、ほとんどニッチだと思っています。

社内Twitter?特にchatterなんですが、これがとても微妙です。いいとも言えないし、悪いとも言えない。会社の開発部長は、「salesforce内の更新情報がすべてフィード的に一覧できる機能です 」と常人にはよく分からない先入観を持っていましたが・・・。

で、使ったことがないのでよく分からないのですが、Twitterだと数十人フォローすると、全部の発言を僕は読み切れません。まあ、全部読むつもりも最初からないです。社内で一定人数の人の発言を読み切れるかと言うと、難しいんじゃないかな?Twiiterではないですが、社内では開発の20人ぐらいでSkypeのチャットを使って割とリアルタイムのやりとりはしています。でも、最初はおもしろがって読もうとしていましたが、一日で無理だと思って、気分転換にしか見ていません。ある一定人数までは機能すると思いますが、ずっと画面を見続けている暇人でない限り、本当に機能するか疑問です。特に@itにあった事例は眉唾ものです。

と、否定的なことを書きましたが、そこにすべての情報が表示されて、それをフィルタリングできる仕組みがあれば面白いのかも知れません。Twitterでもbotがブログなどの更新情報を教えてくれたりします。もっとリアルタイムにフィルタリングも簡単に社内の情報を教えてくれたら便利かも知れません。でも、そんなことが必要な情報量、組織規模がどんなものかは分かりません。

よこたんが比較的大きな企業での可能性をみていますが、僕は比較的小さな企業のほうが可能性が高いかな?と。ちなみに、零細企業ではないです。でも、ひょっとしたら、Twitterほどの流量はないので、大きな企業でもなんとかなるのかもしれません。

で、社内ブログでも思っていたのですが、社長とか偉そうな人が読むところに気軽に書き込めるんだろうか?僕の書き込みをしゃちょーとかぶちょーが何も発言しないで読んでいると思うと・・・。



2010年4月20日

ServerMan@VPSに申し込みました

ちょっと前に格安で話題になっていたServerMan@VPSですが、ちょっとだけ迷ったあげく、申し込みました。格安というのは、一月490円です。安いです。4月中に申し込めば、3ヶ月間無料になります。どんなにしょぼくても、こんなに格安で、最初の3ヶ月無料であれば納得するし、あきらめもつきます。

以前、とある安いホスティングサービスに申し込みました。それは、一月1980円でしたが、メモリが余っているのに、virtuozzoとかいうやつのよく分からないメモリが消費されまくって、まともに使えませんでした(ものすごく少ないスレッド、プロセスしか動かせなかった)。この人はXenなので、そんなことはないでしょう。きっと。

何に使うかと言えば、実はあんまり考えていません。blogはbloggerに引っ越しちゃったし、githubなり、sourceforgeなり、codereposに後悔しているコードはおいているし、Wiki的なものはgoolge siteに置くようにしているので、困っていることはあまりありません。

最初は、ファイルサーバ的と言うか、ファイル転送的な使い方をしてもいいかな、とは思います。ある程度長い間ファイルを置いておくところは、DropBoxなんですが、家のMac MiniからMacBookにファイル(3-4Gぐらい)を移動するときは、同じネットワークにおいていました。それぐらいなら、この人で何とかなりそうです。

でも、このVPSはとても人気があるようで、「ご好評につき、1ヶ月以内のサービス提供となります」と書いています。すぐに使えないのが残念ですが、値段を考えると文句も言わずにおとなしく待ちます。




2010年4月16日

iPadは発売延期だけど・・・

至る所で語られていますが、残念ながらiPadが発売延期になりました。予想以上に売れすぎたとか、マーケティング戦略だとか、製造にトラブルがあるとか、いろいろ憶測を生んでいます。USの状況を見ていると、4月末に発売しても品物が手に入らなさそうな気がしていたので、その辺はまあ許せます。でも、日本人はいろいろうるさいので、ばかでかいiPod Touchなんて買わないで欲しいです。買うにしても、様子をみて夏頃買って欲しいです。せめて、ボーナスまで待つべきです。

さて、発売延期にはめげずに、iPadを迎えるための準備は進めなくてはいけません。Wifiのモデルを買うつもりですが、そとでもネットにつなげたいです。そのためには、モバイルルータがあると便利です。Amazonで手に入る奴で一番安いものは、Wi-Fi接続150Mbpsバッテリー内蔵 モバイルルータ (DoCoMo/au/SoftBank/WILLCOM/イー・モバイル対応) CQW-MRB
でした。 1万円ちょっとです。BicCameraで見たのですが、ポイントを換算してもそれより4千円ぐらい安いです。これで、イーモバイルでつなげてあげればよいです。

iPadが来るまでにApple Wireless Keyboard (JIS)
も欲しいのですが一緒にApple Magic Mouse
も買って、家のMac Miniにつなげてあげるのもいいかもしれません。

iPadの純正のケースとVGA出力するアダプタも必要です。Appleにだまされている気分です。ちゃんと準備をするので、早く欲しいです。でも、今が一番楽しいのかも知れません。



2010年4月14日

ゆとりじゃない世代

先週末にテレビを見ていたら、ゆとり世代とかでいろいろ面白いことをやっていました。びっくりしたのが親が大学に行くとか、仕事についてくとかです。どこまで本当なのか分かりませんが、面白いですね。どこまで本当なのか分からないというのは、僕の周りの若者達は全然そんな感じじゃないと言うか、僕の若かった頃より遙かに自律的に見えます。僕の周りの人が特殊なだけなのかも知れませんが、いろいろな変な現象を「ゆとり」とかに押しつけているような気がしないでもないです。

さて、親が会社に着いていくというニュースを見て、多分、15,6年ぐらい前のできごとが思い出しました。まだ、「ゆとり」とかないころです。親の知り合いの子供が短大をでて、ある会社に就職したらしいのですが、その会社の入社式に親がついて行ったそうです。一応、入社式と言うことなので、正装(着物だったと思う)をその子の親は着ていったそうです。

多分、そういう人は昔からいて、最近目立つ、もしくは量が増えたんだろうな〜。で、親が子離れできないのを「ゆとり」に押しつけてるだけのように思います。問題になるケースもあるかも知れませんが、ある程度ほったらかしにすれば、実は何とかなるもんじゃないかな〜、と思います。

会社の中でも、次のリーダーが中々育たないと嘆きます。子離れできない親と同じかも知れません。で、思いっきりほったらかしにしたこともありますが、うまく行く人とそうじゃない人とやっぱりいます。そうじゃない人はどうすればいいか分かりません。世の中難しいです。

結論はありませんが、僕は「ゆとり」世代とか世代論争が嫌いです。



2010年4月13日

マルチスレッドとか、マルチタスクとか・・・

アップル、マルチプロセス化されたWebKit2を発表」というニュースがありました。WebKitに限らずChromeなど、マルチプロセスで動くものが最近増えてきた(耳に入りやすくなった)ようです。Firefoxもマルチプロセス化するという噂も聞いたような気がします。

Linuxのスレッドモデルは、大昔はプロセスをフォークしていました。パフォーマンス上よろしくないと言うことで本物のスレッドで動くようになりました。最近のマルチプロセスの流れはパフォーマンスではなく安全性、安定性が理由のようです。ハードウェアの進化がプロセスをフォークするコストを低くしたのかもしれません。スレッドを沢山作るようなアプリは、スレッドのモデルの方がいいのかも知れません。同じメモリ空間を共有する方が、プロセス間通信をするより楽だし・・・。

さて、アリエルにはマルチスケジューラ(通称マルスケ)というソフトがあります。このソフトは、最初は複数のプロセスが動いていて、それぞれのプロセスが協調して動作します。僕はずっーと、一つのプロセスでマルチタスクで動かすことを主張していて、基本的にはそうなりました。一部、小さなタスクはプロセスをフォークしますが、メインは単一のプロセスです。最近のマルチプロセスの流れとは逆ですね。もっとも、マルスケの凄いところは、一つのPCだけじゃなくって、複数のPC間で協調して動くことなんですが、多分、最近のマルスケのユーザはPIMだと思っているようです。

最近のマルチプロセスの流れを見ていると、僕のマルスケでの判断はどうだったのか疑問に思うこともありますが、誰も文句を言っていないので、多分大丈夫なのでしょう。



2010年4月8日

Lotus Operating Principles


Twitterでロータスの同期の人が、このリンクをさして、懐かしいと言っていました。最初に入った会社の文化や規範はその後の仕事に大きな影響を与えるものです。上のリンク先のLotus Principlesは、僕が最初に入った会社の文化・規範を示した10箇条です。まあ、モーゼの十戒のようなものです。

この10箇条は僕の知る限り、新入社員で入った人には大きな影響を与えています。中途で入った人は知りません。10箇条すべてをちゃんと覚えている人はほとんどいないと思いますが、この中のいくつかや姿勢はちゃんと覚えていると思います。僕が時々ブログで書く「楽しむ」と言うことも、このPrincipleの「Have fun」から来ています。

ロータスがIBMに完全に吸収されてからこの10箇条の一部が書き換えられたという噂もありますが、僕は知りません。

Lotus Principlesは次のものです。


* Commit to excellence
* Treat people fairly; value diversity
* Insist on integrity
* Communicate openly, honestly and directly
* Listen with an open mind; learn from everything
* Take responsibility; lead by example
* Respect, trust and encourage others
* Encourage risk-taking and innovation
* Establish purpose before action
* Work as a team
* Have fun

 会社の中ではモーゼの十戒風(目指して)に訳したのですが、恥ずかしいので公開しません。

 

入社式の時にHave funとWork as a teamについて沢山説明されたり、こじつけられたりしたような気がします。Have funは3つのfunとか、よくわかんないことを言われていたような・・・。でも、少なくともアリエルで何年もやってきて、かな〜り困ったことになったことが何度かありましたが、それらを笑って来られたのも、ロータスに最初に入ったおかげかもしれません。

改めて今日見返してみて、今の会社と言うか、社会人として上の10箇条って大事だと思います。まあ、昔から好きだったのですが・・・。ちなみに、僕にとってはロータスは暇だった。だから沢山遊べたんだけど、そういう遊びができる会社っていうのも大事です。



2010年4月7日

Appleのやり方はひどすぎます

僕は、JobsのiPadのスピーチを聞いたとき、「このデバイスは僕にとっては必要ないデバイスだ」と思いました。絶対に買わないだろうし、買うとしても1年後だと思っていました。でも、4月になってから入ってくるニュースはひどすぎます。買うつもりがなかったのに、今はどの容量にするか迷っています。多分16Gにするかな〜。アクセサリはとりあえずは、ケースだけにするか、VGAアダプターも買っておくか困っています。外でも使えるようにモバイルルータ
をポチりそうになっています。 キーボードも欲しいので、ワイアレスキーボードを買おうとしています。Appleのやり方はひどすぎます。早く日本で発売されないか、待ち遠しいです。

家では、iPod Touchもあるし、iPhoneも二つあるし、どうせiPadも買うんでしょ!とあきれられています。子供も、大きなTouchがやってくると思っています。

Jobsのスピーチを聞いたときにiBookが日本で使えるようになって欲しいと思っていましたが、今は、Kindleで十分じゃね〜、と言うか、Kindleの方が良くね〜、と思っています。僕はiPadでも本が読みたいのであって、iPadだけで読みたいわけではありません。Kindleだと読むためのデバイスが固定されないので、PCでも読めるのは魅力的です。マンガとかは、iPadのようなデバイスでしか読みませんが、技術書とかは最初はiPadで読んで、あとは、必要な箇所だけをPCで読みたいので、Kindleの方が良さそうです。KindleをMacで使ったことがないので知りませんが、Spotlightで検索できれば最強です。まあ、どっちにしても、早く日本の本が買えるようになって欲しいですね。

あとは、iPadでVNC Viewerを動かせれば、PCもiPadから操作できるし、いい感じになってくれるでしょう。でも、そこまでは僕はしないかな?

早く日本でiPadを発売して欲しいです。待ち遠しいです。買うつもりがなかった僕が、買おうとしています。Appleのやり方はひどすぎます。



2010年4月2日

perl + python = Parrot?


Perlは僕は大昔に使っていたことがあります。バージョンが4のころです。バージョン5になって嫌いになりました。で、その後、いろいろあってPythonを使うようになって、とてもしっくりきました。

で、Larry Wall(Perlの教祖様)とGuido(Pythonの独裁者)が共同で次世代のぷろぐらみんぐげんごParrotを作るそうです。去年はGoのような言語が生まれて、今年はParrotでとても楽しみです。オライリーからもParrotの本がでると書いているので、期待がもてます。是非、PyPyのように成長して欲しいものです。

ただ、Pythonもビジネス利用促進の加速を目的にpython.comを利用するという噂もあります。ビジネス的な話は僕はよく分からないのですが、Parrotの件とこのビジネス利用の関係性というか、何を目指しているかよく分からないところもあります。ひょっとしたら、この記事にあるように無期限の休暇というのはParrotの開発のことだったのかもしれません。

今後、Pythonを使い続けるべきなのか、じせいだいげんごのParrotに移行した方がいいのか、目が離せません。