These pages are written by only Japanese.

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

こんばんわ♪ 現在は9月24日(木)20時37分。 8時を過ぎてしましました。


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

先月 2009年02月 来月
01 02 3 04 5 6 7
08 09 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
Namazu for hns による簡易全文検索です。
詳細は 詳細指定/ヘルプをご参照下さい。
検索式:

2009年02月01日(日)

[swfed] GIF 画像処理実装

既にある Lossless <=> PNG 変換のコードをコピペして、 それっぽく Lossless <=> GIF 変換に書き直してみました。
まだ機能しませんが、今日はこれが限界って事で…

課題:

  • カラーマップの処理の残りの実装
  • 透明度処理の設計/実装
  • PHP からのつなぎ込み部分の実装

お墓参り

お花を飾ってきました。

i-revo ゲームポルタ

抽選に当たったのでとりあえず遊んでみましたが、うーむ…

いやぁ… C:\ フォルダ(ドライブでなくフォルダ。大事な事なので二度言いました)に
インストールって、いまどき死亡フラグ *1 だろう (JK
とはいえ C:\i-revo\ というフォルダを作るそうなので、そのまま進めてみる。
最終的にこんな画面に。
ゲームメニューが全部グレイアウトされて選択できません。謎だ… (;゜д゜)
問い合わせするほど気力は余ってない(というか自分の環境の問題かもしれないし) ので諦め。

ゲームポルタ:

ポルタって何だろうと思って Wikipedia を開いてみると、
- 大泥棒ポルタは日本の漫画作品。 
- 地下街の名称。 
  - 横浜ポルタは横浜市にある地下街 
  - 京都駅前地下街ポルタ
ほぉ。アングラで行きますか。勇気あるなぁ。

*1: アンインストール時に何かを期待させてくれます。(´Д`;)

ツツヌケ - 日本おせっかい化計画

ITMedia で以下のサイトが紹介されていました。 幽霊ユーザを許さない厳しいシステムのようです。
面白そうなので試しに登録。 あれ… アカウント名とかパスワードとか入れずに登録が終わった…
これだとログインできませんが… *1
これ以上、このおばさんの絵を見続ける気力はないので、もういいや。捨て。
*1: 登録の時に聞かれる選択肢が間違っている事は何となく推測できますが、 やり直すの面倒…

「Googleストリートビュー」は何が問題か――MIAUがシンポ

「Googleは努力をしていない」
 ストリートビューに似たサービスは日本にもすでにある。
「Location View」が代表例だ。運営するロケーションビューから話を聞いた中川さん
によると、スタートから2年経ったが、同社には苦情は1件も来ていないという。
それって単に Location View があまり使われてないだけじゃ… カバー範囲狭すぎて使い物にならないし。

2009年02月02日(月)

[swfed] GIF 画像入れ替え処理実装

とりあえず PHP binding のところまで実装し切りました。
function replaceGIFData(integer image_id, string gifdata)
return true/false;
動作確認は全くしていませんが… さて、テスト用の GIF 素材を作らないと… (コーディングよりこっちの方が面倒)
動作確認出来たら、v0.15 リリースします。

2009年02月04日(水)

SMART DRIVE で逆効果

Faith で購入したデスクトップPC「PASSANT E64000XN/DVR」が うるさくて困っていたのですが、
最近、内部 HDD が壊れたので、購入してきた丸裸の HDD と SMART DRIVE の箱ごと *1 交換したところ、
途端に静かになりました。
どうやら SMART DRIVE が何かと共振していたみたいです。
しかも、10秒位の周期で音量の増減を繰り返す低周波の騒音なので デスクトップ作業効率低下にはげしく寄与していて、
長時間 PC を動かしていると頭が痛くなるほどでした。
高周波の騒音は減っていたかもしれませんが、 本末転倒にもほどが…

…というか:

この faith のデスクトップPC、
  • キーボードの反応が悪い (押して表示に反映されるのが数秒かかる事さえある)
  • そもそもマウスが反応しない。
  • 音楽を聴いていても不意に音が 0.数単位のループにハマる
  • FFXI で遊んでいた頃は、これまた不意にフリーズする
ありえないほど、ひどい PC でした。
結局、キーボードやマウスは予備のを使ってます、 音楽の件は設定しなおすとループが外れるので、設定のウィンドウを出しっぱなしにして対処。FFXI は大事なイベントは別PCで遊んでました。
とりあえず、もう二度と faith の PC は買わないよ…

*1: 箱をうまく分解できず HDD を取り出せなかったので…

Skype4 を入れてみました

3 に慣れた自分には激しく使いづらいです。

困ったところ:

3 ではグループチャット毎にウィンドウが作られていて、 同時並行で会話をする自分には便利だったのですが、 4 では一つのウィンドウ内で画面を切り替える方式になり、 かつ、CHOCOA とは違って注目しているチャンネル以外の文字は読めません。 (一応、新しい会話があった事はわかるけど、切り替えないとその文字が読めない)
これだと並行してなんて無理です…
あと、全般的にスペースを無駄に使うようになってます。 しかも多少レイアウトをいじれるのですが、境界は少ししか動かせないし 肝心な所はカスタマイズできない。よほど広いディスプレイでないと不便で困ります。

コンパクトビュー:

表示メニューからコンパクトビューを選ぶ事で、マルチウィンドウに戻せました。 でも、ウィンドウ内での表示レイアウトもッ微妙なので解決してません。

…というわけで:

英語版の公式ダウンロードページ *1 下の「previous version of Skype.」から辿った先にある SkypeSetup.exe で 3.8 に戻しました。快適快適。

*1: 日本語版には何故かこのリンクがないです…
ドイツ語版やフランス語版にもないので、英語以外のページはそういう方針なのかも。


2009年02月08日(日)

膝のリハビリ失敗

一ヶ月前に壊した膝の痛みが消えたので、少し鍛えようと久々に山登りしてきました。
念の為、いつもの1/4程度の距離。
登りは楽勝。いつの間にか山頂に到着。
下りも念のため、ゆっくり歩いたのですが、すぐに膝の痛みが再発。
二時間ほど足を引きずって下山しました。
今月も養生かな…;ω;

i-revo ゲームポルタ (2)

ゲームポルタで遊ぶのに ViewPointMediaPlayer が必要な訳ですが…
色々調べてみた結果、スパイウェアだということが判明しましたよ。外国の
メディアソフトで、ViewPointMediaPlayerというものから検出されているよう
です。コンピュータから情報を収集して、広告表示の活動などを行ったりします。
えーっと… ほんとかな。これ…

Viewpoint@McAfee:

↑少し古い情報ですが、McAfee によると、 プライバシーポリシーの範囲内の動きなので問題ないとの事。
Data collection
  Viewpoint's software products do not automatically collect any personally
identifying information. <略>
  Viewpoint collects limited anonymous information in connection with its
search and advertising products that your browser <略>  
<ばっさり略>
コンピュータから情報収集というのが、個人情報に紐つけずに検索ワードを 拾っているという事であれば…
個人的には気持ち悪いけど、スパイウェアと言い切るのはマズイなぁ。

2009年02月09日(月)

[swfed] GIF 画像入れ替え処理実装 (2)

動作確認。残念ながら動かず。

テスト内容:

Photoshop で頑張って *1 透明度設定。 以下の記録を参考に入れ替え。 ついでにコマンドツールも作成
http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfreplacegifdata.phps swfreplacegifdata.phps
php swfreplacegifdata.phps chara.swf 69 10.gif > tmp.swf
失敗… ○rz

更にバグ発見:

$ php swfgetpngdata.phps ~/flash/chara.swf 69 > tmp.png
$ ls -l ~/tmp.png
-rw-r--r-- 1 yoya dev  0  2月 10 01:51 /home/yoya/swfed/tmp.png
どう壊れているのか getPNGData で画像抽出しようとしたら何も出力しませんでした。
失敗した場合は何かしらエラー出力があるはずですが、それも処理が抜けているようです。
さて、デバッグデバッグ。

*1: 透明にしたい場所の一部を投げ縄で選択>近似色を選択>Deleteボタン

2009年02月10日(火)

[swfed] GIF 画像入れ替え処理実装 (3)

夢の中でデバッグ終了。仮に getPNGData にバグがないとしたら、 0 byte の画像データが入っているんじゃないかという事で、 朝までコードを追ってました(夢の中で…)。
% php sample/swfdump.phps ~/tmp.swf
<略>
[169] tag=DefineBitsLossless2(36)  length=8
        image_id=69  format=3  width=84  height=188
<略>
正解!

palette 処理:

GIF から吸い出したパレットでない変数を参照していたと…

compress 処理:

既存の不具合を発見。
compress(tmp_buff, &compsize, old_buff_ref, old_size);
fprintf(stderr, "XXX: compsize=%lu old_size=%lu\n, compsize, old_size");
XXX: compsize=0 old_size=16816
ここで compsize (圧縮後の値) が 0 になるので画像データが消えるのですが、
fprintf(stderr, "AAA: compsize=%lu old_size=%lu\n, compsize, old_size");
compress(tmp_buff, &compsize, old_buff_ref, old_size);
fprintf(stderr, "XXX: compsize=%lu old_size=%lu\n, compsize, old_size");
AAA: compsize=0 old_size=16816
XXX: compsize=0 old_size=16816
あーーっっ。○rz
fprintf(stderr, "AAA: compsize=%lu old_size=%lu\n, compsize, old_size");
compress(tmp_buff, &compsize, old_buff_ref, old_size);
fprintf(stderr, "XXX: compsize=%lu old_size=%lu\n, compsize, old_size");
圧縮後のデータの格納先 buff としてどの位確保したのかを 伝えないとダメでした。
compsize = old_size;
fprintf(stderr, "AAA: compsize=%lu old_size=%lu\n, compsize, old_size");
compress(tmp_buff, &compsize, old_buff_ref, old_size);
fprintf(stderr, "XXX: compsize=%lu old_size=%lu\n, compsize, old_size");
AAA: compsize=16816 old_size=16816
XXX: compsize=8543 old_size=1681
format = 5 では初期化してたけど format = 3 では忘れてたみたい。 format = 3 の動作確認もしてましたが、stack のゴミが入っていて たまたま動いていたようです。
-O0 もテストパターンに含めておきますかね… 成功!

2009年02月11日(水)

[swfed] swfed v0.15 release (GIF 対応)

以前から要望の多かった GIF 画像入れ替えに対応しました。

GIF 入れ替え:

↓ これで入れ替えられます。
replaceGIFData($image_id, $gif_data);
既存の PNG, Jpeg 入れ替えと同じインターフェースです。

不具合修正:

変数未初期化のバグを修正しました。
幸い脆弱性には繋がりません *1 が、 これが原因で画像入れ替え処理に失敗する事がありました。
罠を踏んでいる人がいたら、ほんとごめんなさい。
具体的には、失敗すると入れ替えたはずの画像のスペースが真っ赤になります。
Flash Player は画像データを認識できない場合、赤く塗りつぶすので。

画像入れ替えページ:

png か jpg かをボタンで指定するのが面倒という声を頂いたので、 ボタンを一つにまとめて、画像フォーマットの自動判定を行うようにしました。
function detect_image_ext(&$imagedata) {
    $image_sig = substr($imagedata, 0, 0x10);
    if (strpos($image_sig, 'JFIF') === 6) {
        $ext = '.jpg';
    } elseif (strpos($image_sig, 'PNG') === 1) {
        $ext = '.png';
    } elseif (strpos($image_sig, 'GIF') === 0) {
        $ext = '.gif';
    } else {
        $ext = false;
    }
    return $ext;
}
間違えてたらごめんなさい。(´Д`;)

制限事項:

テスト中に差し替えに失敗する GIF 画像を見つけました。
でも、IE でも表示できない(Firefox だと表示できる)画像でしたので、 対応は後回しにさせて下さい。

追記 (2009/04/07):

IE だけ表示できない GIF の件は、こちら↓

追記 (2010/12/06):


*1: と思っていたけど、 圧縮する事でサイズが(通常とは逆に)増えるパターンだと危ないかも… (zlib伸張後のフレームオフセットを合わせてとか器用な事って実際できるのかな)

2009年02月14日(土)

Yahoo!ニュースのID表示

これはひどいww それだけはやっちゃダメでしょw
あからさまな自作自演をバレてないと思って続けてたアホに 天罰が下った点で、個人的には GJだと思うけど (´ω`)

MFC で OpenGL

↑この本を何となく購入したので、さっそくプログラミングするかと思ったら、 フリーで使える 2008 Express Edition は MFC が使えませんでした。
* Visual C++ 2008 Express Edition には MFC と ATL は含まれていますか。 
いいえ。Visual C++ 2008 Express Edition には MFC と ATL は含まれていません。
MFC と ATL は Visual Studio 2008 Standard Edition 以上に含まれています。
昔、購入した Visual C++ 6.0 standard edition があったので、 こっちでコンパイル。
以下のような違いはあるけど何となく進められました。 といった感じで、青く塗りつぶすだけのサンプルプログラムが動作しました。

/* CDialog::OnPaint(); */
CPaintDC dc(this); // 描画用のデバイス コンテキスト
wglMakeCurrent(dc.GetSafeHdc(), m_hGLRC);
glClearColor(0.0f, 0.0f, 0.5f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
wglMakeCurrent(NULL, NULL);
さて、開発環境は出来たので遊ぶとしますか。

誤植?:

先の本(p15 の一番下)には追加する lib ファイルとして open32gl.lib だったり open32.lib だったりと揺れてるけど、前者が正解。普通に分かるから別にいいけど。

2009年02月15日(日)

[swfed] 透明度付き画像の入れ替え不具合

swfed で SWF 内の画像を透明度付き PNG 画像で差し替えると おかしな色が混じる件ですが、仕様書の中に以下の記述を発見。
           BitmapPixelData ARGB[image data size]
Array of pixel colors.
Number of entries is BitmapWidth * BitmapHeight.
The RGB data must already be multiplied by the alpha channel value.
Flash CS3 とかで画像を放り込むと透明な場所の RGB 値に変化があったのは そういう事か…
予め alpha 値分減らして RGB 値を保存しておけば、 実行時の色の重ね合わせで処理を省けますしね。

問題の説明:

まとめると、以下のような感じ
  • 実行時の色の重ね合わせ処理を軽くする為、予め alpha 分 RGB 値を減らすのが本来の仕様。(計算式からの推測)
  • ところが、減らさずに PNG データの RGB 値をそのまま Lossless2 に埋め込んでいた。(不具合)
  • その為、色の重ね合わせで RGB 値が大きくなりすぎ 255 を超え、2 の補数でひっくり返って、ネガっぽい色が表示された。(前半は憶測)
  • ただし、alpha = 0 の時だけその色を足さない処理になっていて(憶測) そこだけ透明度が働いて輪郭の外側の背景が見えていた。 (なので alpha を 0 と 255 の2値表現で利用する場合は問題が発生しない *1 )
すっきり。(´∀`)

trunk に commit:

alpha 値(不透明度)が 0, 255 以外の時に表示される色がおかしくなる不具合を修正
- PNG の (R, G, B, A) を (R*A/255, G*A/255, B*A/255, A) に変換し Lossless2 タグに保存するように修正
- GIF は透明度 pixel を (0, 0, 0, 0) で保存するように修正

2009/12/10 追記:


*1: …と思ってたけど、微妙におかしいとの報告も貰っているので要研究。

2009年02月16日(月)

IE で GIF 画像が表示できない問題

とあるサイトで FireFox で表示できるのに IE だと表示できない GIF 画像を発見。

解析:

giflib を使って GIF ファイルの中を調べてみました。
Screen Infomation:
    (Width, Height)=(159, 45)  ColorResolution=8  BackGroundColor=0
ColorMapObject:
    ColorCount=128  BitsPerPixel=7
	<略>
ImageCount=1
# Image No. 0
ImageDesc
    (Left, Top)=(0, 0)  (Width, Height)=(159, 46)  Interlace=0
なるほど。

解説:

GIF は初めに Screen として表示サイズ(Width, Height)を設定します。
GIF は複数のイメージデータを含める事が出来て (GIF anime とか)、 各イメージで(Screenのどこに表示するかの) geometry (x,y-width,height)を 持ちますが、これが Screen の枠からはみ出ていると…
この位は許容してくれても良さそうですが、IE は厳しいようです。

修正:

修正するプログラムを作ってみました。 以下にようにして、画像ファイル(のスクリーンサイズ)を修正できます。
% gcc -o gif_fixscreen gif_fixscreen.c -lgif
% gif_fixscreen old.gif > new.gif

ImageMagick:

ちなみに ImageMagick だと以下のように Screen の方が大きなサイズ だと言われます。
% identify  414954_160.gif
414954_160.gif GIF 159x46 159x45+0+0 PseudoClass 128c 2.6kb
あれれ…
続く

追記1 (2010/02/01):

ImageMagick の GIFフォーマット解析ルーチンがバグってて Screen と Page を逆で拾ってるっぽい。うーんw

追記2 (2010/02/01):

JPEG でも IE だけ表示出来ない問題を見つけたので追記。
jpegを保存するときCKYKで保存するとIEでは表示できない

2009年02月17日(火)

mb_strlen() 関数の落とし穴

会社の同僚と mb_strlen の話をしていて以下のページを見つけましたが、
<?php
$str = '日本語にほんご';
var_dump(mb_strlen($str, 'SJIS'));
?>

というように、mb_strlen()関数の第2引数に$strの文字エンコードを指定すると、
 PHPの内部エンコーディング設定に関わらず正しく動作するようになります。
環境が変わったら突然おかしくなったということを防ぐためにも、
第2引数で文字エンコードを指定するようにすることをお勧めします。
うーんw
そもそも、環境の方を見直すべきじゃないかと思うのは自分だけだろうか…
場所によって文字コードがバラバラだったらアーキテクチャを見直すべきだし。

2009年02月22日(日)

[swfed] 0.16 release 半透明対応

先程、swfed 0.16 をリリースしました。 半透明の画像を扱った事が無かったので気づかなかったのですが、 お友達から素材画像を頂けたので、修正してみました。

2009年02月24日(火)

技術者・SE・プログラマ面接時の技術的な質問事項

・セキュリティ
  ・高木浩光を知っているか★
ちょw
でも、的を得てるw

これで、13 日分だよ〜。

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