digital hole

Software developing and otherwise.

Flower

Archive for the ‘オープンソース’ Category

WordPressでソースコード色分け表示

参考:

「iG:Syntax Hiliter」の紹介。
http://jmblog.jp/archives/62

導入

・http://blog.igeek.info/wp-plugins/igsyntax-hiliter/
 → iG_Syntax_Hiliter.zip をダウンロード。

・解凍すると以下のようなファイル階層ができる。

iG-Syntax Hiliter
├COPYING
├GNU GPL.txt
├MANUAL.html
├READ ME.txt
└ig_syntax hiliter plugin
 ├syntax_hilite.php
 └is_syntax_hilite
  ├…
  ├…
  ├…

・syntax_hilite.php と is_syntax_hilite を /wp-content/plugins にアップロード。
・[サイト管理] - [プラグイン] に [iG:Syntax Hiliter] が表示されるようになるので、これを有効化。

使用

[cpp]~[/cpp] を試す。

int a,b;
b=test(a);
if(b){
  printf("Hello\n");
}
while(a<10 && a>1){
    a++; //※←ここのインデントはTABを使ってみてる。
}

[perl]~[/perl] を試す。

#!/usr/bin/perl
print "Hello\n";
if($a){
  exit;
}elsif($b){
  exit;
}else{
  exit;
}

[code]~[/code] を試す。

abc;
> echo "abc"

Boost Regex++

C++ で正規表現が使いたい。Boost Regex++ がよさげ。

boost入手・導入

http://www.boost.org/
boost_1_35_0.zip を入手。D:\boost_1_35_0 として解凍。
VCのインクルードパスに D:\boost_1_35_0 を追加。

regexビルド

boostの多くのモジュールはビルドしなくても使えるが、regexはビルドが必要。

Visual Studio 2005 Professional にて。
スタートメニューの [Visual Studio 2005] - [Visual Studio Tools] - [Visual Studio 2005 コマンド プロンプト] を実行。

> cd D:\boost_1_35_0\libs\regex\build
> nmake -f vc8.mak              (lib作成)
> nmake -f vc8.mak install      (VCディレクトリにlibをコピー)

参考:
http://d.hatena.ne.jp/twhs/20080112

コーディング実験

#include <boost/regex.hpp>
#include <string>
using namespace std;

void test()
{
	//簡単な検索 ("abcdefg" から "abc" の有無を判定)
	printf("-- simple --\n");
	{
		const char* source = "abcdefg"; //検索対象
		boost::reg_expression<char, boost::regex_traits<char> > regex("abc"); //正規表現
		boost::match_results<const char*> results; //結果
		//実行
		bool found = boost::regex_search(source, results, regex);
		printf("found = %d\n", found?1:0);
	}

	//抜き出し ("abcdafc" から "a.c" にマッチするものを検索)
	printf("-- pick up --\n");
	{
		const char* source = "abcdafc"; //検索対象
		boost::reg_expression<char, boost::regex_traits<char> > regex("a.c"); //正規表現
		boost::match_results<const char*> results; //結果
		//実行
		bool found = boost::regex_search(source, results, regex);
		if(found){
			string p = results.str(0);
			printf("found = %s\n", p.c_str());
		}
	}

	//カッコ (カッコ付きの正規表現。複数の結果を取得できる)
	printf("-- brackets --\n");
	{
		const char* source = "abcdafc"; //検索対象
		boost::reg_expression<char, boost::regex_traits<char> > regex("(a.c).*(.f)"); //正規表現
		boost::match_results<const char*> results; //結果
		//実行
		bool found = boost::regex_search(source, results, regex);
		if(found){
			for(int i=0;i<(int)results.size();i++){
				printf("found[%d]: pos = %d, len = %d, str = %s\n",
					i, results.position(i), results.length(i), results.str(i).c_str());
			}
		}
	}
}

参考:
http://www.s34.co.jp/cpptechdoc/article/regexpp/

実用に向けたコーディング

#include <boost/regex.hpp>
#include <string>
#include <vector>
using namespace std;
vector<string> get_match_strings(const char* _source, const char* _regex)
{
	const char* source = _source; //検索対象
	boost::reg_expression<char, boost::regex_traits<char> > regex(_regex); //正規表現
	boost::match_results<const char*> results; //結果
	//実行
	bool found = boost::regex_search(source, results, regex);
	//解釈
	vector<string> ret;
	if(found){
		for(int i=0;i<(int)results.size();i++){
			ret.push_back(results.str(i));
		}
	}
	return ret;
}

上のような関数を用意しておくと便利。ちょっと負荷はかかるけど。
で、下のように使う。

void test2()
{
	//文字列内から「URL全体」と「サーバ名」を抜き出し。 (正規表現は適当)
	vector<string> ret = get_match_strings(
		"abc http://www.google.co.jp/gonyo/ponyo/ def",
		"http://([A-Za-z\\.]+)/[A-Za-z\\./]+"
	);
	for(int i=0;i<(int)ret.size();i++){
		printf("match[%d] = %s\n", i, ret[i].c_str());
	}
}

落とし穴メモ

「#include <boost/regex.hpp>」と書くところを
「#include <boost/regex.h>」と書き間違えてしまった場合↓

error C2039: 'reg_expression' : 'boost' のメンバではありません。
error C2065: 'reg_expression' : 定義されていない識別子です。

ややこしやー。

2ちゃんねるビューア考

数ある2ちゃんねるビューアの情報を開発者視点でちょこちょこまとめ。

参考

http://2ch.tora3.net/viewer.html
http://www.monazilla.org/
http://pc11.2ch.net/test/read.cgi/software/1223087735/

ローカルHTTPプロクシ

□禁断の壷
http://tubo.80.kg/
形式    :ローカルHTTPプロクシ
ソース   :非公開
開発言語  :不明
作者    :マァヴ ◆jxAYUMI09sさん (http://d.hatena.ne.jp/keyword/%A5%DE%A5%A1%A5%F4) (Copyright: 株式会社ゼロ)
最終リリース:2007/07/05

サーバ上アクセサ

□p2
http://akid.s17.xrea.com/
形式    :HTTPサーバ上に配置する2chアクセサ (HTTPプロクシではない)
ソース   :公開 (CVS)
開発言語  :PHP
作者    :Sourceforge.jpメンバー 3人 (主開発: akiさん)
最終リリース:2008/10/08

専用ブラウザ (プラットフォーム非依存)

□Ya2b
http://www.geocities.co.jp/SiliconValley-Sunnyvale/1375/
形式    :ブラウザ
ソース   :公開
開発言語  :C++ (Visual C++ 6.0) / MFC
作者    :?
最終リリース:2004/03/31

□V2C
http://v2c.s50.xrea.com/
形式    :ブラウザ
ソース   :非公開
開発言語  :Java+Swing
作者    :n|aさん
最終リリース:2008/10/01

専用ブラウザ (オープンソース)

□ギコナビ
http://gikonavi.sourceforge.jp/
形式    :ブラウザ
ソース   :公開 (CVS)
開発言語  :Delphi/Kylix
作者    :Sourceforge.jpメンバー 5人 (原作:(ヒ)さん)
最終リリース:2008/09/16

□ホットゾヌ2
http://hp.vector.co.jp/authors/VA036533/
形式    :ブラウザ
ソース   :公開
開発言語  :Delphi 6 (PRO) (+ ギコBASIC)
作者    :Dax ◆6rZonuDqnさん
FAQ 担当  :Zonutanさん
掲示板運営 :(ホットゾヌ板)コッパさん
最終リリース:2008/09/21

□ぎこはにゃ~ん
http://ghanyan.monazilla.org/
形式    :ブラウザ
ソース   :公開 (mona.tar.bz2)
開発言語  :C++
作者    :◆hHhAnYaNVAさん
最終リリース:2007/03/17

□OpenJane
http://sourceforge.jp/projects/jane/
形式    :ブラウザ
ソース   :公開 (CVS)
開発言語  :Delphi/Kylix
作者    :Sourceforge.jpメンバー 10人 (元祖Jane作者=Twiddleさん)
最終リリース:2006/06/17 (CVS最終コミットは 2008/09/22)

□xyzzy 2ch-mode
http://www7a.biglobe.ne.jp/~hat/xyzzy/2ch-mode.html
形式    :ブラウザ
ソース   :公開
開発言語  :LISP (*.l がソース, *.lc がバイトコンパイル済みファイル)
作者    :Masashi Hattoriさん
最終リリース:2006/06/01

※ *.l と *.lc の意味、オープンソースであること、最終リリースの間違いを 1z009aさんからご指摘いただき、記事を修正しました。1z009aさん、ありがとうございます!

専用ブラウザ (ソース非公開)

□A BONE
http://www.a-bone.net/
形式    :ブラウザ
ソース   :見つからない
開発言語  :不明
作者    :委員長さん
最終リリース:2008/10/01

□えまのん
http://www.emanong.net/
形式    :ブラウザ
ソース   :見つからない
開発言語  :不明
作者    :おりびさん
最終リリース:2008/07/28

□Live2ch
http://www8.plala.or.jp/uro/live2ch/
形式    :ブラウザ
ソース   :見つからない
開発言語  :Visual Basic 6.0
作者    :geroimo ◆IbyRa9v5IEさん
最終リリース:2007/07/02

□かちゅ~しゃ
http://members.jcom.home.ne.jp/katjusha/
形式    :ブラウザ
ソース   :公開予定だったが紛失?
開発言語  :不明
作者    :かちゅ~しゃ作者さん
最終リリース:2001/07/14

サービス

□べっかんこ
http://2ch.tora3.net/mobile.html
携帯用2chアクセス提供HTTPサーバ。

WordPress で Google Analytics

Ultimate Google Analytics プラグイン
http://www.oratransplant.nl/uga/

1) ultimate_ga_1.6.0.zip をダウンロード
2) 解凍してできた ultimate_ga_1.6.0 フォルダを wp-content/plugins にアップロード
3) [サイト管理] - [プラグイン] で Ultimate Google Analytics を有効化。
4) [サイト管理] - [設定] - [Ultimate GA] で Account ID を設定する。

その他
・ [サイト管理] - [設定] - [Ultimate GA] で [Advanced configuration] を押すと詳細な設定項目が現れる。
・ [Ignore logged on users] を ON にすると、サイト管理用にログインした状態では Google Analytics で集計されなくなる。要するに、自分のアクセスを集計対象から外せる。(Ultimate GA 1.6.0 ではデフォルトで ON なので、特にいじる必要無し。)

WEB解析に便利なFirefoxアドオン

Firefoxアドオン:

Live HTTP Headers (HTTPリクエストとHTTPレスポンスのヘッダをウォッチ)
https://addons.mozilla.org/ja/firefox/addon/3829

Firebug (ページ要素のいろんなものを解析)
https://addons.mozilla.org/ja/firefox/addon/1843

Web Developer (いろんな機能を簡単にON/OFFしたり、その他いろいろ機能)
https://addons.mozilla.org/ja/firefox/addon/60

UrlParams (GETパラメータ、POSTパラメータを書き換えて再リクエスト)
https://addons.mozilla.org/ja/firefox/addon/1290

Modify Headers (HTTPリクエストヘッダを書き換え)
https://addons.mozilla.org/ja/firefox/addon/967

CookiePie (タブ毎に異なるクッキーを食わせる)
http://www.nektra.com/oss/firefox/extensions/cookiepie/

View Source With (好きなエディタでページのソースを表示)
https://addons.mozilla.org/ja/firefox/addon/394

SwitchProxy Tool (プロクシ簡単切り替え)
https://addons.mozilla.org/ja/firefox/addon/125

 

ローカルプロクシ:

Proxomitron
http://www.pluto.dti.ne.jp/~tengu/proxomitron/

 

関連記事:

サーバーエンジニアが入れておくと便利なFirefoxアドオン7選
http://d.hatena.ne.jp/wadap/20080616/1213580741

WordPressのいろんなテーマを試してみる

ほんとにいろんないろんなテーマがあります。
http://wordpress.org/extend/themes/
http://www.designwalker.com/2008/01/wordpress-themes.html

かっちょいいものを選びたくはあるけれど、それがアーティスティックであればあるほど、それが他のブログと被ったときの (負の) インパクトがデカいわけで。1点物のシャツを買ったつもりが道端で同じシャツの人を見かけてしまったみたいな。

結局のところ個を示すシンボルが欲しければ自分でデザインを作るしかないのですな。当たり前だけど。
つまりはテーマ選びは「顔」を選ぶ作業ではなく「土台」を選ぶ作業なのです。
どちらにしてもテーマ作成者に感謝。

Papyrus
http://skdstudio.com/blog/papyrus-wordpress-theme

今回試してみた Papyrus はあまりにもアーティスティックで、なんつーか、「デザイナーが作った」感がビシビシ伝わってきます。HTMLだとかXHTMLだとか、そういう枠組みに捕らえられてないんですよね。先に目標ありきで、それを実現するための手段としてHTMLやXHTMLがあるに過ぎない。
この思想はまさにトップダウンです。実装ばかりに目の向いてしまう開発者にはこういうスタイルを吸収してほしいなぁ、と思ったり。

WordPressでWiki記法

調べ中…
・wpWikka → 日本語が通らない
・wp-dokuwiki → 日本語通る
・WP-MediaWiki → 未調査

WordPressテーマを変更してみる

wp.Vicunaテーマ

1) http://wp.vicuna.jp/
→ wpVicuna-utf8.zip をダウンロード。

2) 解凍してできた wp.vicuna を /wp-content/themes/ にアップロード。

3) WordPressの管理メニュー - デザイン から wp.vicuna を選択。

wp.Vicuna - smartCanvasスキン

1) http://wp.vicuna.jp/skin/
→ style-smartCanvas.zip をダウンロード。

2) 解凍してできた style-smartCanvas を /wp-content/themes/wp.vicuna/ にアップロード。

3) /wp-content/themes/wp.vicuna/style.css を編集
→ 「@import url("style-smartCanvas/0-import.css");」

wp.Vicuna - smartCanvasスキン - townサブスキン

1) /wp-content/themes/wp.vicuna/style-smartCanvas を別名で複製。
→ /wp-content/themes/wp.vicuna/style-smartCanvas-town

2) http://wp.vicuna.jp/skin/
→ town.zip をダウンロード。

3) 解凍してできた mod_subSkin を /wp-content/themes/wp.vicuna/style-smartCanvas-town/module/mod_subSkin に上書きアップロード。

4) /wp-content/themes/wp.vicuna/style.css を編集
→ 「@import url("style-smartCanvas-town/0-import.css");」

WordPressプラグイン

Auto-hyperlink URLS

1) http://coffee2code.com/wp-plugins/auto-hyperlink-urls/
→ autohyperlink-urls.zip をダウンロード。

2) 解凍してできた autohyperlink-urls を /wp-content/plugins/ にアップロード。

3) WordPressの管理メニューから Auto-hyperlink URLS を有効化。

Auto-hyperlink URLS カスタマイズ

Version3.0 autohyperlink-urls.php(327行目)
「autohyperlink_truncate_link(\"$4\", ...)」 → 「autohyperlink_truncate_link(\"$2\", ...)」

WordPress をインストールしたら最初に入れる10のプラグイン

http://plasticdreams.org/archives/2006/06/24/1260/first-install-10-plugins/