- GIDEON
- GIDEON STAFF BLOG
トイレで自動的に体温測定
日経BP社 - イエイリ建設ITラボ - ITトイレがまた進化!体温測定に使われた驚くべき方法とは
こんなトイレがあったとは! 画期的すぎ。社会が高齢化していく中で毎日トイレで健康診断が出来るというのはかなり有用と思われる。
ESTA
来年(2009年)の1月29日から米国に入国する際は
"電子渡航認証システム(ESTA)" による事前認証が必要になります。
米国国土安全保障省(DHS)は8月1日より、 電子渡航認証システム (Electronic System for Travel Authorization: ESTA)を開始した。 この新しいオンラインシステムは、ビザ免除プログラム(VWP)の一部である。 現在、ESTAのウェブサイトでは任意ので申請を受付けているが、 2009年1月12日からは申請が義務化され、 米国に短期商用・観光目的(90日以下)で渡航予定の VWP参加国のすべてのビザなし渡航者は、 米国行きの航空機や船舶に搭乗する前に オンラインで渡航認証を受けることが必要になる。アメリカ大使館のWebSiteより
今までは3ヶ月未満の短期滞在の場合は I-94W と呼ばれる
米国査証免除プログラム参加国用入国用紙に記入するだけで良かったが、
今後は事前認証が必要になるので注意が必要です。
ESTA による認証は2年間有効との事なので、
出発直前に慌てない様に早めに済ませておくのが良いかも?
セキュリティ情報
FreeBSD 上に以下のセキュリティ上の脆弱性が発見された。
- Bluetooth 関係のカーネルモジュールの BUG に起因する脆弱性
- ftpd サーバにクロスサイトリクエストフォージュリの脆弱性
netgraph 及び bluetooth 関係のカーネルモジュールで、
適切に初期化されていないポインタが存在している事が原因で
発生する脆弱性が存在する。
この脆弱性によりローカルユーザにより任意のコードの実行や
root 権限の奪取、jail からの脱獄が可能となる。
ftpd は汎用目的の ftp サーバの実装の一つであり FreeBSD ベースシステムに含まれているが、 非常に長い文字列により与えられたコマンドの分割処理に問題があり、 結果として任意のコマンドを実行されるなどの危険性がある。
どちらも標準状態では無効になっているので、 明示的に設定している場合以外はそれほど問題はないが、 修正パッチがリリースされているので適用すべきである。
セキュリティニュース
2008.11.11 にMcColo がプロバイダより切断された後の経過をフォローする。
2008.11.15
Srizbi および Rustock の配信サーバ McColo C&C サーバ (米国サンノゼ IPアドレス:208.66.194.22) からの配信が再開した。実はサーバが物理的に撤去されていないことが判明。 まだサンノゼの Market Post Tower で活動を続けているようだ。
2008.11.16
Rustock の配信サーバ C&C サーバが McColo から ロシアのデータセンターに移動した。
2008.11.25
Srizbi に感染しているボットがよみがえった。 新しい実行ファイルに更新され活動を再開した。その配信サーバはエストニアにあり、 ロシア語 (koi8-r) でMIMEエンコードしたスパムであった。 このことから当初ロシアにある SMTP サーバにターゲットにしているようだ。
2008.12.01
Srizbi および Rustock の配信サーバは現在のところ、 大半が停止し、ごくわずかな配信サーバを残すに至った。Srizbi、Rustock に代わって Pushdo が代替ボットになっている。
Cutwail というワームプログラムは迷惑メールの送信および Cutwail を最新にアップデートするために使われるため、 このプログラムの配信を止めることでスパム配信を停止できる。
[http://blog.fireeye.com/research/2008/11/index.html 出典]
GNU Bourne-Again Shell を便利に使う
対話シェルとして使用する bash (1) の
コマンドライン履歴機能の便利な使い方。
bash (1)のコマンドライン履歴機能のうち
イベント指示子、単語指示子、修飾指示子は
オンラインマニュアルにも情報が少ないが、
慣れると非常に便利でキータイプ量も減るので是非マスターしておきたい。
以下の文中で n、m は任意の整数、
foo、bar、baz などは任意の文字列を示します。
機能一覧
イベント指示子 | |
---|---|
!! | 直前に実行したコマンドを実行する |
!-n | n 回前に実行したコマンドを実行する |
^foo^bar !:s/foo/bar |
直前に実行したコマンドの foo を bar に変更して実行する |
!:gs/foo/bar | 直前に実行したコマンドの全ての foo を bar に変更して実行する |
!foo | foo で開始されるコマンドを実行する |
!n |
n 番目に実行されたコマンドを実行する |
単語指示子 | |
!:n | 直前に実行したコマンドの n 番目の引数を取得する |
!^ | 直前に実行したコマンドの 1 番目の引数を取得する |
!$ | 直前に実行したコマンドの最後の引数を取得する |
!* | 直前に実行したコマンドの全ての引数を取得する |
!:n* | 直前に実行したコマンドの n 番目から最後までの引数を取得する |
!:n-m | 直前に実行したコマンドの n 番目から m 番目までの引数を取得する |
!:-n | 直前に実行したコマンドの最初から n 番目までの引数を取得する |
!:n- | 直前に実行したコマンドの n 番目から最後の 1 個前までの引数を取得する |
修飾指示子 | |
:p | コマンドを表示のみして実行しない |
:h | パスのファイル名部分を取り除きディレクトリ名を取得する |
:t | パスのディレクトリ名部分を取り除きファイル名を取得する |
:r | ファイル名の拡張子を取り除き "." の前を取得する |
:e | ファイル名の拡張子を "." 付きで取得する |
イベント指示子
- !! 直前に実行したコマンドを実行する
$ echo foo bar baz foo bar baz $ !! echo foo bar baz foo bar baz
$ echo foo bar baz foo bar baz $ echo FOO BAR BAZ FOO BAR BAZ $ !-2 echo foo bar baz foo bar baz $ !-2 echo FOO BAR BAZ FOO BAR BAZ
!:s/foo/bar
$ echo foo foo foo foo foo foo $ ^foo^bar echo bar foo foo bar foo foo $ echo foo foo foo foo foo foo $ !:s/foo/bar echo bar foo foo bar foo foo
$ echo foo foo foo foo foo foo $ !:gs/foo/bar echo bar bar bar bar bar bar
$ echo foo bar baz foo bar baz $ touch foo bar baz $ !ec echo foo bar baz foo bar baz
$ echo foo bar baz foo bar baz $ echo FOO BAR BAZ FOO BAR BAZ $ !1 echo foo bar baz foo bar baz
単語指示子
- !:n 直前に実行したコマンドの n 番目の引数を取得する
$ echo foo bar baz foo bar baz $ echo !:0 echo echo echo $ echo foo bar baz foo bar baz $ echo !:2 echo bar bar
$ echo foo bar baz foo bar baz $ echo !^ echo foo foo
$ echo foo bar baz foo bar baz $ echo !$ echo baz foo
$ echo foo bar baz foo bar baz $ echo !* echo foo bar baz foo bar baz
$ echo foo bar baz foo bar baz $ echo !:2* echo bar baz bar baz
$ echo foo bar baz FOO BAR BAZ foo bar baz FOO BAR BAZ $ echo !:3-5 echo baz FOO BAR baz FOO BAR
$ echo foo bar baz FOO BAR BAZ foo bar baz FOO BAR BAZ $ echo !:-4 echo foo bar baz FOO foo bar baz FOO
$ echo foo bar baz foo bar baz $ echo !:1- echo foo bar foo bar
修飾指示子
- :p コマンドを表示のみして実行しない
$ echo foo bar baz foo bar baz $ touch foo bar baz $ !e:p echo foo bar baz
$ echo /foo/bar/baz /foo/bar/baz $ echo !$:h echo /foo/bar /foo/bar
$ echo /foo/bar/baz /foo/bar/baz $ echo !$:t echo baz baz
$ echo foo.c foo.c $ echo !$:r echo foo foo
$ echo foo.c foo.c $ echo !$:e echo .c .c
社名『ギデオン』の由来
「後顧の憂いのない300人」の戦士を集め、3万人の敵を相手に勝利したという 「ギデオンの300」のエピソードを創業精神としました。
聖書にでてくるダビデ、ソロモンなどの勇者は、もとよりとても強く、 優れた人脈を持つ賢者として描かれています。 一方ギデオンは元来はひ弱で、人脈もなく貧乏だった人ですが、 神の助けを得て王者となりました。
創業初期は、資金もなく、営業力もなく、開発人員も少なく、 状況はギデオンと全く同じでしたが、 「ギデオンの300」を心のよりどころとして一歩一歩事業を展開してきました。
1990年創業からやっと2009年には新社屋を建設するにいたりました。
今後10年には、現在の10倍規模の事業に成長させたいと考えています。
iSCSI Initiator on FreeBSD
ただし残念ながら iSCSI がサポートされているのは FreeBSD では 7系からなので、
FreeBSD 7.0-RELEASE で試してみる。
# kldload scsi_initiator # iscontrol -d -t IPアドレス TargetName=iqn.2004-08.jp.buffalo:TS… TargetAddress=IPアドレス # cat << EOF > /etc/iscsi.conf name { TargetName=iqn.2004-08.jp.buffalo:TS… TargetAddress=IPアドレス } EOF # iscontrol -n name # ls /dev/da* /dev/da0 /dev/da0s1ドライバをロードした後で iscontrol コマンドを実行して target を検索。
検出した TargetName と TargetAddress を /etc/iscsi.conf に設定を保存して、 再度 iscontrol コマンドを実行すると、 ちゃんと /dev/da0s1 が生えてきて普通に使えました。
迷惑メール防止法本日より施行
今回の改正はオプトイン方式( 受信を同意した相手にしか特定の電子メールを送信できなくなる) へ移行した事が一番大きなポイントであるが、 他にも厳罰化や送信者情報偽装の禁止などが盛り込まれている。
FreeBSD 6.4-RELEASE
主な変更は以下の通り
- NFS Lock Manager (NLM) Client
- 暗号化フレームワーク Camellia cipher のサポート
- USB デバイスや GPTへの対応といった boot loader の改良
- DVD インストールイメージの配布開始
- KDE 2.5.10、GNOME 2.22.3 の採用
- BIND、sendmail、OpenPAM などのアップデート
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 を認識している。
さっそくニコニコ動画にアクセスすると動画がちゃんと表示されています。
結構嬉しいです