*Article*


1998 | 12
1999 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12
2000 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12
2001 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12
2002 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12
2003 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12
2004 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12
2005 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12
2006 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08
2008 | 01 | 02 | 03 | 04 | 05 | 07 | 08 | 09 | 10
先月 2005年07月 来月
SUN MON TUE WED THU FRI SAT
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Namazu for hns による簡易全文検索
詳しくは 詳細指定/ヘルプを参照して下さい
検索式:

2005年07月02日()

AVeL LinkPlayer

ふと AVLP2/DVDGを購入。 型落ち品だけど、ファームをアップデートすると DVDG-2 相当になるらしいし。

* 接続

D端子があるので、そちらでアンプと接続してみるも映らず。しばらく悩んだが、 アンプから TV に D端子接続していかなったためであった。
とはいえ D端子ケーブはもう余っていないし、どうせ動画再生には ほとんど使わないだろうから Sビデオで済ます。

* ネットワーク設定

無線LANルータに MAC アドレスを登録する時に typo ってはまったくらいで、 あとは問題無く。
それにしても、WEP キーを文字列で入力できないとはなんてダサイんだ…。

* ファーム更新

ネットワークの確認も兼ねてファームの更新。 しかしながら最新版が March とか言ってますよ? とりあえずそれにしておくけど。
ぐへっ、ファームを更新したら設定がクリアされた。また WEP キーとか 入れなおしですか、そうですか。

* Link Server

とりあえず Windows で Link Server を動かしてみたところ、アッサリと PC 上の MP3 の再生に成功。

* wizd

Linux 上で wizd を入れてみる。 面倒だったので こちらから wizd_0.12g-1_i386.deb を拾ってきてインストール。
/etc/wizd.conf の document_root と server_language_code だけ変更して 起動。問題無く wave の再生ができた。
む、リモコンからの連続再生ができない。ググって見付けた 掲示板の記事に従って、tail.html の "blue" を "pgdn" に、"yellow" を "pgup" に書換えた ところ解決。
ということで、20枚くらい CD をリッピング。

2005年07月09日()

ClamAV

最近 Virus メールが多いので ClamAVを導入してみた。
maildrop から呼出すことにして、~/.mailfilter に以下を追加っと。
`clamscan --quiet -`
if ($RETURNCODE == 1)
{
	to "$MAILDIR.virus"
}
おっ、早速 HTML.Phishing.Auction-42Worm.Mydoom.Mがひっかかった。フィッシングメールもチェックしてくれるのか。

LinkPlayer Music Server

LinkPlayer を Music Server として利用しているけど、wizd ではそういった用途には 向いていないようなので、それ用のサーバを作ろうかな。
試しに WEBrick で適当に作ってみたけど、playlist を作成して再生するといった ところまでは、比較的容易にできたし。
playlist が画面に表示されるだけで、再生が始まらないというのにしばらく 悩んだけど、これは playlist へのリンクに 「vod="playlist"」と付ける 必要があるということであった。

* 仕様

とりあえず以下のような仕様で実装してみた。 これだと、途中まで再生したフォルダを頭から再生したい時に面倒だなあ。

* TODO

以下は気が向いたら。 以下は全くやる気なし。

2005年07月10日()

LinkPlayer Music Server

数字入力でフォルダを指定できるようにして、その時はフォルダ頭から再生する ようにしてみた。
これで自分で使う分には充分かな。

* MP3 対応

rmp3に附属の mp3info.rb を使おうかと思ったら ID3v2 に対応していないみたい。
mp3info を使おうかと思ったけど、これも ID3v2 に対応していなかった…。
Debian パッケージを探ってみたら id3v2 ってコマンドがあったけど、 これはマイナー?
jiMPachiってプレイヤに libid3 のラッパーが含まれているらしいので、 これを使ってみるかな。

ルータ

今週3回目のルータのハングアップ。うーむ、寿命かな?
もしかしたら熱のせいだろうか。PC からちょっと離して様子を見るとしよう。

2005年07月11日(月)

LinkPMS 0.1

* MP3

昨日は RAA にアクセスできなかったので、日を改めて検索してみたところ id3 関係のライブラリをいくつか見付けた。どれが良いのか分からんので、 最も最近更新されている ruby-mp3infoを使ってみよう。

* Skin

非常に簡単ながら Skin に対応した。

* release

せっかくだから公開してみますかね。

2005年07月13日(水)

mem_fun_ref

STL の mem_fun_ref ではまったのでメモ。例えば CString::Find は以下のように 宣言されているとする。
class CString {
 int Find(PCXSTR, int = 0) const;
 int Find(XCHAR, int = 0) const;
}

* オーバーロード

以下のようにフツーに mem_fun_ref を使おうとしたらコンパイルエラー。
 std::find_if(v.begin(), v.end(), std::bind2nd(std::mem_fun_ref(&CString::Find), _T("hoge")))
これは CString::Find がオーバーロードされたメソッドだったためであろう。 ということで、以下のようにメソッドの型を明示してみる。
 std::mem_fun_ref((int (CString::*)(CString::PCXSTR, int) const)&CString::Find)

* 引数の数

でもやっぱりダメ。mem_fun_ref は引数一つ以下のメソッドにしか 対応していないためであった…。

* 結論

CString を継承して Find に引数を一つしか取れないメソッドを作成し それを指定すればいけると思うが、そんなことが必要なら関数オブジェクトを作る。 というか、そんなことするなら find_if を使うのをヤメる。

2005年07月18日(月)

LinkPMS 0.2

Win32 対応。といっても、ファイルシステムが CP932 の場合の問題に対応したくらい。

* exerb

せっかくだから exerb で実行ファイルを作ってみるも動かず。 しばらく悩んだが、インストールした ruby が 1.8.3preview1 と exerb の版 (1.8.2)と異なるためみたい。1.8.2 をインストールしたら問題無く動作した。
しかしながら、Windows だと fork が無いから daemon として動作させられない…。

* SSDP

wizd と同時に使っているとポート 1900 に bind できないことに気付く。
ってことで SSDP 対応はヤメ。

2005年07月19日(火)

Ruby + Win32API で MyMusic のフォルダを取得

def getMyMusic
  begin
    require 'Win32API'
    proc = Win32API.new("shell32.dll", "SHGetSpecialFolderPath", %w(p p i i) , 'i')
  rescue LoadError, StandardError
    return nil
  end

  str = "\0" * 260
  if proc.call(nil, str, 13, 0) == 0 then
    return nil
  end
  str.rstrip
end
以下のページを参考にした。
* (http://www001.upp.so-net.ne.jp/yamashita/doc/shellfolder.htm)

2005年07月20日(水)

LinkPMS 0.3

スライドショー対応。
pod を指定する時に vod も指定するとスライドショーが行われず、かなり悩まされた。
あっ、昨日試していた MyMusic の自動取得機能を入れるのを忘れていた(^^;

* URL メモ


2005年07月21日(木)

今日のハマリ

以下の perl スクリプトで 2回目の proceedAll の呼出し時に @list の各要素が空に なっていて悩む。
my @list = ("elem1", "elem2");
proceedAll() && proceedAll();

sub proceedAll() {
    my $sts = 0;
    foreach (@list) {
	$sts |= proceed($_);
    }
    $sts;
}

sub proceed($) {
    my $elem = shift;
    print "$elem\n";
    open(F, "hoge.txt");
    while (<F>) {
	print;
    }
    close(F);
    return 1;
}
原因は proceed の while 文で $_ が書換えられるためであった…。
proceedAll のループで $_ なんて使うなよ! せめて proceedAll に引数で @list を渡していれば大丈夫だったのに。 誰だ、こんなに手抜きコードを書いたのは! *1

* STL の mem_fun

STL の mem_fun でまたはまる。
void Base::spread(Base* pBase)
{
	for (vector<int>::iterator it = m_vec.begin(); it != m_vec.end(); it++) {
		pBase->Base::func(*it);
	}
}
↑から↓に書換えたところ、どうも意図しない動きに。
void Base::spread(Base* pBase)
{
	for_each(m_vec.begin(), m_vec.end(), bind1st(mem_fun(&Base::func), pBase));
}
Base::spread に渡されるオブジェクトが派生クラスのオブジェクトでかつ その派生クラスで spread をオーバーライドしている場合に、 前者は Base::func が呼ばれるのに対して後者は Derived::func が 呼ばれるためであった…。

* ruby の module_function

これはハマリではなく ruby を知らないためだが。
モジュール関数からプライベートメソッドは呼べないの?
module Hoge
  def base_func
  end

  def funcA
    base_func
  end
  module_function :funcA
end

Hoge::funcA # => エラー
「Hoge::funcA といった呼出しは出来るけど、Hoge::base_func といった呼出しは 出来ない」としたいので、base_func はモジュール関数にはしたくない。

*1: まちがいなく過去の自分だが(^^;

2005年07月22日(金)

LinkPMS for OSX

ホコリまみれの iBook を久々に起動して、LinkPMS を動かしてみたがいろいろツラい。

* ruby-1.8.2

fink で提供されている ruby-1.8.1 では動かず。どうやら 1.8.2 で入った pstore の変更が必要らしい。
とりあえず、ruby-1.8.2 から pstore.rb だけコピーして試す。

* UTF-8-MAC

文字コードの変換でエラー。濁点がアレでナニのようだ。
調べたところ UTF-8-MAC を指定すると良いらしいが、iconv -l で表示されず。
どうやら fink の libiconv が使われているためみたい。 DYLD_LIBRARY_PATH を /sw/lib から /usr/lib にしたら使えるようになった。

*

いったいこの文字に何回泣かされたことか…。
といったところで挫折。

2005年07月23日()

UTF-8-MAC to CP932

「〜」が U+301C になっているのであれば CP932 ではなく SHIFT_JIS にならば 変換できるのではないかと思ったけどやっぱりダメ。
ということでちゃんと調べてみたところ、変換に失敗した文字は U+FF5E であった。 これであれば CP932 に変換できるはずだが、 Darwin 7.8 Source Codeから libiconv のソースを拾ってきて libiconv/lib/cp932.h を眺めたところ、 冒頭にこんな記述が。
 * 2. Some characters in the JISX0208 range are defined differently:
 *
 *     code   SHIFTJIS.TXT                   CP932.TXT
 *    0x815F  0x005C # REVERSE SOLIDUS       0xFF3C # FULLWIDTH REVERSE SOLIDUS
 *    0x8160  0x301C # WAVE DASH             0xFF5E # FULLWIDTH TILDE
[...]
 *    We don't implement these changes. SHIFTJIS.TXT makes more sense.
いったい OSX を使っている人々は iconv でファイル名を SHIFT_JIS 系の文字コードに 変換する時はどうしているんだろう?
みんな libiconv cp932修正パッチをあてているなんてこともないだろうし。

LinkPMS 0.4

文字コードまわりを改善。
mp3info.rb を見たら、Iconv.iconv("ISO-8859-1", "UNICODE", data) などという ヒドイことをされていた…。ということで、 id3.rbを使うように変更。

以上、11 日分です。
Powered by hns-2.19.6, HyperNikkiSystem Project

戻る