- GIDEON
- GIDEON STAFF BLOG
ICANNが悪質なドメイン登録業者を取り消し
ITmedia News - 悪名高きドメイン登録業者、ICANNが認定取り消しへ
ICANN - EstDomains Update: Notice of Termination Stayed
取り消しの理由はESTDomainsの社長が有罪になったからとのことで、悪質なドメイン登録を許していたからではない模様。
今回の措置が効果があったとしても、悪質なドメイン登録業者であっても代表者が有罪にならなければ登録業者としての取り消しができないということを示しており、必ずしも良いニュースとはいえない。
php からのディスクアクセス
php からディレクトリにある全ファイルの一覧を取得する処理のパフォーマンスを exec()、popen()、opendir() を利用した処理で比較してみる。
方法は単純にテスト用のディレクトリに 500 ファイルを用意して、 それぞれの関数を使用してファイル名一覧を取得する処理を 10回実行した場合の処理速度を計測する。
exec("ls -1") | 0.774762 |
popen("ls -1") | 0.865914 |
opendir() | 0.136642 |
外部 shell を実行しないので opendir() が早いだろうとは予想していたが、
これほど差が出るとは思わなかった。
パフォーマンスを優先する場合は勿論だが、
余計なプロセスを生成しないので opendir() が地球に優しい様だ。
<? $func = array("byls", "bypopen", "byopendir"); for($i=0; $i<3; $i++){ $dist = array(); $start[$i] = gett(); for($j=0; $j<100; $j++) $dist[$j] = $func[$i]("/tmp/test"); $end[$i] = gett(); printf("%-10s:%f\n", $func[$i], $end[$i] - $start[$i]); } function byls($dir) { exec("ls -1 $dir", $output); return($output); } function bypopen($dir) { if(($fp = popen("ls -1 $dir", "r"))){ while($buf = fgets($fp)) $output[] = trim($buf); pclose($fp); } return($output); } function byopendir($dir) { if($dir = dir($dir)){ while($file = $dir->read()) $outout[] = trim($file); $dir->close(); } } function gett() { $t = gettimeofday(); return((float)($t['sec'] + $t['usec'] / 1000000.0)); } ?>
ついでにシェルの glob なパターン指定を利用して 指定した文字列にマッチするファイル名の一覧取得を行う場合のテストもしてみた。
20071203000 から 20071203499 までの500個のファイルの中から、 200712032?? にマッチするファイル名の一覧取得で時間を計測してみる。
exec("ls -1 200712032??") | 0.883770 |
popen("ls -1 200712032??") | 0.902392 |
opendir() -> preg_match("/200712032../") | 0.188792 |
glob("/200712032../") | 0.203928 |
exec()、popen() が遅いのは相変わらずだが、
preg_match() の呼出しが意外に早かったのが驚き。
正規表現のマッチ処理って基本的に相当時間がかかる筈なんだが…
glob() はファイルシステムに自分でアクセスしてる様なので早い。
複雑なパターン指定が必要なら preg_match() の方が柔軟だが、
シェルに渡せる程度のパターン指定なら glob() を利用するのが
可読性やメンテナンス性と性能が両立できて良いのかも?
Tweak
-
iTunes 8 から表示される様になった曲の右側の
iTunes Store へのリンク矢印を表示させない
$ defaults write com.apple.iTunes show-store-arrow-links -bool FALSE
-
iTunes 8 のブラウザ表示時にジャンルを表示させない
$ defaults write com.apple.iTunes show-genre-when-browsing -bool FALSE
-
Spaces が自動で切り替わるのを防止する
$ defaults write com.apple.dock workspaces-auto-swoosh -bool NO
-
ドラッグで Spaces を移動する際の待ち時間を設定する
$ defaults write com.apple.dock workspaces-edge-delay -float 0.5
-
HelpViewer のウィンドウをフローティングではなくする
ヘルプが最前面にこなくなるので便利
$ defaults write com.apple.helpviewer NormalWindow -bool YES
-
ネットワークドライブに .DS_Dtore を作成しない
$ defaults write com.apple.desktopservices DSDontWriteNetworkStores true
-
X11 の終了確認ダイアログを無効にする
$ defaults write org.x.x11 no_quit_alert false
-
Mail.spp で添付ファイルのインライン表示を無効にする
$ defaults write com.apple.mail DisableInlineAttachmentViewing -bool yes
-
Front Row の iTunes トップソングの国を指定する
$ defaults write com.apple.frontrow MusicStoreFrontID 国コード
代表的な国コード111111 デフォルト (アメリカ) 143442 フランス 143443 ドイツ 143444 イギリス 143447 フィンランド 143449 アイルランド 143460 オーストラリア 143461 ニュージーランド 143462 日本
NTFS-3G
しかし MacFuse と NTFS-3G を利用すると NTFS でフォーマットされたディスクにも
何の問題もなく書き込みができるので便利である。
MacFuse も NTFS-3G も公式サイトではバイナリも配布されているが、
MacPort からも簡単にインストールできる。
NTFS-3G を利用するためには既に Leopard によってマウントされてる
NTFS のディスクのマウントを解除した後で NTFS-3G によるマウントを実施する。
$ sudo port install ntfs-3g # MacPort から ntfs-3g をインストール(依存関係で MacFuse もインストールされる) FuseFS を利用するためにここで再起動する $ /usr/sbin/diskutil list # 現在マウントされているボリュームを表示しデバイス名を確認しておく : 3: Microsoft Basic Data Windows Xp 64.9 Gi disk0s3 $ mkdir -p /Volumes/NTFS # 最初の1度だけマウントポイントとなるディレクトリを作成する $ /usr/sbin/diskutil umount disk0s3 # Leopard によって既にマウントされているディスクのマウントを解除する $ sudo /usr/local/bin/ntfs-3g /dev/disk0s3 /Volume/NTFS -o volume=NTFS,default_permissions,locale=ja_JP.UTF-8,uid=UID,gid=GIDntfs-3g コマンドのオプションに uid、gid を指定すると マウントされたディスクに含まれるファイルやディレクトリの オーナ、グループを指定できる。
アクセスは非常に遅いが NTFS パーティションに書き込みできるのは嬉しい。
Time Machine
標準状態だと Time Machine のバックアップ先は直接接続されたドライブ、 もしくは Apple 純正の Time Capsule しか選択できないのだが、 以下の手順を実施する事により samba で共有しているネットワークドライブに バックアップする事ができた。
ただし、この方法は公式にサポートされた機能ではないので、 バックアップの消失等の危険性がある。
あくまでも自分自身の責任において実施して下さい。
- samba で新規の共有を作成する → 共有する名称は任意でかまわない
- ターミナルから以下のコマンドを実行する
$ defaults write com.apple.systempreferences TMShowUnsupportedNetworkVolumes 1
名前: | ネットワークドライブに作成されたイメージのファイル名 |
場所: | 任意の場所 |
ボリューム名: | 任意の名称 |
ボリュームサイズ: | バックアップに必要となる容量を指定する |
ボリュームフォーマット: | Mac OS 拡張 (ジャーナリング) |
暗号化: | なし |
パーティション: | 単一パーティション - Apple パーティションマップ |
イメージフォーマット: | スパースバンドル・ディスクイメージ |
ネットワーク越しにスパースバンドル・ディスクイメージを作成できないので、 "場所" はローカルディスクを指定する必要がある。
一番最初に" イメージフォーマット" を スパースバンドル・ディスクイメージに設定する事により 実際のハードディスク容量よりも大きなサイズが指定できる。
Flash9 on FreeBSD!
新しい環境で再起動した後 ports から linux-flashplaye9 をインストール。
インストール後、
$ nspluginwrapper -i /usr/local/lib/npapi/linux-flashplugin/libflashplayer.soを実行してから firefox を起動し、 about:plugins すると、ちゃんと flashplayer 9 を認識している。
さっそくニコニコ動画にアクセスすると動画がちゃんと表示されています。
結構嬉しいです