SVX日記

2004|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|11|12|
2025|01|02|03|04|05|06|07|08|

2005-03-11(Fri) 呪われたPCに心霊手術成功!?

  今日はカミさんの実家のPCが壊れたということで修理に向かう。なんでも、イキナリPCの画面がマックロになるという症状らしい。当然ながらカミさんの両親はPCに関してシロートなので話を聞いてもマトを得るワケもなく、それ以上に詳しくは聞かなかったが、ハードウェア的な問題であればCPUファンの停止による熱暴走、ソフトウェア的な問題であれば感染すると再起動を招くことで有名なMS.BLASTであろうとアタリをつける。替わりのCPUファンと余っていたCeleron1.1G、以前にMSが無料配布していたセキュリティパッチCDを持って現地へ向かう。

  電源が入るとフツーに起動する。ヘタすると起動時にイキナリ症状が出るというコトなのだが……と、症状を聞いているそばから、突然画面がブラックアウト、マザーにジカ付けの圧電素子から断続的なアラーム音が鳴り響きだした。むぅ。CPUのヒートシンクの温度はさわれる程度だし、マザー上で特に発熱しているチップもない。一度、電源を切って時間を置いた後、なんとかBIOS設定画面に移行し、ヘルスモニタ画面で温度をチェックしていると……画面がグジャっと文字化け状態になり沈黙。アラームこそ鳴らないものの、内部的には同じようなことが起きているっぽい。なんじゃこりゃ。

  ダメモトでCPUとファンを換装するが、症状は変わらず発生する。さらにダメモトでHDDとCDROMの電源コネクタを引っこ抜いてみる……と、なぜか症状が発生しなくなった。HDDが動かないとシステムが起動しないので、HDDの電源コネクタのみ元に戻すと……見た目、正常に起動している感じ。試しに30分くらいメディアプレーヤでビデオを再生しつつ、ネットサーフィンしてみるが症状は発生しない。CDROMが原因? んなことあるんかいな。これで直ったとは思わないが、このまま様子をみることにする。

  しかし、このPCは故障が多い。PCってフツーそう壊れるものでもないと思うのだが、ゴミ状態でもらってきたPCにモデムボードを入れ、インターネットができるように設定したものの、原因不明のトラブルで2枚ほどモデムボードが壊れ、縁起が悪いのでマザーからCPUまで交換した経緯もある。その後もHDDはクラッシュするわ、今回は謎のブラックアウトだ。交換していないのはキーボードとマウス、PCケースくらいのモノなのだが……PCケースと電源が悪いのだろうか? なんかケースに静電気が飛びやすい気がするが、もしかすると漏電でもしているのかもしれない。次に壊れたらウチで余っているPCを持っていくことにしよう。

  さて、なんとなくヒマだったので、トラ技のUSBの特集号を眺めていたら……あれ? USB-シリアル変換チップって、中身は実質インバータじゃん!? そうか、以前にRS-232CのHighは+12Vでなく、-12Vだってコトに気づかずオオハマリしたのを忘れていたよ。すると、例の秋月のインチキ変換回路がそのまま適用できるってコトか。今回はバッファ回路を組まなければイケナイと思って、変換チップSP3232Eを使うことを考えたのに、いつものワザが使えるんじゃん。

  まてよ。今回は汎用のインバータICを使ってみるのもオモシロいかもしれない。USBのバスパワーがあれば、232CのLowの規定である+3Vを確実にクリアすることができる。オマケに+3Vよりも十分に電圧が低い、0VならばHighと認識してくれるだろう。あとは入力側の電圧をうまく落とすことができればいいが、±15Vをどうしたものか。はて。


2006-03-11(Sat) カウンター・ザ・ノートン・ウィルス

  カミさんの友人がパソコンを始めた。例によって、始めたばかりというのは右も左もわからず、パソコンで何ができるのか、何をしたらいいのか、ヘタをすると「何をしたいのか」もわからず、サポートサイトに電話しまくったりするものだが……まぁ、知人に詳しい人がいれば頼ったりするワケで、まぁ、オイラもあまり面倒でない範囲なら面倒を見るのにヤブサカではないし……まぁ、最近のオイラはサポートを仕事にしているしな……Linuxの人だけど。なんだか調子が悪いんだって? どれどれ?

  で、持ってきたノートを開いてみた。HPのデスクノートnx4820/CTだ。CeleronMながら1.4GHzとなかなか高速だ……な!? なにッ!? おッ、遅いっ!! なんだこのモッサリ感は。画面のプロパティとかを開くだけで恐ろしく時間がかかる。ウチのMMX233MHzの骨董メビウスより遅いぞ。ウィンドウが上から消えていくのが見えるほどだ。

  いったい何をしたのか、持ち主に聞きたいのはヤマヤマではあるが、カワいくニコニコしながら「ウィルスがだんだん近づいてきてるみたい♪」と言われたら、これはどーしよーもない。だが、どーにかして、どーにかしなければならない事態なのである。しかし、普段からLinuxのサポートでは実機を前にもせず、主観に基づくメール上での説明と、ログだけを頼りに数度のやり取りだけで問題を斬りまくっているのだ。目の前にマシンがあるんだからどうにでもなるさッ!!

  画像の説明

  しかし、なんだこの画面のウルサさは。やたらと「ノートンなんちゃら」というウィンドウが開きまくる。その都度、確認ボタンを押したりしなきゃいかんのだが、ただでさえ動作がモッサリしてるもんだから、ウィンドウが閉じるまでに平気で10秒以上かかったりする……もぅ、キレそうである。

  モバイルモードになっていてCPUクロックが落ちているのか? 電源コード挿してるしなぁ……だいたい、CeleronMにはそんなに高度なクロック制御機能はなかったはず。なにはともあれ、タスクマネージャかな。CPU負荷は……ほとんどかかっていない。じゃ、なんだ? ディスクのフラグメントか? チェックしてみる。確かにグチャグチャになってはいるが、まだ使い始めて数週間である。ほとんどが空きエリアだからフラグメントでここまで遅くなることはないだろう。

  ……じゃ、メモリ!? このPCは……256M搭載か。若干少なめだが、どーにもならないというほどでもないだろう。実際、ウチのメビウスのWin2kは最大搭載の192Mでなんとか動いて……ぐ、ぐはッ!!

  「コミットチャージが300Mを超えとるーッ!!」

  なんでまた、こんなコトになっているんだ!? メモリ食いまくっているヤツは誰だ!? まだ、起動してからIEを3枚しか立ち上げてないんだぞ……ま、まさか、さっきからやたらと契約しろとうるッさい……

  「ノートンのバカか!?」

  ……こーゆーことがあるから、ウィルス防御系のアプリは吐き気をモヨオすほどキラいなんだよッ!! とりあえず、アンインストール。これがまた時間がかかるったらない。作業の順番がマズかったのか、アンインストール中にハングアップしやがるし……。

  何度か再起動しつつ「ノートン・ウィルスを駆除」した結果、起動時のコミットチャージを200Mソコソコまで減らすことができた。先日にも書いたが、Win2kなら起動時は80Mソコソコだぞ。だが、あまり強烈にカスタマイズしてしまうと、初心者の女の子には扱えなくなってしまうから、壁紙をなくして、いくつか自動起動する余計なアプリケーションを「窓の手」で駆除する程度にしておく。これで、起動時のコミットチャージを180M程度まで減らすことができた。まぁ、あまりハデに使わなければこれで十分だろう。

  ついでなのでパッチを当てておいてやる。WindowsUpdateを通したら数十個のパッチが当たった。まったくもって、ウィルス対策なんてパッチ当てと「知らない人から来たメールは開かない」で十分である。パッチ当てが終わったら、一旦、仮想メモリをオフにして、再起動。デフラグをかけてから、改めて固定で512Mバイトを仮想メモリに割り当てる。これで、完了!! 見違えるようにサクサクと動くようになった。

  しかし、返す返すもムカつくのが「ノートンのバカ」である。契約して欲しい気持ちはわからなくもないが、メモリを256Mしか積んでいないPC上で、まるでPCを使い物にならない状態にしながら営業活動を行うなッ!! 非常識もはなはだしい……というか、コレはもう「サイバーテロ行為」にほかならないだろう。いったい、誰が所有しているPCだと思っているんだ。腹立たしい!!

  そんな状態にして出荷するHPも頭がどうかしているとしか思えない。儲かれば何でもいいのか? まぁ、このPCがオイラの手元に来るまでにどんな経緯をたどったか、詳しい経緯は知らないから、出荷時はもう少しマトモだったのかもしれないが……だが、ほとんどファイルが入っていない1.4GHzのPCである。しかも初心者の女の子の、だ。どう考えても、ガンガンとイジられた結果、こうなったとは思えない。やっぱりプレインストールの時点でこんな状態なのだろう……ったく!!

  まぁ、ウィルス防御系のアプリについては賛否両論あるだろうが、頼むからキレいにアンインストールする方法を用意しておいて欲しい。できれば、プレインストールでなく、インストール動作をするまでは、1ミリも動いてほしくない。あと、最高に見苦しい恥ずかしい営業的動作もヤメてほしい。それから、ユーザに勝手にヤバいレベルの動作をするな。最近じゃ、ウィルスに感染するよりも、ウィルス防御用アプリが原因で発生するトラブルのが多いんじゃねぇか?

  ホント、安全やらなんやらのお題目の元、軽快で快適な自家用車を、愚鈍で危険な戦車に改造されている気分だ。速度は遅くなるし、乗り心地は悪くなるし、燃費は悪くなるし、キャビンは狭くなるし、故障しやすくなるし、ときどき誤爆したりする。道の上に危険があったなら、運転技術で避ければいいだけのコトだ。あー、気分が悪いったら、悪いったら、悪いったらないッ!!


2007-03-11(Sun) USBメモリを検証ッ!!

  さて、先日ポチッといってしまおうかと悩んでいたUSBメモリだが、なぜかすでに手元にある。あいかわらず速いなぁAmazonは。わりかし配送所が近いのもあるんだろうが。

  で、購入してから気が付いた。仕様を鵜呑みにするのでなく、消費電力を実測してみたらええんやないかと。ウチにはUSB延長ケーブルなんて売るほどある。そいつを1本ひっちゃぶけば、消費電流くらいテスターで簡単に調べられる。

  画像の説明

  まずは、買ったばかりのSIRENのUSBメモリ。容量は512MB。色はシルバー。接続して、認識して、準備OK。何もせず、最初はなんてったって接続しただけの状態で計測しなければ、なんてったってアイドル……38.4mA。ふむん。仕様どおり、75mAを下回る数値。よろしな。

  次は、ガンガンとファイルをコピーして書き込み。USB2.0対応だけあって速い。テスターの数値は目まぐるしく変化するが、目視で最大値を読む……55.5mA。ふむむん。やはり公約どおり、75mAを下回っている。

  そんでは、問題のバッファローの赤いUSBメモリ。アイドルは……77.7mA……高い……ような、そうでもないような。SIRENの製品の倍ではあるが、5倍ということはない。続いて、ファイルコピー……92.1mA。これも、仕様の平均250mA以下には遠く及ばない。いうほど高くないやんけ。

  ついでに以前に買った上海問屋のUSBジカ挿しの256MBのソリッドオーディオを試す。電源を切るたびに1曲目に戻るというスットコドッコイな仕様により、早々にオクラ入りしたアイテムだが……アイドル24.1mA、書き込み34.5mA……こ、これは低いッ!! ……というか、USB1.1なんだよね……コレ。しかし、低いコトには違いない。やはり、消費電力の大半は通信処理を行うコントローラの消費電力だというコトなのか。

  参考にワイヤレストラベルマウスのレシーバの消費電力も計測する。アイドル9.8mA、マウスをめいっぱいグリグリして10.2mA。

  まとめると、以下のとおり。

idle(mA)max(mA)
ワイヤレストラベルマウス(レシーバ)9.810.2
上海問屋ソリッドオーディオ(USB1.1, 128MB)24.134.5
SIREN USBメモリ(USB2.0, 512MB)38.455.5
バッファローUSBメモリ(USB2.0, 128MB)77.792.1
USB規格-500.0

  やはり、バッファローのUSBメモリの消費電力は突出しているといえるが、それでもUSBの定格には遠く及ばない。逆にSIRENのUSBメモリはかなり省電力であるといえるが、USB1.1の安物より省電力かというとそうでもない。ワイヤレストラベルマウスのレシーバは挿しっぱなしでオッケー。そんな結論だろうか。

  で、最終的に大事なのはSIRENのメモリは熱くなるのか、であるが、熱くはならない。まぁ、冷たいままであるかといえばそんなことはないが。体温と同程度以下という感じで不快な熱さはない。そんな感じである。

  なお、このSIRENのUSBメモリだが、アルミ外装は非常に高級感があるのだが、プラ部の仕上げがわずかによろしくない。微妙にバリが残っているんだね、コレが。また、キャップの開け閉めもやや品が無い印象。この辺の仕上げはバッファローの赤いUSBメモリのが上だ。こっちはこっちで使い込むとプラ部の塗装がハゲチョビンなのがナンだけども。

  画像の説明

  なお、ストラップの穴は側面に開いている……が、不思議なことにアクセスインジケータランプがストラップ穴の奥にある。これもナンだかなぁ、という感じ。たいして見やしないけどさ。

  つーわけで、残念なことにSIRENのUSBメモリも100%の満足度とまではいかない製品であった。もう少し高くてもいいから、フルアルミ外装で、摩擦式でないキャップ、できればスライド式か回転式で……遠い未来に遺跡から発掘されて解読されかねない仕様のUSBメモリが出ないかな……ま、解読に値するようなデータを入れる予定はないけどさ……ではまた。


2009-03-11(Wed) ナナメに3.3V→5V変換する

  ファームウェアアップデートの甲斐が、あったのか、なかったのはわからんが、とりあえずXPortは順調に動作するようになったようである。

  んが、ここでちょっとした問題が。XPortは3.3Vロジックであり、PICの5Vと合わないのだ。もちろん、これは当初からわかっていたことであり、PIC側を3.3Vに合わせるという考えもあった。しかし、当初の目標は液晶の汎用表示機を駆動すること。汎用表示機には、3.3Vで駆動するものもあるらしいが、手元のは5V仕様だ。仕方ない。

  XPortの入力側はトランジスタで3.3Vに変換した。よく考えたら、こっちは抵抗で分圧するだけでもよかったようだが……それより問題は出力側の3.3Vを5Vに昇圧する方法である。これも、PICがTTL入力ならば3.3Vのままツッコめばいいのだが、今回はC言語で組んでみたいという都合で、タイミングにシビアでないUSART機能を使いたいトコロなのだ。USART機能を有効にすると、入力モードはシュミットトリガになり、その場合の閾値は「0.8 * Vdd」。つまり、4V以上が必要になる。

  つーわけで、何となく、こっちもトランジスタで変換をカマそうとしたのだが、ハンダ付けしてから「非反転では電圧変換ができない」ことに気づいた。エミッタフォロアでは、1倍以上の電圧が得られないのである。なんつぅタコな。

  ここにきて、ようやくチマタではどうしているのだろう、とググってみる。どうも、そう簡単な方法はないらしい。結局、オペアンプかバッファを使うのが一番簡単そうだ、という結論に至る。しかし、オペアンプを使うのは気が進まないし、基板スペースの問題から、TTLもキビしそう……ん? いや待て。以前にジャンク袋から入手した、ハーフピッチのTTLを使ってはどうだろう。

  探すと、たくさんのインバータに混じって、ひとつだけオアゲートのTTL、74HC32Aが見つかった。これだッ!! これしかないッ!!

  画像の説明 画像の説明

  ハーフピッチのICをフルピッチ基板に載せるにあたっては、以前に適応した必殺のナナメ技を再び使うのである。PICにつながるはずのRXとTXをショートして、ThinkPadからXPortにtelnetしてキーを叩き、エコーバックが得られることを確認した。よっしゃ、動作確認、完了。

  しかし、この微妙なナナメ感は、整然としているのが常識である基板上で、アリエナイ雰囲気を醸し出していて素敵だ。これを見てると、リングが半分になるようにルータで削れば、ちゃんとハーフピッチのICも実装できそうだな。有事の際にはその技も発動することにしよう。うは。


2011-03-11(Fri) PT2用マシン起動

  不安定、不安定、もうひとつオマケに、不安定。

  電源入れてもマザーが起動しないコトがあるわ、intelロゴの画面で固まってしまうことがあるわ、Fedora14のEM64T版のインストールDVDでの起動途中でパニクるわ……でも、メモリチェックしても、特に異常が見つかるわけでもない。

  まぁ、24時間稼働用途なので、別に起動がいくら不安定でも構わんのだが、インストールDVDが起動すらしないのは困る。またもやBIOSか? と思い、アップデートするも、変化なし。

  画像の説明

  HDDが1台なのに、無理にソフトRAIDでミラーを組んだのが原因か?

  結局、いろいろ試して、Fedora13のネットワークインストールを実施、起動後にfedora-releaseとfedora-release-notesパッケージを14相当にして、yumで14にアップグレード。

  アップグレードは、意外にもアッサリと完了し、普通に14として起動できた。カーネルが上がったので、PT2もdevの下に認識されている。さて、次はアンテナ線だな。


2024-03-11(Mon) そんなメルカトル、補正してやるッ!!

  ついに走り出したところで、次はなにを実装すべぇかなぁ、と考えなしに考えていたら、我ながら意外なところに向かってしまった。緯度補正だ。Google Map(ほかオンライン)の地図データはメルカトル図法なので、北に行くほど「より大きく」表示されるのだ。

  当初、そんなもん大した違いではないから無視しよう、と思っていたのだが、実は無視していいレベルの違いではなかった。だいぶ違う。一応は、実際に遊んだときに実際のF1のラップに近いタイムが出るようにしたいと思っているのだが、そうしたければとても無視できないレベルだ。

  とりあえず「鈴鹿」「シルバーストン」をテストの対象に開発を進めていたのだが、こうなれば赤道に至近なサーキットもテストの対象に加えるべきだ。最近はF1観てないんだよなぁ……なので、ググる。すると「マリーナベイ・ストリート・サーキット」がそれらしい。シンガポールGPが開催されている市街地サーキットで、北緯1度17分にある。ほぼ、赤道直下といっていい。

  画像の説明 画像の説明 画像の説明

  で、なにげなく座標データだけ入力してやると……「ちっさ」。左から「シルバーストン」「鈴鹿」「マリーナベイ」である。「シルバーストン」では気づかなかったが、こりゃ補正不可避である。幸い、開発したばかりの「BG版の回転拡大縮小機能」は、特段の負荷なしに自在に拡大縮小が可能だ。で、ここからは数学の時間である。まずは、一番直感的に書けるRubyで補正値を求めるプログラムを書いてみた。

include Math
 
# equ_px = (2 **  0) * 256                      # 赤道のピクセル数(ズームレベル0)
equ_px = (2 ** 20) * 256                        # 赤道のピクセル数(ズームレベル20)
equ_m = 40075 * 1000.0                          # 赤道の周長(m)
 
p equ_1px = equ_m / equ_px                      # 赤道下の1ピクセルの長さ(m)
#=> 0.1492910087108612
 
car_px = 24                                     # 車幅のピクセル数
car_m = 2.0                                     # 車幅(m)
 
p car_1px = car_m / car_px                      # 車の1ピクセルの長さ(m)
#=> 0.08333333333333333
 
p equ_times = car_1px / equ_1px                 # 赤道下の補正値
 
p 256 * equ_times                               # 回転拡大縮小機能への補正値
#=> 142.8976434518611

  まずは、赤道直下を対象にした補正値だ。使用する定数は「赤道の周長(40075km)」と「F1の車幅(2.0m)」だ。どちらもWikipediaで調べた。ゲームとしての基本的な仕様はスーパーフォーミュラをパク……オマージュるつもりなので、車のサイズは24x43ピクセルだ。2.0mを24ピクセルで表現したい、ということになる。回転拡大縮小機能に与える補正値は、サンプリングベクトルで256が標準値であり、それより小さい値を与えると拡大される。計算の結果、赤道直下の場合は143を与えればいいと出た。

  次は、緯度補正だ。緯度が高くなるにつれ地球の周長は減少していくが、それはコサイン一発で求められる。

p   [lat = 50, 'イギリス' ]
# p [lat = 35, '日本' ]
# p [lat =  0, '赤道' ]
 
p cos = Math.cos(lat * PI / 180)
p lat_times = car_1px / equ_1px / cos           # 任意の緯度下の補正値
 
p 256 * lat_times                               # 回転拡大縮小機能への補正値
#=> 222.30926872026404                          # [lat = 50, 'イギリス' ]
#=> 174.44581191992688                          # [lat = 35, '日本' ]
#=> 142.8976434518611                           # [lat =  0, '赤道' ]

  日本の場合は174、イギリスの場合は222を与えればいいと出た。概ね45度が7割なんだから合っていそうだ。

  次は、CoffeeScriptへの組み込み。ほぼ、上記のRubyのコードがそのまま動いたが、ひとつ考慮することがある。車を南北に移動した場合、補正値も変化させるべきか? ということだ。さすがに1フレームの移動毎に計算するのは過剰で、タイルをまたがったタイミング毎で十分だろうから処理は軽い。ゲーム内で使用する座標情報はWposというクラスで管理しているから、それに関数を追加するか……と実装しかけて気づいた。Wposクラスは経緯度で座標を与えられる仕様ではあるが、直後にメルカトル座標に変換して保持し、緯度情報は破棄してしまうのであった。ゲーム中の車の座標管理ならメルカトル座標のが扱いやすく、緯度を継続的に保持する必要性はないからだ。

  つうわけで、今回の目的は主にサーキットを走るのがメインであって、大陸縦断をするわけではないので、サーキットを選択した時点で補正値を計算し、それ以後の補正値の更新はなしとした。結果、コードは以下のようになった。

equ_times = car_1px / equ_1px                   # 赤道下の補正値
@lat_index = equ_times * 65536                  # 緯度の補正指数
@t = Math.round(@lat_index / Vec.v2vxy(128 - Math.round((@car.lat0 * 64) / 90.0), 1)[0])

  コサイン値は既存のVecクラスのテーブルの参照で済ませる。テーブルは90度を64分割、1.0を256として保持しているので上記のようになる。そして、表示させたスターティンググリッドが以下だ。

  画像の説明 画像の説明 画像の説明 画像の説明

  うぉーッ!! スターティンググリッドの位置が見事に揃いましたゼ、ダンナッ!! プログラミングって、こういう感じにわかりやすく美しい結果を得られた時が、たまらなく楽しい瞬間なんだよなぁ。これも今回、調べて初めて知ったことなのだが、スターティンググリッドの間隔は8mと決められているらしい。

  それではと、画面上のスターティンググリッドの間隔を測ってみると、ポールポジションと3番手のグリッドの間隔は192ピクセル。今回は2.0mを24ピクセルで表現しているのだから……16mッ!! パーフェクトだウォルター。

  ……と、ふと気になって、パク……オマージュり元のスーパーフォーミュラはどうなのかとおもったら……あれ? 狭い……つうか、ちょうど半分の間隔になってる!? なんだこれッ!? 偶然ッ!?