日々の記録はTOLLE ET LEGE 屋根裏の備忘録に移動しました。自宅サーバの方が使いやすいので。こちらはいづれ項目別にまとめなおした記録を置くように整理しようかと思っています。いつのことになるか判りませんが。
Mewには少しずつなれてきた。複数のメールアドレスを使うときの切り替えに戸惑ったが、何となく判ってきた。メールフォルダを作ってメールを整理する方法も覚えたし、アドレス帳の作り方も覚えた。その辺のことは、下に示した本を参考にした。もちろん、オンラインで得た情報で補っている。4年前の本なので、少し古い部分もあるのだ。
なかなか気づかなかったのが、inbox-folderの$indexと+indexの関係である。$indexはPOP3の新着メールが収納されるところ。POPでメールを受信するときは$indexを使えと書いてある。最初はそうしたのだが、そこでメールを削除するとメールはサーバ上から消えてしまい、別のところから新着メールを取りに行くと、もうそれは消えてしまっている。まあ、不要なものだからいいような気もするけれど、どこから何回受信しても一通り新着メールをダウンロードしておきたいのだ。さっきはうっかり消してしまったけれども二度目には気がついたということもある。+indexというフォルダへ入ってから、新着メールを受信すれば、POPサーバから自分のパソコンへとメールが保存される。もちろん、そこで不要メールを削除しても、サーバ上のメールには変化はない。そんなことどこにも書いてないじゃないか。書いてあるけれど私が理解できなかっただけなのか。私にも判るように書いていだたきたい!
そうだ、新着メールの取得にはコントロールキーは使いませんでした。
![]() |
Amazon.co.jp 図解でおぼえるMew+αの使い方 翔泳社 (2002/02) ¥ 2,940 (税込) 在庫あり |
私が主に使うメールアドレスは二つある。一つは勤務先のもの、もう一つは.Macである。前者はPOP3、後者はIMAP4でメールを取得することになる。二つに対応させるにはどうしたらいいのかなかなか判らなかった。とりあえず、こんな設定で動くようになった。
(setq mew-use-cached-passwd t)
(setq mew-passwd-timer-unit 60)
(setq mew-config-alist
'(("default"
("name" . "Yyy Zzz")
("proto" . "$")
("user" . "user")
("mail-domain" . "oooo-u.ac.jp")
("pop-auth" . pass)
("pop-user" . "user")
("pop-server" . "pop.oooo-u.ac.jp")
("pop-delete" . nil)
("smtp-user" . "XXX111111")
("smtp-server" . "smtp.nifty.com"))
("mac"
("proto" . "%")
("inbox-folder" . "%inbox")
("name" . "Yyy Zzz")
("user" . "apple_id")
("imap-user" . "apple_id")
("mail-domain" . "mac.com")
("imap-server" . "mail.mac.com")
("imap-auth" . nil)
("imap-delete" . nil)
("imap-trash-folder" . "%Trash")
("imap-header-only" . nil)
("smtp-server" . "smtp.mac.com")
("smtp-user" . "apple_id"))))
上の二行はパスワードを何度も入力しなくていいようにする設定だとか。勤務先のsmtpサーバは外からメールを送るのには使えないので、送信時にはsmtp.nifty.comを利用している。もちろん職場ではここはnifty.comではない。これをShift Cで切り替えて使ふ。POP3はCtrl-iで、IMAP4はCtrl-sで新着メールを取得する。この設定で送信もできた。安心して喜んで、今はAppleMailを主に使っていることは秘密だ。
今度は辞書をコマンドラインで使う設定である。EBライブラリ4.3、eblook-1.6.1とLookup 1.4をダウンロードしてきて、インストール。どれも、configure→make→sudo make installでインストールできた(ubuntuはSynapticで)。
eblookをインストールすれば、これだけでコマンドラインで辞書がひける。が、あまり使いやすくないような気がする。やはりLookupを利用しよう。実はLookupはndtpd経由で辞書をひくものだと思い込んでいたのだが、eblookを検索エージェントにすることもできるのだった。その設定を.lookupに書く。
(setq lookup-search-agents '((ndeb "/Users/yyzzz/dictionaries/Kenkyusha_Readers_Plus_V2")
(ndeb "/Users/yyzzz/dictionaries/DAIJIRIN_OASYS_1992_VERSION")))
こんな感じで、使いたい辞書をどんどん登録しておけばいいのだと思う。.emacs.elには、
;; オートロードの設定 (autoload 'lookup "lookup" nil t) (autoload 'lookup-region "lookup" nil t) (autoload 'lookup-pattern "lookup" nil t) ;; キーバインドの設定 (define-key ctl-x-map "l" 'lookup) ; C-x l - lookup (define-key ctl-x-map "y" 'lookup-region) ; C-x y - lookup (define-key ctl-x-map "\C-y" 'lookup-pattern) ; C-x C-y - lookと書き込んだ。lookupで立ち上げるのはいいのだが、検索する度にlookup-patternと打つのは面倒くさいが、このキーバインド設定で楽になるはずだ。
このところ一時期ほど親しい間柄でなくなっているRubyだが、下記のような本を買ったのを機会にirbを使ってまた少し仲良くしようと思ったところ、こんなエラーが出た。
$ irb dyld: NSLinkModule() error dyld: Symbol not found: _rl_filename_completion_function Referenced from: /usr/local/lib/ruby/1.8/powerpc-darwin8.4.0/readline.bundle Expected in: flat namespace検索してみるとreadlineの新しいのをインストールしなければならないらしい。readline 5.2をダウンロードしてインストール。configure→make→sudo make installで、何かエラーだか警告が出ていたようだが、私には判らない。
./configure --prefix=/usr --with-readline-dir=/usr/local make sudo make installというようにしてみた。無事irbが動くようになった。
![]() |
Amazon.co.jp Everyday Scripting with Ruby Pragmatic Bookshelf (2007/1/15) ¥ 3,241 (税込) 通常3~5週間以内に発送 |
久しぶりの更新です。あれからいろいろ考えました。そして、Emacsを一つちゃんと使えるようになろうと決心しました。本当はいろいろ考えたという訳でもなく、肩が痛いから、マウスを極力使わずに生活したいと思ったから。私は実はマウスが苦手です。特にダブルクリックが。右手は何年も前に手の甲から肘にかけて激痛が走るようになり、マウスを左手に持ち替えて使うようになった。その後トラックボールになっても左手のままで、まあまあうまくやってきたものの、キーボードからいちいちトラックボールに手を伸ばすという動きがなくなったら、躰が安定してもっと肩が楽になるんじゃないだろうかと思った訳です。左腕の肘のあたりが痛くなったりしたからなのだが、右の肘も痛くなるので、実は関係ないのかも知れない。とにかくそうしようと決めたので、極力キーボードのみで生きていくことにします。
となったらEmacsである。vimには少しずつ馴染んできていたところなのだけど、この際、Emacsである。昔からできる奴はEmacsという感じがするではないか、何となく。
という訳で、まずはubuntuでEmacsをインストール。Synapticで莫迦でもインストールできるようになっているので、とりあえずemacs21,emacs21-el,anthy-el,mule-ucsを入れる。しかし、そのままでは日本語入力ができない。そこで、
(require 'un-define) ;; UTF-8 and Japanese Setting (set-language-environment 'Japanese) (set-terminal-coding-system 'utf-8) (setq file-name-coding-system 'utf-8) (set-clipboard-coding-system 'utf-8) (setq default-buffer-file-coding-system 'utf-8) (prefer-coding-system 'utf-8) (set-default-coding-systems 'utf-8) (set-keyboard-coding-system 'utf-8) (set-buffer-file-coding-system 'utf-8-unix) ;; input method関係の設定 ;; memo: C-\ #=> toggle-input-method (setq default-input-method 'japanese-anthy)という設定を~/.emacsに書き込む。これで、UTF-8でコードされた日本語文書が書けるようになるらしい。続いてウェブ・ブラウザのw3m(およびemacs w3m)とメールもemacsで読んだり書いたりするためにMewとWanderlustを。どちらがいいか、よく判らないので比べてみようと思ったのだ。さらに、epwing規格の電子辞書を使うためにeblookとlookupを。ebとebutilは既に入っている。全部まとめてSynapticで。いや、eblookはなかったかも。
MacOSXの方はCarbon Emacsを利用する。ダウンロードするだけ。いたって簡単である。w3m、Mew、lookupはここにここに書いてあるとおりにインストール。eblook、eb、ebutilなどをインストール。ebなんかは既に入っているけれども。そして、.emacs.elにw3mについては、
(require 'w3m-load) (require 'mime-w3m) (setq w3m-use-cookies t)と記入。こうしないとcookiesが有効にならず、アクセスできないサイトだらけになってしまう。Mewについては、
(autoload 'mew "mew" nil t)
(autoload 'mew-send "mew" nil t)
;; Optional setup (Read Mail menu for Emacs 21):
(if (boundp 'read-mail-command)
(setq read-mail-command 'mew))
;; Optional setup (e.g. C-xm for sending a message):
(autoload 'mew-user-agent-compose "mew" nil t)
(if (boundp 'mail-user-agent)
(setq mail-user-agent 'mew-user-agent))
(if (fboundp 'define-mail-user-agent)
(define-mail-user-agent
'mew-user-agent
'mew-user-agent-compose
'mew-draft-send-message
'mew-draft-kill
'mew-send-hook))
と記入。メールサーバ関連の設定については、また明日。lookupによる辞書検索についても。
手元には下記の本を置いているのだが、なかなか判りやすい。とはいうものの、私の智識がほとんどゼロなので難しいのである。
![]() |
Amazon.co.jp Emacs 辞典 翔泳社 (2006/5) ¥ 3,129 (税込) 在庫あり |
Vine LinuxでVNCが使えなくなり、前のようにsetupコマンドでファイアウォールの設定をしようと思ったら、設定できない。よく見ると、
# /usr/sbin/setup sh: line 1: /usr/sbin/lokkit: そのようなファイルやディレクトリはありませんと書いてある。しかたがないので、lokkitをインストールしようとすると今度は、
パッケージ lokkit はデータベースには存在しますが、利用可能なバージョン がありません。おそらく、パッケージが依存に用いられているにもかかわらず アップロードされていなかったり、廃止されていたり、またはそのパッケー ジが存在するリポジトリが sources.list に書かれていなかったという状況が考 えられます。 以下のパッケージで置き換えられます: system-config-securitylevel-tui E: パッケージ lokkit はインストールすることができませんそこで、system-config-securitylevel-tuiをインストール。設定できるようになった。
ならばubuntuにもlokkitをインストールしてしまえば、VNCが使えるように設定変更できるってことなのかと思って、Synapticを使ってインストール。でも、「信頼できるデバイス」をチェックしても、iptables: Chain already existsと云われてしまうのだ。もっと真面目にiptablesの設定方法を調べてみなければ。大事なことだから。
MacOSX用のVNCサーバにOSXvncというのがあったのだけど、それがいつの間にかVine Serverという名前になっているではないか。どうしてVineなんだ。私が愛用していたLinuxもVineなので、何となく不愉快である。それでも、使っているけど。
phpの様子が何か変だと思ったら、古いversionになっている。
powermacg5:/usr/bin ynakano$ php -version PHP 4.4.4 (cli) (built: Nov 1 2006 18:12:33) Copyright (c) 1997-2006 The PHP Group Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies11月1日に何かインストールしただろうか。システムの自動アップデートに含まれていたのだろうか。とにかく、最新版の5.2.0をインストールする。
./configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-apxs2=/Library/Apache2/bin/apxs --with-ldap=/usr --with-kerberos=/usr --enable-cli --enable-trans-sid --enable-exif --enable-ftp --enable-mbstring --enable-mbregex --enable-mbstr-enc-trans --enable-dbx --enable-sockets --with-iodbc=/usr --with-config-file-path=/etc --sysconfdir=/private/etc --with-mysql=/usr/local/mysql --enable-zend-multibyte --with-gettext=/usr/local/share --enable-track-vars --with-gettext=/usr/local/share --with-gd --with-jpeg-dir=/usr/local/lib --with-png-dir=/usr/local/lib --with-freetype-dir=/usr/local/lib --with-ttf --with-zlib-dir=/usr/lib --enable-soap --with-curl --with-socket本当は一行に書く。前回記録していたとおりの設定だが、どういう経緯でこの設定に落ち着いたのかはまったく覚えていない。このあとは、make→sudo make installですんなりインストール完了。
PHPで何を書いていたかというと、ISBN変換器である。実は今年の1月1日からISBNが10桁の番号から13桁の番号へと変ったのである。詳しいことは知らないが、英語圏で番号が足りなくなったせいらしい。日本はまだまだ足りなくならないので、13桁にしてもあまり嬉しいことはないようだ。でも変ってしまったから、対応しなければならない。で、一斉に新番号に変るかというとそうでもなく、しばらく混在するだろうし、Amazon.co.jpなんかは、ASINを新ISBNと一致させることはないと云っているので、今後の旧番号の規則に従った番号が必要になるわけだ。旧番号10桁の1〜9桁は新番号4〜12桁の番号と一致している。旧番号の頭に978を付ければいい。問題は新旧どちらの場合も最後の一桁のチェック数字(チェックデジット)である。それは新番号の場合以下のようにして、算出される。
12桁コードの左から(奇数桁の数字の合計×1)と(偶数桁の数字の合計×3)の和を求める。次に10−(求めた和の下1桁数字)=チェック数字。ただし下1桁数字が0の場合はチェック数字も0とする。(日本図書コード管理センター)
旧番号の方は、左から一つずつ数字を取り出してn番目の数字Nに対して、
N × (11−n)
を行ない、n = 1 から n = 12 までの数値を合計する。その合計に1〜10 の数を足したものを11で割った時の余りが0になる数字がチェック値。 ただし、それがが10になったときはXとする。判りにくいけれど、そうなのだ。もっと短くいうと「ウェイトとして10から2までを用いるモジュラス11によって算出する。なお、検査数字が10となった場合は10の代わりにXとする。」ということになって、これで通じる人には通じるらしい。
この情報があれば変換スクリプトが書けるというわけだ。10桁の旧番号を入れれば13桁の新番号が出てきて、13桁の新番号を入れれば10桁の旧番号が出てくるようにした。
#!/usr/bin/php
<?php
$n = strlen(ereg_replace("-","",$argv[1]));
if($n==10){
$isbn10 = $argv[1];
$isbn10 = ereg_replace("-","",$isbn10);
$isbn = "978".substr($isbn10,0,9);
$nos = str_split($isbn,1);
$odds = 0;
$evens = 0;
for($i=0;$i<12;$i=$i+2){
$odds=$odds+$nos[$i];
}
for($j=1;$j<12;$j=$j+2){
$evens=$evens+$nos[$j];
}
$check=$evens*3+$odds;
$chknos=str_split($check,1);
$last=array_pop($chknos);
if($last==0){
$x='0';
}else{
$x=10-$last;
}
$isbn13=substr($isbn,0,12).$x;
echo $isbn13."\n";
}elseif($n==13){
$isbn13 = $argv[1];
$isbn13 = ereg_replace("-","",$isbn13);
$asin = substr($isbn13,3,9);
$nos = str_split($asin,1);
$prod = $nos[0]*10+$nos[1]*9+$nos[2]*8+$nos[3]*7+\
$nos[4]*6+$nos[5]*5+$nos[6]*4+$nos[7]*3+$nos[8]*2;
for($i=1;$i<=10;$i++){
$amari = fmod($prod+$i,11);
if($amari==0){
break;
}
}
if($i==10){
$x='X';
}else{
$x=$i;
}
$asin=$asin.$x;
echo $asin."\n";
}
?>
面倒くさいので説明はしないけれど、受け取った文字列の(その中にハイフンがあったらそれを除去してから)文字数を数え、10か13かでそれぞれに相応しい計算をして結果を表示する。これを基にした新旧番号を変換するサイトを作ってみた。→新旧ISBN変換器
この変換器をRubyで書いてみようと思ったら、すっかりRubyを忘れていることに気がついた。どうにかしなければ。
久しぶりの更新である。あれから、ちょっとした事件が起こったので報告する。世の中の人にとってはどうでもいいことだろうが、私にとっては大事件なので勝手に報告するのである。
自宅サーバのシステムはその日までVine Linux 3.2だった。3・4台ほど新規インストールやアップグレードを練習してきたので、もう大丈夫だろうと思って何度も使ったCDを使いアップグレード作業を行ったところ、起動しなくなった。起動直前に画面が真っ暗になり、まったく進まないのだ。仕方がないので、ハードディスクを初期化して新規インストールを選択することにした。サーバはバックアップから再構築することにしよう。面倒くさいけど。年末だからこそできるというか、年末の一日を潰すのは残念というか。
ところがインストール後の再起動で結果は同じだったのだ。なぜだ!
こうなったらubuntuだ。Vineを愛していたのに裏切られた気分で、Linux World最終号の附録CDを使ってインストール。再起動するとちゃんと起動した。これが当たり前なのに嬉しい。
$ sudo apt-get install build-essential
で開発環境をインストール。日本語版セットアップヘルパでいくつかアプリケーションを追加。
No-IP.comからLinux/BSD/Unix Dynamic Update Clientをダウンロード。インストールと設定。設定はidとpasswordを訊かれるのに答えるだけ。
その他、apache2, vncserver/viewer, SSH, MySQL5.0, PHP5.1.6, ruby1.8.2ほかいろいろインストールしたが、詳細はもう忘れてしまった。
ubuntuの日本語文字コードは何でもutf8になっているようだから、MySQLもutf8で使えるのかと思ったらどうも日本語が文字化けする。そこで確認してみると、
mysql> show variables like 'char%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | latin1 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 8 rows in set (0.00 sec)となっていた。これはちょっと不便なのでmy.cnfに、
+--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 8 rows in set (0.00 sec)
その他、vncでアクセスできなくなってしまって本当に困っている。vine linuxのときと同じようにすればいいだろうと思ったが、同じようにはできなかった。いろいろ調べたのだけれど、未だに解決していない。
そんなわけで、年末年始の休みはひたすらサーバーの復旧作業に明け暮れました。バックアップは万全だと思っていたのは大間違いで、phpやrubyのスクリプトの大半を失ってしまった。
新規インストールしたVine Linux 4.0でVNCを設定してみた。RealVNC 4 Free Editionをダウンロードして、書いてあるとおりにインストールする。ここで何の説明も不要だと断言できるほど簡単である。早速vncserverを立ち上げようとすると、
error while loading shared libraries: \ libstdc++-libc6.2-2.so.3: \ cannot open shared object file: No such file or directoryというようなエラーが出てしまう。そこで、libstdc++2_10-compatをインストール。vncserverは起動できるようになる。ところが、vncviewerで接続しようとすると、
"unable to connect to host: No route to host (113)"というような表示が出て接続できない。今度は、setupコマンドを使ってFirewallの設定を行なう。「信頼できるデバイス」というところにチェックを入れる。すると接続できるようになった。gnomeや日本語入力については前に書いたとおり。
![]() |
Amazon.co.jp 実践ハイパフォーマンスMySQL オライリージャパン (2004/10) ¥ 3,780 (税込) 在庫あり |
日本語の入力(仮名漢字変換)をSCIM/ANTHYにしたい場合(前に書いたようにアップグレードだとVJEのまま)、
setime scimすればいいのだった。このsetimeというのはVine独自のコマンドらしい。
# pear install Math_Statsでいいのだけど、ubuntuではPEARがインストールされていなくて、一瞬狼狽えてしまった。PEARをインストールしても、Math_Statsなんて見つからないけど……という表示で終わってしまった。確かにあるのに何故? と思ったが、ちゃんと本に書いてあった。pear config-set preferred_state betaと設定しておかないとβ版がインストールできないのだった。MacOSXではそのままインストールできた(もともとMacOSXではそういう状態になっているという意味ではない。私のMacがそうなっていただけである)。
<?php
require_once('Math/Stats.php');
$data=array(13,12,15,11,19,12,15,14,17,11);
$stat=new Math_Stats();
$stat->setData($data);
echo "Max = ".$stat->max()."\n";
echo "Min = ".$stat->min()."\n";
echo "Mean = ".$stat->mean()."\n";
echo "SD = ".$stat->stDev()."\n";
echo "SE = ".$stat->stdErrorOfMean()."\n\n";
$sum=array_sum($data);
$num=count($data);
$mean=$sum/$num;
$dttl=0;
foreach($data as $value){
$dif=$value-$mean;
$ddif=$dif*$dif;
$dttl=$dttl+$ddif;
}
$var=$dttl/($num-1);
$sd=sqrt($var);
$se=$sd/(sqrt($num));
echo "Max = ".max($data)."\n";
echo "Min = ".min($data)."\n";
echo "Mean = ".$mean."\n";
echo "SD = ".$sd."\n";
echo "SE = ".$se."\n";
?>
最大値最小値を出すようなときにはほとんど意味がないけれども、標準偏差とか標準誤差を出すときにはちょっと楽かも。どちらで計算しても結果は、
![]() |
Amazon.co.jp MySQL Cookbook, 2nd Edition O'Reilly (2006/11) ¥ 5,166 (税込) 通常7~13日以内に発送 |
PEAR(PHP Extension and Application Repository)のことを詳しく書いている本がないものかと思って『PEAR入門』を前に買ったのだけれど、400を越すパッケージが登録されているというにはこの本で紹介されているものは少ないのではないかと少々不満であった。もっと分厚いPEARの本はないのか。と思って探していたところ、800ページ近い厚さのPEARの本を見つけ、早速註文した。それが今日届いた。嬉しい。
99のPEARパッケージと11のPECLパッケージを紹介している。でも、やはりPEARというとオブジェクト指向で書かなくてはならないんですか? オブジェクト指向の話から始まっているんですけど。これを機会にPHPのオブジェクト指向に馴染めばいいのだろうか。
ああ、この本が日本語で書いてあればどんなに楽だったろう。せめて英語なら!
![]() |
Amazon.co.jp PHP PEAR Galileo Press GmbH (2005/06) ¥ 7,341より 出品者から通常2営業日以内に発送 |
Vine Lunuxを一つ、3.2から4.0にアップグレードしてみた。インストール用のCD-ROMを用意して、アップグレード・インストール。ただ、「次へ」とクリックしていくだけ。完了後、再起動の後、
# apt-get update # apt-get -f dist-upgradeを忘れるなということだったので、ちゃんと忘れずに実行する。少しだけ試してみて気づいたこと:
1. 4.0では「SCIM + Anthy を標準日本語入力システムとして採用」しているのだが、アップグレードではVJEのままである。どうすればSCIMに変更できるのかよく判らない。
2. geditで日本語を入力しようとすると動かなくなる。
3. VNCの設定を変更しなければならなかった。日本語入力は、「GTK_IM_MODULE=scim」「export GTK_IM_MODULE」をxtartupに追加したところ、エラーが出たようだが入力自体は可能になった。もう少し様子を見てみる。vjeを有効にする方法は判らない(いろいろ試してみたけれども、駄目だった)。
4. emacsでまたVNC越しに日本語が使えなくなっていた。どうすればいいんだったか。
やはり新規インストールの方がいい。
なんとLinuxWorldが1月号で休刊になっていた。記念に最終号を買っておこうか。
![]() |
Amazon.co.jp Linux WORLD 2007年 1月号 アイ・ディ・ジー・ジャパン ¥ 1,580 (税込) 在庫あり。 |