2010年2月22日月曜日

[PHP][Symfony]: Symfonyプロジェクト内にSymfonyライブラリを含める

require_once dirname(__FILE__).'/../lib/vendor/symfony/autoload/sfCoreAutoload.class.php';
多数のSymfonyプロジェクトを扱っていて困るのは、既にリリースして安定稼働中のSymfonyプロジェクトと、新規で開発するSymfonyのバージョンが異なるというケースだ。
一応Symfony公式ページではupdate方法も書かれているが、安定稼働中の本番サイトのバージョンアップはやはりリスクが大きい。
なので、バージョンの違うSymfonyを共存させる方法を書いておく。

基本的にはSymfonyのライブラリディレクトリを丸ごとプロジェクトディレクトリ内(SF_ROOT以下のどこか)にコピーし、コンフィグファイルにそのディレクトリを指定してやれば良い。

古いバージョンのSymfonyだと、config/config.phpというファイルがあり、ここにSymfonyのパスを指定するようになっている。これを「dirname(__FILE__)."/../pear/symfony"」などに変えてやれば良い。

$ cat config/config.php
<?php

// symfony directories
$sf_symfony_lib_dir = '/usr/local/lib/php/symfony';
$sf_symfony_data_dir = '/usr/local/lib/php/data/symfony';
最近のバージョンの場合は、config/ProjectConfiguration.class.phpというファイルに設定があるので、最初にあるinclude行を

require_once dirname(__FILE__).'/../lib/vendor/symfony/autoload/sfCoreAutoload.class.php';

といった形で書きかえる。これでプロジェクトを丸ごと他のサーバに移動したときなども、問題なくSymfonyごと移行することができる。

[Windows Vista]: Windows Vistaでハイパーターミナルを使う

仕事でとあるシリアルデバイスを叩くことになったのだが、手元のVistaにハイパーターミナルが入っていなかった。どうやらVistaには標準でハイパーターミナルはインストールされていないらしい。
他のシリアル通信ソフト(SerialDebuggerなど)を使えば良いのだが、デバイスのマニュアルにはハイパーターミナルを使った利用方法しか書いていなかったので、一応ハイパーターミナルでいじるほうが無難と思い、調べてみた。


どうやらWindows XPからhypertrm.exeとhypertrm.dllを持ってくれば動くらしい。hypertrm.exeはC:\Program Files\Windows NTにあり、hypertrm.dllはC:\WINDOWS\system32にある。
これらの二つのファイルをローカルの同じフォルダにコピーしてくれば動作する。ただ、新しい接続のプロファイルを設定する際のアイコンが以下のように全て白くなってしまう。


別に実害はないのでこのまま利用しているが、もしかすると他にも悪影響があるかもしれない。
ちなみに、普通にシリアルターミナルやファイルの送受信を使っている範囲では問題は出なかった。


2010年2月19日金曜日

[VMWare]: VMWare Playerを使っていてもメモリサイズを変更する方法

前回の記事に関連して,VMWare Playerを使っているときの仮想マシン構成の変え方について.

基本的にVMWareはMacであれWindowsであれLinuxであれ,拡張子vmxというファイルに設定が書かれている.vmxファイルはただのテキストファイルなので,テキストエディタで編集することができる.変更可能な項目については以下のサイトが詳しい
仮想マシン構成.vmx - VMware まとめ Wiki
よく変更する項目としては,以下の二種類くらいだろう
  • memsize: メモリサイズ.MB単位で記述する
  • *.present: デバイスを有効にするかどうか.TRUEで有効,FALSEで無効
とりあえずこれだけ覚えておけばVMを他に持って行ったときも安心だと思う.

2010年2月18日木曜日

[VMWare]: VMWare FusionのVMイメージはWindowsのVMWare Serverでは動かない

手元のMacBook AirのVMWare FusionでWindows Vistaを走らせ,その上でVisual Studioを走らせて開発していたのだが,いかんせんMacBook Airではパワー不足で開発に支障が出るほどの遅さ(主にメモリサイズが原因)のため,余っていたWindowsマシンにVMをコピーして走らせることにした.

その時のmemo
※:最終的にはVMWare Serverでは動かなかったため,VMWare Playerをインストールして動かした.

コピー元環境
  • MacBook Air
  • VMWare Fusion 3
  • VM: Windows Vistaの載った合計25GB程度のイメージ
コピー先環境
  • Thinkpad X61 tablet
  • VMWare Server 2.0.2

 単純にMacBook AirとThinkpadをLANで接続し,ホームディレクトリの「Virtual Machines」ディレクトリ内にあるVMイメージをThinkpadへコピーし,VMWare Server側でAddしてみたところ,vmware-hostdが強制終了してしまった.何度か再起動して試してみても,毎回VMを読み込むところで落ちる.
 調べてみたところ,どうやらFusionの採用しているvmdkのバージョンにVMWare Serverが対応していないのが原因のようだ


 一応VMWare Fusion側でvmdkをダウングレードしてからVMWare Serverに持ってくれば起動できるようだが,25Gのイメージをまた処理してコピーし直す時間が惜しかったので,VMWare Playerを試してみた.バージョンは3.0

VMWare Player

VMWare Playerは仮想マシンの構成変更ができないのでやや不便なのだが,一応vmxファイルを直接編集すればメモリ量の変更などの最低限の修正は可能.インストール時にVMWare Serverをアンインストールさせられるので注意.

インストール後は,vmxファイルがVMWare Playerに関連づけられるので,ダブルクリックすればVMが起動した.
こちらはきちんと最新のvmdkに対応しているようで,問題なく起動した.

2010年2月9日火曜日

[Linux]: Linuxでコマンドラインからテープバックアップ

昔書いたテープバックアップのスクリプト.PHPだけど.
商用のバックアップソフトなどを使わないフリーソフトのみの構成.

  1. mtコマンドのためにmt-stパッケージをインストールする
  2. テープデバイスのデバイスファイルを確認する(ここでは/dev/nst0)
  3. mt -f /dev/nst0 statしてきちんとデバイス情報が取れるかを確認
  4. 以下のスクリプトを実行.TAPE_DEV, BACKUP_DIRは必要に応じて書き換える

#!/usr/local/bin/php
<?php
define('MT', '/bin/mt');
define('TAPE_DEV', '/dev/nst0');
define('BACKUP_DIR', '/home');

$descriptorspec = array(
0 => array("pipe", "r"), // stdin is a pipe that the child will read from
1 => array("pipe", "w"), // stdout is a pipe that the child will write to
);

$cwd = BACKUP_DIR;
$process = proc_open(MT.' -f '.TAPE_DEV.' stat', $descriptorspec, $pipes, $cwd);
$onlineFlag = false;

if (is_resource($process)) {
while($buff = fgets($pipes[1], 4096)){
if(strpos($buff, "ONLINE") !== false){
$onlineFlag = true;
}
}

if($onlineFlag){
ini_set('max_execution_time', 0);
system("tar zcf ".TAPE_DEV." ".BACKUP_DIR);
system(MT." -f ".TAPE_DEV.' eject');
}

$return_value = proc_close($process);

echo "command returned $return_value\n";
}
?>

ちなみにこのスクリプトではnst0を対象としているので,書き込んだ後テープは自動で巻き戻されない(no rewindのn).
毎回巻き戻しをしたければ,st0を対象にすれば良い.

2010年2月5日金曜日

標準化とガラパゴス

絵文字が開いてしまった「パンドラの箱」第7回--そして舞台はダブリンから東京へ

携帯/モバイル端末における絵文字の標準化についての話.

元々この種の利用は日本が先んじており,議論されている標準化のベースも日本の携帯電話の影響を非常に強く受けている.
なのに,標準化に出てきている企業はGoogle/Apple,EUが中心という何ともガラパゴス日本らしい話.

ものづくりの強い日本と言われていたのが中国などの台頭によって弱まってきた昨今,僕はソフトウェア・情報産業にもっと力を入れていかなければ行けないと思っている(自分がソフトウェア屋なこともあるが).
ハードウェアは様々な仮想化・抽象化・標準化により,どこが作っても大差ないという状況になってきてしまっている.現在市場に出回っているノートPCやデスクトップPCは仕様だけ見ればほとんど同じような製品であり,実際にその中身も台湾のOEM製品で組み立てられており,そこに日本の技術力を見ることはできない.
唯一例外と言えば,モバイルに代表される特殊な基盤を使わないと行けない小型端末なのだが,日本以外ではB5サイズクラスの小型PCに対する需要は低く,悪い意味でガラパゴス化していってしまっているように感じる.

日本国内の技術を元にした標準化が進むことによって,国内で作っていた製品をそのまま海外で販売する事が容易になるし,ソフトウェアの修正も最小限で済む.良いことづくしに見えるのだが,国内キャリアはそうは思っていないようで,相変わらず国内の少ないパイを奪い合っている.
# 他にも日本発の技術の標準化という看板が付くので,国際的な発言権の様なものが得られるかもしれない

あ,でもキャリアとしては端末自体を作っているわけではないから標準化に取り組む意義は薄いのかも知れない.でも絵文字の標準を決めているのはキャリア側だからキャリアがこういったことに取り組むしか無いと思う.うむむ

ちょっと怖いのは,国内キャリアがこういった国際標準化を無視し続けていつの間にか標準が決まり,日本以外の各国が日本と違う標準で製品を作り続けたとする.そして,いつか必ず日本もグローバル化の波に呑まれるその時,日本だけが全然違う物を使っていて波に乗り遅れてしまうというシナリオだ.
波に乗り遅れてしまえばその後は後追いとなるしかないため,主導権を握ることは難しいだろう.その内国内キャリアも外資に乗っ取られてしまう,なんてこともあるかも知れない.

主導権を取れるはずなのに取りに行かない,というこの状況は危険なものなのではないだろうか?

2010年2月2日火曜日

ホリエモンのメルマガ「堀江貴文のブログでは言えない話」を購読してみた

ホリエモンのメルマガ「堀江貴文のブログでは言えない話」を購読してみた.

第一回の内容は割と穏やかで,朝青龍関連の話題と近況報告,あとは本人が逮捕されたときのことについて書く獄中記の連載第一回という内容だった.
可もなく不可もなくといった内容で,今後はとりあえず様子見と言ったところ.

まぐまぐのページではサンプル号として第一回配信の内容が見られるし,1ヶ月は購読無料なので興味のある人は購読してみては?

[書籍]: フリー~〈無料〉からお金を生みだす新戦略



最近あちこちで平積みされている本.著者はかの有名なAmazonのロングテール戦略についての本を書いたクリス・アンダーソン.内容についてはAmazonのレビューなどを参考にして欲しい.

この本では「稀少」と「潤沢」についての話が書かれており,具体的な過去の例などを通じてこれまで稀少だった物が潤沢になると世の中はどうなっていくのかということについて言及している.
「稀少」なモノに人はお金を払うが,「潤沢」なモノは無料(もしくは無視できるほど安い価格)で提供されるため,それ自体で経済的利益を得ることは難しい.
しかし,潤沢なモノそれ自体で稼がなくても,それによって得られる非経済的な価値(評価と注目)をうまく使えば,それを元に稀少なモノを提供することでお金を稼ぐことはできる,という話.
例えば,ニコ動なんかで趣味で高品質な作品をUPしている人の所に出版社や起業が書籍化や広告コンテンツの作成を依頼するなんていうモデルもこれに含まれるのではないかと思った.

しかし,この本の後半にも書かれていたが,リーマンショック以前の経済状況であればそうした非経済的な価値(例えばユーザー数やアクセス数など)を集めていれば,どこかの起業(西海岸ならGoogle)がその内買収してくれるという回収モデルが確立していたが,現在ではなかなかそうはいかず,早い段階で経済的な利益を得る必要があるという問題が出てきている.
この問題については現在進行中なのでどうなっていくのか分からないが,とにかく話題性を集めてexitする,という戦略はやりにくくなったように思える.

何にせよ,この本はWeb界隈のビジネスに興味がある人,特にこれから自分でサービスを立ち上げてみようと少しでも考えている人にはお勧めだと思う.既存のビジネスモデル(海外なのでそのまま国内では使えないと思うが)の具体例などもあるため,参考になる.
本が分厚くて読む気が起きず,2週間ほど詰んでいたのだが単に紙が分厚いだけだった(350ページくらい)ので,1〜2日もあれば読み切れると思うのでぜひ.