SVX日記
2005-04-06(Wed) アダプタにRFIDタグを付ける
職場でWindowsPCを使う場合は、大概ボリュームをミュートして使うコトと思う。しかし音がまったく出ないようにしてしまうと、先日のEAGLEの問題のように軽微なエラーが発生しても知ることができないという問題がある(ダイアログを出さないというEAGLEのインタフェイスに文句をつける向きもあろうが、それは置いておく)。
コンソールアプリの世界には「ビジュアルベル(ビジブルベル)」という概念がある。音が出せなかったり、ユーザが音を聴けない場合(騒音環境だったり耳が不自由だったり)に、ビープ音が鳴る代わりに、画面全体を一瞬フラッシュすることでユーザに知らせるという機能だ。Windowsでこの機能を探したところ「ユーザ補助補助のオプション−サウンド」の中にその機能を発見することができた。
ところがこれが使えねぇのなんの。マジメに補助が必要なユーザを助ける気があるのかさえ疑わしい実装状況である。点滅させる部分を「アクティブタイトルバー」に設定すると、妙に長い間アクティブウィンドウがインアクティブのような表示になって不自然極まりないし、かといって「アクティブウィンドウ」または「デスクトップ」を選択すると、点滅が一瞬過ぎるのだ。
この「点滅が一瞬過ぎる」という表示がこれまた問題で、点滅時間がディスプレイの垂直同期の時間よりも短いときた。つまり、画面全体が点滅しないのである。オイラの職場のPCだと概ね縦の長さの1/6くらいしか点滅しない。最悪なのは1/6くらいが帰線期間にかかってしまうタイミングだと、その場合は画面がまったく点滅しないのである。いったい、どーせぇちゅーねん!?
OSにフェード効果やスムーズスクロールを実装する前に、画面のリフレッシュレートくらい考慮して欲しいもんだ。ちょっと調べたらDirectXにはちゃんとVSYNCを取る機能があるらしいではないか。Windowsの場合、相手にするディスプレイのリフレッシュレートは千差万別だろうが、ゲームみたいにスピードに敏感なわけではないんだから、どんな環境だろうが正しく点滅させるように調整すべきであろう。別に点滅の速度をユーザに調整させるように実装したっていいのだし。特にこの機能は、主に身障者の方が使う機能なんだから、とりわけ慎重に実装してもよさそうなもんだ。頼むよ、もぅ。
さて、ココんトコ飛ばしすぎなので、今日はアレコレ思索しながら雑作業を行う。既存のACアダプタのプラグをチョン切り、極性を逆に新しくプラグを付け直す……が、気を抜いていたら、本能的に赤コードを中心極にハンダ付けし直していた。恐ろしいコトにテスタで測ってから気づいたのだが、元通りに付け直してどうするよ……アホかオレ。本能的に作業できるまでに成長したのは喜ぶべきだが、既に老化によるボケが始まっているのかもしれない。最近はモノ忘れもヒドいし……みなさん、この日記のネタが過去に書いたネタと断りもなくカブり始めたら、オイラに病院にいくようにメールで勧めてほしい。
というワケで、今日のオイラはボケ老人モードらしいので、今晩の工作はおとなしくコマゴマとした環境改善に留めておこう。テプラでポリポリとACアダプタの仕様を印刷し、プラグの近くにタグとして貼る。これぞRFIDタグ(露骨に分別できるIDタグ)どわッ!! こーすればコードがワシワシとカラんでいる場合でも、迷いなく目的のプラグを引きズリだすコトができるのだ。ついでに、極性を逆にしたアダプタ本体の表記も正しておこう。電源だけに、まちがえたら一発アウトだからね。
チマチマと作業をしていたら、突然イイコトを思いついた。マウスのロータリーエンコーダに使われているフォトインタラプタを、例のプリンタの紙切れ検知のために流用してしまってはどうかというコトだ。そーいや、かなり前に臓器提供したマウスがそのへんに転がっているハズな……あれ? どこ? でも、捨ててないからあるハズなんだけどな……チューわけで、また明日。
2006-04-06(Thu) イロイッカイズツ
まず、キーをバインドしよう。TERATERMではKEYBOARD.CNFに記述を加えることで、特定の文字列を打ち込んだり、マクロやメニューコマンドを実行したりできる。今回はマクロを起動する必要があるので「User5」として、マクロ「chgcol.ttl」を起動するための記述を追加する。
; Shift + Ctrl + B key: set bash env
User1=1584,2,rc.ttl
; Shift + Ctrl + V key: set vi env
User2=1583,0,:set number$0D:set tabstop=4$0D:set showmode$0D:set noshowmatch$0D:set noautoindent$0D
; Shift + Ctrl + 4 key: set vi tab 4
User3=1541,0,:set tabstop=4$0D
; Shift + Ctrl + 8 key: set vi tab 8
User4=1576,0,:set tabstop=8$0D
; Shift + Ctrl + F12 key: change color
User5=1624,2,chgcol.ttl
1624とかいう数字はキーバインドで、TERATERM付属のkeycode.exeを利用して調べる。なお、この記述をKEYBOARD.CNFに加えたら、一旦すべてのTARATERMを終了しなければならない。KEYBOARD.CNFは起動時にしか読み込まれないからだ。
gettitle titletext ; get text in title bar
strcompare titletext '2' ; 1...
if result=-1 goto change2 ; -> Green
strcompare titletext '3' ; 2...
if result=-1 goto change3 ; -> Bule
strcompare titletext 'SUZAKU' ; 3...
if result=-1 goto change1 ; -> Orange
strcompare titletext 'ml4' ; SUZAKU...
if result=-1 goto change1 ; -> Orange
strcompare titletext 'wbel3' ; ml4...
if result=-1 goto change3 ; -> Blue
strcompare titletext 'wbel4' ; wbel3...
if result=-1 goto change2 ; -> Green
; wbel4...
goto change3 ; -> Bule
:change1
restoresetup 'TERATERM1.INI' ; Orange
end
:change2
restoresetup 'TERATERM2.INI' ; Green
end
:change3
restoresetup 'TERATERM3.INI' ; Blue
end
タイトルバーのテキストによって、違うINIファイルを読み直すというだけの処理。まさにそれだけ。ただし、テキストは大小比較により判別を行っているので、項目はアスキーコード順に並べておく必要があることに注意。あとはINIファイルを3つ用意。元のINIファイルをコピーして、各々に、異なる文字の色、異なるタイトルバー文字列を指定する。
・TERATERM1.INI(橙系、プラズマディスプレイ風)
VTColor=255,207,159,64,32,0
VTBoldColor=255,223,191,64,32,0
Title=1-ColorChange
・TERATERM2.INI(緑系、グリーンディスプレイ風)
VTColor=112,223,0,16,48,0
VTBoldColor=176,255,64,16,48,0
Title=2-ColorChange
・TERATERM3.INI(青系、mz-2000外部ディスプレイ風?)
VTColor=128,208,255,32,16,48
VTBoldColor=208,208,255,32,16,48
Title=3-ColorChange
なお、注意深くマクロを読めばわかるが、単にサイクリックに変えているだけでなく、一発目だけはタイトルバーの記述によって特定の色に変化するようになっている。よって「WBEL3は緑で、WBEL4は青で……みたいなテーマカラーを持たせつつ」も、色の変化と同時にタイトルバーの記述を本来のホストと違う名前(2-ColorChangeとか)に変化させているので「サイクリックに好みの色を選択」できるようにもなっているわけである。まぁ、この挙動を説明するのはちょっとややこしいが、まぁ、動かしてみりゃわかる。
で、以前も公開したが、その場で好みの環境を整えるマクロ「rc.ttl」の最後に、先のマクロをincludeするようにもしてしまう。うひゃひゃ、カラフルかつ快適じゃ!!
Prompt1 = '$ '
Prompt2 = '# '
Shell = "bash"
sendln Shell
wait Prompt1 Prompt2
Env = "export LANG=ja_JP.eucjp; export LESSCHARSET=iso8859"
sendln Env
wait Prompt1 Prompt2
Alias = "alias ls='ls -lrtF'; alias cp='cp -p'; alias ex='pushd +1'"
sendln Alias
wait Prompt1 Prompt2
Uuenc = "function uuenc () { gzip -c $1 | uuencode uuuuuuuu.gz | sed 's/$/!/g'; }"
sendln Uuenc
wait Prompt1 Prompt2
Uudec = "function uudec () { cat $1 | sed 's/!$//g' | uudecode; gunzip -N uuuuuuuu.gz; rm $1; }"
sendln Uudec
wait Prompt1 Prompt2
Prompt = "PS1='\[\033[1;1m\]\n<\u> \d - \t\n\H:$PWD \$\[\033[0m\] \e]2;$HOSTNAME\a'"
sendln Prompt
include 'chgcol.ttl'
なお、昨日のプロンプトから、さりげなく$PWDを抜いている。どうも、タイトルバーの文字列が長すぎるとマクロコマンドのgettitleあたりでコケてしまうのである。おそらく、TERATERM側で文字列の終端処理をちゃんとしとらんようである。まぁ、大して実害はないのでそこはあきらめよう。
2010-04-06(Tue) LDAPに浸かる
というわけで、 先日、東京にてねっとりとLDAPの研修を受けさせてもらったので、自分の環境でも動かしてみるのである。
zakato.itline.jp:/root # yum install openldap openldap-servers openldap-clients
zakato.itline.jp:/root # rm -rf /var/lib/ldap/*
zakato.itline.jp:/root # cd /etc/openldap/
zakato.itline.jp:/etc/openldap # cp -a slapd.d slapd.d.org
zakato.itline.jp:/etc/openldap # cp mave.schema schema
zakato.itline.jp:/etc/openldap # cp slapd.conf.bak slapd.conf
zakato.itline.jp:/etc/openldap # slappasswd
New password:
Re-enter new password:
{SSHA}+zaTN/KKRmbEvh3MMru+tD5AS9fWatt5
zakato.itline.jp:/etc/openldap # vi slapd.conf
zakato.itline.jp:/etc/openldap # diff slapd.conf.bak slapd.conf
17a18,19
> include /etc/openldap/schema/samba.schema
> include /etc/openldap/schema/mave.schema
89c91
< suffix "dc=my-domain,dc=com"
---
> suffix "ou=zakato,dc=itline,dc=jp"
91c93
< rootdn "cn=Manager,dc=my-domain,dc=com"
---
> rootdn "cn=Manager,ou=zakato,dc=itline,dc=jp"
96a99
> rootpw {SSHA}+zaTN/KKRmbEvh3MMru+tD5AS9fWatt5
122c125
< by dn.exact="cn=Manager,dc=my-domain,dc=com" read
---
> by dn.exact="cn=Manager,ou=zakato,dc=itline,dc=jp" read
zakato.itline.jp:/etc/openldap # cp -a /usr/share/doc/openldap-servers-2.4.19/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
zakato.itline.jp:/etc/openldap # rm -rf slapd.d/*
zakato.itline.jp:/etc/openldap # slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
bdb_db_open: database "ou=zakato,dc=itline,dc=jp": db_open(/var/lib/ldap/id2entry.bdb) failed: No such file or directory (2).
backend_startup_one (type=bdb, suffix="ou=zakato,dc=itline,dc=jp"): bi_db_open failed! (2)
slap_startup failed (test would succeed using the -u switch)
zakato.itline.jp:/etc/openldap # chown -R ldap:ldap /etc/openldap/slapd.d
zakato.itline.jp:/etc/openldap # chown -R ldap:ldap /var/lib/ldap
zakato.itline.jp:/etc/openldap # service slapd start
slapd を起動中: [ OK ]
zakato.itline.jp:/etc/openldap # cp -a ldap.conf ldap.conf.org
zakato.itline.jp:/etc/openldap # vi ldap.conf
zakato.itline.jp:/etc/openldap # diff ldap.conf.org ldap.conf
9a10
> BASE ou=zakato,dc=itline,dc=jp
zakato.itline.jp:/etc/openldap # vi test.ldif
dn: ou=zakato,dc=itline,dc=jp
objectClass: organizationalUnit
ou: zakato
dn: ou=People,ou=zakato,dc=itline,dc=jp
objectClass: organizationalUnit
ou: People
dn: cn=Taro Yamada,ou=People,ou=zakato,dc=itline,dc=jp
objectClass: inetOrgPerson
objectClass: mavePerson
cn: Taro Yamada
sn: Yamada
gn: Taro
mail: t-yamada@example.com
maveID: self@work
displayName: Yamada
sendName: Yamada
reading: yamada
o: ox software Ltd.
ou: ox department ox section
post: chief
telephoneNumber: 090-1234-1234
birth: 1970-01-01
blood: A+
zakato.itline.jp:/etc/openldap # ldapadd -x -W -D "cn=Manager,ou=zakato,dc=itline,dc=jp" -f test.ldif
Enter LDAP Password:
adding new entry "ou=zakato,dc=itline,dc=jp"
adding new entry "ou=People,ou=zakato,dc=itline,dc=jp"
adding new entry "cn=Taro Yamada,ou=People,ou=zakato,dc=itline,dc=jp"
zakato.itline.jp:/etc/openldap # cp -a /etc/rsyslog.conf /etc/rsyslog.conf.org
zakato.itline.jp:/etc/openldap # vi /etc/rsyslog.conf
zakato.itline.jp:/etc/openldap # diff /etc/rsyslog.conf.org /etc/rsyslog.conf
59a60
> local4.* /var/log/ldap
zakato.itline.jp:/etc/openldap # service rsyslog reload
zakato.itline.jp:/etc/openldap # ldapadd -x -W -D "cn=Manager,ou=zakato,dc=itline,dc=jp" -f test.ldif
Enter LDAP Password:
adding new entry "ou=zakato,dc=itline,dc=jp"
ldap_add: Already exists (68)
zakato.itline.jp:/etc/openldap # tail /var/log/ldap
Apr 18 23:45:04 zakato slapd[6289]: conn=4 fd=13 ACCEPT from IP=[::1]:54463 (IP=[::]:389)
Apr 18 23:45:04 zakato slapd[6289]: conn=4 op=0 BIND dn="cn=Manager,ou=zakato,dc=itline,dc=jp" method=128
Apr 18 23:45:04 zakato slapd[6289]: conn=4 op=0 BIND dn="cn=Manager,ou=zakato,dc=itline,dc=jp" mech=SIMPLE ssf=0
Apr 18 23:45:04 zakato slapd[6289]: conn=4 op=0 RESULT tag=97 err=0 text=
Apr 18 23:45:04 zakato slapd[6289]: conn=4 op=1 ADD dn="ou=zakato,dc=itline,dc=jp"
Apr 18 23:45:04 zakato slapd[6289]: conn=4 op=1 RESULT tag=105 err=68 text=
Apr 18 23:45:04 zakato slapd[6289]: conn=4 op=2 UNBIND
Apr 18 23:45:04 zakato slapd[6289]: conn=4 fd=13 closed
zakato.itline.jp:/etc/openldap # ldapsearch -x
2025-04-06(Sun) 瞬間再燃F1ブーム
始まりは学生時代の修学旅行の夜であった。ぼちぼち寝る時間というところで、同室の誰かが「F1観ようぜ!」とテレビを点けた。当時は興味がなかったので、寝たいのに迷惑だと思った。オープンホイールのクルマをカッコイイとは思わなかったし。しかし、観ているうちに引き込まれていた。もしかしたら、あれは1990年のアメリカグランプリだったかも。セナとアレジのバトルに見覚えがある。あれですっかりアレジのファンになってしまった。
で、1991, 93, 94年と鈴鹿に行き、その後もしばらくは深夜の番組を楽しみに観ていたが、日本グランプリを富士でやったことにはシラけたのを覚えている。気づけば、地上波での放送もなくなり、ニュースのヘッドラインを読む程度の興味レベルに。2016年には、気まぐれに鈴鹿にプラクティスの1日目だけ観に行ったりもしたが、いつしかレギュレーションもチームもドライバもあやふやな認識レベルにまで落ちてしまっていた。
んが。今シーズンの頭。日本人ドライバの角田の評価が不当に低い、というようなニュースを目にしたかと思ったら、いきなりトップチームの一角であるレッドブルに昇格が決定だと!? トップチームに日本人というのは、ようやくの悲願の達成ではないか。Red Bullは飲まないし、ORACLEも大キラいだけれども、ちょうど鈴鹿から出走とのこと。そりゃ、観戦するしかないぜ! ……と思ったら、やっぱり地上波ではやらないらしい。
自分は例のフジテレビ問題については擁護寄りだ。番組が始まってみると、いつものTRUTH、いつもの解説陣で実家に帰ったような気分だ。まさに、そういうのでいいんだよフジテレビって感じ。しかし、みんな白髪だらけ、シミだらけ、爺さんだらけになっとるなw。人のことも言えんけども。