なんていうか、いろんなものに引っかかって遅れたのだ(言い訳)。
というわけでキーワード検索で録音予約ができるようになった!たぶん!
録音プログラムを設定して、キーワードを設定しておけば、
後は勝手に新しい番組表を読んだ時点で録音予約をするよ。
まぁ、なんか、今はタイトルにしか引っかからなくて
出演者名?に引っかけないとあまり意味ない気もするけど、
まずは動くかなーって思ってリリース(Vectorの方にも反映されたみたい)。
日 | 月 | 火 | 水 | 木 | 金 | 土 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
というわけでキーワード検索で録音予約ができるようになった!たぶん!
録音プログラムを設定して、キーワードを設定しておけば、
後は勝手に新しい番組表を読んだ時点で録音予約をするよ。
まぁ、なんか、今はタイトルにしか引っかからなくて
出演者名?に引っかけないとあまり意味ない気もするけど、
まずは動くかなーって思ってリリース(Vectorの方にも反映されたみたい)。
前の記事でWeld-1.0.1-Finalの修正版を入れたんだけど、
なんか日本語が文字化けするようになった(・x・
ConversationScopedの開始タイミングが変わったことが原因にありそう。
Filter通る前に、getParameterが呼ばれるので、Tomcatだと、ASCIIな感じでリクエストが解析されちゃうみたい。
というわけで、org.jboss.weld.servlet.ServletLifecycleを書き換える。
private void restoreConversationContext(HttpServletRequest request)これでおっけーかな(゚ー゚)(。_。)(゚-゚)(。_。)ウンウン
{
// ここから追加
String enc = request.getCharacterEncoding();
if(enc == null) {
try {
request.setCharacterEncoding("UTF-8");
} catch(java.io.UnsupportedEncodingException ex) {
}
}
// ここまで追加
// FIXME: HC "cid"
conversationManager(request.getSession().getServletContext()).setupConversation(request.getParameter("cid"));
}
@ConversationConcurrentAccessTimeout private long concurrentAccessTimeout;
ってところに@Injectが無くて値が0のままとか。
これだと、連続できたリクエストの待機時間が0になってすぐエラーになっちゃう。
ConversationImplのtoStringでContextにアクセスしちゃうので落ちてた。
スタックトレースにtoString()とか載ってくるおもしろいケースだったよ。
1と2はどっちももう修正版上がってるみたいね。
で、とっておきのが
なんか、DependentなスコープのにInterceptorをくっつけると、
Javassist周りとの関係?でメモリリークするのね。
RequestScopedにして良ければそれでいいんだけど……。
たぶん、WELD-483あたりの問題がそれかな。
04/20あたりで解決してるみたいね。
というわけで、1.0.2-SNAPSHOTをビルド6400で作ってみた。
メモリリークが無くなって快適快適(゚ー゚)(。_。)(゚-゚)(。_。)ウンウン
本当は、録音機能をもっと拡張しようかな〜とか思ってたんだけど、
そんなに甘くなかった(゜▽、゜
予約状態と録音状態をあまり意識してなかったのが原因かな〜。
sそれと、意外に、ファイル名指定が面倒だった……。
特定の番組だけ録音が急停止しちゃうんだもん(・x・
結局、Radiko公式サイトで配信されているUTF-8な番組表が、
Linux系と、Windows系のマッピング(?)混在して送ってきてるからだったんだけどね。
Windows系のマッピングだと思い込んでたわたしがわるいのさぁ(゜▽、゜
でも……せめて統一してほしかった……かな。
ファイル名指定方法がわかりにくい&めんどくさい気もするけど。
まぁ、いいよね。一回設定するだけだろうし。
ただ、テストだと、録音時間が5分30秒行われるはずのところが5分25秒くらいしかされない感じがする……。
330秒が325秒……rtmpdumpの仕様かしら……。
たしかにrtmpdumpって10秒弱ごとに64K出力してる感じなんだよね。
それでずれてるのかなぁ……?なんでだろ。
公式サイトで2010/04/20に行われたアクセスの制限に引っかかって、
録音してもファイルサイズが0のままーってなってました。
修正版をリリースしました。0.3.8で解決してるよ。
インストーラー版はこちら。
報告をしてくれた方のおかげで気づけました!感謝!
というか気づけよわたし!
でも、わたし的には、それよりも不安なことがあって……。
そう、問題になっている録音アプリって何ってこと(ρ_;)Erisじゃないよね?
録音のループ状態って……う〜む。
以下の観点から、問題ないと判断して修正版をリリースしました。
あと、どうやら、アクセスの制限は、URL指定の詳細化と呼び元チェックって感じなのかな。
Playerバージョン(謎)までは見てないようなので、しばらくは大丈夫だと思いたい……。
巻き込まれてErisも死んだので修正版をあげました。
インストーラー版も。
IEで、普通に番組表ぺ〜じみても、番組情報表示されない。
番組表情報のXMLをダイレクトに取りに行っても途中で切れたり、変な動きしてる。
IEでXMLを開くと以下のような感じ(一部公開しちゃまずそうなところは塗りつぶし)。
う〜む。普通にXMLとして不正だよ……。後の方、切れてるし。
というわけで公式がこんなひどいのを返しても大丈夫なアプリに修正っとφ(。。負けないぞぅ
まぁ、最小化したら元に戻せない、ガジェットっていうかアプリもどきを出すくらいだから、
このくらいはあると思ってたけどね!
人の振り見て我が振り直せってことで、がんばります(゜▽、゜
4/7のRadikoセキュリティ強化?で録音が出来なくなってたので修正したのをアップしたのだ。
他の修正とかしてたところで気づいたので、ちょっと機能が中途半端かもだけど、まぁ、いいよね。
ついでに、MSI形式のファイルも作ってみた。
Windowsのインストールウィザードって言うのかな?で入れられるはず!
ライトな人はこういう方がいいんだよね、きっと。
jp.empressia.scope.view.jarがTomcatで動かないって言う話があって、修正したよ。
Version1.0.1.18ってことで少し数字上げた〜(゜▽、゜
ついでに、サーバーシャットダウン時(再デプロイとかの時)に、
シャットダウンに時間がかかる(最大10分とか)みたいだったので確認したのだ。
なんか、WeldとかTomcatとかGlassFishのSessionと起動周りの動きとか、
いくつかくぐり抜けないといけないところが多そうだったから、
JSF2.0に依存する形で構造見直しして綺麗に動くように対応したよ。
これで、JSFのViewの破棄とかとリンクして、正しいタイミングで@PreDestroyとかが呼ばれるはず!
Inject系を作るのは簡単だったけど、破棄系を整理するのが結構大変だったo(__oポテ
ダウンロードはこの辺からね☆
jp.empressia.jsf.scope.view.jar
jp.empressia.logging.jar
印を付けた角の和は何度か、というような問題。