« 2006年4月 | トップページ | 2006年6月 »

2006/05/30

[ Python ] Twisted Essentials 困った・・・

Twisted Network Programming Essential(O'reilly) Example2-5 portscan.py 以降のサンプルがまともに動作しない。 O'reilly 公式ページにある正誤表もチェックしたんだけどそれでもダメでした。もしかして Windows だと動作しないのかしら?

Twistedmatrix の API リファレンスはダメダメの上、さらにサンプルコードが動かないのではさっぱり勉強にならないので後回しにして Python CookbookC# はじめようと思う。Twisted Essentials の英文はすごく読みやすいから、これでサンプルコードが動作すればめったにないいい教科書になると思うんだけどなぁ。残念。

話がずれるのですが、読みやすくて使いやすいリファレンスを大量に用意している Microsoft はやっぱりすごいと思う ( 日本語だとちょっと違うって思うこともあるけど(^^;) 。新しいことを勉強するとなると、わかりやすいドキュメントがあるってことがかなりの魅力になると思う。とりあえずやってみようかって始めて、わからないことがあったらさっと調べてヒントや答えが見つかる。で、解決して次に進める。Microsoft のシェアが高い理由はいくつもあるけれど、こうやって敷居をできるだけ下げていることもそのひとつだと思う。

「とりあえず使ってみてよ。ほら、動かせたでしょ」
アプリをちょっと作ってみようかなって考えているんだけど、こんな風に気軽に参加できるアプリにしたいな。

Windows でも問題なくサンプルコードが動いた方がおられましたらご連絡ください。できれば Windows と Twisted, Python のバージョンも教えていただけると助かります。

| | コメント (0) | トラックバック (0)

2006/05/27

[ Python ] Upgrading failed Twisted2.2 to 2.4

インストールできないのは、Core と ZopeInterface 。 こちらからソースコードを落としてきて README にしたがってコマンドプロンプトで

setup.py install

と入力するとこんなエラーが出てきます。

running install
running build
running build_py
running build_ext
error: The .NET Framework SDK needs to be installed before building extensions for Python.

しかし、Visual Studio 2005 が入っているわたしの環境では当然 .NET Framework2.0 も入っていますし、環境変数 Path にも下のように登録されています。( 見難いのでセミコロンで改行しています )

PATH=C:\Program Files\Microsoft Visual Studio 8\Common7\IDE;
C:\Program Files\Microsoft Visual Studio 8\VC\BIN;
C:\Program Files\Microsoft Visual Studio 8\Common7\Tools;
C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\bin;
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\bin;
C:\SDK\netFramework2\v2.0\bin;
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;
C:\Program Files\Microsoft Visual Studio 8\VC\VCPackages;
c:\SDK\MinGW\bin;C:\SDK\perl\bin\;
"C:\SDK\DxSDK\Utilities\Bin\x86";
C:\WINDOWS\system32;
C:\WINDOWS;C:\WINDOWS\System32\Wbem;
C:\SDK\other\bin;
C:\Program Files\Microsoft SQL Server\90\Tools\binn\;
C:\SDK\Python\Scripts;C:\Program Files\shortcut;
C:\Program Files\Editor\Anchor\bin;C:\SDK\IronPython;
C:\SDK\Python

わたしの環境は Win32 ( Windows XP SP2 ), Python 2.4.3, .NET Framework 2.0.50727.42 となっていますが、Twisted 2.4 のインストールに成功した方がおられましたらインストール方法をご教授ください。

2006.05.28 追記
たぶん msvccompiler.py の↓の辺りが原因なんだと思う。

    def load_macros(self, version):
        vsbase = r"Software\Microsoft\VisualStudio\%0.1f" % version
        self.set_macro("VCInstallDir", vsbase + r"\Setup\VC", "productdir")
        self.set_macro("VSInstallDir", vsbase + r"\Setup\VS", "productdir")
        net = r"Software\Microsoft\.NETFramework"
        self.set_macro("FrameworkDir", net, "installroot")
        try:
            if version > 7.0:
                self.set_macro("FrameworkSDKDir", net, "sdkinstallrootv1.1")
            else:
                self.set_macro("FrameworkSDKDir", net, "sdkinstallroot")
        except KeyError, exc: #
            raise DistutilsPlatformError, \
                  ("The .NET Framework SDK needs to be installed before "
                   "building extensions for Python.")

        p = r"Software\Microsoft\NET Framework Setup\Product"
VS2005 Pro は .NET1.1 じゃなくて .NET2.0 を使っているし、msvcrt も異なっている。 VS2003 は msvcrt71.dll で VS2005 は msvcr80.dll。この違いのため、 コードを修正しても正常に動作するかどうかはわからないそうな。

| | コメント (1) | トラックバック (0)

2006/05/25

[ Python / ASP.NET ] IronPython / Atlas Updated

IronPython β7 Released
変更点等はこちら。IronPython Workspace
ダウンロードはこちら。Microsoft Download Center

Atlas April CTP
Atlas についてはこちら。 ASP.NET Atlas
ダウンロードはこちら。 Microsoft Download Center

| | コメント (0) | トラックバック (0)

2006/05/24

[ Python ] Installing Twisted for Python2.4

Twisted を使うためには、Twisted 本体のほかに PyCrypto と PyOpenSSL, OpenSSL が必要です。PyCrypto と PyOpenSSL は エクステンションできる Python 本体のバージョンがパッケージごとに 決まっているため、自分が持っている Python にあったパッケージを 探さなければなりません。Python2.2 などちょっと古いパッケージなら 簡単に見つかるのですが、2.4 のためのエクステンションパッケージは なかなか見つかりませんでした。ということで、ここにメモっておこうと思います。

PyCrypto 2.0.1
http://www.voidspace.org.uk/python/modules.shtml#pycrypto
DL したファイルを実行して、ウィザードに従ってインストールを進めてください。

PyOpenSSL
http://webcleaner.sourceforge.net/pyOpenSSL-0.6.win32-py2.4.exe
こちらもファイルを実行してウィザードに従って操作すればOK。

OpenSSL
OpenSSL の Win32 バイナリパッケージは見つけることができませんでした。 いろいろな理由から自分でコンパイルして使った方がいいようです。 コンパイルには C コンパイラと Perl と MASM と NASM が必要になりますので事前に用意しておきましょう。

ここでは C コンパイラに Visal C++ コンパイラ ( cl.exe ) を使います。 Visual Studio コマンドプロンプトを起動して以下のコマンドを順番に入力してください。

  1. perl Configure VC-WIN32 --prefix=c:/some/openssl/dir
  2. ms\do_masm
    上記コマンドで問題が出た場合は ms\do_nasm
    それでもだめな場合は ms\do_ms
  3. nmake -f ms\ntdll.mak
  4. nmake -f ms\ntdll.mak test
  5. nmake -f ms\ntdll.mak install

最後のコマンドを実行すると C:\some\openssl\dir\bin に "libeay32.dll" と "ssleay32.dll" と "openssl.exe" の3つのファイルが作成されます。これを Path が通ったフォルダにコピーすれば 準備は完了です。

どーーーしても自分でコンパイルできない方のためにわたしがビルドしたファイルを おいておきます。が、オリジナルの EULA に加えて以下の項目に同意していただきます。 ( 暗号技術に関する法律がいくつかあるのですが、それで法的措置を受けたくないので (汗) )

  1. 自己責任で使用すること
  2. 使用はプライベートネットワーク内に限ること
  3. 学習目的の使用に限ること
  4. このサイト管理者である Fomalhaut は一切法的責任を問われないこと

OpenSSL0.9.8.2: 同意してダウンロード

Twisted 本体
前述の3つのパッケージをインストールしたら、次に Twisted 本体をインストールします。 なお、インタラクティブモードで Python を実行していたり、Python アプリを起動していると Twisted のインストールに失敗します。終了しておきましょう。 http://tmrc.mit.edu/mirror/twisted/Twisted/2.2/Twisted_NoDocs-2.2.0.win32-py2.4.exe
ダウンロードしたファイルを実行してウィザードの指示に従ってください。
最後に Path に Python の script ディレクトリまでのフルパスを環境変数 Path に追加すれば Twisted のインストールは完了です。

| | コメント (0) | トラックバック (0)

[ Python ] Twisted Essential 始めました

Twisted Network Programming Essential(O'reilly) 初めてのPython を読み終えたので、Twist Network Programming EssentialPython Cookbook を読み始めてみた。 まずは Twisted Essensial。まだほんとに最初の部分なんだけど、綺麗な英文で読みやすい。 Foreword はかなり砕けた口語調の英文だったので半分も理解できなくて、 この本読めるかな~とかなり心配だったんだけど、Preface からは一転。 とても綺麗な英文になってた。

一つ一つの文 ( Sentence ) が理解しやすいのはもちろん、段落 ( paragraph ) も とても理解しやすい。文章全体としても今まで読んだ中で一番綺麗な英文かもしれない。

わたしは英検準二級に落とされるほどの英語力しかないので、恐らく 中学生レベルの英語力があれば辞書を片手に読むことができると思う。 英語はちょっと苦手だけど、Twisted にも触ってみたいというアナタ。 ぜひとも本書を手にとって内容を確認してほしい ( 除く Foreword )。 中学生レベルの英語力しかないわたしが読めたのだ。Python に触ったことがあるなら、 ほとんどの人が読めると思う。

| | コメント (0) | トラックバック (0)

2006/05/23

[ Python ] 初めての Python 第二版 読了

初めてのPython 本の進行は、序文で書かれているように、最初から順番に読んでいけば Python の基礎を習得できるようになっています。ちゃんと理解してから 次のステップに進むようにすれば、前に戻ったりする必要もありませんし、 指示で序盤のうちから本の後ろの方に飛ばされることもありません。 この構成はとてもよかったと思います。

しかし、O'Reilly にしては訳の質があまり高くないなぁというのが正直なところ。 ちょっと首をかしげる箇所があったので原著と照らし合わせたのですが、 誤訳と思われる場所が数箇所ありました。

さらに、訳者が不用意に手を加えていたのもマイナスだと思う。 原著では "21.4.3.1 User-Defined Iterators" となっているところが 訳では単に「イテレータ」とだけ書いてあって、イテレータそのものの 説明であるかのように思えるなどやはり何箇所か首をかしげる箇所がありました。

PS.
アドバイスを下さった皆様方、ありがとうございました m(_ _)m

| | コメント (0) | トラックバック (0)

2006/05/17

プログラマを理解しなきゃ

「渋谷ではたらく社長の blog 」を読んで、、、
やっぱりいるんだねぇこーゆー社長さん。「労働環境を改善する」と書いてあるけど、 それ以前の問題があるでしょうよ。それを改善しなきゃ、とんでもなくレベルの高い 技術者なんて入らないさ。入るとしたらわたしみたいな、職場を選ぶことなんてできそうもない レベルの技術者だけだろうなぁ(;´Д`)

無駄な会議をなくせ
たとえ社長だろうが部長だろうが、「あ~」だとか「え~」とかが3割以上を占めたり、 何度も何度も同じことを繰り返す ( しかも前回の会議でも言ったことだ!) ことに 感銘を受けるプログラマなんてまずいない。Rails の理念の一つにも DRY ( Don't Repeat Yourself ) とあるけれど、重複や繰り返しは悪なのだ。

会議中に内職をしたり、昼寝をしているプログラマがいるとしたら それは無駄な会議をしていることへのプログラマからの警告に他ならない。

たとえば、今期の売り上げはいくらで会社の利益はいくら、成長率は何% とか 金勘定は出資家相手にすればいいことだ。会社の方針としてはどうこうとか、 会社はこういった方向へ進めていきたいという経営者側の考えは Blog に書くべき。

プログラマにとってはもっと大切なことがある。
ひとつは今開発中のモノの進行状況だ。どの実装が完了していて、どれがまだなのか。 どのバグが修正されていて、どのバグが残っているのか。昨日新しく発見された バグがあるって聞いたけど、それってどんなのよ。
2つ目は次に開発するモノをどうしようかってことだ。どんなモノをどんな方法で作ろうか。 メンバーは?開発期間は?プラットフォームは?何でそれを作るの?
金勘定や御高説を聞くよりも大切な会議はまだある。プログラマはどーでもいい会議に 出席できるほど暇じゃないんだよ。

集中できる環境を用意しろ
雑用を回されたりとか、電話が頻繁に鳴り響いたりとか、自分のすぐ後ろを どかどか走り回る社員がいたりする環境で集中できるはずがない。 集中できなきゃ自分が持つ本来の実力を発揮することなんて絶対にできない。 そんな環境で働きたいなんて思うはずないよ。集中できる環境が大切だということは PeoplewareJoel on Software にも書かれている。Joel on Software が解り易く 面白いので引用してみる。

知的労働者というのは、「フロー」あるいは「ゾーン」として知られる、 作業に完全に没頭して周りのことを忘れた状態にいるとき、最もよく働く。 このことは私達みんなが知っている。彼らは時間の感覚をなくして、完全な 集中状態で素晴らしい仕事をする。知的労働者が生産的な仕事をするのは、 すべてそういう状態のときだ。( 中略 )
問題は「ゾーン」状態に入るのが簡単ではないという点だ。計測してみれば、 最高に生産的な状態になるまでに平均して15分ばかりかかるのがわかるだろう。 疲れていたり、その日はもう十分にクリエイティブな作業をしていた場合には、 全然ゾーンに入ることができず、それでその日の残りは Web を見たりテトリスをしたりして 時間をつぶすことになる。
もう1つの問題は、何かあると簡単にゾーンから追い出されてしまうということだ。 騒音、電話、ランチ、スターバックスに行く5分間のドライブ、それに同僚による 割り込み ( 特にこの同僚からの割り込みが大きい )、そういったすべてのことによって、 ゾーンから追い出されてしまうのだ。
頭蓋骨の中身まで筋肉が詰まっている根性論信者には理解できないかもしれないが、 プログラミングは、何も考えずにただ言われるままに重い荷車を引っ張ったり 荒地を開墾するような数百年前の奴隷型肉体労働とはまったく別のものだ。

プログラミングは頭をフル回転させなきゃならない。 変数 ( 変数名にそれが保持する値とそれが属するスコープ ) に、 アルゴリズムをどこまで実装したのか、起こりうるエラーにはどんなのがあって それぞれをトラップするにはどうすればいいのかとかとかを一度にたくさん頭に詰め込んで それを不整合が出ないようにうまく操りながらつくるものだ。 邪魔が入ると、頭に詰め込んでおかなきゃならない情報のどれかが抜けてしまったり、 変わってしまったりして不整合が発生する。作業に戻るためにはもう一度最初から プログラムをトレースしなきゃならない。プログラマがちょっと怠けてそのまま再開したら 不整合がそのままプログラムに反映される。ほら、バグが入り込んだ。

頻繁に邪魔が入るようだと、プログラマは周りに人がいるときは仕事をしなくなる。 早朝まだ誰も来ていないときか深夜にみんなが帰ってから仕事をした方がずっと効率がいいとか、 自宅でコードを書いた方がずっとはかどるって言葉が聞こえてくるとしたら、それは 仕事場の環境を改善しなきゃならないってことだ。 営業と一緒に部屋にプログラマが詰め込まれているとか、 プログラマの部屋に電話があってそれがジャンジャン鳴り響くなんて論外だね。

プログラマが個室をほしがるのも、フロー状態を維持し続けたいからなんだ。 簡単に話しかけられる距離に、ペア以外の同僚がいるとこんなことになる。

標準的なディルバード式のキュービクルに満たされたオフィスで隣り合って働く 2人のプログラマ、ジェフとマットを考える。Unicode 版の strcpy 関数がなんだったか マットは思い出せない。30秒かければリファレンスで調べることもできるが、 15秒でジェフに聞くこともできる。マットはジェフの隣に座っているものだから、 ジェフに聞くことにする。ジェフは気を散らされて15分を失う ( マットの15秒を節約するために ) 。( Joel on Software より引用 )
一日に5回質問されれば、マットの75秒を節約するためにジェフの75分が無駄になる。 10回質問されれば150分、つまり勤務時間の 1/8 以上が無駄になるんだ。 経験から言わせてもらうと、プログラマをディルバード式キュービクルに詰め込んだ場合は、 こんな割り込みがかなりの頻度で発生する。ペアごとに部屋を割り当てれば無駄な割り込みが 発生する頻度は大きく低下するでしょ?

ゆとりを持たせろ
「徹夜・休日出勤は当たり前、つべこべ言わずに出てきて働けよ」とか、 「GW ?盆?正月?そんなの2日も休みがあればいいだろ?」ってのも NG . いうまでもないことだけど、IT の世界、特に Web 分野は技術の陳腐化が起こる速度が と~~~~~~っても早い。広く知られている技術だけでなく、常にアンテナを広げて、 まだあまり知られていないような技術でも積極的に取り入れていかないと、 すぐに技術者として飯を食べていくことはできなくなってしまう。

いつ勉強しているのかっていったら、帰宅後の時間とか休日を利用しているんだよね。 でも、徹夜休日出勤当たり前の職場ではこれができない。 徹夜休日出勤を当たり前のように強要された場合、 技術者は「いま動けばいいだけの使い捨ての道具」として使われていると考えてしまう。 プログラマは、この分野が面白いと思っているし、これから先もプログラマとして 活動していきたいと思っているんだから、 その場しのぎの使い捨ての道具として扱われるような職場で働こうなんて思わないよ。

それに、深い理解を得るためにはやっぱりまとまった時間が必要だ。 そのために使うのが、GW とか夏とか正月の連休なんだ。 連休なんてお前らに必要ねーよ、いいから出てきて働けって言われるような 職場もやっぱりおさらばしたいと思うものだ。

ゆとりっていうと会社で研修会を開いてるから十分だろとって声が聞こえたりするけど、 そんなことを言う奴は、率直に言って馬鹿としか思えない。 プログラミング技術ってのは1日2日で身につくほど甘くないし、 一方的に講釈を垂れられて身につくものでもないからだ。

Slack - ゆとりの法則 - では、組織の革新のためにもゆとりが必要だと書かれているけど、 プログラマ自身の成長のためにもゆとりは必要なんだ。ゆとりは無駄じゃなくて 投資なんだよ。

迷信を捨てろ

  • 「プロジェクトの進みが悪かったらメンバーを追加しろ」
  • 「最初から頭数を倍にすれば開発期間は半分になる」
  • 「プレッシャーをかければいいものが早くできる」
  • 「プログラマの能力は誰であっても同じだ」
  • 「プログラマ = 雑用係だ。」
どれかひとつでも当てはまるなら、経営あるいは人事に携わるべきではない。 はじめの2項についてはブルックスの法則 ( この法則はもはや常識だ ) があるし、 その次に関しては Tom DeMarco 氏 が Slack の中でリスターの法則による反論を行っている。 4項目を信じているなら、何も言わずに棺桶に入るか世捨て人になってほしい。 最後については Google の CEO である Eric Schmidt 氏が Google の黄金律10ヶ条で こう指摘している。
"Programmers want to program, they don't want to do their laundry."
( プログラマーはプログラムを書きたいのであって、洗濯をしたいのではない。)
IT 企業の経営者を名乗るなら、そしてプログラマに来てほしいと願うならば、 ↓の書籍くらいは理解してほしい。読むだけじゃないよ。理解して実践するんだ。 でなければ、わたしのような職場を選べないレベルのプログラマしか集まらないと思う。
Peopleware 第二版 ( Tom DeMarco, Timothy Lister 著, 松原 友夫 訳 )
Joel on Software ( Joel Spolsky 著, 青木 靖 訳 )
Slack ゆとりの法則( Tom DeMarco 著, 伊豆原 弓 訳 )
ハッカーと画家( Paul Graham 著, 川合史郎 訳 )
人月の神話( Frederick P,Jr. Brooks 著, 滝沢 徹 訳 )

| | コメント (0) | トラックバック (0)

2006/05/10

[ wish ] 究極の PC デスク ( ? )

天夢さんの日記で発見。 ほしいなこれ
や、ゲームコントローラはいらないんだけどね。机だけ。

今使っているデスクは本 ( A4 サイズ ) とキーボードと トラックボールとタブレットと複合プリンタを 同時に設置することができなくて面倒なんだよね。 スピーカとアンプもちょっと配置が悪いなって思っていたし、 ディスプレイも増やそうと思ってたところ。

このデスクなら自分の使いやすい配置にまとめることができそう。
ほしいものリストに追加しておこう。

Reference
ゲーミングデスク「ROCCAFORTE(ロッカフォルテ)」が登場 (2006.4.27 ASCII24)
武者震

| | コメント (0) | トラックバック (0)

2006/05/01

Amazon.co.jp のコンビニ決済を試してみる

Watch Impress で紹介されていたように 4/18 から Amazon.co.jp の決済方法に コンビニ、ATM, ネットバンキングを利用した方法が追加されました。わたしはできることなら カード情報の入力や使用は避けたいと思っていたので ( それでも Amazon を利用していたのはまともな書店まで 90 分、往復1800円かかる僻地に住んでいるから ) さっそくコンビニ決済を試してみました。

Amazon.co.jp のヘルプ には確認番号とか収納機関番号とかいろいろとメモって 支払いに行かなきゃならないような感じがするけど、実際はとても簡単でした。実際の手順をスクリーンショットを混ぜて紹介します。

1. Amazon.co.jp で商品を注文する
2. 決済方法を「コンビニ・ATM・ネットバンキング払い」に変更する
3. 注文内容の確認メールが届く
確認メール
この段階では商品の確保 ( たぶん在庫の確認とか ) が行われているだけです。支払い情報については次のメールを待ちましょう。

4. 「お支払い番号をお送りします」というメールが届きます
支払い番号を通知するメール
「お支払い方法について」のページへのリンクをクリックしましょう。

5. 支払い方法の確定
支払い方法の選択
どのコンビニで料金を支払うのか、ネットバンキングを利用するのかはここで選択します。わたしは比較的近くにあるセブンイレブンで支払うことにしました。

6. 支払い方法の確認と支払票発行画面へのリンク
7-11 の場合
氏名と金額、それから注文番号が正しいかどうか確認しましょう。OKなら支払い票のリンクをクリックしましょう。

7. 払込票の印刷
払込票
払込票にはバーコードがあるので、払込票を印刷してコンビニへ持っていくと便利です。レジに渡してすぐに決済を行うことができます。支払いのときに店員さんから氏名と金額を確認されますので、間違っていないか注意して聞きましょう。払い込み受領証は必ず受け取っておきましょう。

8. 確認通知が送られてくる
確認通知メール
払込が完了してしばらくすると、Amazon.co.jp から金額を受領したことを通知するメールが送られてきます。2~3日経っても確認通知メールが送られてこない場合は Amazon.co.jp のカスタマーサポートに連絡をしましょう。

各ステップのページやメールに次に行うことがちゃんと案内されているし、 それもかなり簡単なのでとても使いやすかったです。 わたしが利用したセブンイレブンの払込票にはバーコードが埋め込まれていて、 支払いは公共料金と同じく伝票をレジに提示するだけでした。 面倒な書類記入とかサインはなかったこともよかった。

あと、払込票にはどんな商品を買ったかとかプライバシーに関わる情報はほとんど含まれません。 氏名、払込先として Amazon.co.jp (収納代行ウェルネット) 、払込票番号とバーコードと 金額と支払期限が記載されています。氏名と金額は確認のためだそうな。どんな本を買ったのか 知られたくないという人でも安心して使えると思います。

実際に使ってみるとユーザビリティを追求した、Amazon らしい使いやすいシステムだと感じました。 今後はコンビニ決済をデフォルトとして使おうと思っています。

Reference
Amazon.co.jp, コンビニ・ATM・ネットバンキングによる決済に対応
(2006/04/18, WatchImpress)
Amazon.co.jp ヘルプデスク コンビニ・ATM・ネットバンキング払いについて
( Amazon.co.jp )

| | コメント (0) | トラックバック (0)

« 2006年4月 | トップページ | 2006年6月 »