SVX日記
2005-03-21(Mon) K&Rで再入門
つい先日、別途つけている記録をみたら、オイラはIT系の仕事に転職して4年、Perlを始めて3年、Rubyを始めて2年、ハードを始めて1年9ヶ月、ということが判明した。まだ、ITを仕事にしてから4年なのかと驚くとともに、仕事を始めてしばらくして「転職チャンス判定サービス」を受け、必要以上にボロッカスに評価されたことを思い出した。頭から松下電気に入るつもりなどなかったが、あの恨みは忘れんからな、日経BPエキスパートよ。
しかし初めてPerlに触れたときの感動はかなりのモノであった。いーかげんとしか思えないような記述にも係らず、意図したように動く。それまで掲示板のCGIスクリプトとかをノゾいたりして、Perlのコードを目にしたコトはあったのだが、ハナモゲラな記号がたくさん並んでいたので引いていたのだ。んが、使ってみると、スゲェ楽。オブジェクト指向まで身に付いたし、C言語なんかやってらんない。
しばらくPerlにドップリで、Rubyという言語の存在を小耳に挟みつつ、横目で眺めつつも、あえて手を出さなかった。Perlに似ているなら必要ないじゃん、と自分に必死で言い聞かせていた気がする。んが、そーゆー逃げの姿勢は、エンジニアの寿命を縮めるコトにもなりかねないと思い直し、使ってみるコトに。使ってみると、スゲェ美しい。Perlのオブジェクト指向のバッチョさがイヤになった。
PerlとRubyでオブジェクト指向な思考が身に付いたので、C++にも少し手を出す。面倒な記述が多いけど、STLが使えるし、Cに比べたらかなりラクできる。以前に血迷ってC++Builderを購入していたので、それでちょっとしたプログラムを組んでみる。GUIプログラムもチョイチョイと作れるけど、激しいコトをしない限り、Ruby/tkのがラクでいいね。やっぱり今のところRubyが最高の言語である。
というワケで、純粋なC言語からはかなり遠ざかっており、むしろマイナスイメージさえ感じていたのだが、これから仕事でC言語メインになるとあれば、いま一度、勉強せねばならん。なにより、C言語は永遠に不滅なのだ。OSを書いたり組み込みに使う言語は、よほど時代が進まない限りC言語でありつづけるだろう……というワケで、C言語といえばK&R。アマゾンで中古本をお買い上げである。
実はこのK&R、オイラが購入したのは初めてではない。実はANSI対応になる第2版の前、第1版を持っていたのだが紛失してしまったのだ。ちなみに、あの祝一平氏はOh!X誌の「C調言語講座」という連載の冒頭で、第8刷を持っているコトを自慢していた。この第8刷がイカにスゴいかは、この2版が288刷というトコロから察するコトができる。若干、共立出版の出版体制にも疑問は残るのだが……。
しかし、以前も今もオイラのC言語に対する認識は変わらない。C言語はドラゴン……じゃなかった、C言語はレーシングマシンなのである。いままで色々な言語を使ってきたオイラではあるが、この認識は変わっていない。フツーの言語であれば目的地に着かないまでも道路からハミ出るコトはないが、C言語は軽々とコンビニに突っ込んでしまうのである。だからホントのコトをいえば、ヒヨッコにはイキナリC言語を教えるのではなく、PerlかRubyあたりから始めさせるのが吉だと思うのである。自動車学校を出たばかりの人をレーシングカーに乗せるのはオカシいのだ。C言語は高級アセンブラであるからして、アセンブラ言語というエンジン組み立て(まさにアセンブル!!)に近いトコロを経験してから、手を出すべきなのである。
2006-03-21(Tue) 大戦略づく
先日、ふと「蘇るPC-8801伝説」なんて本の存在を知ったのだが、それで妙に大戦略がやりたくてたまらなくなってしまった。大戦略といえばPCで遊ぶウォーシミュレーションゲームの代表格。個人的には家で遊び倒した大戦略X1、友人宅で3人で徹夜で戦いあった大戦略2、イマイチ乗らなかったSUPER大戦略68k、メガドラで遊んだSUPER大戦略、これもなかなかの傑作だった戦闘国家、1マップもクリアしなかった大戦略V……基本的には大戦略2ルール+索敵くらいが好みなのだが、今、適価で遊べる大戦略はないものか。
システムソフトは、ゲーム部門をシステムソフトアルファなんて会社に移しているらしいが……おぉ!! いまだに大戦略を販売しているではないか!! 体験版も置いてある。こりゃ試すしかない!!
相手はウォーシミュレーションであるから、それを遊ぶなら、やはり気分は将軍でなくてはならない。ゆったりした席に座って、片手を振り上げ指示を出す。つまり、絶対にマウスオペレーションでなくてはならない。とりあえず「キャンペーン版大戦略2」を試してみる……
……ダメだ。なんだかシックリこない。なんだろう。そう感じる原因は。ワンテンポ遅れる操作感だろうか。マウスオペの黎明期によくあるイマイチ洗練されてない操作方法だろうか。どうも、戦略を練っている感じがしないんだよなぁ。
偵察が楽しくないものいけない。そういえば、戦闘国家の偵察はすばらしく雰囲気が出ていた。戦闘国家は1ターンにいくつかの行動を取れるので、1ターン中に「偵察に行って制空圏に戻ってくる」ことができるんだよね。大戦略だと、偵察に行ったら最前線に留まらなくてはならないので、偵察機がボコボコと落とされてしまう。なんか、それがまたシックリこない。
ちょっと高いけど、近年の大戦略を試してみようかなぁ。コレか?「パーフェクト大戦略」。どれどれ……ダメだ。やっぱり、どーもシックリこない。なんでだろう。ユーザインタフェイス? 戦闘画面も、悪くはないんだけどなぁ。重みがないというか……その点、メガドライブのSUPER大戦略はなかなか……
……まてよ、メガドライブの「アドバンスド大戦略」を忘れていないか? あの名作を!! でも、アレには異様に時間を消費させられたんだよなぁ。今なら、エミュレータで遊ぶことができるのではないか。しかも凶悪なCPUターンの待ち時間も現代のPCを持ってすれば、一瞬で……
2008-03-21(Fri) ラジオを動かしてみる
2009-03-21(Sat) Google [ LavieA 音が出ない SUSE Linux ] [検索]
実は先日より、openSUSEの環境を整え始めていたりする。別にFedoraに飽き足らず、というワケではない。どっちかってーと、Fedoraより不便なことは多いだろうけど、常用環境に仕上げるまでにブチ当たるであろう壁をブチ破るため、である。私は「手段のためなら目的を選ばない」のである。敢えていえば、まぁ、楽しんでお仕事をするため、かな。
育て上げたThinkPadX40上のFedora9に不満はない。むしろ、いまや常用環境として愛用しており、これを上書きしてしまうワケにはいかない。逆に、以前は上書きしてしまうワケにはいかなかった、常用環境だった赤いノートPC「NEC LavieA」上のWinXPを縮小し、その脇にSUSEを入れることにする。
インストールには何の問題もなかった。勝手にデュアルブートの設定までしてくれた。意外と苦労するかと思ったATOK X3も、すんなり入った。一方でXftEmacsは、早々にあきらめた。しかし、どうにもあきらめられないのが、サウンド。出ないのだ。音が。さっぱり。つまんない。つまんないと、環境構築を進めようという気にならない。
ノートPCでLinuxといえば、無線LANやサウンドなどのハードの認識で苦労する(挙げ句、あきらめる)のはお約束である。が、それにしても、さっぱり糸口がつかめない。そもそも、PCのサウンド関係(ハード, AC'97とか)って、各種概念が複雑すぎだ。さらに、混沌としたLinuxの各種実装(OSS, ALSA, PulseAudioとか)が拍車をかけている。こーゆートラブルになると、ドライバのレベルを超えて、チップセットとか、周辺回路とか、サウンドチップの仕様とかまで足をツッコまなければならなくなりがちだ。そんなことは、知ろうにも限界がある。仕事じゃあるまいし、ソースコードの正面突破は避けたいのだが……。
Webで情報を探すが、ほとんどが「alsaconfしろ、しらんけど」とか「ミュート状態でした、えへへ」程度で、さっぱり役に立たない。やはり、音が出なければ「あきらめる」のが基本のようだ。といってもなぁ。この「LavieA」は、キーボードの質もかなり高く、サイズや重量もギリギリのトコロを突いていて、かなりギーク向けなんだけど……などと思っているのはオイラだけで、一般的には「日本のライトユーザ向けオシャレっぽいパソコン」である。Linuxなんか入れるようにできてないようだ。TninkPadとは違う。
うぅむ。最終的にはSUSEで音を出すのが目的だが、最新のFedora10Liveを動かしてみて、音が出るか試してみよう。音が出れば、その設定を盗めば……出ない。Knoppi……出ない。Ubu……出ない……全滅。
自動的に選択されるモジュールが合ってないのか、と思い、そっちの方面から調べるが「lspci」の結果は「00:1e.2 Multimedia audio controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Audio Controller (rev 04)」である。モジュールとしては「snd_intel8x0」で間違ってないはずだ。
チップレベルではどうか。載っているのはANALOG DEVICESのAD1981BLというチップらしいが「sound/pci/intel8x0.c」のコード内には、AD1981Bという記載がある……って、結局ソースコード読みはじめちまってるよ。とほほ。まぁ、チップも問題なさそうだ。
んじゃ、次は上位側の概念からチェック。ALSAってのは、主にLinuxのサウンド機能の名前で、別にそういう外部パッケージがあるわけではない。カーネルに取り込まれているから、別に他のデバイスドライバと変わらない概念だ。「/dev/dsp」や「/dev/mixer」なんかが、ALSAとの主な対話手段。昔は、この辺りにはOSSというサウンド機能がいた。ALSAはOSSの上位互換。つまり、現在は入れ替わっているはず。たぶん。
で、最近の新しい概念がPulseAudio。ALSAはAPからの要求に基づいてハードウェアをドライブするが、複数のAPから同時に要求があると、互いに干渉してしまう。そこで、APにはALSAのふりをしつつも、複数のAPからの要求をミキシングして、単一もしくは複数のALSAをドライブするのがPulseAudio。APごとに独立してサウンドカードがあるかのように見せるので、APごとにボリュームを調整したりできるようになる。要するにサウンド環境の仮想化だ。
……と、ここまでわかってきて、なんとなく各種GUIの裏側が見えてきたものの、肝心の音は出てこない。むしろ、各種の表面的挙動は、ちゃんと音が出ているようにしかみえない。なんか、最後の最後で、線が切れているような、スイッチを入れてないような、耳が聞こえてないような、そんな印象。
しつこく、Web検索を続けていると「snd_intel8x0」の後継である「snd_hda_intel」モジュールには、パラメータとして「model」なんてのを与えることができるらしい。やっぱり、ソース調査が必要か。もう一度「sound/pci/intel8x0.c」に潜る。
static struct ac97_quirk ac97_quirks[] __devinitdata = {
{
.subvendor = 0x0e11,
.subdevice = 0x000e,
.name = "Compaq Deskpro EN", /* AD1885 */
.type = AC97_TUNE_HP_ONLY
},
{
.subvendor = 0x0e11,
.subdevice = 0x008a,
.name = "Compaq Evo W4000", /* AD1885 */
.type = AC97_TUNE_HP_ONLY
}, ※続く
LavieAのサウンドカードは「.subvendor = 0x1033」「.subdevice = 0x8288」に該当するが、もちろん記載はなかった。つーか、quirksってなんじゃ? typeってなんじゃ? 辞書で調べると「quirk」は「くせ, 奇癖; 気まぐれ; 急なねじれ, 急転回;」だそうだ。で、その「type」のひとつが「AC97_TUNE_HP_ONLY」。コードを読み進めると、HPはヘッドホンの意味らしい。この機種は「ヘッドホンのみ」ちゅー「くせ」がある?
/* quirk types */
enum {
AC97_TUNE_DEFAULT = -1, /* use default from quirk list (not valid in list) */
AC97_TUNE_NONE = 0, /* nothing extra to do */
AC97_TUNE_HP_ONLY, /* headphone (true line-out) control as master only */
AC97_TUNE_SWAP_HP, /* swap headphone and master controls */
AC97_TUNE_SWAP_SURROUND, /* swap master and surround controls */
AC97_TUNE_AD_SHARING, /* for AD1985, turn on OMS bit and use headphone */
AC97_TUNE_ALC_JACK, /* for Realtek, enable JACK detection */
AC97_TUNE_INV_EAPD, /* inverted EAPD implementation */
AC97_TUNE_MUTE_LED, /* EAPD bit works as mute LED */
AC97_TUNE_HP_MUTE_LED, /* EAPD bit works as mute LED, use headphone control as master */
};
統一性はないが、swapとか、JACKとか、LEDとか、いかにも配線の「くせ」くさい。これ、順に試してみようかしらん。この「type」を、外部から与える方法ってないんかな? モジュールのオプションには、それっぽいパラメータがあった。
# modinfo snd_intel8x0 | grep parm
parm: index:Index value for Intel i8x0 soundcard. (int)
parm: id:ID string for Intel i8x0 soundcard. (charp)
parm: ac97_clock:AC'97 codec clock (0 = auto-detect). (int)
parm: ac97_quirk:AC'97 workaround for strange hardware. (charp) ★コレ
parm: buggy_semaphore:Enable workaround for hardwares with problematic codec semaphores. (bool)
parm: buggy_irq:Enable workaround for buggy interrupts on some motherboards. (bool)
parm: xbox:Set to 1 for Xbox, if you have problems with the AC'97 codec detection. (bool)
parm: spdif_aclink:S/PDIF over AC-link. (int)
parm: enable:bool
parm: joystick:int
static struct quirk_table applicable_quirks[] = {
{ "none", NULL },
{ "hp_only", tune_hp_only },
{ "swap_hp", tune_swap_hp },
{ "swap_surround", tune_swap_surround },
{ "ad_sharing", tune_ad_sharing },
{ "alc_jack", tune_alc_jack },
{ "inv_eapd", tune_inv_eapd },
{ "mute_led", tune_mute_led },
{ "hp_mute_led", tune_hp_mute_led },
};
options snd-intel8x0 ac97_quirk=hp_only
設定を有効にするには、モジュールのリロードが必要になる。GUI環境では、モジュールがアンロードできないので、CUIに落ち、モジュールをリロードして、リロードの様子を確認しつつ、GUIに戻って音が出ないか試行錯誤する。
# init 3
# modprobe -r snd-intel8x0
# modprobe snd-intel8x0
# dmesg | tail
# init 5
hp_onlyでダメなら、次はswap_hp。それでもダメならswap_surroundと、順に試す。たぶん、これはサウンドカードの配線の仕様に依存するので、頭の使いどころはない。我慢して、何度か繰り返す……
options snd-intel8x0 ac97_quirk=inv_eapd
つーか、こんだけ苦労したんだから、これだけでは済まさんぞ「inv_eapd」って、いったんなんなんだよ。サウンドカードの配線の仕様に依存するならば、AD1981BLのデータシートをチェックだ。
eapd……eapd……っとッ!! 答えはデータシートの中にあった。「External Amp Power-Down Control」ってことは、外部アンプの電源制御ってことだ。「inv」はインバータ、つまり、負論理。LavieAは、電源制御線の論理が普通と逆。電源ONにすべき状況で、電源OFFになってしまっていたと、そういうことすか。なんとなく「スイッチを入れていないような」挙動にみえたのは、当たってたワケだ……ちっともうれしくネェョ。
2011-03-21(Mon) 名古屋市科学館
2013-03-21(Thu) オレ、再び、クロックダウン
去年の12月頃に風邪をひいてから、ずっと咳が出る症状があったのだが、最近になって特に悪化してきたので、先日、医者に行った。すると、マイコプラズマの可能性が高い、とのこと。なんだ、最近、よく耳にするなと思ったら、なかなかトレンドにノれてるンじゃネ、オレってぇ。
なんでも、マイコプラズマには、抗生物質が効きづらいらしいのだが、とりあえず薬をもらって飲む……って、あれ? また、オレ、遅くなった……ような。あわててつつもゆっくりと以前の記録を探すと……なんと……2年前にもらった薬と3種類までが同じ……そういえば、2年前も似たような症状だったよぉなぁ……あぁ〜、いかん、遅いわぁ、オレぇ。
2019-03-21(Thu) Re:Re:明るいポスト
長らく自宅の郵便ポストに自作の照明を取り付けていたのだが、ポストが取り付けてある枕木の門柱が、長年シロアリに食われ続けた結果、昨年9月頭の台風の際にブチ折れて倒れてしまうという冗談のような事態に至ってしまった。
2025-03-21(Fri) 「由比」を旅する
「由比」という場所は、山と海に挟まれた極めて狭い場所で、鉄道と、主要道と、高速道が密集している変な場所である。一応、観光地っぽい場所もあるが、観光地とまでは言えず、割と地味な場所と言っていい。しかし、通過するたび、そのガーリッシュな名前や、景色に好感を抱いていて、いつかその極めて妙な地形を散歩して体感してみたかったのである。
で、開通したばかりの蒲郡バイパスを通って向かったのだが……ひどい渋滞だ。開通したばかりだから交通が集中しているからなのか? 新しい開通区間以外の区間に渋滞が増えている。名古屋〜浜松間がまるごと使い物にならない道になってしまった感じだな。
■ 初心者@ubuntu [ubuntuのフォーラムから流れてきました。現在、9.10をアップグレードして弄っているのですが、音が出ないトラブル..]
■ フルタニアン(管理者) [サウンド関連の問題、特に音が出ないという症状に関しては、これといった切り分け方法もなく、非常に難しいです。 したが..]
■ でびあんゆーざー [P4C800をDebian/squeezeマシンにして後はSPDIFから音がでればっ、てところで悩んでたところac9..]