8月 24
図書館で借りた『決定版 ひとつ上をゆく Javaの教科書』(岩谷宏 著)の中で、vimを薦める際に出てきた言葉。昔、Macintoshが「パソコン界のポルシェ」と呼ばれていたというのは聞いたことがありましたが、vimが「エディタのポルシェ」とは初耳でした。
vimは自分も愛用している素晴らしいエディタなんですが、「プログラミングを初体験」している読者に「強力におすすめ」するのはどうなんでしょうね。敷居の高いエディタですから、Javaの勉強をする以前にvimの設定や操作に四苦八苦しそうな気がします。
読み始めたばかりですが、良かった点は0章で環境変数CLASSPATHの設定について明記してあったところ。以前これを知らなくて、ハマった覚えがあります。
8月 12
Amazonで David Flanagan氏の著作の刊行予定を調べていたら、思わぬものを発見。
『Ruby in a Nutshell』
- Publisher: O’Reilly Media; 2 edition (April 1, 2007)
- ISBN: 0596101244
Ruby in a Nutshellの第2版が、来年出るんですね。著者情報は「Yukihiro Matsumoto, David Flanagan 」になっています。Flanagan氏は『Java In A Nutshell』など、多くの著作がある方です。
同じシリーズの『Cocoa in a Nutshell』は、クラスの持つメソッドやデリゲートの一覧が整理されていて便利なので、こちらも期待です。
8月 08
Web2.0 キーワードブック
お題は「Web 2.0」だけど、無理にWeb 2.0にこじつけていないところが好印象。実際、まつもとゆきひろさんのRubyについての記事には、一言も「Web 2.0」という単語が登場しません。テーマが「オープンソース」でも良さそうなくらい。
もちろんたいていの記事はWeb 2.0に関連づけた話になってますし、「Web 2.0って何?」って人も、冒頭の『図解「Web 2.0」』で何となくイメージできるようになるはずです。
この本の一番の利点は、ウェブ上にあったら、わざわざクリックはしないような記事もついでに読んでしまえるところかな。ディスプレイで読むと目が疲れるので、関心や必要性が薄いものは、あまり積極的に読もうという気にはなれないですから。
一冊で幅広いネタにふれられて勉強になりました(用語集までついてます)。最後は、山本一郎さんの記事でオチがついていて、ちょっと笑った。
7月 31
プログラミング言語Rubyの定番の解説書『プログラミングRuby 第2版』が、いよいよ日本でも発売されるようです。オーム社のホームページで、詳細目次などが公開されています。
原書では一冊にまとまっていましたが、日本語版では言語編とライブラリ編の二冊に分かれたようです。ライブラリはクラスごとにメソッド名と使用例が見やすくまとまっていて重宝しているので、二分冊でかえって使い勝手が良くなるかもしれないですね。
ただ、難点はこの価格。言語編が3990円、ライブラリ編が4410円と、結構良いお値段がします。『Programming Ruby Second Edition』をすでに買った身としては、ちょっと手が出ない価格で残念です。
原著を持っていない方には、間違いなくおすすめです。
プログラミングRuby 第2版 言語編
プログラミングRuby 第2版 ライブラリ編
初心者向けには、『たのしいRuby 第2版』がイチオシ。この本の初版のおかげで、Rubyを使えるようになりました。
7月 26
はじめてのPHP5プログラミング エキスパート編
ふつうの、PHPを解説した書籍を読み終えてから読む本。初心者向けの本だと端折られがちな、PHPを使った「オブジェクト指向プログラミング」「デザインパターン」「セキュリティ」「例外処理」なんかを扱っています。
あとの半分は、PEAR、Smarty、Mojavi、PDOなどの外部モジュールの解説。こちらの方は、割と初歩的な内容で、実際に使用する際にはもうすこし詳しい解説が欲しくなる感じ。でも、わかりやすくまとまっていますから、取っかかりとしては良いと思います。
特に、PHP 5.1から標準添付されるようになったPDOをあつかった部分は古い本には載っていないこともあり、参考になりました。欲を言えば、この部分にもう少しページ数を割り当ててほしかったところではありますが。
ちょっと気になったのは、全体を通しての統一感をあまり感じないところ。細かいところですが、「セキュリティ」の章だけブレースを置く場所のスタイルが違ったり、変数の命名法が異なっていました。
また、Singletonパターンを用いてPDOによるデータベースアクセスをするクラスの実装例が出てきますが、「デザインパターン」の章と「データベースアクセスの実装」の章で実装方法が違うのもちょっと疑問に思いました。後者ではPDOクラスを継承したクラスを作成しています。
ただ、一冊でいろいろなトピックの知識が手に入ったのは良かったです。
7月 26
SSH。数年前、契約していたレンタルサーバにアクセスするために、必死になって使い方を覚えたツール。Webで公開されていたWindowsのPuTTYの導入手引書を、意味もわからずなぞって接続できるようになったものでした。
その後、『入門SSH』で一通りの知識と、便利な使い方などを学びました。特に、scpとssh-agentを使えるようになって、随分と使い勝手が向上して助かりました。
使い方はわかってきたものの、仕組みの方は相変わらず良くわからないまま。結局、ツールの使用法以前に、暗号技術について理解していなかったのも大きかったことを痛感。暗号化技術について定評のある入門書『暗号技術入門 - 秘密の国のアリス』を読むことで、「全然わからない」から「多少はわかる」位には理解が進みました。
そして今回、『入門OpenSSH - Linux/FreeBSD/Solaris/Mac OS X対応』のおかげで、sshとその関連プログラムの働きや使い方など随分と理解できるようになりました。
本書の前半では、SSHのオープンソース実装であるOpenSSHのインストールから仕組み、使い方など、基本をすべて網羅しています。それぞれのトピックには適切な見出しと解説、実行例が載っていいて、随所に理解を助ける図も挿入されています。特に、実行例は本文とは背景色が異なっているのと、自分の入力したコマンドが太字で強調されているため、かなり見やすくなっています。その都度大事な部分に注釈がついているのも良かったです。前半部分を読むだけでも、SSHを通常使う分には十分な理解を得られると思います。
後半になると、Subversionなど他のプログラムでsshを利用する際の方法や、主にサーバー管理者がsshdを運用する際に必要となる知識など、一歩進んだ使い方が紹介されています。この辺りは当面必要なさそうなので、今回は飛ばし読みで済ませました。
この本、対応OSにMac OS Xまで含まれているのもポイント。紹介されていたMac用のsftpクライアントのFuguも、早速ダウンロードしておきました。
Mac OS Xで記述されていた実行例と一カ所だけ違っていたのは、ssh-keygenが生成する鍵のビット長。本書で使用されているバージョン4.3p2では、デフォルトで2048ビットの鍵を生成しますが、Mac OS X 10.4 TigerにインストールされているOpenSSHのバージョンは3.8.1p1なので、デフォルトのビット数は1024ビットになっています。そのため、2048ビットのRSA鍵を生成するには、明示的に”-b 2048″とオプションを付けてssh-keygenを実行する必要がありました。
sshやその関連ツールのオプション一覧も巻末に掲載されており、解説を読み終えた後もリファレンスとして使えるのもうれしいところ。SSHを効果的に使えるようになりたい方に、おすすめです。
【関連サイト】
以下は、読書メモ。解説は『入門OpenSSH - Linux/FreeBSD/Solaris/Mac OS X対応』を参照。
- .sshディレクトリのパーミッション
~/.ssh/ 700 (drwx------, 所有者のみ読み書き実行可)
id_rsa 600 (-rw-------, 所有者のみ読み書き可)
authorized_keys 600 (-rw-------, 所有者のみ読み書き可)
- 特定の秘密鍵を使ってログイン
$ ssh [-p ポート番号] [-i 秘密鍵ファイル] [ユーザー名@]ホスト名
- 秘密鍵と公開鍵ペアを生成する(2048ビットのRSA鍵)
$ ssh-keygen -b 2048 -t rsa
- 秘密鍵のパスフレーズを変更する
$ ssh-keygen -p
- 公開鍵の指紋を確認する
server$ ssh-keygen -l -f id_rsa.pub
- 転送した公開鍵をauthorized_keysに追加する
server$ mkdir ~/.ssh
server$ cat id_rsa.pub >> ~/.ssh/authorized_keys
- リモートコマンドを実行する
$ ssh username@server.example.com ls -l
- 認証エージェントを起動
$ ssh-agent bash
- 認証エージェントに秘密鍵を追加
$ ssh-add [秘密鍵ファイル]
- 認証エージェントが保持している鍵を確認
$ ssh-add -l
- 生存期間を指定して秘密鍵を追加
$ ssh-add -t 3600
1時間だけ有効
- 認証エージェントの鍵をすべて削除
$ ssh-add -D
- SSH_AUTH_SOCK の値を確認
$ echo $SSH_AUTH_SOCK
- 認証エージェントの転送を許可してログイン
$ ssh -A username@server1.example.com
server1$ ssh username@server2.exemple.com
- rsync ("/" の有無に注意。)
$ rsync -a username@server.example.com:/opt/username backup
サーバー上の/opt/username というディレクトリのコピーを、ローカルのbackupディレクトリの中に作成する。
$rsync -a username@server.exemple.com:work/ work/
サーバー上のusernameホームディレクトリの中のworkというディレクトリを、ローカルのworkディレクトリと同期させる。
[option]
-a archival
-u update
-b backup
-v verbose
-z gzip
-e "コマンド" sshの代わりに実行するコマンドを指定する。
--delete 転送元にないファイルが転送先のディレクトリにあった場合、そのファイルを削除する。
--exclude パターン 指定されたパターンに合致するファイル名を無視する。
7月 18
UNIXという考え方―その設計思想と哲学
シェルスクリプトとASCIIフラットファイルの移植性・柔軟性の良さがわかる本。
将来は予測できないのだから、変化に適応できるようなプログラム、データフォーマットが大事ということ。特定のハードウェアに最適化するチューニングを施してしまうと、次世代のハードウェアが台頭してきた際に移植が困難になってしまう。
そういった点をいくつもの実例を挙げながら、力説しています。話の内容がちょっと古かったり、筆者の考えに疑問を感じたりするような例もありますが、テンポ良く読み終えることができました。きちんとした主張がある本は、読んでいておもしろいですね。
あと、原書だと続編が出ています。後半に、LinuxやJavaなどをあつかった章が加筆されている模様。
Linux and the Unix Philosophy
Recent Comments