2008/11/29

自動再生をオフにする

USBメモリもCD-ROMもあらゆるドライブの自動再生をオフにする方法
最近USB感染型のウイルスが猛威を振るってるのでやっといたほうがいいかも。

Windows Media Playerでスクリーンショットを撮る方法

Windows Media PlayerでScreenShot(ScreenCast)を撮るには、「ツール」→「オプション」→「パフォーマンス」→「ビデオアクセラレータ」を、なしにすれば良い。

Process Explorer

Process Explorer 11.3 release

2008/11/28

新玄箱 KURO-NAS/X4

新玄箱 KURO-NAS/X4
ktkr!
次買うNASはこれかなぁ・・・。最初からDebian化されてるのも嬉しい。
残念なのは、CPUをもっといいもの積んで欲しかったorz

DreamHost

レンタルサーバ DreamHost がすごい
月間転送量5TBで月1,000円はお買い得だ。

2008/11/27

JSplash

Googleドキュメントを見たときに抱いた感想は、「馬鹿がいる」(褒め言葉)だった。
和物で同じ感想をJSplashを見て抱いた。

フラッシュをJavaScriptとSVGに変換するらしい。

Lenovoにマルウェア

Lenovoのソフトウェアにマルウェアが発見される
IBMの頃はよかった・・・。

2008/11/24

XMLを利用した様々な規格

http://bizex.goo.ne.jp/tool/it/22_209/

XMLを利用した様々な規格。

Canonical XML

XMLデータをやり取りする場合はXML文書を正規化したほうが良い場合がある。XML文書を正規化する規定が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.zip
# 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
PHPのインストール。
# yum install php php-mbstring
# /etc/init.d/httpd restart
PHPがきちんと動いている事をブラウザで確認。
http://www.hogehoge/rep2/phpinfo.php
にアクセスして表示すれば良い。

データ保存用ディレクトリを作成。
# mkdir /var/www/html/rep2/data
# chmod 770 /var/www/html/rep2/data
設定ファイルrep2/conf/conf_hostcheck.phpで、アクセスするIPアドレスを登録する。whoisコマンドを使うか、ここのリストを見てIPアドレスを登録する。この際、conf/conf_hostcheck.confをいじるのだが、custom変数を1にするのを忘れないこと

これで携帯と自宅で見た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" hoge
rep2用の設定を有効化する。
# sudo a2ensite rep2
最後にapache2を再起動してOK!

[Debian wheezyの場合]
ほぼ上記と同じだが、ユーザーは下記で作成。

# sudo adduser --system --ingroup www-data --no-create-home p2
また、ここを参考にした。

日本国内プロバイダのIPアドレスリスト

GeoLite Free Downloadable Databases
国別ネットワークアドレスリスト
プロバイダ・機関別ネットワークアドレスリスト
有料なやつ 1 / 2

NoScript

NoScript

Firefox用アドオンNoScriptをインストールした。サイトごとにJavaScriptのOn/Offを設定できる。操作性も非常に良い。これでCSRFを少しは防げるかな。

2008/11/29 追記
「一時的に許可」というのが素晴らしすぎる。二度と行かないサイトを追加してブラックリストをぶくぶく太らせなくてすみます。

2008/11/22

ブラウザだけで画面操作の動画を録画

Screencast-O-Matic

プロジェクトの関係上、画面操作をしている動画を非常によく撮影する。
その時に非常に便利。movファイルしか保存できないが、何もインストールしなくても(Javaは必要)キャプチャーできるのは便利すぎます。

IE Tab

https://addons.mozilla.org/ja/firefox/addon/1419

Firefox用アドオンのIE Tabをインストールした。
あらかじめ設定した特定のページだけIEのエンジンを使ってタブを開いたりする事ができるのが素敵。

2008/11/21

ジョエル・テスト

http://japanese.joelonsoftware.com/Articles/TheJoelTest.html

  1. ソース管理システムを使っているか?

  2. 1オペレーションでビルドを行えるか?

  3. 毎日ビルドを行うか?

  4. 障害票データベースを持っているか?

  5. 新しいコードを書くまえにバグを修正するか?

  6. 更新可能なスケジュール表を持っているか?

  7. 仕様書を持っているか?

  8. プログラマは静かな労働環境にあるか?

  9. 買える範囲で一番良い開発ツールを使っているか?

  10. テスト担当者はいるか?

  11. プログラマを採用するときにコードを書かせるか?

  12. 「廊下での使い勝手テスト」を行っているか?


どの程度のプロジェクトがこれを守ってることやら・・・

2008/11/20

ある日付以降に修正されたファイルの検索の仕方

管理者が複数いるシステムを扱っていると、全く身に覚えのない事でトラブルことがある。その調査に便利なコマンドをメモ。
/etc以下で、ある日付以降に修正された物を探す場合、

# touch -t MMDDHHmm /tmp/dummy
# find /etc -type f -newer /tmp/dummy -print

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

2008/11/08

価格.comは一体どうやって儲けているのか

価格.comは一体どうやって儲けているのか(Gigazine)

情報提供だけで売上の4%近く稼いでるのが興味深い。
今生産者と販売会社が直接やり取りをするため、仲卸の人達は凄まじく不景気らしい。生き残るにはこのへんの情報提供をすべきだと思うんだよなぁ。中間マージンを抜く人は、中間マージンを抜くだけの価値を示さないといけない。

2008/11/07

iSkoot

iskootという会社がある。
そこで提供しているiSkootというアプリケーションを使えば、携帯電話からキャリアの回線を使って、iSkootのサーバ越しにskypeユーザと会話をする事ができる。所謂Skype-phoneがプロバイダの回線を使うのに対して、携帯キャリアの通信を使うのが大きな違いだ。
で、iskootが$19Mの資金を調達したという記事があったので、何となくiSkootのウェブページを見ていたのだが、とんでもない物を発見してしまった。どうしよう((c)銭形)。
FAQによると
Q. 他のインターネットボイスチャットのプロバイダーもするつもりはありますか?
A. はい。私達はもうすぐ他のサービスについてもサポートするつもりです。

Q. 多人数チャットをサポートするつもりはありますか?
A. 私達はこの機能をすぐに追加したいと考えています。

うはwwwwww夢がひろがりんぐwwwwww

2008/11/01

Webアプリ開発環境としてのSafari

Webアプリ開発環境としてのSafari

ASPじゃないWeb開発に使うアプリとしてはFirefoxが多いと思う。特にJavaScriptばりばりのやつ。
でも、これを読んでSafariもいいなと思った。
ネットワークタイムラインとかかなり面白そう。
たぶん面白いだけだけどw