DokuWikiのスパムを「CAPTCHA Plugin」で防ぐ

ウィキシステムを使っています。ウィキシステムで有名なのがウィキペディアで使われているWikimediaですが私はDokuWikiを使っています。一通りの機能がありますがファイルサイズが小さくシンプルなのです。
しかし誰も参加しないので寂しい思いをしていました。
多摩境タウン情報Wiki
先週の金曜日の未明に突如、多くの人がユーザー登録をしました。このシステムはユーザー登録や編集が実行されるとメール電気製品は知らせる仕組みになっています。これが夜中に大量に送られてきたのです。
眠い目をこすってメールを読むと全て英語。スパムでした。
その日は出勤なので修正しないと昼間にメールが殺到することになります。
とりあえずユーザー登録と編集の停止を行いました。
後日、プラグインを入れました。 (さらに…)

WordPressのタグを一括して統合する

WordPressのタグの管理は複雑です。今回はタグの統合で困りました。
タグが次のように付けられているとします。 (さらに…)

目次を自動的に生成するjQueryプラグイン

HTMLで書いたページに目次を自動的に追加するjQueryプラグインです。
h1-h6で記載した見出しを抽出し、目次を作成します。
目次には見出しへのリンクが設定されます。

このプラグインは二つのコードからできています。

プラグイン本体

プラグイン本体です。h1-h6を抽出し配列に格納します。またh1-h6にidを追加してリンク先にします。

jQuery.fn.toc = function(depth) {
    return this.each(function() {
        var headers, re, i;
        headers = [];
        re = new RegExp("h([1-" + depth + "])", "i");
        i = 0;
        $("*").each(function() {
            var ms;
            ms = $(this).get(0).tagName.match(re);
            if(ms) {
                $(this).prop("id", "header" + i);
                headers.push([
                    parseInt(ms[1]),
                    "<a href='#header" + i + "'>"
                    + $(this).html() + "</a>"
                ]);
                i++;
            }
        });
        $(this).append(array2ul(headers));
    });
}

配列をリストに

プラグイン本体で抽出した配列をulのリストにします。階層を反映します。

function array2ul(a) {
    var t, exlevel, level, i, j;
    t = "";
    exlevel = 0;
    for(i = 0; i <= a.length; i++) {
        level = i < a.length ? a[i][0] : 0;
        for(j = 0; j < Math.abs(exlevel - level); j++) {
            t += exlevel < level ? "<ul>" : "</ul>";
        }
        t += i < a.length ? "<li>" + a[i][1] + "</li>" : "";
        exlevel = level;
    }
    return t;
}

使い方

HTMLを次のようにします。
h1-h6を適切に使います。
目次をセットする箇所に「<div id="mokuji"></div>」などと書きます。bodyの先頭がよいでしょう。
スクリプトに「$("#mokuji").toc(3);」などと書きます。数字は見出しの深さです。「3」ならばh1からh3について目次を作成します。

<body>
<div id="mokuji"></div>
<h1>見出しA</h1>
<h2>見出しB</h2>
<p>本文。</p>
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.toc.js"></script>
<script type="text/javascript">
$(document).ready(function(){
    $("#mokuji").toc(3);
});
</script>
</body>

サンプル

サンプルとプラグインは次の通りです。

サンプルページ

jquery.toc.js

WassUpとSuperCacheは同時に使えない

WordPressで「WassUp Real Time Analytics」を使っています。記事別のアクセス数などをリアルタイムに調べることができるプラグインです。
しかし、記事の表示を高速化する「WP Super Cache」を導入したところ「WassUp」が正しく表示されなくなりました。アクセス数が異常に少ないのです。

調べると「WassUp」のFAQに書かれていました。

WordPress › WassUp Real Time Analytics « WordPress Plugins

After installing WP Supercache (or other caching plugin), Wassup shows very few visits, why is that?
WassUp is incompatible with WP Supercache, WP Cache, Hyper Cache, or any page-based caching plugin. WassUp cannot generate accurate statistics with these plugins.

現象は全く同じです。そして「WassUpは、WP Super Cacheとincompatibleである」と書かれています。相性が悪いそうです。

投稿からの経過日数を表示するWordPressプラグイン

ブログ記事に投稿してからの経過時間、日数を表示するプラグインを自作しました。
「この記事は投稿から3日が経過しています。」というように表示します。
この「3日」の部分が変化しますが、これはWordPressの関数「human_time_diff」を使っています。 (さらに…)

WordPressプラグイン「Add Noindex」

WordPressには個別投稿ページの他に、カテゴリーページ、タグページ、日付別ページなどのアーカイブページがあります。
例えば「プラグインを自作」という記事を投稿すると、「WordPress」のカテゴリーページ、「プラグイン」のタグページなど、各ページの先頭に同じ記事が載ります。
Googleは、ウェブサイトに同じ内容を何度も表示すると「コピーばかりで低品質」と判定するそうです。
一方で「<meta name='robots' content='noindex'>」をHTMLのヘッダに書いておけばGoogleはクロール対象から除外するので、そもそも「品質」の判定をしません。
そこで、個別登録ページはクロール対象とし、アーカイブページはクロール対象から除外するためのプラグインを書いてみました。 (さらに…)

ピボットテーブルを表示するjQueryプラグイン

Excelにはピボットテーブルという機能があります。クロス集計と呼ぶ人もいます。
これをHTMLのテーブルで再現するjQueryプラグイン「jquery.pivot.js」を作りました。 (さらに…)

ページを開いたときにメッセージを表示するjQueryプラグイン

ウェブページを開いたときに注意メッセージを表示するjQueryプラグイン「jquery.opening.js」を作りました。
ページを開いたときにメッセージが表示されます。メッセージは変更できます。
「今後はこのメッセージを表示しない。」にチェックすると次回からは表示されません。クッキーを利用しています。

使い方

  1. プラグイン(jquery.opening.js)をダウンロードします。
  2. 別途、Downloads · carhartl/jquery-cookie · GitHubでjquery.cookie.jsをダウンロードします。※jQueryでcookieを使う | You Look Too Cool
  3. HTMLを書きます。後述のサンプルを参考にしてください。
  4. これらを同じフォルダに保存します。

(さらに…)

祝日に対応したカレンダーを挿入するjQueryプラグイン

JavaScriptで日本の祝日を判定する関数を書いたので、ついでにカレンダーを挿入するjQueryプラグインを書いてみました。
使い道がよく分からないですが。

プラグインです。
jquery.calendar_jp

年間カレンダーを作るサンプルです。
sample1

一か月カレンダーを作るサンプルです。
sample2

「jQuery Calculator」を日本語化

前にjQuery用プラグイン「jQuery Calculator」を紹介しました。
You Look Too Cool » 電卓として使えるjQuery用プラグイン「jQuery Calculator」
元は英語ですがドイツ語、中国語などに変換する仕組みがあります。
日本語については対応していなかったので、勝手に作ってみました。

jQuery Calculator 日本語化

使い方は次のとおりです。
元のサイトはjQuery Calculatorです。ここで必要なファイルをダウンロードします。
日本語化用のファイルjquery.calculator-jaをダウンロードします。
次のようなHTMLを書きます。

<html>
<head>
<style type="text/css">
@import "jquery.calculator.css";
</style>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script type="text/javascript" src="jquery.calculator.js"></script>
<script type="text/javascript" src="jquery.calculator-ja.js"></script>
<script type="text/javascript">
$(function () {
    $('#basicCalculator').calculator({
        showOn: 'both',
        buttonImageOnly: true,
        buttonImage: 'calculator.png'
    });
});
</script>
</head>
<body>
<p><input type="text" id="basicCalculator"></p>
</body>
</html>
古い記事

タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報