2008/08/31

PHPでバイナリデータを取り扱う その1

PHPでバイナリデータを生成するにはpack()関数を使用する。
http://jp.php.net/manual/ja/function.pack.php

例えば以下のように文字列と混在させても問題ない。
// 0x03 0x00 0x20 0x61 0x0D 0x00A 0x04
$binData = pack("n", 0x0300) . " a\r\n" . pack("c", 0x04);
「PHP バイナリ」でググってもなかなかpack()関数までたどり着けないのでメモ。


これだけじゃあなんなのでもう一つ。

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/29

sysprepで環境複製用のマスタ・イメージの作成

インストール作業を最低限にするマスタディスクを作るには、sysprepを使えば良い。

http://www.atmarkit.co.jp/fwin2k/win2ktips/553sysprep/sysprep.html

2008/08/28

Windowsで動作しているVMWareのサービスをワンクリックで起動

VMWareは非常に便利だが、常時起動でないコンピュータで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)の解像度変更

VMWare Serverのguest OSにCentOS 5をインストールすると、デフォルトのままでは解像度が800x600までしか設定できない。変更の仕方をメモしておく。

カーネル再コンパイル用の開発環境をインストールする。
このとき、カーネルの開発環境のバージョンが動作しているものと一致するか気をつける事。

# 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

iPhone WinAdmin

iPhone用アプリWinAdmin

リモートデスクトップができるらしい。
ほっ、ほすぃ・・・。

2008/08/21

boost::python

最近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 Calendarを使っている。
欠点はいくつかある(予定と実績の両方を書けない、開始時刻だけを書けないなど)。
だが、欠点を覆い隠すぐらい最高に良いのがカレンダーの共有化機能だと思う。
プロジェクト毎にカレンダーを細分化して、関係者にそのカレンダーを見てもらっている。また、オフショア開発の際に盲点になるのが現地の祝日・祭日である。これはGoogleがアドインのカレンダーとして用意してくれていて、非常に便利だ。
有志による公開カレンダーも増えてきていて、最近お気に入りなのがIT勉強会カレンダー。た、たまらん。メンテナーの方には足を向けて眠れない。

2008/08/18

仮装CD/DVD環境 Alcohol 52%

Alcohol 52% Free Edition

CDをイメージとしてハードディスクにバックアップしたいときは今までCloneCDDaemon 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

2008/08/13

「ようこそ画面」に「Administrator」を表示する

レジストリの
HKEY_LOCAL_MACHINE→SOFTWARE→Microsoft→Windows NT→CurrentVersion→Winlogon→SpecialAccounts→UserList

に値AdministratorでDWORD値1を作成する。

参考: 日経トレンディネット

2008/08/12

Windows XPにてメイリオフォントを使用する

下記のページにて「Windows XP 向け ClearType 対応日本語フォント」をダウンロード&インストール

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.

いくつか補足しておく。

  1. New York TimesはRank 9なのに対してTimes Square ChurchはRank 5
  2. [new york times ***]で他の単語を検索すると、高確率でNew York Timesに飛ぶ

googleは世界全体のデータを見ている。対して、SEO業者は対象となるページを小手先で変更するだけである。それでもあなたは、SEO業者にカスタマイズを頼みますか?

ブログ開始

情報ってあるところにどんどん集まるんですよね。
蓄えていてもしょうがないので、仲間内での交流を兼ねて公開する事にしました。


私達の知識がどこかのデスマーチを救う事を願います。

--
taka