Recent Posts

Archives

Blog Ranking

Favorite

ExchangeRate

Update: 2012-02-07 21:00
by ロイター
 

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, 2008

PEAR(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

« Previous Entries Next Entries »