2007/11/28

The Art of UNIX Programming

この秋に買った本。

ISBN: 9784756149480

私にとっては今年最高の一冊となりそう。

最初の方、歴史的な話はぐいぐいと引き込まれるように読めてしまう。
真ん中へんあたりには(私の場合)ちょっと難しい話もあったものの、コンピュータと名のつくものに触れる全ての人にとって大事なことがいっぱい書いてあった。最後の方には Macintosh ユーザについて鋭い指摘がありとても興味深いことが書かれてある。
最後の最後、foo が「不宇」だったりする禅問答には正直驚いてしまった。衝撃的といってもいい。

どちらかといえば Tillie 伯母さん(ページ516参照)の側に近いエンドユーザである私にとってはなにもかもが新鮮だった。

--imported_from
http://www.midore.net/daybook/2007/11/1196175612.html

+++ 追記 +++
2010-02-06

関連する記事
Snow Leopard creator code

2007/11/13

あれこれ検索

•Leopard で MySQL や アダプタをちゃんと動かすための方法が紹介されていた。
[Hivelogic - The Narrative - Installing MySQL on Mac OS X]
インストール用の shell もダウンロードできるようだ。

•Leopard firewall についてのお話。
http://www.heise-security.co.uk/articles/98120

/var/log/ipfw.log

から

/var/log/appfirewall.log

にかわったそうだ。

•google News で知った。Leopard のトロイの木馬 OSX.RSPlug.A
http://www.macworld.com/2007/10/firstlooks/trojanhorse/index.php

•私と同じような失敗した人を発見してひそかに共感。その後の追求は私などとは段違いにすばらしぃ。
http://fluctisonous.com/2007/11/8/where-has-my-gem_server-gone

> My first mistake was to think that the usual;


--imported_from
http://www.midore.net/daybook/2007/11/1194946625.html

AppleScript Release Notes for Mac OS X version 10.5

AppleScript 2.0 についてのリリースノートがでていた。
http://developer.apple.com/releasenotes/AppleScript/RN-AppleScript/index.html

ユニコードを完全にサポートしました、だから at:'2007-11-16T00:10:16+09:00' サポート.
as text、as string、as Unicode text これら3つの結果は同じになるよ
とか、
コメントにシャープを使えるようになったから、#!/usr/bin/osascript と書けるよ
などなど掲載されてた。

んでは早速、シャープでコメント入れたりしてみる。3つが同じ結果かどうかも。

# なにもつけてない。
set jp to "そのままの日本語"
# as text。
set txt to "日本語 as text " as text
# as string。
set str to "日本語  as string" as string
# as Unicode text。
set ujp to "日本語 as Unicode text" as Unicode text
return {jp, txt, str, ujp}
=> {"そのままの日本語", "日本語 as text ", "日本語  as string", "日本語 as Unicode text"}


ディスプレイダイアログは?

#tell application "Finder"
# なにもつけてない。
set jp to "そのままの日本語"
display dialog jp buttons {jp}
#end tell
=>{button returned:"そのままの日本語"}


意地悪して tell app "finder" もとってみたけど、ディスプレイダイアログの文字列も文字化けしてないしボタンで選択した文字列も大丈夫.わー!ひょっとしてひょっとしてこのような書き方できるのってOS 9 以来なのでは?
...と思ったけれど、試し方としてはこれでいいか若干自信なし...あっ、文字によっては問題あるのかな。

is in も?

#tell application "Finder"
  display dialog "Select" buttons {"キャンセル", "foo", "日本語"} default button 1
  set ans to button returned of result
  return "日" is in ans
#end tell
=> true

大丈夫みたい。is in ってこうやって使うんだったっけ?自信なし

--imported_from
http://www.midore.net/daybook/2007/11/1194946629.html

2007/11/01

あれこれ google 検索

OS X 10.5 AirPort Interface がらみ

http://discussions.apple.com/thread.jspa?messageID=5676352&#5676352
同じ症状が出た人みつけてうれしい。っほ。

OS X 10.5 gem
http://discussions.apple.com/thread.jspa?messageID=5668663&#5668663
gem アップデートしてパスがかわっても動揺しないで
export GEM_HOME="/Library/Ruby/Gems/1.8"
export GEM_PATH="/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8"
しなさいって言ってる人いました。

http://rubyforge.org/pipermail/rubygems-developers/2007-October/003112.html

OSX 10.5 patches
英語力 & 技術力 & 読解力不足で理解不足...
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/12895
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/12901
http://chopine.be/lrz/ruby-osx-patches
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/32160
http://rubyforge.org/pipermail/rubygems-developers/2007-October/003115.html
#Appleの方?がなにかを準備すると読み取れるものの...よくわかりません。この告知は
http://trac.macosforge.org/projects/ruby/wiki/Troubleshooting#IcannotbuildrubymysqlonLeopardwithmysql.combinaries

Leopard リリース後のこの告知につながってるのかな?

--imported_from
http://www.midore.net/daybook/2007/11/1193924914.html

Mac OS X 10.5 RubyGems

■ OS X 10.5 の Ruby
% which ruby
/usr/bin/ruby

% ls -l /usr/bin/ruby
lrwxr-xr-x 1 root wheel 76 10 28 19:17 /usr/bin/ruby -> ../../System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby

% ruby -v
ruby 1.8.6 (2007-06-07 patchlevel 36) [universal-darwin9.0]

% ruby -e '$LOAD_PATH.each{|x| p x}'
"/Library/Ruby/Site/1.8"
"/Library/Ruby/Site/1.8/powerpc-darwin9.0"
"/Library/Ruby/Site/1.8/universal-darwin9.0"
"/Library/Ruby/Site"
"/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8"
"/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/powerpc-darwin9.0"
"/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin9.0"
"."


% ls -l /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby
total 16
drwxr-xr-x 139 root wheel 4726 10 28 19:15 1.8
drwxr-xr-x 3 root wheel 102 9 24 14:55 gems
lrwxr-xr-x 1 root wheel 47 10 28 19:15 site_ruby -> ../../../../../../../../../../Library/Ruby/Site
lrwxr-xr-x 1 root wheel 47 10 28 19:15 user-gems -> ../../../../../../../../../../Library/Ruby/Gems

■ OS X 10.5 の RubyGems
# 正しくインストールされている?

% gem help

RubyGems is a sophisticated package manager for Ruby.  This is a
basic help message containing pointers to more information.
以下略

# ちゃんと表示した。

# バージョン
% gem -v
0.9.4

% gem environment
RubyGems Environment:
  - VERSION: 0.9.4 (0.9.4)
  - INSTALLATION DIRECTORY: /Library/Ruby/Gems/1.8
  - GEM PATH:
     - /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8
     - /Library/Ruby/Gems/1.8
  - REMOTE SOURCES:
     - http://gems.rubyforge.org
# gem メインディレクトリ
% gem environment gemdir
/Library/Ruby/Gems/1.8

# ここで疑問。gemdir が示すパスは、/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/ かと思いきや、ユーザ用のディレクトリパスが表示された。これは正しいことなんだろうか?

■ gem コマンドの練習
# web 上で参考になるところ
http://jp.rubyist.net/magazine/?0010-PackageManagement
http://rubygems.org/

# 「プログラミング Ruby 」を読みながら...
# インストールされているパッケージ一覧

% gem list -l

*** LOCAL GEMS ***

actionmailer (1.3.3)
    Service layer for easy email delivery and testing.

actionpack (1.13.3)
    Web-flow and rendering framework putting the VC in MVC.

actionwebservice (1.2.3)
    Web service support for Action Pack.

以下略


# インストール済のパッケージから sqlite で検索。

% gem query -ln sqlite

*** LOCAL GEMS ***

sqlite3-ruby (1.2.1)
    SQLite3/Ruby is a module to allow Ruby scripts to interface with a
    SQLite3 database.


# リモートサーバを対象に blue で検索(query).
% gem query -rn blue

# リモートサーバから BlueCloth をダウンロードしてインストール(install)
% sudo gem install -r BlueCloth
# バージョンを指定しなければ自動的に最新版バージョンが選択されるそうだ。「プログラミング Ruby 」には -r がついていたけど、 -r はつけなくてもよいのかもしれない?これ不明。

# OS X の場合、もしも結果が can't find header files for ruby だったら
http://trac.macosforge.org/projects/ruby/wiki/Troubleshooting#IcannotbuildrubymysqlonLeopardwithmysql.combinaries

によると、 「Optional Installs / Xcode Tools directory on the Leopard DVD」
だそうだ。このページは
「I cannot build ruby-mysql on Leopard with mysql.com binaries」
な、時に助かりそう。

# layout
# gems/1.8/
% ls -l /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/
total 8
drwxr-xr-x 32 root wheel 1088 10 28 19:15 cache
drwxr-xr-x 32 root wheel 1088 10 28 19:15 doc
drwxr-xr-x 32 root wheel 1088 10 28 19:15 gems
-rw-r--r-- 1 root wheel 4 9 24 10:51 source_cache
drwxr-xr-x 32 root wheel 1088 10 28 19:15 specifications

# gems/1.8/cache/
% ls -l /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/cache/
total 7872
-rw-r--r-- 1 root wheel 41984 9 24 14:30 RedCloth-3.0.4.gem
-rw-r--r-- 1 root wheel 84480 9 24 14:28 actionmailer-1.3.3.gem
-rw-r--r-- 1 root wheel 607232 9 24 14:28 actionpack-1.13.3.gem
以下略

# gems/1.8/gems/ # %gem list -l で表示される全てのパッケージと一致。
% ls -l /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/
total 0
drwxr-xr-x 4 root wheel 136 9 24 14:30 RedCloth-3.0.4
drwxr-xr-x 3 root wheel 102 9 24 14:30 actionmailer-1.3.3
drwxr-xr-x 3 root wheel 102 9 24 14:30 actionpack-1.13.3
以下略

# gems/1.8/specifications/
% ls -l /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/specifications/
total 392
-rw-r--r-- 1 root wheel 1966 9 24 14:30 RedCloth-3.0.4.gemspec
-rw-r--r-- 1 root wheel 4077 9 24 14:28 actionmailer-1.3.3.gemspec
-rw-r--r-- 1 root wheel 14837 9 24 14:28 actionpack-1.13.3.gemspec
以下略

# gems/1.8/gems/RedCloth-3.0.4/
% ls -l /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/RedCloth-3.0.4/
total 0
drwxr-xr-x 3 root wheel 102 9 24 14:30 bin
drwxr-xr-x 3 root wheel 102 9 24 14:30 lib

# gems/1.8/gems/RedCloth-3.0.4/bin/
% ls -l /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/RedCloth-3.0.4/bin/
total 8
-rw-r--r-- 1 root wheel 76 9 24 14:30 redcloth

# RedCloth-3.0.4 ちゃんと動くか試す

require 'rubygems'
require 'redcloth'
r = RedCloth.new( "h1. A <b>bold</b> man", [:filter_html] )
p r.to_html
exit
# =>
"<h1>A <b>bold</b> man</h1>"

# 動いた

■ 次、ユーザ用に用意されているディレクトリ
% cd /Library/Ruby/
% ls -l Gems/1.8/
total 8
drwxrwxr-x 2 root admin 68 9 24 10:51 cache
drwxrwxr-x 2 root admin 68 9 24 10:51 doc
drwxrwxr-x 2 root admin 68 9 24 10:51 gems
-rw-rw-r-- 1 root admin 4 9 24 10:51 source_cache
drwxrwxr-x 2 root admin 68 9 24 10:51 specifications

# 自分でまだ何もインストールしてないから下記ディレクトリの中身は全部空っぽ。
/Library/Ruby/Gems/1.8/cache/
/Library/Ruby/Gems/1.8/doc/
/Library/Ruby/Gems/1.8/gems/
/Library/Ruby/Gems/1.8/specifications/

memo
OS X 10.5 での Ruby 標準ライブラリのディレクトリパス
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8

OS X 10.5 での gem パッケージがおかれているディレクトリパス
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems

OS X 10.5 での ユーザがインストールしたパッケージが配置されるディレクトリパス
/Library/Ruby/Gems/1.8/gems

■ gem update
なーんも考えないで
% sudo gem update --system
gem そのもののアップデートした...

% gem list -l
空っぽになったよ。しかも gem のバージョンは変化なし。失敗した。ちなみに私がこれを実行したのは 2007-10-28 デス

% gem environment
RubyGems Environment:
  - VERSION: 0.9.4 (0.9.4)
  - INSTALLATION DIRECTORY: /Library/Ruby/Gems/
  - GEM PATH:
     - /Library/Ruby/Gems/
  - REMOTE SOURCES:
     - http://gems.rubyforge.org

GEM PATH から、/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8 が消えてる。
なので、さっきまで読み込んでたパッケージを読み込んでない。RedCloth などはロードされなくなった。

pre-install されていたもの (/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8)
とは別のユーザ用ディレクトリに(/Library/Ruby/Gems) 新規インストールされてましたん。そういうものなのかな?。
そか、これが気にいらない人は自分でロードするパスをかえれってことなのかな。

memo
OS X 10.5 では gem そのものをアップデートすると
/Library/Ruby/Gems/
に最新版 gem が新規にインストールされる。と。
これを意図する人にとっては好都合なのでしょう。

# 上記の内容に関わらず、全体を通して私がなにか大きな勘違いや間違いをしているのに気づいた方がいらっしゃいましたら,ご指摘していただければ幸いです。
midorex at gmail.com

--imported_from
http://www.midore.net/daybook/2007/11/1193924661.html