2008/11/19

写真を使った動画の補強

http://grail.cs.washington.edu/projects/videoenhancement/videoEnhancement.htm

「この動画からこの柱を取り除いておいて」「この動画の中の窓の反射を取り除いておいて」といった要求をかなり容易にしてくれる技術。これ次世代の動画編集ソフトに組み込まれるんじゃないかな。この機能があるのとないので手間暇が違いすぎる。

日米、ゲームの作られ方

日米、ゲームの作られ方

日本の一般的なゲーム制作会社とBlizzard Entertainmentとの制作過程の違いを書いている。日本の事例はゲームに限らずそこそこの規模のソフトウェア開発会社全般に当てはまると思う。

日本の開発会社ではウォーターフォールを取って下流に流れる程人数が増えるのに対して、Blizzardは人数を減らすらしい。
あり得ないw。仕事がなくなった人は一体何をするんだ?w
非常に興味深い。

ただ、これ"各工程の開発期間"という重要な情報が抜け落ちてるんだよね。
これも目から鱗が落ちるぐらい実は日米で違うのかもしれない。

2008/11/17

Foxmarks

自前サーバにWebDavを仕組むと共に、Firefoxのブックマークを共有化するアドオン・Foxmarksをインストールした。これで各PCでブックマークを共有するのが楽になった。
以下インストールメモ。

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

HTMLのエンコードフォーム

http://kawama.jp/php/encode_html.php

<を&lt;などに変換してくれる。
ブログ作成に地味に便利。感謝。

pwckとgrpck

pwckとgrpckはパスワードファイルとグループファイルに矛盾がないか調査する。
便利だ。

a:hoverをなどを指定しているサイトでid毎、class毎に設定するには?

このブログはリンクにカーソルを合わせたときに背景色が変わるように、CSSで指定している。
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の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版)













配列数100050001000050000100000
PHP40.34秒3.60秒13.17秒266.86秒-
PHP50.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のバグ

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のサイズ変更

vmware-vdiskmanager ってコマンドがあるらしい。

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を小さめに作って,必要な分だけ増やしていくというのが仮想環境だと正解かも。