2005/11/20 日曜日

またパクってるよ

カテゴリー: おぼえ書き — ryu @ 1:00:32

うーん、ホーミンさんのDLLに続いて、
うちのcellcoreもぱくられてますねぇヽ(´ー`)ノ

ここ・・・

転載はかまわないけど勝手にやるなら出所ぐらいは明記してほしいなぁ。
しかも説明にaygshellをリネームしただけとかいい加減なこと書かれてるし。
ちゃんとソース書いてビルドしてるつーの。

ぐぅ。

ホーミンさんにDummydllセットに入れてもらえるようお願いしたのに
ちょっとやなかんじかも。

一応貼ってみるテスト。


** WARNING **
DO NOT *STEAL* DLL I CREATED!!
DLL I CREATED IS NOT “renamed aygshell”
If you have source code, Why not create mips dll?
Ask you to clearly write its origin.

2005/10/20 木曜日

ろくおん

カテゴリー: おぼえ書き — ryu @ 21:39:54
 - DirectShow のAudioRenderer Filterを書けばOK
 - ただしデバイスの一覧はwave APIで取得してるぽいので選択は出来ない
 - Skype側はデフォルトにしておいて、メリット値をでかくして使わせる

ていっても悪用できそうだなぁ。
DRM付きのコンテンツを再生してデジタルコピー出来ちゃうよな。
まぁ、グラフ弄ってWaveDestにするのも同じだけど。
ReClockってフィルタが参考になりそうな予感。

2005/7/14 木曜日

Visual C++ Toolkit で環境構築

カテゴリー: おぼえ書き — ryu @ 23:25:59

昔はVC++は買わないと手に入らなかったが最近だと無償で手に入る模様。
いや、個人的にもSTDは持ってるんだけどコンパイラの最適化がNGなので。

ここが良く纏まってるかな。

今落とせる奴でインストールした場合、環境変数は、
s/Microsoft SDK/Microsoft Platform SDK/
が必要。

とりあえず、コンパイル環境はできたっぽい。

2005/7/12 火曜日

ぐぐる様…

カテゴリー: おぼえ書き — ryu @ 23:37:23

うーん、google が動的生成(と思われる)ページをIndexしないって、
周知の事実だったのか…。_| ̄|○

ということで、blognめもを参考に固定リンク(静的生成ページ)ぽく見えるように設定設定。

まずは、.htaccessにmod_rewrite用の設定

RewriteEngine On
RewriteRule ^([0-9]+)\.html$ /index.php?eid=$1 [QSA]
RewriteRule ^c([0-9]+)\.html$ /index.php?cid=$1 [QSA]
RewriteRule ^c([0-9]+)p([0-9]+)\.html$ /index.php?cid=$1&page=$2 [QSA]
RewriteRule ^m([0-9]{6})\.html$ /index.php?month=$1 [QSA]
RewriteRule ^m([0-9]{6})p([0-9]+)\.html$ /index.php?month=$1&page=$2 [QSA]
RewriteRule ^d([0-9]{8})\.html$ /index.php?day=$1 [QSA]
RewriteRule ^prof([0-9])\.html$ /index.php?pid=$1 [QSA]
RewriteRule ^page([0-9])\.html$ /index.php?page=$1 [QSA]
RewriteRule ^index\.rdf$ /index.php?mode=rss [QSA]

これで、疑似静的リンクでアクセス可能に成った…はずなので、
blognがはき出すHTMLを上に合わせて書き換え。

function rewrite($buf){
$buf = ereg_replace(”/index\.php\?eid=([0-9]+)”,”/\\1.html”,$buf);
$buf = ereg_replace(”/index\.php\?cid=([0-9]+)&page=([0-9]+)”,”/c\\1p\\2.html”,$buf);
$buf = ereg_replace(”/index\.php\?cid=([0-9]+)”,”/c\\1.html”,$buf);
$buf = ereg_replace(’/index\.php\?month=([0-9]{6})&page=([0-9]+)’,”/m\\1p\\2.html”,$buf);
$buf = ereg_replace(’/index\.php\?month=([0-9]{6})’,”/m\\1.html”,$buf);
$buf = ereg_replace(’/index\.php\?day=([0-9]{8})’,”/d\\1.html”,$buf);
$buf = ereg_replace(”/index\.php\?pid=([0-9])”,”/prof\\1.html”,$buf);
$buf = ereg_replace(”/index\.php\?page=([0-9])”,”/page\\1.html”,$buf);
return $buf;
}

でもって、はき出してるところで

echo rewrite( $buf[$i] );

と上の変換をして書き出す。

一応OKか。ディレクトリ階層変えるとcssとかイメージファイルへのパスが
怪しいことになるのでとりあえずださださなURLだけど良しとしよう。
動的生成ページ:BBSとか、インデックスしても保存期間が短いだろうってことや、
RefreshタグでのスパムとかでIndexしないっていうポリシーは解る…。
apache は mod_rewrite が使える状態になってないとダメ。
configure のオプションで –enabel-rewrite とかしておく必要あり。
って、うちはした覚えがかすかにしかないけど入れてたみたいヽ(´ー`)ノ

さぁ、来てみやがれ GoogleBot。

2005/7/2 土曜日

PHPの高速化 その2

カテゴリー: おぼえ書き — ryu @ 8:34:21

PHPのアクセラレータと言っても色々ある(らしい)。

・Zend Performance Suite
  本家Zendの商用のもの
・after Burner Cache
  昔からある
・The ionCube PHP Accelerator
  いわゆるPHPA。バイナリ配布なので PPC なうちでは使えない
  いや、多分Mac用のバイナリはあるんだけどglibcが2.2.5なので…
・Alternative PHP Cache
  いわゆるAPC。pear に入った
・Turck MMCache
  ディスコンぽい
・eAccelerator
  上の後継。SFで開発。PHP5対応。

と、いうことで、気分的に APC から eAccelerator に変更(をい)
速度的には変わらないけどキャッシュ状況とかが見えるのは嬉しいかも。

素で、平均2.3秒程度かかっていた RSS の出力ターンアラウンドは、
APC 入れることで平均1.2秒程度に短縮。
eAcceleratorでも平均1.2秒程度掛かっていたものの、
キャッシュ状況を見て不要なモジュールが require されていることがわかり、
それを外す事でさらに0.2秒程度 高速化 できて、
今のところ平均1.0秒程度で RSS 出力できているっぽい。
(スクリプトでの計測ではなく、パケットキャプチャで計測)

もちろん mixi の更新はOK!ヽ(´ー`)ノ

これでやっと本題に戻れる…(w

2005/7/1 金曜日

PHPの高速化

カテゴリー: おぼえ書き — ryu @ 23:42:52

忘れてた。インスコしたものとばっかり…。
PHPはスクリプトなのでコンパイルに時間がかかります。
ということで、コンパイルした結果をキャッシュしてくれる優れものが。

pear install APC

して、 php.ini に

extension=apc.so
apc.optimization=1

を追記。

これでだいぶ早くなったんじゃなかろうか。
mixi の結果は2時間後…。

道のりははるか遠く…

カテゴリー: おぼえ書き — ryu @ 0:38:54

どーも、TransferEncodingとかContent-Lengthの問題では無かったみたいで、
結局解決されなかった…ものの。

ダンプ眺めていて気がついた。

接続後2秒経ってmixiからFINACKが…。
タイムアウトですか…_| ̄|○

ある時のパケットダンプ
19:11:20.377218 IP mixi > nyanyan: S 3727038706:3727038706(0) win 5840 <mss
19:11:20.378980 IP nyanyan > mixi: S 3006056034:3006056034(0) ack 3727038707
19:11:20.404210 IP mixi > nyanyan: . ack 1 win 5840 <nop,nop,timestamp 39799
19:11:20.406862 IP mixi > nyanyan: P 1:109(108) ack 1 win 5840 <nop,nop,time
19:11:20.407195 IP nyanyan > mixi: . ack 109 win 5792 <nop,nop,timestamp 101
※19:11:22.406099 IP mixi > nyanyan: F 109:109(0) ack 1 win 5840 <nop,nop,time
19:11:22.437895 IP nyanyan > mixi: . ack 110 win 5792 <nop,nop,timestamp 101
19:11:22.556478 IP nyanyan > mixi: . 1:1449(1448) ack 110 win 5792 <nop,nop,
19:11:22.556689 IP nyanyan > mixi: . 1449:2897(1448) ack 110 win 5792 <nop,n
19:11:22.605633 IP mixi > nyanyan: R 3727038816:3727038816(0) win 1024

また別の有るとき
20:40:17.597155 IP mixi > nyanyan: S 769302570:769302570(0) win 5840 <mss 14
20:40:17.597544 IP nyanyan > mixi: S 51896639:51896639(0) ack 769302571 win
20:40:17.623956 IP mixi > nyanyan: . ack 1 win 5840 <nop,nop,timestamp 39852
20:40:17.623966 IP mixi > nyanyan: P 1:109(108) ack 1 win 5840 <nop,nop,time
20:40:17.624459 IP nyanyan > mixi: . ack 109 win 5792 <nop,nop,timestamp 101
※20:40:19.625894 IP mixi > nyanyan: F 109:109(0) ack 1 win 5840 <nop,nop,time
20:40:19.658081 IP nyanyan > mixi: . ack 110 win 5792 <nop,nop,timestamp 101
20:40:19.760604 IP nyanyan > mixi: . 1:1449(1448) ack 110 win 5792 <nop,nop,
20:40:19.760817 IP nyanyan > mixi: . 1449:2897(1448) ack 110 win 5792 <nop,n
20:40:19.810506 IP mixi > nyanyan: R 769302680:769302680(0) win 1024

※のところでこちらからデータ送る前に mixi からFINACKが飛んできてる…

ちなみに静的ファイルの場合…
03:45:52.501052 IP mixi > nyanyan: S 1757632495:1757632495(0) win 5840 <mss
03:45:52.501563 IP nyanyan > mixi: S 1056632343:1056632343(0) ack 1757632496
03:45:52.530828 IP mixi > nyanyan: . ack 1 win 5840 <nop,nop,timestamp 39495
03:45:52.530838 IP mixi > nyanyan: P 1:109(108) ack 1 win 5840 <nop,nop,time
03:45:52.531334 IP nyanyan > mixi: . ack 109 win 5792 <nop,nop,timestamp 100
03:45:52.535711 IP nyanyan > mixi: . 1:1449(1448) ack 109 win 5792 <nop,nop,
03:45:52.535923 IP nyanyan > mixi: . 1449:2897(1448) ack 109 win 5792 <nop,n
03:45:52.584450 IP mixi > nyanyan: . ack 1449 win 8688 <nop,nop,timestamp 39
03:45:52.584725 IP nyanyan > mixi: P 2897:4345(1448) ack 109 win 5792 <nop,n
(中略)
03:45:52.683094 IP nyanyan > mixi: FP 15929:16781(852) ack 109 win 5792 <nop
03:45:52.706564 IP mixi > nyanyan: . ack 8689 win 23168 <nop,nop,timestamp 3
(中略)
03:45:52.837558 IP mixi > nyanyan: F 109:109(0) ack 16782 win 37648 <nop,nop
03:45:52.837854 IP nyanyan > mixi: . ack 110 win 5792 <nop,nop,timestamp 100

0.5秒以内に処理完了。

(;´Д`)

試しにスクリプトが吐いた RSSを垂れ流す CGI 作って mixi に食わせたら
食べてくれました。
HTTPヘッダどうこうとか関係なかったみたい。

大量にRSSクロールするから2秒タイムアウトって妥当なんだろうなぁ…。
PowerPC400Mhzな箱で動的生成してるから仕方ないとは仕方ないとはいえ、
2秒の壁、破れるんだろうか…。

ということで、方針は下の通りだなぁ。

・今使ってるScriptのチューニング
・今使ってるScriptを改造してRDFは静的生成させる
・今使ってるScriptを2.X系にバージョンアップする
・サーバ変更する
・レンタルサーバに引っ越す
・PHP+SQLite系のBlogスクリプトに移行する
・MTに移行する
・あきらめる
・Blogやめる

国産のスクリプトの良いところは携帯電話対応が入ったりしている所。
今使ってる Blogn は携帯での参照はもちろん携帯メールからの投稿も出来るので、
選んだんだよなぁ。
1.X系じゃなく2.X系だと PGSQL対応したみたいだからそっちに移行するのも有りかなぁ。

2005/6/30 木曜日

それですか?

カテゴリー: おぼえ書き — ryu @ 22:00:14

mixiのトップ。
取りあえず逃げますとは言うものの開発者の隅っこのほーに席を置くものとして
追求するのは当然のことでしょう。

そう、RSSの内容をそのままindex.rdfに置けば更新される…ということは、
HTTPのレスポンスヘッダが変以外に考えられません。

こうなったら、パケットキャプチャですよ。

GET /?mode=rss HTTP/1.1
Connection: close
Host: nyanyan.to
User-Agent: Mixi RSS Fetcher – Version 0.1

HTTP/1.1 200 OK
Date: Wed, 30 Jun 2005 09:48:53 GMT
Server: Apache/2.0.54 (Unix) PHP/4.3.11
X-Powered-By: PHP/4.3.11
Etag: “c70761f3667a913af3e1904d2f5d2997″
Last-Modified: Tue, 28 Jun 2005 01:37:47 GMT
Connection: close
Transfer-Encoding: chunked
Content-Type: application/xml; charset=UTF-8
Content-Language: ja

え?
Transfer-Encoding: chunked
って。

んー、HTTP/1.1では普通なのかぁ。
取りあえず、PHPからContent-Length:ヘッダを返すように変更。

しかし、2時間に一回だから結果も2時間後にしか解らなかったり…
なんか外してる気はしますが…

2005/6/28 火曜日

ご迷惑をおかけしております

カテゴリー: おぼえ書き — ryu @ 10:37:47

一部、 RSS でこのページを見ていただいている方にはご迷惑をお掛けしています。

mixi の新着日記が更新されないので色々ごりごり直したりテストしたりしていました…。
が、結局原因不明ヽ(´ー`)ノ

RDF Validation Service でも FEED Validator でも その他いくつかの Validator でも Valid と言われるんだけどダメ。
ふと、RSS をテキストに落として置いてみると…更新された…。

BodyだけじゃなくHTTPヘッダ(not HTMLヘッダ)まで合わしてるのにダメって
何が原因…うきー。でも更新されなくなった心当たりは
apache/php/blogn バージョンアップとか、HTML Lint対応とかだからなぁ。
解らん…。

取り合えず、index.rdf を手で作ることにして逃げよう。

Last-Modified 入れたり if-modified-since 対応入れたり(RSSだけね)、
余計な事出来たことのほうが大きかったりヽ(´ー`)ノ

2005/5/18 水曜日

WebSVN で ログメッセージ が化ける (日本語)

カテゴリー: おぼえ書き — ryu @ 11:23:56

cvs 信者なんだけどたまには、subversion 使おうと意気込んで、
ViewCVSセットアップしてた。が、 py-module がコンパイル通らず、
PHPで動く WebSVN を使うことにする。

設置と一通り動くところは簡単に出来るのだが、
ログメッセージが文字化け。(v1.61)

さくっと見てみると svn のコマンド実行するときに、
環境変数 LANG が設定されていないのが原因。
include/command.inc で、quoteCommand() の戻りを

return “LANG=ja;export LANG;”.$cmd;

にして、 config.inc で、

$config->setInputEncoding(”EUC-JP”);

にする

やたー、日本語出たーと思うのもつかの間、
登録しているファイル見ると文字化けする…。
登録ファイルの文字コードがSJISだから…。
つまりログメッセージはEUC・ファイルはSJISとややこしいことに。
登録ファイルの文字コード触るのはちょっと気色悪いので、

$config->setInputEncoding(”SJIS”);

にすることにして、ログメッセージを変換することにする。
include/svnlook.inc の、getLogDetails()で強制変換。
EUCのファイルをSJISと思い込んで読んでいるので、

$log["message"] = mb_convert_encoding( $output[3], “SJIS”, “EUC-JP”);

$log["message"] .= “\n”.mb_convert_encoding( $output[$pos], “SJIS”, “EUC-JP” );

として強制的に変換してやる。

今度こそ出来た~。ヽ(´ー`)ノ

# cache 配下に出来るファイルは compress が掛かってるんで、
 普通に見ると文字化けしているように見える罠
 zcat すべし。

« 前ページへ

32 queries. HTML convert time: 0.408 sec. Powered by WordPress 2.8