44件中 36-40件目     [ 1 2 3 4 5 6 7 8 9 ]

最近、サーバサイドJava(Tomcat+Struts+MySQL)を触ることになり、いろいろと調べていくうちに、AjaxTagsというものを知った。

AjaxTagsは「AjaxTags・AjaxFacesを利用したサーバーサイドプログラミング」にあるように、Autocomplete(オートコンプリート)やSelect/Dropdown(2つのプルダウンの関連付け)、Update Field(複数フィールドの更新)、Toggle(クリックによる内容の書き換え)など、通常はJavaScriptを書いて作るような機能を、カスタムタグを書くだけで簡単に実装するものだ。 リンク先の記事では5つの機能しか書かれてはいないが、その他にもタブ表示やツリー表示などもできる。
AjaxFaces(有料)も同じようにタブ表示やカレンダーをカスタムタグで簡単に実装できるようだ。(公式ページ消滅してる?)

これらのようなサーバサイドのフレームワークやライブラリで、簡単にAjaxアプリを作るというのは、今のところ実装されている機能が少なく実用にはまだ早い感じがするが、この考えは面白い。

このようなサーバサイドのAjaxプログラミングをサーバサイドAjaxと表現しているを見付けた。

PHPでも同じようなものがあるのだろうか?と考え、調べてみるといくつかそれらしいものが出てきた。 一つ目はPEAR::HTML_AJAX。(ver0.5.2) 二つ目はSAJAX。(ver0.12) 三つ目はxajax。(ver0.5)
いずれもまだ未完成という感じで、機能は上記のAjaxTagsやAjaxFacesとは違い、PHPの関数をJavaScriptから呼び出すライブラリという感じ。 この中では、xajaxが導入も簡単で、JavaScriptを全く知らない人でもコーディングできそうで、一番良さそうだった。 これは近いうちに試してみたい。

調べてるときに見付けたPHPによるJavaScriptを書かないAjaxが、そのxajaxについても書かれているようでなかなか面白そうだった。 暇があれば読んでみたい。


今のところ、当サイトで公開してるソースコードは、highlight_string関数preg_replace関数を使っていい加減な色分けをして表示している。 PHP以外のソースコードは、文法を見ていないからうまく色分けできないこともあるし、行数の表示などにも対応していない。 これを多くの言語に対応させていこうとするのはなかなか大変だ。

そこでいくつかあるソースコードを色分け表示するライブラリの一つであるGeSHiを試してみた。

GeSHiは、PHPで作られたライブラリで、拡張モジュールのようにインストールする必要はない。 使うときは、サーバにアップロードしてincludeすればいい。 対応する言語は、よく似た言語が含まれていたりするが、以下の70もの言語に対応する。

ActionscriptADAApache LogAppleScriptASMASPAutoIT
Backus-Naur formBashBlitzBasicCC for MacsC#C++
CAD DCLCadLispCFDGColdFusionCSSDelphiDIV
DOSEiffelFortranFortranFreeBasicGMLGroovy
HTMLInnoIOJavaJava 5JavascriptLaTeX
LispLuaMicroprocessor ASMmIRCMySQLNSISObjective C
OCamlOpenOffice BASICOracle 8 SQLPascalPerlPHPPL/SQL
PythonQ(uick)BASICrobots.txtRubySASSchemeSDLBasic
SmalltalkSmartySQLT-SQLTCLthinBasicUno IDL
VB.NETVisual BASICVisual Fox ProWinbatchX++XMLZ80 ASM

PHPで開発してるときに、ふと「リダイレクトは絶対URLで書かなきゃいけないんだったかな?」と思った。 相対パスでもたいていのブラウザは動くが、動かないのもあるだろうし、相対パスの場合と絶対URLの場合を逆に覚えていたらめんどうなことになるので調べてみた。

最後の1つだけ違うが、それ以外は絶対URL推奨という話。 古いブラウザが中心になるようだが、意外と相対パスのリダイレクトに対応していないものが多い。 絶対URLで書くのが正しいようだし、基本的には絶対URLで書き、もし絶対パスがダメな場合があるようであれば、ユーザエージェントなどにより場合分けするのが良さそうだ。
相対パスでなければならないというのは上記のau+SSLのケースしか見つからなかったが、もしかして「モバイルWeb開発に失敗しない鉄則」 - @ITの「絶対URLでリダイレクトを行う際の注意」のような特殊な状況が原因だったりしないだろうか? これがなければ、全て絶対URLでも良さそうなのだが・・・。


JavaScriptでPHPのhtmlspecialchars関数と同じ動作をする関数がないか探していたところ、それとは関係ない記事だが「htmlspecialchars/htmlentitiesの正しい使い方」という記事を見つけた。

htmlspecialcharsとhtmlenties関数はENT_QUOTESを指定しないとENT_COMPAT(セキュリティ上問題があるが互換性を維持)が指定された状態と同じ動作をします。

な・・・・・なんだってーーー!?

htmlspecialchars関数使いまくってるのに・・・・・修正箇所多すぎw

オレ\(^o^)/オワタ



・・・・・・と思ったが、どうやらシングルクォートを変換しないだけのようなので、ダブルクォートで囲まれている部分なら問題ないようだ。 HTMLタグの属性値は全てダブルクォートで囲ってるし、JavaScriptの一部が心配なくらいだ。 それでも文字エンコーディングの指定をしていない問題はあるから、重要なプログラムだけでも書き換えようとは思う。

そういえば、マニュアルに

ENT_QUOTES が設定されている場合のみ、 ''' (シングルクオート) は '''になります。
なんて書いてあったのを見た気がする・・・。

当時はPHPを覚えたばかりで意味を理解できず、第2引数なしで今まで使い続けてた・・・。

orz


普段、PHPである程度大きなものを作る場合、E_NOTICEなど初期設定では出力されないエラーを含め、全てのエラーを出力するようにして開発するのだが、今作ってるものではうっかり設定するのを忘れていた。 それを思い出し、全てのエラーを出力するように変更したところ何故かdate関数でE_STRICTのエラーが出ていた。

Strict Standards: date() [function.date]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Tokyo' for 'JST/9.0/no DST' instead

今までそんなエラーはでなかった気がしたが、調べてみるとPHP 5.1.0以降ではそうなってるらしい。 マニュアルを見ると日付関数には以下のような注意書きがあった。

注意: PHP 5.1.0 以降(日付/時刻 関数が書き直されてから)、タイムゾーンを 正しく設定せずに日付/時刻関数をコールすると E_NOTICE が発生し、またシステムの設定や TZ 環境変数を 使用すると E_STRICT が発生するようになりました。

E_NOTICEじゃなくて、E_STRICTが出力されているのは、システムの設定を使ってるからだろうか。 TZ 環境変数を使うとE_STRICTが発生すると書いてあるのに、以下のように書いて、エラーが出力されなくなるのは何故だろう?

putenv('TZ=Asia/Tokyo');

とりあえず、date_default_timezone_set関数でやっておけば大丈夫そうな気がするので

date_default_timezone_set('Asia/Tokyo');
と書くか、php.iniで
date.timezone = Asia/Tokyo
と書くか考えたが、後者の方が楽なのでそちらを選択した。

前者でも共通で読み込むファイルに書けばすむのだが、全てのプロジェクトでやるのもめんどうだと判断した。


44件中 36-40件目     [ 1 2 3 4 5 6 7 8 9 ]