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-04(Fri) プラグインを仲裁する

  先日からコチョコチョと書いているが、当サイトはtdiaryで運営されており、namazuによる検索システムを導入するに当たって、squeeze.rbというプラグインを追加している。ところが、ツッコミを検知してそれをメールするプラグインcomment_mail-smtp.rbと相性が悪いのか、同時に使うとツッコミ時にエラーが表示されてしまうのである。

  ツッコミ自体は記録されるため、問題がないといえばないのだが、非常にカッチョ悪い。オイラのtdiary環境に起因するモノなのかもしれないが、なんとかせねばならん。しかたないので、エラーメッセージを元に原因を洗うのである。

  ……治らん。コードを表面的にしかナメてないのでアレだが、プラグインはそのRubyコード中で、自らRubyコードを生成、本体からprocクラスで呼び出されるようなシカケっぽいのだが、その中でエラーが発生しているようなのだ。そこで、そのコードを出力させたいのだが、procクラスにはコードを出力するメソッドが備わってないのである。むぅ、それでは追跡のしようがないではないか。なんか勘違いしているのだろうか。

  しかし、突然に別の解法を思いついた。squeeze.rbというプラグインは日記の更新時に、更新した日付のHTMLを生成するのが主機能なのだが、コマンドとして任意のタイミングでHTMLを吐かせるコトもできるのだ。namazuがインデックスを作るのは1日に1度だから、その直前にsqueeze.rbを実行してHTMLを生成してやればいいのだ。なにも更新毎にHTMLを生成してやることはない。そうすれば、プラグインからsqueeze.rbを外すコトができるから、comment_mail-smtp.rbと競合してエラーがでることもないのである。

  結局はcrontabは、

# 日記タイトルリスト更新
5 2 * * * cd diary; ../public_html/diary/makecont.rb > ../public_html/diary/content.html
# HTML更新
5 3 * * * /usr/share/tdiary/plugin/squeeze.rb.cron -p /usr/share/tdiary -c /home/svx/public_html/diary -x .html /home/svx/diary/cache/html
# 検索インデックス更新
5 4 * * * export LANG=ja; mknmz -c /home/svx/diary/cache/html --output-dir=/home/svx/diary/index

  てな具合になって対処完了である。ちょっと逃げっぽいが、動けばヨイのである。あぁ、ヨイヨイ。


2008-03-04(Tue) オシレータ発振せず

  オシロ用のオペアンプの手配ができるまで、オシロに搭載する「メインCPUのリセット、兼、テスト用のパルスを出力」するための8ピンPIC、12F629のファーム開発をするのである。

  テスト用のパルスを出すためには、かなり正確、かつ、メインCPUとは違う周波数で動かす必要があるので、時計用の32.768kHzの水晶で動かすことにする。

  しかし、32kの水晶といえば、なんか以前にバタバタしたような記憶があるのだよなぁ……と、思いながら、単にLEDを点滅するだけのプログラムを動かそうとしたところ、サッパリ動きゃしねぇ。点灯しっぱなしてのもヘンな話だが。

  どうも、例によってコンデンサの容量がクサいが、いずれにせよ、32kの水晶は10個くらいあるので、それに見合う数の、小さい容量のコンデンサを手配しておかなきゃなぁ。


2011-03-04(Fri) grubニガテ

  ひょんなことから、職場でRHEL5.5をインストールし、手動でgrubを入れなければならない状況になった。

  先日のこともあるし、どうなるかと思ったが、記憶のままにコマンドを打ち込み、そのまま一発で起動に成功……やっぱり、先日はgrub側の不具合かなんかだったのだろうか……。

grub> install (hd0,10)/boot/grub/stage1 (hd0,11) (hd0,10)/boot/grub/stage2

  かなり前のこともあるし、どうもgrubとは相性が悪い。その性質上、ハナモゲラかつ、バッドノウハウの塊なのは、仕方ないことなのかもしれないが、grubはニガテですわ。はい。


2012-03-04(Sun) 雑務に専念する

  昨日の夕方、ふと、コンビニでデカい焼きそばを見つけたので、朝飯用に買ってみた。

  この焼きそば、栄養成分表示を確認すると、ナトリウム量が2.5gを超えている。つまり、これ一食で、一日分の塩分摂取量の適正限度を超えてしまうというわけだ。つまり、血圧に良くない……と、朝から微妙な罪悪感を感じつつ、フタを開けると、中で麺が2段になっていた。こりゃ、すげぇ。

  画像の説明

  そういえば、以前にもデカい焼きそばを食べたことがあったっけ、と思い、調べてみると、なんとこっちの麺のが量が多かった。売る方も、食う方も、アホだなぁ……と思いつつ、完食。いや、うまい。時々、無性に食べたくなるんだよねぇ、インスタント焼きそばってさ。

  話は変わって、先日、職場で愛用しているキーボード「FKB8579」のControlキーが、突如として不安定になった。具体的には、時々押されっぱなしっぽい挙動になる、という症状。まぁ、長らく使い込んでいるからなぁ、と、調べたら、購入日は2003年04月01日だった。約9年前、実に、この日記を始める前だ。当時、仕事中にHHKに味噌汁をこぼし、そのまま早退して秋葉に行ってぷらっとほーむで2枚買った、という記録が残っていた。

  それほどに使い込むくらい愛用しているので、これがなくなると困る。しかし、既にディスコンになっているので追加購入ができない。別にHHKで代用できなくもないだろうが、いくらなんでもHHKの2万は高すぎる。まぁ、1枚壊れたところで、まだ1枚あるのだが、こういう時は、もう1枚しかない、と考えてしまうものだ。ちょっとアセる。

  しかし、こういう時のオークションである。いや、ホントに助かるわ。同じ出品者から2枚が出品されていた。各1580円。両方いかせていただきます。両方ゲット。無事、両方送られてきた。

  やや、キーが黄ばんでいるが、裏のマーキングを見ると、持っている2枚より、新しいリビジョンのようだ。黄ばみの割に、私のものほど使い込まれていないようであり、ごくわずかだが、押し込む際の滑らかさに欠け、メンブレンの反発も若々しい印象。ざっと、全部のキーに対して動作テストする。問題なし。

  ということろで、すかさず分解を始める。洗うのである。私は別に潔癖症ではないが、キレイであるに超したことはない。すでに持っている2枚も2回ずつくらい、分解して水洗いしている。そういえばThinkPadX40のキーボードを掃除したときは猫の毛のようなものがビッシリ詰まっていて驚いたなぁ……っと、そこで分解の方法を忘れていることに気づいてアセる。そうそう、右下にあるカーソルキーを引っこ抜き、その下の爪を外すところから始めるのだ。

  画像の説明

  バラしてみると、髪の毛やらなんやらで、さすがにバッチョい状態。風呂場でガシガシと洗う。洗っていると、消しゴムのカスが目立つ。前の持ち主は学生さんだったのかな? プラスチックと溶着しかけていて取り除きにくい。両方とも同じような状態なので、この持ち主も2枚持ちだったのだろう。やれやれ、俺みたいな奴だ。

  数時間かけて乾燥させ、元通り組み直す。動作を確認。無事、2枚とも復活した。4枚あれば、オイラが死ぬまで持つだろう。人生の安心レベルが上昇したわい。

  さて、そんな作業を片手間にこなしつつも、例のレムウォッチャーの改良版製作のため、ブレッドボード上でファームウェアの開発を進める。が、今回は、意外とアッサリと望みの動作が得られた。なんだか、このところ開発の調子がいい。大ハマり状態にならない。

  画像の説明

  数々のハマりポイントを覚えたせいなのか、オレライブラリが充実してきたせいなのか、ちょっと修正しては動作テスト、という作業サイクルが功を奏しているせいなのか、よくはわからんが、たいへんに開発は快調である。さて、そろそろ回路デザインに入るかな。


2023-03-04(Sat) 九四ドライブ最終日

  画像の説明

  画像の説明

  画像の説明

  画像の説明

  本日の走行距離は362.9km。累計距離は3749.5km。


2024-03-04(Mon) pack/unpackをよりどうにかする

  たわむれは、おわり、のはずだったが、美作にいけてしまった(?)ので、もうちっとだけ続くんじゃ。以下は前回のコードだが。

:c_ << 'ABC'
=> [65, 66, 67]

  unpackの場合、結果は配列になるので、こう書いたほうが、より直感的な気がしてきた。

[:c_] << 'ABC' # 動くけど……
=> [65, 66, 67]

  しかし、これは文法として有効なので、正しい結果は「[:c, 'ABC']」だ。ほんじゃ、演算子「<<」じゃなく「<」を使うか。

class Array
    def <(packed)
        packed.unpack(self[0].to_s.sub(/_$/, '*'))
    end
end

  「<」の元来の意味は「より小さい」だが、「<<」の元来の意味だって「左シフト」なのに、Rubyオフィシャルに「左に追加」の意味で使っているのだから、「<」を「左に渡す」の意味で使ったって構わんだろう。

  以上をまとめると、以下のようになる。

class String
    alias :perc :%
    def %(arg)
        self =~ /^:(.+)/ ? arg.pack($1.sub(/_$/, '*')) : perc(arg)
    end
end
 
class Array
    def <(packed)
        packed.unpack(self[0].to_s.sub(/_$/, '*'))
    end
end
 
':c_' % [65, 66, 67]
=> "ABC"
 
[:c_] < 'ABC'
=> [65, 66, 67]
 
':m_' % ['ABCDE']
=> "QUJDREU=\n"
 
[:m_] < 'QUJDREU='
=> ["ABCDE"]

  この記述方法だと、オレ的には澱みなく気分よくコードを記述できた感がある。まぁ、pack/unpackなんてそう頻繁に使うわけじゃないので実用性は薄いが、想像以上にイイ感じになったのでもったいないなぁ。