MacだとSSHKeychain+キーチェーン、ubuntuではssh-agent,keychain

ここいらでsshの鍵認証のパスワード入力の手間を省いているのだが、Windowsでないのかなあと思っていた。
もともと、Winでssh接続してshellで操作なんてあまりやらないのだが、sshのトンネル掘ってインターネット越しのmysqlにアクセスとかすることがあったり、TortoiseSVNで使ったりすることがある。あんまり回数多くないんで今まではせこせこパスフレーズ入れたんだけど、やっぱどうにかならないのかと思ってちょいと調べたら、なんと今使っているPuttyにちゃんとpagentってのがあった。なんだ使ってりゃよかった...

それで、pagent使って、鍵の登録も一気にやっちゃう方法もあって、これでログイン時にすべて行ってくれるんでパスフレーズ入れることなくなった。

やり方は、

1.スタートアップにpagentのショートカットを登録
2.登録したショートカットのプロパティを開く
3.リンク先(T):にpagent.exeへのパスと鍵の場所を一緒に書く
"C:\path\to\pageant.exe" "C:\path\to\your_key.ppk"

上のような感じでpagentへのパスとキーの場所をそれぞれ、ダブルクォーテーションでくくる。

これでパスフレーズ入力レスですみます。こんなこと出来るんだったらもっと前からやっときゃよかった...

あと、MacのSSHKeychain+キーチェーンの組み合わせどうも完璧じゃない。SSHKeychainの鍵がいつの間にか外れてたりする。それでssh-agent(mac版)使ったりしたんだけどこちらもまだ安定していない。安定させるいい方法ないかなー。
今年に入って、Schemeの実装であるGaucheをちょっといじっている。Gaucheは日本人のShiro Kawaiさんという方が作っている。ハンドリングがいいのと、スクリプティングを気軽に出来るようにといったコンセプト、マルチバイトである日本語に対応している点が素敵である。
Gaucheを知ったのは1年半ほど前なのだが、なかなかさわらなかったのだが、さわってみるとscheme_wayというか関数型言語Wayというかいろいろとわからせてもらってありがたい。

仕事ではあまりゴリゴリコーディングすることはなくなったんだけど。それじゃあ腕がなまるってんで、プライベートではいろいろと作ってやろうとおもって、新しいもんにも挑戦して切磋琢磨しないと脳がなまる!

でこの前たまたま、知り合い人からWebサイトの調査というかリニューアルに際していろいろとみてほしいとのこと。公開ディレクトリ以下のファイルとか探索しながら、いろいろと調査。ついでにメニュー部分の一部を消したいとのこと。ここはIT系の会社じゃないんで技術者いないし、Webとかのこともあまり詳しくない。サイトの作りはCMSとかは入っていないのでベタなhtmlファイルとphpのファイルがたくさん。メニュー部分の変更となるとその記述がある全ファイルを修正する必要がある。まあ、5年以上前に作った物らしいのでその頃はまだCMSも浸透してなかったから仕方ない。

とりあえず、Gaucheでメニューの一部をコメント化するスクリプト書いてみたのだが、そのとき気づいたことをすこし。

このときディレクトリにあるファイルはencodingがhtmlファイルはshift-jis、phpはeuc-jp、そんでGoogle map使ったページがあるのだがそれはutf-8が使ってあった。確かGoogle mapはutf-8使ってつくるほうがよかったよなあと。

それでファイルよみこんでくる時にfile->list使ったんだけど第一引数にread-lineつかってファイル読みながらリストにしてそこからいろいろいじろうと思った。しかし、エンコードが違うファイルだとエラーが出る。そんなときはread-lineの第二引数のallow-byte-string?に#tを与えてあげるとうまくいった。

(file->list (lambda (in)
(read-line in #t))
#`",(home-directory)/tmp/hoge.html")

それと、htmlファイルだろうとphpだろうとファイルのはじめの方は日本語出てこないんで、エンコードが判別できないと思う。read-lineで一行ずつ読みながら、内部エンコードと違うエンコードが出てきたときに判別するようなやり方をした。自分の場合はUTF-8なんでそれ以外が出てきたらそれ。そのままの場合はそのままって感じで判別してみた。

(define (gess-encode lista)
(if (null? lista)
#f
(let ((line (car lista)))
(if (equal? (ces-guess-from-string line "*JP") "UTF-8")
(gess-encode (cdr lista))
(ces-guess-from-string line "*JP")))))


schemeビギナーなんで、もっといいやり方あるんだろうが、いろいろと学んでいきたいなあ。
$Programming Universe

先日、ssdに交換したので、PB G4は家ではほとんど使わないのだが、ちょっと徹底的につかってやろうとおもって今日もメインで働いてもらってる。

あれからやったことと言えば、HFSのジャーナリング機能をoffにしてみた。
書き込み回数を減らすためにoffにしてみた。

% sudo diskutil disableJournal /

他には昨日からは変更した部分はなし。

とりあえず、xbenchで計測した結果を載せてみます。確かにDiskに関しての数値はめちゃくちゃ上がっているのがわかります。

こちらが以前のFujituのHDDの結果
$Programming Universe

こちらが交換したSSDでの結果
$Programming Universe
ちょいと前のネタでchrootされてるapacheで気をつけないといけないことをメモったのがなぜか、見つかったので、忘れないようにアップしとこ。
OpenBSD3.9っていつだよー、今4.5だぞ。OpenBSDはまだ遅れてて、本家FreeBSDみたくアップグレード簡単にできないのがキズだよなあ。特にバージョン超えてアップグレードはCDからするしかないみたいなことかかれたと思う。最近はめっきりアップグレードしてないから詳しくはわからないけど。本家Freeはかなり最近は改良されてきているしなあ。

apache,mysql普通にインストしただけじゃ動かなかったなたしか。
あと、chrootされてるから、Linuxみたくhome/hoge/htdocsとかにシンボリックリンクはって...とか出来ないんではじめから/varを結構容量とるようにスライスしないとネ。


CMS(drupal) blog(wordpressMu) サーバ構築時の健忘禄

テストマシンに以前、openbsdのftpよりpkg_addでインスト
したmysql5とphp5がすでにインスト済みなのだが、mysqlのconfig関係
(といっても、defaultのcharsetをいじりたいだけなのだが)を変更したい
ため、pkg_deleteでmysql関係を削除した。
そんで、portsディレクトリのmysqlでMakefileをいじって
with-charset=utf8
を追加してdefaultで文字コードを指定したかったのが今回の狙い。

でも、ports/databases/mysqlでmakeしたら
ftpサイトにつながらない Makefileに記載のDLサイトにいったら
なんとバージョンがあたらしくなっていて古いのはない.....
Makefileのバージョンを書き換えるのは他との依存性もあるので
少々怖い

仕方なく、再びpkg_addでインストするはめに

で、いかがその手順

本家がつながりにくいんでjpのミラーサイトに接続
export PKG_PATH=ftp://ftp.kddlabs.co.jp/OpenBSD/3.9/packages/i386/

まず、mysqlのインスト
pkg_add -v mysql-server-5.0.22.tgz

としたらdependenciesでmysql-clientとp5-DBD-mysqlが必要といわれる


pkg_add -v mysql-client-5.0.22.tgz
pkg_add -v p5-DBD-mysql-{VERSION}.tgz

ようやく本体のインスト
pkg_add -v mysql-server-5.0.22.tg

しかし、次は
partial-mysql-serverとconflictsを起こしていると
おこられたんで
pkg_delete partial-mysql-server-5*****
として、ようやく
pkg_add -v mysql-server-5.0.22.tgz


次にphpのインスト
 
php5が既にインストされているが(以前にインストしたんで)
一応、やりかたは
まず、php本体
pkg_add -v php5-core-5.*****.tgz

そんで
モジュール類のアクティブに
/usr/local/sbin/phpxs -s

必要があれば、php.ini-recommendedをphp.iniがあるディレクトリに
コピー
自分は、以前のphp.iniとrecommendをdiffして自分で追加した設定
以外はかわってなかったのでスキップ

mysqlモジュールをインスト
pkg_add -v php5-mysql-5.*****.tgz
モジュールを追加
/usr/local/sbin/phpxs -a mysql

その他、mbstringなどその他の必要なモジュールは既にインスト済みなので
省略、上記のphp-mysqlと同じやり方でインスト、モジュールを追加できる。

いよいよ設定に入る

まずは、mysqlから

mysqlをstartupさせておく
/usr/local/bin/mysqld_safe &

rootのパスワード設定
mysqladmin -u root -p "yourpasswd"

mysqlの操作は
mysql -u root -p
で入っていろいろと、passwdセッティングや
mysql DBなかみたりuserのgrant設定してって
感じでまあ、よく使ってるんでここんとこは、省略

ひとつ、openbsdでmysql使う場合はopenbsdのapache
は、/var/www/にchrootされている。
mysqlのdefault_sockは/var/run/mysql/にあるので当然
見に行けない。なんで/var/run/からハードリンクはってやる

まず、/var/wwwにディレクトリ作成
mkdir -p /var/www/var/run/mysql
そんで、リンク作成
ln -f /var/run/mysql/mysql.sock /var/www/var/run/mysql/mysql.sock

これでchroot化されたapacheでmysqlが動くようになる

phpの設定
php.iniはもうかいてあるので省略

apacheの設定
こちらも、httpd.confすでに設定済みなんで省略

mysql,apacheの起動設定
openbsdは、/etc/rc.confか/etc/rc.conf.localを起動時に読み込むので
こっちで設定するLinuxみたいに/etc/のいろんなところに設定がちらばって
いないんでBSD系はシンプルでいい

自分は、rc.confをいじらない、追加設定はrc.conf.localにかいているんで
そちらに
grep "httpd_flags" rc.conf >> rc.conf.local
あと、
mysql=YES

それでmysqlを起動させるスクリプトをrc.localにかく
PowerBook G4 12inchのHDをSSDに交換してみた。

体感速度UPとやはり駆動部がないのでモバイルにはいいかなと思い交換に行き着いた。やはり、PowerPC1.33は若干もたつく。自分はほとんどがfirefox,carbon emacs,iterm,thunderbirdくらいなのでそれほどCPUパワーは使わない。たまに画像編集とかNeoOfficeとか、ChikenVNCとかSkypeくらいかな。そんなでもfirefoxで大量のタブを開くのでfirefoxのCPU占有率が60%くらいになることが多々ある。まあ、SSDにしたからって言ってもその辺は変わらないだろうけど、読み込みが早くなるだろうから若干でも操作性はよくなってくれることを期待しての交換だった。結論から言うと、確かに体感速度あがったかな。shellの操作性やemacsの操作性などはあまり変わらない感じかな、もともと軽いんでその辺は感じない。しかしThunderbirdでGmailをimapで読み込んできてるんだけど、不要メール削除するときなど結構もたつきを感じていたのだが、それがなくなった。firefoxの立ち上がりなどはそれほど速度アップを感じなかった。でも全体的には速度up感30%って感じかな。

交換に際し参考にさせていただいたサイトはこちらになるのだが、ここに載っていなかったところで少し気をつけなきゃならないところがあった。下の写真の部分はバッテリーを外した時の本体側なのだが、この灰色のプラスチックがキーボードを外した本体上部を引っかけてある。ここ以外は外枠とは引っかかってる部分はないのだが、ここをバッテリー側から引っかかりを外してやるとすんなり外れる。$Programming Universe


換装したBuffaloの128GB SSD
$Programming Universe

このHDへのコネクタケーブルの取り外しも慎重に行ったほうがいい。はずすときにうまく外れないので気をつけて行う。
$Programming Universe


それとWinで問題になってるプチフリだが、まだ使って一日目では遭遇していない。webで調べた感じだとMacではWinに比べて起こらないみたいなことがかかれてた。まあほんとかわからんが。
それと、atimeを更新しないようにmountにオプションつけてやるといいとのことがかかれていた。

#!/bin/sh
mount -u -o noatime /

これをrc.localに記載
BSD系のMacOSXを感じさせる。BSD系はrc関連に起動時の設定をまとめられるからいい。

しかし、これ、Tigerだと意味ないっぽい。manでmountを引いてみるとnoatimeオプションについての記載はなかったんでないのかなって感じ。