2008/12/26
2008/12/24
俄然猛威を振るい続けるUSBワーム
http://blog.trendmicro.co.jp/archives/2334
私はなぜそんなにUSBメモリからの感染が広がっているか今まで知らなかったのでメモ。
「XPなら自動実行に関するダイアログが出るのになんで?」って思っていたがその認識は間違いだった。
>自動実行させるための「Autorun.inf」の書式には「openコマンド」と「shellコマンド」というものがあります。
>
> 「openコマンド」はメディアの挿入をトリガーにしてファイルを実行させるものです。(一般的に「自動再生」と呼びます)
> 「shellコマンド」はドライブのダブルクリックや右クリックメニューなどをトリガーにしてファイルを自動実行させるものです。
>
> これらのため、「Autorun.inf」の挙動は環境によって差異が生まれてきます。
うーんでもこれってOSの欠陥のような気がするんだけど気のせいだろうか・・・。
今のところは自動実行を無効化するのが最も無難な対策のようだ。
2008/12/18
Fedora 10
Fedora 10には/etc/init.d/networkによる従来のネットデバイス起動方法と、/etc/init.d/NetworkManagerによる起動方法の2種類があるようだ。で、NetworkManagerが各種ファイルを勝手に書き換えるので見事にはまってしまった。
手順は次のようになる。
NetworkManagerを停止する。
/etc/init.d/NetworkManager stop
system-config-network-gui
を利用して、eth0をNetworkManagerの対象外にする。
system-config-network-tui
を利用して、IPアドレスの割り当てとDNSを設定する。
chkconfig NetworkManager off
chkconfig network on
以上。
2008/12/17
2008/12/16
2008/12/13
ソース公開の障害
なんか問題ないかな?と簡単に調べてみた。
結論としては著作者人格権の問題にひっかかりそうだ…。
プロジェクトの一部は弊社だけでなく、協力会社が担当している。そのとき、開発した協力会社に著作者人格権というものがあるらしい。その中には公表権なるものが含まれていて、公開するかどうかを開発サイドが意志決定を行う事ができるらしい。これを覆すためには、著作者人格権の不行使特約を結ばなければならない(参考)。
む、結んでるのかな…(汗。そんなの見た記憶がない。
2014/06/28追記:ソースコード引渡義務の有無 大阪地判平26.6.12(平26ワ845号)これ勘違いしてる人すっごいいそう。
/var/log/messagesの -- MARK --の出力を停止
/etc/default/syslogdに
SYSLOGD="-m 0"
を追加。
2008/12/12
Native Client
しかしこう次々と画期的なものがリリースされると、正直勉強速度が全く追いつかないなぁ(´・ω・`)
2008/12/09
Eclipse vs Visual Studio
結論が出なさそうなトピックだが、立場によって意見が違うのは面白い。
2008/12/08
2008/12/06
2008/12/05
ntp
玄箱の時刻を正すため、ntpサーバをインストールした。
# aptitude update
# aptitude install ntp ntpdate ntp-doc
/etc/ntp.confを最寄りの公開NTPサーバに設定する。
server ntp-os01.ocn.ad.jp iburst
server ns.riken.go.jp iburst
各種機関別のNTPサーバリストはここ。
設定ができたか確認する。
# ntpq -p
2012-11-04 追記:
リソースがもったいないのでcronで走らせることにした。ここが詳しい。でも、調べてて気づいたけど、debianだと起動時に時間調整してくれるんですね。とりあえずそれでどれぐらいずれるか様子見てみよう。
2008/12/04
2008/12/03
VMWareゲストOS(Windows2000)の解像度をワイド対応にする
- VMWare toolをインストール
- Edit→Preferences→Display。Autofit windowをチェック。Autofit guestをアンチェック
- ゲストOSを起動
- レジストリエディタを開いて\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet\Services\vmx_svga\Device0に文字列Resolution.KVMで値1680x1050を作成
- ゲストを再起動
- 画面のプロパティから1680x1050を選べばよい
2009/01/27 追記:VMWare 2系列と、そのドライバをインストールすれば普通にワイドに対応している。
関連 - Direct3D on VMWARE
- 仮想HDDのサイズ変更
- VMWare ゲストOS上のlinuxでホイールマウスを使う
- VMWare ゲストOS上のlinuxの時刻が狂う
- Windowsで動作しているVMWareのサービスをワンクリックで起動
- VMWare guest OS(CentOS 5)の解像度変更
2008/12/02
楽天版MapReduce・HadoopはRubyを活用
フレームワークより、高速化のために使用しているアルゴリズムに惹かれた。
アルゴリズム面では、例えば嗜好の似たユーザーかどうかを判定するのに、「ローカリティ・センシティブ・ハッシング」(LSH:Locality Sensitive Hashing)というテクニックを使っているという。LSHを使うと、ユーザーの購買や評価の履歴が作る個別ベクトルの距離が小さい場合、高い確率でハッシュ値が一致するため、ベクトル間の距離をすべて計算せずに済むという。また、商品情報から辞書とマッチする言葉を抽出する際には検索関連で知られた技術「ダブル・アレイ・ツリー」(Double Array Trie)を使うことで高速化しているという。
ふむふむ。いつか参考にさせてもらおう。
後、高速化のためJRubyを採用しているのも面白い。
また今後はJava VM上で動くRuby処理系のJRubyへの対応も検討する。Cで書かれたオリジナルのRubyでは移植性を重視したためスレッド処理はネイティブスレッドに対応しない。このためマルチコアの恩恵を受けづらい。JRubyであれば処理の並列化が容易ではないかという。
Add-onな環境のほうが速度改善までの費用対効果が期待できるってのは皮肉な話だなぁ。
2008/12/01
2008/11/29
Windows Media Playerでスクリーンショットを撮る方法
2008/11/28
2008/11/27
2008/11/26
2008/11/24
Canonical XML
Canonical XML和訳
2008/11/23
rep2あらためp2
2ちゃん閲覧環境のp2をインストールした。
こいつをインストールすれば外でアクセスしたときも自宅でアクセスしたときも同じブックマークと履歴を利用できる。また、携帯から2ちゃんにアクセスするときも非常に便利だ。インストールログをメモ。
[CentOS 5の場合]
ダウンロードして、設置して、rep2用にユーザを作成。
# wget http://iij.dl.sourceforge.jp/p2-php/33316/rep2_v1_8_40.zipPHPのインストール。
# unzip rep2_v1_8_40.zip
# mv rep2 /var/www/html
# useradd -d /var/www/html/rep2 -g apache -s /sbin/nologin rep2
# chown -R rep2.apache /var/www/html/rep2
# yum install php php-mbstringPHPがきちんと動いている事をブラウザで確認。
# /etc/init.d/httpd restart
http://www.hogehoge/rep2/phpinfo.php
にアクセスして表示すれば良い。
データ保存用ディレクトリを作成。
# mkdir /var/www/html/rep2/data設定ファイルrep2/conf/conf_hostcheck.phpで、アクセスするIPアドレスを登録する。whoisコマンドを使うか、ここのリストを見てIPアドレスを登録する。この際、conf/conf_hostcheck.confをいじるのだが、custom変数を1にするのを忘れないこと。
# chmod 770 /var/www/html/rep2/data
これで携帯と自宅で見た2ちゃんの内容を同期できる。
追記 2012/02/17:lib/UA.phpを変更することで、androidでも携帯用インタフェースを利用できるらしい。
追記 2012/02/17:
認証機能はrep2ではなく、apache2標準のDigest認証を使うことにした。
# sudo a2enmod auth_digest/etc/apache2/sites-available/rep2を作成。
<Directory "/var/www/rep2">認証ファイルを作成する。
AuthType Digest
AuthName "Members' Zone"
AuthDigestDomain /rep2/
AuthUserFile /etc/apache2/.htdigest
Require valid-user
</Directory>
# sudo htdigest -c /etc/apache2/.htdigest "Members' Zone" hogerep2用の設定を有効化する。
# sudo a2ensite rep2最後にapache2を再起動してOK!
[Debian wheezyの場合]
ほぼ上記と同じだが、ユーザーは下記で作成。
# sudo adduser --system --ingroup www-data --no-create-home p2また、ここを参考にした。
2008/11/22
ブラウザだけで画面操作の動画を録画
プロジェクトの関係上、画面操作をしている動画を非常によく撮影する。
その時に非常に便利。movファイルしか保存できないが、何もインストールしなくても(Javaは必要)キャプチャーできるのは便利すぎます。
IE Tab
Firefox用アドオンのIE Tabをインストールした。
あらかじめ設定した特定のページだけIEのエンジンを使ってタブを開いたりする事ができるのが素敵。
2008/11/21
ジョエル・テスト
- ソース管理システムを使っているか?
- 1オペレーションでビルドを行えるか?
- 毎日ビルドを行うか?
- 障害票データベースを持っているか?
- 新しいコードを書くまえにバグを修正するか?
- 更新可能なスケジュール表を持っているか?
- 仕様書を持っているか?
- プログラマは静かな労働環境にあるか?
- 買える範囲で一番良い開発ツールを使っているか?
- テスト担当者はいるか?
- プログラマを採用するときにコードを書かせるか?
- 「廊下での使い勝手テスト」を行っているか?
どの程度のプロジェクトがこれを守ってることやら・・・
2008/11/20
ある日付以降に修正されたファイルの検索の仕方
/etc以下で、ある日付以降に修正された物を探す場合、
# touch -t MMDDHHmm /tmp/dummy
# find /etc -type f -newer /tmp/dummy -print
2008/11/19
写真を使った動画の補強
「この動画からこの柱を取り除いておいて」「この動画の中の窓の反射を取り除いておいて」といった要求をかなり容易にしてくれる技術。これ次世代の動画編集ソフトに組み込まれるんじゃないかな。この機能があるのとないので手間暇が違いすぎる。
日米、ゲームの作られ方
日本の一般的なゲーム制作会社とBlizzard Entertainmentとの制作過程の違いを書いている。日本の事例はゲームに限らずそこそこの規模のソフトウェア開発会社全般に当てはまると思う。
日本の開発会社ではウォーターフォールを取って下流に流れる程人数が増えるのに対して、Blizzardは人数を減らすらしい。
あり得ないw。仕事がなくなった人は一体何をするんだ?w
非常に興味深い。
ただ、これ"各工程の開発期間"という重要な情報が抜け落ちてるんだよね。
これも目から鱗が落ちるぐらい実は日米で違うのかもしれない。
2008/11/17
Foxmarks
以下インストールメモ。
WebDav用の設定を/etc/httpd/conf.d/bookmarksync.confに作る。
#
# This is to permit URL access to WebDav
#
Alias /bookmarks/ "/var/www/html/bookmarks/"
<IfModule mod_dav.c>
DAVMinTimeout 600
<Location /bookmarks>
DAV On
Allow from all
</Location>
</IfModule>
<Location "/bookmarks">
AuthType Basic
AuthName "Authorization Realm"
AuthUserFile "/var/local/basic_passwd/webdav
Require valid-user
FileETag None
</Location>
htpasswdを使って、AuthUserFileを作る。
apacheに設定を再読み込みさせた後、ここからアドオンをダウンロードする。
インストールするとウィザードが起動してくるが、今回は自前でサーバを用意するのでさくっと無視。設定を開いて「アカウント」タブの"ユーザ名"と"パスワード"を入力。「詳細」タブの"自分のサーバを使用"にチェックを入れてURLを入力する。
このとき、ディレクトリではなく保存するファイル名まで入れる事に注意すること。また、シンクロしないときはETagを記述する必要がある。
どんどんFirefoxラブになっていくなぁ・・・。
2009/01/20 補足
ETagについてはここを参照。
2010/01/17 補足
Xmarks Bookmark and Password Syncに名称が変更されたようです。
2008/11/16
a:hoverをなどを指定しているサイトでid毎、class毎に設定するには?
a:hover {
color: $linkColor;
background-color: #ccddee;
}
ただタイトルのロゴのように、同じページ内で背景色を変えたくない場合もある。
そういう場合は下記のように記述している。(IDの場合)
#header a:hover {
background-color: #fffaf0;
}
classで指定している場合は以下のような指定方法がいいようだ。
(hogehogeクラスのa:hoverを個別に指定したい場合)
a:hover.hogehoge {
background-color: #fffaf0;
}
ただbloggerのデフォルトでは下記のような指定方法を記述していた。
h1.title a, h1.title a:visited {
color: $headerTextColor;
text-decoration: none;
}
ちなみにW3Cのサンプルはまた違う書き方だったりする。
http://www.y-adagio.com/public/standards/tr_css2/selector.html#link-pseudo-classesより引用
<a class="external" href="http://out.side/">external link</a>その場合,次の規則により,リンクは青になる。A.external:visited { color: blue }
どれを使えばいいのやら・・・。
ssh-keygenで鍵を作ってrsyncでパスワードなしでファイルを同期
rsyncで自動でsshログインするようにした。
まずは既存の鍵がどのような種類か確認。ssh-keygen -l -f $HOME/.ssh/id_dsa.pub
SSH protocol version 2の場合(暗号強度が弱いため現在非推奨)
DSAキーを生成。local$ ssh-keygen -t dsa -N ""
Generating public/private dsa key pair.
Enter file in which to save the key (/home/name/.ssh/id_dsa):
Your identification has been saved in /home/name/.ssh/id_dsa.
Your public key has been saved in /home/name/.ssh/id_dsa.pub.
local$ scp -P 22 .ssh/id_dsa.pub name@remote:
remote$ cat id_dsa.pub >>.ssh/authorized_keys2
remote$ chmod 600 .ssh/authorized_keys2
openssh 7に対応させる場合
2048bit以上のRSA証明書を作成する。local> ssh-keygen -b 2048 -t rsa -N "" (生成するキーファイル名を指定する場合は-fをつける)
local> cd $HOME/.ssh
local> scp -P 22 id_rsa.pub name@remote:
remote> cd $HOME
remote> cat id_rsa.pub >> .ssh/authorized_keys
remote> chmod 600 .ssh/authorized_keys
remote> rm id_rsa.pub
crontabにスクリプトを追加して自動化にさせる
バックアップスクリプトの作成
#!/bin/sh RSYNC=${RSYNC:-/usr/bin/rsync} SSH=${SSH:-/usr/bin/ssh} SSH_PORT=${SSH_PORT:-22} USER=${USER:-ubuntu} ORIGINAL_SERVER=${ORIGINAL_SERVER:-hoge.com} ORIGINAL_DIRECTORY=${ORIGINAL_DIRECTORY:-/some/foo/} BACKUP_DIRECTORY=${BACKUP_DIRECTORY:-/some/foo} LOGGER=${LOGGER:-/usr/bin/logger} $RSYNC -avz -e "$SSH -p $SSH_PORT" $USER@$ORIGINAL_SERVER:$ORIGINAL_DIRECTORY $BACKUP_DIRECTORY if [ $? = 0 ]; then $LOGGER "Backup OK: $0" else $LOGGER "Backup NG: $0" fi登録
$ sudo crontab -u name -e
0 12 * * * /sbin/backup.sh
注意としてHOMEディレクトリのotherにrとxの権限がある必要がある。
2011/03/23 追記
ファイルサーバ用のユーザと権限を用意したときにはまりました。/etc/ssh/sshd_configのStrictModesをyesにしていると、groupに対して書き込み許可を出しているときに自動ログインができないんですね。一般ユーザでは自動ログインができていたため、原因をなかなか特定できずにあがきました。/var/log/auth.logをよく見ていれば、
Authentication refused: bad ownership or modes for directory /home/shareというメッセージが表示されていたんですが...
2013/06/18 追記
virtual boxの仮想ファイルのバックアップ時、ローカルマシンの負荷を抑えるように変更した。ioniceってのがあるんですね。
大量・巨大なファイル操作を低負荷で行う方法
新しいCygwinをインストールして痛い目を見ました。突然ログインできなくなったんですね。調べてみるとopenssh 7からDSAがデフォルト無効化になっているためでした。
sshで複数アカウントのBitBucketを使う場合はこことかここを参考
2008/11/13
PHP4のunserialize関数は遅い
例えば下記のようなコードをPHP4とPHP5で実行速度を比べてみる。
// $arrayは連想配列とする。
$serializeData = serialize($array);
$startTime = getmicrotime();
// アンシリアライズを単純に繰り返す。
for ( $i = 0; $i < style="color: rgb(0, 0, 153);">$i++ ) {
$unserializeData = unserialize($serializeData);
}
$endTime = getmicrotime();
echo $startTime - $endTime;
function getmicrotime(){
list($usec, $sec) = explode(" ",microtime());
return ((float)$sec + (float)$usec);
}
配列数が増えてくると実行速度がどのように変化するか調べてみた。
(ただしWin32版)
配列数 1000 5000 10000 50000 100000 PHP4 0.34秒 3.60秒 13.17秒 266.86秒 - PHP5 0.19秒 1.17秒 2.45秒 15.06秒 50.67秒 増加量 179% 309% 538% 1772%
遅いだけならまあ関数を使わないだけで済むのだけど、実はsessionを利用するときに問題となる。
http://jp.php.net/manual/ja/intro.session.php より引用。
全ての登録された変数は、リクエストが終了した後に、シリアル化されます。・・・
マニュアルではどういう意味か分かりにくいが、実際は連想配列をセッションに保存する時はserialize/unserializeされている(と思われる)。
つまり処理の高速化の目的で巨大な連想配列をセッションに保存して利用しても、PHP4では大して早くなっていない可能性がある。
まあ特別な理由が無ければPHP5を使おうという結論で・・・。
2008/11/12
PHP 5.2.6(Win32)におけるphp_pgsql.dllのバグ
これを導入してしまうとpgsql関係の関数が全く使えなくなる。
http://bugs.php.net/bug.php?id=44905
http://bbs.php.gr.jp/topic-63.html
既に導入してしまった場合はFIX済みのDLLを上書きして再起動すればよい。
ちなみにXAMPPは未だにバグが含まれるPHP5.2.6を使っているので注意が必要だ。
http://www.apachefriends.org/jp/xampp-windows.html
私が確認したところXAMPP1.6.7~1.6.8で発生しているようだ。
バグが発見されたのが今年の5月なんだからいい加減直そうよ(^^;;;
仮想HDDのサイズ変更
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/740bigvmdisk.html
試してみたらHDDは増えたが,パーティションは自分で拡張しないといけないらしい。
当然といえば当然か。
PartitionMagic が一昔前だと有名だったのだが 最近はもう存在してないのね。
というわけで フリーのパーティション操作のソフトを探してみた。
EASEUS Partition Manager
http://www.forest.impress.co.jp/lib/sys/hardcust/defrag/easeuspart.html
最初にHDDを小さめに作って,必要な分だけ増やしていくというのが仮想環境だと正解かも。
2008/11/08
価格.comは一体どうやって儲けているのか
情報提供だけで売上の4%近く稼いでるのが興味深い。
今生産者と販売会社が直接やり取りをするため、仲卸の人達は凄まじく不景気らしい。生き残るにはこのへんの情報提供をすべきだと思うんだよなぁ。中間マージンを抜く人は、中間マージンを抜くだけの価値を示さないといけない。
2008/11/07
iSkoot
そこで提供しているiSkootというアプリケーションを使えば、携帯電話からキャリアの回線を使って、iSkootのサーバ越しにskypeユーザと会話をする事ができる。所謂Skype-phoneがプロバイダの回線を使うのに対して、携帯キャリアの通信を使うのが大きな違いだ。
で、iskootが$19Mの資金を調達したという記事があったので、何となくiSkootのウェブページを見ていたのだが、とんでもない物を発見してしまった。どうしよう((c)銭形)。
FAQによると
Q. 他のインターネットボイスチャットのプロバイダーもするつもりはありますか?
A. はい。私達はもうすぐ他のサービスについてもサポートするつもりです。
Q. 多人数チャットをサポートするつもりはありますか?
A. 私達はこの機能をすぐに追加したいと考えています。
うはwwwwww夢がひろがりんぐwwwwww
2008/11/01
Webアプリ開発環境としてのSafari
ASPじゃないWeb開発に使うアプリとしてはFirefoxが多いと思う。特にJavaScriptばりばりのやつ。
でも、これを読んでSafariもいいなと思った。
ネットワークタイムラインとかかなり面白そう。
たぶん面白いだけだけどw
2008/10/31
2008/10/28
PDFだけでなくPNG・JPG・TIFF・BMP・PCX・PS・EPS形式でも出力可能なフリーの仮想プリンタ「PDFCreator」
Office2007からはPDF出力ができるようになったようだが、そんな都合良くライセンスが移行できてないのが現状だ。
それを打開してくれそう。
2008/10/24
2008/10/20
行動ターゲティング広告はどこまで許されるのか
なかなか法律が時代に追いついてきませんね。
結局は性善説に頼るしかないのかなーっと。
2008/10/10
2008/10/07
TrueCrypt6.0の罠
http://www.truecrypt.org/docs/?s=paging-file
当然のことながら、Windows自体スワップが無効化されるので物理メモリが少ない場合はチェックを外す方が無難。
間違えて設定した場合は下記の手順で元に戻す。
- マイコンピュータを右クリックして「システムのプロパティ」を呼び出す。
- 「詳細設定」タブ→パフォーマンスの設定ボタンをクリックしパフォーマンスオプションを開く。
- 「詳細設定」タブ→「仮想メモリ」→「変更」ボタンをクリック。
- “選択したドライブのページングファイルサイズ”を元の設定に戻す。
- 分からない場合はカスタムサイズにチェックを入れ、初期サイズと最大サイズを同じにすれば良い。
2008/09/29
USBメモリでTrueCrypt
USBメモリでTrueCryptを使う場合の情報をまとめている人が既にいたのでリンク
http://d.hatena.ne.jp/simpraight/20070508
このバッチファイルは便利。
2008/09/28
2008/09/26
VMWare ゲストOS上のlinuxでホイールマウスを使う
Section "InputDevice"
Identifier "Mouse[0]"
Driver "vmmouse"
Option "Device" "/dev/input/mice"
Option "Name" "VMware Point Device"
Option "Protocol" "ImPS/2"
Option "ZAxisMapping" "4 5"
EndSection
のように変更した。実際にはProtocolとZAxisMappingを追加しただけ。
2008/09/25
Stack Overflow公開
プログラマのためのQ and A用掲示板。非常に見やすい。Wikipedia形式を取っていて、後から編集ができ、かつ内容にたいしてタグがつけられる。めちゃくちゃ有用だ。
日本に移植されねぇかなぁ・・・。
2008/09/24
VMWare ゲストOS上のlinuxの時刻が狂う
Google先生によるとhttp://pooh.gr.jp/item-2249.htmlのアプローチを取る人が多いようだ。
私は
# vmware-config-tools.pl
をした後
# vmware-toolbox
でツールボックスを起動して「Time synchronization between the virtual machine and the host operating system」にチェックを入れて解決している。
やってる内容は同じかもだけどん。
vmware-config-tools.plの導入の仕方については/2008/08/vmware-guest-oscentos-5.htmlを参照されたし。
2008/09/23
ファイル操作の排他制御
某所より引用:http://www.din.or.jp/~ohzaki/perl.htm#File_Lock
ファイルを読み込み,それを加工した上で書き込む場合の安全な排他制御の手順を書いておきます.
1.ロックする
2.ファイルを読み込む
3.一時ファイルに書き込む
4.一時ファイルを元ファイルにリネームする
5.アンロックする
2008/09/21
ブックマーク記述言語
そこで誕生したのがブックマークの中間ファイル記述言語、
XBEL(XML Bookmark Exchange Language)。
アプリケーション固有のブックマークのデータはmetadataタグに記述するようだ。
全てのブラウザがサポートすれば良いが・・・・・しないだろうなぁ・・・。
2008/09/19
2008/09/18
Firefox スマートブックマーク (1)
Firefoxのスマートブックマークはかなり使えそうだ。
ブックマークはどうしても肥大化してしまうので、訪れていないサイトを表示して時々削るのがいいかなぁ・・・。
2008/09/13
PHPでバイナリデータを取り扱う その2
バイナリデータから一部のデータを削除、変換したいときがある。
だが残念ながらereg_replace()はバイナリセーフではない。
このような場合はereg_replace()ではなくpreg_replace()やmb_ereg_replace()、str_replace()などのバイナリセーフな関数を使用する。
例)
str_replace(pack("c", 0x00), '', $subject);
ereg関数などのPOSIX 正規表現関数はバイナリセーフで無いので使用を避けた方が無難である。
2008/09/05
Tree Style Tab
Firefoxのアドオン、Tree Style Tabのインタフェースが直感的で秀逸すぎる。
sleipnirからの移行も遅ればせながら考え始めた。
2008/08/31
PHPでバイナリデータを取り扱う その1
http://jp.php.net/manual/ja/function.pack.php
例えば以下のように文字列と混在させても問題ない。
// 0x03 0x00 0x20 0x61 0x0D 0x00A 0x04「PHP バイナリ」でググってもなかなかpack()関数までたどり着けないのでメモ。
$binData = pack("n", 0x0300) . " a\r\n" . pack("c", 0x04);
これだけじゃあなんなのでもう一つ。
strlen()関数やsubstr()関数はバイナリセーフである。
http://jp.php.net/manual/ja/function.strlen.php
// 0x03 0x00 0x20 0x61 0x0D 0x00A 0x04
$binData = pack("n", 0x0300) . " a\r\n" . pack("c", 0x04);
echo strlen($binData); // 結果は7
// Windowsの改行コードである"\r\n"
// が長さ2と数えられているのにも注意
$cho = substr($bindata, 1, 3); // 0x00 0x20 0x61 が格納される
これは他の言語から入った人だとびっくりする結果ではなかろうか?
2008/08/30
2008/08/29
sysprepで環境複製用のマスタ・イメージの作成
http://www.atmarkit.co.jp/fwin2k/win2ktips/553sysprep/sysprep.html
2008/08/28
Windowsで動作しているVMWareのサービスをワンクリックで起動
そこで私は、VMWareの一連のサービスをコンパネから手動起動に変更してVMWareを使用するときだけ起動コマンドを叩くようにしている。
net %1 "VMware Registration Service"
IF "%1" == "stop" net %1 "VMware Authorization Service"
net %1 "VMware DHCP Service"
net %1 "VMware NAT Service"
net %1 "VMware Virtual Mount Manager Extended"
上記のコマンドをvmwareService.bat等のコマンドにした後、コマンドプロンプトから
> vmwareService start
と打てば良い。
2008/08/23
VMWare guest OS(CentOS 5)の解像度変更
カーネル再コンパイル用の開発環境をインストールする。
このとき、カーネルの開発環境のバージョンが動作しているものと一致するか気をつける事。
# yum install gcc
# yum install binutils-devel
# yum install kernel-devel.i686
VMWareに用意されているtoolboxが納められたISOファイルをマウントする。VMWare Serverの場合はデフォルトでC:\Program Files\VMware\VMware Serverにlinux.isoとしてある。その中のRPMをインストールする。
ドライバを再構築する。
# vmware-config-tools.pl
ネットワーク環境を設定する。
# /etc/init.d/network stop
# rmmod pcnet32
# rmmod vmxnet
# depmod -a
# modprobe vmxnet
# /etc/init.d/network start
Host OSと時刻を同期させるようにする。
# vmware-toolbox
再起動するとXの設定を再設定するように聞かれるので、モニタの解像度を正しいものにする。
2008/08/22
2008/08/21
boost::python
まず、
#include <Python.h>
は、使うべきではない。
#include <boost/python/detail/wrap_python.hpp>
とするべきである。何故ならVC++にはauto-linkingなる非常に便利でおせっかいなシステムがあり、
In Debug mode, this auto links boost_python-vc80-gd-1_35.dll which is
the Boost Python debug lib which does not define PY_DEBUG which is not
the behaviour I want. The Boost Python docs makes some reference to
using BOOST_DEBUG_PYTHON to change the behavior of wrap_python.hpp
だからである。もっとも、
but
no such support seems to exist to modify the auto-linking behavior.
というバグもついてくるけれど\(^o^)/
参考:http://mail.python.org/pipermail/c++-sig/2008-April/013457.html
2008/08/20
IT勉強会カレンダー
欠点はいくつかある(予定と実績の両方を書けない、開始時刻だけを書けないなど)。
だが、欠点を覆い隠すぐらい最高に良いのがカレンダーの共有化機能だと思う。
プロジェクト毎にカレンダーを細分化して、関係者にそのカレンダーを見てもらっている。また、オフショア開発の際に盲点になるのが現地の祝日・祭日である。これはGoogleがアドインのカレンダーとして用意してくれていて、非常に便利だ。
有志による公開カレンダーも増えてきていて、最近お気に入りなのがIT勉強会カレンダー。た、たまらん。メンテナーの方には足を向けて眠れない。
2008/08/18
仮装CD/DVD環境 Alcohol 52%
CDをイメージとしてハードディスクにバックアップしたいときは今までCloneCDとDaemon Toolsを使っていた。
だが、CloneCDのTrial版には限りがあるし、Deamon Toolsは変なものまでバカバカ入れてくれるのでいまいち好きではなかった。
その代替として最近使い始めたのがAlcohol 52%のFree Edition。CCD方式を作れてマウントできて、最初から日本語化されている。素晴らしい。
2008/08/17
欧米のゲーム開発者はどのハードで作ってる?
ハードより、開発言語の数値に惹かれました。
Another particularly interesting result that discussing trends in programming language. Of those responding, 76% are currently using C++ to make games, with 31% using C#, and 19% using Java/J2ME in their programming efforts. In addition, 9% of those replying still use assembly language in some way.
C#の躍進が凄まじすぎる。
Microsoftはゲーム業界を今後牛耳るんじゃないかなぁ。
2008/08/15
twiddla
ウェブ画面のデザインについて、電話で話しながらイライラした事はないだろうか?
タチコマだって「言語なんてアナクロな情報伝達手段を使っちゃダメだよ」みたいな事を言ってた気がする。
twiddlaはそんな悩めるweb管理者を助けてくれる。
利用するのにアカウントを作らなくて良いのが素晴らしすぎる。
http://www.twiddla.com/
2008/08/14
Windows Server 2008のライセンス体系
最近は仮想環境が広まってるからインスタンス実行権とHyper-V使用権が追記されてるなぁ。
2008/08/13
「ようこそ画面」に「Administrator」を表示する
HKEY_LOCAL_MACHINE→SOFTWARE→Microsoft→Windows NT→CurrentVersion→Winlogon→SpecialAccounts→UserList
に値AdministratorでDWORD値1を作成する。
参考: 日経トレンディネット
2008/08/12
Windows XPにてメイリオフォントを使用する
http://www.microsoft.com/downloads/details.aspx?FamilyID=f7d758d2-46ff-4c55-92f2-69ae834ac928&DisplayLang=ja
ClearTypeを有効にする方法
http://support.microsoft.com/kb/306527/
ClearType系フォントを使う場合には、必ずClearType Tuner PowerToyを使って環境によって調整する必要がある。
チューニングするしないでかなり変わる。
ClearTypeをチューニング
http://www.microsoft.com/typography/cleartype/tuner/Step1.aspx
いずれのページもInternet Explorerでアクセスすることが必要。
iconspedia
最近、外注先に
「こんなアプリケーションを作るんだけど・・・」
と、競合他社のアプリケーションを見せたら、経過報告のときに全てのアイコンが競合他社そのまんまでびっくりしたことがある。
そうならないために、アイコンなどの素材については常日頃から気を配りたい。
http://www.iconspedia.com/
2008/08/10
現在のSEO手法についての疑問
とある番組でSEO業者の意見が流れていた。
彼は言っていた。
「私達に任せればあなたのページを検索エンジン用に作り変えて、サーチエンジンの上位に表示させますよ」
と。
一昔前ならこの意見には耳を傾けるべきものがあった。少し詳しい人なら、人間から見て内容を全く同一のままランキングを改善させる手法を幾つか思いつくと思う。
だが、最近はこの手の意見を言う企業を私は懐疑的な目で見る。
コストはユーザビリティーの向上・コンテンツの充実にかけるべきものであり、決して検索エンジンを騙すような行為にかけてはいけないと思う。それは一時的な成果しか産まない。
最近、googleがページランクの仕組みがどのような事をもたらすか情報を公開している。
http://googleblog.blogspot.com/2008/07/technologies-behind-google-ranking.html
その中にこのような文章がある。
Identifying critical concepts in the query allows us to return much more
relevant results. For example, our algorithms understand that in the query [new
york times square church] the user is looking for the well-known church in Times Square and not for articles from the New York Times.
いくつか補足しておく。
- New York TimesはRank 9なのに対してTimes Square ChurchはRank 5
- [new york times ***]で他の単語を検索すると、高確率でNew York Timesに飛ぶ
googleは世界全体のデータを見ている。対して、SEO業者は対象となるページを小手先で変更するだけである。それでもあなたは、SEO業者にカスタマイズを頼みますか?