YouTube でタグによる RSS フィードを取得するには

  YouTube では最近人気の動画の RSS フィードを配信していますが,タグによる RSS フィードも取得できることが分かりました.

- YouTube (YouTube RSS Feeds)
  http://www.youtube.com/rssls

Tags:
For example, if you wanted to create an RSS feed for the tag ‘monkey’ you would enter:
feed://www.youtube.com/rss/tag/monkey.rss

  YouTube の説明によると

feed://www.youtube.com/rss/tag/タグ.rss

  で取得できます.日本語のタグにも対応していました.

  feed プロトコルなのですが,HTTP プロトコル (http://...) でも取得することができました.
  そこで,日本語のタグの対応と共にすこし調査してみました.

アプリケーション feed プロトコル対応 日本語のタグ
livedoor Reader   ×                   ○ (*1)
はてな RSS        ○                  
Bloglines         ×                   ○ (*2)
SharpReader       ○                  

  (*1) HTTP プロトコルにすることで対応
  (*2) タグを UTF-8 で URL エンコードし,HTTP プロトコルにすることで対応

  はてな RSS,SharpReader では何もせずに取得できました.
  livedoor Reader ではタグの言語に関わらず,HTTP プロトコルにすることで取得することができました.
  Bloglines の場合は,少し面倒ですが,日本語のタグの場合は,まずタグを文字コード UTF-8 で URL エンコードした上で,HTTP プロトコルにすることで取得することができました.アルファベットのタグの場合は HTTP プロトコルにすることで取得することができました.

  お気に入りのタグで素早く動画を見ることができますね.暇つぶしにはもってこいです.

Google Notebook を Web ページのスナップショット置き場として使ってみる

  最近リリースされた Google の新サービス Google Notebook ですが,あまり盛り上がっていないようです.
  いまいち使い方というか,使う場面が分からなかったりしていたのですが,Web ページのスナップショットを溜めるというアイディアを思いつきました.

  まず,Firefox の拡張,または IE のアドオン をインストールします.

  インストールすると,ブラウザの右下に Google Notebook のアイコンが表示されます.
  これをクリックすると小さい窓が表示されます.これが ミニ Google Notebook になるわけです.

  さて,気になるページがあったとしましょう.
  ここで,おもむろに Ctrl + A なんか押して全部選択します.ここで,ミニ Google Notebook の登場ですが

  Google Notebook Firefox

  選択された状態で [Add note] をクリックします.
  すると,どうでしょうか.今見ているページのスナップショットが Google Notebook に取り込まれました.
  画像も取り込まれていますし,リンクもきちんと貼られたままです.


  

  サイトの移転や閉鎖などでページ自体がなくなってしまうことはよくあることですよね.
  こういった場合に力を発揮しそうです (画像は見えなくなってしまうかもしれませんが).

  また,後で必要な情報を探すときは Google お得意の検索機能が使えます.
  ただし,現状では日本語では検索できませんでした.そのうち改善されることを期待します.

  このように,Google Notebook とブラウザの拡張機能を使うことで,簡単に Web ページのスナップショットを蓄積することができます.
  Google Notebook はメモを公開することができるのですが,Web ページのスナップショットを公開することには賛否がありそうなので,注意が必要です.

  ソーシャルブックマークとはまた違った情報の蓄積の方法が見えてきそうです.

- Google Notebook
  http://www.google.com/notebook/

- Google Notebook (拡張機能のダウンロード)
  http://www.google.com/notebook/download

リバースプロキシを使って複数のバージョンの PHP,MySQL,Apache を共存させる方法

  PHP 3.x と PHP 4.x は --enable-versioning を configure オプションに加えるだけで,何も考えずに共存できました.
  ただ,PHP 5.x になってから PHP 4.x と共存するのは難しくなっています.

  サーバが一台しかないテスト環境などでは,これでは困る場合もあるわけです.

  そこで,Apache のリバースプロキシを使って複数のバージョンの PHP を共存させます.
  ついでに,複数の MySQL も共存させることにします.

  検証環境は Solaris 10 です.

  今回は php5.example.com にクライアントからアクセスがあったら

- Apache 2.2.2
- PHP 5.1.4
- MySQL 4.1.19

  の環境で動かすとこと,また,php4.example.com にクライアントからアクセスがあったら

- Apache 1.3.36
- PHP 4.2.2
- MySQL 3.23.58

  で動かすということにします.
  MySQL 3.23.58 という古い環境を使うのは,この環境が必要だからなので,適時違うバージョンに読み替えていただけるといいです.

  図にすると以下のようになります.

  共存

  まず,php4.example.com の環境から作ります.インストールはすべてソースから行っています.
  configure のオプションは最低限しかつけていないので,適時環境に合わせてオプションを設定してください.

- Apache 1.3.36

% ./configure --enable-module=most \
              --enable-shared=max
% make
# make install

  でインストールします.ServerRoot は /usr/local/apache になります.
  主な設定は,以下のようですが,ポイントはこの Apache はポート 81 番で動かすことです.

Listen 81
Port 80
ServerName php4.example.com


  Apache 1.3.x の場合は Listen ディレクティブが指定されている場合は,Port ディレクティブはサーバが listen するポートには影響しません.
  ただし,ここで 80 と指定するのは,サーバが自分自身を参照する URL を生成する時に Port ディレクティブを参照するからです.

  この設定をしないで Port 81 などとしてしまうと,http://php4.example.com/foo のように URL の最後に / を付け忘れた場合,サーバは,

http://php4.example.com:81/foo/

  このようににリダイレクト先を返してくるので,リダイレクトの処理がうまくいかないことになります.

- Listen ディレクティブ
  http://httpd.apache.org/docs/1.3/mod/core.html#listen

- Port ディレクティブ
  http://httpd.apache.org/docs/1.3/mod/core.html#port

  また,Apache 2.x の場合は,Port ディレクディブは ServerName ディレクティブに吸収されたので

Listen 81
ServerName php4.example.com:80


  のように指定してあげればいいと思います.

- MySQL 3.23.58

% ./configure --prefix=/usr/local/mysql/3.23
% make
# make install
# ln -s /usr/local/mysql/3.23/bin/mysql /usr/local/bin/mysql3

  MySQL のインストールのポイントは,prefix を /usr/local/mysql/3.23 のようにバージョンをつけていることです.
  これで,他のバージョンをインストールする場合は,/usr/local/mysql/x.x のように分けることができます.
  設定ファイルは,/usr/local/mysql/3.23/var/my.cnf に置くことができます.

  最後に,シンボリックリンクを張っているのは,mysql3 と楽にコマンドを打てるようにです.

- PHP 4.4.2

% ./configure --prefix=/usr/local/php/4.4 \
              --with-apxs=/usr/local/apache/bin/apxs \
              --with-mysql=/usr/local/mysql/3.23
% make
# make install
# ln -s /usr/local/php/4.4/bin/php /usr/local/bin/php4

  PHP も MySQL と同じように prefix をバージョンごとに指定しています.
  使用する MySQL のパスも忘れずに指定します.
  シンボリックリンクも MySQL と同じ理由で /usr/local/bin に張ることにします.

  この場合,php.ini は /usr/local/php/4.4/lib/php.ini になります.

  これで,まず一つ目の環境が完成です.


  次に二つ目の環境を作ります.

- Apache 2.2.2

% ./configure --enable-mods-shared=all \
              --enable-proxy
% make
# make install

  Apache 2.2.2 はこのようにインストールします.ServerRoot は /usr/local/apache2 になります.
  リバースプロキシを利用するので --enable-proxy が必要になります.
  もし,また違うバージョンの Apache が必要な場合は prefix で適当なパスを指定すればいいです.

  設定のポイントは,まずこの Apache はポート 80 番で動かすことです.

Listen 80
ServerName php5.example.com:80


  そして,重要なのは,名前ベースのバーチャルホストとリバースプロキシの設定をすることです.

NameVirtualHost *

<VirtualHost *>
    ServerName php5.example.com
</VirtualHost>

<VirtualHost *>
    ProxyPreserveHost On
    ProxyPass         / http://localhost:81/
    ProxyPassReverse  / http://localhost:81/
    ServerName        php4.example.com
</VirtualHost>


  これで,php5.example.com でアクセスされた場合は,Apache 2.x が処理をして,
  php4.example.com でアクセスされた場合は 81 番ポートで動いている Apache 1.x にわたして処理をさせることができます.

- MySQL 4.1.19

% ./configure --prefix=/usr/local/mysql/4.1 \
              --with-unix-socket-path=/tmp/mysql-4.1.sock \
              --with-tcp-port=3308
% make
# make install
# ln -s /usr/local/mysql/4.1/bin/mysql /usr/local/bin/mysql4

  MySQL のインストールのポイントは,3.23.58 と同様に prefix にバージョンをつけていることです.
  また,UNIX Socket のファイルも /tmp/mysql-4.1.sock のように変更していて,ポート番号も 3308 に変更しています.
  設定ファイルは /usr/local/mysql/4.1/var/my.cnf になります.
  mysql4 としてシンボリックリンクも張っています.

- PHP 5.1.4

% ./configure --prefix=/usr/local/php/5.1 \
              --with-apxs2=/usr/local/apache2/bin/apxs \
              --with-mysql=/usr/local/mysql/4.1 \
              --with-pdo-mysql=/usr/local/mysql/4.1 \
% make
# make install
# ln -s /usr/local/php/5.1/bin/php /usr/local/bin/php5

  これまでと同様に prefix にバージョンに指定しています.
  使用する MySQL のパスも忘れずに指定します.シンボリックリンクも張っています.
  php.ini は /usr/local/php/5.1/lib/php.ini になります.


  テストするためにわざわざ DNS に登録する必要はなく,hosts ファイルに書いてしまえばいいです.
  例えば,サーバの IP アドレスが 192.168.1.2 ならば,クライアントの hosts ファイルに

192.168.1.2    php4.example.com    php5.example.com

  このように書いてあげればすぐ使えるようになります.


  以上のようにして,PHP,MySQL の複数のバージョンが共存する環境を手に入れることができます.
  ちょっと面倒ですが,ひとつのサーバしかなくて困っている場合は有効な手段だと思います.

- <VirtualHost> ディレクティブ
  http://httpd.apache.org/docs/2.2/ja/mod/core.html#virtualhost

- バーチャルホストの例 - Apache HTTP サーバ
  http://httpd.apache.org/docs/2.2/ja/vhosts/examples.html

Solaris 10 にバンドルされている SSH はデフォルトではポートフォワードが許可されていない件

  はまった.
  ポートフォワードを許可して SSH を再起動すれば OK.

% vi /etc/ssh/sshd_config
AllowTcpForwarding yes

% svcadm refresh ssh

Solaris 10 の libstdc++.la is not a valid libtool archive のエラーの対処法

  http://forum.sun.com/jive/thread.jspa?threadID=73150

  Solaris 10 では,/usr/sfw/lib/libstdc++.la や /usr/sfw/lib/64/libstdc++.la が空なのでたまに,

libtool: link: `libstdc++.la' is not a valid libtool archive

  などといってエラーが出るときがある.

  その場合の対処法.
  /usr/sfw/lib/libstdc++.la,/usr/sfw/lib/64/libstdc++.la に以下の内容を記述する.

- /usr/sfw/lib/libstdc++.la

# libstdc++.la - a libtool library file
# Generated by ltmain.sh - GNU libtool 1.4a-GCC3.0 (1.641.2.256 2001/05/28 20:09:07 with GCC-local changes)
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
 
# The name that we can dlopen(3).
dlname='libstdc++.so.6'
 
# Names of this library.
library_names='libstdc++.so.6.0.3 libstdc++.so.6 libstdc++.so'
 
# The name of the static archive.
old_library='libstdc++.a'
 
# Libraries that this one depends upon.
dependency_libs='-lc -lm -L/usr/sfw/lib -lgcc_s'
 
# Version information for libstdc++.
current=6
age=0
revision=3
 
# Is this an already installed library?
installed=yes
 
# Files to dlopen/dlpreopen
dlopen=''
dlpreopen=''
 
# Directory that this library needs to be installed in:
libdir='/usr/sfw/lib'


- /usr/sfw/lib/64/libstdc++.la

# libstdc++.la - a libtool library file
# Generated by ltmain.sh - GNU libtool 1.4a-GCC3.0 (1.641.2.256 2001/05/28 20:09:07 with GCC-local changes)
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
 
# The name that we can dlopen(3).
dlname='libstdc++.so.6'
 
# Names of this library.
library_names='libstdc++.so.6.0.3 libstdc++.so.6 libstdc++.so'
 
# The name of the static archive.
old_library='libstdc++.a'
 
# Libraries that this one depends upon.
dependency_libs='-L/lib/64 -lc -lm -L/usr/sfw/lib/64 -lgcc_s'
 
# Version information for libstdc++.
current=6
age=0
revision=3
 
# Is this an already installed library?
installed=yes
 
# Files to dlopen/dlpreopen
dlopen=''
dlpreopen=''
 
# Directory that this library needs to be installed in:
libdir='/usr/sfw/lib/64'

php extension な Smarty ライクのテンプレートエンジン Simplate

  http://simplate.aimy.jp/index.php?Simplate

  php の extension なので高速に動作するらしい.インストール方法がどこに書いてあるかわからないので,とりあえずメモ.
  というか通常の php extension とインストール方法は同じ.

- インストール方法 (autoconf が必要)

% phpize
% ./configure --enable-simplate
% make
# make install

- 設定
  インストールすると simplate.so が

/usr/local/lib/php/extensions/no-debug-non-zts-20050922/simplate.so

  にコピーされた.あとは php.ini にこれを書くだけ.

extension = /usr/local/php/extensions/no-debug-non-zts-20050922/simplate.so

  または,コマンドラインの PHP で警告が出る場合は,以下のようにすればいい (mod_php からも使える).

extension_dir = ""
extension = simplate.so

  あとは,Apache を再起動してみる.とりあえず,phpinfo() で simplate が見えていれば大丈夫だと思う.

  simplate

  ちなみにコマンドラインから確認する場合は m オプションをつければいい.

% php -m

- 使い方
  Smarty ライクということだけあって使い方は Smarty と同じ.

$simplate = new simplate();
$simplate->assign('foo', 'bar');
$simplate->display('template.tpl');


  デモを見る限り,テンプレート側では section などの組み込み関数も使えるっぽい.

沈黙の春

  4105197010
  amazon.co.jp 詳細ページへ
  レイチェル・カーソン (著), 青樹 簗一
  新潮社
  ISBN: 4105197010
  1987/05
  2,100 円

ssh を含んだ Windows 用 rsync のパッケージ cwRsync

  http://www.itefix.no/phpws/index.php?module=pagemaster&PAGE_user_op=view_p ...

  要は cygwin 向けの rsync,ssh などを cygwin がなくても動くようにライブラリを集めてパッケージングしたもの.
  Windows で rsync + ssh する場合に便利なパッケージ.

Prison Break (プリズン・ブレイク) コレクターズ BOX1

  B000EWRH3W
  amazon.co.jp 詳細ページへ
  ASIN: B000EWRH3W
  7,832 円

  あの,24 TWENTY FOUR を超えたかといわれている,プリズン・ブレイク.
  死刑囚となった兄を助けるために,IQ 200 の弟が動く.

  かなり面白い.

- Prison Break プリズン・ブレイク
  http://www.foxjapan.com/dvd-video/tv/prisonbreak/

携帯電話で撮影した画像を赤外線を使ってノート PC に転送する方法

  ThinkPad に赤外線通信ポート (IrDA) が付いているのを発見したので,これを使って携帯と通信できないか試してみました.
  使用した携帯電話は NTT DoCoMo の SH700iS.ノート PC は IBM ThinkPad T42.OS は Windows XP.

  まず,携帯電話をノート PC の赤外線通信ポートに向けて,撮影した画像を選択して赤外線送信を開始します.

  赤外線送信

  そうすると以下のように「ワイヤレス リンク」のダイアログが出ます.

  ワイヤレス リンク

  「はい」を選択して,通信を開始します.

  ワイヤレス リンク

  通信には結構時間がかかります (データ転送速度が約 20kbps ~ 70kbps らしい).

  ワイヤレス リンク

  通信が終了すると vnt という拡張子のファイルが受信されます.

  vnt

  エディタで開いてみると VNOTE という文字が見えます.
  この vNote 形式は「i アプリコンテンツ開発ガイド」によると以下のようなプロパティを持つようです.

プロパティ         備考
VERSION            vNote のバージョン
X-DOCOMO-TYPE      JPEG または GIF 画像データのフォーマット種別
X-DOCOMO-SIZE      画像のサイズ
X-DOCOMO-FILESIZE 画像のファイルサイズ
X-DOCOMO-FILENAME ファイル名
SUMMARY            画像タイトル
DATE               撮影または編集日時
X-DOCOMO-BODY      Base64 形式でエンコードされた JPEG または GIF データ


- i アプリコンテンツ開発ガイド for DoJa-3.0 詳細編 第 3.1 版
  http://www.nttdocomo.co.jp/binary/pdf/service/imode/make/content/iappli/ab ... PDF

  要は,Base64 でエンコードされているわけです.

  さて,この vNote 形式のファイルをデコードするアプリケーションはいくつかあるのですが,
  分かりやすかったのが「vMessage/vNote ファイル変換」というアプリケーションです.

  vMessage/vNote ファイル変換

- vMessage/vNoteファイル変換
  http://www.vector.co.jp/soft/win95/net/se305804.html

  これを使ってファイルをデコードできます.

  大量のファイルを扱うのには向いてないかもしれませんが,手軽に使える方法ですね.

  ラーメン

- FOMA SH700iS
  http://www.nttdocomo.co.jp/product/foma/700i/sh700is/

- ThinkPad T42
  http://www-06.ibm.com/jp/pc/thinkpad/tpt42/tpt42a.shtml

Soalris 10 で smpatch update が失敗する場合の対処法

# smpatch update
システムに必要なパッチを評価しています...
Failure: Cannot connect to retrieve Database/current.zip: This system is current
ly unregistered and is unable to retrieve patches from the Sun Update Connection
. Please register your system using the Update Manager

  主に Solaris 10 3/05 でおきることが多いと思うんだけど,smpatch update でエラーが出てアップデートがこける場合の対処法.

  原因は Update Connection に登録していないこと.

  まず Sun Update Connection をインストールする必要がある (Solaris 10 1/06 にはインストールされている).

  x86 版と SPARC 版があるので,必要なものをダウンロードしてくる.ダウンロードには登録 (無償) が必要だけど,
  どの道 Update Connection に登録しなければいけないので,登録しておく.
  Solaris 10 をダウンロードしたときに登録してあればそれで OK.

  ダウンロードしたファイルを /tmp に展開する./tmp というのは重要で,SPARC 版はなぜか /tmp でないと,その後のインストールでこける.

# pwd
/tmp
# unzip updateConnection-sparc.zip
# ./updateConnection/installUpdateConnection

  あとは,インストールが終わるのを待つだけ.

  次に,X を使っている場合は GUI でやってもいいと思う./usr/bin/updatemanager で Sun Update Manager を起動して登録すればいい.
  ただ,コンソールのみで CUI しか使えない場合は,/usr/sbin/sconadm を使って登録する.

  まず,レジストレーションファイルを作る.

# cp /usr/lib/breg/data/RegistrationProfile.properties .
# vi RegistrationProfile.properties

userName=Sun Online のユーザ名
password=同パスワード

  userName と password だけ記入して

# sconadm register -a -r /tmp/RegistrationProfile.properties
sconadm is running
Authenticating user ...
Collecting asset ...
Registering asset ...
sconadm has been completed successfully

  これで登録完了.プロキシを使いたい場合は -p proxy:port を引数に加えてあげれば OK.
  これで smpatch update がうまくいくはずです.

- ref.: Sun Update Connection
  http://www.sun.com/service/sunupdate/

- ref.: Solaris10 x86 smpatch でアップデートができない
  http://www.kichise.com/modules/weblog/details.php?blog_id=52

OpenVPN 2.0 HOWTO 日本語訳

  http://degas.is.utsunomiya-u.ac.jp/~zhao/freesw/ovpn2_howto_ja.html

  OpenVPN 2.0 HOWTO の日本語訳.

- ref.: OpenVPN 2.0 HOWTO
  http://openvpn.net/howto.html

ココロミくん

  4757212690
  amazon.co.jp 詳細ページへ
  べつやく れい (著)
  アスペクト
  ISBN: 4757212690
  2006/05/01
  1,050 円

  デイリーポータル Z のべつやくれいさんの本

紙魚家崩壊 九つの謎

  4062133660
  amazon.co.jp 詳細ページへ
  北村 薫 (著)
  講談社
  ISBN: 4062133660
  2006/03
  1,575 円

Perl プログラミング救命病棟

  4798109401
  amazon.co.jp 詳細ページへ
  ピーター・J・スコット (著), トップスタジオ (翻訳), 伊藤 直也 (翻訳)
  翔泳社
  ISBN: 4798109401
  2005/09/06
  3,129 円

WEB+DB PRESS Vol.32

  4774127523
  amazon.co.jp 詳細ページへ
  WEB+DB PRESS編集部 (編集)
  技術評論社
  ISBN: 4774127523
  2006/04/25
  1,554 円

  新連載多すぎ.

スタンド・バイ・ミー - 恐怖の四季 秋冬編

  4102193057
  amazon.co.jp 詳細ページへ
  スティーヴン・キング (著), Stephen King (翻訳), 山田 順子
  新潮社
  ISBN: 4102193057
  1987/03
  740 円

戦争における「人殺し」の心理学

  4480088598
  amazon.co.jp 詳細ページへ
  デーヴ グロスマン (著), Dave Grossman (原著), 安原 和見 (翻訳)
  筑摩書房
  ISBN: 4480088598
  2004/05
  1,575 円

入門 PHP セキュリティ

  4873112869
  amazon.co.jp 詳細ページへ
  Chris Shiflett
  オーム社
  ISBN: 4873112869
  2006/05/09
  1,890 円