These pages are written by only Japanese.

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

こんにちは♪ 現在は8月9日(日)17時56分。 今日も一日、お疲れさまです。


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

先月 2010年06月 来月
1 2 3 4 5
06 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Namazu for hns による簡易全文検索です。
詳細は 詳細指定/ヘルプをご参照下さい。
検索式:

2010年06月06日(日)

JpegTables で共通化できるのか?

大量の JPEG データをファイルに含める際に、 圧縮用テーブルを共通で持てるとサイズが節減できる。
SWF ファイルがそれを意識した構造なので、 swfed のように SWF 内部の JPEG を入れ替えるツールで 利用できないか検証してみた。

検証概要:

世の中から無作為に JPEG ファイルを集め、 それらの圧縮用テーブルが何種類あるのか調べる。

圧縮テーブルセグメント:

まず、JPEG 中の圧縮テーブルセグメントだけ取り出すプログラムを作成。
% jpeg_jpegtable ~/love/aria.jpg tmp.jpg
% jpeg_segment tmp.jpg
(0) marker=SOI(FFD8): length=0
(1) marker=DQT(FFDB): length=65
(2) marker=DQT(FFDB): length=65
(3) marker=DHT(FFC4): length=29
(4) marker=DHT(FFC4): length=179
(5) marker=DHT(FFC4): length=29
(6) marker=DHT(FFC4): length=179
(7) marker=EOI(FFD9): length=0
15分ほど *1 であっさり出来た。ノリで SOI, EOI つけてるのはご容赦を。 jpeg_segment はこれね↑

検証作業:

まず、大量に集めた JPEG ファイルから内容が同じのを取り除く作業から。
MD5 Digest が同じファイルは一つを残して削除しまくる。 そして、以下のように JpegTables を抽出しながら、 それらの MD5 Digest 値を記録。
for f in *.jpg; do
jpeg_jpegtable $f /dev/stdout | md5sum - >> digest.list
done;
さて、結果は。
% wc  digest.list
 1756  3512 63216 digest.list
& sort digest.list  | uniq  | wc
   1063    2126   38268
うーん。思ったよりバラバラすぎる… 微妙。
JPEG 画像生成時に仕掛けを入れるならまだしも、 既にある JPEG 画像を差し替える swfed ではダメという結論です。

*1: しかも、その殆どは PHP に慣れすぎてて変数の頭に無意識に $ をつけては 消す作業に追われたという。。。

2010年06月14日(月)

線形予測ツール

ログを処理してて、あとどの位で終わるのか推測するのに、 場当たりで作ったツールが結構便利なので晒してみます。

使い方:

例えば、
ls -l
-rw-r--r-- 1 yoya develop  415302180 Jun 14 22:58 result.list
ls -l
-rw-r--r-- 1 yoya develop  450796757 Jun 14 23:07 result.list
みたいに膨らむログデータがあって、
最終的に 1036113524 bytes になる予定だと、 みたいに入力フォームを埋めれば、
2010-06-15 01:35:24
といった終了予定時刻が表示されます。

計算式:

$t3 = $t1 + ($n3 - $n1) / ($n2 - $n1) * ($t2 - $t1);
ただの線形補完です。

問題点:

線形予測なので、増える量が一定だと仮定出来ないと使えません。
元々、某サイトで、ユーザ数があと何時間で1000万人超えるのかを 推測するのにでっち上げたツールですが、大外れしました。
ユーザの登録数は時間帯で全く異なる上に、波も激しいので、 せめて二次か三次で補完しないとダメっぽいです。 それでさえも怪しいですけど。

XSS ?:

というツッコミが来そうなので、対応版。 自分で入力して自分で見る分には、 あまり神経質に考える必要もないと思いますが。一応。
awm.jp のドメインに攻撃スクリプトを載せられるのが嫌。 という気分になった時に備えて…

2010年06月16日(水)

順不同のデータから差分を抽出

必要に駆られて、 順不同で並んでいるデータの差分を抽出するツールを作ってみた。
初めは、diff を使おうとしたけど、 順不同で並んでいる1千万規模のデータのうち数百の違いを見つけるのに、 適切なオプションが分からなかったので。

使い方:

こんなデータがあるとして、
% cat 1.list
2
1
3
% cat 2.list
4
2
3
% cat 3.list
3
4
5
こんな結果が出ます。
% php diff_list.php 1.list 2.list 3.list
2 1.list 2.list
4 2.list 3.list
1 1.list
5 3.list

2010年06月20日(日)

エンジン音注意され、運転手が男性殴り死なす

ドライバが「知らない」と言っている以上は、まだ想像の範疇ですが。
未明は深夜を指すので、お疲れの運転手とアイドリング音で安眠妨害の住民とで、 お互いストレスMAX状態で衝突してこの悲劇になっのではと想像してます。
私は大通り沿いに住み、かつ長距離ドライバーなので、 両方の気持ちが分かります。
ドライバとしては休息を邪魔されると腹も立つでしょう。 アイドリングの低い唸り気味のエンジン音は、 車に乗っている人には心地よいので、この音の何処が五月蝿いんだ。 いちゃもん付けるなと思うでしょうね。
一方、通り沿いの住民にとっては、ただただ我慢する対象です。
私は、隣の部屋で宴会されても、隣の家から夫婦喧嘩で怒鳴りあう声が聞こえても、 部屋の中で何台もPCを動かしっぱなしにしても安眠できますが、 それでも家の前でアイドリングされると寝られません。煩さの質が違います。
わざわざパジャマから普段着に着替えて、冬だと寒い真夜中に外に出て。
「アイドリングを止めるか場所を変えて貰えませんか」
と頭を下げつつ丁寧に御願いしても、相手にされなかったり怒鳴られる事さえあります。 割りにあわなすぎるので、よほど長時間騒音が続かない限り我慢します。 自宅が特定され易いので、後で逆恨みされる可能性もありますし。
まぁ、何が言いたいかというと、 勇気あるおじいさんを殺した罪は重いって事で。

2010年06月23日(水)

PHPでBit処理の簡易フレームワークを作ってみた

名付けて BitIndexer
とりあえず Parse だけ。Builder はこれから作る。

テストコード:

14bit ずつ切り出してダンプ
<?php

// SampleParser

require_once dirname(__FILE__).'/ByteBit.php';
require_once dirname(__FILE__).'/BitIndexer.php';
require_once dirname(__FILE__).'/BitIndexer/Parser.php';

class SampleParser extends BitIndexer_Parser {
    function getChunk($data, $offset, $length) {
        static $i = 0;
        $ret = array('name' => "sample_$i", 'length' => new ByteBit(0, 14));
        $i++;
        return $ret;
    }
}

// sample code

$data = 'ABCDE';

$parser = new SampleParser();
$indexer = new BitIndexer($parser);
$indexer->parse($data, strlen($data));

$indexer->dump();

実行結果:

% php SampleParser.php
* sample_0
            0  1  2  3  4  5  6  7   8  9  a  b  c  d  e  f  0123456789abcdef
0x00000000 41 42                                             AB

* sample_1
            0  1  2  3  4  5  6  7   8  9  a  b  c  d  e  f  0123456789abcdef
0x00000000    42 43 44                                        BCD

* sample_2
            0  1  2  3  4  5  6  7   8  9  a  b  c  d  e  f  0123456789abcdef
0x00000000          44 45                                       DE

プログラム:

phps を php にすれば、動作するはず。

課題:

本当にやりたいのは、Chunk をいじって後の連結で、 つまり、バイナリの編集をやりやすくしたいって事です。
あと入れ子構造もうまく表現したい。

これで、5 日分だよ〜。

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