カテゴリー : 2006年 4月

Windows XP でのタイマー処理あれこれ


ちょっと変わった利用方法ですが..工夫次第でできることの例です。
ここでは sleep というコマンドを利用しますが、標準では sleep というコマンドが存在しないため、Cygwin をインストールしてパスを通すか、ここ(Nifty フォーラム)にあるように次のコードを sleep.bat として c:\windows あたりに保存してください。

@echo off
REM Sleep.bat [秒数]
set /a wtime=(%1+0)*1000
echo WScript.Sleep %wtime% > tmp.vbs
cscript //NoLogo tmp.vbs
del tmp.vbs
set wtime=

 
- スリープタイマーをかけて Windows を自動終了させる
→ 一定時間後に Windows を自動シャットダウンする(以下は2時間後の例/2時間=7200秒)
※管理者である必要があります

sleep 7200 && shutdown -s

 
- 朝になったら目覚しがわりの音楽を再生する
→ 一定時間後に音楽 morning.mp3 を再生する(以下は8時間20分後の例)
※ .mp3 が再生ソフトに関連づけされていて、カレントディレクトリに morning.mp3 があることが前提。

sleep 30000 && morning.mp3

 
追記:
(2006-05-10) sleep について加筆修正しました。

MySQLコーディング標準


MySQL は Java やその他の言語みたいにコーディングの規則が決まっていません。
決まっていないとバラバラになって困ったりするのでずっと探しているのですが、いっこうに見付からないため、それなりの理由があって実践している命名規則についてまとめがわりにメモしておきます。
- テーブル名、カラム名は全て小文字にし、単語はアンダースコア(_)で区切る。

user_detail.name

- カラム型とその修飾子は小文字にする。

int, text, unsigned, auto_increment, default

- その他の SQL の識別子(SELECT, UPDATE, INSERT, WHERE, IS, AS, NOT, NULL など)は全て大文字にする。

SELECT COUNT(*) FROM foo WHERE name = ‘John’;

 
テーブル名やカラムを小文字とアンダースコアの組合せに統一するのは、プラットフォームによって非互換になるのを防ぐというシンプルな理由からです。
また、その他については SHOW CREATE TABLE クエリや、mysqldump で出力されるクエリの記法に則っています。テーブル名やカラムを大文字でなく小文字にすることで、MySQL のシグネチャと、カラム,テーブル名との区別がつけられます。
 
参考:
- MySQL naming standards(thescripts.com フォーラム)

脆弱正診断ツール


- Nessus
脆弱性管理用のサーバ/検査を実行するクライアントの対で動作し、外部の任意のホストの脆弱性を診断できるツール。
Nessus サーバは Linux/BSD 等でしか動作しませんが、クライアントは Windows 版もあります。
なかなか便利です。
構築したサーバにうっかり脆弱性があったら洒落になりませんし。

Linux でバイナリ処理をする


標準で入っている od というプログラムでバイナリダンプが可能です。

$ # /bin/sh を 2 バイト単位で 10 進ダンプする
$ od /bin/sh
$ # /bin/sh を 1 バイトずつ 16 進ダンプする
$ od -t xC /bin/sh
$ # /bin/sh を、1 バイトずつ 16 進ダンプし、同時に ASCII 文字でも確認する
$ od -t xCa /bin/sh

また、任意の ASCII コードを出力するのに、echo を利用することできます。

$ # 0×50 0×51 0×52 の文字(‘P’,'Q’,'R’)を、末尾に改行なしで出力する。
$ echo -en ‘\x50\x51\x52′
# Hello と改行つきで出力する。
$ echo -e ‘\x48\x65\x6C\x6C\x6F’

また [2005-07-04] のエントリで perl を使ったバイナリ出力について書いています。ご参考までに。
その他バイナリエディタ関係:
- hex(ports: japanese/hex)
日本語文字列対応のバイナリダンプツール。
- HexEdit(ports: editors/hexedit)
Emacs ライクなバイナリエディタツール。
- Emacs の Hexl モードを使う
- hi
vi ライクなバイナリエディタ。
参考:
- Manpage of OD
- Manpage of ECHO

IE の月例パッチ更新で Flash のマウスオーバーの仕様が変更される


http://www.macromedia.com/jp/devnet/activecontent/articles/devletter.html
http://www.onflow.jp/blog/archives/2006/04/20064activexief.html

.htaccess で php.ini の設定を上書きする


php_value (mod_php が提供するディレクティブ) を使う事で、 .htaccess で php.ini での設定を上書きすることが可能です。
これにより、Web サービス単位で php.ini でできる設定を使い分けるということが可能になります。

php_value output_handler mb_output_handler
php_value mbstring.language Japanese
php_value mbstring.internal_encoding SJIS
php_value mbstring.http_input auto
php_value mbstring.http_output SJIS
php_flag mbstring.encoding_translation On

ただし、mb_output_handler を利用する場合は、php.ini で指定してしまうと、.htaccess での設定を中途半端に反映するため文字化けする可能性があるため、php.ini の output_handler はデフォルト値のままにしておくほうがいいでしょう(この説明について間違っていれば指摘お願いします)。

output_handler =

 
参考:
- 【 ほでなすPHP 】 PHPのインストール -> 「.htaccess」ファイルでの設定
- Re: .htaccessにてphp_value が設定できないパラメータがある(PHP-Users)
設定の際の注意。E_* (E_ALL など)を利用する際は定数ではなく対応する定数の値(2047など)で指定しましょう。

Smarty + overLIB で簡単にポップアップ


overLIB は簡単に見栄えのいいポップアップ表示を行うためのフリーの JavaScript ライブラリです。overLIB は PHP/Smarty なしでも勿論動作します。
overLIB 単体を利用する場合は次のようにします(公式マニュアルより抜粋)。

<!– 必須の初期化処理(ひとつのページにつき一度だけ必要) –>
<div id=”overDiv” style=”position:absolute; visibility:hidden; z-index:1000;”></div>
<script language=”JavaScript” src=”overlib.js”><!– overLIB (c) Erik Bosrup –></script>
<!– マウスオーバー時に ポップアップを表示する –>
 <a href=”javascript:void(0);” onmouseover=”return overlib(‘This is an ordinary
  popup.’);” onmouseout=”return nd();”>here</a>

Smarty のテンプレートでは popup_initpopup というカスタム関数を使えば、さらに簡単に overLIB を利用する事が可能です(Smarty の公式マニュアルより)。

{* popup_initは popup を使う前に、<BODY>から</BODY>の間で一度だけ呼び出す必要があります(訳注: この文章は原文とは異なります ;) *}
{popup_init src=”/javascripts/overlib.js”}

{* マウスオーバー時にポップアップウィンドウを表示するリンクを作成する *}
<a href=”mypage.html” {popup text=”This link takes you to my page!”}>mypage</a>

{* popup の text ではリンク等の HTML 文も利用可能です *}
<a href=”mypage.html” {popup sticky=true caption=”mypage contents”
text=”<UL><LI>links<LI>pages<LI>images</UL>” snapx=10 snapy=10}>mypage</a>

参考:
- overLIB 公式
- overLib 日本語リファレンス
- Smarty 公式
- Smarty 2.6.6 日本語マニュアル

Nagios – サーバ監視用オンラインツール


システムとネットワークの監視アプリケーションだそうです。
ユーザ数多いんですね。
 
同僚経由その2。
参考:
- NagiosでWebサーバを頑丈にする方法(@IT)
- Nagios 日本語情報サイト

Selenium – HTMLベースの HttpUnit


http://www.openqa.org/selenium/index.html
 
HTMLでテストケースを書いて、ブラウザで実行できる Web 用の xUnit 系テストツール。実装は JavaScript です。
同僚経由で知りましたが、かなりいいです。
 
追記: これを Firefox の拡張で行えるようにした Selenium IDE というものもあります。
ブラウザでの動作を記録してそこからテストを生成してくれるというものです。
テストの生成から実行まで全て短時間で GUI でできるというのが素晴らしいです。作成したテストはもちろん本家 Selenium でも使えます。これから何度もお世話になりそう。
なお、この拡張は日本で作られた Selenium Recorderがベースになっています。
 
参考:
- webアプリケーションテストツール seleniumがヤバすぎる(2nd life)
- SeleniumIntegration
- [Web アプリケーションテストツール Selenium のテスト記述から開放してくれる Firefox 拡張 Selenium IDE|http://cl.pocari.org/2006-02-15-3.html]]

全ての携帯で表示できる絵文字の表記方法


&#XXXX;

XXXX にはドコモの絵文字の SJIS 10進数 ASCII コードが入ります。16進数の表記や unicode のアスキーコードでないことに注意してください。

例:
&#63647; ←太陽のマーク

あるいは、SJISのバイナリコードをそのまま埋め込む事でも表示可能です。
メール送信の際は前者が利用できないため後者の方法を使います。
 
絵文字のバイナリを直接入力するための支援ツールがドコモ公式サイトにて配布されているのでそちらを利用すると便利かもしれません。
参考:
- i絵文字
- iモード絵文字変換対応表