Kenichi Maehashi's Blog

脳内コアダンプ

RSS
Category: Computer
このシリーズ好きかもしれない。甘ーいシンタックスシュガーをどうぞ。(coffee?) break は不要です。
@echo off

set DATA=hoge

call :_SWITCH "%DATA%" ^
case foobar: CALL_ENGLISH ^
case hoge: CALL_JAPANESE ^
default: CALL_DEFAULT

pause
goto :EOF

:CALL_ENGLISH
echo Hello!
goto :EOF

:CALL_JAPANESE
echo こんにちはこんにちは!
goto :EOF

:CALL_DEFAULT
echo so sweet, isn't it?
goto :EOF


::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:_SWITCH
:: Provides SWITCH syntax.

:_SWITCH_LOOP_START
if "%~2" == "default:" (
call :%~3
goto :EOF
)

if not "%~2" == "case" (
goto :EOF
)

if "%~3" == "%~1:" (
call :%~4
goto :EOF
)

shift /2 & shift /2 & shift /2
goto :_SWITCH_LOOP_START
:_SWITCH_LOOP_END

goto :EOF
Category: Computer
これはアツい。イントロスペクションとはちょっと違うけどw
@echo off & setlocal

:: 通常の変数の代入
set FOOBAR=Hello, world!

:: 通常の変数の参照
echo $FOOBAR is %FOOBAR%

:: 変数の名前を変数に設定しておく
set VAR_NAME=FOOBAR

:: 変数の名前が変数に入っている場合の代入
set %VAR_NAME%=Hello, world! (Variable Name in Variable)

:: 変数の名前が変数に入っている場合の参照
call :GET_VARIABLE %VAR_NAME%
echo $FOOBAR is %VALUE%

:: 以上。
pause > nul
goto :EOF

:: イントロスペクションのためのユーティリティ関数
:::::::::::::::::::::::::::::::::::::::::::::::::::::
:GET_VARIABLE
call :_GET_VARIABLE %%%1%%
goto :EOF
:_GET_VARIABLE
set VALUE=%*
goto :EOF
:::::::::::::::::::::::::::::::::::::::::::::::::::::
Category: Linux
某 SSH サーバ(CentOS 5.2)の一般ユーザで crontab を設定しておくと、
ERROR: failed to open PAM security session: Permission denied
ERROR: cannot set security context
というようなエラーが /var/log/cron に記録されることを発見。

ざっと検索したところ、RHEL の Errata RHBA-2008:0586-5 が見つかった。
* due to an SELinux problem with group permissions, cron jobs may have failed with errors similar to the following:
... snip ...
Note: this issue only occurred when using NFS, for example, systems where home directories are stored on an NFS server.
ということで、vixie-cron 4.1-72.el5 には NFS マウントされた homeDirectory の方々が cron を使えないという問題があるそうな。
チェックしてみたところ、当該サーバに入っているのも 4.1-72.el5 だった。

RHEL5 ではこれを修正した 4.1-76.el5 が 2008/07/22 に出ているようですが、CentOS 5.2 のリポジトリには現時点で無さげ。

で、気になるのが、上の Errata にある
* after crond was restarted or after the first reboot of a system after a
new year (200x-01-01), vixie-cron failed to decode the "day of week" field.
This may have caused cron jobs to run on the wrong day.
バックアップスクリプトとか思いっきり曜日指定で動いてるけど、大丈夫かな?

 *

追記: CentOS 5.3 でアップデートが提供されました。上記の問題は解決していました。
Category: Linux
自宅サーバに Postfix で MTA を立てるお話。

Outbound 25 Port Blocking が敷かれている網内には MTA が立てられない。
仕方ないのでリレーホストを指定しよう...

1. ギガ得プランは ISP(私の場合は So-net)と回線事業者(KDDI)が異なる。
2. メールアドレスは So-net から提供されるので、利用できるのは So-net の SMTP サーバ。
3. でも KDDI のネットワークから So-net の SMTP サーバの 25 番ポートへは行けない。

だめじゃないかこれは! と思いきや...
au one netの動的アドレスにてご自身で構築されたメールサーバをご利用の場合
Outbound Port25 Blockingが適用されメール送信ができない場合、au one netのメールサーバを中継するよう設定変更(※)すると、今まで通りメール送信が可能となります。
Outbound Port25 Blocking: 迷惑メール対策 | au one net
と書いてあったので、au one net は使ってないけど多分いけるだろう、と思って設定を /etc/postfix/main.cf に追加。
relayhost = [relay-mta.auone-net.jp]
 *

さて、これでようやく本来の目的へ...
mdadm --monitor --scan --test -1
メール来た。
# md 壊れないといいなー。
Category: Apple
先日新しい iMac を購入した。
MB418/J (Early 2009 / 24-inch 2.66 GHz) をベースに、Keyboard と Mouse を Wireless にして、iWork を加えた。
Bluetooth 接続のキーボードとマウスが突然使えなくなる症状が時々出る(このときはスリープして解決)が、概ね快適。

で、Apple Store で CTO 製品を注文すると海外から発送されるのだが、そのトラッキング(配達状況追跡)の顛末についてメモ。

まず、今回は配送業者が「SCHENKER PTE LTD」、お問い合わせ伝票番号が「HKGxxxxxxxx」だった(x は数字)。
この伝票番号では、西濃シェンカーではなく DB Schenker USA - Shipment Tracking を使わなければトラッキングできない。

上記のサイトで Shipment Tracking Details 画面に辿り着いたら、「STT (Schenker)」と表示されている控える(14 桁の数字)。
History テーブルで、Activity が「In Transit From」となっているところに、どの便で荷物が輸送されてくるかが記載されている。
例えば
JL 88xxxxxx FLT JL0000/dd ETA NRT hhmm/dd
となっていれば、
日本航空, Air Waybill 番号は 88xxxxxx, dd 日のフライト JL0000 便, 到着予定時刻(ETA)は成田空港に dd 日の hh 時 mm 分
と解釈すれば良さそう。
また、Air Waybill は JAL CARGO で別途トラッキングできる(JAL の場合)。

さらに詳細な情報は、先ほど控えた STT (Schenker) という番号を Schenker E-Business というサイトに入力すれば閲覧できる。
「SHIPMENT CONFIRMED AT DESTINATION」となっていれば Schenker の任務完了(国内配送業者に引き渡し)なので、トラッキングは終了。おそらく、その日のうちにヤマトの伝票番号が Apple から届けられる。

 *

ということで、よく荷物の取り違えが起きないなー、とただただ感心しきりなのでした。