June 02, 2012

複数のディレクトリ下にあるファイルすべての MD5 ハッシュをとって,一致してるファイルを表示する perl script

極めて久々.
先日,別の拠点にあるファイルサーバーのデータを持ってきてこちらのファイルサーバーにコピーしようとしたのだけども,どうも中身が同じファイルが多いようなので,ファイルの MD5 ハッシュとって同じだったら同一内容のファイルだとして消そうと思った次第.
スクリプトの内容は下記ですが,このファイルを

$ ./filecomp.pl /hoge /booboo 

みたいに実行すると,/hoge も /booboo にもある(そのサブディレクトリも含む)ファイルも全部ごっちゃにして MD5 ハッシュ計算して一致したファイル名をフルパスで表示します.
例えば /hoge/ahhan.txt と /hoge/uhhun.txt, /booboo/ahhan.txt が一致してると,順番はどうなるかわかりませんが,
/hoge/ahhan.txt(タブ区切り)/hoge/uhhun.txt
(タブ二個)/booboo/ahhan.txt

みたいな感じで二個以上ダブってたら三個目以上は二個タブの後ろにどんどんリストアップされる格好.
コードは以下.

#!/usr/bin/perl

use strict;
use warnings;

use File::Util;
use Digest::MD5;

my $file_obj = File::Util->new(max_dives => 50000);
my @total_filelist;
my %key_filename;
my %key_hashed;
my $flag_overtwo;

foreach (@ARGV) {
my @temp_filelist = $file_obj->list_dir($_,'--files-only','--recurse');
push @total_filelist, @temp_filelist;
}

foreach (@total_filelist) {
open(TARGET, $_) || die "Can't open file, name: $_ :$!";
binmode(TARGET);
$key_filename{$_} = Digest::MD5->new->addfile(*TARGET)->hexdigest;
close(TARGET);
}

foreach (sort{$key_filename{$b} cmp $key_filename{$a}} keys %key_filename) {
if($key_hashed{$key_filename{$_}}) {
if(! defined($flag_overtwo)) {
print "$key_hashed{$key_filename{$_}} \t $_\n";
$flag_overtwo = "deja été";
}
else {
print "\t\t $_\n";
}
}else {
undef($flag_overtwo);
}
$key_hashed{$key_filename{$_}} = $_;
}


コード内で File::Util のオブジェクト作るときの max_dives ってのは最大で何個のファイル(ディレクトリも含む?)を“掘る”かっていう感じの数字でデフォルトがかなり小さくて小生の目的では全然ダメなので大きくしてます.cpan 見てデフォルトで行くなり増やすなり適宜よろしくお願いします.
最初のループでは,引数で指定されたディレクトリ以下のファイルをぶりぶり調べてフルパスで配列 total_filelist にぶち込む.次のループでは total_filelist にある全ファイルの MD5 ハッシュを計算して,ファイル名をキー,ハッシュ値を値とするハッシュ:key_filename にぶち込む,最後のループでは %key_file ハッシュを値(すなわち MD5 ハッシュ値)でソートして,MD5 ハッシュ値をキー,フルパスのファイル名を値とするハッシュ:key_hashed を作る(すなわち reverse(%hash) をいちいちやる)ループなのですが,MD5 ハッシュ値であるキーがダブルと上書きされていくので,すでにそのキーがあると標準出力に書きだすし,一回そのキーで書き出すとフラグ:flag_overtwo がたってそれ以降の同じ MD5 ハッシュ値のダブりの処理ではタブ二個と最新の値(ファイルフルパス名)が標準出力に出てくるという話.
壮大な大車輪の大再発明のような気もしますが,その場合こっそり指摘していただければ幸い.
現在はディレクトリ自体一緒だと判断するのに,このスクリプトで出てきたディレクトリを

$ cd /ahhan
$ find . -type f > ahhan
$ cd /uhhun
$ find . -type f > uhhun
$ wc -l ahhan uhhun

あるいは

$ diff ahhan uhhun

みたいな感じで確認してディレクトリごと片方を削除したりしてます.それさえもスクリプトに含めるのは一瞬考えましたが,ファイラーもどきを書いてしまうのは too much でもあり,僭越でもあり,汎用性を考えて上のままで使ってます.
経済的メモリーの使い方とかマシンパワーとかは考慮していませんので,適宜改善の上色々していただければ幸いです.
BSD マシン上では動いてますけど,active perl 上ではどうなのでしょう?
はるか前にもエントリーあげましたが,MD5 ハッシュを cpan のモジュールで云々するというのはゆーすけべーさんのエントリー“いかにして効率よく大量のおっぱい画像をダウンロードするか”のコードの最後のほうに触発されたということが大きいです(最近は改良版とか ruby 版とか出ているといううわさですが)

| | Comments (34) | TrackBack (0)

May 31, 2010

ガンバレ!ファミリーレストランみのり(埼玉県秩父市)

夏の涼しさ・冬の暖かさもパンチに欠け,西武鉄道のプッシュもやる気も今一歩という状況があいまって,箱根大きく水をあけられている埼玉・秩父.だが,その西武の隔離政策がために田舎度抜群,東京からの距離の近さで我々をじわじわとひきつけている埼玉・秩父.さて,みなさんは秩父に来て食事はどうするだろう.そば?まあ,妥当かもね.わらじカツ丼?テレビでも見た?
今回紹介するのはファミリーレストラン みのり.味・価格・ヴォリューム共に競争力の高いレストランだと思う.その体験記を...
場所は西武秩父からはやや歩く.299号線の本町交差点から少し秩父鉄道の秩父駅方面に歩いたところ.秩父鉄道の秩父駅からの方が近い.いわゆる宮側町.向かい側に競合する大資本系ファミリーレストラン"J"がある.
赤い看板で大きく“ファミリーレストラン”と書いてある.みのりという字ははっきりいって読めない.正直いって店構えは“えーっ!?”という声が聞こえてもおかしくない.しかし,ショーウィンドウの蝋でできた見本のくたびれ具合は昨日今日のレストランではないことを物語っている.
店内に入る.テーブルが40席,座敷(ファミリーレストランに座敷!?)が30席といったところか.“とりあえず,ともかく飼っているんです!”状態の熱帯魚槽,女性自身系雑誌...むー,隙がない.難をあげるとすれば,必須アイテムおみくじがテーブル席にはないことだ.あってもお金を入れてひくわけではないが,食事を待つ間“どれくらいひいた奴がいるんだろう?”ガシャガシャ,“レバー壊れてないかな?”ガシャガシャ(その最後のガシャガシャで壊れるときもある.神の怒りだ),などとしていれば食事なんぞあっという間に出てくる.
さて,重要なメニュー情報.何しろ最初はA定食かB定食で決まりだろう.うろ覚えだが少なくともB定食にはとんかつ,そして特製シュウマイ・ソーセイジ・ポテトサラダ・ナポリタン...あとなんだっけな?ともかく洋食てんこ盛り.ライスは正統派カップで型をとって釣鐘形.大人のお子様ランチって感じかな.値段はおよそ900円だったと思う.他のメニューもイケイケだが,B定食に圧倒されて記憶が薄い.ともかく,競合する大資本ファミリーレストランと違うのは...すべてだな.素材も違うし,手間暇もかかってるし.まぁおいしいですよ.
その他:ポイントが高いのはお茶が出ること.フロアーは奥さん(?お姉さん?いや言いすぎだな.おばさん?怒られるかな?)が一人でしきっている.とてもにこやかで気がつく(つかないこともあるけど).競合する大資本ファミリーレストランの様に訳わからないアルバイトじゃない.禁煙とか分煙という概念はまだ秩父に伝わっていない様だ.車で行ったらどうするのか?駐車場あり.道をはさんで向かい側.
ともかく!ファミリーレストラン・みのりのファミリーレストランはお客がファミリーということではないと思う.料理を作る側がファミリーで手間暇かけて作っているという感じ.
絶対今後贔屓にする!だっておいしいもん.
皆さんも騙されたと思って...
公式ホームページはこちらなのか,こちらなのか.

| | Comments (164) | TrackBack (1)

April 27, 2010

FreeNAS で家庭内ファイルサーバー(下)

で,インストールに入るわけだが,一応ここが公式 FreeNAS のページ,って言っているうちに version が 0.7 から 0.7.1 に上がった.USB メモリーでインストールできるようにも書いてあるが,小生の場合うまくいかず, CD に焼いてインストールした.インストール自体はまさにインストールして IP アドレスを設定して(この設定がうまくいっているかどうかはコンソールで作業しているうちに何回かリブートして確かめた方がいい), NIC がきちんと認識されているか確かめて...ぐらいであろう.
前編で書いたように,今回のシステムでは 160 GB の HDD がシステム用なので,スワップに 1 G 割くとして,残りをすべてシステム用にしたいのだが, 159 GB を割り当てるとどうしてもエラーになる.で,結局, 10 MB だかの使わない領域を残してインストールを終了した.
さて,設定だが,データ用のディスクをフォーマットしたりマウント設定しなければならない.ここから少し恒例の見にくいスクリーンショットを混ぜつつ記す.最初に“ディスク | マネージメント”かな?Manage_diskで,右下のプラスマークをクリックしてディスクを追加していく.どうも fake RAID のディスクだと RAID としてのディスクデバイスのほかにベアドライブのデバイス名もでてくるようなので注意が必要だ.Manage_disk_edit編集画面は特に注意することはないだろう.
そうしたら次はマウントポイントの指定かな?正直順番はよく覚えていない.多分大丈夫だと思う.ディスク | マウントポイント | 編集で追加していく.Moutpointここで注意すべきは“マウントポイント名”ってのがマウントしたディレクトリ名になる.ちなみにマウント元のディレクトリは /mnt だ.だから,マウントポイント名に backup って指定するとそのマウントしてディスクの一番上位のディレクトリは /mnt/backup になる.パーティションタイプは説明にあるように素直にデフォルトにしておこう.
あとは,フォーマット?ここは UFS でかたっぱしからやっていこう.システム領域はフォーマットしないように.(あ,できないのかな?)Format
スワップの有効化は,システム | 高度な設定 | スワップ,から.Swap
ここからはサービスの設定.最初に使うサービスとディレクトリ構造を記す.

/mnt - /main - /euda (nfs) - /scan (ftp)
/hiroshi (afp) - /scan (/mnt/main/euda/scan に symlink)
/misae (afp) - /scan (/mnt/main/euda/scan に symlink)
- /backup (for backup 非公開)

最初に ftp の設定. ftp なんてレガシーなんだけど,うちの複合機のスキャナーが ftp でしか画像を吐かない.ので,ユーザー scan とグループ scan を作る.シェルは nologin ホームディレクトリは /mnt/main/euda/scan .ユーザー scan はグループ ftp にも所属させる.ディレクトリも掘っておく. /mnt/main/euda/scan は chown scan:scan なはずだが,現状なぜか root:wheel (謎).パーミッションは 0777 (じゃないとスキャンした人がそのまま画像を置いていくためファイルサーバーが画像だらけになるのでってのもあるし,シムリンク張っているので 0755 とかだと父さん母さんが読めない).Ftp1
サービス | ftp で設定を簡単に. Anonymous ftp ではないので,ローカルユーザーのみにチェックを入れる.Ftp2それから, umask は先に述べたように誰でも書き込み可能なのでみんな 000 にする. chroot はデフォルトでオンになってるかな?あとは癖なんだけど,パッシブモードがふんだんにポート番号を要求するのが納得いかないので 60000 番以上に制限している. ftp はこれでおしまい.
afp .まず,ユーザーを作る.先の画面でグループ macgroup とユーザー hiroshi と misae を作る.各ユーザーは macgroup に所属.ディレクトリ /mnt/main/hiroshi と同 misae を作る.オーナー情報を正しく設定し,パーミッションは 0755 . hiroshi と misae の下に /mnt/main/euda/scan へのシンボリックリンクを張る.
サービス | afp で afp を有効化.ゲストログインは不可. misae は OS9 ユーザーだが, appletalk も必要ないのでその下もチェック.Afp1で,各ユーザーごとに共有ポイントを作っていく.設定したのは名前(ヴォリューム名)とマウントポイントぐらいかな.Afp2
クライアントサイドのオートマウントの設定はここで書いてもいいのだけど,この記事が膨大な長さになる予感がするので,参考にしたサイトのリンクを貼るにとどめる.
あとなんですか? nfs ですか.えーと, nfs もサービス | nfs でサービスを起動.共有ですべての項目を埋めていく.それでOK.Nfs
で, nfs をオートマウントしたい. nfs を導入したのは, Ubuntu で NAS から音楽データを引っ張り出して楽しみたいというのが発端. smb だと rhythmbox で楽しめない.みたいなのだ. smb の autofs もすんなり動かないし...
で, nfs と autofs を組み合わせて...ってこれはほとんど Ubuntu の help サイトを参考にしたのだが,素直には動かなかったので一応記す.最初に autofs パッケージをインストール.
$ sudo apt-get install autofs

その結果生成される /etc/auto.master に以下の一行を追加
/nfs    /etc/auto.nfs --ghost

(ghost オプションがないと動かなかった)
/etc/auto.nfs を作り,そこに以下の一行を加える.
freenas freenas:/mnt/main/euda

/etc/hosts にホスト: freenas と IP アドレスを紐付けるエントリーを追加.
これで再起動すれば, /nfs/freenas に nfs マウントした内容がマッピングされる.このディレクトリ以下に音楽ファイルがあれば rhythmbox でも banshee でも NAS からのデータで音楽が聞けるという寸法.
最後にバックアップディスクも買ったので,その設定を簡単に...
バックアップスクリプトは超簡単. /mnt/main を tgz にして /mnt/backup に吐く.今のところディスクに余裕があるのでスナップショットで rotate してもいいのだが,スクリプト考えるのがわからないか面倒.
#!/bin/sh

tar czvf /mnt/backup/backup.tgz /mnt/main/


これを cron で回す. cron job ってのは設定が面倒くさそうで小生がもっとも忌み嫌うものなのだが, FreeNAS は GUI の画面があるのでデキタ!Cron

以上です.

| | Comments (51) | TrackBack (0)

April 26, 2010

FreeNAS で家庭内ファイルサーバー(上)

我が家ではにっくき Linkstation(弊ブログの参照リンク)を使用していたのだが, NFS 共有をしたくなった.手軽に行うのであれば, Netgear のベアボーンを使う手もある. Debian ベースらしいし.でも,ネットワーク系の外資は撤退したりするので少し心配.と,いうわけで, FreeBSD ベースの NAS に特化した opensource な FreeNAS を使って,自作 NAS を作った.
ハード的なスペックは
・ HDD は 2.5" の現状ほぼ最大容量である 500 GB を,メインが RAID 1 (?:ミラーリングのやつ),バックアップにもう一つ 500 GB.
・ 噂の Atom とメモリーは 512 MB ぐらいか?
サービスは
・両親がマカーなので afp サービス.
・小生が nfs したいので(理由は後述),そのサービス.
・ネットワークスキャナーが必要とする ftp サービス.
・毎日メイン HDD のデータ領域をまるごと tgz にして,バックアップ HDD にコピーしてくれる cron ジョブ.
ってとこかしら.
まあ,検討しながら思いついたのだが,メインボードが Gigabyte の GA-D510UD . Atom で dual core で 64 bit .今考えれば小生のデスクトップよりオーバースペックな感じ. Onboard RAID (のちにわかるが Fake RAID というものらしい).グラフィックはオンボードだけど Intel のこじんまりしたもの. ION とかではない.
ケースは,コネコだのカカク・コムだので ITX のケースを検索しまくって,スペックにあう最小容量のものを選んだ.それは, In Win の BM648 だ. In Win は作りはちょっとちゃちいけど結構ニーズをつかんでいてこれからのしてくる台湾メーカーなのではないかと思う.フットプリントといい高さといいかなりいい感じ.ただし,内部アクセスはかなり厳しいことを覚悟しなければならないだろう.
HDD は平凡に日立の 2.5 inch を中心にしたが,ドライブベイに余裕があるので,システム用 160 GB (2.5 inch),データ用 500 GB (2.5 inch) x 2,バックアップ用 500 GB (3.5 inch) とした.
あとは,メモリー 512 MB ノーブランド. zfs 考えたら 1 GB でもいいみたい.
いくらかかったかというと,
マザーボード: 9800 円(テクノハウス東映)
3.5" 500 GB: 4780 円(同上)
2.5" 160 GB: 3980 円(同上)
2.5" 500 GB: @6570 x 2 = 13140円(同上)
メモリ 512 MB: 1180円(Ark),PC2-6400
ケース:5980 円(テクノハウス東映)
3.5"/2.5" 変換マウンタ: 980 円(T-Zone)
SATA ケーブル類: @368 x 4 = 1472 円(クレバリー)
SATA 電源変換ケーブル: @220 x 3 = 660 円(千石電商)
足し算すると 41600 円ちょい.上記はケーブルの数を間違えて買い物したのでもう千円ぐらい使っている.
釣果はこんな感じ.010
袋を開けたところ.011
マザーボードは標準的な大きさだが,必要なものはすべてオンボードで揃っている.時代も変わったものだ.012
マウンターはしっかりしたものがほしかったのだが,なかなかなくてようやく T-zone で発見. Ainex なんだけど,海外製みたい.放熱は大丈夫かと思ったら,それ以前にこんな告知がある.ヤバい.もうケース開けるの面倒くさい.013
まあ,というわけで,ハードの設定は完了.あとはインストールなどだ.

| | Comments (98) | TrackBack (0)

April 21, 2010

ONKYO SE-200PCI にマイクをつなげて Ubuntu で動かそうとしたときはまったこと

前にもこのデバイスのことについては書いたが,また一苦労したので一口メモ.
表題のとおりパソコンに Ubuntu 9.10 をインストールしてマイクを動かそうとしたら鳴らない.結局は他のデバイスも動かなくて Linux 化は断念したのだが...だからうろ覚え.
困ったときは root 権限で alsamixer を起動する.ここで,入力がマイクになっていないのだ, [F4] キーを押して左側の項目(項目名失念)を覚えて,確か [F1] キーで戻って先の項目の入力を mic に矢印キーか何かで修正する.入力レベルも [PgUp] キーか何かで修正する必要があるかもしれない.これでマイク入力ができるようになる.ソースを "mic" ではなく "mix" にすると,チャットしているときマイクの入力とともに,後ろで演奏している音声を混ぜて出力することができるという噂.糸口はこちらの方のブログだ.
ちなみにこのサウンドカードは Windows 環境でも Skype で苦労する.解決策をネットで見つけたのだが, Skype の設定だかオプションで Skype がマイク入力を自動設定するというようなチェックボックスがあるのだが,これをオフにする.そして,添付のサウンドツールか Windows のミキサーで適当に設定して, Skype ではいじらずに起動する.音量は最大にする必要がある.これでうまく行くと思う.
これが VIA Envy24HT を積んだすべてのサウンドカードに当てはまるのかは不明.

| | Comments (36) | TrackBack (0)

March 17, 2010

Ubuntu で市販の DVD 見れるようにした

前回の記事はとても不評だった.がっくし.もう,モデムなんて時代じゃないというのもあるかもしれない.
で,また, Ubuntu Documentation の丸写し.小生の場合,以下のようにした.
ヴァージョンはなぜか 8.10 .これ以上にすると ThinkPad のヴォリュームのホットキーが動かなくなるのだ. 8.10 の期限が切れて次の LTS でもなおっていなかったら 8.04 に戻すことも辞さない.
肝心な本題.
libdvdcss2 をインストールすることが必要らしい.そのためには 8.10 では以下のインストールと操作が必要.

$ sudo apt-get install libdvdread3 gstreamer0.10-plugins-ugly

を CUI か GUI (Synaptic) で行う.
$ sudo /usr/share/doc/libdvdread3/install-css.sh

をターミナル(端末)で実行.
で,プレイヤーをどうするかだが,小生は totem-xine を選択.
$ sudo apt-get install totem-xine

何かと異論はあるかもしれないが, DVD をセットして自動再生的に totem-xine を選べばいいので小生は満足.
他の DVD はうまく言ったがウォンカーワイの恋する惑星だけがうまくいかない.ひょっとしたら regionset かもしれない.
8.10 以外については上記リンクを参照のこと.
上記リンクは region code についての記述があるが,リージョンコードをクラックすることについては書いていない.
本稿を書くにあたり, google してみたが,どうも記述が古い記事が多いようなので書いてみた(こっちの方が古かったりして).

| | Comments (128) | TrackBack (0)

March 15, 2010

ThinkPad X60s の内蔵モデムが Ubuntu 8 系で動きました

もうこれは既知の話かもしれないけど...私のウォッチする限り,ノートパソコンの内蔵モデム:いわゆるソフトモデムはぷろぴろぷらいたりぃの問題で動かないというのが常識だったように思われる.だが,今回チラッとネットを見たら動かせますよ,みたいな話が出たみたいなのでやってみた.ほぼ確定的に動くと思う.
本稿で触れているのは ThinkPad X60s と Ubuntu 8.04,8.1 のみだが,以下注意を考慮すれば他のハードで動く可能性もある.
また,本稿は Ubuntu documentation の DialupModemHowto のほぼ丸写しである.英語に抵抗のない方はそちらを参照されたし.
まずは scanModem プログラムでモデムハードの確認である.(ThinkPad X60s を使っている人はこの節をスキップして構わない.)ダウンロードは Linmodems support page から行う.ダウンロードしたら適当なディレクトリに保存して,書庫ジャーマネで解凍して,実行権を付与して実行しよう.そうすると,カレントディレクトリに Modem ってディレクトリができる.この中の ModemData.txt を開いてみよう.ログが多いし英語が華麗でなかなかわからないんだけど,この中に Conexant のモデムって書いてあったら X60s 以外でも動く可能性がある.トライしてみる価値はあると思う.
さて, Conexant のモデムを使っていることが確定したら,次のステップだ,これも Ubuntu の DialupModemHowtoConexant の丸写しだ.英語に抵抗のない方はそちらを.ここからはバイナリーではないパッケージを入れるようなので, linux-headers と build-essential 関連のパッケージをいれておく必要がある.各コンパイル済みのパッケージは kernel のヴァージョンがドンピシャであってないと動かない模様.
まずは alsa-drivers の更新. http://www.linuxant.com/alsa-driver/ に飛ぶ. Generic packages with source の deb package を持ってくる.ずばり, URL を言えば http://www.linuxant.com/alsa-driver/archive/alsa-driver-linuxant-1.0.20.3/alsa-driver-linuxant_1.0.20.3_all.deb.zip 全部, GUI でやってもいいし,気取った CUI 派は

$ wget http://www.linuxant.com/alsa-driver/archive/alsa-driver-linuxant-1.0.20.3/alsa-driver-linuxant_1.0.20.3_all.deb.zip
$ unzip *.zip
$ dpkg -i alsa-driver-linuxant_1.0.20.3_all.deb

でもいい.インストール中にスピーカーマークにバツが出て何か落ちたって言うけど,再起動すれば大丈夫.
仕上げにモデムドライバーのインストール. Conexant のダウンロードページへいって, Generic packages with source から tar 玉を落とす.フルパスでいうと http://www.linuxant.com/drivers/hsf/full/archive/hsfmodem-7.80.02.05full/hsfmodem-7.80.02.05full.tar.gz .また, Dell のページへいって, files - ubuntu - hardy - modem-drivers - hsf から,また tar 玉を落とす.フルパスでいうと http://linux.dell.com/files/ubuntu/hardy/modem-drivers/hsf/hsfmodem-7.68.00.09oem.tar.gz .で,二つの玉を解凍して以下の操作をする.玉を落とすところからコマンドを並べれば,
$ wget http://www.linuxant.com/drivers/hsf/full/archive/hsfmodem-7.80.02.05full/hsfmodem-7.80.02.05full.tar.gz
$ wget http://linux.dell.com/files/ubuntu/hardy/modem-drivers/hsf/hsfmodem-7.68.00.09oem.tar.gz
$ tar xzf *.tar.gz
$ rm -r hsfmodem-7.80.02.05full/modules/imported
$ cp -R hsfmodem-7.68.00.09oem/modules/imported hsfmodem-7.80.02.05full/modules/
$ cd hsfmodem-7.80.02.05full
$ sudo make install
$ sudo hsfconfig

また,この途中で alsa かなんかが落ちるが,再起動すれば大丈夫.筆者はこれで pon してモデムがダイアルするところまで確かめた.多分動くだろう.これで,重い外付けモデムを持ち歩かなくてすむ.すっきり.
ちなみに, Ubuntu 9 で前掲のリンクのとおりにインストールしたら動かなかった.

| | Comments (82) | TrackBack (0)

February 14, 2010

ThinkPad X60s で SDHC

Lenovo の ThinkPad X60s.
SDHC が動かないのかと思っていたが,試しに上海問屋のエバーグリーン, DNF-SDH の 4 GB をぶち込んだら認識した.
OS は Ubuntu の 8 とか 9 とか.

| | Comments (62) | TrackBack (0)

February 08, 2010

ONKYO の SE-200PCI サウンドボードと SoundBlaster AWE64 gold のマイクでゲインが悪い・ノイズが入るの巻

Blog なので筋道立てて書く必要もないだろう.時系列で書く.急いでいる人は最後の“結論”のところを見て欲しい.
そもそも発端は表題の通り, Skype でマイクのテストをしていたところゲインは悪いしノイズが入るのでおかしいと思った次第.
ネットで調べてみると, SoundBlaster AWE64 gold に付属しているマイクは ECM (エレクトレット・コンデンサー・マイクロフォーン:プラグインマイクともいう)で,チップが信号線,リングに AC 5 V,スリーブがグラウンド と書いてある.(実はこれがガセネタだったわけだが...)チップ・リング・スリーブについては Wikipedia を参照.
どうしようかと考えた.まず, AC 5 V は USB の電源が約 5 V なので,そこからとることにした.
まず,秋葉原に行って部品屋でモノラルミニプラグとステレオミニジャック・ USB 端子を買ってきた.そのついでにひょいと見かけた部品屋で“こうこうなんだけど...”と聞いたら,“駄目駄目,それはこれこれのボックス(1900円ぐらい)を買ってつなげないと”と言われた.1900円は高いのでそのまま帰宅.
モノラルのスリーブ・ステレオのスリーブ, USB の GND 端子を短絡.ステレオのリングと USB の 5 V を短絡.モノラルとステレオのチップを短絡してつないでみたが,全く音が出ない.さっきの 1900円の部品屋さんの言うことが気になる.再びネットで調べる.
そこでわかったのは,ただ結線してもだめだということ.1900円の言うとおりだった.回路を組まなければいけないらしい.へとへとになって出てきたのは,トラ技の回路図
再び秋葉原に出向き,サンハヤトのユニバーサル基板の一番小さいやつ,抵抗 2.2 k x 2,コンデンサー 100 microF と 10 microF などなど買ってきた.秋葉原のガード下で買ったら,抵抗は金属皮膜って言ったのにカーボンだし,コンデンサーはプラスチックフィルムって言ったのに電解コンデンサーだし,ちょっとがっかり.
帰ってきて早速とりかかった.釣果はこの写真.003ユニバーサル基板は紙フェノールだったのでカッターで切り目をつけてパキっといった.配線は UEW 線というのの一番細いのを買った.ちょっと扱いにくいけど結果的には便利に配線できた.半田ごてはコテ先が太いので苦労した.この半田ごては昔 Apple II を組み立てるのに使ったものだ.配線ピッチはどんどん狭くなっているのだろうか.
基板が写真の通りで完成.004裏側はハンダ付けがヘタクソでとてもではないけど見せられない.
でも,でも鳴らない.一切音がでない.またネットで調べる. まず,秋葉原の部品屋でステレオジャックのピンアサインをきいて買ったのだが,なんかマル信さんの pdf を見ると違っているような感じ.メールアドレスがのっているのでメールで質問したら,こんなにくだらない質問に返答をくれた.さすが一流企業.また, AC 5 V からくるところの抵抗はマイクのインピーダンスと同じ値にするというので 620 k の抵抗を検討する.また, AC 5 V から GND に落としてやるところのコンデンサーは pF オーダーがいいというので 10 micfoF とか 2.2 microF を検討.また,マイクの信号線のコンデンサーは 2.2 microF でもいいというのでそれも検討.以上をもってして秋葉原に再出陣.ついでに果たして回路がまともなのかを検討するために秋月電子通商で見つけたコンデンサーマイクを.抵抗だのコンデンサーだのは千石電商で買った.ここは棚にきちんと並べられていて買いやすい.オーディオ用の金属皮膜抵抗とオーディオ用電解コンデンサーがあった.
コンデンサーマイク素子は先のリンクにあるとおりだが,写真もアップ.001まずこのマイク素子を最初に作った基板にくっつけてみる.これで動けば最悪このセットで運用することにしようと思う.
で,結果写真のような格好になった.002パソコンにつけて Skype のテストをしてみる...うーん,額面通りのイケメンの声が聞こえる.ちゃんと動くんだ.じゃあ,保険としてこれを作っておこう.と思う.まず,基板むき出しではナニだから,ケースに入れる.丁度いいケースがないが,引き出しをあさるとライターが入っていたケースが出てきた. Givenchy だ.ケースを加工して入れてみる.005なんかちょっとやだ.
肝心な SoundBlaster のマイクだが,抵抗値を変更しても,コンデンサーの容量をいじっても全く音が出ない.全くでないというのはおかしいと思う.また,直流抵抗をはかったのだがチップとリングが短絡していることが判明.夜寝てから,ひょっとしてコンデンサーマイクじゃなくってダイナミックマイクなのではないか.とふと思う.
ハンダ付けが下手なのと配線を繰り返しすぎて各コネクターがグラグラなので再調達するために秋葉原に再出陣.
また,ちょっと格好をつけるためにタカチのユニバーサル基板とプラスチックケースを購入することとする.タカチのものは前にマルツで買ったが今回はエスエス無線(お店はいいのだけどウェブページを開くと midi の演奏で音が鳴るのがいただけない)で購入.線材とかも少し買う.
帰ってきて,まず 1 芯のケーブルでモノラルプラグとステレオジャックのチップ同士を結線.スリーブ同士も結線.これで, SE-200PCI と SoundBlaster のマイクをつないでテスト.結果,良好に音が出る.要するに,不調の原因はモノラルジャックにステレオプラグをぶち込んだので,リングとスリーブが短絡していたということだった.脱力.
せっかく買ったコンデンサーマイクも Givenchy じゃちょっと嫌なのでもう一度一から組み立てることにする.材料は写真の通り.Photoタカチのケースとセットのユニバーサル基板はガラスエポキシの両面スルーホールなので一度ハンダ付けするとなかなか結線が取れない.その代わり片面に比べるとプリントパターンが剥がれにくい.組み立てた状態は写真の通り.(赤黒の線のプラス・マイナスを間違えた)006若干ハンダ付けもうまくなったので裏もちらっと見せる.007ケースに入れる.008完成.まあまあの出来.009
結果として,電気の“で”の字も知らない筆者がちょっとした回路を組むことができたわけだが,ネット上の雑音に振り回されたことも確か.

結論:
1. ONKYO の SE-200PCI サウンドカードで SoundBlaster AWE 64 Gold のマイクを使うためには 2 極のモノラルミニプラグと 3 極ステレオジャックをチップ同士,スリーブ同士で結線して使う必要がある.この心配は 2 極のジャックに 3 極のプラグを接続するときには常に生じる可能性がある.ちなみに SoundBlaster AWE 64 Gold に付属するマイクはダイナミックマイク.
2. ONKYO の SE-200PCI のようなサウンドカードに ECM (エレクトレット・コンデンサー・マイクロフォン) を接続するときには専用の回路が必要.電源が 5 V であれば USB から給電可能.

| | Comments (20) | TrackBack (0)

December 13, 2009

diablo-jdk が FreeBSD 8.0 で,そのままでは動かない件

Portsnap していたら, jakarta-tomcat がなくなって,origin not found とか言っている.ネットで調べるとどうも jakarta-tomcat の port は moved になっていて,何やら jakarta プロジェクトを卒業(?)したみたい.
しようがないので, www/tomcat55 をインストール.それでも動かない.環境変数を設定したりなんなりしたがやはりダメ.
色々みていくうちに, /usr/local/tomcat5.5/log ってディレクトリ発見.そこの catalina.out ってファイルに

Error occurred during initialization of VM
Unable to load ZIP library: /usr/local/diablo-jdk1.6.0/jre/lib/i386/libzip.so

って書いてあるので,これら全部 google のクエリーに入れて検索.
そしたらこんなページが出てきた.曰く, jdk がうまくインストールできない話のようである.
解決案として
/etc/libmap.conf に
[/usr/local/diablo-jdk1.6.0/]
libz.so.4 libz.so.5

と書けばうまくいくと書いてある.
早速そのファイルを使って,
> cd /usr/ports/java/diablo-jdk16
> sudo make deinstall
> sudo make install clean

としてみた.で,再起動.
あら不思議,変な目のネコのページが出てきた.これで一安心.

| | Comments (194) | TrackBack (0)

«すごいぞ!新橋ステーションバーバー