nDiki : 2003年12月23日

2003年12月23日 (火)

Time::Local::gmtime の範囲チェック

Perl 5.8.x だと、Time::Local::gmtime できちんと範囲チェックが動作している(範囲外だと croak される)のだが、Perl 5.005_03 では必ずしもそうではないようだ。 WiKickerデバッグ中に発見。

でソースを読んでみると、古い Time::Local では cheat サブルーチンで

  • 範囲チェック
  • 指定した年月の開始 gmtime を計算し、%cheat にキャッシュ

している。同一年月での2度目以降 timegm 呼び出しでは %cheat キャッシュを使用して cheat サブルーチンを呼びにいかないので、範囲チェックが実行されないという塩梅。 つまり 2003年1月1日… で一度 timegm を呼び出すと2003年1月に関しては以降 cheat サブルーチンは呼ばれないため、次に 2003年1月33日…で読んでもエラーにしてくれないというわけ(最初に2003年1月33日…で呼んだ場合はちゃんとエラーになるので逆に厄介)。

Perl 5.8.0 以降に標準ではいっている Time::Local ではきちんと毎回チェックする。 うるう年・大の月/小の月も考慮してチェックされる(v5.8.0 より前のでは 31 より大きいかのチェックのみ)。

であり、CPAN では 5.005_03 でも動作する Time::Local パッケージ (1.05~)が公開されている。

Time::Local 1.04 以降を PREREQ_PM にしてもいいのだが、5.005_03 な利用者にとってはインストールするのも面倒か。 最低限のエラーチェックを自前で用意して、互換になるようにした方がいいかな。

スポンサード リンク

過去の今ごろ

過去の12月23日より。

[ WiKicker ] 自作自演

けいむなさんの

「若い方達の文章はとても似ていると思うのですが同一人物ということはないですよねw」

という警鐘が気になって、過去の書き込みのログをチェック。

同一PC(cookie)から、異なるユーザ名での書き込みというのがある程度確認できだのだが、

  • ユーザ名の表記ゆれ
  • 毎回違う名前にしているが、悪質ではないもの(匿名的な書き込み)
  • PCの共有(?)

というのは問題ではないと判断。 しかし1件だけ、ちょっと悪質な自作自演あり。 通常?のユーザ名と別ユーザ名を使い分け、また某アイドル名を騙ってコメント書き込んだ後にその内容に対して自身でコメントを書き込むなどをしており実際に他のユーザに誤解を与えていた。

確認できる範囲でそのユーザの書き込みを削除。 不毛な作業で疲れた。

ゲートシティ大崎

行って帰ってきた。 それだけ。

[ 12月23日全て ]

About Me

Naney Naney (なにい)です。株式会社ミクシィで SNS 事業の部長をしています。

nDiki1999年1月に始めたコンピュータ日誌を前身とする NaneyWeb 日記(兼パーソナルナレッジベース)です。ちょっとしたノートは nNote にあります。

※内容は個人的見解であり所属組織とは関係ありません。

月別インデックス
Process Time: 0.043752s / load averages: 0.78, 0.66, 0.61
nDiki by WATANABE Yoshimasa (Naney)
Powered by DiKicker