These pages are written by only Japanese.

Welcom to My Diary.com
最新の日記タイトル一覧カテゴリ別タイトル一覧トップへ戻る〜

こんばんわ♪ 現在は9月23日(月)3時51分。 そろそろお休みになられたほうが。


hns - 日記自動生成システム - Version 2.19.5 (色々 Fixed)

先月 2008年07月 来月
01 2 3 04 05
06 07 08 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 による簡易全文検索です。
詳細は 詳細指定/ヘルプをご参照下さい。
検索式:

2008年07月21日(月)

PHP カンファレンス LT

の発表は gdgd で終了ー ○rz
ノートPCのモニタ設定が練習時と変わってて、 司会の方のヘルプのおかげでパワポの表示はできたのですが、 ブラウザがプロジェクタの方に表示できず、用意したデモが全滅したので、 急遽、他で使う予定だった Lite じゃない方の説明に切り替えました。
ちなみに。見せる予定だったサンプルはこんなの。 クリボー(版権処理忘れてたので目を塗りつぶしてますw)の画像に 入れ替えただけですけど。
細かい話より実際に動いているのを見せ続けた方がいいのが 分かっていただけに、残念無念。

でも…:

今回は、発表者、つまり当事者として経験できたので、見るだけの時より ずっと色々勉強になったし、折角なので懲りずにリベンジします。
どこか発表の場を頂けませんかっ。(⊃д⊂)

2008年07月22日(火)

swfed バグ修正 (JPEG入れ替え)

DefineBitsJPEG の JPEGデータ入れ替えの不具合対処をしました。
DefineBitsJPEG2,3 対応した時に、そのフォーマットに合わせて JPEGセグメント並び替え処理を追加してますが、DefineBitsJPEG の時も その処理が動いてました。
具体的には、2,3 は ( EOI(End of Image) SOI(Start of Image)が余計にあるように見えるのはそのせい)
- DefineBitsJPEG2,3 の JPEGセグメントの並び
  - 圧縮テーブルフィールド
                SOI(0xD8): len=0
                DQT(0xDB): len=65
                DQT(0xDB): len=65
                DHT(0xC4): len=29
                DHT(0xC4): len=179
                DHT(0xC4): len=29
                DHT(0xC4): len=179
                EOI(0xD9): len=0
  - 画像データフィールド
                SOI(0xD8): len=0
                APP0(0xE0): len=14
                APP1(0xE1): len=32
                SOF0(0xC0): len=15
                SOS(0xDA): len=9536
                EOI(0xD9): len=0
…というのが正しいのですけど、無印の DefineBitsJPEG は 標準的な JPEG データ(メタ情報、圧縮テーブル、圧縮された画像データ)をそのまま入れるべき。
- DefineBitsJPEG の JPEGセグメントの並び
  - 画像データフィールド
                SOI(0xD8): len=0
                APP0(0xE0): len=14
                APP1(0xE1): len=32
                DQT(0xDB): len=65
                DQT(0xDB): len=65
                SOF0(0xC0): len=15
                DHT(0xC4): len=29
                DHT(0xC4): len=179
                DHT(0xC4): len=29
                DHT(0xC4): len=179
                SOS(0xDA): len=9536
                EOI(0xD9): len=0
↑詳しくはこちらで。

…って事は DefineBitsJPEG2,3 入れた時からバグってたのか。 うかつすぎ… ○rz

プログラム:

ついでに、αチャネル付き PNG 画像を指定して入れ替えが出来るようにしました。
といって、透明度が有効にならないので、まだ何か変ですけど…
あと、replace 系を二度連続で呼ぶと seg.fault する恥ずかしいバグもこっそり修正…更に、image_id 検索を少し高速化してみるテスト

一日に書けるコードの行数

PHP カンファレンスのアンケートで一日にかける行数はいくつ という設問がありました。
自分は swfed を作り始めて4ヶ月ですが、まだ5600行程なので、 単純計算すると 1日41-42行程度になります。
しかも、C言語で実装してるので PHP 単位だと 20行程度かもしれません。
まー。日曜プログラマなので、そんな程度で許して下さい。(;^ω^)

2008年07月23日(水)

swfed DefineBitsLossless format=3 の読み込みで不具合

format=3 (インデックス方式)は parse がうまく出来ていません。
% php swfdump.phps game.swf > /dev/null
swf_tag_lossless_create_detail: uncompress: Z_BUF_ERROR: not enough buff size
can't create tag detail (tag=36)
swf_tag_lossless_print_detail: detail == NULL
swf_tag_lossless_create_detail: uncompress: Z_BUF_ERROR: not enough buff size
can't create tag detail (tag=36)
swf_tag_lossless_print_detail: detail == NULL
デバッグメッセージを入れたところ、
XXX origsize=1212 # 予想
ZZZ origsize=1216 # 実際の伸長後の長さ
4byte 足りません。
indices_len = ((swf_tag_lossless->width + 3) & -4) * swf_tag_lossless->height;
origsize = 4 * swf_tag_lossless->colormap_count + indices_len;
これらの計算が間違っているようですが、indices_len は、
1 => 1+3 & -4 = 4   & -4 = 4
2 => 2+3 & -4 = 4+1 & -4 = 4
3 => 3+3 & -4 = 4+2 & -4 = 4
4 => 4+3 & -4 = 4+3 & -4 = 4
5 => 5+3 & -4 = 8   & -4 = 8
のような4の倍数への繰上げ処理なので問題ないはず…
まさかだけど、colormap_count が 0 数えってオチはないよね…
試しに 0 数えの処理をいれつつ、整合性チェックを入れて検証開始します。

swftools のコードを見ると:

swftools-0.8.1/lib/modules/swfbits.c
	<出力>
L780:   swf_SetU8(t, ncolors - 1);  // number of pal entries
	<入力>
L958    if (format == 3)
L959        cols = swf_GetU8(tag) + 1;
やっぱり、0 数えで処理してる…

swf_file_format_spec を読んでみた:

そういえば、仕様書読めるようになってたの忘れてました。
COLORMAPDATA
Field Type Comment
ColorTableRGB RGB[color table size] Defines the mapping from color
indices to RGB values. Number
of RGB values is
BitmapColorTableSize + 1.
ColormapPixelData UI8[image data size] Array of color indices. Number
という訳で、+1 して使います。はい。

プログラム:

安心してコードを公開。 # 今回からは tarball もつけます。:-)
少し仕様を変更してて、 テキスト入れ替えの際には対象を変数名で指定しますが、 edit_id でも引っかかるようにしてます。 万が一、衝突したらごめんなさい…
(でも、数値だけの変数名をつける事はないので、いいのかなと)

apache が起動しなくなりました (デジャヴ)

/var/log/httpd/error_log を見ると、
[Wed Jul 23 02:01:15 2008] [notice] mod_python: Creating 4 session mutexes based
 on 256 max processes and 0 max threads.
[Wed Jul 23 02:01:15 2008] [error] (28)No space left on device: mod_python: Fail
ed to create global mutex 1 of 4 (/tmp/mpmtx59601).
Configuration Failed
(END)
↑ココを見て、以下のコマンドで解決。
ipcs -s | grep apache | perl -e 'while (<>) { @a=split(/\s+/); print `echo  $a[1]`}'
以前にも同じ事があったような…

飲み

発表で swfed に興味を持ってくれた人がいて、 一緒に飲みに行ってきました。その時の話のメモ。 後は話が外れて P2P ネタで色々。

2008年07月24日(木)

swfed Windows dll 化

Visual C++ 2008 で挑戦中。
自分の作ったコードは当然のごとくコンパイル出来るんだけど、 php の binding のコードから標準ヘッダを呼んだ先でコケる。
道は長そうな気がしてきた。

「マイミクシィ追加リクエスト機能改善」はどう考えても改悪

今回の仕様変更で、追加リクエストを送った後に送信済みフォルダを覗くと、
メールアドレスからIDを特定できるようになってしまった。
ほんとだ。出来た…
自分はこの日記を mixi に登録してる位で隠してないので別にいいけど、 気にする人はいるだろうなぁ。

FlashLite1.x で画像読み込み

おっと…
こういうアプローチがありましたか… 今度、実験してみよっと。

iPhone に絶望した

絶望というのは言葉のあやみたいだけど、 SMB のアンケートが自虐的で面白いらしい。
「電話機能の使いやすさについて、改善が必要な物をいくつでもお選びください。」
・通話中の音量が小さいこと・着信履歴を1件ずつ削除することが出来ない
・アドレス帳のフォルダ分けが出来ない ・非通知拒否設定が出来ない
へーっ ( ̄― ̄)

これで、4 日分だよ〜。

タイトル一覧
カテゴリ分類
Database
JXTA
Java
XML
awm
bookmark
keyword
memo
news
research
Powered by hns-2.19.5, HyperNikkiSystem Project