日本に生息している昆虫で僕が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 Explorer | Windows | HTTP(URL)エンコード | UTF-8 |
Internet Explorer | MacOS | (代替ファイル名が必要) |
Firefox/Mozilla Suite/Netscape
Browser | - | ・MIMEエンコード ・エンコードなし | ・ISO-2022-JP ・(ページの文字コードに依る) |
Opera | - | エンコードなし | (ページの文字コードに依る) |
Safari | MacOS | (代替ファイル名が必要) |
Konqueror | Linux | (代替ファイル名が必要) |
つまり、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 Windows, Sysutils;
// 変更後 uses {$IFDEF MSWINDOWS}Windows, {$ENDIF}Sysutils; |
Windows
ユニットはIsDBCSLeadByte()のためだけに使われている。関数の入力がShift-JIS限定なのもIsDBCSLeadByte()を
使っているからだ。Kylixでは入力はEUC...つまり、不要だ。まぁ、そもそもKylixにはWindowsユニットは存在しないのだが。次はこれ
に関連してCreateHeaderString()関数の実装部をいじる事になる。
// オリジナル if IsDBCSLeadByte( BYTE(s[cnt]) ) then begin
// 変更後 {$IFDEF MSWINDOWS} if IsDBCSLeadByte( BYTE(s[cnt]) ) then begin {$ENDIF} {$IFDEF LINUX} if (s[cnt] in [#$A1..#$FE]) then begin {$ENDIF} |
IsDBCSLeadByte
()は漢字コード(DelphiではShift-JIS)の1バイト目かどうかを判断するのに使われている。EUCでは0xA1から0xFEが漢字コード
の1バイト目なのでそのように変更。
// オリジナル Result := Result + '=?ISO-2022-JP?B?' + EncodeBase64( sjis2jis83(ZenBuf) ) +'?=';
// 変更後 Result := Result + '=?ISO-2022-JP?B?' {$IFDEF MSWINDOWS} + EncodeBase64( sjis2jis83(ZenBuf) ) +'?='; {$ENDIF} {$IFDEF LINUX} + EncodeBase64( euc2jis83(ZenBuf) ) +'?='; {$ENDIF} |
Delphi
はStringがShift-JIS(ちょっと語弊があるが流してくれい)だが、KylixはEUCなのでISO-2022-JPへの変換関数を
sjis2jis83()からeuc2jis83()へ変更。似たような箇所がもう一つある。
// オリジナル Result := Result + '=?ISO-2022-JP?B?' + EncodeBase64( sjis2jis83(ZenBuf) ) +'?=';
// 変更後 Result := Result + '=?ISO-2022-JP?B?' {$IFDEF MSWINDOWS} + EncodeBase64( sjis2jis83(ZenBuf) ) +'?='; {$ENDIF} {$IFDEF LINUX} + EncodeBase64( euc2jis83(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さんが好きそうなネタではあります。
![[玄箱]](dk_pic/20060824_01.jpg)
一応、知らないヒトのために書いておくと、この
玄
箱は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相当になります。
・
玄
箱のセットアップ
- HDDを組み込んだら本体の電源を入れる。
- 玄
箱付属のCDにある「KuroBoxSetup.exe」をWindowsマシンから実行。
- ガ
イドに従って作
業を進める。
- ブラウザで「http://kuro-box/」
にアクセス。
USER: root
PASS: (なし)
- 玄
箱のIPアドレスを適当に固定。DHCPを使用してはいけない。
- 現
在時刻を合わせてお
く。
・
Vine化
- 玄
箱うぉううぉう♪から「vine_???_dist.tgz」をDL。
- FTP
で玄箱に接
続。
USER: root
PASS: kuro
- 「1.」
でDLしたVine化キットをルートディレ
クトリ
(/)にアップロード。
- 玄箱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
もルートディレクトリ(/)にアッ
プロード。
- TELNETで玄箱に接続。
USER: root
PASS:
kuro
- ルートへ移動。
# cd /
- 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
- 玄
箱のコンセントを抜き、再起動を行う。
・初期設定
Vine化した
玄箱は
IP
アドレス: 192.168.0.100 USER
: tmp-kun PASS
: tmp-kun
|
の
設定になっています。とりあえずTelnet。
ルー
トパスワードが存在しないので、
で
ルートパスワードを設定しておきます。
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)][ホスト名変更(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
を
編集
/etc/ssh/sshd_config
を編集
そ
して
こ
れで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カードを増設するのがいいのかもしれません。