Ta-kaku.jp Tools
Update 2010/02/06
技術メモ
トップページ
ハードやソフトの技術メモです。 ほとんど、個人の備忘録のレベルですので高度なことは書かれていません。 皆様に少しでもお役に立てれば幸いです。
MENU
サイト更新情報
2008/10/18
「Ta-kaku Tools 住所検索・郵便番号検索・事業所名検索・駅検索・電話局番検索」を Ver2.202 にリビジョンアップしました。
更新内容は以下の通りです。
・「xxx1丁目」の様に「全角の数字」と「丁目」が続いている文字列が入力されると検索できない事がある不具合を改修しました。
2008/10/01
Ta-kaku Tools Whois検索 Ver1.000をリリースしました。
2008/09/30
「Ta-kaku Tools 住所検索・郵便番号検索・駅検索・電話番号(局番)検索 」を Ver2.201 にリビジョンアップしました。
更新内容は以下の通りです。
・電話番号(局番)検索機能を正式版にしました。 ・無効な数値に対して住所の検索を行っていた処理を改善しました。 ・局番0120指定でGoogleMapがおかしな場所を示していた不具合を修正しました。 ・「東京駅駅」のように入力されると、関係の無いデータが出力される不具合を修正しました。
過去の情報
関連キーワード
技術メモ インデックス
カテゴリーを選択してください。
インストール
プログラミング言語
マークアップ言語
データベース言語
スクリプト言語
MS-Office
その他
Webアプリケーション
の開発方法
最新の技術メモ
最近登録した技術メモです。
2台目のルータの設定方法
登録日:2012/02/02   分類:環境設定
◆はじめに

設定は自己責任でお願いします。

先日NTTの回線を「フレッツ 光ネクスト ファミリー・ハイスピードタイプ」に変更してもらいました。
その際、「ひかり電話対応ホームゲートウェイ(PR-400MI)」をレンタルする事になったのですが、
これはルータとしての機能はもちろん、
オプションで無線LANカード(SC-40NE)を差し込むことでエアーステーションの役割も果たす優れもの・・・だったのですが、
実際に使用してみると、PS3との相性が悪いのか下り速度が1/10以下に低下してしまいました。
しかも不安定で回線が切れまくるのです。
PS3をメインで使用しているかみさんから大クレームを受けて、
急きょ以前使用していたBUFFALOのWHR-G54をPR-400MIに直列的に接続する事にしました。
その方法を調べるのに結構手間取ったので、せっかくなのでここに掲載する事にします。

◆前置き

・PR-400MI(新しい方)をルータA、WHR-G54(古い方)をルータBとします。
・ルータAがプロバイダーに直接つながる方です。
・ルータBはルータAにつなげます。

◆準備

・「ルータB側のWAN側MACアドレス」を調べておきます。
MACアドレスはルータ本体にシールで貼り付けられていると思います。
通常2つ書かれているはずですので、「WAN側にあるMACアドレス」指定します。
またブラウザーで開く設定画面でも確認する事ができると思います。
WHR-G54の場合は、「WAN設定 > WANポート」の「WAN側MACアドレス」が該当します。
MACアドレスは:(コロン)で2文字づつ区切って指定することになります。
本体シールには:(コロン)なしで書かれている場合が多いのでご注意下さい。
シールに「123456789012」と書かれていたら、「12:34:56:78:90:12」として使用します。

・「ルータB側がWAN側IPアドレス使用するIPアドレス」を決めておきます。
例えばルータAのIPアドレスが「192.168.1.1」の場合、「192.168.1.10」などにします。

・「ルータBのIPアドレス」を決めます。
例えばルータAのIPアドレスが「192.168.1.1」の場合、「192.168.2.1」などにします。
右から2つめを変えることでIPのルータAとルータBがDHCPで発行するIPアドレスの重複を防ぎます。

◆線のつなぎ方

・ルータA側のLANポート(私はLAN4にしました)とルータB側のWANポートをつなぎます。

◆ルータA側の設定

・DHCP固定IPアドレス設定
PR-400MIの場合は「トップページ > 詳細設定 > DHCPv4サーバ設定 > DHCP固定IPアドレス設定」にあります。
ここで調べておいた「ルータB側のWAN側MACアドレス」と「ルータB側がWAN側IPアドレス使用するIPアドレス」を設定します。
先の例では、MACアドレスが「12:34:56:78:90:12」、IPアドレスが「192.168.1.10」となります。

・LAN側静的ルーティング設定
PR-400MIの場合は「 トップページ > 詳細設定 > LAN側静的ルーティング設定」にあります。
まず宛先IPアドレスですが、これは決めておいた「ルータBのIPアドレス」の右から1番目を「0」に置き換えたIPを使います。
先の例では「ルータBのIPアドレス」が「192.168.2.1」としていたので、「192.168.2.0」を宛先IPアドレスとして指定します。
ネットマスクは「255.255.255.0」を指定します。
ゲートウエイは、ルータAのIPアドレスが「192.168.1.1」の場合、右から1番目を253と変えて「192.168.1.253」と指定します。

◆ルータB側の設定
ルータBのLANポートに直接PCをつないで設定画面を開きます。

・WAN側IPアドレスとサブネットマスクの設定
「手動設定」という項目があると思いますので、そこに「ルータB側がWAN側IPアドレス使用するIPアドレス」を指定します。
先の例では、「192.168.1.10」になります。
「手動設定」の項目とセットになっているサブネットマスクに「255.255.255.0」を指定します。

・デフォルトゲートウェイアドレスの設定
例えばルータAのIPアドレスが「192.168.1.1」の場合は「192.168.1.1」と指定します。

・DNSサーバアドレス
ルータAに指定しているアドレスと同じIPを指定します。

◆最後に

以上で設定は完了です。
この設定で、我が家ではPR-400MIとWHR-G54の両方で無線LANが使用できるようになりました。
シンプルなCSS切り替え
登録日:2008/10/07   分類:Webデザイン
画面の状態をCSSファイルを切り替える事でリアルタイムに変更します。
サンプルでは、以下の3つファイルを使用します。
test.html のコンボボックスを切り替えると、バックカラーが変更されます。

/* style1.css */
body
{
    background-color: red;
}

/* style2.css */
body
{
    background-color: blue;
}

<!-- test.html -->
<html>
    <head>
        <link rel="stylesheet" type="text/css" href="style1.css" id="test_id">
        <script type="text/javascript"><!--
            function test_function(pStyle)
            {
                document.getElementById('test_id').href = pStyle;
            }
        // --></script>
    </head>
    <body>
        <select onchange="test_function(value);">
           <option value="style1.css">スタイル1</option>
           <option value="style2.css">スタイル2</option>
        </select>
    </body>
</html>
住所検索ロジックの考え方
登録日:2008/10/03   分類:Webシステム
1.はじめに

弊サイトの住所検索は、入力ボックスが1つだけですが、郵便番号や住所、また読み仮名などが混ざった入力をされてもほぼ正確に検索結果を出力します。
数件ではありますが、「いったいどんなロジックにしているの」という問い合わせがありましたので、公開できる範囲で説明をしたいと思います。

弊サイトで使用している住所のデータは、日本郵政グループのデータです。
このデータは、だれでも無料で利用でき、常に最新の状態になっているので、非常に重宝します。
個人のみならず、教育機関などでの利用も頻繁に行われています。
まさに、データベースを勉強する材料として最適なデータと言えます。

データの内容は、こちらに詳しく記載されていますので、確認をしておいてください。
配布されるデータは、項目毎に分かれた形になっています。
ここでは、これらを便宜上以下の表現を使って説明に使用します。

    Z5 ... (旧)郵便番号(5桁)
    Z7 ... 郵便番号(7桁)
    A1 ... 半角カタカナ都道府県名
    A2 ... 半角カタカナ市区町村名
    A3 ... 半角カタカナ町域名
    A4 ... 漢字都道府県名
    A5 ... 漢字市区町村名
    A6 ... 漢字町域名

2.ユーザは正確に住所を入力してくれないもの

郵便番号はともかく、住所の方は、いろいろな入力のされ方をします。
都道府県から丁寧に入力される方もいらっしゃれば、住所のほんの一部しか入力されない方もいらっしゃいます。
入力ボックスが一つしかない検索の場合は、そこに入力された文字列から項目を推測する必要があります。
これは正に、文字列のパズルのようなもので、多彩な入力の対応に、小生も随分と楽しませて頂きました。

3.文字の種類で分解して項目に割り当てる

さて、それでは実際にどのように考えてゆくのかを説明しましょう。
日本語の場合、全角と半角で以下の種類の入力が行えます。

    全角漢字文字列
    全角ひらがな文字列
    全角カタカナ文字列
    全角英字文字列
    全角数字文字列
    全角記号文字列
    半角カタカナ文字列
    半角英字文字列
    半角数字文字列
    半角記号文字列

まず、処理の前段階で、ユーザが入力した文字列をこれらの種類に分類しておきます。
こうする事で、容易に「読み仮名」と「郵便番号」、そしてその他に文字列を割り当てる事ができます。
以下に、単純に割り当てた場合のイメージを記述します。

    全角漢字文字列      A4,A5,A6
    全角ひらがな文字列  A1,A2,A3 ... 半角カタカナに変換して使用する
    全角カタカナ文字列  A1,A2,A3 ... 半角カタカナに変換して使用する
    全角英字文字列
    全角数字文字列      Z5,Z7    ... 半角数字に変換して使用する
    全角記号文字列
    半角カタカナ文字列  A1,A2,A3
    半角英字文字列
    半角数字文字列      Z5,Z7
    半角記号文字列

お気付きのように、割り当ての無い文字列が存在します。
全角記号,半角英字,半角記号は、日本の住所として使用しないとしても、全角英字はマンション等に使用されそうです。
従って、全角英字もA4,A5,A6を割り当てた方が良いかも知れません。
ただし、半角英字は、SQLインジェクションなどの改竄を考慮してSQLには投入すべきではありません。
半角記号も同様です。

4.都道府県市町村を考慮して項目に割り当てる

全角漢字文字列に注目して見ましょう。
この項目には、A4,A5,A6 が割り当てられていますが、それぞれに対して、OR で検索をすると結果が拡散してしまいます。
逆に AND では、複数の文字列が割り当たっている場合、条件が成り立たなくなり、検索結果が0件になってしまいます。

やはり、ここでも各項目に対して適切な割り当てが必要になります。

A4 に対しては簡単です。
全角漢字文字列から都道府県を抜き出して割り当てます。

A5 に対しては、市区町村を割り当てる訳ですが、その為には、連続した文字列から市区町村を判別する必要があります。
これが意外と大変で、単純に「市」とか「町」で分離すると、「市川市」や「町田市」に対応できなくなってしまいます。
これ以上は、企業秘密ならぬサイトの秘密ですから明かす事はできませんが、いろいろと試行錯誤してみてください。

A6 に対しては、A4 と A5 の残りですので、やはり A5 の解析の正確さがキーになりそうですね。

5.簡単と思われる数字の入力に対しての注意

数字は、ほぼ郵便番号と判別する事ができます。
しかし、こちらの入力も様々で、

「137-8088」と入力されたり、「1378088」だったりします。
また途中から分からなくて、「13780」までの入力であったり、「1378087 1378088 1378089」のように連続で入力される方もいらっしゃいます。

私のツールは、丁番には対応していませんが、たまに入力される事があります。
例えば、「渋谷区神南1-21-1」などと入力された場合は、末尾の数字は郵便番号ではありませんし、
「品川インターシティ10階」の場合は、数値は階数です。

比較的簡単と思われた数値に対しても様々なノウハウが必要となります。

6.割り当てたデータからSQLを作成

苦労して準備した割り当てデータから、いよいよSQLを作成します。
以下に示しているのは、WHERE句の基本形です。
注意して頂きたいのは、割り当てたデータによってはこの形を使用できないパターンもあるという事です。
あくまでも参考としてください。

WHERE句の基本形

    A1 and
    (
        A2 or A3
    ) or
    A4 and
    (
        A5 or A6
    ) or
    (
        Z5 or Z7
    )

また、各データは、複数になる場合もあります。
「東京都和歌山県秋葉」と入力された場合は、

    (東京都 or 和歌山県) and
    (
        秋葉
    )

という風に、SQLを生成する考慮も必要です。

7.最後に

以上で説明を終わりたいと思いますが、参考になりましたでしようか。
簡単と思われていた住所検索が、以外にも奥の深いものである事がご理解頂けたのではないかと思います。
あなたも敢えて入力ボックス1つの文字列パズルに挑戦してみてはいかがでしょうか。
PR