Dec 13, 2008
さよならZaurus
シャープのZaurusが生産終了とのこと。PI/MI系は結局使ったことはなく、SL系のみだったけど、ちょっとさみしいねぇ。
PIはPC-E500系のCPUと同じものを使っていたので、当時は欲しかったけど高くて買えなかった(PI-3000は12.8万円)。
携帯電話が高機能化しているとか、netbookのような小型PCが安価に売られるようになると、PDAの出番はないか。
Sep 07, 2008
Rubyって
イマドキRubyくらい出来ないとイカンのではと思い、「初めてのRuby」を読みつついじってみた。16年間くらいPerlを使っているので、すっかり「Perl脳」になっているものの、「Rubyはより良いPerl」らしいのでそんなに違和感なく使える。
ただ、自分の使い方はテキスト処理がメインなので、型付けが弱い(というか無い)方が使い易いので、Rubyだとちょっと煩雑な感じ。
「Perlは変な記号がある」とか「人の書いたスクリプトが難解」と言われるけれど、使い捨てのスクリプトを書く場合は「より短く、簡潔なスクリプトで最大限の結果」の方が良い。
一番困るのは、まだハッシュに対象となるキーが無い場合には一度代入しておかないと操作出来ないこと。
私は仕事柄、ログの集計をすることが多く、以下の様なコードを良く書く。(一行ずつ読んで、特定のフィールドの値を集計)
1 #! /usr/bin/perl
2 while(<>){
3 @l = split(/\s+/);
4 $users{$l[1]}++;
5 }
6 foreach $key (sort(keys(%users))){
7 print "$key $users{$key}\n";
8 }
|
適材適所ということもあるけれど、自分の使い方ではやっぱりPerlかな。もうちょっとアプリケーションっぽいものを作るときはRubyでもいいかも。
Aug 17, 2008
64bit化その後
ユーザランドの64bitもほぼ完了。multilibにする方針としたので、全てのアプリケーションを64bitしないことに決定。
最初は完全64bit化だと思ったけれど、VMwareServerを動かそうとしていたので、32bit環境も残す必要があるので(ソースが無いアプリケーションがほかにもあるかもしれないし)。
基本的には問題なくビルド&動作が完了したものの、PAM/SASL2/udevでハマる。
PAMは入れ替えた瞬間から認証系が32bitのものが動作不能になるので、pam.dのファイル群を32bit用と64bit用を作って順次切り替えて回避。
SASL2は/usr/lib/sasl2として参照できないと動かない。
udevは1.06から最新の1.22にあげたらコマンドが変わっていて、configを修正しないと起動不能な状態となった。今回は面倒なので、元のバージョンに戻した。
コンパクトかつ自分で見渡せることを目指して、LFSベースで自作したもののlibが肥大化してしまった。
Jul 27, 2008
自宅サーバのカーネル64bit化
CLFSのドキュメントを参考にクロスコンパイル環境を構築し、カーネルのみ64bit化した。環境は以下の通り。
- ベースのOS環境はLFS(SVN-20070304版)
- linux-2.6.26
- binutils-2.17
- gcc-4.1.2
| 準備 |
|
export DESTDIR=/usr/local/cross unset CFLAGS unset CXXFLAGS PATH=${DESTDIR}/bin:/bin:/usr/bin export PATH export XTARGET="x86_64-unknown-linux-gnu" export BUILD64="-m64" cd /sources mkdir build64 cd build64 |
| bin-utils-2.17 |
|
bzip2 -dc ../binutils-2.17.tar.bz2 | tar xf - mkdir binutils-build cd binutils-build ../binutils-2.17/configure --prefix=${DESTDIR} \ --host=${MACHTYPE} --target=${XTARGET} \ --disable-nls --enable-shared --enable-64-bit-bfd --disable-multilib make configure-host make make install cd .. |
| gcc-4.1.2 |
|
bzip2 -dc ../gcc-4.1.2.tar.bz2 | tar xf - mkdir gcc-build cd gcc-build ../gcc-4.1.2/configure --prefix=${DESTDIR} \ --host=${MACHTYPE} --target=${XTARGET} --disable-multilib \ --disable-nls --disable-shared \ --disable-threads --enable-languages=c make all-gcc make install-gcc cd .. |
| カーネル |
|
bzip2 -dc ../linux-2.6.26.tar.bz2 | tar xf - cd linux-2.6.26 export CC="${XTARGET}-gcc" export CXX="${XTARGET}-g++" export AR="${XTARGET}-ar" export AS="${XTARGET}-as" export RANLIB="${XTARGET}-ranlib" export LD="${XTARGET}-ld" export STRIP="${XTARGET}-strip" make ARCH=x86_64 CROSS_COMPILE=${XTARGET}- menuconfig make ARCH=x86_64 CROSS_COMPILE=${XTARGET}- ※ユーザランドのプログラムは全部32bitアプリなので、32bit互換モードオプションを忘れずに。 Executable file formats / Emulations ---> IA32 Emulation |
freeを実行してみると、リニアに4GBのメモリが使えることを確認できた。めでたしめでたし。
# free
total used free shared buffers cached
Mem: 3972264 112452 3859812 0 4072 47540
-/+ buffers/cache: 60840 3911424
Swap: 1004052 0 1004052
|
Jul 21, 2008
自宅サーバUpgrade
自宅サーバが異音を発していたのでCPU/マザー/メモリを新調。今までPentiumIII/1GHz Dualという骨董品だったので、思い切ってCore2Quad(Q6600)に変更。
ARAID99のPATA版を使っているので、レガシーデバイスサポートのあるマザーボードとして、IntelのDG33FBを選択。
当初の目論見として、ARAID99はPATA->SATA変換モジュール経由で接続、DVD-ROMドライブをPATA接続と考えていたが、ARAID99に変換モジュールを付けるだけのスペースが無かった。
ARAID99はPATA接続としたが、もう一台のHDDをSATA接続すると、そちらの優先度が高くなってしまうので、デバイス名の問題からこれもPATA接続することに。
結局、DVD-ROMはPATA->SCSI変換モジュール経由でSCSI接続。ブートには使えないが、使うことがほとんど無いので、とりあえずこれで凌ぐことに。(DDS3のテープが接続されているので、SCSIは元々ある)
元の環境だと440GXという太古のチップセットでBigDrive非対応のため、外付けUltraATA100のI/F経由でARAID99を接続し、/bootのみ内蔵のディスクを使用して起動していた。
ARAID99側のディスクのMBRにはブートローダが書き込まれていなかったので、grub-installすると「そのディスクはBIOSから認識されてないからダメ by grub-0.97」と怒られる。
仕方が無いので、急遽GRUB2(1.96)に乗り換え。こちらは無事に起動できたので、ひとまずは移行完了。
あとは、64bitビルド環境を構築してカーネルを64bit化しないと。
DG33FBメモ
- G33+ICH9なので、別途PATAコントローラとして「Marvell 88ES6101」が載っている。
- カーネルの認識順は「ahci->pata_marvell」なので、SATAのHDDを接続すると、PATAのHDDはどんどん後ろにズレてゆく。
- Kernel2.6.26では問題無いが、一部カーネルでは「ACPI: Assume Root Bridge [\_SB_.PCI0] bus is 0」辺りで停止する場合あり。
→ カーネルの起動オプションで「pci=nommconf」を指定すると回避可能。
Apr 06, 2008
リムネットOP25B対策
3/25日に突然リムネットよりOP25B対策を3/31より開始するとのメール。うちの環境だと、ローカルサーバのpostfixから直接メールを送信する仕組みになっているので、急にsubmissionポートに送れと言われても困る。
とりあえず、3/31以降はリムネット以外のサーバに対するport25へのアクセスが制限されるということで、全てリムネットのメールサーバにリレーすることで先週は回避。
今日は改めて、SMTP Authありでリレー出来るよう設定を変えてみた。
SASLが未導入だったので、cyrus-sasl-2.1.22をインストール後、PostfixをSASLサポートありでビルド。(ついでに最新の2.5.1にバージョンアップ)。
アーカイブに同梱されている「README_FILES/SASL_README」をちゃんと読むと書いてあるんだけど、最初は「Postfixのぺーじ」にある「SMTP Auth 対応版 Postfix インストールの記録」を参考に作業を進めていたので、コンパイルオプションが足りず、ちょっとハマる。
→ Postfixのどこかのバージョンからは、「-DUSE_CYRUS_SASL」も付けないと、「warning: unsupported SASL client implementation: cyrus」というエラーが発生して、SMTP Authが失敗してメールが送信されない。
送信するメールサーバを変えられる方が何かと便利かもしれないので、main.cfのrelayhostではなくて、transportで設定しておいた(* :[mail]:587)。
とりあえず、ちゃんとメールが送信できているので、しばらく様子見。
設定はこんな感じ。
・saslビルド
./configure --prefix=/usr/local make make install |
make -f Makefile.init makefiles CCARGS='-DUSE_SASL_AUTH -DUSE_CYRUS_SASL -DHAS_PCRE -I/usr/local/include/sasl' \ AUXLIBS='/usr/lib/libpcre.a -L/usr/local/lib -lsasl2' make postfix stop make upgrade postfix start |
以下を追加 smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = noanonymous |
vi /etc/postfix/sasl_passwd メールサーバ ユーザID:パスワード |
| 編集後、以下のコマンド実行 postmap /etc/postfix/sasl_passwd |
vi /etc/postfix/transport * :[メールサーバ]:587 |
| 編集後、以下のコマンド実行 postmap /etc/postfix/transport |
| ※main.cfに relayhost = メールサーバ:587 でも可 |
Jun 24, 2007
JavaScript入門
オライリーの初めてのJavaScript読破。仕事はサーバサイドが主で、クライアントサイドの技術が手薄なので先ずはJavaScriptから。
JavaScriptは大昔からあるけれど、微妙にバージョンアップが続き追いついていなかったので、再度入門から。
ブラウザ側に処理を委譲するにはいいんだけど、やはりブラウザ間でのDOM実装方法による互換性のなさが面倒。
フォームの入力値チェックくらいで止めておくのがいいんじゃないかと思うんだけど。
May 12, 2007
複合機修理
複合機(ブラザーのMFC8820J)の原稿台カバーのヒンジが壊れたので昨日の夕方にコールセンターに電話したところ、今日の昼前に出張修理完了。最初は引き取り修理の予定だったけれど、最初の電話の後にこの機種では引き取りサービスが無いということだったので、出張修理に変更。
今日の午前中に修理担当から修理日の調整の連絡が行くということだったので、来週のどこかになるのかと思いきや即日対応。
個人ユースでも法人並みのサポートが受けられるのは素晴らしい。(あんまり個人では買わない機種なんだろうけど)
Apr 25, 2007
SquirrelMail
家のネットワークにPPTP経由でアクセス可能になったので、WM5のメールソフトを探していたが、imap対応でしっくりくるものが見つからず、結局自宅サーバ側でWebメールを構築することに。現環境ではSquirrelMailが簡単に導入できそうだったので、インストールしてみた。表示するサブディレクトリを指定出来、未読チェック対象も絞れるのでリモートアクセスで使用するには使い勝手が良い。
特に本体でメーラーを起動する必要性もないので、これでいいかな。
Apr 08, 2007
Todayプラグイン
WindowsMobileのToday画面のカスタマイズ(背景画ではなくて機能追加)はDLLで実装するとのことだったので、これを参考に作ってみた。最初から凝ったものは作らず、不満だった日付表示を作成。
標準のものは
- 曜日
- 年月日
普通のアプリケーションだと、母艦のVisualStudioから実行するとエミュレータが起動してすぐに動作確認ができるんだけれども、Todayプラグインの場合はそうは行かないので、実機で確認。
無事に日付が表示されたが、フォントサイズを固定にしているので、システムフォントサイズを変更しても反映されないことに気付いた。
システムフォントサイズを取得する方法を調べ、なんとか実装。 WindowsCE系の開発は初めてなので、土地勘がなく調べるのが大変。
勝手がわかってきたので、そのうち機能追加をしてみよう。
Windows Mobileはあんまり使い勝手が良くないと思うんだけど、これでいいんだろうか。(CE2.0はそんなに違和感無かったけど)
Apr 07, 2007
EM・ONE使用記(1)
一週間ほどEM・ONEを使ってみて改めて感じたこと。
【電源スイッチのスライド方向が反対では?】
→親指で引き上げる操作。
これはちょっと疑問。カスタマイズサービスがあれば向きを逆にしてもらいたい。
【コマンドプロンプトは危険】
あまりにもフォントが小さくて(320x240pxのデバイスが前提っぽい)使い物にならないので、これは諦めよう。
【着々とエリアが拡大している】
Apr 01, 2007
イーモバイル開業
予約していたイーモバイルの端末EM・ONE到着。WindowsCE系はカシオペアA60以来9年ぶり。
店舗での予約ではなく、イーモバイルのサイトでの予約だったので、ちょっと待つかと思ったけど、10:30頃に届いたので店頭に出向いて開通待ちするよりも早く楽に入手出来た。
まだほとんど使っていないけれども、気になった点をいくつか。
- スタイラスペンが柔らかくて使いにくい
- 我が家では電波の状況が不安定(アンテナ3本だったり圏外だったり)
- IEが全然ダメ
- WindowsMobileのUIがあんまり好きじゃない
- アプリ起動時に必ず日本語入力モードになる
少しずつカスタマイズしてなじませていくしかないんだけど、しばらくは「りなざう」と両方持ち歩くことになりそう。
Mar 31, 2007
LFSでMyLinux(3)
必要なソフトウェアのインストールがほぼ完了したので、実機にインストール。新規でのインストールではなく、既存のサーバからのOS入れ替えなので、慎重に作業を進めた。
メールスプールとか/usr/local/binの自作ツール類や/etcの設定ファイル系をバックアップし、ルートパーティションをフォーマットして展開。
ほぼ一発で動作したので、一安心。
※事前にVMware上で一通りの確認をしているので当たり前だけど
結局、追加インストールしたのは
- jless
- xfs関連
- LVM関連
- OpenLDAP
- proftpd
- postfix
- procmail
- fetchmail
- uw-imap
- syslog-ng
- samba
- apache httpd(1.3)
- PHP5
- mysql
- Python
- 上記が要求するライブラリ類
syslog-ngがVer2から外付けライブラリが増え、予想外のGlibやpkg-configのインストールを強いられた。
logrotateは単独でソース配布が無いので、VineのSRPMを貰ってきて、ソースだけ取り出してビルドした。
rsyncのビルドを忘れているとかそういうのはあるけれど、無事サーバをKernel2.6系に移行することができた。めでたしめでたし。
Mar 15, 2007
LFSでMyLinux(2)
引き続き環境構築中。昨日のビルドは
- xinetd
- ntpd
rcスクリプトも自分で書く必要があるので、ついでにデーモンの起動制御をHP-UX風味にしてみた。
個人的にはRedhat系のchkconfigよりはこちらの方が好きなので。
これで、おおよそ必要なものはそろったので、単独で起動出来るよう簡易なインストール環境を作った。
ベースは以前作成した1CDブートLinux。これは、バックアップしておいたディスクイメージをリストアするために作ったもので、非常にコンパクトな環境。
いくつかツール類が足りないので、スタティックリンクなバイナリを作成し追加。
- mke2fs
- grub
- bzip2
VMware上に新規のVMを作成し、先程のISOイメージファイルから起動させ、
- パーティション作成
- ファイルシステム作成
- マウント
- tarの展開
- MBRにgrubをインストール
- アンマウント
- リブート
Mar 11, 2007
LFSでMyLinux(1)
LFS(Linux from scratch)のドキュメントを参考に、自分Linuxの構築中。サーバ用に使っているOSがKernel2.4 & glibc-2.2という骨董品なので、そろそろイマドキの環境にしたい。
JFにあるのは日本語だけど、一つ前の版なのでKernel2.4ベース。あまりうれしくないので、オリジナルの開発版をベースに構築することに。
構築環境はVMware上のVineLinux4を使用。
ドキュメントに従って淡々とビルド~インストールをこなし、一応起動する形にはなった。
その後、GCCが4.1.1から4.1.2になったり、Glibcにパッチが出たりしたので、再度構築し直した。さすがに2回目はスクリプトを作ったので、丸一日で完了(10時間程度)。
素の状態ではPAMじゃないし、コマンド類も足りないので、逐次追加ビルドを実施中。
現時点で完了したのは、
- PAM
- wget
- which
- net-tools(netstat/ifconfig/arp)
- cpio
- OpenSSL
- OpenSSH
- Vixie Cron
おかげで、今まで自分の中ではブラックボックスだったPAMが理解できた。
母艦OSがあるので、設定を間違っても簡単に修正できるから気楽(PAMの設定を間違えるとログインすらできなくなるので)。
一通り必要なものが組み込まれたら、セットアップCDもどきを作って実機にインストールしてみよう。