RSS

OhaC's Creative Studio

This is OhaC's blog. (OhaC = oh-ha-see) I record what I thought and what I want to memorize.

2008-03-02

はてなダイアリーに移動

日記ははてなダイアリーで書くことに決めましたので、よろしくお願いします。ADAM Rental Web はリポジトリ、過去の日記、実験用とします。

2007-12-30

ohac.pun.jp に引越し

自宅サーバーが不安定なのでレンタルサーバーをずっと調べていました。 sshが使えてCGIでpythonとrubyが使えるという条件で調べた結果、 ADAM Rental Web に落ち着きました。

このサーバーはFreeBSDらしく、MercurialのCGIを動作させるのにちょっと苦労 しましたが、MercurialのFreeBSD用バイナリを展開して、*.soを拝借すればちゃんと 動きました。

2007-08-18

ajaxterm UTF-8 patch

This patch is not perfect yet. But I can use some Japanese characters with it.

#
--- ajaxterm.py.orig	2007-08-18 03:34:08.000000000 +0900
+++ ajaxterm.py	2007-08-18 03:34:15.000000000 +0900
@@ -87,9 +87,9 @@
 			if i==0x0a or (i>32 and i<127) or i>160:
 				self.trhtml+=chr(i)
 			elif i<=32:
-				self.trhtml+="\xa0"
+				self.trhtml+=" "
 			else:
-				self.trhtml+="?"
+				self.trhtml+=chr(i)
 	def reset(self,s=""):
 		self.scr=array.array('i',[0x000700]*(self.width*self.height))
 		self.st=0
@@ -342,7 +342,7 @@
 			span+=chr(c)
 			if i%w==w-1:
 				span+='\n'
-		r='<?xml version="1.0" encoding="ISO-8859-1"?><pre class="term">%s</pre>'%r
+		r='<?xml version="1.0" encoding="UTF-8"?><pre class="term">%s</pre>'%r
 		if self.last_html==r:
 			return '<?xml version="1.0"?><idem></idem>'
 		else:

2007-08-16

patch for ttyrec-1.0.6

ttyrec does't work well. So I created this patch. It's kind of ad hoc though.

diff -u ttyrec-1.0.6/Makefile ttyrec-1.0.6-1/Makefile
--- ttyrec-1.0.6/Makefile	2002-10-22 19:01:23.000000000 +0900
+++ ttyrec-1.0.6-1/Makefile	2007-08-16 09:21:49.000000000 +0900
@@ -10,7 +10,7 @@
 all: $(TARGET)

 ttyrec: ttyrec.o io.o
-	$(CC) $(CFLAGS) -o ttyrec ttyrec.o io.o
+	$(CC) $(CFLAGS) -lutil -o ttyrec ttyrec.o io.o

 ttyplay: ttyplay.o io.o
 	$(CC) $(CFLAGS) -o ttyplay ttyplay.o io.o
diff -u ttyrec-1.0.6/ttyrec.c ttyrec-1.0.6-1/ttyrec.c
--- ttyrec-1.0.6/ttyrec.c	2002-10-22 19:01:23.000000000 +0900
+++ ttyrec-1.0.6-1/ttyrec.c	2007-08-16 09:21:21.000000000 +0900
@@ -69,8 +69,12 @@

 #define _(FOO) FOO

+#define HAVE_openpty 1
 #ifdef HAVE_openpty
-#include <libutil.h>
+#include <termios.h>
+#include <unistd.h>
+#include <pty.h>
+#include <utmp.h>
 #endif

 #if defined(SVR4) && !defined(CDEL)

2007-08-09

synchronizing with MoinMoin pages

I'm trying to develop MoinMoin pages synchronizer. Because I don't think browser's edit form is convenient. And also I want to edit draft pages.

2007-06-17

Mercurialでchangelog

hg log --style=changelog でいけるみたい。vimでsyntax onにしてみるとcolorfulで見やすい。

linux and Mercurial

<URL:http://www.kernel.org/hg/> こんなのがあるのか。いつかlinuxもgitからMercurialに移行するかもしれないなぁ。Mattさんはlinuxのcommitterみたいだし。

2007-06-15

Mercurial links into trac or redMine

Mercurialのソースコード(及びPython)の勉強中。まだリリースには遠い。

diff -r 29ec36fb50a3 mercurial/hgweb/hgweb_mod.py
--- a/mercurial/hgweb/hgweb_mod.py	Thu Jun 14 12:58:05 2007 +0900
+++ b/mercurial/hgweb/hgweb_mod.py	Fri Jun 15 22:09:16 2007 +0900
@@ -318,6 +318,11 @@ class hgweb(object):
         def diff(**map):
             yield self.diff(p1, n, None)

+        tickets = []
+        baseurl = "http://hoge/"
+        tickets.append(self.t("ticketlink", node="12", baseurl=baseurl))
+        tickets.append(self.t("ticketlink", node="13", baseurl=baseurl))
+
         yield self.t('changeset',
                      diff=diff,
                      rev=ctx.rev(),
@@ -328,6 +333,7 @@ class hgweb(object):
                      author=ctx.user(),
                      desc=ctx.description(),
                      date=ctx.date(),
+                     tickets=tickets,
                      files=files,
                      archives=self.archivelist(hex(n)),
                      tags=self.nodetagsdict(n),
diff -r 29ec36fb50a3 templates/changeset.tmpl
--- a/templates/changeset.tmpl	Thu Jun 14 12:58:05 2007 +0900
+++ b/templates/changeset.tmpl	Fri Jun 15 21:57:20 2007 +0900
@@ -36,6 +36,10 @@
  <th class="description">description:</th>
  <td class="description">#desc|strip|escape|addbreaks#</td>
 </tr>
+<tr>
+ <th class="tickets">tickets:</th>
+ <td class="tickets">#tickets#</td>
+</tr>
 </table>

 <div id="changesetDiff">
diff -r 29ec36fb50a3 templates/map
--- a/templates/map	Thu Jun 14 12:58:05 2007 +0900
+++ b/templates/map	Fri Jun 15 22:09:48 2007 +0900
@@ -54,3 +54,4 @@ error = error.tmpl
 error = error.tmpl
 urlparameter = '#separator##name#=#value|urlescape#'
 hiddenformentry = '<input type="hidden" name="#name#" value="#value|escape#" />'
+ticketlink = '<a href="#baseurl##node|short#">##node|escape#</a> '

redMine links into Mercurial repository

こんなの作ってみました。

Index: app/helpers/application_helper.rb
===================================================================
--- app/helpers/application_helper.rb	(revision 564)
+++ app/helpers/application_helper.rb	(working copy)
@@ -137,6 +137,12 @@
     #   [[link|title]] -> "title":link
     text = text.gsub(/\[\[([^\]\|]+)(\|([^\]\|]+))?\]\]/) {|m| "\"#{$3 || $1}\":" + format_wiki_link.call(Wiki.titleize($1)) }

+    # turn Mercurial links into textile links: 
+    # example:
+    #   hg:tip -> "hg:tip":http://foo/hoge/rev/tip
+    urlbase = "http://foo/hoge/rev/"
+    text = text.gsub(/hg:([^\s]+)/) { |m| "\"hg:#{$1}\":#{urlbase}" + $1 }
+
     # turn issue ids into links
     # example:
     #   #52 -> <a href="/issues/show/52">#52</a>

2007-06-14

planet (mixed RSS)

複数RSSを1つにまとめてくれるツール。

liferea (RSS reader)

複数のRSSを時系列で表示したりできる。 Mercurial repositoriesとtracやredMineのticketsと同時に表示させたりすると 便利かも。

2007-06-13

Setting for Mercurial and Gmail

Like this.

[email]
from = My Name <my_account.at.gmail.com>
to = target_mail_address.at.domain
method = smtp

[smtp]
host = smtp.gmail.com
port = 587
tls = True
username = my_account.at.gmail.com
password = my_password

Now I can use 'hg email' command.

My Mercurial repository

I have created repository for Mercurial.

You can pull and clone from this repository.

Mercurial character encoding setting patch

I have created patch for Mercurial. This patch provides character encoding setting in each repository. After this patch, You can use multi encoding repositories with one mercurial server.

# HG changeset patch
# User OHASHI Hideya <ohachige at gmail.com>
# Date 1181718644 -32400
# Node ID cc6b6505cf1bd7e7fa5c369e3c25f440524c4e04
# Parent  050fa240db9cebc0fb6238c09de40fcfb867bb95
enable to select encoding in hgrc web section

diff -r 050fa240db9c -r cc6b6505cf1b mercurial/hgweb/hgweb_mod.py
--- a/mercurial/hgweb/hgweb_mod.py      Mon Jun 11 21:09:24 2007 -0500
+++ b/mercurial/hgweb/hgweb_mod.py      Wed Jun 13 16:10:44 2007 +0900
@@ -103,6 +103,7 @@ class hgweb(object):
             self.maxshortchanges = int(self.config("web", "maxshortchanges", 60))
             self.maxfiles = int(self.config("web", "maxfiles", 10))
             self.allowpull = self.configbool("web", "allowpull", True)
+            self.encoding = self.config("web", "encoding", util._encoding)

     def archivelist(self, nodeid):
         allowed = self.configlist("web", "allow_archive")
@@ -655,7 +656,7 @@ class hgweb(object):
     def run_wsgi(self, req):
         def header(**map):
             header_file = cStringIO.StringIO(
-                ''.join(self.t("header", encoding=util._encoding, **map)))
+                ''.join(self.t("header", encoding=self.encoding, **map)))
             msg = mimetools.Message(header_file, 0)
             req.header(msg.items())
             yield header_file.read()

An example setting is as follows.

[web]
encoding = EUC-JP
#encoding = SHIFT_JIS
#encoding = UTF-8

You can use this example for $HOME/.hgrc and .hg/hgrc.

2007-05-27

PukiWikiとtdiaryのスパム

スパム攻撃がひどいのでPukiWikiをread-onlyに、tdiaryのツッコミをOFFにした。

あう、Hikiが動かなくなっている。hikiconf.rbとhiki.confを今のバージョンに合わせて変更しないといけないみたい。

WikiはMoinMoinを入れてみたいが、今はちょっと面倒なのでまた今度。

2007-04-18

words from LOST S01E01-02 transcripts

LOST S01E01-02 transcripts Japanese translation

ジャック: 深呼吸して、息をして。

(金属の音。ジャックが見上げると大きな高い金属の破片(翼)が高いところ機体の残 骸の上で揺れ始めている。クレアとハーリーは丁度その破片が落ちてきそうな場所 にいる。ジャックは彼等のところに走る。)

Chinese words

Let me try to use Chinese words in my blog.

你好。再见。

2007-04-12

words from LOST S01E01-02 transcripts

LOST S01E01-02 transcripts Japanese translation

ジャック: よく聞いて、僕らは。君は大丈夫だ、信じて。 ただ、今は絶対に座っておかないといけない。

(ジャックはローズにマウストゥマウスをしているブーンの方を見ている。)

ジャック(ハーリーに): おい、君。来てくれ。この女性をこのへんの煙から遠くに 移動させてほしい。彼女を見ておいてくれ。もし陣痛が3分以内に起きるようなら 私を呼んで。

ハーリー: おい、冗談だろ。(ジャックはどこかへ走っていく) おい、君の名前は?

ジャック: ジャック

(ジャックはブーンとローズのところへ駆け寄る)

ジャック: やめろ。頭をもっと傾けないと。それでは胃に息を送っているぞ。

ブーン: そうなのか?

(ジャックはマウストゥマウスを始める)

ブーン: それと同じようにやっていたんだ。僕はライフガードだ。免許もある。

ジャック: そうか。じゃあ、免許を返すことを考えた方がいいな。

ブーン: たぶん何かで空気を通るようにした方がいいかも。ペンを喉に入れるとか?

ジャック: ああ、いい考えだ。ペンを取ってきてくれ。

(ブーンはペンを取りに走る)

ジャック(応急処置をしながら): さあ、息を。

(ローズが息をする)

2007-04-11

words from LOST S01E01-02 transcripts

LOST S01E01-02 transcripts Japanese translation

彼は残骸を避けてクレアの元へ走った。

クレア: お願い助けて。陣痛なの。

ジャック: 妊娠して何ヶ月?

クレア: 8ヶ月ぐらい

(ジャックは周りを見渡し、ブーンがローズに応急処置をしているのを見る。)

ジャック(クレアに): どのぐらい経つ?

クレア: 分からない。起こってから少し。

(ロックと赤いシャツの男が足の悪い男を運び出している映像。他の男がエンジンの前を歩き始めた。ロックはそれを見る。)

ロック: おい、君。離れろ。

(その男はエンジンに吸い込まれ、エンジンは爆発する。人々が走っている映像。ジャックはクレアをかばう。)

2007-04-10

英語・日本語勉強用のリソース

教育用途としてならアメリカのドラマや映画の字幕なら法的に問題なく素材として使えることに気付いた。なお、洋楽の歌詞とかはちょっとややこしそうなので避けておいた方がよさげ。

日本語の勉強用には自分で訳したものを用意すればきっと問題ないだろう。日本語吹替とは一致しないけど。もちろん自分の翻訳練習にもなる。ということで少しやってみた。今、ハマっているLOSTから。(以下ネタバレ注意)

なお、単語は辞書の結果をコピペすると、これまた著作権的に問題がありそうなのでフリーの英英辞書(dictコマンド使用)の結果から一致してそうな説明文をピックアップした。

words from LOST S01E01-02 transcripts

LOST S01E01-02 transcripts Japanese translation

(ジャックの目が開くところの映像。竹薮を見上げる。頭上からの映像でパンアウトするとジャックが地面に怪我をして横になっている。ジャックは犬を見る。ゆっくりと起き上がり、痛みが走る。小さな酒瓶がポケットにあるのに気付く。そして、竹薮を走り抜け、海岸にたどり着く。人々が叫んでいる。彼は機体の残骸を見る。人々は怪我をした状態で歩き、助けを呼んでいる。エンジンがまだ回っている映像。チャーリーがそれに近づく。ジンが叫んでいる。マイケルはウォルトを呼んでいる。)

赤いシャツの人: ガスから離れろ、そこを離れろ

(シャノンは叫んでいる。ジャックは飛行機の翼を見上げる。)

赤いシャツの人2(まだ動いているエンジンのついた残骸の下にはさまっている): 助けて。誰か助けてくれ。ああ、足が。

ジャック: 手を掴んで。君、来てくれ。手を。(赤いシャツのグループが集まってきて、男の上にある金属の残骸を持ち上げる。)1、2の3でいくぞ。1、2の3。

(ジャックは男を下からひきずり出す。片足は血だらけだ。ジャックは怪我を見るために男のズボンを取ろうとする。ジャックは彼のネクタイを止血用に使う。)

クレア: 助けて、誰か助けて。お願い、助けて。

(クレアは妊婦に見える。手と膝で押さえている。ジャックは彼女を見る。)

ジャック(赤いシャツとロックに向かって): よし、彼をこのあたりから出して、エンジンから離れて。ここから離れて。

2007-03-28

English diary

Spam mail and bsfilter

Recently I've been receiving a lot of spam mails. It's really annoying.

I decided to use spam filter. I chose bsfilter which is written in ruby. I researched how to use bsfilter with procmail. Now I've setuped .procmailrc like this.

# spam filter
:0 fw
| bsfilter -a --pipe --insert-flag --insert-probability --mark-spam-subject

:0
* ^X-Spam-Flag: Yes
spam/

bsfilter doesn't have initial spam/ham database. So I had to prepare some spam/ham mails. I put them into bsfilter database as below.

bsfilter -s Mail/spam/cur/*
bsfilter -c Mail/ham/cur/*
bsfilter -u

Now I get less spams than before. But I get a few spams. I've been putting them into db almost everyday.

bsfilter -Cs Mail/spam/cur/*
bsfilter -u

I misunderstood about "-a" option. It means that judgement updates db automatically. So if you use "-a" option, you have to use "-C" to remove it from clean database. If you don't use, your spam have remained to your clean mail database.

2007-03-27

English diary

wrist pain

Recently, I have a pain in my left wrist when I'm typing keyboard.

I tried to find a special keyboard, like ergonomics type one or something like that. but I couldn't find a good one for me.

I just want separated type keyboard. If I get that, I can move these to proper position.

I found some keyboards like that. But those are very expensive. I wonder if I could customize my cheep keyboard.

cron

I've setuped crontab for my web server. It will update and execute rake command automatically.

2007-03-21

English diary

writing English

I have been reading English learner's book. It says, "you should write English diary, but you don't have to try to write perfectly. you should use only simple words." So, I am trying to write this diary with simple words. I think I make many mistakes, but I don't care. This is my private diary.

install into USB memory

I bought USB memory, that has 1GB memory. I installed Debian GNU/Linux etch into it. success. But I had to remove some packages, because 1GB is too small to install all I want. So I made some symbolic links to HDD. such as /usr/share/doc, man, /usr/share/games, /var/games, /var/cache/apt.

USB's boot up speed is a little faster than HDD's one. HDD is 35 seconds. USB is 30 seconds.

2007-03-04

wodim

cdrecordはなくなってwodimというのになったようだ。

全部ユーザーモードでできた。えらい簡単だな。 /etc/group のdiskに自ユーザーを追加していたからかもしれない。

と思ったらmount /media/cdromでマウントできない。

ううむ。

これでどうだ? むむダメか。-dummyはテスト用かな?

今度こそどうだ? いやダメみたい。

debianのisoイメージでやってみよう。

-daoか-saoがいるのかも。

ダメだ...

driver=mmc_mdvd ダメ...

CD-RWなら問題なく焼けた。DVD-RWは何か特殊なのかな。

cryptmount

なんとか暗号化ファイルシステムの構築に成功。 iceweaselのパスワード保存ファイルとかgnupgとかsshの鍵とかを入れて、 シンボリックリンクにしてみた。

鍵とループバック用ファイルをUSBメモリ、HDD等の3箇所以上に分散させて、 Mercurialで同期させることで紛失・故障時の対策としている。

起動直後のalsaが変

なぜか毎回 alsaconf の再実行を行わないといけない。 とりあえずsudoで実行可能にして、fluxbox/menuにalsaconfを追加しておいた。

USB 80GB HDD購入

音楽データを入れて、IO DataのDVDプレーヤーのUSB端子に接続して使用する予定。 あとバックアップ用にも使う。

LOST シーズン3

AXNで5月から放送開始らしい。 そして来週からシーズン1,2を平日に毎日放送する。 シーズン2は見たけど1がまだなので見ようと思う。

2007-02-28

vim "[f" is deprecated

"[f"はもう古いらしい。"gf"を使えとのこと。"gf"でファイルがなかったら、作っ てくれるモードがあったらいいのになぁ。

Mercurial .hgrc

よく使うパターンをメモっておく。

[ui]
username = HOGE Hoge

[encode]
**.rd = pipe: nkf -w

[decode]
**.rd = pipe: nkf -e

最近使ってみたソフト

mlterm, mlclient with Alt+key

~/.mlterm/keyに以下のような定義をするとAltキー+任意のキーで文字列を送ることが できる。

Mod+a="^La"

GNU screenのprefixキーと組み合わせるとAltキーを使っていろいろとscreenを制御で きる。(^Lはvim上ではCTRL+V CTRL+Lで入力できる。)

しかし、mlclient上だと現状ではダメみたい。

2007-02-25

firefox + ALSA

この日記の追記(3)を見て解決しました。

2007-02-21

firefox

長いことfirefox(iceweasel)のFORMの挙動が変だったが、 最近のupgradeで直ったようだ。これはうれしい。

uim-skk動的補完機能

動的補完機能が追加されているようだ。

設定を有効にすると数文字打っただけで補完候補が表示される。

そのときにTabを何回か押すことでどの補完候補を使うかを決定したり、Alt+Spaceを押すとその補完した単語で変換まで行う、といった操作が可能。これは便利かも。

2007-02-06

mercurial + rake + rdtool + tdiary-theme

なんとなくMercurialでページを管理してみようと思い、作ってみた。

Log

TODO

Words