2010年12月13日月曜日

RedmineのWiki上でHTMLタグを使えるようにする

テーブル内で改行したい!

と探し回っていると,こんなサイトを発見。www.sakuttoly.com - Redmineのwikiで制限されているHTMLタグを利用可能にする さっそく真似してみる。

さぎょうさぎょう

${REDMINE_HOME}/lib/redcloth3.rb
のファイルの最後あたり,
ALLOWED_TAGS = %w(redpre pre code notextile)
をかえる。


--- redcloth3.rb.org 2010-11-28 21:48:49.000000000 +0900
+++ redcloth3.rb 2010-12-13 11:53:53.000000000 +0900
@@ -1184,7 +1184,7 @@
end
end

- ALLOWED_TAGS = %w(redpre pre code notextile)
+ ALLOWED_TAGS = %w(redpre pre code notextile br)

def escape_html_tags(text)
text.gsub!(%r{<(\/?([!\w]+)[^<>\n]*)(>?)}) {|m| ALLOWED_TAGS.include?($2) ? "<#{$1}#{$3}" : "<#{$1}#{'>' unless $3.blank?}" }

2010年11月18日木曜日

Twitter のサイドバーを透過に

やるたびに探し回るので

コードを貼っておく。
javascript:d=document;c=d.createElement('script');d.body.appendChild(c);c.src='http%3A%2F%2Fwww.justinparks.com%2Ftwitter%2Ftwitter-sidebar.js';void(0);

2010年11月4日木曜日

Tumblrに「ここまで読んだ」

未読管理

「ここまで読んだ」がすごく便利なのだけれども,どうせなら栞を置いた日時があったほうが便利でね?って作ってたんだけどかなり悪戦苦闘……。

コード

で,コード。
javascript:(function(){var r=new XMLHttpRequest(),u="http://www.tumblr.com/new/text",n=new Date(),wr="["+n.getFullYear()+"/"+("0"+(n.getMonth()+1)).slice(-2)+"/"+("0"+n.getDate()).slice(-2)+" "+("0"+n.getHours()).slice(-2)+":"+("0"+n.getMinutes()).slice(-2)+":"+("0"+n.getSeconds()).slice(-2)+"] ここまで読んだ";r.open("GET",u,false);r.send(null);var k=r.responseText.match(/name="form_key" value="([^"]+)"/m)[1];r.open("POST",u,false);r.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");r.send('post[one]='+wr+'&post[is_private]=1&form_key='+k);location.reload();})()

iPhoneを接続するといってくるアレを消す

買い換えたの~♡

というわけで,前回どうやって消したのか憶えていないので,ググった結果をメモ

  1. マイ コンピュータ を開く
  2. スキャナとカメラ にある Applie iPhone を右クリック → プロパティ
  3. イベント タブの 動作 を 「何もしない」 にする

2010年10月28日木曜日

DvorakJの設定

設定ファイル

をこんな感じに作ったので上げとくの。

まずはASCII

同時に打鍵する配列

[
1|2|3|4|5|6|7|8|9|0|-|=|{BS}|
q|w|e|r|t|y|u|i|o|p|[|]|
a|s|d|f|g|h|j|k|l|;|'|\|
z|x|c|v|b|n|m|,|.|/|`|
]

-shift[
{!}|@ |{#}|$ |% |{^}|{&}|* |( |) |_ |{+}|{BS}|
Q |W |E |R |T |Y |U |I |O |P |{{}|{}}|
A |S |D |F |G |H |J |K |L |: |" |@@@|
Z |X |C |V |B |N |M |< |> |? |~ |
]

つぎにNICOLA。変換キーとSpaceキーをChangeKeyで入れ替えてるから,左親指キーが変換キー,右親指キーがSpaceキーになってるの。

同時に打鍵する配列

/* 文字キーを単独で入力 */
[
1|2|3|4|5|6|7|8|9|0|-|=|{BS}|
。|か|た|こ|さ|ら|ち|く|つ|,|、|゛|
う|し|て|け|せ|は|と|き|い|ん|{BS}|{Esc}|
.|ひ|す|ふ|へ|め|そ|ね|ほ|・| |
]

/* [変換] + 文字キー */
-henkan[
?|/|~|「|」|[|]|(|)| | | |{BS}|
ぁ|え|り|ゃ|れ|ぱ|ぢ|ぐ|づ|ぴ|゛|゜|
を|あ|な|ゅ|も|ば|ど|ぎ|ぽ| |{BS}|{Esc}|
ぅ|ー|ろ|や|ぃ|ぷ|ぞ|ぺ|ぼ| | |
{変換}|
]

/* [Space] + 文字キー */
-space[
?|/|~|「|」|[|]|(|)| | | |{BS}|
|が|だ|ご|ざ|よ|に|る|ま|ぇ|゛|゜|
ヴ|じ|で|げ|ぜ|み|お|の|ょ|っ|{BS}|{Esc}|
|び|ず|ぶ|べ|ぬ|ゆ|む|わ|ぉ| |
{space}|
]

/* [shift] + 文字キー */
-shift[
!|@|#|$|%|^|&|*|(|)|_|+|{BS}|
Q|W|E|R|T|Y|U|I|O|P|{|}|
A|S|D|F|G|H|J|K|L|:|”|||
Z|X|C|V|B|N|M|<|>|?| |
]

日本語キーボードを ASCII 配列で使っていたのをもとにもどす

ことのおこり

そろそろ親指ひゅんQもだめなのかなぁ,ということで,DvorakJに移行することに。で,ここの話なんだけど,変更後のパラメータは書いたけど変更前のパラメータが書いて無くって使えないったら……。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters

  • LayerDriver JPN : kbd106.dll
  • OverrideKeyboardIdentifier : PCAT_106KEY
  • OverrideKeyboardSubtype : (2)
  • OverrideKeyboardType : (7)

あとここ。(VisualStudioとか向けだったはず)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000411

  • Layout File : KBDJPN.DLL

2010年9月29日水曜日

Redmineをインストールしたい! その11

マイグレーション

の前に,database.ymlとかemail.ymlとか書いたり,MySQLにユーザ作ったり…。 そうそう,ユーザ,@127.0.0.1 はダメで,@localhost でないといけないのかも。

そして,

$ sudo rake config/initializers/session_store.rb
(in /var/www/redmine-1.0.1)
$ sudo rake db:migrate RAILS_ENV=production
(in /var/www/redmine-1.0.1)
== Setup: migrating ==========================================================
-- create_table("attachments", {:force=>true})
 :
== EnableCalendarAndGanttModulesWhereAppropriate: migrated (0.0057s) =========

ここまでの確認

WEBrickで動くことを確認しておく。

$ sudo script/server -e production
ブラウザで,example.com:3000 でつながったらオッケー

Putty で Ctrl-s して困ったら Ctrl-q なんだけど,問題の根源をやっつけるには

フロー制御

というものらしいの。で,
$ stty stop undef
とか,
$ stty -ixon
すればいいらしいの

いまの状況はこう。

$ stty -a
speed 38400 baud; rows 72; columns 96; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = ; eol2 = ;
swtch = ; start = ^Q; stop = ; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V;
flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl -ixon -ixoff -iuclc -ixany
-imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke
なのに,
(i-search)`':
で固まっちゃうのはなんでなのかな?かな??

Redmineをインストールしたい! その10まできてしまったよ

今回の方針

まずは方針を

  1. rubyやrailsを,lenny-backportsからインストール。
    MySQLを使うから,libmysql-rubyもインストール。
    このときついでにgemもインストールされる。
  2. redmineはダウンロードしてくる。
  3. マイグレーション時にrackがないといわれるので,これだけgemでインストール
でよくないかなぁ。

いんすとーる

$ sudo aptitude -t lenny-backports install ruby rails rails-ruby1.8 libmysql-ruby
redmineはもうずっと前から展開してある。

$ sudo gem install rack -v='1.0.1' Successfully installed rack-1.0.1 1 gem installed Installing ri documentation for rack-1.0.1... Installing RDoc documentation for rack-1.0.1... $ gem list *** LOCAL GEMS *** rack (1.0.1)
gemを使うのはここだけにしたいなぁ…。

2010年9月27日月曜日

Redmineをインストールしたい! その9

いんすとーる!

なにはともあれインストールしてみることにしましょう。

$ sudo aptitude install redmine redmine-mysql

途中でいろいろ訊かれるけど,パッケージのredmineは使わないのでてけとー。


けつろん

これでもマイグレーション時にrackがないと言われる…

Redmineをインストールしたい! その8まで来てしまっての決意

初心に戻る!

このあたり。

squeezeなら…

初心に戻った時間は3時間ほどでした……。

squeezeのRedmineパッケージのインストールを試してみればいいんではないかな!という訳で,テスト環境でゴー!

apt/sources.list

squeezeを追加。

apt/preferences

すでに設定済みだった。これでいいのかな??

Package: *
Pin: release a=testing
Pin-Priority: 105

Package: *
Pin: release a=testing-proposed-updates
Pin-Priority: 110

Package: *
Pin: release a=unstable
Pin-Priority: 90

ごー(シミュレーション)

$ sudo aptitude install redmine -s
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
拡張状態情報を読み込んでいます
パッケージの状態を初期化しています... 完了
タスクの記述を読み込んでいます... 完了
以下のパッケージは依存関係が壊れています:
redmine
以下の新規パッケージがインストールされます:
dbconfig-common{a} libactionmailer-ruby{a} libactionmailer-ruby1.8{a}
libactionpack-ruby{a} libactionpack-ruby1.8{a} libactiveresource-ruby{a}
libactiveresource-ruby1.8{a} libdbd-sqlite3-ruby{a} libdbd-sqlite3-ruby1.8{a}
libdbi-ruby1.8{a} libruby1.8{a} libsqlite3-ruby1.8{a} libtext-format-ruby1.8{a}
libtmail-ruby1.8{a} redmine-sqlite{a} ruby{a} ruby1.8{a}
更新: 0 個、新規インストール: 18 個、削除: 0 個、保留: 0 個。
アーカイブ 4765kB 中 2675kB を取得する必要があります。展開後に 23.4MB のディスク領域が新たに消費されます。
以下のパッケージには満たされていない依存関係があります:
redmine: 依存: rails (>= 2.3.5) [インストール不能です]
依存: libactivesupport-ruby (>= 2.3.5) [インストール不能です]
依存: libjs-scriptaculous (>= 1.8.2) [インストール不能です]
以下のアクションでこれらの依存関係の問題は解決されます:

以下のパッケージをインストールする:
libactiverecord-ruby1.8 [2.3.5-1.1 (testing)]
libactivesupport-ruby [2.3.5-1.1 (testing)]
libactivesupport-ruby1.8 [2.3.5-1.1 (testing)]
libbreakpoint-ruby1.8 [0.5.1-2 (stable, testing)]
libbuilder-ruby1.8 [2.1.2-1 (stable)]
libcmdparse2-ruby1.8 [2.0.2-2 (stable, testing)]
libdaemons-ruby1.8 [1.0.10-2 (stable, testing)]
libi18n-ruby1.8 [0.4.1-1 (testing)]
libjs-jquery [1.2.6-2 (stable)]
libjs-scriptaculous [1.8.3-1 (testing)]
liblog4r-ruby1.8 [1.0.5-7 (stable)]
libmemcache-client-ruby1.8 [1.7.8-2 (testing)]
libmmap-ruby1.8 [0.2.6-3 (stable, testing)]
libmocha-ruby1.8 [0.9.0-1 (stable)]
libncurses-ruby1.8 [1.1-3 (stable)]
librack-ruby [1.1.0-4 (testing)]
librack-ruby1.8 [1.1.0-4 (testing)]
libredcloth-ruby1.8 [3.0.99.0.svn.20060519-1 (stable)]
libruby1.8 [1.8.7.302-2 (testing)]
libruby1.8-extras [0.5 (stable, testing)]
libtzinfo-ruby1.8 [0.3.19-1 (testing)]
rails [2.3.5-1.1 (testing)]
rails-ruby1.8 [2.3.5-1.1 (testing)]
rake [0.8.7-2 (testing)]
ruby1.8 [1.8.7.302-2 (testing)]
rubygems1.8 [1.2.0-3 (stable, now)]
zip [2.32-1 (stable)]

以下のパッケージを更新する:
libncurses5 [5.7+20081213-1 (stable, now) -> 5.7+20100313-3 (testing)]
libssl-dev [0.9.8g-15+lenny8 (stable, stable, now) -> 0.9.8o-2 (testing)]
libssl0.9.8 [0.9.8g-15+lenny8 (stable, stable, now) -> 0.9.8o-2 (testing)]

スコアは -371 です

この解決方法を受け入れますか? [Y/n/q/?]

以下の新規パッケージがインストールされます:
dbconfig-common{a} libactionmailer-ruby{a} libactionmailer-ruby1.8{a}
libactionpack-ruby{a} libactionpack-ruby1.8{a} libactiverecord-ruby1.8{a}
libactiveresource-ruby{a} libactiveresource-ruby1.8{a} libactivesupport-ruby{a}
libactivesupport-ruby1.8{a} libbreakpoint-ruby1.8{a} libbuilder-ruby1.8{a}
libcmdparse2-ruby1.8{a} libdaemons-ruby1.8{a} libdbd-sqlite3-ruby{a}
libdbd-sqlite3-ruby1.8{a} libdbi-ruby1.8{a} libi18n-ruby1.8{a} libjs-jquery{a}
libjs-scriptaculous{a} liblog4r-ruby1.8{a} libmemcache-client-ruby1.8{a}
libmmap-ruby1.8{a} libmocha-ruby1.8{a} libncurses-ruby1.8{a} librack-ruby{a}
librack-ruby1.8{a} libredcloth-ruby1.8{a} libruby1.8{a} libruby1.8-extras{a}
libsqlite3-ruby1.8{a} libtext-format-ruby1.8{a} libtmail-ruby1.8{a}
libtzinfo-ruby1.8{a} rails{a} rails-ruby1.8{a} rake{a} redmine redmine-sqlite{a}
ruby{a} ruby1.8{a} rubygems1.8{a} zip{a}
以下のパッケージが更新されます:
libncurses5 libssl-dev libssl0.9.8
更新: 3 個、新規インストール: 43 個、削除: 0 個、保留: 0 個。
アーカイブ 11.1MB 中 10.4MB を取得する必要があります。展開後に 42.7MB のディスク領域が新たに消費されます。
先に進みますか? [Y/n/?]

2010年9月24日金曜日

Redmineをインストールしたい! その7なんだけど

まいぐれーしょん!

実行!
$ sudo rake config/initializers/session_store.rb
$ sudo rake db:migrate RAILS_ENV=production

rake aborted!
Could not find RubyGem rack (~> 1.0.1)
……あれ?

Redmineをインストールしたい! その6

設定!

Redmine 1.0.1 リリース | Redmine.JP Blog によると Redmine 0.9のインストール手順 | Redmine.JP Blog と同じでいいんだって。

MySQL

/etc/mysql/conf.d にこんなファイルたちを放っておいた。

utf8.cnf
[mysqld]
default-character-set = utf8

[mysqld_safe]
default-character-set = utf8

[mysql]
default-character-set = utf8

データベースを作ったり。MySQL の root のパスワードはすでに変更済みなの。
$ mysql -u root -p
Enter password:
mysql> create database redmine charset = utf8;
mysql> grant all privileges on redmine.* to userRedmine@'127.0.0.1' identified by 'p*a*s*s*w*o*r*d';
mysql> exit;

config/***.yml

config/database.yml.example をコピーして config/database.yml を作成。
production: を変更。
production:
adapter: mysql
database: redmine
host: localhost
username: userRedmine
password: p*a*s*s*w*o*r*d
encoding: utf8

config/email.yml.example をコピーして config/email.yml を作成。
# === Simple SMTP server at localhost のあたりを変更。
production:
delivery_method: :smtp
smtp_settings:
address: "localhost"
port: 25

2010年9月21日火曜日

Redmineをインストールしたい! その5かな?

初心を思い出す

ってどこにも初心は書いていないけれど,
  1. ruby,gem は Debianパッケージからインストールする
  2. rails は gem を使ってインストールする
  3. redmine はソースをダウンロードしてくる
だったのが,
  1. rails は Debianパッケージ(backports)からインストールする
  2. redmine も Debianパッケージ(backports)からインストールする
となって喜んでいたけど,
  1. redmine はやっぱりソースをダウンロードしてくる
に戻っただけの事。

2010年9月14日火曜日

Redmineをインストールしたい! その4くらい

とにかくいれてみる

えいやってインストールしてみましょ。
$ sudo aptitude -t lenny-backports install redmine
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
拡張状態情報を読み込んでいます
パッケージの状態を初期化しています... 完了
タスクの記述を読み込んでいます... 完了
以下のパッケージは依存関係が壊れています:
redmine
以下の新規パッケージがインストールされます:
dbconfig-common{a} libapache2-mod-passenger{a} libdbd-sqlite3-ruby{a}
libdbd-sqlite3-ruby1.8{a} libdbi-ruby1.8{a} libfcgi-ruby1.8{a} libjs-scriptaculous{a}
libsqlite3-ruby1.8{a} redmine-sqlite{a} rubygems{a}
更新: 0 個、新規インストール: 11 個、削除: 0 個、保留: 52 個。
アーカイブ 2648kB 中 2600kB を取得する必要があります。展開後に 16.3MB のディスク領域が新たに消費されます。
以下のパッケージには満たされていない依存関係があります:
redmine: 依存: rails (< 2.3) [2.3.5-1~bpo50+1 が既にインストール済みです]
以下のアクションでこれらの依存関係の問題は解決されます:

以下のパッケージを現在のバージョンに一時固定する:
redmine [インストールされていません]

スコアは -9879 です

この解決方法を受け入れますか? [Y/n/q/?]

SQLiteぢゃなくてMySQL使うから redmine-mysql を明示的に入れなきゃな~,ってそれよりなんか変なこと言ってる?rails (< 2.3) ってせっかくbackports使って 2.3.5入れたのに嫌がらせですか……?

落ち着いて状況調査

パッケージ: redmine (0.9.4-2~bpo50+1) [backports] によると,
  • 依存
    • rails (<< 2.3)
    • rails (>= 2.2.3)
で,肝心のrailsは,
…どないしろと?

Redmineをインストールしたい! その3くらい

過去の遺産

gemでインストールした残骸発見。

$ gem search

*** LOCAL GEMS ***

actionmailer (2.3.4)
actionpack (2.3.4)
activerecord (2.3.4)
activeresource (2.3.4)
activesupport (2.3.4)
builder (2.1.2)
camping (1.5.180)
cgi_multipart_eof_fix (2.5.0)
daemons (1.0.10)
eventmachine (0.12.8)
fastthread (1.0.7)
fcgi (0.8.7)
gem_plugin (0.2.3)
markaby (0.5)
memcache-client (1.7.5)
metaid (1.0)
mongrel (1.1.5)
rack (1.0.0)
rails (2.3.4)
rake (0.8.7)
ruby-openid (2.0.4)
test-spec (0.10.0)
thin (1.2.4)
# gem uninstall でざくざくリムーブしておく。

backportsのRedmineって…

Redmineごとbackportsにあるというので調べてみると……
え゛~。

2010年9月1日水曜日

Redmineをインストールしたい! その2

lenny-backports を使おう

$ sudo aptitude updateしても大丈夫。そして,
$ aptitude show rails
パッケージ: rails
状態: インストールされていません
バージョン: 2.1.0-7
 :
依存: ruby, ruby1.8 (>= 1.8.2-3), rake (> 0.7.0), rdoc (> 1.8.2), libsqlite3-ruby1.8 |
libpgsql-ruby1.8 | libmysql-ruby1.8 | libdbi-ruby1.8, libredcloth-ruby1.8, liberb-ruby,
libruby1.8-extras, libjs-prototype, libxml-simple-ruby (> 1.0.11), libbuilder-ruby1.8 (>
2.1.2)
 :
$ aptitude -t lenny-backports show rails
パッケージ: rails
状態: インストールされていません
バージョン: 2.3.5-1~bpo50+1
 :
依存: rails-ruby1.8
 :
ふむ。…rails-ruby1.8とな?
$ aptitude -t lenny-backports show rails-ruby1.8
パッケージ: rails-ruby1.8
状態: インストールされていません
バージョン: 2.3.5-1~bpo50+1
 :
依存: ruby1.8 (>= 1.8.2-3), rake (> 0.8.3), ruby1.8 (>= 1.8.7.249-3) | rdoc1.8 (> 1.8.2),
libredcloth-ruby1.8, liberb-ruby1.8, libruby1.8-extras, libjs-prototype,
libbuilder-ruby1.8 (> 2.1.2), rubygems1.8, libtext-format-ruby1.8 (> 0.6.3),
libtmail-ruby1.8 (> 1.2.3), libactiverecord-ruby1.8 (= 2.3.5-1~bpo50+1)
 :
ええと,ruby1.8 (>= 1.8.7.249-3) | rdoc1.8 (> 1.8.2)ねぇ…。
$ aptitude -t lenny-backports show ruby1.8
"ruby1.8" パッケージのアーカイブ "lenny-backports" が見つかりません
パッケージ: ruby1.8
状態: インストールされていません
バージョン: 1.8.7.72-3lenny1
 :

Railsのインストール

データベースをMySQLにするので,libmysql-rubyもインストール。(libsqlite3-rubyがインストールされないので,何かのサンプルを触るときに注意)

$ sudo aptitude -t lenny-backports install rails-ruby1.8 rails libmysql-ruby1.8
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
拡張状態情報を読み込んでいます
パッケージの状態を初期化しています... 完了
タスクの記述を読み込んでいます... 完了
以下の新規パッケージがインストールされます:
irb1.8{a} libactiverecord-ruby1.8{a} libactivesupport-ruby1.8{a} libbreakpoint-ruby1.8{a}
libbuilder-ruby1.8{a} libcmdparse2-ruby1.8{a} libdaemons-ruby1.8{a} libi18n-ruby1.8{a}
libjs-prototype{a} liblog4r-ruby1.8{a} libmemcache-client-ruby1.8{a} libmmap-ruby1.8{a}
libmocha-ruby1.8{a} libmysql-ruby1.8 libncurses-ruby1.8{a} libopenssl-ruby1.8{a}
librack-ruby{a} librack-ruby1.8{a} libreadline-ruby1.8{a} libredcloth-ruby1.8{a}
libruby1.8{a} libruby1.8-extras{a} libtext-format-ruby1.8{a} libtmail-ruby1.8{a}
libtzinfo-ruby1.8{a} rails rails-ruby1.8 rake{a} rdoc1.8{a} ruby{a} ruby1.8{a}
rubygems1.8{a} zip{a}
更新: 0 個、新規インストール: 33 個、削除: 0 個、保留: 57 個。
 :

2010年8月31日火曜日

Redmineをインストールしたい! その1

…と何度となくやっているため,もうどのパッケージが必要でインストールしたものなのか訳わかめ。参考リンク:Debian GNU/Linux LennyへのRails 2.0導入メモ - 発声練習
で,だ。なぜかrubygemsもインストールされている訳で,この時点で上記リンクと状況は異なっている……
で,もう少し調べてると,こんなところ:全自動ねじまき機: Debian lenny + apache2 でredmineを動かす その1があったり。lennyならばRailsもaptitudeで大丈夫??
rubyパッケージっぽいものをpurgeしてから,作業開始。

Backportsの設定

railsのバージョンが,
lennylenny-backportssqueeze
2.1.0-72.3.5-1~bpo50+12.3.5-1
とのことなので,backportsからインストールしてみましょう。

apt/sources.list の設定

以下を追加
deb http://www.jp.backports.org lenny-backports main

apt/preference の設定

以下を追加
Package: *
Pin: release a=lenny-backports
Pin-Priority: 200
で,最初に$ sudo aptitude updateすると,
W: GPG error: http://www.jp.backports.org lenny-backports Release: 公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY EA8E8B2116BA136C
W: これらの問題を解決するためには apt-get update を実行する必要があるかもしれません
などといわれるので,debian-backports-keyringをインストールする。
$ sudo aptitude install debian-backports-keyring
 :

警告: 以下のパッケージは信頼できないバージョンがインストールされます!

信頼できないパッケージはシステムのセキュリティを危うくする可能性があります。
自分がこのインストールを望んでいると確信できる場合のみ、インストールを先に進め
てください。

debian-backports-keyring

この警告を無視して意地でも先に進みますか?
先に進む場合は "Yes" を、中断する場合は "No" を、入力してください:
…恐ろしいことをおっしゃる。まあインストールせなならんのでYes。
今日はここまで。

2010年8月23日月曜日

Access:テキストファイルへのエクスポート

なんで「地域と言語のオプション」コントロールパネルになんぞ依存しているの? 爆発!

2010年8月9日月曜日

DokuWiki-2009-12-25c その3

あっぷでーと

件のメッセージはconf/msgが更新されれば変わるはず……。かわらへん。なんで?

お使いの DokuWiki をアップグレードして conf/msg ファイル内の数字が大きくなった場合でも、なおアップデートのお知らせが表示され続けることがあります。これは DokuWiki のキャッシュによるものです。DokuWiki は取得したアップデートのお知らせをキャッシュしますが、お知らせの再取得は、前回の取得から 1 日経過した場合とキャッシュの更新日時よりも conf/msg ファイルの更新日時のほうが新しい場合だけしか行われない仕組みとなっています。古いアップデートのお知らせを表示させなくするには、単純に 1 日待つか、conf/msg ファイルの更新日時を touch コマンド1)などで変更するか、もしくは data/cache/messages.txt ファイルを削除するようにしてください。
というわけで,ここにちゃんと書いてあった。 data/cache/message.txtを削除したらちゃんと消えました。

DokuWiki-2009-12-25c その2

indexer.php(2009-12-25)

12-25版。mecabのために手を入れてた部分は関係なさそう。

--- indexer.2009-02-14.php 2010-08-09 14:36:23.000000000 +0900 +++ indexer.2009-12-25.php 2010-08-09 14:36:40.000000000 +0900 @@ -74,7 +74,7 @@ fwrite($fh,$line); } fclose($fh); - if($conf['fperm']) chmod($fn.'.tmp', $conf['fperm']); + if(isset($conf['fperm'])) chmod($fn.'.tmp', $conf['fperm']); io_rename($fn.'.tmp', $fn.'.idx'); return true; } @@ -574,12 +574,16 @@ // merge found pages into final result array $final = array(); - foreach(array_keys($result) as $word){ + foreach($result as $word => $res){ $final[$word] = array(); - foreach($result[$word] as $wid){ + foreach($res as $wid){ $hits = &$docs[$wid]; foreach ($hits as $hitkey => $hitcnt) { - $final[$word][$hitkey] = $hitcnt + $final[$word][$hitkey]; + if (!isset($final[$word][$hitkey])) { + $final[$word][$hitkey] = $hitcnt; + } else { + $final[$word][$hitkey] += $hitcnt; + } } } } @@ -664,7 +668,9 @@ if (empty($page_idx)) return; $pagewords = array(); $len = count($page_idx); - for ($n=0;$n<$len;$n++) $pagewords[] = array(); + for ($n=0;$n<$len;$n++){ + $pagewords[] = array(); + } unset($page_idx); $n=0;

indexer.php(2009-12-25mecab対応)

--- indexer.2009-12-25.php 2010-08-09 15:03:07.000000000 +0900 +++ indexer.2009-12-25.mod.php 2010-08-09 15:13:33.000000000 +0900 @@ -45,6 +45,8 @@ ']?'); define('IDX_ASIAN', '(?:'.IDX_ASIAN1.'|'.IDX_ASIAN2.'|'.IDX_ASIAN3.')'); +define('PRE_TOKENIZER', '/usr/bin/mecab -O wakati'); + /** * Measure the length of a string. * Differs from strlen in handling of asian characters. @@ -52,11 +54,16 @@ * @author Tom N Harris <tnharris@whoopdedo.org> */ function wordlen($w){ - $l = strlen($w); + //$l = strlen($w); + $l = utf8_strlen($w); + + /* // If left alone, all chinese "words" will get put into w3.idx // So the "length" of a "word" is faked if(preg_match('/'.IDX_ASIAN2.'/u',$w)) $l += ord($w) - 0xE1; // Lead bytes from 0xE2-0xEF + */ + return $l; } @@ -220,6 +227,28 @@ list($page,$body) = $data; + if(function_exists(proc_open) && defined('PRE_TOKENIZER')) { + $dspec = array( + 0 => array("pipe", "r"), + 1 => array("pipe", "w"), + 2 => array("file", "/dev/null", "w") + ); + $process = proc_open(PRE_TOKENIZER, $dspec, $pipes); + if(is_resource($process)) { + stream_set_blocking($pipes[0], FALSE); + stream_set_blocking($pipes[1], FALSE); + fwrite($pipes[0], $body . "\n"); + fclose($pipes[0]); + + $body = ''; + while(!feof($pipes[1])) { + $body .= fgets($pipes[1], 32768); + } + fclose($pipes[1]); + proc_close($process); + } + } + $body = strtr($body, "\r\n\t", ' '); $tokens = explode(' ', $body); $tokens = array_count_values($tokens); // count the frequency of each token @@ -489,7 +518,8 @@ $wild |= 2; $wlen -= 1; } - if ($wlen < IDX_MINWORDLENGTH && $wild == 0 && !is_numeric($xword)) continue; + //if ($wlen < IDX_MINWORDLENGTH && $wild == 0 && !is_numeric($xword)) continue; + if (preg_match('/[^0-9A-Za-z]/u', $string) && $wlen < IDX_MINWORDLENGTH && $wild == 0 && !is_numeric($xword)) continue; if(!isset($tokens[$xword])){ $tokenlength[$wlen][] = $xword; } @@ -632,12 +662,36 @@ */ function idx_tokenizer($string,&$stopwords,$wc=false){ $words = array(); + + if(function_exists(proc_open) && defined('PRE_TOKENIZER')) { + $dspec = array( + 0 => array("pipe", "r"), + 1 => array("pipe", "w"), + 2 => array("file", "/dev/null", "w") + ); + $process = proc_open(PRE_TOKENIZER, $dspec, $pipes); + if(is_resource($process)) { + stream_set_blocking($pipes[0], FALSE); + stream_set_blocking($pipes[1], FALSE); + fwrite($pipes[0], $string . "\n"); + fclose($pipes[0]); + $string = ''; + while(!feof($pipes[1])) { + $string .= fgets($pipes[1], 32768); + } + fclose($pipes[1]); + proc_close($process); + } + } + $wc = ($wc) ? '' : $wc = '\*'; if(preg_match('/[^0-9A-Za-z]/u', $string)){ + /* // handle asian chars as single words (may fail on older PHP version) $asia = @preg_replace('/('.IDX_ASIAN.')/u',' \1 ',$string); if(!is_null($asia)) $string = $asia; //recover from regexp failure + */ $arr = explode(' ', utf8_stripspecials($string,' ','\._\-:'.$wc)); foreach ($arr as $w) {

つづく

DokuWiki-2009-12-25c その1

ことのおこり

これがそろそろうざったいのでDokuWikiをバージョンアップしようかなと思い立つ。

現在使用中はdokuwiki-2009-02-14b。あいだにdokuwiki-2009-12-02ってのがあったらしい。すんなりいけばいいな

indexer.php(2009-02-14mecab対応)

2009-02-14のときに手を入れた部分(02-14bは数ファイルのみの更新だった)

--- indexer.php.org 2009-02-14 21:13:24.000000000 +0900 +++ indexer.php.mod 2009-04-23 16:17:13.000000000 +0900 @@ -45,6 +45,8 @@ ']?'); define('IDX_ASIAN', '(?:'.IDX_ASIAN1.'|'.IDX_ASIAN2.'|'.IDX_ASIAN3.')'); +define('PRE_TOKENIZER', '/usr/bin/mecab -O wakati'); + /** * Measure the length of a string. * Differs from strlen in handling of asian characters. @@ -52,11 +54,16 @@ * @author Tom N Harris <tnharris@whoopdedo.org> */ function wordlen($w){ - $l = strlen($w); + //$l = strlen($w); + $l = utf8_strlen($w); + + /* // If left alone, all chinese "words" will get put into w3.idx // So the "length" of a "word" is faked if(preg_match('/'.IDX_ASIAN2.'/u',$w)) $l += ord($w) - 0xE1; // Lead bytes from 0xE2-0xEF + */ + return $l; } @@ -220,6 +227,28 @@ list($page,$body) = $data; + if(function_exists(proc_open) && defined('PRE_TOKENIZER')) { + $dspec = array( + 0 => array("pipe", "r"), + 1 => array("pipe", "w"), + 2 => array("file", "/dev/null", "w") + ); + $process = proc_open(PRE_TOKENIZER, $dspec, $pipes); + if(is_resource($process)) { + stream_set_blocking($pipes[0], FALSE); + stream_set_blocking($pipes[1], FALSE); + fwrite($pipes[0], $body . "\n"); + fclose($pipes[0]); + + $body = ''; + while(!feof($pipes[1])) { + $body .= fgets($pipes[1], 32768); + } + fclose($pipes[1]); + proc_close($process); + } + } + $body = strtr($body, "\r\n\t", ' '); $tokens = explode(' ', $body); $tokens = array_count_values($tokens); // count the frequency of each token @@ -489,7 +518,8 @@ $wild |= 2; $wlen -= 1; } - if ($wlen < IDX_MINWORDLENGTH && $wild == 0 && !is_numeric($xword)) continue; + //if ($wlen < IDX_MINWORDLENGTH && $wild == 0 && !is_numeric($xword)) continue; + if (preg_match('/[^0-9A-Za-z]/u', $string) && $wlen < IDX_MINWORDLENGTH && $wild == 0 && !is_numeric($xword)) continue; if(!isset($tokens[$xword])){ $tokenlength[$wlen][] = $xword; } @@ -628,12 +658,36 @@ */ function idx_tokenizer($string,&$stopwords,$wc=false){ $words = array(); + + if(function_exists(proc_open) && defined('PRE_TOKENIZER')) { + $dspec = array( + 0 => array("pipe", "r"), + 1 => array("pipe", "w"), + 2 => array("file", "/dev/null", "w") + ); + $process = proc_open(PRE_TOKENIZER, $dspec, $pipes); + if(is_resource($process)) { + stream_set_blocking($pipes[0], FALSE); + stream_set_blocking($pipes[1], FALSE); + fwrite($pipes[0], $string . "\n"); + fclose($pipes[0]); + $string = ''; + while(!feof($pipes[1])) { + $string .= fgets($pipes[1], 32768); + } + fclose($pipes[1]); + proc_close($process); + } + } + $wc = ($wc) ? '' : $wc = '\*'; if(preg_match('/[^0-9A-Za-z]/u', $string)){ + /* // handle asian chars as single words (may fail on older PHP version) $asia = @preg_replace('/('.IDX_ASIAN.')/u',' \1 ',$string); if(!is_null($asia)) $string = $asia; //recover from regexp failure + */ $arr = explode(' ', utf8_stripspecials($string,' ','\._\-:'.$wc)); foreach ($arr as $w) {

Debianでmecabをaptでインストールすると,/usr/bin/mecabにインストールされるけど,ほかの環境の人はここを変えないと。

つづく

2010年6月28日月曜日

ブックマークレットその3

ブックマークレットを追加。TumblrのArchiveを見たい。 Archive-tumblr javascript:(function(){ var%20l=location,h=l.host; l.href='http://'+h+'/archive/';})() 改行は削除すること

2010年6月15日火曜日

css: opacity

Twitter が止まっているので Tumblr をいぢっていた。

#sidebar {
  background-color: #FFF;
  opacity: 0.8;
}

#content {
  background-color: #FFF;
  opacity: 0.8;
}

を書いてみたけれどもなんだか変だよこれ…。opacityって継承しないんぢゃないの?? #content .photo まで透明になるよ???なので,

#content .photo {
  opacity: 1;
}

を明示的に書くことに。

2010年6月11日金曜日

ブックマークレットその2

ブックマークレットをいぢった。 Twilog javascript:(function(){ var%20d=document,l=location,p=l.pathname,s=p.split('/'),u=d.selection?d.selection.createRange().text:s[1]; var%20subw=window.open('http://twilog.org/'+u).document;} )() 改行は削除すること

そのほか Favotter javascript:(function(){ var%20d=document,l=location,p=l.pathname,s=p.split('/'),u=d.selection?d.selection.createRange().text:s[1]; var%20subw=window.open('http://favotter.matope.com/user.php?user='+u).document;})() GoogleMap javascript:var%20d=document;var%20tx=d.selection?d.selection.createRange().text:d.getSelection(); var%20subw=window.open('http://maps.google.co.jp/maps?q='+tx).document;

2010年1月12日火曜日

ブックマークレット

こんなの出来たらいいな,と思っていたこと。 Twitter javascript:var%20d=document; var%20tx=d.selection?d.selection.createRange().text:d.getSelection(); var%20subw=window.open('http://twitter.com/'+tx).document; 改行は削除すること。

そのほか Twilog javascript:var%20d=document; var%20tx=d.selection?d.selection.createRange().text:d.getSelection(); var%20subw=window.open('http://twilog.org/'+tx).document; mentionmap javascript:var%20d=document; var%20tx=d.selection?d.selection.createRange().text:d.getSelection(); var%20subw=window.open('http://apps.asterisq.com/mentionmap/#user-'+tx).document;