2006年07月04日
Flash Communication Server から Flash Media Server にバージョンアップされてから、謎の挙動が問題になっています。Flash Media Server 自体は落ちたりしていないし、Port も開いているし、Port Tunneling も行っているのですが RTMP による FMS アプリケーションへの接続がまったくされない。それも NetConnection の onStatus で NetConnection.Connect.Failed すら取得できない。それは一応 FMS を再起動することによって回避できるのですが、リルタイムコンテンツを配信するサーバなので、いつサーバへの RTMP 接続ができなくなるのか即座に知りたいものである。

The picture of window.close()
直接的な解決にはなりませんが、一応打開策として FMS サーバ上で定期的にRTMP 接続を確認するための Flash + PHP でのキットを作成してみた。これ自体は NetConnection オブジェクトにより FMS アプリケーションへの接続を行う swf と特定の時間接続しないと PHP をたたいてメールを送信するものだけである。これの説明は今回の主題と違うため説明は省くが、FMS をインストールしている Windows サーバ上で定期的にこの html を挙動させ確認している。その際に Windowsサーバ上で IE で開いた html を Javascript で自動で close させると、セキュリティ上の問題で上記の画像の様なアラートが出てしまい、window が閉じずにひたすら貯蓄されていってします。多少ネットで調べてみるとこのアラートはちょっとした Javascript で回避できる模様。自分はこの作業まで知らなかったので下記に記述しておきます。
*IE のみ動作を確認できます。
<script language="Javascript" type="text/javascript">
<!--
window.opener = true;
window.close();
//-->
</script>
これで簡単に開いた window それ自体をアラートを出さずに閉じれます。
2007年07月14日
久々に HTML コーディングを夜中にしていたら眠かったので、簡単にロールオーバーさせたいと思って何かあるだろうと検索していたら、やっぱりあった簡単ライブラリ。jquery_auto という JS ライブラリをダウンロードして下記の様に使うと、少ない記述でミス無く動くのでありがたい!特に眠い夜中のコーディングしたくない時には神ですね!
サンプル:

使用方法:
通常の画像と rollover 用のサンプル画像を作成し、同階層に配置。
(今回は button.gif と button_over.gif を作成。)
// HTML に JS を読み込む。
<script type="text/javascript" src="/js/jquery.js"></script>
<script type="text/javascript" src="/js/jquery_auto.js"></script>
// イメージに class="Hover" を記述。
<a href="#"><img src="button.gif" alt="sample" class="Hover" /></a>
2007年08月29日
SWFAddress は SWFObject と共に使用し、Flash の各コンテンツの遷移に対して、パーマリンク提供してくれる便利クラス。
html に Javascript を読み込み、Flash に ActionScript クラス(バージョン 1,2,3 に対応)を設定することで、Flash 8 + からサポートされた External Interface class を使用して URL を変更することができる。これによってブラウザの Back、 Forward、Reload に対応し、ブックマークすることも可能。 これで Flash の欠点であったリロードごとの最初からのローディングを回避出来る様になります。Flash の Photography サイトとかだと好きな写真のページにダイレクトにいけたり、EC アプリの情報保持や、LocalSharedObject を応用した形で使用できそう。
結構なクリエーターの方はかなり以前から知っていらっしゃる様で、自分は恥ずかしながら filippasmedhagensund.com を見るまで知らなかったので最初はどうやってんだろうと JS を調べて気づきました。
この記事の続きを読む »
2007年10月06日
会社でも以前話題になったんですが、それ以前からFlickr の画像アップローダーが生かしてるな~って思ってどうしてるんだろう思ってんですが、SWFUpload っていう便利クラスがあるんですね。どう実現してるのか知りたくて横取り丸で Flickr の通信を見た際にこんな swf があったんで、バイト数を External Interface とかで JS 側に渡してるのかなって思ってたんですが、こんな便利クラスがあるんだったら使ってみようってことで試してみました。

SWFLoad

Flickr Uploader
この記事の続きを読む »
2009年08月11日
ポーランド人のプログラマの同僚にぼそってささやかれて、先日はっとしました。
と言うのは、物凄く基本的な話ですが、下記の様なタグの存在をこの世からすっかり忘れていました。
<head>
<base href="http://www.convexstyle.com/" />
</head>
これがあることで、Zend Framework 内で
www.convexstyle.com/controller
www.convexstyle.com/controller/
www.convexstyle.com/controller/action
www.convexstyle.com/controller/action/
を同じ処理出来るんですよね。
2 番目と 4 番目がディレトトリと見なされて、アセット関連のパスがおかしくなるのが嫌だったのでこれまでは Zend Framework 内で Smarty をテンプレートとして使う際に base タグを使わずに、例えば、<img src="<% $homeUrl %>images/sample.jpg" /> とか物凄い効率悪いやり方をしてました。
なのでこれからは
<head>
<base href="<% $homeUrl %>" />
</head>
にして <img src="images/sample.jpg" /> でいいじゃんと思いました。
基本を忘れちゃいけないなあ。
一点問題は、<a href="#top">top</a> の様な内部リンクに関しては $homeUrl が http://www.convexstyle.com/ の場合、絶えずリンク先が http://www.convexstyle.com/#top になってしまうんですよね。この場合現状のページトップに行きたいのに IndexController にアクセスしてしまうので、これを避ける際は、やはりこういう場合は controller 側で対応して、view 側に 現状の controller や action やスラッシュとかを <a href="<% $currentUrl %>#top">top</a> の様な形で渡さないといけないですね。 もともと自分は javascript でページ top への移動は内部リンクと JQuery の animate で対応してたんですが、知らない間に scrollTo という JQuery のプラグインが存在していたので、これもまた <a href="Javascript:void(0);" onClick="goTop();">top</a> 的にすれば全く Zend の URL 構造は依存せず対応出来ますね。知らないで効率悪かったという話です。
・・・・・
『参考サイト』
base タグ
scrollTo (JQuery Plugin)
2009年10月22日

Javascript と言えば、自前か JQuery 関連以外はあんまり使ったことが無いので library とか良く分からないですが、最近 thickbox 風の fancybox っていうのをプロジェクトで初めて使ってみた。使い方は物凄く簡単であえて説明をする必要もないので使用方法を見てもらうとして、こんな感じの見た目。
ここ
で、決まった URL 静的に html に記述、もしくは動的な URL を PHP 等でレンダリングして fancybox を割り当てるのは簡単なんですが、DOM 生成後に fancybox への URL をイベント毎に変更して割り当てるにはどうするんだと思って少しはまったのでメモ。
例えばユーザーの入力要素を付加した動的な URL(Zend Framework では Get 変数や UserParam 変数)を iframe 表示する場合。表示エリアが十分で、非同期に Ajax 処理できる場合は特に fancybox を選択する必要が無いので問題ないんだけど、表示スペースの問題でポップアップが必要な場合に当てはまるかも。ちなみに fancybox には thickbox の tb_show や tb_remove 等の様に関数からの処理が出来ない模様。
この記事の続きを読む »