Webデザイン

最近は、箱(div)をページに並べる事をよくやっているが、おかげでかなり複雑な並べ方ができるようになった。

黄色の箱
桃色の箱

緑の箱に隠れる金の箱

緑の箱

まあ、これだけ手間かけても、画像編集ソフトでデザインして作った画像一枚と結果は同じ 🙂

差別化できるところは、複雑なレイアウトの中身を動的に変えたり、一部だけの更新の時に全部作り直さなくて良いところかな。

メールイライラ

来週末予定が空いている? というメールが来た。

今週末は予定があるが、来週末なら空いている。しかし、今日が日曜日の週の初めの日に、なぜ今週末では無く、わざわざ遠い来週末と聞いてくるのかが引っかかる。

もしかして、わしの常識では、今週末=2月25日、来週末=3月3日なのだが、このメールをくれた人の常識では、来週末=2月25日の事を言っているのか?という疑問が湧いた。

なので、返答は、今週末はダメだが、来週末…というより3月ならば大丈夫だ。とした。

まあ、「今週末」というキーワードが出ている時点で、誤解のしようが無いだろうが、本来、こういう曖昧表現を行う場合は、誤解のしようが無いように厳密に日付を書くべきである。

といいつつ、わしも日付は書かなかったが、老眼で携帯のメールを読むのも苦痛だし、書くのも大変苦痛だから、日付なんてチマチマ入れてられない。「PCのメールで送ってこい」と言いたい。

結局、この人の返事は、「来週末って2月25日の事だと思っていた」とかいうリアクションも無いので、どういう常識をお持ちなのか、わしにはさっぱり分からない。

恐らく、また同じ様な事が起こるだろうが、何しろわしに学習させてくれる情報を全く与えてくれないので、結局のところ、真相が不明なまま終わってしまう。

あと、メールでイライラするのは、こちらが質問を5つ位書いてるのに、全文引用の上に、1つか2つの質問にしか答えず、結局疑問が解決せずにモヤモヤさせられる事だ。

本来、ビジネスメールのマナーとして、取引先と技術的なやり取りをする場合、

——————————————————————————————————
1. 質問1
2. 質問2
3. 質問3
4. 質問4
5. 質問5
——————————————————————————————————

というメールが送られてきた場合、

——————————————————————————————————
> 1. 質問1
これはAになります。

> 2. 質問2
これはBになります。

> 3. 質問3
これはCになります。

> 4. 質問4
これはDになります。

> 5. 質問5
こちらはまだ仕様が未定で、○月×日の会議で決定予定ですので、△月□日にはこちらからご連絡させていただきます。
——————————————————————————————————

みたいな感じだと、漏れも無く、すっきりし、後々のやり取りの履歴にもなるのだが、

——————————————————————————————————
1みたいな話はAだよね。

> 1. 質問1
> 2. 質問2
> 3. 質問3
> 4. 質問4
> 5. 質問5
———————————————————————————————————–

みたいな感じの返事が来たら、メールを使う事は諦め、「2~5はどーなんてんの?」って電話掛けて聞き出す事をするだろう。

なぜなら、メールでまともな返答が得られない以上、何度メールを送ってもまともな返事が期待できないからだ。

メールは論文書くのと同じく、読む相手がどういう解釈をするのか、別の解釈をされる恐れは無いか?という点に気を付けて、略語や曖昧な表現を使う場合は、最初に定義を書いておくべきだ。

まあ、昔のWebの文章なんかだと、IBM(International Business Machines)とか書いてあるのが当たり前だったけど、今はAMD(Advanced Micro Devices)とか、そういうのを書くのは余り見かけなくなったな。

メモリ増強

DELL Studio 1558 のメモリを CFD のSO-DIMM DDR3 204pin PC3-10600 CL9 8GB×2に入れ替えて16GBにした。

購入時に入ってたのは、hynix PC3-8500S 4GB×2だが、メモリスロットは2個なので、入れ替えるしかない。

16GBあれば、仮想マシン2台位動かしても余裕なので、色々と遊べそうだ。
今までメモリが8GBだったので、swap 8GBだったけど、16GBだったら、16GB取っておいた方がいいのかのう。

でも、今まで使ってて swapっ て10MB位にしかならなかったけどなあ…

Linuxユーザーは人に非ず

昨年、au one net でログインできなくて、IDとパスワードを入れてログインすると、一発で、「ログインできません。複数回間違った為、アカウントはロックされました。」という趣旨のメッセージが出てログインできない状態だったので、サポートにゴルァした。

クレジットカード不正利用があり、変更しようと思ったのだが、「ユーザーページにログインして申請しやがれ」みたいな感じで、ユーザーページでログインとパスワード再発行を繰り返し、「ログインできるかな?」「ざーんねん」というログインゲームを繰り返しやらされた。

結局、サポートからはログインができない理由の明確な回答は得られず、必要な情報を知らせてくれれば郵送で変更申請用紙を送るという事で決着した。

多分、UserAgent で Windows か Macintosh かってのは見ていて、それ以外はダメみたいな処理してるんだろうけど、IDとパスワード入れたら、一発でアカウントロックって、どんなおつむの足りない処理だ?

まるで、docomo 携帯の「お手上げになったらソフトリセットに飛ばす」つーのと一緒じゃねーか。

で、今日、久しぶりに Linux でアクセスしたら、進歩してて驚かされた。

> 2.動作推奨環境外でご利用の場合
> 動作環境

Linux の firefox でログインできないのは相変わらずだが、昨年まではいきなり「アカウントがロックされました」だったのが、「動作環境がダメなのかも」って項目が追加されてたよ 🙂

ダメじゃん…。

それと、MY EPSON

母親の年賀状印刷の為、素材を貰おうと思い、メンバー登録したのだが、機種登録の「使っているドライバ」で Linux の項目が無い。必須項目の癖に選択肢で選択できる項目が無い。

何かそれで萎えてしまって、アンケートの趣味の項目とか回答拒否したくなって全部「その他」にした。

そして、年賀状素材をと思ったら、Windows か Macintosh のアプリケーションダウンロード? Web印刷は Internet Explorer以外対象外?

ダメじゃん…。

まあ、印刷は微妙な位置決めとか制御の関係上、環境限定も致し方無いとは思うが、売国奴Canon のCREATIVE PARKだと、年賀状素材をJPEGで提供しているので、Linux でも縁なしで葉書に印刷できるから、こっちの方が使い勝手が良い。

Internet ってのは、どんなコンピュータ環境でも情報を共有できるってところが利点のはずで、Webブラウザなら、規格に従えば、環境は問題無いはずなのだが、世の中には Windows と Macintoshしか存在しないというバカな処理系をやっている所が存在する。

たとえば、地元銀行などは、JavaScript で UserAgent を判定して弾くなどという驚くべきマヌケな処理をやっているが、ソース読んで JavaScript で飛ばす URL へ直に飛べばログインできてしまう。

厳密さと信用を求められる銀行の処理が JavaScript という環境に依存する処理前提なのもマヌケだが、ソース見たら、それをすり抜けられるという、いい加減な処理でOKにしてしまっているのもマヌケだ。加えて、問い合わせはインターネットでは一切できず、電話しやがれというスタイル。

昔流行った言葉の…なんつったっけな? デジタルディバイド? を地で行っている感じだ 🙂

もう一つの地元の銀行は、元わしが居た会社系の銀行の系列で、そっちの方はオンラインバンキングがいかにも技術者が作りましたって感じで、LinuxのFirefoxだからって拒否したりしない。

試しにテキストブラウザの w3m でログインしてみたら、ちゃんとログインできて残高照会もできた。さすが本質を良く分かってるなと感心する。規格に従って実装していれば、そもそも「Windows や Macintosh 以外を排除」なんて発想なんか出てこないはずだが、何でそういうマヌケな事をやりたがるのかさっぱり分からんな。

Windows 8 Developer Preview

9月頃話題になっていた Windows 8 Developer Preview 64bit(x64)を今更ながらに VirtualBox Guestに入れてみた。

Guest Additions のインストールはOSの自動認識に失敗するっぽいので、明示的に VBoxWindowsAdditions-amd64.exe を一覧から選択して管理者権限で実行。

そして、WDDM ドライバを入れてやらないと画面が真っ黒になるので入れる。

わしのUbuntu 11.10(ATI/AMDプロプライエタリFGLRX グラフィックドライバー使用)の環境だと、VirtualBox Ver. 4.1.6r74713 の GuestAdditons の  WDDM ドライバを使うと、Windows 7で表示がおかしくなるのだが、Windows 8 Developer Preview でも変わらず

ウインドウの上と、ステータスバーの下が二重に表示される。

これが見た目通りの位置で操作できればまだいいのだが、実際のアイコンは二重表示が無い位置にある。

 

どういう状況かは実際に見てもらうと解りやすいと思うが、左の画像の様に、実際に操作できる位置が下の方は下にズレ、上の方は上にズレる。

これは、VirtualBox のWDDMドライバがウインドウサイズ計算を間違っている為だろうと思うのだが、何とも使いにくい。

しかし、Windows 8 Developer Preview の場合、Guest Additions を全く使わないか、WDDM ドライバを入れて使うかの二択しかない。

どちらかと言えば、Windows の方をまともに使いたいと思うなら、現状の VirtualBox の Guest Additions Ver. 4.1.6r74713 は入れない方が良いでしょう。

謎の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で録画すると、「録画できません」って番組の録画できるのねん 🙂