サイトのリンク切れの検出チェックをするには?

checkbot を利用するといいだろう。 これは Perl ベースのコマンドラインツールで、実行するとリンク切れをチェックして HTML を出力する。その HTML に書き出された検出結果をブラウザから見るという使い方。 この checkbot、UTF-8 で書かれたサイトを指定してて実行すると、 Parsing of undecoded UTF-8 will give garbage when decoding entities at /usr/lib/perl5/site_perl/5.8.7/LWP/Protocol.pm line XXX, line 1. などのエラーが出るが、気にしないでよい。実行例としては、 ./checkbot --url https://perltips.twinkle.cc/ --internal-only --ignore "\.js|hatena\.ne\.jp|\.ico" ※本当は全部 1行 のような感じで、上の例だと、https://perltips.twinkle.cc/ (このサイト)を対象にして、JavaScript のリンク (.js)、hatena.ne.jp、アイコンファイル (.ico) を無視し、サイト内だけリンク切れをチェックする、という設定である。
checkbot を利用するといいだろう。 これは Perl ベースのコマンドラインツールで、実行するとリンク切れをチェックして HTML を出力する。その HTML に書き出された検出結果をブラウザから見るという使い方。 この checkbot、UTF-8 で書かれたサイトを指定してて実行すると、 Parsing of undecoded UTF-8 will give garbage when decoding entities at /usr/lib/perl5/site_perl/5.8.7/LWP/Protocol.pm line XXX, line 1. などのエラーが出るが、気にしないでよい。実行例としては、 ./checkbot --url https://perltips.twinkle.cc/ --internal-only --ignore "\.js|hatena\.ne\.jp|\.ico" ※本当は全部 1行 のような感じで、上の例だと、https://perltips.twinkle.cc/ (このサイト)を対象にして、JavaScript のリンク (.js)、hatena.ne.jp、アイコンファイル (.ico) を無視し、サイト内だけリンク切れをチェックする、という設定である。

Movable Type で、カテゴリーのディレクトリ名を指定する方法

Movable Type 日本語版は、カテゴリー名に英数字が入っていた場合はそれを利用してディレクトリ名を作成しようとするが、日本語のみのカテゴリー名を付けた場合には、Movable Type が cat72 などと勝手なディレクトリ名をつけてしまう。 カテゴリー名はそのままブログのパーマリンクの URL の一部となる。URL の一部ということは SEO の観点からいうとキーワードの一部であるため、これはできればせめてキーワードに関連した英単語などにしたい。 その方法だが、
  1. カテゴリー名をつけときに、まずは <自分の指定したいディレクトリ名>日本語のカテゴリー名 とする。
  2. 次に、テンプレート中の や の部分を、 <$MTCategoryLabel decode_html="1" remove_html="1"$> <$MTArchiveTitle decode_html="1" remove_html="1"$> に置き換える。
  3. 最後に再構築する。
Movable Type 日本語版は、カテゴリー名に英数字が入っていた場合はそれを利用してディレクトリ名を作成しようとするが、日本語のみのカテゴリー名を付けた場合には、Movable Type が cat72 などと勝手なディレクトリ名をつけてしまう。 カテゴリー名はそのままブログのパーマリンクの URL の一部となる。URL の一部ということは SEO の観点からいうとキーワードの一部であるため、これはできればせめてキーワードに関連した英単語などにしたい。 その方法だが、
  1. カテゴリー名をつけときに、まずは &lt;自分の指定したいディレクトリ名&gt;日本語のカテゴリー名 とする。
  2. 次に、テンプレート中の や の部分を、 <$MTCategoryLabel decode_html="1" remove_html="1"$> <$MTArchiveTitle decode_html="1" remove_html="1"$> に置き換える。
  3. 最後に再構築する。

Movable Type で、他ブログまで検索して結果を表示させない方法

Movable Type(バージョンは 3.2)は、私もなぜこんな仕様になっているのか謎なのだが、デフォルトのテンプレートについてる検索ボックスから検索して、その検索結果が表示されたページからまた検索を行うと、今度は Movable Type が管理しているすべてのブログを検索しに行ってしまう。これを防ぐにはどうしたらいいのだろうか? にその方法が紹介されていた。要は、Movable Type をインストールしたディレクトリにある、 search_templates/default.tmpl の中の ~ の部分を探して以下の青字の 1行を追加すればよい。
<form method="post" action="<$MTCGIPath$><$MTSearchScript$>">

<h3><MT_TRANS phrase="Search this site:"></h3>

<p><input type="text" size="30" name="search" value="<$MTSearchString$>" /> <input type="submit" value="<MT_TRANS phrase='Search'>" /></p>

<p><input type="checkbox" name="CaseSearch" /> <MT_TRANS phrase='Match case'> <input type="checkbox" name="RegexSearch" /> <MT_TRANS phrase='Regex search'></p>
<font color="blue"><input type="hidden" name="IncludeBlogs" value="<$MTBlogID$>" /></font>

</form>
Movable Type(バージョンは 3.2)は、私もなぜこんな仕様になっているのか謎なのだが、デフォルトのテンプレートについてる検索ボックスから検索して、その検索結果が表示されたページからまた検索を行うと、今度は Movable Type が管理しているすべてのブログを検索しに行ってしまう。これを防ぐにはどうしたらいいのだろうか? にその方法が紹介されていた。要は、Movable Type をインストールしたディレクトリにある、 search_templates/default.tmpl の中の ~ の部分を探して以下の青字の 1行を追加すればよい。
<form method="post" action="<$MTCGIPath$><$MTSearchScript$>">

<h3><MT_TRANS phrase="Search this site:"></h3>

<p><input type="text" size="30" name="search" value="<$MTSearchString$>" /> <input type="submit" value="<MT_TRANS phrase='Search'>" /></p>

<p><input type="checkbox" name="CaseSearch" /> <MT_TRANS phrase='Match case'> <input type="checkbox" name="RegexSearch" /> <MT_TRANS phrase='Regex search'></p>
<font color="blue"><input type="hidden" name="IncludeBlogs" value="<$MTBlogID$>" /></font>

</form>

Linux に、phpMyAdmin 2.8.2 をインストールする方法

簡単にいうと、「scripts/setup.php 実行後、config/config.inc.php を ./ にコピー」 すればよい(Thanks、はてなの bangbangshoot さん)
  1. phpMyAdmin-2.8.2.tar.gz を解凍する。
  2. phpMyAdmin のデータベースを作成(データベース名 pma)
  3. データベース pma アクセス用のアカウント(ユーザー名 pma)を作成
  4. ユーザー名 pma に対して、データベース pma へのすべてのアクセス権限を付与
  5. ./scripts/create_tables_mysql_4_1_2+.sql を編集(データベース pma ですでに作成し、ユーザーも作成したため、データベース作成と権限設定をコメントアウト)
    <font color="blue">--</font> DROP DATABASE IF EXISTS `phpmyadmin`;
    <font color="blue">--</font> CREATE DATABASE `phpmyadmin`
    <font color="blue">--</font> DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
    USE <font color="blue">pma</font>; ←データベース pma に変更
    <font color="blue">--</font> GRANT SELECT, INSERT, DELETE, UPDATE ON `<font color="blue">pma</font>`.* TO
    <font color="blue">--</font>    '<font color="blue">pma</font>'@localhost;
  6. 以下を実行
    # mv phpMyAdmin-2.8.2 phpMyAdmin
    (↑phpMyAdmin をインストールするディレクトリ名を phpMyAdmin にする)
    # cd phpMyAdmin ← phpMyAdmin をインストールディレクトリに移動
    # mkdir config (phpMyAdmin の中に、ディレクトリ名 config を作成)
    # chmod o+rw config (アクセス権を設定)
    # vi config.inc.php (空のファイルを作成)
    # cd scripts (phpMyAdmin のあるディレクトリの、scripts ディレクトリに移動)
    # mysql -u pma -p pma < create_tables_mysql_4_1_2+.sql
  7. https://yourdomain.com/phpMyAdmin/scripts/setup.php を実行、設定を保存(一時)注: 保存するには必ずSAVE ボタンを押すこと!
    1. User for config auth: *データベースの*ルート管理権限を持つユーザー名
    2. Password for config auth: ↑ユーザーのパスワード
    3. phpMyAdmin control user: pma (上で作成したユーザー)
    4. phpMyAdmin control user password: (↑ユーザーのパスワード)
  8. 以下を実行
    # cd .. (phpMyAdmin のディレクトリに移動)
    # cp ./config/config.inc.php .
要は、以下の内容のファイルが phpMyAdmin のインストールされている直後のディレクトリ(つまり index.php と同じ場所)に、config.inc.php という名前で置いてあればよい。
  • データベース pma を使わない必要最小限の config.inc.php の内容
    <?php

    $i
    = 0;
    $i++;
    $cfg['Servers'][$i]['host'] = 'localhost';
    $cfg['Servers'][$i]['extension'] = 'mysql';
    $cfg['Servers'][$i]['connect_type'] = 'tcp';
    $cfg['Servers'][$i]['compress'] = false;
    $cfg['Servers'][$i]['auth_type'] = 'config';
    $cfg['Servers'][$i]['user'] = 'MySQL データベースへのマスターユーザー名';
    $cfg['Servers'][$i]['password'] = 'MySQL データベースへのマスターパスワード';

    ?>
  • データベース pma を使う場合の config.inc.php
    <?php
    $i
    = 0;
    $i++;
    $cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';
    $cfg['Servers'][$i]['relation'] = 'pma_relation';
    $cfg['Servers'][$i]['table_info'] = 'pma_table_info';
    $cfg['Servers'][$i]['table_coords'] = 'pma_table_coords';
    $cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages';
    $cfg['Servers'][$i]['column_info'] = 'pma_column_info';
    $cfg['Servers'][$i]['history'] = 'pma_history';
    $cfg['Servers'][$i]['host'] = 'localhost';
    $cfg['Servers'][$i]['extension'] = 'mysql';
    $cfg['Servers'][$i]['connect_type'] = 'tcp';
    $cfg['Servers'][$i]['compress'] = false;
    $cfg['Servers'][$i]['controluser'] = 'データベース pma のユーザー名';
    $cfg['Servers'][$i]['controlpass'] = 'ユーザー名 pma のパスワード';
    $cfg['Servers'][$i]['auth_type'] = 'config';
    $cfg['Servers'][$i]['user'] = 'MySQL へのマスターユーザー名';
    $cfg['Servers'][$i]['password'] = 'MySQL へのマスターパスワード';
    $cfg['Servers'][$i]['pmadb'] = 'ユーザー pma が使用するデータベース名';
    ?>
config.inc.php を設定(ファイルを index.php と同じ場所に置いた)したのに 「root@localhost でログインでない」 旨のエラーが出たら、phpMyAdmin に関する cookie をすべて削除(3つくらいあるかもしれない)してみよう。エラーが出ている場合は、phpMyAdmin は、./libraries/config.default.php を見に行っているようだ。
簡単にいうと、「scripts/setup.php 実行後、config/config.inc.php を ./ にコピー」 すればよい(Thanks、はてなの bangbangshoot さん)
  1. phpMyAdmin-2.8.2.tar.gz を解凍する。
  2. phpMyAdmin のデータベースを作成(データベース名 pma)
  3. データベース pma アクセス用のアカウント(ユーザー名 pma)を作成
  4. ユーザー名 pma に対して、データベース pma へのすべてのアクセス権限を付与
  5. ./scripts/create_tables_mysql_4_1_2+.sql を編集(データベース pma ですでに作成し、ユーザーも作成したため、データベース作成と権限設定をコメントアウト)
    <font color="blue">--</font> DROP DATABASE IF EXISTS `phpmyadmin`;
    <font color="blue">--</font> CREATE DATABASE `phpmyadmin`
    <font color="blue">--</font> DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
    USE <font color="blue">pma</font>; ←データベース pma に変更
    <font color="blue">--</font> GRANT SELECT, INSERT, DELETE, UPDATE ON `<font color="blue">pma</font>`.* TO
    <font color="blue">--</font>    '<font color="blue">pma</font>'@localhost;
  6. 以下を実行
    # mv phpMyAdmin-2.8.2 phpMyAdmin
    (↑phpMyAdmin をインストールするディレクトリ名を phpMyAdmin にする)
    # cd phpMyAdmin ← phpMyAdmin をインストールディレクトリに移動
    # mkdir config (phpMyAdmin の中に、ディレクトリ名 config を作成)
    # chmod o+rw config (アクセス権を設定)
    # vi config.inc.php (空のファイルを作成)
    # cd scripts (phpMyAdmin のあるディレクトリの、scripts ディレクトリに移動)
    # mysql -u pma -p pma < create_tables_mysql_4_1_2+.sql
  7. https://yourdomain.com/phpMyAdmin/scripts/setup.php を実行、設定を保存(一時)注: 保存するには必ずSAVE ボタンを押すこと!
    1. User for config auth: *データベースの*ルート管理権限を持つユーザー名
    2. Password for config auth: ↑ユーザーのパスワード
    3. phpMyAdmin control user: pma (上で作成したユーザー)
    4. phpMyAdmin control user password: (↑ユーザーのパスワード)
  8. 以下を実行
    # cd .. (phpMyAdmin のディレクトリに移動)
    # cp ./config/config.inc.php .
要は、以下の内容のファイルが phpMyAdmin のインストールされている直後のディレクトリ(つまり index.php と同じ場所)に、config.inc.php という名前で置いてあればよい。
  • データベース pma を使わない必要最小限の config.inc.php の内容
    <?php

    $i
    = 0;
    $i++;
    $cfg['Servers'][$i]['host'] = 'localhost';
    $cfg['Servers'][$i]['extension'] = 'mysql';
    $cfg['Servers'][$i]['connect_type'] = 'tcp';
    $cfg['Servers'][$i]['compress'] = false;
    $cfg['Servers'][$i]['auth_type'] = 'config';
    $cfg['Servers'][$i]['user'] = 'MySQL データベースへのマスターユーザー名';
    $cfg['Servers'][$i]['password'] = 'MySQL データベースへのマスターパスワード';

    ?>
  • データベース pma を使う場合の config.inc.php
    <?php
    $i
    = 0;
    $i++;
    $cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';
    $cfg['Servers'][$i]['relation'] = 'pma_relation';
    $cfg['Servers'][$i]['table_info'] = 'pma_table_info';
    $cfg['Servers'][$i]['table_coords'] = 'pma_table_coords';
    $cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages';
    $cfg['Servers'][$i]['column_info'] = 'pma_column_info';
    $cfg['Servers'][$i]['history'] = 'pma_history';
    $cfg['Servers'][$i]['host'] = 'localhost';
    $cfg['Servers'][$i]['extension'] = 'mysql';
    $cfg['Servers'][$i]['connect_type'] = 'tcp';
    $cfg['Servers'][$i]['compress'] = false;
    $cfg['Servers'][$i]['controluser'] = 'データベース pma のユーザー名';
    $cfg['Servers'][$i]['controlpass'] = 'ユーザー名 pma のパスワード';
    $cfg['Servers'][$i]['auth_type'] = 'config';
    $cfg['Servers'][$i]['user'] = 'MySQL へのマスターユーザー名';
    $cfg['Servers'][$i]['password'] = 'MySQL へのマスターパスワード';
    $cfg['Servers'][$i]['pmadb'] = 'ユーザー pma が使用するデータベース名';
    ?>
config.inc.php を設定(ファイルを index.php と同じ場所に置いた)したのに 「root@localhost でログインでない」 旨のエラーが出たら、phpMyAdmin に関する cookie をすべて削除(3つくらいあるかもしれない)してみよう。エラーが出ている場合は、phpMyAdmin は、./libraries/config.default.php を見に行っているようだ。