必要もないのにPython 3とデザインパターンとメタクラスを使うのはPythonプログラマ的厨二病の定番らしいので、とりあえず全部混ぜてエントリを書いてみました。(挨拶)
Pythonでデザインパターンを試す場合はGoFのSingleton パターンが定番らしいのですが、今回は私の好みでFlyweight パターンを選択しました。
Flyweight パターンの詳細については、恐れ入りますがWikipediaの該当項目を参照してください。
2010年10月31日日曜日
2010年10月30日土曜日
2010年10月29日金曜日
Pythonのメタクラス
Pythonのメタクラスの__init__()メソッドの第一引数はselfじゃなくてcls
Pythonのメタクラスの__init__()メソッドの第一引数はselfじゃなくてcls
大事なことなので二度言いました。(挨拶)
参考:Javascript's Prototype Inheritance in Python のコメント欄
Pythonのメタクラスの__init__()メソッドの第一引数はselfじゃなくてcls
大事なことなので二度言いました。(挨拶)
参考:Javascript's Prototype Inheritance in Python のコメント欄
2010年10月27日水曜日
Mac OS XでEclipse 3.6.1とPydev他をインストールしてみた(1)
Eclipseが3.5から3.6に自動アップデートしてくれないのを知らなかったので、今まで3.5を使い続けていたのですが、今回Eclipse 3.6.1とPydev他をクリーンインストールしてみることにしました。
2010年10月26日火曜日
Python 3のunittestでprint関数をテスト
Python 3でprint関数の出力をテストしたい場合、doctestを使うのがPythonらしいやり方のようなのですが、doctestの方は使い方のサンプル程度にして、しつこいテストはunittestでテストした方がすっきりしそうなので、unittestでprint関数をテストする方法を探してみました。
するとどうやら、標準出力をio.StringIO()にしてしまうのが定番のようでしたので、さっそく試してみました。
するとどうやら、標準出力をio.StringIO()にしてしまうのが定番のようでしたので、さっそく試してみました。
2010年10月25日月曜日
読了『バグがないプログラムのつくり方』
先日購入したまま少し放置してたけど、内容は平易なのでさっくり読了。
プログラムのバグに困ってる人にテスト駆動開発(以下、TDD)を紹介しつつエクストリーム・プログラミング(以下、XP)の世界に招待するような内容で、XPのTDD以外の要素については、「書籍○○○○をぜひお求めください」的な感じ。
私自身はPythonのTDDの参考にしたかったので、Java言語に興味は無いのだけど、かなり俯瞰的な内容なので、全体の1/3程を占める第3部「やってみよう」のコード本体とデザインパターンの具体的な話以外は普通に読めたし、2004年発行の割には、それ程古臭くは感じなかった。(ひょっとすると、Javaを知らないから掲載されてるコードを古く感じなかったのかもしれない)
コードを書き直したい時にそれまで書いて来たテストが背中を押してくれる感覚や、著者がTDDを素晴らしいと感じている様子がちゃんと伝わってくるのも良かった。
しかし、XPに重きを置きすぎて、TDD以外の周辺要素の説明にページを割き過ぎた感じが否めない。付録Aの「テスト駆動開発の疑問」が全8問だったのは、この本が求める現状からの変化の大きさを考えれば明らかに少なすぎ。
私みたいにTDDを何も知らない人が、シナリオのスムーズさに多少眉に唾をつけつつ読む分には、そんなに気にならないかもしれないけど、TDDを業務用途で導入するために、他人を説得する必要がある人は、何か別の本を探してみた方が良いかもしれない。
川端 光義 倉貫 義人 兒玉 督司
翔泳社
売り上げランキング: 71090
翔泳社
売り上げランキング: 71090
プログラムのバグに困ってる人にテスト駆動開発(以下、TDD)を紹介しつつエクストリーム・プログラミング(以下、XP)の世界に招待するような内容で、XPのTDD以外の要素については、「書籍○○○○をぜひお求めください」的な感じ。
私自身はPythonのTDDの参考にしたかったので、Java言語に興味は無いのだけど、かなり俯瞰的な内容なので、全体の1/3程を占める第3部「やってみよう」のコード本体とデザインパターンの具体的な話以外は普通に読めたし、2004年発行の割には、それ程古臭くは感じなかった。(ひょっとすると、Javaを知らないから掲載されてるコードを古く感じなかったのかもしれない)
コードを書き直したい時にそれまで書いて来たテストが背中を押してくれる感覚や、著者がTDDを素晴らしいと感じている様子がちゃんと伝わってくるのも良かった。
しかし、XPに重きを置きすぎて、TDD以外の周辺要素の説明にページを割き過ぎた感じが否めない。付録Aの「テスト駆動開発の疑問」が全8問だったのは、この本が求める現状からの変化の大きさを考えれば明らかに少なすぎ。
私みたいにTDDを何も知らない人が、シナリオのスムーズさに多少眉に唾をつけつつ読む分には、そんなに気にならないかもしれないけど、TDDを業務用途で導入するために、他人を説得する必要がある人は、何か別の本を探してみた方が良いかもしれない。
2010年10月24日日曜日
2010年10月23日土曜日
Pythonの比較演算子の特殊メソッド
以下、Python 3.1.2でのみ確認。
Pythonの比較演算子の特殊メソッドは、
の6種類があるけど、__lt__メソッドを実装すれば __gt__メソッドが、__le__メソッドを実装すれば __ge__メソッドが勝手に用意される。
Pythonの比較演算子の特殊メソッドは、
- __lt__(self, other) ... self < other
- __le__(self, other) ... self <= other
- __eq__(self, other) ... self == other
- __ne__(self, other) ... self != other
- __ge__(self, other) ... self >= other
- __gt__(self, other) ... self > other
の6種類があるけど、__lt__メソッドを実装すれば __gt__メソッドが、__le__メソッドを実装すれば __ge__メソッドが勝手に用意される。
2010年10月22日金曜日
IronPythonとIronRuby、誰が何を見捨てたのか?
今月の初め頃、MSがCodePlexでMercurialを採用している話のついでに、
なんてつぶやいてたんですが、今日になってDLRとIronPythonの父であるJim Hugunin氏がMSを退社してGoogleに行く事が発表されたり、MSがIronPython/IronRubyをコミュニティに委ねる旨の発表があったりと話が急展開してます。
DLR(Dynamic Language Runtime)は、.NET Framework 4でbuilt-inコンポーネントに昇格しましたから、引き続きMSで開発される事になるのでしょうが、仕様やリリーススケジュールはMSのコントロール下にあるので、IronPython/IronRuby側から何らかのリクエストがあった場合にどこまで通るかは不明です。ひょっとすると、IronSchemeのようにbuilt-inのDLRとは別に昔のDLRを改変しながら使っていくようなやり方もあり得るのかもしれません。
正直、急展開過ぎて話にちゃんとついていけてないので、後で追記するかもしれない。(^^;)
MSが今後もずっとIronRubyとIronPythonの両方を賄っていける程余裕があるかは疑問なので、いずれどっちかが選択されるだろうとは思ってるけど、どっちが選択されるのかはちょっと予想がつかない。Sat Oct 02 02:05:25 via webMasami HIRATA
msmhrt
msmhrt
以前は、どちらかを選択するならIronPythonを避けてIronRubyかなーと思ってたけど、CodePlexでMercurialが採用されたし、MSはどうもRubyコミュニティとの相性があまり良くないっぽいので、IronPythonが選ばれる線も捨てきれない。Sat Oct 02 02:08:25 via webMasami HIRATA
msmhrt
msmhrt
MSがIronRubyやIronPythonを始めた動機は、DjangoやRailsをIISで動かす事だったっぽいので、言語その物の人気よりはWebフレームワークの人気が判断を左右することになるのかも。Sat Oct 02 02:23:18 via webMasami HIRATA
msmhrt
msmhrt
なんてつぶやいてたんですが、今日になってDLRとIronPythonの父であるJim Hugunin氏がMSを退社してGoogleに行く事が発表されたり、MSがIronPython/IronRubyをコミュニティに委ねる旨の発表があったりと話が急展開してます。
DLR(Dynamic Language Runtime)は、.NET Framework 4でbuilt-inコンポーネントに昇格しましたから、引き続きMSで開発される事になるのでしょうが、仕様やリリーススケジュールはMSのコントロール下にあるので、IronPython/IronRuby側から何らかのリクエストがあった場合にどこまで通るかは不明です。ひょっとすると、IronSchemeのようにbuilt-inのDLRとは別に昔のDLRを改変しながら使っていくようなやり方もあり得るのかもしれません。
正直、急展開過ぎて話にちゃんとついていけてないので、後で追記するかもしれない。(^^;)
2010年10月21日木曜日
書籍『Python 3 プログラミング徹底入門 』
購入したのは結構前だけど、Pythonのクラス絡みで少し悩んだのでこの本でおさらい中。
そういえば、この本を買った頃はPython 3には全く手を出して無かったはずなのに、何故Python 3専門のこの本を買ったのか我ながら不思議だったのだけど、恐らく、本屋で見かけたので立ち読みしたら、Pythonの書籍にしては言い訳がましさをそんなに感じないし、出版社がピアソンだから見かけた時に買っとかないとすぐなくなるとかそんな事を考えたのではないかと予想。
マーク・サマーフィールド Mark Summerfield
ピアソンエデュケーション
売り上げランキング: 404945
ピアソンエデュケーション
売り上げランキング: 404945
そういえば、この本を買った頃はPython 3には全く手を出して無かったはずなのに、何故Python 3専門のこの本を買ったのか我ながら不思議だったのだけど、恐らく、本屋で見かけたので立ち読みしたら、Pythonの書籍にしては言い訳がましさをそんなに感じないし、出版社がピアソンだから見かけた時に買っとかないとすぐなくなるとかそんな事を考えたのではないかと予想。
2010年10月20日水曜日
書籍『バグがないプログラムのつくり方』
昨日のエントリでTDDの入門書的な書籍が欲しくなったので一冊買ってみた。
少し大きめの本屋を数軒はしごしてみたけど、タイトルにTDDと書いてある本は残念ながらこれ一冊。TDDって人気ないんだろうか?
対象環境はJavaとEclipseとJUnitで、私の環境はPythonとunittest2だけど、PythonのunittestはJUnitのPython版のようなものらしいので、雰囲気が分かればまあいいかーと考えて、あまり気にしない事にした。付属CD-ROMのEclipseのバージョンが2.1.3だったりしたけど、こっちも同様の理由でスルー。
そういえば、Pythonのモジュールって、JavaのJ○○のPython版だから使い方は大体分かるよね?みたいな、ユーザがJavaの知識がある事を前提にした説明のモジュールがやたらと多い印象がある。何でだろう?
内容の方は、Java言語に特有の機能を使ったリファクタリングの説明が多いとちょっと困るかもと思ったけど、立ち読みしてみた感じだと、例題が単純なせいかその辺は大丈夫っぽい。
ただし、SCMツール(Git, Mercurial, etc...)と連携してる様子は全く無さそうなので、その辺りには期待できそうにないのがちょっと残念。
バグがないプログラムのつくり方 JavaとEclipseで学ぶTDDテスト駆動開発 (Be agile!)
posted with amazlet at 10.10.21
川端 光義 倉貫 義人 兒玉 督司
翔泳社
売り上げランキング: 312266
翔泳社
売り上げランキング: 312266
少し大きめの本屋を数軒はしごしてみたけど、タイトルにTDDと書いてある本は残念ながらこれ一冊。TDDって人気ないんだろうか?
対象環境はJavaとEclipseとJUnitで、私の環境はPythonとunittest2だけど、PythonのunittestはJUnitのPython版のようなものらしいので、雰囲気が分かればまあいいかーと考えて、あまり気にしない事にした。付属CD-ROMのEclipseのバージョンが2.1.3だったりしたけど、こっちも同様の理由でスルー。
そういえば、Pythonのモジュールって、JavaのJ○○のPython版だから使い方は大体分かるよね?みたいな、ユーザがJavaの知識がある事を前提にした説明のモジュールがやたらと多い印象がある。何でだろう?
内容の方は、Java言語に特有の機能を使ったリファクタリングの説明が多いとちょっと困るかもと思ったけど、立ち読みしてみた感じだと、例題が単純なせいかその辺は大丈夫っぽい。
ただし、SCMツール(Git, Mercurial, etc...)と連携してる様子は全く無さそうなので、その辺りには期待できそうにないのがちょっと残念。
2010年10月19日火曜日
PythonでTDDしてみた
Python以外の言語でTDDをした経験がある訳ではないので、あちこちのページを参考にしながらかなり適当にやってみた。
とりあえず試しに書いたコードは、
この辺りは初歩的な疑問のはずなので、ちゃんとした書籍を一冊買えば即解消しそうな予感。
とりあえず試しに書いたコードは、
from weakref import WeakValueDictionary class NicoChannel: _InstancePool = WeakValueDictionary() def __new__(cls, channelid): try: channelid = int(channelid) except ValueError: return None if channelid < 1: return None obj = NicoChannel._InstancePool.get(channelid, None) if not obj: obj = object.__new__(cls) NicoChannel._InstancePool[channelid] = obj return obj def __init__(self, channelid): self.channelid = int(channelid) def __str__(self): return str(self.channelid)で、テストの方はこんな感じに。
#!/usr/bin/env python3.1 import unittest from nicochannel import NicoChannel class TestNicoChannel(unittest.TestCase): def setUp(self): pass def tearDown(self): pass def testNewClass(self): self.assertNotEqual(NicoChannel(1), None) channel1 = NicoChannel(1) self.assertEqual(str(channel1), '1') channel2 = NicoChannel(2) self.assertEqual(str(channel2), '2') # Test for Flyweight pattern. channel1_clone = NicoChannel(1) self.assertEqual(channel1, channel1_clone) self.assertNotEqual(channel1, channel2) # If channelid isn't a number, NicoChannel(channelid) is None self.assertEqual(NicoChannel('A'), None) # If channelid is a negative number, NicoChannel(channelid) is None self.assertEqual(NicoChannel(-1), None) # If channelid is a zero, NicoChannel(channelid) is None self.assertEqual(NicoChannel(0), None) # If channelid is a number string, NicoChannel(channelid) isn't None channelzerotwo = NicoChannel("02") self.assertNotEqual(channelzerotwo, None) # Testing normalization of channelid. self.assertEqual(str(channelzerotwo), '2') # Test NicoChannel("02") == NicoChannel(2) self.assertEqual(channelzerotwo, channel2) class TestRandom(unittest.TestCase): pass if __name__ == '__main__': unittest.main()現時点でよく分からなかったのは、
- レッドからグリーンになったらcommitするのが一般的なパターンのようだけど、テストを追加してレッドになった時点ではcommitしない方がいい?(使ってるSCMはMercurial)
- 前回のサイクルで追加したコードのせいで、これから追加しても即グリーンになるのが分かってるようなテストは追加しない方がいい?
- Flyweightパターンにする時に一気に10行ぐらい追加するのってマズい?
この辺りは初歩的な疑問のはずなので、ちゃんとした書籍を一冊買えば即解消しそうな予感。
2010年10月18日月曜日
Pylint 3k coming soon !
PylintのPython 3対応版が近い内にリリースされる予定らしい。
ソースはPylintの開発MLに流れた数日前のメール。
[Python-projects] Pylint 3k coming soon !
ソースはPylintの開発MLに流れた数日前のメール。
[Python-projects] Pylint 3k coming soon !
2010年10月17日日曜日
Python初心者によるMac OS XでのPythonのはまりどころのまとめ(2)
前回のエントリでは、自分でPythonをビルドするのであれば、./configureで--enable-frameworkを有効にするのはオススメしないことと、その理由は、
- Framework化されたPythonでなければいけないような状況が滅多にない
- Python.Frameworkが必要な状況がもしあるなら、OS標準のFrameworkを使用するか、必要とするアプリケーションにFrameworkを同梱しておくべき
- PythonをFramework化すると面倒に巻き込まれることがある
2010年10月15日金曜日
「フェイスブック同時オン会」開催中!
あまちゃんが主催で本日開催中の「フェイスブック同時オン会」で10/16の0時から「みんなで乾杯!二回目!」がもうすぐ始まります。
どうやらFacebookでは公開グループの管理者が250人(?)登録する毎に1時間程登録できなくなる規制が入るらしく、承認が遅れる場合があるとの事でした。
尚、Facebookでメールによる通知設定を有効にしたままだと、かなりの流量でメールが届きますので慣れてない人は注意した方が良さそうです。届くメールの本文中に「Eメールの設定を編集」というリンクがあるはずですので、そこから設定を変更するのがオススメです。
このリンクをクリックすると、
Facebookの画面でこのようなダイアログが表示されますので、「メールお知らせの宛先」のチェックを外せば「フェイスブック同時オン会」の通知メールが届かなくなります。
なお、その下の「グループのメールをオフにするには...」というのは他のグループも含めたグループ全体の設定が可能のようですので、好みに応じてどうぞ。
どうやらFacebookでは公開グループの管理者が250人(?)登録する毎に1時間程登録できなくなる規制が入るらしく、承認が遅れる場合があるとの事でした。
尚、Facebookでメールによる通知設定を有効にしたままだと、かなりの流量でメールが届きますので慣れてない人は注意した方が良さそうです。届くメールの本文中に「Eメールの設定を編集」というリンクがあるはずですので、そこから設定を変更するのがオススメです。
このリンクをクリックすると、
Facebookの画面でこのようなダイアログが表示されますので、「メールお知らせの宛先」のチェックを外せば「フェイスブック同時オン会」の通知メールが届かなくなります。
なお、その下の「グループのメールをオフにするには...」というのは他のグループも含めたグループ全体の設定が可能のようですので、好みに応じてどうぞ。
2010年10月14日木曜日
Facebookに登録してみた
2010年10月13日水曜日
Python初心者によるMac OS XでのPythonのはまりどころのまとめ
皆さんこんばんは。Python初心者の @msmhrt です。
Mac OS XでPythonを勉強し始めて何ヶ月か経ったので、一度復習を兼ねてまとめてみようと思います。私が今までPerlとかAWKとかsedを使っていて、Pythonはこうやるのかーとか、これは便利だなーと思ったところ、開発(?)していてはまったところなどピックアップしてみる予定です。
さて、Mac OS XでPythonを使おうとする時、Pythonを準備する方法の選択肢は大きく分けて4つあります。
ですから、4.の手順、自分でPythonをビルドする際もFramework化するのが当然に違いないと思ってしまうのは、ある意味仕方がないことだろうと思います。
しかし、私は自分でPythonをビルドする際にはFramework化しないようにしていますし、このブログでもFramework化しない手順をオススメしています。その理由は、
Mac OS XでPythonを勉強し始めて何ヶ月か経ったので、一度復習を兼ねてまとめてみようと思います。私が今までPerlとかAWKとかsedを使っていて、Pythonはこうやるのかーとか、これは便利だなーと思ったところ、開発(?)していてはまったところなどピックアップしてみる予定です。
さて、Mac OS XでPythonを使おうとする時、Pythonを準備する方法の選択肢は大きく分けて4つあります。
- Mac OS Xに標準でインストールされているPythonをそのまま使う
- MacPorts等のパッケージシステムを使ってPythonをインストールする
- Python公式サイトで配布されているMac OS X Installer Disk ImageからPythonをインストールする
- Xcodeを使って自分でPythonをビルドする
ですから、4.の手順、自分でPythonをビルドする際もFramework化するのが当然に違いないと思ってしまうのは、ある意味仕方がないことだろうと思います。
しかし、私は自分でPythonをビルドする際にはFramework化しないようにしていますし、このブログでもFramework化しない手順をオススメしています。その理由は、
2010年10月12日火曜日
2010年10月11日月曜日
Python 3.2 alpha 3をインストールしてみた
Pythonの公式サイトではまだ正式には告知されていませんでしたが、Python 3.2 alpha 3が公開されたようなので、試しにインストールしてみました。
自宅の環境では「Python専用ユーザでPythonバイナリを隔離してみた」の手順の結果、Python 3.1で動作するvirtualenv3が既にインストールされているので、今回は同様の手順でPython 3.2 alpha 3本体(以下、3.2a3)とdistribute-0.6.14だけ追加する事にしました。
自宅の環境では「Python専用ユーザでPythonバイナリを隔離してみた」の手順の結果、Python 3.1で動作するvirtualenv3が既にインストールされているので、今回は同様の手順でPython 3.2 alpha 3本体(以下、3.2a3)とdistribute-0.6.14だけ追加する事にしました。
2010年10月10日日曜日
msmhrt-httplib2
Google Codeのclone機能を使ってhttplib2クローンのmsmhrt-httplib2を公開してみました。
httplib2自体は元々Python 3にも対応はしているのですが、実際に利用中に発生した「Python初心者が3.xに手を出したらhttplib2でハマった理由」や「Python 3.1.2 + httplib2 でまた問題」の問題を修正したつもりです。
本家のIssue Trackerにも報告はしてありますが、開発者が今年の6月以降、活動している様子が無いので、本家に反映されるまで時間がかかりそうな気配です。
Google CodeもMercurialも今回初めて使ってみたので多少不安なのですが、何かありましたらこのブログのコメントやTwitterの@msmhrt 等でご連絡ください。m(__)m
httplib2自体は元々Python 3にも対応はしているのですが、実際に利用中に発生した「Python初心者が3.xに手を出したらhttplib2でハマった理由」や「Python 3.1.2 + httplib2 でまた問題」の問題を修正したつもりです。
本家のIssue Trackerにも報告はしてありますが、開発者が今年の6月以降、活動している様子が無いので、本家に反映されるまで時間がかかりそうな気配です。
Google CodeもMercurialも今回初めて使ってみたので多少不安なのですが、何かありましたらこのブログのコメントやTwitterの@msmhrt 等でご連絡ください。m(__)m
2010年10月9日土曜日
さくらのVPSでカスタムOSインストールを試してみた(2)
昨日のエントリで書いた、さくらのVPSのVNCコンソールがMac OS XではGoogle Chromeでだけ起動しなかった件が気になったので、OSをBoot CampのWindows XP SP3に変えて確認してみたところ、
という結果になり、4種類のWebブラウザ全てでVNCコンソールが起動しました。
Mac OS X版のGoogle ChromeでJava絡みの設定をいじった記憶は特にないのですが、もしかすると我が家のiMacだけの現象なのかもしれません。
今日のエントリも昨日のエントリの続きで、さくらのVPSのカスタムOSインストールで気がついた事のメモです。
使えるようになったばかりの機能なので混み合ってるかとも思ったのですが、VNCコンソールの動作は予想していたよりも安定しているようです。
おかげで、何か問題が無いか探そうとすると重箱の隅をつつかざるを得ませんでした。
以前の「VirtualBoxでさくらのVPSのテスト環境を作ってみたシリーズ」よりもかなりショボいエントリになっていますが、どうかご了承ください。m(__)m
- Google Chrome 6.0.472.63 …… VNCコンソールが起動
- Internet Explorer 8.0.6001.18702 …… VNCコンソールが起動
- Firefox 3.6.10 …… VNCコンソールが起動
- Safari 5.0.2 (7533.1.8.5) …… VNCコンソールが起動
という結果になり、4種類のWebブラウザ全てでVNCコンソールが起動しました。
Mac OS X版のGoogle ChromeでJava絡みの設定をいじった記憶は特にないのですが、もしかすると我が家のiMacだけの現象なのかもしれません。
今日のエントリも昨日のエントリの続きで、さくらのVPSのカスタムOSインストールで気がついた事のメモです。
使えるようになったばかりの機能なので混み合ってるかとも思ったのですが、VNCコンソールの動作は予想していたよりも安定しているようです。
おかげで、何か問題が無いか探そうとすると重箱の隅をつつかざるを得ませんでした。
以前の「VirtualBoxでさくらのVPSのテスト環境を作ってみたシリーズ」よりもかなりショボいエントリになっていますが、どうかご了承ください。m(__)m
2010年10月8日金曜日
さくらのVPSでカスタムOSインストールを試してみた(1)
本日、さくらのVPSに新機能の「カスタムOSインストール」が提供開始されました。インストール可能なOSの種類はニュースリリースにも記載されているとおり、
さくらのVPSでインストール可能なOSの種類が増える予定である事は、さくらインターネットの田中邦裕社長が以前からTwitterのアカウントでつぶやいたりしていたのですが、多少作業が遅れたらしく、先週中には提供されるはずだった開始時期が今日までずれ込んでしまったようです。
インストール手順については、手順が細かく記載されたオンラインマニュアルがOS毎に提供されていますので特に迷う事は無かったのですが、せっかく試してみたので、オンラインマニュアルには記載されていなかった重箱の隅を中心にまとめてみます。
尚、インストールしたOSはUbuntu 10.04 i386(32bit版)です。
- CentOS 5.5 x86_64(64bit版)
- CentOS 5.5 x86 i386(32bit版)
- Ubuntu 10.04 amd64(64bit版)
- Ubuntu 10.04 i386(32bit版)
- FreeBSD 8.1 amd64(64bit版)
- FreeBSD 8.1 i386(32bit版)
- Debian 5.05 amd64(64bit版)
- Debian 5.05 i386(32bit版)
- Fedora 13 x86_64(64bit版)
- Fedora 13 i386(32bit版)
さくらのVPSでインストール可能なOSの種類が増える予定である事は、さくらインターネットの田中邦裕社長が以前からTwitterのアカウントでつぶやいたりしていたのですが、多少作業が遅れたらしく、先週中には提供されるはずだった開始時期が今日までずれ込んでしまったようです。
インストール手順については、手順が細かく記載されたオンラインマニュアルがOS毎に提供されていますので特に迷う事は無かったのですが、せっかく試してみたので、オンラインマニュアルには記載されていなかった重箱の隅を中心にまとめてみます。
尚、インストールしたOSはUbuntu 10.04 i386(32bit版)です。
2010年10月7日木曜日
Mac OS X用のGUIなMercurialクライアントについてのメモ
Mac OS X用のGUIなMecurialクライアントは、単体アプリケーションとしては、Murky、MacHG、MacMercurialの3種類があるようなので、ほんの少しだけ触ってみました。以下はそのメモです。
1. Murky
私の環境では、普通に操作しているだけで、Cancelボタンが何故か効かなくなったりする事があって、ちょっと実用には耐えない感じでした。何か間違えたのかと思ってMercurialのバージョンを変えてみるなど色々試したのですが、現象が変わらないのでパスしました。
2. MacHg
現時点ではGoogle CodeのMercurialリポジトリを扱えないという制限があるようです。MacHgの公式FAQによれば、原因は、Google Code側がMercurialのidentityコマンドの応答を正しく返さない事にあるらしく、MacHgでは対処のしようがないとの事でした。
この件は、Google Hosting ProjectにもIssueとして既に登録されていますが、今年の6月以降動きがないようなので、Vote機能で一票投じておきました。
3. MacMercurial
MacMercurialには元々clone機能は無く、cloneされたリポジトリに対して操作を行う事になるようです。
操作結果の表示が通常のMercurialコマンドの出力をそのままウィンドウに表示している感じで、イマイチGUI化の恩恵が感じられませんでした。
4. 総評
Mac OS XでMercurialの3種類のGUIクライアントをほんの少しだけ触ってみたのですが、ダメな所ばかり目についてしまって残念な結果になりました。
もっと使い込む事ができれば印象も変わったかもしれないのですが……
まだ試してないのは、Eclipse向けのプラグインであるMercurialEclipseとNetBeans用のMercurialプラグインですが、こちらも後日試してみたいと思います。
1. Murky
私の環境では、普通に操作しているだけで、Cancelボタンが何故か効かなくなったりする事があって、ちょっと実用には耐えない感じでした。何か間違えたのかと思ってMercurialのバージョンを変えてみるなど色々試したのですが、現象が変わらないのでパスしました。
2. MacHg
現時点ではGoogle CodeのMercurialリポジトリを扱えないという制限があるようです。MacHgの公式FAQによれば、原因は、Google Code側がMercurialのidentityコマンドの応答を正しく返さない事にあるらしく、MacHgでは対処のしようがないとの事でした。
この件は、Google Hosting ProjectにもIssueとして既に登録されていますが、今年の6月以降動きがないようなので、Vote機能で一票投じておきました。
3. MacMercurial
MacMercurialには元々clone機能は無く、cloneされたリポジトリに対して操作を行う事になるようです。
操作結果の表示が通常のMercurialコマンドの出力をそのままウィンドウに表示している感じで、イマイチGUI化の恩恵が感じられませんでした。
4. 総評
Mac OS XでMercurialの3種類のGUIクライアントをほんの少しだけ触ってみたのですが、ダメな所ばかり目についてしまって残念な結果になりました。
もっと使い込む事ができれば印象も変わったかもしれないのですが……
まだ試してないのは、Eclipse向けのプラグインであるMercurialEclipseとNetBeans用のMercurialプラグインですが、こちらも後日試してみたいと思います。
2010年10月6日水曜日
Python専用ユーザでPythonバイナリを隔離してみた
私は、Mac OS Xのまっさら (plain vanilla) な環境で何か検証したい時は、新規アカウントを作って作業するようにしています。
そのため、日常的に使っているツールは /usr/local 以下にインストールしたり、MacPorts等のパッケージシステムに頼ったりせずに $HOME/local 以下にインストールするような癖が自然についてしまいました。
この方法はそれなりに便利なのですが、最近になって複数のバージョンのPythonをvirtualenvで使い分ける際に、まだ慣れてないせいかvirtualenv環境ではなく元環境に手を加えてしまうミスを二度も起こしてしまいました。
結局、面倒なのでPython環境を一度全部消してインストールからやり直したのですが、もうちょっと何とかならないだろうか?と考えてみました。
その結果、Python環境をインストールするために専用のユーザを作成してみたのですが、これが割といい感じでしたので、大した内容ではありませんが手順を公開してみます。
尚、私はまだPythonに慣れてないので、「もっと、こうした方がいいよ」等のご意見がありましたらコメント、Twitter、ブクマ等で教えて頂けると助かります。m(__)m
そのため、日常的に使っているツールは /usr/local 以下にインストールしたり、MacPorts等のパッケージシステムに頼ったりせずに $HOME/local 以下にインストールするような癖が自然についてしまいました。
この方法はそれなりに便利なのですが、最近になって複数のバージョンのPythonをvirtualenvで使い分ける際に、まだ慣れてないせいかvirtualenv環境ではなく元環境に手を加えてしまうミスを二度も起こしてしまいました。
結局、面倒なのでPython環境を一度全部消してインストールからやり直したのですが、もうちょっと何とかならないだろうか?と考えてみました。
その結果、Python環境をインストールするために専用のユーザを作成してみたのですが、これが割といい感じでしたので、大した内容ではありませんが手順を公開してみます。
尚、私はまだPythonに慣れてないので、「もっと、こうした方がいいよ」等のご意見がありましたらコメント、Twitter、ブクマ等で教えて頂けると助かります。m(__)m
2010年10月5日火曜日
Google Codeでhttplib2のcloneを作成してみた
Python 3でクローラーもどきを作るのにhttplib2モジュールを使っていたのですが、何度か例外に悩まされて困ったので、いわゆる勝手forkを作ってみる事にしました。
せっかく『入門Mercurial Linux/Windows対応』を買ったばかりなので、先日触ってみたBitbucket.orgを使ってみようかとも思ったのですが、httplib2プロジェクトはProject Hosting on Google Codeでホストされているので、Google Codeのclone機能を使ってみることにしました。
せっかく『入門Mercurial Linux/Windows対応』を買ったばかりなので、先日触ってみたBitbucket.orgを使ってみようかとも思ったのですが、httplib2プロジェクトはProject Hosting on Google Codeでホストされているので、Google Codeのclone機能を使ってみることにしました。
2010年10月4日月曜日
Python 3.1.2 + httplib2 でまた問題
Ubuntu 10.04 32bit版+Python 3.1.2の環境でhttplib2を使ってたらIssue 62に似た症状が発生して悩み中。前回の修正で安定したと思ったのだけど、まだ怪しいところが残ってたらしい。
Bitbucket.orgで解決できそうなパッチを見つけたので、Python3向けに修正してから適用して様子見中。
(前略) return h.request(url) File "/home/msmhrt/mypython/lib/python3.1/site-packages/httplib2-0.6.0-py3.1.egg/httplib2/__init__.py", line 1088, in request (response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey) File "/home/msmhrt/mypython/lib/python3.1/site-packages/httplib2-0.6.0-py3.1.egg/httplib2/__init__.py", line 859, in _request (response, content) = self._conn_request(conn, request_uri, method, body, headers) File "/home/msmhrt/mypython/lib/python3.1/site-packages/httplib2-0.6.0-py3.1.egg/httplib2/__init__.py", line 828, in _conn_request response = conn.getresponse() File "/usr/lib/python3.1/http/client.py", line 1014, in getresponse method=self._method) File "/usr/lib/python3.1/http/client.py", line 278, in __init__ self.fp = sock.makefile("rb") AttributeError: 'NoneType' object has no attribute 'makefile'
Bitbucket.orgで解決できそうなパッチを見つけたので、Python3向けに修正してから適用して様子見中。
2010年10月3日日曜日
なぜGoogleはThe Document Foundationを本格的に支援しないのか?
疑問形のタイトルがついた書籍が流行っているという話を聞いたのでさっそく便乗してみました。
さて、SunがOracleに買収された事でどうなるかが注目されていたOpenOffice.orgですが、コア開発者の一部がThe Document Foundationという組織を新たに設立し、Oracleとは袂を分かつ事がどうやら決定したようです。
The Document Foundation設立の発表の際には、いくつもの企業から祝辞が送られたようですが、その中にはGoogleの名前もありました。GoogleはGoogle Summer of Code等でOpenOfficeとも縁がありますし、OSSを推進するGoogleが今回の件で祝辞を述べることは当然だろうと私も思います。
しかし、この件への感想の中には
私はこの意見にはちょっと同意できません。
以下では、どうして私はそう思うのか?を説明してみたいと思います。
さて、SunがOracleに買収された事でどうなるかが注目されていたOpenOffice.orgですが、コア開発者の一部がThe Document Foundationという組織を新たに設立し、Oracleとは袂を分かつ事がどうやら決定したようです。
The Document Foundation設立の発表の際には、いくつもの企業から祝辞が送られたようですが、その中にはGoogleの名前もありました。GoogleはGoogle Summer of Code等でOpenOfficeとも縁がありますし、OSSを推進するGoogleが今回の件で祝辞を述べることは当然だろうと私も思います。
しかし、この件への感想の中には
GoogleがThe Document Foundationのスポンサーになって本格的に支援してくれるに違いないという期待(?)を込めた意見もあったようです。
私はこの意見にはちょっと同意できません。
GoogleがLibreOfficeの開発者を雇用する事はあるかもしれないが、The Document Foundation自体を本格的に支援するような事はないだろうというのが私の意見です。
以下では、どうして私はそう思うのか?を説明してみたいと思います。
2010年10月2日土曜日
2010年10月1日金曜日
書籍『入門Mercurial Linux/Windows対応』&『Googleの全貌』
昨日買って来たのでAmazonアソシエイトリンクの張り付け練習がてらメモ。
まだちゃんと読んでないので感想は後日。←結局書かないフラグw
昨年、あちこちでリポジトリをsubversionからgitに変更したOSSなプロジェクトが増えてきたからという理由で、『入門Git』と『実用Git』は購入済みだったのだけど、Mercurialの本は一冊も買ってなかったので、先日、Bitbucket.orgの制限が解放された機会にMercurial本も買ってみた。
パラパラめくって読んでみた感じだと『入門Git』を先に読んでたおかげか結構楽に読めそうな感じがしたのだけど、SSHの説明で、「(サーバー上でssh-keygenを使って)作成した秘密鍵を、クライアント側の~/.ssh配下にコピーします。」と書いてあるのを見て、「そのやり方はちょっと勘弁してくれー」と思わず悲鳴を上げそうになったり。(^^;)
最近ぼんやりと「Googleはhttpsをどうするつもりなんだろう? アカウント別サブドメイン志向はこのまま続けるみたいだし、認証局になってGoogle Chromeにルート証明書を標準搭載するつもりはないみたいだし……」と考えていたので、何かヒントになりそうな事が書いてあったらいいなー程度の期待で買ってみた。まだ未読。
まだちゃんと読んでないので感想は後日。←結局書かないフラグw
藤原 克則
秀和システム
売り上げランキング: 22300
秀和システム
売り上げランキング: 22300
昨年、あちこちでリポジトリをsubversionからgitに変更したOSSなプロジェクトが増えてきたからという理由で、『入門Git』と『実用Git』は購入済みだったのだけど、Mercurialの本は一冊も買ってなかったので、先日、Bitbucket.orgの制限が解放された機会にMercurial本も買ってみた。
パラパラめくって読んでみた感じだと『入門Git』を先に読んでたおかげか結構楽に読めそうな感じがしたのだけど、SSHの説明で、「(サーバー上でssh-keygenを使って)作成した秘密鍵を、クライアント側の~/.ssh配下にコピーします。」と書いてあるのを見て、「そのやり方はちょっと勘弁してくれー」と思わず悲鳴を上げそうになったり。(^^;)
最近ぼんやりと「Googleはhttpsをどうするつもりなんだろう? アカウント別サブドメイン志向はこのまま続けるみたいだし、認証局になってGoogle Chromeにルート証明書を標準搭載するつもりはないみたいだし……」と考えていたので、何かヒントになりそうな事が書いてあったらいいなー程度の期待で買ってみた。まだ未読。
登録:
投稿 (Atom)