Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Google Code Prettify

ラベル WWW の投稿を表示しています。 すべての投稿を表示
ラベル WWW の投稿を表示しています。 すべての投稿を表示

2008年8月5日

NicoProxy2 と Squid を MacOSX 上で 組み合わせる

最近は元気が無いがニコニコ動画は面白い。Youtube や Veoh に上がってる動画も面白い。

しかし、動画のファイルサイズは HTML/CSS/JavaScript に比べて大きすぎるためか、 キャッシュプロクシとは本当に相性が悪すぎる。Squid でキャッシュ保存するサイズを大きめに取って対処していたのだが、、、どうも気持ちが悪い。

ニコニコ動画限定だが専用のキャッシュサーバ「NicoProxy2」が出てきている。そのうち、動画専用キャッシュサーバがぼこぼこ出て来るんかいなぁ。

なので、Squid と NicoProxy2 を組み合わせてみた。

ユーザは外部サイトを Squid を通してアクセスする状況で、Squid がニコニコ動画の動画リクエストのみNicoProxy2 に委託するのが目的。

NicoProxy2の立ち上げ

手軽に launchd 経由で立ち上げたいので daemondo が含まれる MacPorts を入れてく。

ソースを取ってきて、適当な場所に置く。

# ls -l /opt/local/etc/nicoproxy/
total 24
-rw-r--r--  1 root  admin   321 Aug  5 16:36 conf.yml
-rw-r--r--  1 root  admin  8062 Aug  5 18:58 nicoproxy.rb

もうこの状態で、conf.yml を弄れば、Proxy として機能すると思う。動作確認したら、launchd 用の定義ファイルとラッパースクリプトを書く。

/opt/local/etc/LaunchDaemons/org.macports.nicoproxy/org.macports.nicoproxy.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>Debug</key>
	<false/>
	<key>Label</key>
	<string>org.macports.nicoproxy</string>
	<key>OnDemand</key>
	<false/>
	<key>ProgramArguments</key>
	<array>
		<string>/opt/local/bin/daemondo</string>
		<string>--label=nicoproxy</string>
		<string>--start-cmd</string>
		<string>/opt/local/etc/LaunchDaemons/org.macports.nicoproxy/nicoproxy.wrapper</string>
		<string>start</string>
		<string>;</string>
		<string>--stop-cmd</string>
		<string>/opt/local/etc/LaunchDaemons/org.macports.nicoproxy/nicoproxy.wrapper</string>
		<string>stop</string>
		<string>;</string>
		<string>--restart-cmd</string>
		<string>/opt/local/etc/LaunchDaemons/org.macports.nicoproxy/nicoproxy.wrapper</string>
		<string>restart</string>
		<string>;</string>
		<string>--pid=none</string>
	</array>
	<key>RunAtLoad</key>
	<false/>
</dict>
</plist>

/opt/local/etc/LaunchDaemons/org.macports.nicoproxy/nicoproxy.wrapper

#!/bin/sh

prefix=/opt/local
pidfile=/opt/local/var/run/nicoproxy.pid

Start()
{
	cd /opt/local/etc/nicoproxy
	ruby ./nicoproxy.rb &
	echo $! > $pidfile
}

Stop()
{
	kill `cat $pidfile`
}

Restart()
{
	Stop
	Start
}

Run()
{
case $1 in
  start  ) Start   ;;
  stop   ) Stop    ;;
  restart) Restart ;;
  *      ) echo "$0: unknown argument: $1";;
esac
}

Run $1

launchd に登録すれば、再起動しても自動的に上がってくれる筈?

# launchctl load -w /opt/local/etc/LaunchDaemons/org.macports.nicoproxy/org.macports.nicoproxy.plist
...
# launchctl list | grep nicoproxy    
62595	-	org.macports.nicoproxy
...
# ln -s /opt/local/etc/LaunchDaemons/org.macports.nicoproxy/org.macports.nicoproxy.plist /Library/LaunchDaemons/

まぁ、MacPorts に含まれていないのに、org.macports.XXXX なのは愛嬌ってことで。

Squid と連携する

Squid は、MacPorts のものを入れ、取り敢えず動かせる所まではやっておく。NicoProxy2 連携用に、次の設定を加える。但し、例では NicoProxy2 のポートは 25255に変えてあり、自身のホストがCNAMEとか追加して nicoproxy.example.com で引けるようになっているので、各自の環境に合わせる必要がある。

squid.conf

...
# nico proxy
acl nico url_regex -i ^http://www\.nicovideo\.jp/api/getflv/?
acl nico url_regex -i ^http://.*\.nicovideo\.jp/smile\?
cache_peer nicoproxy.example.com. parent 25255 0 proxy-only no-query
cache_peer_access nicoproxy.example.com. allow nico
never_direct allow nico

まとめ

NicoProxy2はon-the-flyでは転送しないのかぁ。。。

2008年3月16日

MediaWiki から MoinMoin への移行ツール

技術のメモ書き用に、自宅内にMediaWiki を立てているのだが、 イマイチ使い勝手がよく無さげなので、別の Wiki システムを探ってみた。 内部的にUTF-8を使ってて、編集の履歴が見れて、そんなやつが良い。

MoinMoin が結構良さげなので移行してみた。

問題は MediaWiki に書き貯めた文書片を MoinMoin の形式に変換するのは手動では面倒である。

なので、ヘボイ変換ツールでも書いてみた。

ソースコード WikiConverter20080316.zip

blog20080316

MediaWiki の書式で変換できるのは一部のみ(リスト、整形済みテキスト、テーブル)である。うまく行かない場合は、ソースコード内の convert.rb を変更する必要がある。というか、自前で変更しないと使い物にはならないかも。

CUIでは一行スクリプトや書捨てスクリプトがよく作られる。そいつのGUI版と考えれば、書捨てGUIもあっても良いと思う。β版でもα版でもなく、こいつはそんなもんだ。

まぁ、Cocoa / CoreData / WebKit 万歳と言う話かなぁ。

Wiki 書式の変換ライブラリってのはないのかぇ。。。。

2008年3月15日

Safari で REFERER を削除する Javascript

普通のブラウザでリンクを辿ると、前のページのURIが次のページのリクエストにHTTP_REFERER として通知される。 Firefox / IE / Opera などのブラウザは拡張なりを入れれば、設定としてreferer を送らないことが出来る。 また referer を削除するプロクシ経由でアクセスする方法もある。ただ、プロクシとは大げさな気がする。

私が常用している Safari では、ブラウザの設定として、referer を削除する機能はついてない気がする。

だらグル(だらだらGoogleで検索)してたら、良い情報があったので、ちょっと組み立ててみた。

全部のリンクのリファーラを抑制するのでなく、class属性が external になっているリンクのみに限定にしてみた。 ソースをちょっとだけ書き換えればリファーラ抑制の条件は変えられる。

cutreferer.js

...
<script type="text/javascript" src="cutreferer.js"></script>
...
<a href="http://external.link" class="external">外部リンク</a>
...

Safari 2/Firefox 2/ IE6 で動作する。ただし Safari 2 のみブラウザ履歴のリストにゴミが残ってしまう。

Lightbox JS の効果を見て、HTMLソースにものすごい埋め込みとかが必要かと思ったが、属性一つだけなのをみて、ちょっと衝撃的だった、、、ので思いついてみた、、、。

参考

  1. リファラ実験
  2. referrerを空にするリンクの作成方法
  3. REFERRERを消して外部ページに移動する
  4. isMSIE
  5. Lightbox JS

Greasemonkey とか GreaseKit 使えるともっと面白いかも

2007年3月18日

Pukiwiki の整形ルールの説明は正しいのか?

ここ最近、Pukiwiki ベースの文書を変換するRubyスクリプトを書いているが、Pukiwkiの整形ルールの言ってることがイマイチ正しくない。

例えば、インライン要素の一つである行末に~を書いた行末改行の説明には、「次の行の行頭書式は無効になり」とか記述があるが、そんなことは無いとか、、、等々(2007/03現在)。

だれも、本当の Pukiwiki が受け付ける書式の本当の姿は知らないのかぁ、、、。

2007年2月19日

P_BLOG から Typo への移行

最近 Rails を使った Blog システムを自作しようと試みていたのだが、車輪の再発明をしてる気がしてならないので、同様なシステムが無いか調べてみた。

typo がよさげである。

編集途中のプレビューが横にリアルタイムに表示されて、記事の見栄えを確認するために思考を中断しなくても済むのがグッとである。それ以外はあまり癖のないシステムである。

こいつを使うための問題は、P_BLOGで書きためた記事をTypoに移行させる方法である。

コピペとかは勘弁して欲しいので、頭を絞ってみた。

Typo のトップページに、Desktop Clients というページへのリンクがある。こいつを眺めると、どうも最近のBlog事情は、Webインタフェースだけなく、ネーティブな投稿専用アプリがあるらしい。その中心にあるのが、XMLRPC上に定義された BloggerAPI / metaWeblog / MovableTypeAPI / Atom API とかいうプロトコールらしい。

専用アプリは高機能のものもあり、markdown/textileとかのシンプルなフォーマットを、平易に作成出来たりする、、、昔のNifty サーブとかではやった高機能クライアントみたいなものかぁ、、、歴史は巡るのか

すっかり、波に乗り遅れているなぁ〜〜。

プロトコールさえ実装されれば、特定のプログラム言語に依らずに操作できるので、Ruby でちょっとしたスクリプトを書いて、XMLRPC経由での移行をチャレンジしてみた。

  1. P_BLOGXMLRPCモジュールをインストールする。
  2. Typo 4.0.3 をインストールする。
  3. Typo 4.0.3 に含まれている actionpack ではちょっとこけるので修正する(current では修正されている)
  4. 移行プログラムtransition_from_p_blog.rbを走らせる。

これでおしまい、、、XMLRPCを話せると良いことあるなぁ!

2006年8月14日

Firefox で任意の履歴へジャンプする機能!?

日頃 Firefox で使っていてまどろっこしく感じるのは、 右クリックとホイールを組み合わせで前後の履歴メニューがポップアップしてくる機能である。 とにかく、履歴の中のデタラメな位置のページに飛ぶので使い物にならない(多分使い方がおかしいと思うが)。

今日まで、Firefox本体内蔵の機能かと思っていたが、All-In-One Gesturesの一機能であるマウスホイールジェスチャであることが分かった。。。なんと、Firefoxよ罵って悪かった。

有無を言わさず、無効にしたのは言うまでもない。

2006年6月24日

スタイルシートの標準的なこと

CSSを完全理解など遠い未来のこととして、未だにHTML3.2の変種の程度しか理解が進んでいない。なので、スタイルシートばりばりのサイトを見ると、恐怖に戦き、引退に怯える今日この頃。

でも、よさげなページをみっけた。

Mozillaグルー達が「セマンティッククラスの豊富なボキャブラリー」ってやつの定義をまとめてくれている。P_BLOGのCSSはこいつを参考にされているようである。これを使いこなせれば、人並みのCSS生活が送れそうである。

ちょっとはCSSをカスタマイズしてから公開しようかなぁ。 青系にしたい。

久しぶりの投稿

かなり期間が空いてしまったが、ブログを再開してみようと思う。 2013年3月が直前の投稿だったが、頻繁に更新していた時期が 2011年11月までなので、8年間ぶりとなる。 8年間なにをしていたのかと言えば、2回転職して未だにIT技術者の職を得ている。 その...