Squidでニコ動を高速化&時報回避する方法


Squidは有名なプロキシサーバーですが、一般人が使用する意味はあまりないように思われています。
企業や学校など、外部へ多くのアクセスがある場合は、例えばヤフートップページをキャッシュしておくとします。
何度もネットへ読みにいかずキャッシュサーバーがデータを返すため外部トラフィックを減らせるというメリットが有ります。

ニコニコ動画は、プレミアムにならないと一般的にすごく重いことで知られています。
ニコキャッシュなる、PC上で動作するプロキシもありますが家庭内で複数PCを使用している場合は面倒です。
そこで今回、我が家ではNATの役目をしているサーバーにSquidを入れてニコニコをキャッシュしてもらうことにしました^^;
一度見た動画をキャッシュすることで、次回見たときものすごい勢いで読み込みが完了します^^;
したがって、初めて見る動画に対しては全く効果がないということになります。

ついでに、時報やニコ割へのアクセスを遮断して時報を回避してみちゃったりします。

もうこうなると、プレミアムの意味が(ry



前置きはこれぐらいで、肝心の設定を見てみましょう。
すでにSquidプロキシサーバーが動作していて、クライアント側設定も済んでいることを前提に書きます。
Squid設定についてはググッてください。

まず:/refresh_patternでTAG: refresh_patternの行を探します。
説明の下に以下のパターンを追加します。(2010.03.02現在)
ニコニコ側の設定が変更される可能性がありますので,その際は動画URLの正規表現になるように修正してください。
#  TAG: refresh_pattern
#       usage: refresh_pattern [-i] regex min percent max [options]
#
#   (中略)

#ニコニコキャッシュ用
#サムネイルと動画をキャッシュする(サムネ:smile?i= , 動画:smile?v=)
#最低保存期間14日、最長90日
refresh_pattern -i \.(smilevideo|nicovideo)\.jp\/smile 26160 90% 129600 ignore-no-cache ignore-no-store ignore-private



時報ブロックの設定は以下の通りです。
動画キャッシュと同様にTAG: aclを探して以下を付け加えます。
#ニコニコ時報ブロック
acl nicojihou url_regex -i ^http://.*nicovideo.jp/.+marquee.*
acl nicojihou url_regex -i ^http://.*nicovideo.jp/.+rotation.*



さらに、TAG: http_accessを探して以下を追加します。
このとき、他のhttp_access記述がある場所より上に記述しないと設定が無視されることがありますので気をつけてください。
#Default: #http_access deny allとか書かれているすぐ下に入れると良いでしょう。
#Default:
# http_access deny all
#
#ニコニコ時報ブロック
http_access deny nicojihou



これで19時、0時、2時の時報が出ず快適に動画を見ることができるようになりました^^;


時報ブロックにあたり、以下のサイトを参考にさせていただきました。
特設:時報撃滅大作戦 – ニコニコ動画まとめwiki


※この方法を使うと、違法なコンテンツを見たときにキャッシュされるため違法になると考える方もいるかと思いますが、あくまでユーザーはダウンロード保存されたことを知らないため「故意にダウンロード」には当てはまらないと思います。
それに、動画が削除された場合はサーバー管理者でないとデータを取り出せない制約があります。

Squidのエラーメッセージが文字化けする



Fedora12の64ビット版にて、Squid 3.1.0.16-6.fc12でエラーメッセージが文字化けするようです。
ソースファイルは /usr/share/squid/errors以下にありました。

試しにja-jpディレクトリにある適当なファイルをcatしてみます。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta name="generator" content=
"HTML Tidy for FreeBSD (vers 7 December 2008), see www.w3.org">
<meta http-equiv="Content-Type" content=
"text/html; charset=us-ascii">
<title>
&atilde;&sbquo;&uml;&atilde;&fnof;&copy;&atilde;&fnof;&frac14;:
&atilde;&fnof;&ordf;&atilde;&sbquo;&macr;&atilde;&sbquo;&uml;&atilde;&sbquo;&sup1; &atilde;&fnof;&circ;&atilde;&bull;&atilde;&sbquo;&OElig;&atilde;&Yuml;
URL
&atilde;&macr;&aring;&ndash;&aring;&frac34;&mdash;&atilde;&sect;&atilde;&atilde; &frac34;&atilde;&rsaquo;&atilde;&sbquo;&ldquo;&atilde;&sect;&atilde;&mdash;&atilde; &Yuml;</title>

<style type="text/css">
<!--   %l  body :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } :lang(he) { direction: rtl; float: right; }  -->
</style>
</head>
<body>
<div id="titles">
<h1>ERROR</h1>
<h2>The requested URL could not be retrieved</h2>
</div>
<hr>
<div id="content">
<p>The following error was encountered while trying to retrieve the
URL: <a href="%U">%U</a></p>
<blockquote id="error">
<p>
<b>&atilde;&sbquo;&frac12;&atilde;&sbquo;&plusmn;&atilde;&fnof;&fnof;&atilde;&fnof; &circ;&auml;&frac12;&oelig;&aelig;&circ;&atilde;&laquo;&aring;&curren;&plusmn; &aelig;&bull;&mdash;</b></p>
</blockquote>
<p id="sysmsg">
&atilde;&sbquo;&middot;&atilde;&sbquo;&sup1;&atilde;&fnof;&dagger;&atilde;&fnof; &nbsp;&atilde;&OElig;&auml;&raquo;&yen;&auml;&cedil;&lsaquo;&atilde;&reg;&atilde; &sbquo;&uml;&atilde;&fnof;&copy;&atilde;&fnof;&frac14;&atilde;&sbquo; &rsquo;&egrave;&iquest;&rdquo;&atilde;&mdash;&atilde;&frac34;&atilde; &mdash;&atilde;&Yuml;:
<i>%E</i></p>
<p>
&atilde;&Scaron;&atilde;&atilde;&sbquo;&permil;&atilde;&eacute;&#381; &aring;&curren;&sect;&atilde;&ordf;&egrave;&sup2;&nbsp;&egrave;&middot; &atilde;&reg;&atilde;&Yuml;&atilde;&sbquo;&atilde;&euro;Squid&atilde; &macr;TCP&atilde;&sbquo;&frac12;&atilde;&sbquo;&plusmn;&atilde; &fnof;&fnof;&atilde;&fnof;&circ;&atilde;&sbquo;&rsquo;&auml;&frac12; &oelig;&aelig;&circ;&atilde;&sect;&atilde;&atilde;&frac34;&atilde; &rsaquo;&atilde;&sbquo;&ldquo;&atilde;&sect;&atilde;&mdash;&atilde; &Yuml;&atilde;&euro;&sbquo;&aring;&dagger;&aring;&ordm;&brvbar; &atilde;&fnof;&ordf;&atilde;&sbquo;&macr;&atilde;&sbquo;&uml;&atilde; &sbquo;&sup1;&atilde;&fnof;&circ;&atilde;&mdash;&atilde;&brvbar;&atilde; &atilde;&nbsp;&atilde;&bull;&atilde;&bdquo;&atilde;&euro;&sbquo;</p>
<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
<br></div>
<hr>
<div id="footer">
<p>%T&atilde;&laquo;%h
(%s)&atilde;&OElig;&ccedil;&rdquo;&Yuml;&aelig;&circ;&atilde;&mdash;&atilde; &frac34;&atilde;&mdash;&atilde;&Yuml;&atilde;&euro;&sbquo;</p>
<!-- %c --></div>
</body>
</html>



文字化けというか・・・ 言葉にできませんね^^;
ご丁寧に文字化けをHTMLのコードへ変換しちゃってます。。。

古いバージョンからメッセージファイルだけ引っ張ってきて直せますが、プロキシ鯖はローカル向けで、特に問題ないんで修正されるまで待つとしますか。。。


2010.03.03追記
squid-3.1.0.17-3.fc12.x86_64が出ています。
文字化けが解消されるようなのでyum updateしましょう^^;

カテゴリページで<pre>タグが無視される

カテゴリページやアーカイブページで<pre>タグが無視されてしまいソースコードやらがぐちゃぐちゃになりますorz
って方はもとから入っている「WP Multibyte Patch」プラグインを有効にしましょう^^;

Tweetableで短縮URLを使わない方法

Tweetableを使い始めて自動的にTwitterへ投稿されるようになりましたが
どうも短縮URLが気に入らないのです・・・^^;

もともと独自ドメインで短めのURLなので文字数さえ気をつければ短縮しなくてもいいんじゃないかと。。。

そこで短縮URLを使わないような改造をしてみました。
役に立つかわかりませんが、短縮URLが嫌いな方は自己責任で試してみてはいかがでしょうか。


まず以下のようにadmin_menus.phpに380行目を付け加えます。

	<select name="url_shortener" id="url_shortener">
	<option value="is.gd" <?php if ($setting_url_shortener=='is.gd') { echo 'selected="selected"'; } ?>>Is.gd</option>
	<option value="bit.ly" <?php if ($setting_url_shortener=='bit.ly') { echo 'selected="selected"'; } ?>>Bit.ly</option>
	<option value="tr.im" <?php if ($setting_url_shortener=='tr.im') { echo 'selected="selected"'; } ?>>Tr.im</option>
	<option value="su.pr" <?php if ($setting_url_shortener=='su.pr') { echo 'selected="selected"'; } ?>>Su.pr</option>
	<option value="ow.ly" <?php if ($setting_url_shortener=='ow.ly') { echo 'selected="selected"'; } ?>>Ow.ly</option>
	<option value="3.ly" <?php if ($setting_url_shortener=='3.ly') { echo 'selected="selected"'; } ?>>3.ly</option>
	<option value="tinyurl" <?php if ($setting_url_shortener=='tinyurl') { echo 'selected="selected"'; } ?>>TinyURL.com</option>
	<option value="yourls" <?php if ($setting_url_shortener=='yourls') { echo 'selected="selected"'; } ?>>YOURLS</option>
	<option value="none" <?php if ($setting_url_shortener=='none') { echo 'selected="selected"'; } ?>>None</option>
	</select>


次にmh_twitter_class.phpの420行目付近がこのようになっていると思います
	} else {
		$url = "http://is.gd/api.php?longurl={$the_url}";
		$response = $this->send_request($url, 'GET');
	}



420, 423, 424行目を追加し、以下のようにします。
	} elseif ($shortener=="is.gd") {
		$url = "http://is.gd/api.php?longurl={$the_url}";
		$response = $this->send_request($url, 'GET');
	} else {
		$response = $the_url;
	}



設定画面から短縮URL「None」を選択すると、短縮せず投稿されると思います。

※ただし、URLが長い場合はTwitterの文字制限140文字を超えて投稿エラーになる可能性がありますので十分ご注意ください。

WordPressプラグイン「Tweetable」

Tweetableとやらを入れてみたのでテスト。

むむ。。。 なんだかどんどん重くなるorz

WordPressプラグイン「Smart Youtube」

WordPressを入れていろいろとプラグインをいじっています。
今日はSmartYoutubeという、Youtube動画を簡単に貼付けられるプラグインの紹介です。

http://www.youtube.com/watch?v=77u_j3YImdU
このURLの動画を貼りつけてみます。

まず以下のサイトからSmartYoutubeをダウンロードして./wp-content/pluginsフォルダに入れます。
管理画面のプラグインからSmartYoutubeを有効にします。
ここまでは何ら変わらないプラグインの導入方法ですね^^;

あとは普通に記事を書きます。
動画を挿入したい位置に以下のように記述しましょう。
httpv://www.youtube.com/watch?v=77u_j3YImdU
プレビューすると以下のように表示されるはずです。




ちなみに、HD画質のまま貼りつけたい場合やプレイリストも張り付けられるみたいです
    * httpv:// - regular video
    * httpvh:// - high quality
    * httpvhd:// - HD quality
    * httpvp:// - playlist

G-Curvyのテーマのバグ・・・

WordPressを入れたらテーマを変更しなきゃということで、G-Curvyというテーマをインストールしてみました^^;

個人的にはこのテーマ好きですが、どうも横スクロールバーが異常に長いですorz
なんだか気持ち悪いのでソースファイルを覗くと・・・

style.css

#img{
background-image:url(images/img.jpg);
background-repeat:no-repeat;
height:259px;
width:8985px;
margin-top:17px
}



お分かりの通りwidth:8985pxではこうなりますよね~^^;

img.jpgは895pxだったので修正して完了。ただの打ちミスですね。

G-Curvyのダウンロードはこちらです

http://www.wordpressthemesbox.com/2008/01/18/g-curvy-wordpress-theme/

WordPress入れてみた

ってことでテスト投稿。
前はソースコードがぐちゃぐちゃになってたけど、良いプラグインを見つけたので入れてみた。
その名もSyntax Highlighter →http://wppluginsj.sourceforge.jp/syntax-highlighter/

で、早速テストしてみましょう↓

#include <stdio.h>

int main(void){
    printf("Hello World!\r\n");
    return 0;
}



おおお! これは良い!!!
ただコピペすると気に行番号までコピーされるのどうにかなんないですかね。。。

いろいろとプラグイン入れたりテーマ変えたり遊んでみたいと思います^^;
ちなみに古いNucleusのほうはDBがぶっ壊れたため移行する気はありません。。。
このブログのURLも暫定なので変更するかも。