謎のint(10)

前任者が作ったデータベースに日付を格納する date つーフィールドがあって、なぜかそこに10バイトものサイズを割り当てているのが謎だった。

今まで作られているデータベースが全部そういう感じなので、何か深遠な理由があってそうなっているのかなと、わしも深く考えず前例に習っていた。

今日、テーブルを眺めてて、tel1 tel2 tel3 などと電話番号を3分割してあって、、それに tinyint(5) とかそれぞれ割り当てられているのだが、 127 127 とか、明らかにやっちゃった感のある16進数的に非常にありがちな数値が入っている。

また、郵便番号も zip1 zip2 と分割されていて、tinyint(3) tinyint(4)なんて割り当てられている。

tinyint は多分1バイトで signedで-128~127 の値を取るので 127よりも大きな「数値」をぶち込んで、127にされてんだろーなあと想像がつく。

で、tinyint で確保しているバイト数には何の意味があるのかと思えば、ああ、なるほどね。mySQLでフィールドを作る時に割り当てる数字を実際に使用する桁数だと勘違いしてんだな。

だから、php の time() の数字をぶっこむ date ってフィールドに32bit処理系ならunsigned の4バイトで十分なところ、10桁のつもりで、10バイトもの広大な領域を割り当ててんだな。

なぜmySQLで 1バイトしか使わないのにそれ以上のサイズ割り当てが できるようになっているのかというのは、処理系によっては奇数メモリアドレスアクセスでクロック数を食ってしまうペナルティがあるので、恐らく、それを回避する為にバイト境界が変えられるようにしてある気がする。

バイト境界とかその辺の概念が無い場合、VARCHARみたいに文字数を設定するって勘違いしても不思議では無いが、「過去のソフトウエア資産」がこういう感じで、ライブラリに実績があり、正しいという前提条件でプログラムを組むと、酷い目に遭う訳だな。

Hauppage WinTV PVR USB2のラジオ

Linux でラジオ聞く方法をずーーーーーっと調べていたが結局分からず。
こうなったら試行錯誤ナリ。

WinTV PVR USB2はハードウエアエンコーダー搭載で、映像は音声付きのmpegストリームが、/dev/video1 (わしのノートPCはカメラが付いているので、こうなる)から読み出す事ができる。

mplayer /dev/video1
とやると、ちゃんとCompositeの映像が音声付きで出てくる。

という事は、音声もPCMではなく、mpeg?
という事で、

ivtv-radio -f 89.4 -d /dev/radio0 -i /dev/video1 -c “mplayer %s”

と、mplayerに出力を渡してやったら、 α-station が聞けた。
別の端末開いて、

ivtv-radio -f 77.0 -j -g

とやると、E-Radioも聞けた。-g オプション付けると、別の局に変えたい時に周波数を打ち込めば変えられるので多少操作性が向上する。

WinTV PVR USB2付属のラジオアプリだと、84MHzあたりが最低周波数なのだが、ivtv-radio で周波数をセットしてやるとちゃんとその下の周波数もチューニングできる。

これで radiko でエリア外の為に聞けないα-stationがパソコン操作で聞けるようになった。でもノイズレスのクリアな音声じゃないけど、ふとFMラジオが聞きたい時に席から遠くにあるラジオを操作するのが面倒くさいから、これはわしにとっては大きな効用なんだな 🙂

【Ubuntu 11.10 64bit】システム音が鳴らぬ

おととい、Mynthtvでスカパーを視聴しつつ、Firefoxで動画サイトを開き、flash playerが起動した途端、音が消えた。

再起動しても音が出ず、サウンド設定を見てみると、音響効果タブの音量がミュート、出力が「内部オーディオアナログステレオ」では無く、「Manhattan HDMI Audio[Mobillity Radeon HD 5000 Series] Digital Stereo (HDMI)」になっていた。

なぜこの設定が変わってしまったのかさっぱり分からないが、出力を正しく直したら、音が出るようになった。しかし、ログイン時の音など、システムの音がSkypeやEmpathyの音も含め、ミュートを解除しても全く出なくなってしまった。

検索しても、~/.local/share/sounds に /usr/share/sounds以下の音ファイルをコピーするってのがあり、一応、~/.local/share/sounds/__custom ってディレクトリ作って音源ファイル入れてみたが、本質的な解決になってないので消した。

で、例によって英語圏へ探索の手を伸ばしてみると、ズバリ同じ症状の例があった。
theme_name が freedesktop になってしまうのも全く同じ。でも解決に至ってない。

まあ、何かヒントになるかもしれないと、 gconf-editor で /desktop/gnome/sound/theme_name を ubuntu に書き換えても、サウンド設定の音響効果のタブで、「デフォルト」以外を選択すると、なぜか __custom って設定になり、デフォルトに戻すと、 freedesktop に戻されてしまう。

__customってのは消してしまったから無いのだが、なぜ????

おそらく、どこかに候補を作っていて、その中からこの freedesktop というのが設定値として選ばれるのだろうが、その候補がどこに格納されているのやら分からない。

ゲストセッションでログインすると、ログイン音は鳴るので、gnome の個人設定に致命的な不具合があるのは確実なのだが、どこに格納されているのやらさっぱり分からない。

ログイン時の音の再生で、
/usr/bin/canberra-gtk-play –id=”desktop-login” –description=“GNOME Login”

を実行するが、今までは音が鳴っていたという事は、 /usr/share/sounds/ubuntu/stereo の中のdesktop-login.ogg を読みに行っていた訳で、じゃあ、その /usr/share/sounds/ubuntu/stereo って PATHはどこに記憶されてたの?というのが、さっぱり分からない。

以前の Linux の感覚なら、こういう設定は、特定の場所にテキストファイルに格納されている事が多いから、プログラムの不具合でおかしな情報が書き込まれても、修正は容易だった。

しかし、逆にそれが、良く理解していない人間が無茶苦茶な博打設定をやって、システムを破壊してしまうという事にも成り得た。

それで、「システムを破壊しにくくする為に隠してしまおう」なんて流れで設定箇所が分かりにくくなっているのかもしれないが、システムに不具合があっても簡単に直せなくなってるってのはよろしくない。

とりあえず、ホームディレクトリで隠しファイルも含めて全て調べるべく、
find -exec grep -H “__custom” {} \;

なんてやっているが、ホームディレクトリ以下には膨大な数のファイルがあり、しょうもない不具合の解決の為に膨大な時間を使って検索するってのが馬鹿げている。

で、膨大な時間をかけて検索したのに、
noizumi@purplecat:~$ find -exec grep -H "__custom" {} \;
バイナリファイル ./VirtualBox VMs/Debian6/Debian6.vdi に一致しました
バイナリファイル ./VirtualBox VMs/Ubuntu 11.10 64bit/Ubuntu 11.10 64bit.vdi に一致しました
./.bash_history:rm -rf __custom/
./.bash_history:cd __custom/
grep: ./.googleearth/instance-running-lock: そのようなファイルやディレクトリはありません
grep: ./.dropbox/iface_socket: そのようなデバイスやアドレスはありません
grep: ./.dropbox/command_socket: そのようなデバイスやアドレスはありません
grep: ./.pulse/f22b66f362fa794e71d1f7120000000a-runtime: そのようなファイルやディレクトリはありません
grep: ./.config/google-chrome/SingletonCookie: そのようなファイルやディレクトリはありません
grep: ./.config/google-chrome/SingletonLock: そのようなファイルやディレクトリはありません
grep: ./.config/google-chrome/SingletonSocket: そのようなファイルやディレクトリはありません
grep: ./.mozilla/firefox/dlxj05i8.default/lock: そのようなファイルやディレクトリはありません
./.mozilla/firefox/dlxj05i8.default/Cache/5/B8/1C0CBd01:find -exec grep -H &#8220;__custom&#8221; {} \;</p>
grep: ./.kde/socket-purplecat: そのようなファイルやディレクトリはありません
grep: ./.kde/tmp-purplecat: そのようなファイルやディレクトリはありません
バイナリファイル ./.cache/event-sound-cache.tdb.ebf753585907fe619b4f03770000000d.x86_64-pc-linux-gnu に一致しました

出てこぬわ!

そこで博打設定 🙂
$ rm -rf ~/.pulse

管理者アカウントをもう一つ作ってログイン
$ sudo cp -r ./.pulse /home/noizumi
$ sudo chown -R noizumi:noizumi /home/noizumi/.pulse

~/.pulse の中にはシンボリックリンクがあって、 /tmp のディレクトリにリンクしているので、そのまま再ログインしてもおかしくなる可能性が高い。

$ sudo reboot

自分のアカウントでログインしてみると、Skypeのログイン音が鳴り、サウンド設定で音響効果のタブの音量が0になってたのを直したら、無事音が出るようになった。

gnome のせいかと思ったら、 pulseaudio が悪さしていた の巻

だったでござるよ。ニンニン。

【Ubuntu 11.10 64bit】コンパイルが通らぬ

Intel Turbo boostの状況を見るべく、i7zをmakeすると、

noizumi@purplecat:~/src/i7z-0.26$ make
rm -f *.o i7z
If the compilation complains about not finding ncurses.h, install ncurses (libncurses5-dev on ubuntu/debian)
gcc  -g -O0 -fomit-frame-pointer -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DBUILD_MAIN -Wall -Dx64_BIT -lncurses -lpthread -lrt  i7z.c helper_functions.c i7z_Single_Socket.c i7z_Dual_Socket.c -o i7z
i7z_Single_Socket.c: 関数 ‘Single_Socket’ 内:
i7z_Single_Socket.c:83:14: 警告: 変数 ‘col’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Single_Socket.c:83:9: 警告: 変数 ‘row’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Single_Socket.c: 関数 ‘print_i7z_socket_single’ 内:
i7z_Single_Socket.c:211:13: 警告: 変数 ‘IA32_FIXED_CTR_CTL_Value’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Single_Socket.c:206:13: 警告: 変数 ‘IA32_PERF_GLOBAL_CTRL_Value’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Single_Socket.c: 関数 ‘print_i7z_single’ 内:
i7z_Single_Socket.c:619:9: 警告: 変数 ‘HT_ON’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Dual_Socket.c: 関数 ‘Dual_Socket’ 内:
i7z_Dual_Socket.c:37:14: 警告: 変数 ‘col’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Dual_Socket.c:37:9: 警告: 変数 ‘row’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Dual_Socket.c: 関数 ‘print_i7z_socket’ 内:
i7z_Dual_Socket.c:154:13: 警告: 変数 ‘IA32_FIXED_CTR_CTL_Value’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Dual_Socket.c:149:13: 警告: 変数 ‘IA32_PERF_GLOBAL_CTRL_Value’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Dual_Socket.c: 関数 ‘print_i7z’ 内:
i7z_Dual_Socket.c:570:9: 警告: 変数 ‘HT_ON’ が設定されましたが使用されていません [-Wunused-but-set-variable]
/tmp/ccyXWW18.o: In function Single_Socket':
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:92: undefined reference to
initscr'
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:93: undefined reference to start_color'
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:94: undefined reference to
stdscr'
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:94: undefined reference to stdscr'
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:94: undefined reference to
stdscr'
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:94: undefined reference to stdscr'
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:95: undefined reference to
stdscr'
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:95: undefined reference to wrefresh'
/tmp/ccyXWW18.o: In function
print_i7z_socket_single':
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:114: undefined reference to mvprintw'
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:115: undefined reference to
mvprintw'
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:117: undefined reference to mvprintw'
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:122: undefined reference to
mvprintw'
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:242: undefined reference to mvprintw'
/tmp/ccyXWW18.o:/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:267: more undefined references to
mvprintw' follow
/tmp/ccyXWW18.o: In function print_i7z_socket_single':
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:527: undefined reference to
stdscr'
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:527: undefined reference to wrefresh'
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:543: undefined reference to
mvprintw'
/tmp/ccyXWW18.o: In function print_i7z_single':
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:582: undefined reference to
mvprintw'
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:587: undefined reference to mvprintw'
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:648: undefined reference to
stdscr'
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:648: undefined reference to wrefresh'
/tmp/ccY0TCqr.o: In function
Dual_Socket':
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:46: undefined reference to initscr'
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:47: undefined reference to
start_color'
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:48: undefined reference to stdscr'
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:48: undefined reference to
stdscr'
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:48: undefined reference to stdscr'
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:48: undefined reference to
stdscr'
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:49: undefined reference to stdscr'
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:49: undefined reference to
wrefresh'
/tmp/ccY0TCqr.o: In function print_i7z_socket':
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:185: undefined reference to
mvprintw'
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:211: undefined reference to mvprintw'
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:212: undefined reference to
mvprintw'
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:213: undefined reference to mvprintw'
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:214: undefined reference to
mvprintw'
/tmp/ccY0TCqr.o:/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:215: more undefined references to mvprintw' follow
/tmp/ccY0TCqr.o: In function
print_i7z_socket':
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:488: undefined reference to stdscr'
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:488: undefined reference to
wrefresh'
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:502: undefined reference to mvprintw'
/tmp/ccY0TCqr.o: In function
print_i7z':
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:539: undefined reference to mvprintw'
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:540: undefined reference to
mvprintw'
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:601: undefined reference to stdscr'
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:601: undefined reference to
wrefresh'
collect2: ld はステータス 1 で終了しました
make: *** [bin] エラー 1
noizumi@purplecat:~/src/i7z-0.26$ locate ncurses.h
/usr/include/ncurses.h
noizumi@purplecat:~/src/i7z-0.26$

でも

noizumi@purplecat:~/src/i7z-0.26$ gcc  -g -O0 -fomit-frame-pointer -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DBUILD_MAIN -Wall -Dx64_BIT -lpthread  i7z.c helper_functions.c i7z_Single_Socket.c  i7z_Dual_Socket.c -lncurses -lrt -o i7z
i7z_Single_Socket.c: 関数 ‘Single_Socket’ 内:
i7z_Single_Socket.c:83:14: 警告: 変数 ‘col’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Single_Socket.c:83:9: 警告: 変数 ‘row’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Single_Socket.c: 関数 ‘print_i7z_socket_single’ 内:
i7z_Single_Socket.c:211:13: 警告: 変数 ‘IA32_FIXED_CTR_CTL_Value’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Single_Socket.c:206:13: 警告: 変数 ‘IA32_PERF_GLOBAL_CTRL_Value’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Single_Socket.c: 関数 ‘print_i7z_single’ 内:
i7z_Single_Socket.c:619:9: 警告: 変数 ‘HT_ON’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Dual_Socket.c: 関数 ‘Dual_Socket’ 内:
i7z_Dual_Socket.c:37:14: 警告: 変数 ‘col’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Dual_Socket.c:37:9: 警告: 変数 ‘row’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Dual_Socket.c: 関数 ‘print_i7z_socket’ 内:
i7z_Dual_Socket.c:154:13: 警告: 変数 ‘IA32_FIXED_CTR_CTL_Value’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Dual_Socket.c:149:13: 警告: 変数 ‘IA32_PERF_GLOBAL_CTRL_Value’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Dual_Socket.c: 関数 ‘print_i7z’ 内:
i7z_Dual_Socket.c:570:9: 警告: 変数 ‘HT_ON’ が設定されましたが使用されていません [-Wunused-but-set-variable]
noizumi@purplecat:~/src/i7z-0.26$

こうやれば通る。

Makefileの中に指定してあるオプションをコマンドラインで打ってやれば、コンパイルが通り、Makefileだと ncurses のライブラリが見つからないとぬかしてシンボルエラーが出まくる。

i7zの場合は、issue に全く同じ症状の人が居て、根本的な解決法になっていないが、一応、動作するものができたが、xawtv4のビルドでも、リンカで必要なライブラリが揃っているのにリンクできないという同じ症状が出ている。

xawtv4の場合は関連ファイルが多いから、一々、コマンドライン手打ちでやってられぬ。そもそも make はそういうコマンドライン手打ちを一々やらない為のシステムで、本末転倒じゃ。

これだけおかしな状況になってるのに、検索しても余り騒いでいる人を見かけないが、わしが時代に取り残されておるのかのう。

Hauppauge WinTV PVR USB2

Amazon USに新品残り1個だったので衝動買い。

LD-BOXとか捨ててしまうには惜しいアナログメディアがあるので、デジタル化しようと思い、アナログTVキャプチャ、ハードウエアエンコーダー搭載でUSBで、Linuxで使えるヤツという非常に厳しい要件を満たす数少ない製品を探した。

見つけたのがWinTV PVR USB2で、新製品にデジタルテレビ用のものもあるらしいが、2万円弱もするし、どうせデコードしてキャプチャに食わせないといけないし、地デジチューナーは持ってないから、アナログ用でOK

mythtv でコンポジット出力のアナログスカパーとかのテレビを観れるようにはなったけど、いかんせん、日本語の情報源が極めて少ないので、xawtvとか、ラジオチューナーからラジオを聞くとかの制御が成功していない。

ところで、このキャプチャデバイス、mythtvで録画すると、「録画できません」って番組の録画できるのねん 🙂

EPSON PX-403A

Amazonで買ったデジタル複合機PX-403A(\3,852)が届いた。

筐体は白いプラスチックで、PP(PreProduct)品に艶出しコーティングをしただけの様な感じで、安っぽく、玩具みたい…。

コストダウンに凄い努力をしている事が伺われる。が、可動箇所が多いので、輸送時に傷にならない為のビニールコーティングとテーピングが半端じゃない。この部分は検討の余地あり。

で、インクカートリッジを装着して、Ubuntu 11.10 64bitにUSBでさっくり繋いだら動くかな?と思ったら甘かった。

一応、Linux は USB に新たな周辺機器を接続すると、自動でドライバをシステムに組み込む機構があるのだが、PX-403Aはドライバが無かった。

一覧から似たようなプリンタを選ぶかなと思ったが、ふと検索してみると、アヴァシス株式会社に PX-403A の Linux用ドライバがありやがりましたよ 😀

この会社って昔はエプソンアヴァシスって社名だったような気がするが、社名変更か、資本移動でもあったのかな?まあ、それはサテオキ。

PX-403Aは複合機なので、オールインワンの中からこのページ
epson-inkjet-printer-201103j_1.0.1-1lsb3.2_amd64.deb
をダウンロードし、Ubuntu ソフトウエアセンターでインストール。

で、プリンタの電源入れ直したらプリンタが認識され、テストページも問題無く印刷できた。印字品質に拘りは無いが、pixus 80i と大差無い気がするな。

そういえば、PX-403Aは複合機だからスキャナとしても使えるのだが、スキャナドライバを探してみたら、オールインワンのページの下にImage Scan! for Linux ってのがあった。

データパッケージ
iscan-data_1.11.0-1_all.deb
PX-403用64bit[libltdl7]コアパッケージ
iscan_2.27.1-4.ltdl7_amd64.deb

インストール方法
userg_revO_j.pdf

をダウンロードして、PDFを見ながら、Ubuntu ソフトウエアセンターでインストール

PX-403Aの電源再投入でスキャナとして認識され、インストールした Image Scan! for Linux はdashホームからだと、「グラフィックス」の絞り込みでアイコンが出る。

ペンギンがイカす!

取り込みはpngで、300dpiだと結構高速に取り込んでくれる。

1200dpiとかやると死ぬほど遅いが、万単位のピクセルになるし、画像ビューワーで見たらギガ単位でメモリ食うので充分死ねる(笑)

わし的にPX-403Aは大満足。複合機で3,852円という超激安なのにこの機能とLinuxへの気合の入れっぷりが気に入った。3万円位出して買っても安すぎるという感じすらする。

Linux 環境だと、インク残量が分からないのは残念だが、製品の機能をソフトウエアがそれなりにハンドリングしてるというだけで感動するな。

pixus 80i のサービス エラー 5C00

pixus 80i の電源を入れたら、盛大にギヤが空回りするような音がして、印刷可能状態にならなくなった。

Linux のプリンタ設定は済んでいて、以前は順調に印刷できていたが、残念ながら、プロパティからインク残量やプリンターの状態取得ができない。

そこで、VirtualBox の guest OSの Windows 7 Professional にUSBを渡してやって、プリンタドライバをインストールし、状態を見てみると、表題の通りとなった訳だ。

Web検索すると、これはサービスセンターに送って修理メンテナンスして貰う様なものらしい。

pixus 80iはヤマダ電機で3万円位で買ったと思うが、デフレの世の中だし、3万円位だと、修理に出すより買った方が安いという事もある。

最近のプリンタ相場は知らないので、「新しいプリンタは幾らかな?」とAmazonを検索してみた

EPSON Colorio インクジェット複合機 PX-403A \3,852 !?

さんぜんはっぴゃくごじゅうにえん?…

マジデスカ!?

ちなみに、純正のカラーインクカートリッジが \3,372 で480円高いだけ。インクカートリッジとほぼ同じ値段の印刷もスキャンもコピーもできる複合機って、デフレし過ぎだろ!

こりゃ、日本の製造業も潰れるわな。

スマートフォン

「スマートフォンを持たざれば人にあらず」

みたいな事を言ってる輩が居るのだが、スマートフォンってかなり昔から発売されてて、W-ZERO3を持っていたわしからすれば、「今時スマートフォンかよ!?」って感じ 🙂

まあ、それ以前に携帯端末の開発部隊に居た10年前から「小さい画面は使い物にならぬ!」と思っていて、その結論は今も変わっていない。

そもそもこれが「仕事に使える」なんて言う輩が信じられんのだが、画面が小さくてまずソースコードのアルファベット識別が非常に困難。無理にソース書いても間違いが分かりにくく、不具合の拡大再生産をするから非常に非効率。

タッチパネルで文字入力するより、キーボードの方が10倍は早いし、これも使わない方がマシのレヴェル。

こんな非効率な使えないパソコンモドキなんて子供のおもちゃとしてはいいかもしれんが、いい歳した大人がうれしそうに使うようなもんじゃない。

まあ、道具というのはそれを使う人間の能力に大いに依存するものだが、スマートフォンはWeb閲覧には使えない事も無いだろうが、開発者がソース書くのに使えるなんて抜かす輩は、どれだけ今まで非効率でダラダラと余計な時間かけて仕事してたんだ? と問いたくなるな。

消えたメール

Yahoo!メールに送ったメールが消えた。

客の依頼で、Yahoo!メールに送ったメールが迷惑メールフォルダに入るようになっているので何とかしてくれと言われたので、調査の為にYahoo!にアカウントを作ってテストしたのだ。

サーバーのログで、Yahoo!のMTAが250の応答を返したところまでは確認できているが、そこから先がどうなったのか分からない。

レンタルサーバーのMTAから送ったのだが、色々調べると、そのIPアドレスから送ったメールは、ヘッダに大量送信者のマークが付けられていて、送ると必ず迷惑メールフォルダに分類されるが、先に送ったメールは、全く届かずに消えてしまったのだ。

考えられるのは、大量メール送信者としてマークしているMTAから、To: やSubuject:が空のヤツは問答無用に削除するみたいなロジックで動いている事が予想される。

消えたメールを送った時は、telnet で smtp 叩いて送ったので、To: と Subject: が空だった。

で、Yahoo!メールカスタマーサポートに問い合わせてみると、
メールの設定はちゃんとしてるのか?とかユーザーを馬鹿にするマイクロソフト臭がプンプンする定形文を返してきやがった。

こっちはログ添付してんだから、Yahoo!のMTAのログ見たらすぐ分かる話だろうに、そんな簡単な事もやらずに「どうせお前が馬鹿な設定やって、メールが迷惑メールフォルダに入ってんのに気づいてねーんだろ?」と言いたげな定形文を返して来る。

まあ、確かに実際にメールが消えるのを見るまでは、「Yahoo!メールでメールが届かない」なんて騒いでいるのは、ユーザーが迷惑メールフォルダに入ってるのに気づかないというパターンだろうと思っていたし、問い合わせのほとんどがそういう場合が多いだろう。

しかし、ログが添付されているってのは、そこから消えたメールを追跡できるのだから、通常の定形文の対応ではマズいという状況判断をせんといかんね。

まあ、最近、状況判断、状況分析能力が著しく低い人間を良く見るので、別に驚きもせんが 🙂

まあ、Yahoo!メールは、勝手にメールを捨てる事もあるから、メールが届かない事もあるよってのを覚悟して使うにはいいかもね。わしは絶対使わんけどな 🙂

Ubuntu 11.10

11.04のアップデートマネージャからサクっとアップグレード。

環境的には余り変化が無い。

Skypeがタスクバーに入らなくなるとか、conky のcoretempのパラメータを書き換えないと動かないとか、日本語フォントが見にくいとかあるけど、今までとほぼ変わりなく使えている。

kernel が 3.0 になったので、dkms 関係をキッチリしとかないといけない。

noizumi@purplecat:~$ dkms status
bcmwl, 5.100.82.38+bdcom, 2.6.38-11-generic, x86_64: installed
bcmwl, 5.100.82.38+bdcom, 3.0.0-12-generic, x86_64: installed
cdc-acm, 2.6.38-8, 2.6.38-11-generic, x86_64: installed
cdc-acm, 2.6.38-8, 3.0.0-12-generic, x86_64: installed
fglrx, 8.881, 2.6.38-11-generic, x86_64: installed
fglrx, 8.881, 3.0.0-12-generic, x86_64: installed
vboxhost, 4.1.4, 2.6.38-11-generic, x86_64: installed
vboxhost, 4.1.4, 3.0.0-12-generic, x86_64: installed

cdc-acm はFOMAの携帯電話を繋ぐドライバで、このあたりのネタをdkmsで設定して、カーネルがアップデートされても自動的にドライバを再構築するようにしてあるのだが、kernel 3.0 でもドライバが勝手に入ってるな。

しかし、元ソースがkernel 2.6.38-8から取ってきたcdc-acmなのと、diff 取ってみたら2.6.38と3.0.0の cdc-acm.c は変更されているので、3.0.0のcdc-acmにする。

kernel 3.0に入ったカーネルドライバを削除
# dkms remove -m cdc-acm -v 2.6.38-8 -k 3.0.0-12-generic

——– Uninstall Beginning ——–
Module:  cdc-acm
Version: 2.6.38-8
Kernel:  3.0.0-12-generic (x86_64)
————————————-

Status: Before uninstall, this module version was ACTIVE on this kernel.

cdc-acm.ko:
– Uninstallation
– Deleting from: /lib/modules/3.0.0-12-generic/updates/dkms/
– Original module
– No original module was found for this module on this kernel.
– Use the dkms install command to reinstall any previous module version.

depmod………..

DKMS: uninstall Completed.

前の環境でlinux-sourceパッケージをインストールしてあったので、アップグレードしたら、 /usr/src/linux-source-3.0.0.tar.bz2 が既にあった。

$ sudo su –
# cd /usr/src
# sudo tar xvjf linux-source-3.0.0.tar.bz2

で、もりっと展開。

応用開発さんのドライバを取ってくる
# wget “http://sourceforge.jp/frs/redir.php?m=osdn&f=%2Fcdc-acm%2F33631%2Fcdc-acm-v026.zip” -O cdc-acm-v026.zip
# unzip cdc-acm-v026.zip -d cdc-acm-3.0.0-12
Archive:  cdc-acm-v026.zip
inflating: cdc-acm-3.0.0-12/cdc-acm.h
inflating: cdc-acm-3.0.0-12/cdc-acm.c
inflating: cdc-acm-3.0.0-12/Makefile
inflating: cdc-acm-3.0.0-12/readme.txt

さっき展開したソースから、cdc-acm.c cdc-acm.h をコピー
# cp linux-source-3.0.0/drivers/usb/class/cdc-acm.* cdc-acm-3.0.0-12

cdc-acm.c.patch
cdc-acm.h.patch

このファイルをそれぞれ適用
# cd cdc-acm-3.0.0-12
# patch <cdc-acm.c.patch.txt
patching file cdc-acm.c
Hunk #1 succeeded at 66 with fuzz 1 (offset -35 lines).
Hunk #2 succeeded at 876 (offset -93 lines).
Hunk #3 succeeded at 886 (offset -93 lines).
Hunk #4 succeeded at 933 (offset -93 lines).
Hunk #5 succeeded at 999 (offset -89 lines).
Hunk #6 succeeded at 1277 with fuzz 2 (offset -77 lines).
Hunk #7 succeeded at 1632 (offset -76 lines).
# patch <cdc-acm.h.patch.txt
patching file cdc-acm.h
Hunk #2 succeeded at 147 (offset -11 lines).

Makefile の先頭行をコメントアウト
#KERNEL_VERSION  := uname -r

dkms.conf を用意してやる
PACKAGE_NAME=”cdc-acm”
PACKAGE_VERSION=”3.0.0-12″
CLEAN=”make clean”
MAKE[0]=”cd ${dkms_tree}/${PACKAGE_NAME}/${PACKAGE_VERSION}/build; make KERNEL_VERSION=${kernelver}”
BUILT_MODULE_NAME[0]=”cdc-acm”
BUILT_MODULE_LOCATION[0]=””
DEST_MODULE_LOCATION[0]=”/kernel/drivers/usb/class”

DKMSに追加
# dkms add -m cdc-acm -v 3.0.0-12 -k 3.0.0-12-generic

Creating symlink /var/lib/dkms/cdc-acm/3.0.0-12/source ->
/usr/src/cdc-acm-3.0.0-12

DKMS: add Completed.

buildしてみる

# dkms build -m cdc-acm -v 3.0.0-12 -k 3.0.0-12-generic

Kernel preparation unnecessary for this kernel.  Skipping…

Building module:
cleaning build area….
cd /var/lib/dkms/cdc-acm/3.0.0-12/build; make KERNEL_VERSION=3.0.0-12-generic….
cleaning build area….

DKMS: build Completed.

install してみる
# dkms install -m cdc-acm -v 3.0.0-12 -k 3.0.0-12-generic

cdc-acm:
Running module version sanity check.
– Original module
– Installation
– Installing to /lib/modules/3.0.0-12-generic/updates/dkms/

depmod….

DKMS: install Completed.

# dkms status
bcmwl, 5.100.82.38+bdcom, 2.6.38-11-generic, x86_64: installed
bcmwl, 5.100.82.38+bdcom, 3.0.0-12-generic, x86_64: installed
cdc-acm, 2.6.38-8, 2.6.38-11-generic, x86_64: installed
cdc-acm, 3.0.0-12, 3.0.0-12-generic, x86_64: installed
fglrx, 8.881, 2.6.38-11-generic, x86_64: installed
fglrx, 8.881, 3.0.0-12-generic, x86_64: installed
vboxhost, 4.1.4, 2.6.38-11-generic, x86_64: installed
vboxhost, 4.1.4, 3.0.0-12-generic, x86_64: installed

2.6.38のカーネル使う時は2.6.38用、3.0.0のカーネル使う時は3.0.0用のcdc-acm.koが使われるので運用はこれで良いが、よく考えたら、カーネルアップデートが掛かったら、両方共 cdc-acm.ko だからマズいなあ…

3.0.0 カーネルはわしの使用用途では特に問題は出てないし、2.6.38カーネル消すか。