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