うまくいかない
Zend FrameworkにFancyUploadをうまく組み合わせたかったんだが,なぜかアップロードのウィンドウを呼び出すリンクが反応しなくなる.
アップロードするためのswfを呼び出すところまで行ってないきがするなあ.
入門書購入
- 作者: 藤野真吾,ゼンド・ジャパン
- 出版社/メーカー: ソーテック社
- 発売日: 2007/09/13
- メディア: 単行本
- 購入: 2人 クリック: 73回
- この商品を含むブログ (27件) を見る
ベースになるURLと各Viewの関係が謎だったが,とりあえずbasePath指定すれば統一はされることがわかった.
しかし,その前はどこが基準になってたんだろうか.いまだにわからん.
検証中
まず,デバッグ用の出力を表示する
verbose: true
が効いてない.
普通に導入すると,verboseがtrueの状態でマウスがリンク乗ったりすると
initializedSwiff.Uploader.js (367 行目)
Main::fireEvent "buttonEnter"Swiff.Uploader.js (367 行目)
Main::fireEvent "buttonLeave"Swiff.Uploader.js (367 行目)
こんな風に情報がでるんだけど,ZendFrameworkに乗っけた方はこれがでない.
じゃあ,javascript動いてないんじゃないのか?と思ったけど,mootoolsで要素を隠したりしてる部分はちゃんと動いてるし,ブラウザ側でOFFにしてるわけでもない.
次に,リンク(にはなってないけどリンクになるはずのところ)をクリックすると,何も起こっていないようで実は,ちゃんとアップロードの処理をするflashのobjectが埋め込まれてる.でもリンクになってない.
ということは,リンクを作るところが怪しいなってことで探す.
-
-
-
- -
-
-
これ,ログだしてるのflash側だったのか・・・
んー,javascript側のaddEvent動いてないぞこれ.
大きな問題は解決
たぶん,原因はmod-rewrite使ってことだろうなと勝手に推測.というかそうに違いない.
ZendFrameworkではリクエストは(全て)以下の.htaccessによってフロントコンローラに渡される.
RewriteEngine on
RewriteBase /app/
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php
で,まあこれ,デフォルトだとjsは除外されてるからいいんだけど,肝心のflash部分(swf)が除外されてない.
なので,swf呼び出してもフロントコントローラへのリクエスト扱いされて動いてなかったということ.
さらに,ffmepegにエンコードリクエスト投げるところのphpなので,同じようになって返り値もエラー.
ということで,RewiteRuleを少し修正(swfを追加)して
RewriteEngine on
RewriteBase /app/
RewriteRule !\.(swf|js|ico|gif|jpg|png|css)$ index.php
これでinitializedまで動くようになった.
でもこのままだと,ffmpegにリクエスト投げる部分で落ちる.処理してるのがphpなので.
さてどうするか.
おおっと,アップロードも失敗してた.まあこれもphpにpostしてるんだし当たり前か
とりあえず全て解決
RewriteCond %{REQUEST_URI} !/src/(.*)
必要なスクリプトをフォルダに突っ込んで,RewriteCondでそのフォルダ以下は除外.
これで,動くようになった.しかしこれは気持ち悪いな,フレームワークつかってるのに,除外って・・・
Zend_Controller_Request_Httpってのがあるから,できるんだろうけど,面倒だな.
とりあえず他が終わってからにするか.
そういう話ではないのか?
それっぽいファイルならエンコードをスルーする
某所から落としたflvとmp4を参考に,
ffmpeg -i ファイル名
をやって,情報を取得.
■flv Input #0, flv, from 'smile.flv': Duration: 00:05:??.9, start: 0.000000, bitrate: 96 kb/s Stream #0.0: Video: vp6f, yuv420p, 320x240, 29.97 fps(r) Stream #0.1: Audio: mp3, 44100 Hz, stereo, 96 kb/s
■mp4 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'smile.mp4': Duration: 00:01:??.?, start: 0.000000, bitrate: 608 kb/s Stream #0.0(und): Video: h264, yuv420p, 512x384, 29.97 fps(r) Stream #0.1(und): Audio: aac, 44100 Hz, stereo
時間は少し隠した.
それぞれこんな感じ.おそらくこのコーデックの組み合わせならエンコードスルーしてもそのままFlashで再生できるはず.
だから,
- vp6f,mp3
- h264,aac
【MooTools】1.2.2を少しだけ
FancyUploadを触ってる都合上,MooToolsのソースも読んでるんだけど,
- MooTools1.2.2アップデートまとめ(ttp://takahashifumiki.com/web/programing/628/)
によると,1.2.2でMoreのほうが更新されて,
Requestクラスの拡張。JSONPが新たに加わったこと、リクエストをキューに入れ(順番待ちさせ)たり、定期的に実行させるクラスが追加。
とのことだったので,ちょっと試してみました.
- MooTools Docs - Request/Request.Periodical(ttp://mootools.net/docs/more/Request/Request.Periodical)
html側
<ul id="status"></ul>
new Request({ url:"http://localhost/hoge.php", method: 'get', onSuccess: function(responseText) { new Element('li', {text: responseText}).inject($('status'), 'bottom'); }, onFailure: function() { new Element('li', {text: 'error!'}).inject($('status'), 'bottom'); } }).startTimer({ param: 'hogeeeeee' });
↑のはデフォルトの設定間隔でリクエストを送るけど,リクエストを送る間隔などは,オプションで設定できる.
new Request({ url:"http://localhost/hoge.php", method: 'get', initialDelay: 1000, delay: 5000, limit: 15000 }).startTimer({ param: 'hogeeeeee' });
FlashPlayer10のデモ見た
今さらだけど.
http://www.adobe.com/jp/products/flashplayer/
http://www.adobe.com/jp/products/flashplayer/features/#section-1
すげーなこれ.
ハードウェアアクセラレーションの話の最後で,
「When use correctly, you can hava incredible results.」
って言ってたのが印象的だった.(これであってるよな?w
うーんw難しいなwwww
httpsのあれ
http://www.net-phantom.jp/blog5/2008/12/debian-apache-apache2sslhttps.html
こちらを参考にDebian(Etch)でhttpsを使えるようにします.
■インストール
$sudo aptitude install openssl
$emacs /etc/ssl/openssl.cnf
■編集箇所
dir = /var/www/cert/CA # Where everything is kept
countryName_default = JP
■作業フォルダ作成
# mkdir /var/www/cert
# cd /var/www/cert
■準備
# cp /usr/bin/ssl/misc/CA.sh .
# emacs /usr/bin//ssl/misc/CA.sh
■編集箇所
CATOP=/var/www/cert/CA
■鍵作る
# ./CA.sh -newca
…いろいろ聞かれるので適当に答える
(Common Name (eg, YOUR name) []:192.168.xx.xx
# openssl rsa -in CA/private/cakey.pem -out CA/private/cakey.pem
# openssl x509 -in CA/cacert.pem -out CA/cacert.crt
$ cd /etc/apache2/
$ mkdir ssl
$ sudo cp /var/www/cert/CA/private/cakey.pem /var/www/cert/CA/cacert.crt /etc/apache2/ssl/
■sslの設定の雛形
$ cp /usr/share/doc/apache2.2-common/examples/apache2/extra/httpd-ssl.conf.gz .
$ sudo gunzip httpd-ssl.conf.gz
$ cp httpd-ssl.conf /etc/apache2/sites-available/
$ ln -s /etc/apache2/sites-available/httpd-ssl.conf /etc/apache2/sites-enabled/http-ssl.conf
■編集箇所
SSLCertificateFile /etc/apache2/ssl/cacert.crt
SSLCertificateKeyFile /etc/apache2/ssl/cakey.pem
■設定反映させましょ
# a2enmod ssl
# a2ensite httpd-ssl.conf
# /etc/init.d/apache2 restart
やたーできたぞ!さあ,アクセスアクセス.
安全な接続ができませんでした
192.168.xx.xx への接続中にエラーが発生しました。
SSL received a record that exceeded the maximum permissible length.
(エラーコード: ssl_error_rx_record_too_long)
Ω ΩΩ< な、なんだってー!!
さてググるか・・・
できました
/etc/apache2/sites-available/defaultの最初の部分を
NameVirtualHost *
↓
NameVirtualHost *:80
これで大丈夫のようです.
あとは例外に登録してやるといける!