がるの健忘録

エンジニアでゲーマーで講師で占い師なおいちゃんのブログです。

超重要情報:L.root-servers.net の IP アドレス変更

セキュリティホールmemoさん経由
http://www.st.ryukoku.ac.jp/~kjm/security/memo/2007/10.html#20071025_Root
JPRS
http://jprs.jp/tech/notice/2007-10-25-l.root-servers.net.html


ストレートに引用

2007 年 10 月 24 日(米国西部時間)、ルートネームサーバの一つである
L.root-servers.net の IP アドレスが 2007 年 11 月 1 日に変更されるこ
とが、ICANN から発表されました。

Advisory - “L Root” changing IP address on 1st November
October 24th, 2007 by Kim Davies
http://blog.icann.org/?p=227

L.root-servers.net の新しい IP アドレスは 199.7.83.42 となります。現
在既に新しい IP アドレスは運用可能な状態となっており、11 月 1 日のルー
トゾーンにおける変更作業をもって、正式運用が開始されることになります。

発表では、現在の IP アドレス 198.32.64.12 は今後少なくとも 6 ヶ月間に
渡り引き続き参照可能とするとのことですが、移行完了後、最終的にはサー
ビスを終了する予定であるため、11 月 1 日のルートゾーンにおける情報変
更後に各 DNS キャッシュサーバのルートヒントファイルを更新する等の、適
切な対応が必要になります。

新しいルートヒントファイルは 11 月 1 日の正式運用開始後に、以下のURL
から入手できます。

- ftp://rs.internic.net/domain/db.cache
- ftp://rs.internic.net/domain/named.cache
- ftp://rs.internic.net/domain/named.root
- ftp://ftp.internic.net/domain/db.cache
- ftp://ftp.internic.net/domain/named.cache
- ftp://ftp.internic.net/domain/named.root

…やばいちゃんと11月に入ってから思い出せるかなぁ?
不安山盛りてんこ盛りなので、何はともあれ、メモ。

思いっきり覚書

最近触ってるので、とりあえずせっかくなので覚書くらい、と思って。
で、…まぁぶっちゃけTipsです。
また、まじめにホゲったわけではないので、随所に「いい加減さ」が見え隠れしますので、自己責任の下に読んでください(いつものことですが)。


…で、ちょいと私信失礼します。
とりあえずこっちにいろいろ書いておくのでチェックしてください(笑 < 大将さん


大前提として。
おおむね「Webからたたくプログラム」は
install_dir/html/
配下にある*.php
で、テンプレートは、
install_dir/data/Smarty/template/
配下にある*.tpl
がとりあえず対応してます。


また、data/logs/ ディレクトリにエラーログちっくなものがあるので、見てみると面白いかも。


DBハンドルはとりあえず

$conn = new SC_DBConn();

でゲトります。
んでもって。
selectは最悪、自己責任でSQL作ってから(おいらはMWのsecurityクラス使ってるざます)

$res = $conn->getAll($sql);

こんな感じ。
$resには

入ってるっぽいです。
ほかにもいろいろあるですが最悪これだけ把握しとけばど〜にかなります。
2007/10/29 追記
レコードがない場合、array(0)が返ってくるみたいです。


後は、とりあえず

$conn->query($sql);

ひとつあればどうにかなるです。


で、もうちょいこゆいTips。
お題は「顧客情報」。
パスワードの文字列。んと………

$db用string = sha1(ぱすわぁどもぢれつ . ":" . AUTH_MAGIC);

こんな処理がなされています。


ついでに。何に使ってるかよくわからんのですが。secret_keyなるカラムがありまして。
Excelには「暗号化顧客ID」と書かれてるですが、実際には顧客IDをごにょごにょするわけではなく、

  do {
    $secret = sfGetUniqRandomId("r");
//print "$secret \n";
  } while( ($result = $conn->getOne("SELECT COUNT(*) FROM dtb_customer WHERE secret_key = ?", array($secret)) ) != 0);

という処理によってまかなわれています。
また、sfGetUniqRandomIdは
data/lib/slib.php
というファイルで

/* 一意かつ予測されにくいID */
function sfGetUniqRandomId($head = "") {
  // 予測されないようにランダム文字列を付与する。
  $random = gfMakePassword(8);
  // 同一ホスト内で一意なIDを生成
  $id = uniqid($head);
  return ($id . $random);
}

という風に宣言されています。


もひとつ。顧客情報まわりのプログラムを触る場合。
たとえば管理画面でユーザ情報を出力すると

<input type="password" name="password" value="UAhgGR3L" size="30" class="box30"  />

となることに留意しましょう。ここでvalueに設定されているのはdata/conf/conf.phpにあります

define("DEFAULT_PASSWORD", "UAhgGR3L");

という設定です。
また、たとえば html/admin/customer/edit.php などにおいて。

  //-- パスワードの更新がある場合は暗号化。(更新がない場合はUPDATE文を構成しない)
  if ($array["password"] != DEFAULT_PASSWORD) {
    $arrRegist["password"] = sha1($array["password"] . ":" . AUTH_MAGIC);
  } else {
    unset($arrRegist['password']);
  }

といった処理があるのもTipsです。


…って内容、書いとかないと確定で忘れる自信が山盛りにあるので、メモ。

Geekなぺーじ( http://www.geekpage.jp ) というサイトがありまして。
よい感じのねたが多くて好きなのですが。
今回ちょいと二つほど。


言葉遊び
http://www.geekpage.jp/blog/?id=2007/10/14
技術系ならたぶんストレートに笑えます(笑


企業文化が形成される経緯
http://www.geekpage.jp/blog/?id=2007/10/22
サル山のフルボッコ
………結構きっつい内容です。

IPアドレスが使えなくなってる………

本番はともかく、テストではよく
local-part@[IP addresss]
ってメールアドレスを昔から使ってたかと思うのですが。


最近これを使おうとすると、500番系のエラー(Postfixでは5.1.7でした)でつっかえされてしまいます orz


とりあえず、には便利だったのに〜。
という、メモ兼ちょっとだけ愚痴(笑

正しいメールアドレス?

ふらりと「メールアドレスチェックをどうやる?」みたいな話を調べ始めまして。
相変わらずの、メモ。


たぶんきっと多くの方がご存知の
http://www.din.or.jp/~ohzaki/perl.htm#Mail
ここの正規表現は…きっとRFC的にコレクトなのでしょうが(検証もチェックもしてないのであくまで「だと思う」レベルです)。
これをプログラムに書くのは…ちょっとばかり「倦んずあり」という感じです。
大体、最近の携帯メール(具体的には、少なくともDoCoMoAU)、RFC準拠してないし。


まぁ上述URIの下のほうに現実的なのも載ってますが。
それ以外ですと
http://d.hatena.ne.jp/j0hn/20070602
とか
http://catbot.net/blog/2007/06/re_php.html
とかを参考にあげておきたいなぁと。
微妙関係ないですが「DNS引いてドメインの有効性チェックまでやるsymfony」にちょっとラブリーなものを感じてしまいましたw


個人的には…domain-partは、正規表現簡単だと思うですよ。
で…local-part。…あれは無法地帯だし(苦笑
なので、domain-partは厳密に、local-partは大雑把に、ってのが基本指針でいいんじゃないかなぁとか思う今日この頃。


昔々はVRFYコマンドとかいう便利なものもあったですがねぇ(メアドの「有効性」確認するなら一番確実ですが)。今、有効にしてるサイトさすがに少ないだろうし。
みんな苦労してるんだなぁと思いつつ、つらりつらりとメモ。

2a問題確認用ワンライナー

egrep -R "[^=\!]==[^=]"  *  | wc -l
egrep -R "[^=\!]==[^=]"  *  | less

2a問題が発生する可能性がある行をとりあえず割り出せます。wcでカウントもとれます。
晩秋の頃にこれをやる場合、事前の耐寒装備がとても重要なワンライナーです B-P


…ものすごく場当たりに作ったので、いろいろミスがあるかもしれません。
突っ込みを頂戴したら、場合によっては光の速度で修正が入ります(笑

SimpleTest便利ざます〜

いわゆるUNIT test系のプログラムなのですが。最近 SimpleTest がいたくお気に入り。
理由は「インストールがシンプルだから」。


とりあえず
http://simpletest.sourceforge.net/
からダウンロード。tar ballがゲトれるはずなので、解凍して適当なディレクトリにほぉりこんで終わり。
ああなんてシンプルw


使い方のサンプルは
http://blog.zuzara.com/2007/03/01/194/
とか
http://project-p.jp/halt/kinowiki/php/SimpleTest
とか
http://project-p.jp/halt/kinowiki/:WD_29/SimpleTest/%E5%9F%BA%E6%9C%AC%E7%9A%84%E3%81%AA%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E4%B8%80%E8%A6%A7%E3%81%A8%E4%BD%BF%E3%81%84%E6%96%B9
とか
http://www.geocities.jp/toyprog/simpletest/first_test_tutorial.html
とか参照。


うるとら大雑把に書くと

<?php

require_once(simpletestが入ってるディレクトリ . 'unit_tester.php');
require_once(simpletestが入ってるディレクトリ . 'reporter.php');
require_once(テストしたいクラス);

class てけとうなクラス名 extends UnitTestCase
{

public function __construct()
{
  $this->UnitTestCase();
}

public function 適当なメソッド名()
{
  // テストしたい内容をご自由に
}

} // end of class

$test = new てけとうなクラス名;
$test->run(new HtmlReporter());

こげな感じ。
内部のメソッドは複数あってもOK。勝手に探し出してくれるらしい。
でも順番とか考えると、あんまりこねくり回さずに1メソッド集約のほうが楽な気もする。
この辺まだちゃんとホゲれてないので、よいアイデアあったら突っ込みよろです。


んで。肝心のテスト方法ってか記法。
とりあえず極めてよく使ってるのが
assertEqual($result, $ans);
$result == $ansがtrueならOKしてくれる………ってまて。2a問題考えると微妙怖いぞ?
実験。結果。………予想通り orz


近いのを探す。光の速さで発見。
assertIdentical($result, $ans);
===なので、2a問題も平気…なはづ。
実験。結果。………予想通りよっしゃ!!


っつわけでとりあえず気を取り直して。
…っても、あと使うのは…
assertNull($value);
が、ようは「値がnullならok」してくれる。これの逆が
assertNotNull($value);
くらい?
なんでか、assertTrue はあまり使いませぬ。assertEqual………もとい、assertIdenticalで片付いてしまうので。


後は、ファクトリ系とかで使うのが
assertIsA ($obj, $type);
ようは「$objが$typeクラスに属してる(当人または子クラス) ならtrue」ってやつです。


厳密には、例外投げたときとかもいろいろやりたいんだけど(あるかもしれないんだけど調べてない)。
とりあえず近々に使う程度にゃ上述のメモで十分かと。おいら的には。


いぢょ。相変わらずのメモ書き〜