HOME > blog

XMLサイトマップは主に検索エンジンのクローラに対してサイト内のページ情報を知らせるための手段・規格です。

対象サイトが開設してまもなくなど、他のサイトからのリンクが少ない(≒クローラがサイトへ訪れる機会がない/少ない)場合などに検索エンジンへサイトやページの存在を連絡することが可能なので、新設サイトのSEOの第一歩として重要視されています。

XMLサイトマップが登場してしばらくはいくつかの仕様があったようですが、Google, Yahoo, Microsoft など大手検索サイトからサポートを受けている sitemaps.org で定義された規格が現時点のデファクトスタンダードとなっています。

この規格の日本語訳はsitemaps.org – プロトコルで公開されているのですが、その内容を元に要点を簡単に整理してみます。

(さらに…)

タグ: ,

IEではinnerHTMLでselect要素内にoption要素を挿入することができません。

例えば下の「HereClick!」というボタンを押すと、IE以外では何も入っていないプルダウンメニューに「OPTION 01」「OPTION 02」「OPTION 03」という選択肢が出現しますが、IEでは出現しません。

以下がサンプルのコード。

<script type="text/javascript">
<![CDATA[
function test_button_02() {
    var html;
    var values = new Array("OPTION 01", "OPTION 02", "OPTION 03");
    for (var i = 0; values[i]; i++) {
        html += '<option>' + values[i] + '</option>';
    }
    var node = document.getElementById('test_select_02');
    node.innerHTML = html;
}
]]>
</script>
<form>
<select id="test_select_03">
</select>
<input type="button" onclick="test_button_02()" value="HereClick!">
</form>
タグ: ,

option要素ってvalue属性が指定されていない場合はoption要素の内容をvalueの値として扱うことになっているはずなのですが、IEの場合はそのルールが適用されません。

以下、サンプル。

サンプルのコードは以下の通り。

<div>
<select id="test_select_01" onchange="javascript:alert(this.value)">
    <option disabled="disabled" selected="selected">-- どれか選んでね --</option>
    <option>選択肢 1</option>
    <option>選択肢 2</option>
    <option>選択肢 3</option>
</select>
</div>

「選択肢 n」(nは選択したoptionの数字)がアラートで表示されなきゃいけないはずなんですが……。

ちなみに各option要素にvalue属性を設定すればIEでも問題なくvalueの値を返すようになります。

2つめのサンプルのコードは以下の通り。

<div>
<select id="test_select_02" onchange="javascript:alert(this.value)">
    <option disabled="disabled" selected="selected">-- どれか選んでね --</option>
    <option value="選択肢 1">選択肢 1</option>
    <option value="選択肢 2">選択肢 2</option>
    <option value="選択肢 3">選択肢 3</option>
</select>
</div>

なおIEではoption要素内のdisabled属性(選択不可)も機能しません(IE7以前の場合)

タグ: ,

IEではbutton要素に、アラートでvalue値を返すJavaScriptを組み込んだ場合、value値ではなくbutton要素のテキストノードの内容を返します。

例えば以下の例だと、ボタンを押してみると「TEST」と返るべきです、が。

コードは以下の通り。

<div>
    <button type="button" id="test" value="TEST"
    onclick="javascript:alert(this.value)">テストだよ</button>
</div>


このケース、IE8の場合はJavaScriptの意図通りid value
の値、即ちちゃんと「TEST」と返すようです。

タグ: ,

このサイトの場合、CSSをはずした時や音声ブラウザを利用する上での可読性を考慮し、ページ下に記述した署名っぽい記載をCSS適用時のヘッダーとしてページ最上部に表示するようにしてるのですが、その実現のためにHTML下部に用意したdiv#headerブロックをposition: absolute;する方法を利用しています。

が、IE6以前ではposition: absoluteを利用する特定のケースで、そのブロックがレンダリングされない不具合があるそうです。詳細はjmblog.jp — IEで絶対配置(position:absolute)のボックスが消えるバグの検証が詳しいです。

タグ:

普段JavaScriptを利用する際、概ねフレームワークにはprototype.jsを利用するのですが、ちょっと思い立ってjQueyも使ってみようと勉強してみた最初の第一歩ついて簡単にまとめておきます。

(さらに…)

タグ:

最近のWebアプリケーション開発でDBを利用する機会ではO/Rマッパーを利用するケースが多くなっています。開発の効率化などを目的に選択されるWebアプリケーションフレームワークが対応している(ないし利用を前提としている)場合のあるのですが、プログラムコードとSQLが混在により保守性が問題になりうるのですが、そうした問題の解決法の一つと言えるでしょう。

逆にO/Rマッパーを利用することの弱点としては発行されるSQLの内容を把握しにくい・最適化しにくいという点もあるので、DB連携の際にはメリット・デメリットを見極めて色々な選択肢の中から選べるのが理想的です。

PerlでのO/RマッパーはDBIx::Class(以下、DBIC / 日本語訳)が代表的ですが、DBICを利用した際のSQLをトレースする方法をまとめておきます。以下のコードでは連携先のDBはMySQLでの例です。

まずはDBICのスキーマクラス。サンプルコードの簡略化のため、DBIx::Class::Schema::Loaderというモジュールを利用し、自動的にデータベース内の全てのテーブル用のクラスを作っています。

package MyApp::Schema;

use strict;
use warnings;
use base qw(DBIx::Class::Schema::Loader);

__PACKAGE__->loader_options(
    'constraint' => qr(^[A-Z]\w+$),
    'components' => [qw(
        InflateColumn::DateTime
        UTF8Columns
    )],
);
1;

次にMyApp::Schemaを利用する側のサンプルです。

use strict;
use warnings;
use MyApp::Schema;

my $schema = MyApp::Schema->connect(
    '接続先MySQLのDataSource',
    '接続先MySQLのユーザアカウント',
    '上記ユーザアカウントに対応するパスワード'、
);

$schema->storage->debug(1);
$schema->storage->debugfh(
    IO::File->new('トレース・ログのファイルパス', 'w')
);

......

強調した部分がDBICで発行されたSQLをトレースするための箇所です。このコード以降、$schemaを利用したDB連携時のSQLが指定したファイルに記録されます。また、

IO::File->new('トレース・ログのファイルパス', 'w')

の部分ですが、2つ目の引数が’w’の場合は、上書きでトレースします。ログとして前回(以前)の内容も残したい場合は’a’を指定すると追加書き込みで記録されるようになります。

こうした機能を活用して少しでも発行されるSQLの効率化を図っていきたいものですね。

タグ: , ,

新しくホームページを作ると訪問者への誘導のために、何かしらの形・方法で被リンク先を作っていくことになりますが、例えば旗艦となるホームページが既に存在していて、そのホームーページに関連するキャンペーン用などのケースでない限り、一番手っ取り早い被リンク先は検索エンジンへの登録となります。実際、検索エンジンからの訪問は大きな要素でもあります。

が、GoogleYahoo! JAPAN、あるいはマイクロソフトがサービスを提供しているBingなど主要な検索エンジンのホームページを確認しても、どこから検索エンジンへの登録を申請すれば良いのかなかなか分かりにくいです。

そこで先に挙げた検索エンジンへの登録を申請するためのページがどこにあるかをまとめておきます。

まずGoogleですが、Googleの場合はホームページ公開後直ちに申請する場合を除き、結構早いうちからクローラーが訪問してきてくれるので、わざわざこちらから申請する必要がないかもしれませんが、

Google
http://www.google.co.jp/addurl/

で申請できます。ちなみにAdWordsやAdSense、コンテンツ登録に関してはまた別で、それぞれ

AdWords
http://adwords.google.co.jp/
AdSense
https://www.google.com/adsense/login/ja/

となっています。なおAdWordsやAdSenseは別途Googleのアカウントが必要です。

Yahoo! Japanの場合は

Yahoo! Japan
https://siteexplorer.search.yahoo.co.jp/submit

となっています。但し、Yahoo!Japanのアカウントが必要で、且つこの申請はウェブ検索用の申請フォームです。カテゴリへの登録申請やスポンサードサーチインタレストマッチなどの申請はまた別窓口になっています。その辺りに関しては

Yahoo!ビジネスセンター
http://business.yahoo.co.jp/

を基点に目的別のサービスの情報を追うと良いでしょう。

Bingについては

Bing
http://www.bing.com/docs/submit.aspx

で申請が可能です。

タグ:

よろしくお願いいたします。。。