(06/08/01〜)

06/08/06

・ログを分離しました。

・甲虫
 昨日から実家にお泊り。

  朝早くから昆虫採集。山に行ってきました。結果は
 と、まずま ず。それにしても、8月でノコギリクワガタが捕れるという事は、ミヤマクワガタとカブトムシの本格的なシーズンはもう少し後な のかもしれません。僕の実家の方では7月はノコギリクワガタ、8月はカブトムシとミヤマクワガタが多かったです(20年前の記憶によれば)。地元ではコク ワガタは結構レアです。ヒラタクワガタは全国平均的にレアです。オオクワガタは多分生息していません(自分で捕ったことも、友達が捕ったのも見たことがな いので)。 

 実家の庭ではドレイクトンボを Get。

[ドレイク]

 写真は僕の左手...いやいや、ピンボケしまくりのトンボです(テキサス ロングホーンでもありません)。ヤンマ系のトンボは山に行かないと居ませんし、あの素早さはちょっと難しいです。まぁ、それでも後述の昆虫に比べれば楽な のかもしれませんが。

 20数年ぶりにとある昆虫をGet。

[ハンミョウ]

 日本に生息している昆虫で僕が2番目にキレイだと思っている(ちなみに一 番目はタマムシ)昆虫です。知ってますか?コレ。

 " 斑猫(ハンミョウ)"です。別名"道案内"ですね。漢字では猫って入ってますが、英名は"Tiger Beetle"です。ビニール袋越しなのと、屋内での撮影な事もあって写真ではイマイチキレイではないのですが、屋外だとキラキラ輝いて本当にステキです (キレイな姿はグ グってみてください)。

 このハンミョウには毒がないとされていますが、噛まれると刺激臭 と共に激痛が走ります...本当に毒持ってないのかなぁ?その顎は独特で、クワガタのような形状の白い顎があります。間近でよく見ると結構カッコイイで す。

 素手で捕まえるのは非常に難しく、昆虫の中でも屈指の採集難度を誇ります。かく言う僕も素手で捕まえたの は一度しかありません。子供の頃はヒグラシが鳴く時間まで夢中でコレを追いかけていた事がありましたっけ。

  カッコイイ昆虫は「ミヤマクワガタ」「オニヤンマ」「ケラ(オケラ)」だと思っています。ミヤマクワガタは"渋い"、オニヤンマは"鋭い"、オケラは"す げぇ!!"というのが僕の評価です。

  あとで、小川に遊びに。何故だか増水しており、一番深い所では僕の太もものあたりまでありました。前回行った時の2倍から3倍の水量がありました。まぁ、 子供と水遊びするにはちょっと水が多かったかも。流される心配のない程度の水量だったらもっとよかったのですが...。

06/08/20

・日本語ファイルのダウンロード(備忘録)
 "Content-Type"「application/x- octet-stream」を使えばhttpでファイルをDLさせる事ができるが、日本語ファイル名だと化ける事がある。本来はMIMEエンコード (ISO-2022-JPをBase64化したもの)を"Content-Disposition"に「attachment;fileName="ファ イル名"」としてやるのが筋らしい。

 ところがIEは違う。MIMEエンコードではなくHTTPエンコード (URLエンコード)で、しかもUTF-8だ。Macに至ってはIEだろうがSafariだろうがどう足掻いても日本語ファイル名を指定する事はできない らしい。

 で、ちょっと調べてみたので列挙。

ブラウザOSエンコード文字コード
Internet ExplorerWindowsHTTP(URL)エンコードUTF-8
Internet ExplorerMacOS(代替ファイル名が必要)
Firefox/Mozilla Suite/Netscape Browser-・MIMEエンコード
エンコードなし
ISO-2022-JP
・(ページの文字コードに依る)
Opera-エンコードなし(ページの文字コードに依る)
SafariMacOS(代替ファイル名が必要)
KonquerorLinux(代替ファイル名が必要)

  つまり、User-Agentからブラウザの種類を判別し、それぞれの処理をするしかないという事だ。そもそも日本語ファイル名がマズいのだが、グループ ウェア等だとどうしても日本語ファイル名のものを放り込みがちになってしまう。自分ではやらなくても、ユーザは何をするか分かったもんじゃない(^^;

 User-Agentの判別順はOpera->IE->(その他)がいいと思う。Operaは素でIE詐称する場合があるようだ。

  ちなみにDelphiの場合、 HTTP(URL)エンコードには「HTTPApp」ユニットのHTTPEncode()関数が使える。MIMEエンコードは「jconvert.pas」 のCreateHeaderString()関数で行える。

 さらにKylixの場合、HTTP(URL)エン コードにはDelphi同様「HTTPApp」ユニットのHTTPEncode()関数が使える。MIMEエンコードは「jconvert.pas」 のCreateHeaderString()関数を改変すれば使える。改変版jconvert.pasを アップするのはどうかと思うので修正箇所を列挙する事にする。

 まずはuses句。

// オリジナル
uses
  
WindowsSysutils;

// 変更後
uses
  
{$IFDEF MSWINDOWS}Windows{$ENDIF}Sysutils;

 Windows ユニットはIsDBCSLeadByte()のためだけに使われている。関数の入力がShift-JIS限定なのもIsDBCSLeadByte()を 使っているからだ。Kylixでは入力はEUC...つまり、不要だ。まぁ、そもそもKylixにはWindowsユニットは存在しないのだが。次はこれ に関連してCreateHeaderString()関数の実装部をいじる事になる。

// オリジナル
    if IsDBCSLeadByteBYTE(s[cnt]then begin

// 変更後
    {$IFDEF MSWINDOWS}
    
if IsDBCSLeadByteBYTE(s[cnt]then begin
    
{$ENDIF}
    
{$IFDEF LINUX}
    
if (s[cntin [#$A1..#$FE]then begin
    
{$ENDIF}    

 IsDBCSLeadByte ()は漢字コード(DelphiではShift-JIS)の1バイト目かどうかを判断するのに使われている。EUCでは0xA1から0xFEが漢字コード の1バイト目なのでそのように変更。

// オリジナル
          Result :Result '=?ISO-2022-JP?B?'
                    
EncodeBase64sjis2jis83(ZenBuf+'?=';

// 変更後
          Result :Result '=?ISO-2022-JP?B?'
                    
{$IFDEF MSWINDOWS}
                    
EncodeBase64sjis2jis83(ZenBuf+'?=';
                    
{$ENDIF}
                    
{$IFDEF LINUX}
                    
EncodeBase64euc2jis83(ZenBuf+'?=';
                    
{$ENDIF}

 Delphi はStringがShift-JIS(ちょっと語弊があるが流してくれい)だが、KylixはEUCなのでISO-2022-JPへの変換関数を sjis2jis83()からeuc2jis83()へ変更。似たような箇所がもう一つある。

// オリジナル
    Result :Result '=?ISO-2022-JP?B?'
              
EncodeBase64sjis2jis83(ZenBuf+'?=';

// 変更後
    Result :Result '=?ISO-2022-JP?B?'
              
{$IFDEF MSWINDOWS}
              
EncodeBase64sjis2jis83(ZenBuf+'?=';
              
{$ENDIF}
              
{$IFDEF LINUX}
              
EncodeBase64euc2jis83(ZenBuf+'?=';
              
{$ENDIF}

  上のと同様。この4箇所の変更でKylixでもjconvert.pasが 使える(Delphi/Kylix両用)。細かい所は検証していないので他の関数を使う際 にはちゃんと見直した方がいいと思う。当たり前だが、Kylixに持っていくときには「EUC/改行LF」に変換してからにする事。

  余談だが、EUCからUTF-8に変換する際にはKylixのUTF-8絡みの関数を使うべきではないかもしれない。なんだか挙動がおかしい。納 得がいかないが、libcユニットをusesしてiconv()系の関数を使う事をオススメする。

06/08/24

玄 箱(KURO-BOX)
 今更かも知れないですが、玄 箱の話題。M&Iさんが好きそうなネタではあります。

[玄箱] 一応、知らないヒトのために書いておくと、この玄 箱はBuffaloのネットワークストレージ(NAS)であるLinkStationの 玄人志向版(HDD未搭載)です。LinkStationと 言えば一時期、Koji27氏がゴニョゴ ニョやっていた事もありまして、玄 箱が出たときからチェックはしていたのですが、これといった利用法も思いつかず、実際に触る機会はありませんでした。

  今回、仕事上でちょっとしたトラブルがありまして...。ネットワーク接続機器を複数台、外部からルータ越しに操作(FTP)する必要があったので、 DDNSでやろうと思っておりましたら客先が、「PCの電源を落としておく事が多い」「そもそもPCがない」という「聞いてねーよ!!」という有様でし て。これをどうにか安価に解決する方法を模索した結果に選ばれたのがこの玄 箱でした。

 玄 箱はCPUがPowerPCで、OSとしてLinuxが動作しています。LinuxなのでFTPも可能ですし、先人の努力により「Vine化」が可能です。DDNSのクライア ント仕込むだけでは勿体無いくらいです。このスタイルですから、「電源入れっぱなしにしといて」とお客さんに言えます。消費電力の観点からも常時稼動が現 実的です(PCだと必ず電源落とすヒトがいますから...)。

 現在、玄 箱は上位バージョンのKURO -BOX/HG(ギガビットイーサ)が発売されていますが、ノーマルの玄 箱はインターネット価格で8,000円弱と、とてもお手頃です。これに5,000円台の80GB-HDDを組み込めば15,000円 程度でLinux-Boxができます(大容量のHDDを入れる位なら、LinkStationを 購入した方が安い事がありますのでご注意。手持ちの余ったHDDで活用するのが玄 箱の正しい使い方でしょう)。

 以下に私が行った玄 箱の設定手順を記しておきます。順番にやっていけばVine化され、apt-getが行える所まで設定されます。これらの情報は殆どがweb上にありますが、web巡回して情報を集める時間がないヒトにはいいかと思います。ちなみにVineは2.6相当になります。

玄 箱のセットアップ
  1. HDDを組み込んだら本体の電源を入れる。

  2. 玄 箱付属のCDにある「KuroBoxSetup.exe」をWindowsマシンから実行。

  3. ガ イドに従って作 業を進める。

  4. ブラウザで「http://kuro-box/」 にアクセス。
    USER: root
    PASS: (なし)

  5. 玄 箱のIPアドレスを適当に固定。DHCPを使用してはいけない。

  6. 現 在時刻を合わせてお く。
Vine
  1. 玄 箱うぉううぉう♪から「vine_???_dist.tgz」をDL。

  2. FTP で玄箱に接 続。
    USER: root
    PASS: kuro

  3. 「1.」 でDLしたVine化キットをルートディレ クトリ (/)にアップロード。

  4. 玄箱CD- ROMのbinarysに ある
    • g++-2.95.3.tar.gz
    • gcc-2.95.3.tar.gz
    • glibc-2.2.3.tar.gz
    • make-3.79.1.tar.gz
    • openssh-3.0.2p1.tar.gz
    • patch-2.5.4.tar.gz
    ルートディレクトリ(/)にアッ プロード。

  5. TELNETで玄箱に接続。
    USER: root
    PASS: kuro

  6. ルートへ移動。
    # cd /

  7. Vine化キットなどを展開。
    # tar zxfv vine_*_dist.tgz
    # tar zxfv g++-2.95.3.tar.gz
    # tar zxfv gcc-2.95.3.tar.gz
    # tar zxfv glibc-2.2.3.tar.gz
    # tar zxfv make-3.79.1.tar.gz
    # tar zxfv openssh-3.0.2p1.tar.gz
    # tar zxfv patch-2.5.4.tar.gz

  8. 玄 箱のコンセントを抜き、再起動を行う。
・初期設定

Vine化した 玄箱は
IP アドレス: 192.168.0.100
USER      : tmp-kun
PASS      : tmp-kun
の 設定になっています。とりあえずTelnet。

ルー トパスワードが存在しないので、
$ su
# passwd
で ルートパスワードを設定しておきます。

emacs/jed等のエディタはインストールされていません。この現時点ではapt-getもできませんので、しばらくはviでの作業が必須となります。viに慣れていない方は注意して下さい。以下にごくごく簡単なviの操作方法を記しておきます。
vi は
・"i"でテキスト入力モード
・"ESC"でコマンドモード

テキス ト入力モードでは
・カーソルキーで移動
・文字入力可

コマンドモードで は
・カーソルキーで移動
・削除(x)
・行削除(dd)
・ファイル保存 (:w[Enter])
・終了(:q[Enter])
・ファイルを保存して終了(:wq[Enter])
・ 強制終了(:q![Enter])
と りあえず、これだけ覚えて以下の作業を行いましょう。

[ネットワーク設定変更]
#vi /etc/sysconfig/network-scripts/ifcfg-eth0

BOOTPROTO=static
BROADCAST=192.168.1.255
IPADDR=192.168.1.10
NETMASK=255.255.255.0
NETWORK=192.168.1.0
GATEWAY=192.168.1.1
ONBOOT=yes

[ホスト名変更(1)]
# vi /etc/hostname

ホスト名

[ホスト名変更(2)]
# vi /etc/hosts

127.0.0.1    localhost
192.168.1.10    ホスト名

[ホスト名変更(3)]
# vi /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=ホスト名
GATEWAY=192.168.1.1

[DNSサーバ変更]
# vi /etc/resolv.conf

nameserver    192.168.1.1

[Network再起動]
# /etc/init.d/network restart
(場合によってはここでPCのIPアドレス変更とTelnet再接続が必要 です)

[apt-getリスト編集]
# vi /etc/apt/sources.list
※vineplusのコメントアウトを削除。
こ れでviとオサラバできます。

[apt -get&エディタ導入]
# apt-get update
# apt-get upgrade
# apt-get install emacs jed wget
エ ディタemacs/jedが使えるようになりました。

[shutdown有効]
/etc/init.d/halt
を 編集。
(前略)
Case "$0" in
*halt)
echo -n EEEE > /dev/ttyS1
message=$"Halting system...."
command="halt"
;;
*reboot)
echo -n CCCC > /dev/ttyS1
command="reboot"
(後略)
赤字の部分を追加。

[電源ボタンでシャットダウン]
/www/script/melsub_shutdown.sh
を 編集
#tmpSMBWC=`ps -ax | grep "/usr/sbin/smbd -D" | wc -c`
#if [ "$tmpSMBWC" -le 10 ] ; then
#if [ -f /var/run/smbd.pid ] ; then
#        echo "shutdown start"
#else
#        echo "### !!!Warnning!!! ###"
#        echo "/usr/sbin/smbd is NOT running!"
#
#        rm -f /var/run/melsub_shutdown
#        exit 1
#fi
赤字の部分をコメントアウ ト。これで電源ボタン長押し(約3秒)によるシャットダウンが行えるようになります。

[OpenSSH有効]
/etc/default/ssh
を 編集
AUTOKEYGEN=yes
/etc/ssh/sshd_config
を編集
PermitRootLogin no
そ して
# /etc/init.d/ssh start
こ れでSSHによる接続が可能になりました。

※Telnetを無効にする場合にはその前に、再起動してSSHによ る接続が正しく行える事を確認してからにして下さい。SSHもTelnetも使えないとアクセス手段がなくなってしまいます。Telnetを無効にするの はすべての設定が終わり、安定稼動するようになってから行うのがベストです。

 設定は以上で終了ですが、本当に必要最低限の事しかやっていません。SMBやFTP等もこの時点では使えません。この先は普通にVineLinuxの情報として存在しますので、各自で調べて設定して下さい。

・トラブルシューティング
 ... というか、つまづくと思われる点を幾つか。
  • webmin
    「apt-get install webmin」でインストール。パスワードを間違っていないのにログインできない場合には
    # /usr/libexec/webmin/changepass.pl /etc/webmin root ルートパスワード
    # /etc/init.d/webmin restart

  • samba
    「apt-get install samba」でインストール。sambaがどうしても起動しない場合には「/etc/hosts」をもう一度チェックしてみてください。

  • proftpd
    最 初に「apt-get install pam-devel」しないと依存関係でインストールできません。proftpd-1.2.10をソースからインストールするとよいでしょう。

  • ハードディスク
    日 立(HGST)のHDDが発熱が少ないのでオススメです(ツールで静音化とかもできますし)。玄箱はどうしても熱がこもってしまいます。Maxtorの HDDはいくら性能が良くても避けた方がいいと思います。「最近のMaxtorはそんなに熱デネーよ!!」とか言う方はどうぞお好きになさって下さい。 3.5inch->2.5inch変換コネクタを使って2.5インチHDDを搭載するのも面白いかもしれませんね。
・感想。
 玄 箱はかなり遊べます。Webサーバやメールサーバは現実的でないとは言え、その他にもイロイロ仕込む事ができますしね。

06/08/25

・ASUS M2NPV-VM
 Socket939 で低消費電力なスリムPCを作るのがコスト面で難しくなってきており、不本意ながらCeleronDでスリムPCを作っていた。消費電力はともかく、 CeleronDは結構発熱する事があって、本当に不本意だった(納品したお客さんには失礼な話だが)。で、このMB。Socket AM2なMicroATXマザーボードで、低消費電力版Athron64 X2と組み合わせると、高性能なスリムPCを比較的安価に組み上げる事ができる。

 デュアルコア64bitCPU...しかも低消費電力 で発熱も少ないとあればスリムPCにはもってこいな訳で。Core2 Duoでもいいのですが、実はCore2 Duoはそんなに低消費電力という訳ではありません。先立って発売された「Core Duo」と似たようなものだとばかり思っていましたが、期待はずれでした。そしてMB等を含めたトータルコストを考えるとCore2 Duoで組み上げると割高になってしまうのです。

 で、スリムPCをお客さんトコに納品したのですが、納品後に「デュアルディスプレイに してくれ」と言われました。M2NPV-VMはディスプレイコネクタを二つ持っているのでディスプレイさえ繋げればデュアルディスプレイにできます。 M2NPV-VMにはD-SUB15ピンとDVI29ピンが備えられています。

 ...ところが。

 納品した液晶ディスプレイと同じ型番の液晶ディスプレイ(アナログ接続)と、アナログ<->DVI変換コネクタを後日納品したのですが「映りません」。実はこのMB、DVI29ピンのメスコネクタを装備しているクセに「DVI-D」なのです。DVI-Dならば普通は、メスコネクタはDVI24ピンになっているハズですが、コストダウンのためかDVI29ピンコネクタが使われているようです。

 説明書を読めばDVI-Dである事が明記されています。とはいえDVI29ピン装備なので、「もしかすると変換コネクタでもイケるかも?」と思っていたのでした。仕方ないのでSUPCに電話。「あーすみません、DEKOですけど...やっぱり無理でした。確保してもらってたVIDEOカード買いにいきますので、よろしくー!」

 いくらなんでも博打はしない(^^; ちゃんと事前にPCI-Eのロープロファイル対応VIDEOカードを確保してあったのでした。お客さんへの見積もりにもちゃーんとVIDEOカード分は上乗せしてあります。

 で、このM2NPV-VMですが、DVI接続には問題があるようです。デュアルディスプレイにするには素直にVIDEOカードを増設するのがいいのかもしれません。


 BACK   古いのを読む     新しいのを読む