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|

2004-07-15(Thu) 接続ケーブルほか完成

  さて、本日の作業は、リア側の配線の修正とフロント側へのケーブルの増設である。

  実はケース加工(穴の増設)だけは昨日行っていたので、今日は配線を通してハンダ付けするだけ。必要なケーブルを揃え、一気に変換ボックスを完成させるのである。ステレオミニプラグの延長ケーブルをチョン切って利用したところ、内部の線がヨリ線かつ、表面メッキかつ、繊維混合のものだったため、かなり無理矢理ハンダ付けするという苦労があったが、とりあえず、完成である。

  完成したフロント側は目論見どおり、1)引き出しが閉まった状態から、2)引出しを開けて、3)必要なケーブルが引き出せる、という機能を実現できた。

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

  引出しから引き出せるケーブルは、1)ビデオ信号(RCAオス)、2)オーディオ信号(ステレオミニオス)、3)USB(Aタイプメス)、4)マイク(モノラルミニメス)の4種。そう、実は最後に1本余ったケーブルの秘密の用途とは、音声入力だったのである。音声入力があれば、音声入力によるPC操作に利用できる可能性があるし、とりあえずカラオケするのも悪くない(^^;)。

  ちなみに、引出しに内にはPCの電源スイッチ&リセットスイッチとピンヘッダも存在する。ピンヘッダは6pin中5pinを使用しており、アクセサリ電源(+12V)&アースとシリアルポートのTx&Rxである。これも長らく秘密にしていたが、実はシリアルポート(RS-232C)だったのである。シリアルポートが前に出てきていれば、キャラクタ表示のLCDパネルを取り付けることもできるのだ。ナビが必要ない時は、デカイLCDディスプレイでなく、小さなLCDパネルで済ますことができる。そのために、5pinの中にはパネル駆動用の電源も含まれているのである。

  で、話を戻して、既存のMP3対応ヘッドユニットに、PCからのオーディオ信号を入力する状態が、以下である。フロントから入れるのはちょっぴりダサいが、許せる範囲ではないだろうか。SVXユーザなら誰もが気にするフタであるが、このままフタを閉めることもできるのだからまぁ文句ないであろう。

  画像の説明

  さて、週末は2度目の車載トライである。こんどこそ、問題なく載ることを祈ろう。



2006-07-15(Sat) プチLinuxBox構築計画

  先日より、ギター演奏だの、作曲だの、暗中での撮影だの、次々に個人的プロジェクトを立ち上げては、オープンなまま放置し放題のオイラだが、ココにきて、さらにプロジェクトを増やしてしまった。

  画像の説明

  コレだ。ファンレス動作のx86互換機……とはいえ、キーボードもディスプレイもつながらないので、IBM/PCとは言えない。いわゆる無線ルータ用のプラットフォーム。平たくいえばLinuxを動かしてルータを作るためのベースボードである。

  実際に無線LANルータにするためには、本体上のminiPCIスロットにカードを実装する必要があるが、現状ではそんなコトするつもりはない。単に、家のサーバをコレにリプレースしてしまおうと思っているのである。電源はACアダプタで完全ファンレス、消費電力10W以下、しかもLANのI/Fが3つもあるッ!! 3つあればDMZが構築できるアルよッ!! こんなボードが欲しかったアルッ!!

  画像の説明

  そしてなんといってもオイラの心をくすぐるのが、この赤い筐体……なんというオレ好みッ!! しかも、この筐体とボード、送料まで合わせても2万円を超えないッ!! 安いッ!! 起動にはコンパクトフラッシュが必要だが、そんなの手持ちのゴミを流用すりゃいい。うっはーッ!!

  しかし、早速、動かしてみようとしたトコロでハタと困った。こいつにはディスプレイがつながらない。いわゆるシリアルコンソールをくっつけなければ、動作してるコトすら確認できないし、操作するコトもできない……まずはマニュアルを読もう……

  ……うーむ、英語だが、なにしろ、電源をつなげよ、「null modem cable」でシリアルコンソールにつなげよ、「1:1 connected serial cable」でつなぐと壊れるぞ、通信パラメータは「38400 8N1」だぜ、あとコンパクトフラッシュはホットプラグじゃねーから電源オフの時に挿せよ……てなトコか。

  で、なんとなく想像は付くんだけど「null modem cable」ってなに? 調べると予想通り「クロスケーブル」のコトだった。そんなの手元にないよ。作るか? でも、9ピンメスコネクタの部品は10数個もあるけど、オスは基板装着用が1個しかない……えーい!! もう使わないだろうコレをバラすか!? バラした!! RXとTXを引っくり返してハンダ付けした!! 挿そうとした!! 挿さらんッ!!

  アホなコトに、作ってから気づいた。シリアルのクロスケーブルは、両端のコネクタがメスなのである。ほんじゃ、手持ちの部品を3本の線でつなぐだけじゃん。10分で完成したよ。ホレ。

  画像の説明

  で、愛用のPCにUSB-シリアル変換ケーブルをかまし、COM2でTERATERMを立ち上げ、電源ON!!

  画像の説明

  よっしゃ、とりあえず、動作は確認!! じゃ、コンパクトフラッシュへのRHEL4の押し込み作業を開始だぜッ!!


2011-07-15(Fri) PDFを集めれバインダ

  もう7年も前に悪態をつきまくったPDFであるが、いまだに文書ファイルのフォーマットとしてデファクトスタンダードの位置にある。まったくもって不快この上ないが、Web上にある電子部品のデータシートは決まってPDFだ。もはや、逆らおうにもどうにもならない。

  最近、ZiiOというAndroidタブレットを購入したのだが、触ってみて驚いた。どのアプリも、PC版に比べて極端に機能が低い。ん?「ファミコン版」なの? これは? という感じ。おまけに動作が不安定。ガタイがノートPC大である10インチ版を購入したこともあって、より激しい錯覚を起こしているのかもしれないが、現在のところ「所詮は携帯向けのOSだな」という評価に留まらざるを得ない。それにしたって、不安定すぎる気もするが。

  ちなみに、ウェブ上では、Android端末に対して、あまりこういう方面の評価を見かけない。みんな、満足してるの? あきらめてるの? それともオイラのZiiOだけ性能が低く、調子も悪いのかしらん?

  で、とりわけ最悪なのがPDFビュア。スクロールバーがないし、スクロールバーがないし、スクロールバーがない。Adobeの純正なんだよな、これ。それなのに……

  「なんでスクロールバーがないんだ!?」

  ……100ページもあるPDFとか、どうしろっつーんだ。ったく、スクロールバーが付くまで、廊下に立ってろ、バカ。

  と、話は替わって、PDF閲覧UIに対する不満とは別に、利用する端末が増えてくると、これまたPDFは面倒である。ファイルサイズがデカいから、ダウンロードに時間がかかる。で、どの端末でダウンロードしたかを忘れてしまうから、以前にダウンロードしたはずだ、とディレクトリを探し回った挙げ句、ダウンロードしてなかったことに気づいたりしてイライラするわけだ。探し回るのを効率化するため、分類して整理するのも手ではあるが、んなこと端末毎にチマチマやってられっかッ!!

  ちなみにオイラ、いわゆるブラウザのブックマークについては、自宅サーバ上に配した自作のスクリプトによって、全環境で共有化している。カテゴリ分け可能、かつ、アクセスすると勝手に上位に移動する仕組みで、鼻血が止まらないくらい便利な環境を構築済みなのである。じゃ、PDFについても、似たようなことをすればいいんじゃないか。どの環境からでもPDFを自宅のサーバ上に集められるようにし、かつ、閲覧できるようにすればいい。そうだ! 自宅サーバをバインダ代わりにして「PDFを集めれバインダ」!!

  画像の説明

  つーわけで作ってみたのが、この100行に満たないCGIスクリプト「PDFを集めれバインダ」。である。eRubyで書いた。というのも、CGI自身を書き換えるという奇妙な仕様にマッチするからだ。HTMLとしては、かなりの文法破りを犯しているが、とりあえずは問題なく動作するはず。今回は、借りているVPS上にスクリプトを置いてみた。おぉ、我ながら、なかなかに快適ではないか。

  PDFを指すURIをテキストボックスに貼ってボタンを押すと、サーバ側でPDFをダウンロード、登録され、閲覧が可能になる。なお、ブラウザ上からは登録のみしかできず、カテゴリ分けはブラウザ上からでなく、サーバにログインしてから、直接HTMLをエディタで編集するという仕様になっている。

  書類は、空間的に整理するのが効率がよい。つまり、PC上でも「あの書類は、あの辺の棚にあるバインダの、後ろの方に綴じてあったはず」てな感じでアクセスできると探しやすい。Operaのスピードダイアルも、そのような思想に基づいていると思う。

  今回の「PDFを集めれバインダ」も、敢えて、直接HTMLをエディタで編集するという仕様にすることで、カテゴライズの自由度を増しているつもりである。決して、手抜きなワケではない。うっしっし。


2012-07-15(Sun) レース&レース

  今日はイッペイを連れて、暑い中、中京競馬場に行く。

  まったり向かいつつ、9〜12レースに300円ずつ。9と12で単勝をまぐれ当たり。払戻が580円と390円で、あっさりと1710円のプラス。それにしても12レース、先行逃げ切り6馬身差って……賭け事の厳しさを教えるつもりだったのだがな……。

  モンキースタイルを教えたところ、異様にサマになっているが、大丈夫なんだろうか。

  画像の説明

  帰りがけ、手動式で有名な「神宮前の踏切」が閉鎖されていた。なんか、寂しい。

  画像の説明

  帰宅して、ここ最近、思い出したようにグランツーリスモ3に取り組むイッペイ。自分はF1マシンに乗っているとはいえ、プロフェッショナルリーグ、グランツーリスモ・ワールド・チャンピオンシップ、コートダジュール(モナコ)で、15周。1回のピットインを挟みつつ、土壇場で787Bをブチ抜いて優勝。見事に350万とモナコマイスターの座をゲット。

  そもそもオイラはレースゲームが得意ではないが、6歳のガキにまったく歯が立たないほど下手だとは思わなかった。つーか、普通にちゃんとブレーキをからめつつ、壁に軽めに当たりつつ、極めてスムーズに走るのだよなぁ……正直、こいつはかなりのセンスを持っているのではないだろうか。特にラスカスと最終コーナの処理は唸らされる。

  まさか、後半5周、ヘタなF1中継よりも熱中して観戦してしまうとは思わなかった。これって、息子A-specモード、親父B-specモードって状況じゃねーか!?


2017-07-15(Sat) MTのコペンにも試乗、スプラトゥーン2前夜祭参加

  先日に引き続き、MTのコペンに試乗してきたが、ディーラーの対応にシツこいところはなく、似たようなものであった。

  それにしても、久々のMT。エンストこそしなかったものの、クラッチミートの感覚がしっくりこなくてガクガクさせてしまった。というか、MTに乗ってた頃も、代車の後は、自分の車に違和感を感じたから、別に何か衰えたわけでもなく、そんなもんなのかな。ガキを連れて行って一緒に乗ったのだが、初めてのオープンカー&タイトなコックピットが痛く気に入ったようだった。

  気になっていた、クラッチの左側に足を置くスペースもあったので悪くない。逆に、右側がちょっと狭く感じた。さすがにヒールアンドトゥは決められなかったが、慣れればなんとかなるんだろうか。

  そして、帰ろうと自分の車に乗り込んだ時、足踏み式パーキングブレーキを思いっきり踏み抜く……までがお約束。

  で、今日は、スプラトゥーン2の前夜祭の日だったりする。例によって、開始直後から、まったくサーバにつながらない……1時間も……と、思ったら、ネット上にはそんな話はない。あわてて有線につなぎ替えたら、問題なくプレイできた。1時間以上も無駄にしてしまった。

  どうもジョイコンがしっくりこず、上下の遅延もあるせいか、気分よくプレイできない。途中でカミさんに譲り、以前に作ったツールで通信パケットを眺めてみることにした。

  画像の説明

  メインの通信は、プレイヤ同士直接の秒間約30のUDPパケット。中央サーバは、やっぱり、AWSを使っているらしい。中央サーバとの通信量は、前作も大したことはなかったが、今作はさらに抑えられているような感じだ。

  前作のパケットはzip圧縮だけで、ほとんど暗号化らしい暗号化をしてなかったので、チートし放題だったわけだが、今作は大丈夫なのだろうか。


2024-07-15(Mon) Improving is Entertainment!

  どうも最近「ヤル気の低調さ」を自覚する傾向にある。自覚したところで改善は難しいのだが、それはそれで低調なヤル気でやれる事を探したりできないこともないわけで、ダラダラと進められることに手を付けるわけだ。

  そういや、メール環境を自作のMaverickに移したはいいが、メールの削除が面倒でゴミメールが3000通くらい溜まってしまっている。実はちょっと前にスレッド単位での削除機能を付けたのだがとても追いつかない。チェックボックスをチェックする操作が面倒すぎるのだ。要するに、画面内の全メールのチェックボックスを一発でチェックする機能が欲しい。

  画像の説明

  というわけで付けた。極めて典型的な処理なのもあって、サンプルコードをもってきただけのようなもんだ。

/root/docker/mave/mave # git diff
diff --git a/maverick.rhtml b/maverick.rhtml
index 4127bde..3dec566 100755
--- a/maverick.rhtml
+++ b/maverick.rhtml
@@ -176,6 +176,7 @@ SEARCH_FORM
        <H1>Maverick</H1>
        <HR>
        <FORM action='.' method='post'>
+               <INPUT type='checkbox' id='checkall'>
                <INPUT type='hidden' name='folder' value='<%= folder = cgi.params['folder'][0] || 'Inbox' %>'>
 <%     if(cgi.params['startsq'].size != 0)
 %>             <INPUT type='hidden' name='startsq' value='<%= sq0 = cgi.params['startsq'][0] %>'>
@@ -189,7 +190,7 @@ SEARCH_FORM
        <HR>
        <PRE><TT
 ><%    sqs = maverick.each_mail(folder, sq0, n_max = 25) {|mail|
-               %><INPUT name='sqs' type='checkbox' value='<%= mail[:SQ] %>'
+               %><INPUT name='sqs' class='mail' type='checkbox' value='<%= mail[:SQ] %>'
                ><A href='<%= maverick.script %>?view=mail;folder=<%= folder %>;sq=<%= mail[:SQ] %><%= sq0 ? ";startsq=%s" % sq0 : '' %>'><%= CGI.escapeHTML(mail[:ABSTRACT]) %></A
                ><A href='<%= maverick.script %>?folder=<%= folder %>;sq=<%= mail[:SQ] %><%= sq0 ? ";startsq=%s;" % sq0 : '' %>;req=fold'> &lt; </A>
 <%     }
@@ -276,5 +277,14 @@ SEARCH_FORM
        </BODY>
 <%     end
        maverick.close
-%></HTML>
+%>     <SCRIPT type='text/javascript'><!--
+//             (chackall = document.getElementById('checkall')).addEventListener('click', () => {
+               checkall.addEventListener('click', () => {
+                       mails = document.querySelectorAll('.mail');
+                       for(mail of mails) {
+                               checkall.checked ? mail.checked = true : mail.checked = false;
+                       }
+               });
+       --></SCRIPT>
+</HTML>

  しかし、ひとつ発見。「checkall」を「chackall」とタイプミスしたのだが、動いてしまったのだ。なんで!? 気になる……デバッグ? じゃなくてその逆?この状況は何ていうんだw?

  ググるのも難しそうだと思ったが、すぐに見つかった。id名は「document.getElementById('id')」しなくても使えるらしい。なんだその場当たり的な仕様は。長すぎて打つの面倒だからそうしましょう、みたいな。やっぱりJavaScriptは好みじゃないな。キラいではないけれど。あ、Pythonはハッキリとキラいです。そのことだけはお付き合いを始める前にあらかじめお断りしておかなくてはと思いまして。えぇ。

  コンテナをビルドしなおして、上げなおして、コミットしてプッシュして終了。アッという間にやることが終わってしまった。

  画像の説明

  しゃーない。次。オレ用の天気予報サイトの微修正。フォントを小さくしたり、ページのトップに戻るリンクを付けたり。これも瞬時に終了。

  またまた。次。オレ用のブックマークサイトの修正。先日からサイトの追加だけができなくなってしまっていた。DBがエラーを吐いている。軽く10年以上も動いていたのに何で? DBが壊れた? ゴミが溜まったか? sqlite3もたいしたことないな。エクスポートしてインポートすれば治るんじゃね?

  ……と、コンテナの中でエクスポートしてインポートしてみる。

$ sudo dnf install sqlite
$ sqlite3 remote_bookmark.db 
sqlite> .output export.sql
sqlite> .dump
sqlite> .exit
$ sqlite3 import.db
sqlite> .read export.sql
sqlite> .exit

  ……が、治らない。アレ。ちゃんとエラー内容確認しなきゃダメか……と、マジメに読むと、uniqueキーの制約でinsertに失敗している。サイトへのジャンプの履歴の追加だな。あ。確かに重複している。なんで? あ。先日、移行時にヘンなことしたからか。その時に不整合を入れてしまったんだな。sqlite3のせいではなかった。でも、オレの書いたコードのせいでもない。10年以上も前のオレ、ナイス。

  画像の説明

  結局、エクスポート結果から一部の履歴を削除してインポートしたら治った。またやることが終わってしまった。

  じゃ、次は物理作業だ。机の横の棚を引き出して、その上に載せているヘッドホンとゲームパッドを吊るせるようにする改造でもするか。

  まずはヘッドホン。2年前くらいにちょっと奮発して買ったロジクールのヘッドホンG433BKに輪っかを付ける。頭頂部に穴孔けたいけど、ケーブルが片出しなんだから、ソコには配線があるはずだよね。と、アチコチを眺めると、ネジ発見。なんとトルクスだ。外すと頭の上のクッション部分を外すことができた。ウオッ、凝った作りだなぁ。部品もすごくシッカリしている。そこそこ値段しただけのことはあるな。メクラで穴孔けなくてよかった。ピンバイスでふたつ穴を孔ける。これまた品質のよいプラスチックを使っているだけあって、硬いな。ネジリッコ通して元に戻す。

  画像の説明

  次はF310というゲームパッド。これもロジクールじゃないか。普通のプラスネジだが、裏に7本もある。パカッとやると機構のほとんどは背面側であった。穴を孔けるのも背面側。ケーブルの少し奥に穴を孔け、やっぱりネジリッコ通して元に戻す。元に戻す時に、ボタン類を全部ブチまけてしまって慌てたのはナイショの話。

  画像の説明

  暫定だが、机の横の棚にフックを付けて、吊るしてみる。概ね満足。こういうのでいいんですよ。

  画像の説明

  ヤル気が低調だった割には、エラく色々なものを改善できてしまった。先日、脳の疲れを癒すいくつかの方法というエントリで、そういう時のために軽いゲームを用意しておくといいようなことを書いたが、そういう時のために軽い課題を用意しておくのも有効なんだな。たいして必要性は高くなくて、そう難易度も高くない作業は、メモだけしてやらずに残しておくのだ。

  「Improving is Entertainment!」てトコか。何であれ改善することは、それ自体が楽しみでもあるのだ。今回の作業だけでも、想像以上にたくさんの知見が得られたからね。低調な時こそ達成感が必要な気がするな。