Nov 14, 2008
AVアンプ死亡
我が家のAVセンターとなっているONKYO TX-NA900がお亡くなりに。あと2年くらい使ってテレビと一緒に買い換える予定だったけど、仕方がないのでTX-SA806Xを手配中。
まあ、5年使ったからいいか。
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 23, 2008
GAINER
今更ながら、GAINERで遊んでみようかと思いGAINER I/Oモジュールを購入。これだけのために、PSoCの開発環境を整備しようとは思わなかったので、キットを購入することに。
載ってる部品が大したことない割には\7,500とちょい高。\3,500位でいいんじゃない?
足が片方1ピン足りなかったけど、in側は未使用ピンがあるので、とりあえずは使えるから許してあげよう。
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」を指定すると回避可能。
May 26, 2008
Wiiが来た
Wiiまでもが我が家に設置されてしまった。娘がマリオカートやりたいと言うので購入。設置スペースも小さいので、まあ良いかと。
ゲーム機が増えてコントローラがあふれてきたので、整理方法も考えないといけない。
May 15, 2008
HD化開始
ようやく我が家の環境もHD化を開始。テレビはまだFullHDではないけれど、ビデオカメラと編集PCを新調し、着々とHD化を推進。
PCはまた自作しようかとも思ったけれど、Canopusのボードだと相性問題等が面倒だったのでツクモのキャプチャ王国で調達。
Pentium4/3GHzからCore2Duo/3GHzになったので、3倍くらい速くなった感じ。
※AVCHDのファイルが普通に再生できる。
カメラは奮発してHVR-Z7J。ワイド側は丁度いいんだけど、ややテレ側が足りない気がする。
先週末は試し撮りに出かけるつもりが雨だったので、今週末にならしを兼ねて撮影予定。
また、お散歩カメラも必要なので、HDR-CX7も購入。
HDDよりもメモリスティックのほうが安心な気がする。HDDは振動問題とか不意のクラッシュとか怖いので。
Apr 26, 2008
ここのサーバ引っ越し完了
このサイトのサーバ引っ越し完了。ホスティング先を変更したわけではなく、サーバ老朽化のためにリプレイス作業が実施された。
速いサーバになったので快適だけど、blosxomの動作がちょっと変で、一部のエントリの日付がおかしくなっている。
ファイルのタイムスタンプを修正してもダメなので、本気で調べないといけないらしい。
以前のサーバは結構自由だったので、ほとんどのUNIXコマンドが制限なく実行できたけれど、新サーバは制約が多いのでちょっと不満。
→ tarも使えないので、バックアップ・リストアとか一括コンテンツ転送などは非常に面倒。
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 でも可 |
Mar 23, 2008
RCプロポ Joystick(その4)
AT90USB162版完成。あっさり動作。昨日作ったファームをちょっと書き換えただけなので、ちゃんとしたものは別途作成予定。
#USBN9604は気が向いたらまたやろう。
Mar 22, 2008
AVR AT90USB162
デバイス自体はちょっと前に入手済みだったけれど、ようやく実装して動かしてみた(5V専用)。このデバイスは、USB経由でプログラムの書き込みが出来るので、結構お手軽。
Atmelのサンプル(at90usb162-hidgen-1_0_1.zip)を改造し、1ボタンのみのジョイスティックとして動作するファームウェアを作成(ディスクリプタ上は8ボタン)。
開発環境はWinAVR(20071221)とAVRWikiで配布している修正版のavr-libc-bin-1.6.1+20080115.zip。
Atmelのコードは汎用的に使えるようにかなりモジュール分割されているので、ちょっと扱い辛い。Cypressの様にもう少しソースを集約してやろうかと思う。
(USBのディスクリプタなんかはアセンブラコードの方が書きやすい)



Mar 15, 2008
AC6完全クリア
ようやくAceCombat6を完全クリア(全勲章取得)達成。前作までと若干ルール変更があるので、一見無茶と思われる「機銃のみクリア」も出来てしまう。
→ 自分が機銃だけなら問題なし。僚機や支援要請で味方機がミサイル撃ちまくってもそれはカウントされない。
オンラインモードは全然やってないけど、知り合い以外とやるのはちょっと気が引けますな。
Feb 11, 2008
RCプロポ Joystick(その3:苦戦中)
USBN9604の制御が思うようにいかず苦戦中。DeviceDescriptorの要求受付~送信までは動いているように見えるが、送信完了後に受信許可するとリセットイベントが発生する。
何度やっても同じ。
プログラムは正しいように見えるし、ディスクリプタの内容にも問題は無いので原因不明。
挫折しそうなので、USB付きAVRの「90USB162」に乗り換え検討中。値段も700円とそんなに高くないし。
Jan 20, 2008
RCプロポ Joystick(その2:途中経過)
USBコントローラをUSBN9604に変更して製作中。ハードはとても簡単なのですぐに出来たが、ソフトで苦戦中。
デバイスの初期化までは出来たので、Windowsから「不明なデバイス」として認識されることまでは確認。AVRにも割り込みが発生してデータが読めるので恐らくそれなりに正しく動作している模様。
ただ、あまりにプリミティブなコントローラなのと、EndPoint0のFIFOが8バイトしかないのでディスクリプタの送信が1回で出来ないなど、かなり面倒。たぶんもう使わない。
NSのサイトを見ると「Not recommended for new designs (as of 14-Nov-06)」なので、使っちゃダメみたいだけど。
次はMAX3420あたりを使ってみよう。