sleep sort する jQuery プラグイン

注意: sleep sort は、あくまでもネタです。ネタとして楽しんでください。
コメント欄でも指摘されてますが、実用に耐えるものではありません。
間違っても実用しようとか思わないように!

一部で話題沸騰中のソートアルゴリズム「sleep sort」を jQuery 用プラグインとして実装してみました。
via. 常識を覆すソートアルゴリズム!その名も"sleep sort"! – Islands in the byte stream

とりあえず、デモ。
下の textarea に数値をスペース区切りで入力してから「Sleep Sort!」をクリックしてください。
ソートされるはずです。



続きを読む

ん~、正直なところ、$("#checkboxid").checked()が欲しいっすw

jQuery で checkbox が check されてるか調べる

ん〜、正直なところ、$("#checkboxid").checked()が欲しいっすwTwitter で、@masaru_b_cl さんが、「jQueryでチェックボックスがチェックされているかどうかを取るのって、 var checked = $("#checkboxid").attr("checked"); しか方法ないのか・・・」と言ってました。
jQuery オブジェクトには .checked() とかってメソッドがありません。
なので checkbox がチェックされてるかどうかは、通常以下のようにして取得します。

checked = $("#checkboxid").attr("checked");
checked = $("#checkboxid").get(0).checked;

ただ、これだとあまり直感的じゃないですね。
checked = $("#checkboxid").checked(); のようにして、取得できるとカッコイイです。
本当にできないんでしょうか?
実は .checked() メソッドを jQuery オブジェクトに追加するのは、すごい簡単です。
続きを読む

VPS 借りたら、せめてこれくらいはやっとけというセキュリティ設定

LinuxサーバセキュリティさくらのVPSやら、ServersMan@VPS やらの出現で、やたらと敷居のさがった感のある VPS 。
かく言うこのサーバもめ組VPSで運用されてるわけですが、VPSを既存のレンサバ感覚で使ってる人にせめてこれくらいのセキュリティ設定はやっておいたほうが良いよっていうお話です。

今回、対象にする OS は CentOS です。
さくらVPS 借りて Ubuntu とか、別の OS で運用するような中上級者は自分でできるよね。
続きを読む

nginx で ssl 設定をする

ハイパフォーマンスHTTPサーバ Nginx入門nginx で SSL 設定をするのは、スゴイ簡単です。
サーバ証明書と秘密鍵がすでにあるなら、/etc/nginx/nginx.conf に以下の設定を追加するだけでおっけ。

server {
    :
    listen 443 default ssl;
    ssl on;
    # サーバ証明書(サーバ証明書に中間CA証明書を連結したもの)
    ssl_certificate      /usr/local/nginx/conf/cert.pem;
    # 秘密鍵
    ssl_certificate_key  /usr/local/nginx/conf/cert.key;  
    :
}

via. HttpSslModule
続きを読む

WordPress マルチサイト版の高速化アイデア

WordPress をマルチサイトで使用していると、画像のURLが以下のような感じになると思います。

http://hoge.example.com/files/2011/05/fuga.jpg

しかし、実際にはサーバ上には /files/2011/05/fuga.jpg ってファイルは存在してません。
WordPress が、どうやってこのファイルを処理しているかというと

  1. wp-includes/rewrite.php の WP_Rewrite クラスで wp-includes/ms-files.php?file=2011/05/fuga.jpg に書き換え
  2. wp-includes/ms-files.php で、/wp-content/blogs.dir/{blog ID}/files/2011/05/fuga.jpg を読み込んで出力

つまり、静的ファイルにアクセスするためにわざわざ WordPress のプロセスを起動してるわけですね。
これでは、画像をいっぱい張ってある場合、非常に重たくなります。

てなわけで、以下のように設定してやれば wp-includes/ms-files.php を経由しないで、直接 Web サーバに応答させることができるのでは無いの?ってな按配です。
続きを読む

wp_remote_get のススメ

WordPress プラグインで外部サービスのAPIを叩く場合、以前は Snoopy 等のライブラリを include して行っていました。
# Snoopy が WordPress コアソースに含まれていたため。

しかし、WordPress 2.7 以降では wp_remote_get() という関数が追加されたため、もっぱらこれを使っています。
例えば Topsy の API を使って、パーマリンクに対して言及されたツイートを取得するには以下のようなコードを書けば実現できます。

$response = wp_remote_get('http://otter.topsy.com/trackbacks.json?url='.rawurlencode(get_permalink()).'&tracktype=tweet&perpage=50');
if( !is_wp_error( $response ) && $response["response"]["code"] === 200 ) {
	$response_body = json_decode($response["body"]);
	var_dump($response_body->response->list[0]);
} else {
	// Handle error here.
}

簡単でしょ?

以下、簡単に wp_remote_get の使い方
続きを読む

WordPressで、特定のエントリーについたコメントをCSVで一括DLできる方法とかないかな

Comment Downloader

WordPressで、特定のエントリーについたコメントをCSVで一括DLできる方法とかないかな@tunakko_ さんが、「WordPressで、特定のエントリーについたコメントをCSVで一括DLできる方法とかないかな」とか言ってたので、任意のエントリに着いたコメントの情報をタブ区切りテキストで一括してダウンロードできるプラグイン Comment Downloader を作ってみました。
カンマ区切りではなくタブ区切りなのは、コメント内にカンマが含まれていた時の処理が面倒くさかったため。面倒臭がりですいません。
ソース見てもらえば分かるんですが作りは単純です。
ログインしてないとコメント一覧をダウンロードできないようにしてあるので、勝手にダウンロードされる恐れは無いかと思われます。
このプラグインのダウンロードは以下から。
http://dl.dropbox.com/u/110305/comment-dl.zip

ダッシュボードで投稿一覧画面を表示すると、右端に「この投稿のコメントをダウンロード」ってリンクが表示されるので、それをクリックすると zip 形式で圧縮されたテキストファイルをダウンロードできます。
後は、それを Excel に食わせるなりなんなり好きにしてやってください。

Head Cleaner 1.4.2.x リリース

Head Cleaner をアップデートしました。
WordPress > Head Cleaner « WordPress Plugins

今回の追加機能は以下の2つ。

  • Last-Modified タグ出力オプション
  • パラノイアモードの搭載

パラノイアモードが、どんな機能かというと head 部だけでなく html 全体をなるべく小さくするように不要な改行や連続した空白を取り除いちゃう機能です。
ただ、このパラノイアモードは実験的な機能なので、不具合が出る場合は適用しないでください。
# どんな感じになるかは、当サイトの HTML ソースを見てみてください。

さて、当サイトのトップページがどれくらい小さくなるかというと

HeadCleaner off

45.0 KB
HeadCleaner on without paranoia mode

39.6 KB
HeadCleaner on with paranoia mode

36.4 kB

パラノイアモードオフの場合は12%、パラノイアモードをオンにすると19%サイズダウンしました!

当サイトでは gzip 圧縮が有効になっているため、実際に転送されるファイルのサイズは gzip 圧縮後のサイズになります。
あと Head Cleaner は自サイトの JS, CSS も最小化してくれるため、それらもまとめて見てみた方が良いでしょう。

HeadCleaner off

83.3 KB
HeadCleaner on without paranoia mode

72.3 KB
HeadCleaner on with paranoia mode

72.1 kB

パラノイアモードオフの場合は13.2%、パラノイアモードをオンにすると13.2%サイズダウンしました!
パラノイアモードあまり意味ない orz
続きを読む

WordPress でカテゴリのリンクを変更する

WordPress でカテゴリのリンクを標準以外に変更する方法です。
まぁ、それ専用のプラグインとかも探せば有ると思うんですが

http://example.com/?cid=xx 形式に変更する

例えば、カテゴリのリンクを http://example.com/?cid=xx とかって形式でも表示できるようにするには、以下のようにして parse_query フィルタを使うと良いです。
# functions.php とかに追加してやってください。

class add_category_link_to_different_link {
	function __construct(){
		add_filter('query_vars', array(&$this, 'add_query_vars'));
		add_action('parse_query', array(&$this, 'parse_query'));
	}
	public function add_query_vars($qvars) {
		$qvars[] = 'cid';
		return $qvars;
	}
	public function parse_query($query) {
		$cat_id  = (int) $query->query_vars['cid'];
		if ( !(empty($cat_id) || $cat_id === 0) ) {
			$url = get_category_link($cat_id);
			if ( !empty($url) && $url !== FALSE ) {
				$query->query_vars["cat"] = $cat_id;
				$query->is_404 = false;
			} else {
				$query->set_404();
			}
		}
		return $query;
	}
}
new add_category_link_to_different_link;

続きを読む

MySQL 5.5.11 にアップデート

remi レポジトリに MySQL-5.5.11 がきてたのでアップデート。
MySQL 5.5 replace MySQL 5.1 – Les RPM de Remi – Blog

アップデート後 mysqld が起動しなくなったので焦ったけど、メモリ不足が原因だったので query_cache と tmp_table_size に割り当ててるメモリを減らして解決。
あと innodb_buffer_pool_size は指定してなかったんだけど、デフォルトで 128MB 取られるようだったので、これも指定して 64M に下げて運用。
設定は、もうちょい追い込まないとダメだなぁ。
メモリがプアな VPS だと、色々と工夫が必要です。

アップデート後に注意が必要な点としては、他にも [mysqld] ディテクティブの default-char-set が使えなくなったとかあるようです。
firegoby » Blog Archive » MySQL5.5.3にアップグレードしたら再起動に失敗した。