最近の HTML は、何かと XHTML やら CSS やら JavaScript で苦労することが多いのですが、そんな時にとても役に立つのが、 FireFox の extension である FireBug です。
Firebug :: Firefox Add-ons
これをインストールすると、 JavaScript にブレイクポイントを設定してデバグしたり、 CSS の div box を詳細に視覚化してくれたり、めちゃくちゃ便利です。
おすすめ。
Mac の safari で同様の事をするにはSafari の Mac で firebug のような機能を使うにはを参照。
二つのセレクトボックス select1 と select2 があるとした場合、以下のコードで選択された option アイテムを移動させられる。 select1 から select2 に移動する場合。
$('#select2').append($('#select1 option:selected'));
Zend_Form を使ってよく Wysiwyg の出力コードを生成するようなカスタムエレメントを生成したいことがよくある。
昔のバージョンでは Zend_View クラスの addHelperPath() をしただけだった記憶があったんだけど、今は少し違うっぽい。
なので一通り調べて実装しなおしてみた時のメモ。
Zend Frameowrk のバージョンは 1.8.1。
ディレクトリ構成は以下の通り。
+--- application ---+--- controllers | +--- modles | +--- forms --- elements | +--- layouts | +--- views ---+--- helpers | +--- scripts | +--- incude --- Zend | +--- public_html
php Zend Framework で構築されたアプリケーションで、定期的に Cron から実行される処理をフレームワークの一部として実装した時のメモ。
手順としては、 php コマンドラインで呼び出した際のオプションを取得し、コントローラ、アクション、モジュール、パラメータを適切に設定してリクエストを構築、ルーター、レスポンスを指定してフロントコントローラを実行する。
Safari は自動的に独自の highlight 機能でページ上でフォーカスされているコントロールに水色のボーダーを付けてくれる。これがたまに邪魔なときがある。
これを CSS で無効化するには以下の定義を追加すればよい。
:focus { outline: 0; }
最近は ActionScript 3 に移行中、色々と 2 と違う点があって、その度に色々と調べてる。最近さりげなくはまったのがこの flashvars の扱い方。
ActionScript 2 では勝手にスクリプト内の変数に値が代入されたが、 3 では少し違うらしい。
ActionScript 2 で使われていた getURL() 関数は廃止になり、代わりに navigateToURL() を AS3 では使うことになったみたいです。
navigateToURL(new URLRequest("javascript: alert('hoge');"), "_self");
最後の "_self" をつけないとブラウザによっては動作しません。
prototype から jquery に全面的に移行中、どうしてもどっちも使いたいときがある。そんな時に問題になるのは $ を使ったショートタグの扱いだが、以下のようにすればどっちも使える。
var $j = jQuery.noConflict(); // jquery $j(document).ready(function(){}); $j("#hoge").html("fuga1"); // prototaype $("hoge").innerHTML = "fuga2";
引き続き ActionScript 3 関連ですが、これは 2 と大分異なり、 2 の時は XML オブジェクトの load() を呼んだりしてたけど、 3 ではこの手のロード関連は、 Loader/URLLoader に集約する感じになっているんじゃないかと思う。
先のポストに引き続き、 IIS x PHP 絡みで、 Zend Framwork を IIS 上の PHP で動かす時のメモ。特に rewrite モジュールが apache のようにはいかないので、それについて。
とりあえず今回の環境は以下の通り
IIS6 上で php が動作してる場合に、 php.ini の変更を IIS の再起動無しで反映させるには、アプリケーションプールをリサイクルすればいいらしい。
IIS Manager を開き、ツリービューのホスト配下の [Application Pools](アプリケーションプール?) を開き、 DefaultAppPool (デフォルトアプリケーションプール?)を右クリックして Recycle (リサイクル?)を実行する。
今回は PHP を理解する中でもっとも難しいとされている isset() 関数や is_null() 関数や、false や NULL に対する == や === 演算子の結果についてまとめてみた。
何が難しいかって別に分かれば難しくないんだけど、はっきり言ってややこしすぎる。
俺はこの PHP の実装があまり好きじゃない。
でもとにかくこれは理解しておかないと、後々よく分からないバグではまったりするので一応まとめてみた。
Zend Framework には Zend_Controller_Router_Route っていうのがあり、これで URL のパスの制御ができる。
例えば、 enjoitech.jp/help っていう URL を実装したい時に、 Zend の標準の設定では /help は helpController の indexAction に通じるわけだけど、これを Router でうまい事変更してやれる。
ここの例では staticController っていう static なコンテンツを全部管理するコントローラーを作っておいて、そこに helpAction っていうアクションをつくり、/help をそこに通じるようルーティングする方法を説明する。
ゼブラ柄、ストライプ柄のテーブルを描写します。cycle 関数を使うと便利。
<table> {foreach from=$hoges name=hoge item=h} <tr style="background-color: {cycle values="#ccc, #fff"};"> <td>{$h.name}</td> <td>{$h.value}</td> </tr> {/foreach} </table>
PHPでアップローダーを作るときに、プログレスバーをどうにか実装できるか調べたら、どうやらできるっぽかったので試してみた。
ちなみにできると言っても制約がいくつかあるみたい。まず第一に、 PHP 単体ではファイルのアップロード状況を把握したりすることはできない。そのため PECL APC エクステンションをインストールする必要がある。
また PHP のバージョンは 5.2 以上。 PECL APC エクステンションのバージョンは 3.0.13 以上。
そのため、うちの CentOS5 も FC6 もパッケージでは対応できなかった。
環境は以下の通り。
php-5.2.5
PECL APC-3.0.16
※追記
実はこの APC はスレッドセーフじゃないらしく、一つのアップロードが完了する前に次のアップロードが開始されると、現在進行中のキャッシュがクリアされるらしいので注意。
<asp:TextBox> コントロールは動的に <input> と id 属性を生成してしまうため、 <label> の for 属性には静的な値は指定できない。
これに対応するにはやり方は二つ。
<asp:Label ID="lblName" AssociatedControlID="tbName">Label name</asp:Label> <asp:TextBox ID="tbName" runat="server"></asp:TextBox>
<label for="<%=tbName.ClientID %>">Label name</label> <asp:TextBox ID="tbName" runat="server"></asp:TextBox>
PHPでファイルアップロードのプログレスバーを実装するにはに関連して、 Ajax を使ってファイルアップロードを実装してみた。
今までは Ajax 関連は prototype.js を使っていたんだけど、 multipart なデータの post に対応していないので、パッチを当てたりしないと実装できないらしい。
そんな面倒くさいことはしたくないので、ちょっと探していたら YUI(The Yahoo! User Interface Library) は対応しているっぽいのでそれを使ってみた時のメモ。
YUI は何気に cool だ。
CSS を使って a タグに背景を指定して、 hover で画像を切り替えるような事をよくするんだけど、 IE6 上だと何かチカチカしてスムーズに切り替えを行ってくれない。
これをどうしたらうまい事切り替えてくれるのかを調べたときのメモ。
解決策は驚くほど簡単なんだけどね。
最近知ったんだけど、 PNG 画像の Transparent 部分って IE6 ではきちんと透明に表示されないらしい。
これをどうにか FF とか他のブラウザでも表示されるようにしながら対応する方法。
基本的なやり方は CSS で background と filter を使って、以下のようにすれば表示はされるようだ。
background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/hello.png',sizingMethod=scale); width: 160px; height: 120px;
でもこれだけじゃ当然 FireFox では表示されない。じゃーどうするか。