Dec 13, 2008

さよならZaurus

シャープのZaurusが生産終了とのこと。
PI/MI系は結局使ったことはなく、SL系のみだったけど、ちょっとさみしいねぇ。
PIはPC-E500系のCPUと同じものを使っていたので、当時は欲しかったけど高くて買えなかった(PI-3000は12.8万円)。
携帯電話が高機能化しているとか、netbookのような小型PCが安価に売られるようになると、PDAの出番はないか。
Posted at 21:34 in computer

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  }
この4行目の部分がRubyでは1行で書けない。まず最初にハッシュを生成しないといけないのと、ハッシュキーが存在しないとnilが返るので、「+」というメソッドが無いと、エラーになってしまう。
適材適所ということもあるけれど、自分の使い方ではやっぱりPerlかな。もうちょっとアプリケーションっぽいものを作るときはRubyでもいいかも。
Posted at 22:24 in computer

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が肥大化してしまった。
Posted at 00:50 in computer

Jul 27, 2008

自宅サーバのカーネル64bit化

CLFSのドキュメントを参考にクロスコンパイル環境を構築し、カーネルのみ64bit化した。
環境は以下の通り。
  • ベースのOS環境はLFS(SVN-20070304版)
  • linux-2.6.26
  • binutils-2.17
  • gcc-4.1.2
※なぜか、--prefixで/usr/local/crossを指定しているのに、/usr/local/cross/usr/local/crossにインストールされてしまうので、都度移動させた。H8用のクロスコンパイル環境を作った時はそんなこと無かったのに。
準備
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
Posted at 15:59 in computer

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」を指定すると回避可能。
    Posted at 13:25 in computer

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
・Postfixビルド
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
・main.cf編集
以下を追加
smtp_sasl_auth_enable  = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
・SASL用パスワードファイル作成
vi /etc/postfix/sasl_passwd
メールサーバ ユーザID:パスワード
編集後、以下のコマンド実行
postmap /etc/postfix/sasl_passwd
・transport設定
vi /etc/postfix/transport
*  :[メールサーバ]:587
編集後、以下のコマンド実行
postmap /etc/postfix/transport
※main.cfに
relayhost = メールサーバ:587
でも可
Posted at 17:00 in computer

Jun 24, 2007

JavaScript入門

オライリーの初めてのJavaScript読破。
仕事はサーバサイドが主で、クライアントサイドの技術が手薄なので先ずはJavaScriptから。
JavaScriptは大昔からあるけれど、微妙にバージョンアップが続き追いついていなかったので、再度入門から。
ブラウザ側に処理を委譲するにはいいんだけど、やはりブラウザ間でのDOM実装方法による互換性のなさが面倒。
フォームの入力値チェックくらいで止めておくのがいいんじゃないかと思うんだけど。
Posted at 15:31 in computer

May 12, 2007

複合機修理

複合機(ブラザーのMFC8820J)の原稿台カバーのヒンジが壊れたので昨日の夕方にコールセンターに電話したところ、今日の昼前に出張修理完了。
最初は引き取り修理の予定だったけれど、最初の電話の後にこの機種では引き取りサービスが無いということだったので、出張修理に変更。
今日の午前中に修理担当から修理日の調整の連絡が行くということだったので、来週のどこかになるのかと思いきや即日対応。

個人ユースでも法人並みのサポートが受けられるのは素晴らしい。(あんまり個人では買わない機種なんだろうけど)
Posted at 23:56 in computer

Apr 25, 2007

SquirrelMail

家のネットワークにPPTP経由でアクセス可能になったので、WM5のメールソフトを探していたが、imap対応でしっくりくるものが見つからず、結局自宅サーバ側でWebメールを構築することに。
現環境ではSquirrelMailが簡単に導入できそうだったので、インストールしてみた。表示するサブディレクトリを指定出来、未読チェック対象も絞れるのでリモートアクセスで使用するには使い勝手が良い。
特に本体でメーラーを起動する必要性もないので、これでいいかな。
Posted at 23:08 in computer

Apr 08, 2007

Todayプラグイン

WindowsMobileのToday画面のカスタマイズ(背景画ではなくて機能追加)はDLLで実装するとのことだったので、これを参考に作ってみた。
最初から凝ったものは作らず、不満だった日付表示を作成。
標準のものは
  • 曜日
  • 年月日
と2段組となっているので、これを1段にしてみた。
普通のアプリケーションだと、母艦のVisualStudioから実行するとエミュレータが起動してすぐに動作確認ができるんだけれども、Todayプラグインの場合はそうは行かないので、実機で確認。
無事に日付が表示されたが、フォントサイズを固定にしているので、システムフォントサイズを変更しても反映されないことに気付いた。
システムフォントサイズを取得する方法を調べ、なんとか実装。 WindowsCE系の開発は初めてなので、土地勘がなく調べるのが大変。
勝手がわかってきたので、そのうち機能追加をしてみよう。

Windows Mobileはあんまり使い勝手が良くないと思うんだけど、これでいいんだろうか。(CE2.0はそんなに違和感無かったけど)
Posted at 22:22 in computer

Apr 07, 2007

EM・ONE使用記(1)

一週間ほどEM・ONEを使ってみて改めて感じたこと。

【電源スイッチのスライド方向が反対では?】

電源スイッチは本体左上方にあり、持った感じでは左手の人差し指で操作するものだろうと思われるが、なぜか画面上方にスライドさせるようになっている。
→親指で引き上げる操作。
これはちょっと疑問。カスタマイズサービスがあれば向きを逆にしてもらいたい。

【コマンドプロンプトは危険】

このへんを参考にコマンドプロンプトをインストールすると使えるようにはなるんだけれども、OSの再起動をすると全てのキーが使用不能となる(電源も切れない)。
あまりにもフォントが小さくて(320x240pxのデバイスが前提っぽい)使い物にならないので、これは諦めよう。

【着々とエリアが拡大している】

4/1の時点では会社(相模鉄道沿線)は圏外だったが、昨日は使えるようになっていた。なんか頑張っている感じ。
Posted at 10:49 in computer

Apr 01, 2007

イーモバイル開業

予約していたイーモバイルの端末EM・ONE到着。
WindowsCE系はカシオペアA60以来9年ぶり。
店舗での予約ではなく、イーモバイルのサイトでの予約だったので、ちょっと待つかと思ったけど、10:30頃に届いたので店頭に出向いて開通待ちするよりも早く楽に入手出来た。
まだほとんど使っていないけれども、気になった点をいくつか。
  • スタイラスペンが柔らかくて使いにくい
  • 我が家では電波の状況が不安定(アンテナ3本だったり圏外だったり)
  • IEが全然ダメ
  • WindowsMobileのUIがあんまり好きじゃない
  • アプリ起動時に必ず日本語入力モードになる
4年ほどりなざうを使ってきたので慣れの問題もあるかもしれないけれど、スタイラスだけはいただけない。細いのに樹脂製なのフニャフニャ。
少しずつカスタマイズしてなじませていくしかないんだけど、しばらくは「りなざう」と両方持ち歩くことになりそう。
Posted at 07:42 in computer

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
  • 上記が要求するライブラリ類
PHP5.2がmake testでエラーとなるので、5.1.6を選択。それ以外は特に問題なくビルド完了。
syslog-ngがVer2から外付けライブラリが増え、予想外のGlibやpkg-configのインストールを強いられた。
logrotateは単独でソース配布が無いので、VineのSRPMを貰ってきて、ソースだけ取り出してビルドした。

rsyncのビルドを忘れているとかそういうのはあるけれど、無事サーバをKernel2.6系に移行することができた。めでたしめでたし。
Posted at 23:06 in computer

Mar 15, 2007

LFSでMyLinux(2)

引き続き環境構築中。
昨日のビルドは
  • xinetd
  • ntpd

rcスクリプトも自分で書く必要があるので、ついでにデーモンの起動制御をHP-UX風味にしてみた。
個人的にはRedhat系のchkconfigよりはこちらの方が好きなので。

これで、おおよそ必要なものはそろったので、単独で起動出来るよう簡易なインストール環境を作った。
ベースは以前作成した1CDブートLinux。これは、バックアップしておいたディスクイメージをリストアするために作ったもので、非常にコンパクトな環境。
いくつかツール類が足りないので、スタティックリンクなバイナリを作成し追加。
  • mke2fs
  • grub
  • bzip2
あとはカーネルの置き換えと、/以下一式をtarでまとめたものを一緒にisoイメージファイル化して完成。
VMware上に新規のVMを作成し、先程のISOイメージファイルから起動させ、
  • パーティション作成
  • ファイルシステム作成
  • マウント
  • tarの展開
  • MBRにgrubをインストール
  • アンマウント
  • リブート
で完了。無事、インストール先のディスクから起動することを確認できたんで、実機でも問題ないでしょう。
Posted at 22:52 in computer

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もどきを作って実機にインストールしてみよう。
Posted at 23:00 in computer