These pages are written by only Japanese.

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

こんばんわ♪ 現在は4月27日(土)1時27分。 1時を過ぎました。


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

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

2009年09月05日(土)

PHP カンファレンス 2009 当日

発表資料できた…:

今週は仕事が忙しくて平日に発表資料を練る余裕がなく、
かといって、土日に書き溜めた分だけで発表する勇気は
僕にはないので、徹夜で発表資料作ってました。
いま、出来ました…
さて、本番寝ぼけずに話せるかしら (´Д`;)

P.S. 目玉機能の実装は間に合わなかったので、 昨年の LT とほぼ同じ内容になります。

発表:

20分の発表、直前にトラブルもあったけど何とか乗り切った。かな… *1 発表15分前に念の為ノートを再起動したら固まって、 二度電源ボタン長押しで起動すると思ったら復元ポイントに戻って ファイルは微妙に古かったり設定が壊れてたりと、かなり心臓に悪かったです。
事前の練習ではプロジェクタに普通に映ってたのに、本番は設定変えないとダメだったし。

懇親会:

LT の発表枠を頂けました。
僕はサブ部屋で発表してたので、その時にメイン部屋にいた人達向けに、
(時間が5分だったので)中身を1/4にしつつ、もの足りなかった分を補足して説明しました。
一部だけ絵を書き換えて。その絵が出るまで連打してたら、妙に盛り上がりました。
ガチャガチャのエクスタシーを理解できたかも。といった展開です。
楽しかった。

ノートPC:

発表直前から調子の悪かったノートPCですが、 帰宅して電源ボタンを押しても反応しなくなりました。
お亡くなりな感じ。(;ω;)

*1: ノートPCが一瞬生き返った間に救出しました。また死んだけど…

電車内で酔っ払いのオッサンに絡まれた

それとなく駅で降ろして、それとなくホームを歩かせて、そのまま駅員に引き渡したw
駅員さんも手慣れてて、一方的に絡まれてる僕はすぐ釈放で、
オッサンには「そんなに長くかからないので、こちらへ」と誘導してた。
僕が携帯サイトを見てて多分ニヤけた位のタイミングで「馬鹿にしてんのかコラ」 ときたので、手を横に*コミカル*に振って「いえ、全然そんな事ないですっ」と 答えたのが失敗というか、僕も大人げないというか。
うん。ほんとごめんなさい。(;´・`)

2009年09月06日(日)

ついったりずむ

これは面白そうだ。ポチっと。
<br />
<b>Fatal error</b>:  Cannot use object of type stdClass as array in <b>/var/www/sites/rhythm.kayac.com/lib/classes/MyTwitterOAuth.php</b> on line <b>19</b><br />
えーっと…

symfony:

こ、これは…
[PropelException]
[wrapped: connect failed [Native Error: Too many connections] [User Info: Array]]
stack trace
1.at ()
in SF_ROOT_DIR/vendor/pear/php/symfony/vendor/propel/Propel.php line 489 ...

486.            try {
487.                $con = Creole::getConnection($dsn);
1.            } catch (SQLException $e) {
1.                throw new PropelException($e);
1.            }
2.            self::$connectionMap[$name] = $con;
1.        }1.at Propel::getConnection('propel')in SF_ROOT_DIR/lib/model/om/BaseDataPeer.php line 197 ...    public static function doSelectRS(Criteria $criteria, $con = null)
    {
        if ($con === null) {
            $con = Propel::getConnection(self::DATABASE_NAME);
        }

        if (!$criteria->getSelectColumns()) {1.at BaseDataPeer::doSelectRS(object('Criteria'))in SF_ROOT_DIR/lib/model/DataPeer.php line 125 ...        $criteria->setLimit($limit);
        $criteria->setOffset($from);

        $resultSet = self::doSelectRS($criteria);

        $ranking = array();
        while($resultSet->next()) {1.at DataPeer::getRanking('', '0', '10')in SF_ROOT_DIR/apps/frontend/modules/top/actions/actions.class.php line 35 ...        //
        // テンプレート
        //
        $positiveRanking = DataPeer::getRanking(DataPeer::RANKING_GOOD, 0, sfConfig::get('app_top_limit'));
        $negativeRanking = DataPeer::getRanking(DataPeer::RANKING_BAD,  0, sfConfig::get('app_top_limit'));
        
        $this->oauthUrl  = $twitterOAuth->getAuthorizeURL($token['oauth_token']); // 認証用URL1.at topActions->executeIndex()in SF_ROOT_DIR/vendor/pear/php/symfony/action/sfActions.class.php line 53 ...    }

    // run action
    $ret = $this->$actionToRun();

    return $ret;
  }1.at sfActions->execute()in SF_ROOT_DIR/vendor/pear/php/symfony/filter/sfExecutionFilter.class.php line 129 ...
          // execute the action
          $actionInstance->preExecute();
          $viewName = $actionInstance->execute();
          if ($viewName == '')
          {
            $viewName = sfView::SUCCESS;1.at sfExecutionFilter->execute(object('sfFilterChain'))in SF_ROOT_DIR/vendor/pear/php/symfony/filter/sfFilterChain.class.php line 43 ...      }

      // execute the next filter
      $this->chain[$this->index]->execute($this);
    }
  }
1.at sfFilterChain->execute()in SF_ROOT_DIR/vendor/pear/php/symfony/filter/sfFlashFilter.class.php line 50 ...    }

    // execute next filter
    $filterChain->execute();

    // remove flash that are tagged to be removed
    $names = $userAttributeHolder->getNames('symfony/flash/remove');1.at sfFlashFilter->execute(object('sfFilterChain'))in SF_ROOT_DIR/vendor/pear/php/symfony/filter/sfFilterChain.class.php line 43 ...      }

      // execute the next filter
      $this->chain[$this->index]->execute($this);
    }
  }
1.at sfFilterChain->execute()in SF_ROOT_DIR/vendor/pear/php/symfony/filter/sfCommonFilter.class.php line 29 ...  public function execute($filterChain)
  {
    // execute next filter
    $filterChain->execute();

    // execute this filter only once
    $response = $this->getContext()->getResponse();1.at sfCommonFilter->execute(object('sfFilterChain'))in SF_ROOT_DIR/vendor/pear/php/symfony/filter/sfFilterChain.class.php line 43 ...      }

      // execute the next filter
      $this->chain[$this->index]->execute($this);
    }
  }
1.at sfFilterChain->execute()in SF_ROOT_DIR/vendor/pear/php/symfony/filter/sfRenderingFilter.class.php line 33 ...  public function execute($filterChain)
  {
    // execute next filter
    $filterChain->execute();

    if (sfConfig::get('sf_logging_enabled'))
    {1.at sfRenderingFilter->execute(object('sfFilterChain'))in SF_ROOT_DIR/vendor/pear/php/symfony/filter/sfFilterChain.class.php line 43 ...      }

      // execute the next filter
      $this->chain[$this->index]->execute($this);
    }
  }
1.at sfFilterChain->execute()in SF_ROOT_DIR/vendor/pear/php/symfony/controller/sfController.class.php line 283 ...        }

        // process the filter chain
        $filterChain->execute();
      }
      else
      {1.at sfController->forward('top', 'index')in SF_ROOT_DIR/vendor/pear/php/symfony/controller/sfFrontWebController.class.php line 48 ...      $actionName = $request->getParameter('action');

      // make the first request
      $this->forward($moduleName, $actionName);
    }
    catch (sfException $e)
    {1.at sfFrontWebController->dispatch()in SF_ROOT_DIR/web/index.php line 10 ...
require_once(SF_ROOT_DIR.DIRECTORY_SEPARATOR.'apps'.DIRECTORY_SEPARATOR.SF_APP.DIRECTORY_SEPARATOR.'config'.DIRECTORY_SEPARATOR.'config.php');

sfContext::getInstance()->getController()->dispatch();



symfony settings ...
---
app_api_count: 200
app_batch_interval: 2
app_batch_reply: message
<略>
… debug mode (もしくは error display なんちゃら)は 本番サーバではやめた方がよいと思うんだ。うん。

まどろみ

今日は殆どぼーっとして過ごしました。
起きてるんだか寝てるんだか、分からない状態。
何もする気が起きないし…
過労気味な日々が続いていたので、反動かも。

PCが壊れた?

再起動したら直ったけど、何だろう。これ。

Windowsキー:

「Windowsキーが押しっぱなし」の状態と、師匠から指摘を受ける。
なるほど…
RELEASE イベントが迷子になってたか。何かのアプリケーションが盗んだか。 その辺りが怪しそう。

朧月みたいなもの

空全体に雲が薄くかかっていて、朧月みたいに見えたので
これは写真を撮らねばと、車を30分ほど飛ばして近くの川まで 行ってきました。
そこまで行かないと暗い場所が無いので。
移動してる間にただの曇りになって月が見えなくなりました。○rz
しかし、夜の川は怖いですね…
スモークのかかった高そうな車とか、アレな感じの車が並んでましたYO。
もう行くまい…

2009年09月09日(水)

mixi仲良し機能

なるほど… こうやって絶望の淵に叩き落すと。

どうせ、お友達なんていないやい。(´Д`;)
絶望したっ! 仲良しグループでキャハハウフフするリア充前提のmixiに絶望したっ! …
それはそれとして、自分には使い道のない機能だなぁ…
仲良しグループで秘密話するって習慣が無かったので。

2009年09月13日(日)

[swfed] PHP 5.3.0 で動作実験

PHP カンファレンスで SWF Editor の発表をした際に、
 PHP 5.3.0 で使えますか
との質問に対して、
動かした事がないので、まだ未対応って事で。
と答え、課題として持ち帰っていたので調査。
結果としてはソースいじらずに、そのままコンパイルできて、そのまま動きました。
5.2.x の extension のインターフェースがそのまま使えるんですね。素敵。
以下は検証記録 (root権限を使わない検証方法)

PHP 環境準備:

php-5.3.0 を持って来てコンパイル
./configure --prefix=/home/yoya/tmp/php530
make install
cp php.ini-development  /home/yoya/tmp/php530/lib/php.ini
php.ini を設定

でもって、以下の3行を追加
extension_dir = "/home/yoya/tmp/php530/lib/php/extensions/no-debug-non-zts-20090626/"
enable_dl = On
extension=swfed.so

swfed インストール:

export PATH=/home/yoya/tmp/php530/bin:$PATH
phpize
./configure --with-zlib --with-png --with-gif
make install

動作結果:

% php -v
PHP 5.3.0 (cli) (built: Sep 13 2009 22:25:03)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies
% php swfdump.php  ~/flash/loveplus/player_01.swf
magic=CWS  version=9  file_length=175589
rect=(0, 0)-(194, 300) (f_size=14)
frame_rate=12.0  frame_count=1
[0] tag=FileAttributes(69)  length=4
[1] tag=SetBackgroundColor(9)  length=3
[2] tag=Unknown(86)  length=15
[3] tag=Unknown(82)  length=103941
[4] tag=DefineShape(2)  length=33
[5] tag=DefineSprite(39)  length=16
[6] tag=DefineBitsLossless2(36)  length=1229
        image_id=3  format=5  width=45  height=45
        argb bitmap exists
[7] tag=DefineShape2(22)  length=299
[8] tag=DefineSprite(39)  length=16
[9] tag=DefineSprite(39)  length=62
[10] tag=Unknown(76)  length=70
[11] tag=DefineBitsJPEG2(21)  length=69689
        image_id=7  jpeg_data_size=69687
                SOI(0xD8): len=0
                APP0(0xE0): len=14
                APP12(0xEC): len=15
                APP14(0xEE): len=12
                DQT(0xDB): len=130
                SOF0(0xC0): len=15
                DHT(0xC4): len=416
                SOS(0xDA): len=69055
                EOI(0xD9): len=0
[12] tag=DefineShape2(22)  length=84
[13] tag=PlaceObject2(26)  length=6
[14] tag=PlaceObject2(26)  length=20
[15] tag=ShowFrame(1)
[16] tag=End(0)
\(^O^)/ 念の為に、JPEG 抽出も
% php swfgetjpegdata.php chara.swf 1 | strings  | head -1
JFIF
<< \(^O^)/ \(^O^)/ \(^O^)/

トラブルシューティング:

Q. dl('swfed.so') すると dl(): Dynamically loaded extensions aren't enabled
A. php.ini に enable_dl = On を追加すれば直る
Q. dl('swfed.so') すると Temporary module name should contain only filename
A. php.ini に extension_dir = <swfed.so のあるディレクトリ> を追加すれば直るかも

2009年09月14日(月)

[swfed] swfimagedump

Sazesaki さんの記事( id:sasezaki:20090913 )を真似して
swfimagedump を書いてみました。
Jpeg に加えて Lossless 画像が png ファイルに落ちます。
<?php

if ($argc < 2) {
    fprintf(STDERR, "Usage: swfimagedump <swf_file>\n");
    exit(1);
}

$swf_filename = $argv[1];
$swfdata = file_get_contents($swf_filename);

$obj = new SWFEditor();
if ($obj->input($swfdata) == false) {
    fprintf(STDERR, "input failed\n");
    exit(1);
}

$tags = $obj->getTagList();
foreach ($tags as $k => $tag) {
    $tagName = $tag['tagName'];
    if (strncmp($tagName, 'DefineBitsJPEG', 14) == 0) {
        $detail = $obj->getTagDetail($k);
        $imageId = $detail["image_id"];
        file_put_contents($imageId.'.jpg', $obj->getJpegData($imageId));
    } elseif (strncmp($tagName, 'DefineBitsLossless', 18) == 0) {
        $detail = $obj->getTagDetail($k);
        $imageId = $detail["image_id"];
        file_put_contents($imageId.'.png', $obj->getPNGData($imageId));
    }
}
Iterator に慣れてない古い人間なので、とりあえず foreach してます。
実は、自分で作っておきながら getTagList の戻り値が foreach 出来るの知りませんでした。
Sazesaki さん有難う御座います。\(^O^)/

** 備考:

あと、SWF ファイルから画像を抜き出すときの注意なのですけど、
実は少なくとも DefineBitsLossless2 についてαチャネルに半透明( 0 より大きく 255 より小さな値)のデータを含む場合、
厳密には原理的に元画像を復元するすべがありません。
仕様書(swf spec ver10 の p154)によると、
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.
なんだそうです。割った数をかけても元に戻りません。
詳しくは以前書いた日記で ↓

追記 (2010/12/17):

DefineLossless2 で検索して、この日記に辿り着いた方がいらっしゃるので。

2009年09月15日(火)

SONY の MP3 WALKMAN で動画を見る

随分前から SONY の MP3 ウォークマン (NW-A828)を使ってますが、
動画ファイルを転送するツール MediaManager for WALKMAN が全く使い物になりません。
キャプチャした動画や何処かから拾ってきた動画をこのツールに放り込むと、
次のファイルは互換ではありません
としてハネられます。
結構色んな動画フォーマットを試しましたが成功した事がありません。
QuickTime Pro で変換してフォーマットを総当たりで試すのも面白そうですが 何か負けてる気分。
という訳で、ツールを探しました。

Craving Explorer:

↓ これで解決 動画サイトからダウンロードするツールですが、 ローカルな動画ファイルにも対応しています。
例えば、
% ls -l
-rwxr--r-- 1 yoya devel 24854217  9月 12 01:06 BakeMonogatariOP10.mp4
-rwxr--r-- 1 yoya devel 23947431  7月 25 01:30 BakeMonogatariOP4.mp4
こんなファイルがあるとします。※フィクションです
Craving Explorer を起動して変換タブに、ローカルなファイルをドラッグ&ドロップします。
(何処かのタイミングで変換フォーマットを聞かれるので、WALKMAN を選択)

変換されたファイルが、
My Documents\CravingExplorer\download\walkman\
以下に出来てるので、それを MediaManager for WALKMAN にドロップします。
(Craving Explorer の変換フォーマット指定で自動登録を選ぶと、このドロップの手順は不要)
\(^O^)/ ※あくまでフィクションです

えーっと…:

ちゃんと、Blu-lay ディスク買うので許してっ。(謎
これないと生きてゆけない。><;

おふとんの乾きが遅い

ついでにお風呂をいれるのも時間がかかります。
秋を感じますね…
…と寝る時間が削られるので、対策しないと…

2009年09月16日(水)

帰りの電車で本気出す

帰宅中。電車の座席で隣のJCに寄り掛かられてる\^o^/
気持ちよく寝てもらえるように、腕の硬さや角度もろもろ 条件を全力で考えてサポート中。
生きてるとたまにはいい事もありますね。o(^-^o)(o^-^)o

あれ…反対側からおじさんに寄り掛かられてる。
優しく押し戻してと…(;´・`)

2009年09月17日(木)

SWF 内の JPEG マーカー

上記では、ファイルからオープンした jpeg データの先頭に 
[0xff, 0xd9, 0xff, 0xd8].pack(”C*”) の4Byteの文字列を付加していますが、
これは SWF File Format Specification にも記載されている接頭子(マーカー)になります
僕の知る限りでは、 という事情がありまして、頭に EOI, SOI(順番逆だし) をつければ良い訳ないじゃん。
確かに、携帯では頭に SOI, EOI をつければ表示できていたけど、たまたまだよね!
と思って、早速、仕様をチェックしました。
 The data in this tag begins with the JPEG SOI marker 0xFF, 0xD8 and
ends with the EOI marker 0xFF, 0xD9.
 Before version 8 of the SWF file format, SWF files could contain an
erroneous header of 0xFF, 0xD9, 0xFF, 0xD8 before the JPEG SOI marker.
うぁぁ… (´Д`;)
SWF v8 からですが、仕様に確かに明記されてます… ↑これでは、JPEG セグメント並び変えを真面目にやってるのですが、
それをサボるモードを作ってみようかしら。
JPEG をセグメント分割するにはバイト単位で scan する必要があるので、結構重たいんです。

SWF内のJPEG構造が変な理由を推測:

DefineBit2JPEG2のJPEG完取り込みパターンはなぜこんな仕様かー。
との声がありましたので、自分なりに推測してみました。 事実と又聞きと憶測が入り混じってます。
…といいますか、事情知ってる人いたら教えてw

2009年09月18日(金)

ノートPCの修理見積もり

PHPカンファレンス後に動かなくなったノートPCですが、
つい先程、ヨドバシから修理見積もりの連絡がきました。
11万超www
買ったばかりなのに出せるかーーw
異物が入っててボードを初め色んな部品が壊れてるって説明だったけど、
普段から面倒なの我慢してキーボードカバーしてキレイに使ってたのにーw

まぁ、ワランティはいってるので問題ないですけど… (*'-')

2009年09月19日(土)

鎌倉探索

北鎌倉駅 >> 円覚寺 >> 建長寺 >> 鎌倉アルプス >> 鎌倉宮 >> 鶴岡八幡宮 >> 鎌倉駅

円覚寺:

拝観料300円です。
昔の建物が沢山保存されていて見ごたえあります。

建長寺:

鎌倉アルプスへの通り道です。 拝観料(300円)は払います。

鎌倉アルプス:

アルプスと名がついてますが、ハイキングコースです。
健康な人なら、ジョギングして通り抜けできます。多分。

鎌倉宮:

偉い人の身代わりになって亡くなった人が 祭られてて、悪い事を肩代わりしてくれるそうです。
あと、お皿を割って厄払いするとこもあります。

鶴岡八幡宮:

結婚式やってました。

鎌倉駅:

鶴岡八幡宮から鎌倉駅の間の商店街 は活気があります。人がいっぱい。

2009年09月21日(月)

DefineBitsLossless タグ詳細

ふと、日記のリファラをチェックしてみると、
google co : definebitslossless format=5 -> /~yoya/?200807
google co : definebitslossless format=5 -> /~yoya/index.cgi?YEAR=2008&MONTH=07&DAY=ALL
DefineBitsLossless で検索して僕の日記に来られた方を見つけたので、 まとめを作ってみました。 実は Lossless のフォーマット自体は簡単です。
でも、PNG や GIF をココに埋め込もうとすると、libpng や giflib を知らなければならなくて、そっちの方が大変だったりします。

2009年09月23日(水)

富士山まで車で往復

無事に帰宅できたので写真を整理中。

足柄SA:

高速に入ってすぐ疲れがきたので休憩しようにも、 車線変更できず2つSAを逃してようやく入れた足柄SA。

天気がよく風もほどよく、リフレッシュできました。

富士スカイライン:

道幅はそこそこありますが、急カーブが多く 見通しが悪いので、霧が出たらどうしようかと 思ってたら、途中からいきなり雨になりました。\^o^/

ここ、車だけなら良いのですがバイクが怖いです。
無茶な運転する人が多いので。(´ー`;)

富士宮五合目:

頂上の駐車場に所狭しと車が並んでいますが、 きちんと端っこに停めない車が結構あって、 間を通るのに苦労します。

あと、駐車スペースから出る時、隣の車が死角になって 後ろから車が迫っているのか目視できません。
窓を開けて耳を澄ませて対処してみました。

まとめ:

オチは無いです。正直、無茶な冒険だったような気も…(;´・`)

2009年09月26日(土)

ドラムの練習

午前中、後輩の様子を見に行く。
基礎練からして効率が悪かったので、メニューを改造。
あとダブルストロークとパラディドルを軽く説明
楽器の方は、ドラムの子が悩んでる風なので、そちらを重点的にチェック
楽譜がミュージックエイトで例のごとくいい加減なので改変
フィルインのリズムの作り方をいくつか紹介
皮の楽器と金属の楽器の叩き分け。特にクラッシュシンバルの鳴らせ方とか。
あと、原曲を聞いた事がないとの事なので、(予想して)買っておいたCDで曲を流して練習台で真似、
ある程度リズムが掴めてきた所で、ヘッドフォンで聞いて細かい音まで真似するといった段階で慣れさせてみた。
ドラムが嫌いになられると悲しいので、こっちも本気だったりします。
まだ教えたい事が沢山あるけど、消化不良にならないうちに今日は退散。(∪o∪)。。。

日本平PAで晩御飯

焼津からの帰り。東名日本平PAで晩御飯。 桜海老そば、とってもおいしいです。

岐阜で行われる北陸エンジニアリングの勉強会に車で行けないかと、
今の自分の実力でどこまでドライブ出来るか試してました。
カーナビで調べると目的地まで7時間以上(;´・`)
ふと、学生の頃に浜松で演奏した際、親が車で見に来てくれたのを思い出し、
とりあえず浜松を目指したのですが、焼津でギブアップ。
やはり親は偉大でした…

真っ暗な焼津漁港だけ見て引き返し、東名に乗って今、
日本平PAで休憩&お食事ちゅう ← いまココ

これで、13 日分だよ〜。

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