2010年10月31日日曜日

Python 3のデザインパターンでメタクラスしてみた(1)

必要もないのにPython 3とデザインパターンとメタクラスを使うのはPythonプログラマ的厨二病の定番らしいので、とりあえず全部混ぜてエントリを書いてみました。(挨拶)

Pythonでデザインパターンを試す場合はGoFSingleton パターンが定番らしいのですが、今回は私の好みでFlyweight パターンを選択しました。
Flyweight パターンの詳細については、恐れ入りますがWikipediaの該当項目を参照してください。


2010年10月29日金曜日

Pythonのメタクラス

Pythonのメタクラスの__init__()メソッドの第一引数はselfじゃなくてcls
Pythonのメタクラスの__init__()メソッドの第一引数はselfじゃなくてcls

大事なことなので二度言いました。(挨拶)

参考:Javascript's Prototype Inheritance in Python のコメント欄

Mac OS XでEclipse 3.6.1とPydev他をインストールしてみた(2)

前回からの続きです。


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()にしてしまうのが定番のようでしたので、さっそく試してみました。


2010年10月25日月曜日

読了『バグがないプログラムのつくり方』

先日購入したまま少し放置してたけど、内容は平易なのでさっくり読了。

バグがないプログラムのつくり方 JavaとEclipseで学ぶTDDテスト駆動開発 (Be agile!)
川端 光義 倉貫 義人 兒玉 督司
翔泳社
売り上げランキング: 71090

プログラムのバグに困ってる人にテスト駆動開発(以下、TDD)を紹介しつつエクストリーム・プログラミング(以下、XP)の世界に招待するような内容で、XPのTDD以外の要素については、「書籍○○○○をぜひお求めください」的な感じ。

私自身はPythonのTDDの参考にしたかったので、Java言語に興味は無いのだけど、かなり俯瞰的な内容なので、全体の1/3程を占める第3部「やってみよう」のコード本体とデザインパターンの具体的な話以外は普通に読めたし、2004年発行の割には、それ程古臭くは感じなかった。(ひょっとすると、Javaを知らないから掲載されてるコードを古く感じなかったのかもしれない)
コードを書き直したい時にそれまで書いて来たテストが背中を押してくれる感覚や、著者がTDDを素晴らしいと感じている様子がちゃんと伝わってくるのも良かった。

しかし、XPに重きを置きすぎて、TDD以外の周辺要素の説明にページを割き過ぎた感じが否めない。付録Aの「テスト駆動開発の疑問」が全8問だったのは、この本が求める現状からの変化の大きさを考えれば明らかに少なすぎ。

私みたいにTDDを何も知らない人が、シナリオのスムーズさに多少眉に唾をつけつつ読む分には、そんなに気にならないかもしれないけど、TDDを業務用途で導入するために、他人を説得する必要がある人は、何か別の本を探してみた方が良いかもしれない。

2010年10月23日土曜日

Pythonの比較演算子の特殊メソッド

以下、Python 3.1.2でのみ確認。

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を採用している話のついでに、


MSが今後もずっとIronRubyとIronPythonの両方を賄っていける程余裕があるかは疑問なので、いずれどっちかが選択されるだろうとは思ってるけど、どっちが選択されるのかはちょっと予想がつかない。Sat Oct 02 02:05:25 via web


以前は、どちらかを選択するならIronPythonを避けてIronRubyかなーと思ってたけど、CodePlexでMercurialが採用されたし、MSはどうもRubyコミュニティとの相性があまり良くないっぽいので、IronPythonが選ばれる線も捨てきれない。Sat Oct 02 02:08:25 via web


MSがIronRubyやIronPythonを始めた動機は、DjangoやRailsをIISで動かす事だったっぽいので、言語その物の人気よりはWebフレームワークの人気が判断を左右することになるのかも。Sat Oct 02 02:23:18 via web


なんてつぶやいてたんですが、今日になってDLRIronPythonの父である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 プログラミング徹底入門
マーク・サマーフィールド Mark Summerfield
ピアソンエデュケーション
売り上げランキング: 404945

そういえば、この本を買った頃はPython 3には全く手を出して無かったはずなのに、何故Python 3専門のこの本を買ったのか我ながら不思議だったのだけど、恐らく、本屋で見かけたので立ち読みしたら、Pythonの書籍にしては言い訳がましさをそんなに感じないし、出版社がピアソンだから見かけた時に買っとかないとすぐなくなるとかそんな事を考えたのではないかと予想。

2010年10月20日水曜日

書籍『バグがないプログラムのつくり方』

昨日のエントリでTDDの入門書的な書籍が欲しくなったので一冊買ってみた。

バグがないプログラムのつくり方 JavaとEclipseで学ぶTDDテスト駆動開発 (Be agile!)
川端 光義 倉貫 義人 兒玉 督司
翔泳社
売り上げランキング: 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行ぐらい追加するのってマズい?
etc...。
この辺りは初歩的な疑問のはずなので、ちゃんとした書籍を一冊買えば即解消しそうな予感。

2010年10月18日月曜日

Pylint 3k coming soon !

PylintのPython 3対応版が近い内にリリースされる予定らしい。
ソースはPylintの開発MLに流れた数日前のメール。

[Python-projects] Pylint 3k coming soon !

2010年10月17日日曜日

Python初心者によるMac OS XでのPythonのはまりどころのまとめ(2)

前回のエントリでは、自分でPythonをビルドするのであれば、./configureで--enable-frameworkを有効にするのはオススメしないことと、その理由は、
  1. Framework化されたPythonでなければいけないような状況が滅多にない
  2. Python.Frameworkが必要な状況がもしあるなら、OS標準のFrameworkを使用するか、必要とするアプリケーションにFrameworkを同梱しておくべき
  3. PythonをFramework化すると面倒に巻き込まれることがある
であることまで書きましたので、この3つの項目について順番に説明します。今後、かなり細切れのエントリが続くことになりそうですが、ご容赦ください。m(__)m

2010年10月15日金曜日

「フェイスブック同時オン会」開催中!

あまちゃんが主催で本日開催中の「フェイスブック同時オン会」で10/16の0時から「みんなで乾杯!二回目!」がもうすぐ始まります。

どうやらFacebookでは公開グループの管理者が250人(?)登録する毎に1時間程登録できなくなる規制が入るらしく、承認が遅れる場合があるとの事でした。

尚、Facebookでメールによる通知設定を有効にしたままだと、かなりの流量でメールが届きますので慣れてない人は注意した方が良さそうです。届くメールの本文中に「Eメールの設定を編集」というリンクがあるはずですので、そこから設定を変更するのがオススメです。
このリンクをクリックすると、


Facebookの画面でこのようなダイアログが表示されますので、「メールお知らせの宛先」のチェックを外せば「フェイスブック同時オン会」の通知メールが届かなくなります。

なお、その下の「グループのメールをオフにするには...」というのは他のグループも含めたグループ全体の設定が可能のようですので、好みに応じてどうぞ。

2010年10月14日木曜日

Facebookに登録してみた

Facebookがブームなのかどうかはよく分からないけど、Facebookで「友達」を増やすのがブームになってるようなので、ブームに乗ってみた。
ちょうど今(2010年10月14日 23時40分)、あまちゃんが「フェイスブック同時オン会」の公開グループを主催して参加者が増え続けてる真っ最中なので、そこで「友達」を増やすのがオススメらしい。


「Friendの数は相手が居ないと増やせないから、友達の輪が緩んでる間に増やしとけ」って、婆っちゃが言ってたよ!

2010年10月13日水曜日

Python初心者によるMac OS XでのPythonのはまりどころのまとめ

皆さんこんばんは。Python初心者の @msmhrt です。

Mac OS XでPythonを勉強し始めて何ヶ月か経ったので、一度復習を兼ねてまとめてみようと思います。私が今までPerlとかAWKとかsedを使っていて、Pythonはこうやるのかーとか、これは便利だなーと思ったところ、開発(?)していてはまったところなどピックアップしてみる予定です。

さて、Mac OS XでPythonを使おうとする時、Pythonを準備する方法の選択肢は大きく分けて4つあります。
  1. Mac OS Xに標準でインストールされているPythonをそのまま使う
  2. MacPorts等のパッケージシステムを使ってPythonをインストールする
  3. Python公式サイトで配布されているMac OS X Installer Disk ImageからPythonをインストールする
  4. Xcodeを使って自分でPythonをビルドする
これらの方法はそれぞれ一長一短があるのですが、1.から3.までのPythonはビルドの際、 ./configure コマンドに --enable-framework オプションを追加して、Python.Frameworkが使えるようにされているはずです。(面倒なので、このようなPythonの事をFramework化されたPythonと呼ぶ事にします。)

ですから、4.の手順、自分でPythonをビルドする際もFramework化するのが当然に違いないと思ってしまうのは、ある意味仕方がないことだろうと思います。

しかし、私は自分でPythonをビルドする際にはFramework化しないようにしていますし、このブログでもFramework化しない手順をオススメしています。その理由は、

2010年10月12日火曜日

pyflakes3k - Python 3対応の文法チェッカー

Python用の文法チェッカーにPyFlakesというツールがあるのですが、そのPython3対応版らしいpyflakes3kというツールを見つけたのでさっそく使用してみました。


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だけ追加する事にしました。

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

2010年10月9日土曜日

さくらのVPSでカスタムOSインストールを試してみた(2)

昨日のエントリで書いた、さくらのVPSのVNCコンソールがMac OS XではGoogle Chromeでだけ起動しなかった件が気になったので、OSをBoot CampのWindows XP SP3に変えて確認してみたところ、

  • 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の種類はニュースリリースにも記載されているとおり、
  • 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版)
の全5種類、10バージョンです。

さくらのVPSでインストール可能なOSの種類が増える予定である事は、さくらインターネットの田中邦裕社長が以前からTwitterのアカウントでつぶやいたりしていたのですが、多少作業が遅れたらしく、先週中には提供されるはずだった開始時期が今日までずれ込んでしまったようです。

インストール手順については、手順が細かく記載されたオンラインマニュアルがOS毎に提供されていますので特に迷う事は無かったのですが、せっかく試してみたので、オンラインマニュアルには記載されていなかった重箱の隅を中心にまとめてみます。
尚、インストールしたOSはUbuntu 10.04 i386(32bit版)です。

2010年10月7日木曜日

Mac OS X用のGUIなMercurialクライアントについてのメモ

Mac OS X用のGUIなMecurialクライアントは、単体アプリケーションとしては、MurkyMacHGMacMercurialの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プラグインですが、こちらも後日試してみたいと思います。

2010年10月6日水曜日

Python専用ユーザでPythonバイナリを隔離してみた

私は、Mac OS Xのまっさら (plain vanilla) な環境で何か検証したい時は、新規アカウントを作って作業するようにしています。
そのため、日常的に使っているツールは /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機能を使ってみることにしました。

2010年10月4日月曜日

Python 3.1.2 + httplib2 でまた問題

Ubuntu 10.04 32bit版+Python 3.1.2の環境でhttplib2を使ってたらIssue 62に似た症状が発生して悩み中。前回の修正で安定したと思ったのだけど、まだ怪しいところが残ってたらしい。

(前略)
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が今回の件で祝辞を述べることは当然だろうと私も思います。

しかし、この件への感想の中には
GoogleがThe Document Foundationのスポンサーになって本格的に支援してくれるに違いない
という期待(?)を込めた意見もあったようです。

私はこの意見にはちょっと同意できません。
GoogleがLibreOfficeの開発者を雇用する事はあるかもしれないが、The Document Foundation自体を本格的に支援するような事はないだろう
というのが私の意見です。

以下では、どうして私はそう思うのか?を説明してみたいと思います。

2010年10月1日金曜日

書籍『入門Mercurial Linux/Windows対応』&『Googleの全貌』

昨日買って来たのでAmazonアソシエイトリンクの張り付け練習がてらメモ。
まだちゃんと読んでないので感想は後日。←結局書かないフラグw

入門Mercurial Linux/Windows対応
藤原 克則
秀和システム
売り上げランキング: 22300

昨年、あちこちでリポジトリをsubversionからgitに変更したOSSなプロジェクトが増えてきたからという理由で、『入門Git』と『実用Git』は購入済みだったのだけど、Mercurialの本は一冊も買ってなかったので、先日、Bitbucket.orgの制限が解放された機会にMercurial本も買ってみた。

パラパラめくって読んでみた感じだと『入門Git』を先に読んでたおかげか結構楽に読めそうな感じがしたのだけど、SSHの説明で、「(サーバー上でssh-keygenを使って)作成した秘密鍵を、クライアント側の~/.ssh配下にコピーします。」と書いてあるのを見て、「そのやり方はちょっと勘弁してくれー」と思わず悲鳴を上げそうになったり。(^^;)

Googleの全貌
Googleの全貌
posted with amazlet at 10.10.01
日経コンピュータ
日経BP社
売り上げランキング: 100801

最近ぼんやりと「Googleはhttpsをどうするつもりなんだろう? アカウント別サブドメイン志向はこのまま続けるみたいだし、認証局になってGoogle Chromeにルート証明書を標準搭載するつもりはないみたいだし……」と考えていたので、何かヒントになりそうな事が書いてあったらいいなー程度の期待で買ってみた。まだ未読。