WebProgramming
« Previous Entries Next Entries »JavaScriptで日付の比較
火曜日, 12 月 2nd, 2008こんなフォームがありまして
終了日時に開始日時より前の日時が選択されていたらアラートを出す
というJavaScriptをかいてました。
———-
startyear = フォームの開始年の値;
endyear = フォームの終了年の値;
if(startyear > endyear){ …
———-
だいたいこんな感じです。
しかし、
ここで問題が発生。
月や日の指定などで一桁と二桁を選択する、
たとえば2月と12月というふうに選ぶと、
2の方が大きいといわれてしまいます。
どうやら文字列として扱われてしまっているようです。
解決方法としては2つ。
eval関数を使う。
こんな感じ。
———-
startyear = eval(フォームの開始年の値);
endyear = eval(フォームの終了年の値);
if(startyear > endyear){ …
———-
もうひとつはDate型オブジェクトを生成し、
getTimeを使う。
こちらはこんな感じ。
———-
start = new Date(開始年, 開始月, 開始日);
end = new Date(終了年, 終了月, 終了日);
s = start.getTime();
e = end.getTime();
if(s > e){ …
———-
個人的にはgetTimeの方がいいかな。
↓役に立ったと思ったら・・・
PEARとPECL
木曜日, 11 月 20th, 2008PEAR(PHP Extension and Application Repository)とは・・・
PHPから利用できるライブラリ。
このライブラリ自体もPHPで記述されている。
PECL(PHP Extension Community Library)とは・・・
PHPから利用できる拡張ライブラリ。
C言語で記述されているため、PEARライブラリよりも高速に動作する。
↓役に立ったと思ったら・・・
Apache+mod_gzipで圧縮されて配信されるページを取得
水曜日, 10 月 8th, 2008某サイトのRSSデータを取得しようとしてこのようなソースを書きました。
$rss = implode(””, file(”http://xxx.xxxxxxxxxxxx.xx/index.xml”));
で、$rssの中を見ると、意味不明の文字?しか入ってません。
ん?何だ?
socket接続(fsockopen)でやったり、curlでやったりしたけど変化なし。
ためしに、レスポンスヘッダを取得してみると、こんなのが入ってました。
Content-Encoding: gzip
どうやらApacheにmod_gzipモジュールを組み込んで圧縮して送信しているらしい。
う~ん、どうすればいいんだろう?
いろいろ試した結果、pearのHTTP_Requestがどうやら使えそうでした。
# pear install HTTP_Request
—–
< ?
$request = &new HTTP_Request();
$request->setURL(”http://xxx.xxxxxxxxxxxx.xx/index.xml”);
$res = $request->sendRequest();
$buf = $request->getResponseBody();
?>
—–
クローラー巡回の拒否
日曜日, 9 月 21st, 2008ボクの運営しているサイトのひとつで、いろいろとテストをしているところがあるんです。当然、あまり他の人には見られたくありません。
しかし、どうやらGoogleのクローラーが巡回に来てしまっているらしいんです。ということで、クローラーが来ないようにします。
やり方はこうです。
クローラーに巡回に来てほしくないサイトのトップディレクトリに「robots.txt」というファイルを設置します。ファイルの中身はこんな感じ。
———-
User-agent: *
Disallow: /test/
———-
「User-agent」には、来てほしくない検索エンジンのクローラーのユーザーエージェントを指定します。Googleの場合は「Googlebot」です。今回はすべてのクローラーを拒否したいので「*」としました。
次が拒否したい場所の指定です。上記の設定では、このサイトの「/test/」ディレクトリ以下の巡回が拒否できます。サイト全体を拒否したいときは「/」、特定のページだけを拒否したいときは「/hoge.html」と指定します。
これで気兼ねなくテストできます。
文字列比較の穴
水曜日, 3 月 26th, 2008先日、あるプログラム内で妙な挙動がするのを発見。
if ( “0E2″ == “0E3″ ){
// ここに入ってくる
『0E2』という文字列と『0E3』と文字列が同じだとおっしゃる。
いやいや、そんなわけないだろう。
で、いろいろ調べてみたところ、PHPのマニュアルにこんなことが書いてあった。
———-
整数値を文字列と比較する際、文字列が 数値に変換されます。
数値形式の文字列を比較する場合、それは整数として比較されます。
これらの ルールは、 switch 文にも適用されます。
(http://www.php.net/manual/ja/language.operators.comparison.php より抜粋)
———-
なるほど。
ということで、文字列を比較するときは、「===」か「strcmp」を使うようにしよう。
もっと詳しく知りたかったら、↓ココを参照。
http://d.hatena.ne.jp/gallu/20061108/p1
http://d.hatena.ne.jp/teracc/20061224#1166973823

