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-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

  さて。これで完了である。これにより「Shift + Ctrl + F12」を押すごとに、端末のイメージカラーをサイクリックに変更することができる。

  画像の説明

  なお、注意深くマクロを読めばわかるが、単にサイクリックに変えているだけでなく、一発目だけはタイトルバーの記述によって特定の色に変化するようになっている。よって「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側で文字列の終端処理をちゃんとしとらんようである。まぁ、大して実害はないのでそこはあきらめよう。

  しかしこの色、コダわって微調整していると、どこまでもイジり続けてしまいそうだ……グリーンディスプレイはこんな色ではない!! もっとこうキューっと……とかね。それよりなによりTERATERMは全画面モードをサポートしたりしないのかなぁ、オマケにインターレース風表示とかして……こんな感じだ。うぅむ、シブい。

  画像の説明


2010-04-06(Tue) LDAPに浸かる

  というわけで、 先日、東京にてねっとりとLDAPの研修を受けさせてもらったので、自分の環境でも動かしてみるのである。

  Fedora12には、openldap-2.4.19系が乗っているのだが、ロクに説明もなく、LDAPサーバであるslapdの設定ファイル関係の様相が、ゴッソリと変わってしまっているようだ。

  というわけで、試行錯誤した結果を、以下にまとめておく。

  まずは関連パッケージのインストール兼アップデート。

zakato.itline.jp:/root # yum install openldap openldap-servers openldap-clients

  で、いきなりだが、生成されたばかりの、空のLDAPのDBを抹殺。

zakato.itline.jp:/root # rm -rf /var/lib/ldap/*

  LDAPサーバである、slapdの設定に入る。一応、元の設定ファイルをバックアップ。

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

  これまた奇妙な手順だが、bak ファイルを、本来の場所にコピー。

zakato.itline.jp:/etc/openldap # cp slapd.conf.bak slapd.conf

  LDAPの管理者パスワードを生成しておく。これは、設定、ではなく、生成、なので、画面表示されたものがハッシュ化されているとはいえ、パスワードそのものである。

zakato.itline.jp:/etc/openldap # slappasswd
New password: 
Re-enter new password: 
{SSHA}+zaTN/KKRmbEvh3MMru+tD5AS9fWatt5

  slapdの設定を行う。

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

  上記の設定を、設定ディレクトリであるslapd.dの下にldif化する前に、LDAPのDBの設定を加えておく。

zakato.itline.jp:/etc/openldap # cp -a /usr/share/doc/openldap-servers-2.4.19/DB_CONFIG.example /var/lib/ldap/DB_CONFIG

  これまた不可解な手順だが、既存の設定ディレクトリを空にした後、設定ファイルのテスト機能を用いて、設定をldif化する。なんか、ちょっと怒られるが気にするな。

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)

  どうも、バグ……というよりは、rpmとしての煮詰めが足りないだけなのだろうが、設定ファイルやLDAPのDBの所有者を変更してやる。

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

  で、ようやく、LDAPサーバ、起動ッ!!

zakato.itline.jp:/etc/openldap # service slapd start
slapd を起動中:                                            [  OK  ]

  さっそく、動作チェックしたいところだが、そのためにはLDAPクライアントの設定を行う必要がある。

zakato.itline.jp:/etc/openldap # cp -a ldap.conf ldap.conf.org
zakato.itline.jp:/etc/openldap # vi ldap.conf

  特に指定がなければ、自分の上のLDAPを見に行きなさい、ということ。

zakato.itline.jp:/etc/openldap # diff ldap.conf.org ldap.conf
9a10
> BASE	ou=zakato,dc=itline,dc=jp

  さて、動作チェックのためのテスト用のデータ、すなわちレコードを登録するldifファイルを書く。

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"

  うまくいかなかったら、ログを見ると解決が早い。/var/logの下にログを吐く設定にしておく。

zakato.itline.jp:/etc/openldap # cp -a /etc/rsyslog.conf /etc/rsyslog.conf.org 
zakato.itline.jp:/etc/openldap # vi /etc/rsyslog.conf

  なぜか、LDAPはlocal4にログを吐くので、それを出す設定を加えて、rsyslogをリロード。

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

  フツーに検索するには、ldapsearchを実行する。

zakato.itline.jp:/etc/openldap # ldapsearch -x

  <まだつづく>


2025-04-06(Sun) 瞬間再燃F1ブーム

  始まりは学生時代の修学旅行の夜であった。ぼちぼち寝る時間というところで、同室の誰かが「F1観ようぜ!」とテレビを点けた。当時は興味がなかったので、寝たいのに迷惑だと思った。オープンホイールのクルマをカッコイイとは思わなかったし。しかし、観ているうちに引き込まれていた。もしかしたら、あれは1990年のアメリカグランプリだったかも。セナとアレジのバトルに見覚えがある。あれですっかりアレジのファンになってしまった。

  で、1991, 93, 94年と鈴鹿に行き、その後もしばらくは深夜の番組を楽しみに観ていたが、日本グランプリを富士でやったことにはシラけたのを覚えている。気づけば、地上波での放送もなくなり、ニュースのヘッドラインを読む程度の興味レベルに。2016年には、気まぐれに鈴鹿にプラクティスの1日目だけ観に行ったりもしたが、いつしかレギュレーションもチームもドライバもあやふやな認識レベルにまで落ちてしまっていた。

  んが。今シーズンの頭。日本人ドライバの角田の評価が不当に低い、というようなニュースを目にしたかと思ったら、いきなりトップチームの一角であるレッドブルに昇格が決定だと!? トップチームに日本人というのは、ようやくの悲願の達成ではないか。Red Bullは飲まないし、ORACLEも大キラいだけれども、ちょうど鈴鹿から出走とのこと。そりゃ、観戦するしかないぜ! ……と思ったら、やっぱり地上波ではやらないらしい。

  世界的なスポーツなのに、本国でテレビ中継なしって、新幹線の停車駅なのに鈍行しか止まらないみたいなのありかよ、と思いつつ、こうなりゃしゃーない。CSのフジテレビNEXTを契約するぜ!

  画像の説明

  自分は例のフジテレビ問題については擁護寄りだ。番組が始まってみると、いつものTRUTH、いつもの解説陣で実家に帰ったような気分だ。まさに、そういうのでいいんだよフジテレビって感じ。しかし、みんな白髪だらけ、シミだらけ、爺さんだらけになっとるなw。人のことも言えんけども。

  結局、金、土、日と、ほぼF1ベッタリで過ごしてしまった。まぁ、角田はやや残念だったし、決勝もやや退屈ではあったが、徐々にレギュレーションもチームもドライバも認識がクッキリとしてきて、それなりのドラマが楽しめた。なんだか、以前に比べてすべてが煮詰まりすぎていて、ものすごい接戦で息苦しいほどだったな。でも、ニュースのヘッドラインを読むだけで済ましていたら、間違いなくもったいないと思える内容ではあったよ。

  フジテレビNEXTは最低5月末までの契約になる。しばらくは観戦できるなぁ。