01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
WindowsパーティションとしてNTFSでフォーマットしてあった/dev/hda1を、ext3にフォーマットし直す。
デュアルブートだったが、Linuxのみの運用に集約し、Windowsを駆逐するため。
ブートセクタ関連で、grubの再インストールを行う必要が(たぶん)ある。
$ sudo fdisk /dev/hda
[stdin]
e : delete
n : create
b : set bootpoint
w : write
[stdout]
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.
$ sudo mke2fs -j /dev/hda1
$ sudo e2label /dev/hda1 /media/c
$ sudo e2fsck /dev/hda1
$ sudo vi /etc/fstab
LABEL=/media/c /media/c ext3 defaults 1 2
$ sudo grub-install /dev/hda
$ sudo shutdown -r now
$ sudo chmod 777 /media/c
cf.
自分用のメモや日記,情報整理のため,長らくPukiwikiをメインに使ってきた。
特に,物事を整理するために,「箇条書き」という手法が非常に有効であるという自身の経験則から,「-」を使用することにより箇条書きのネストを容易に実現できるpukwiikiを愛用していた。
その愛用を後押ししていたのがpukiwiki-mode.elで、極めて良質なlispであり、ブラウザ経由で編集することがはばかられるほどである。
それでも、現在もpukiwikiを継続使用している半面,少しずつChangeLogに書き込む頻度が増えてきた現状がここにある。
それらは,pukiwiki使用中に、以下のような問題に直面したことによる。
特に最後の自動セーブ機能が深刻だった.
私は,auto-save-buffers.elを愛用しており、C-xC-sのセーブ機能を全自動化している.
従って,HDDが壊れない限りは,停電が起きても,エディタがフリーズしても,書いた文章やコードはローカルに保存される。
その一方で,愛用のpukiwiki-mode.elにおけるpukiwiki-modeでは、残念ながらauto-save-buffersが有効にならないため,コミットするまでは気が気ではない.
(setq pukiwiki-save-post-data t)のおかげで大事には至らなかったものの,何度かコミットがエラーで弾かれることがあり,冷汗をかいた。
そのような過程で,保存が容易なChangeLogを使用する頻度が増えたのだが、こちらはこちらで問題がある.
しかし、これらの問題は解決された。
1. は、clgrepやchalowが助力を発揮してくれる。
2. は、Text::Hatenaを利用するようchalowのソースコードを改変することで、ネストの箇条書きが実現できた.
cf.
*** chalow 2008-05-07 23:32:50.000000000 +0900 --- chalow.new 2008-05-07 23:32:50.000000000 +0900 *************** *** 464,474 **** --- 464,503 ---- } + # 1) >> ... << の内部をエスケープ + # 2) \n\n -> <br>\n + sub escape_inside_paren{ + local($_) = shift; + + my $str; + s!\n\n!\n<br>\n!gm; + my @array = split("\n", $_); + + my $flag=0; + foreach (@array){ + if(/^\t?>>$|^\t?>\|\|$/){$flag=1; $str.=$_."\n"; next;} + if(/^\t?<<$|^\t?\|\|<$/){$flag=0; $str.=$_."\n"; next;} + if($flag){ + s!&!&!g; + s!<!<!g; + s!>!>!g; + } + $str.=$_."\n"; + } + return $str; + } + ### 文字列の置き換え sub okikae { local ($_) = shift; my ($ymd, $i) = @_; # 何かに使えるかな? + $_=escape_inside_paren($_); + use Text::Hatena; + $_=Text::Hatena->parse($_); + s!<div class="section">\n<p>(.+)</p>\n</div>\n!$1!gm; + s!<pre>!<blockquote><pre>!gms; + s!</pre>!</pre></blockquote>!gms; + escape_string(\$_); # 日付リンク情報の格納 - parse_entry にあったが、escape後に行なっ *************** *** 477,482 **** --- 506,512 ---- $inside_ref{$1}{"$ymd-$i"}++; } + if(0){ s/&/&/go; s/\]>/\]>/go; # s/>/>/go; # > が &.. になると、URL とか引用のマッチ狂う *************** *** 487,492 **** --- 517,523 ---- # カスタマイズのヒント: <s></s> を残す→ # s|<(/?[a-rt-z]+)|<$1|gi; <b> を残す→ # s|<(/?[ac-z]+)|<$1|gi; (副作用 = <br> なども残る) + } ### Read More ### s!^$readmore_tag$(.*)$!<div class="readmore">$1</div>!sm; *************** *** 505,510 **** --- 536,542 ---- (join("<tr>", (map {join('<td>', split(/\|\|/ ,$_))} split(/\n/, $1)))) .'</table>'!gsme; + if(0){ ### 引用 (quote): ">>" と "<<" で囲む s!^>>\n!<blockquote>!gm; s!^<<\n!</blockquote>!gm; *************** *** 517,527 **** --- 549,561 ---- } else { s!((^((\||>)[^\n]*)\n)+)!<blockquote>$1</blockquote>!gmx; } + } ### 日付で参照リンク # date ref : [YYYY-MM-DD] $_ = datestr2anchor($_); + if(0){ ### URL表記を href で # URL : http://.... # 正規表現は http://www.din.or.jp/~ohzaki/perl.htm#httpURL より。 *************** *** 532,537 **** --- 566,572 ---- s{(?<![\"\=|])((s?https?|ftp)://($URLCHARS+)($URLDELIM($URLCHARS+))*)} {'<a href="'.join(, split(/$URLDELIM/, $1)).'">'. join(, split(/\\/, $1)).'</a>'}gem; #")}; + } ### 行頭のスペースは に置き換える。 s!^( +)!{" " x length($1)}!gme; *************** *** 543,555 **** --- 578,594 ---- # 各行の行末に <br> を付ける # memo: 昔は pre で囲んでいたが、v0.23 からやめた #print "1[$_]\n"; + if(0){ s!$!<br>!gsm; s!<br>$!!; + } #print "2[$_]\n"; unescape_string(\$_); # プラグイン呼び出しも行なう + if(0){ s!</pre><br>!</pre>!g; # ad hoc + } return $_; }
また、ChangeLogにシフトして発見した思わぬ副次的な有効作用は以下のとおり。
1. は、clgrep-item-headerで[ToDo]だけ表示させるファンクションを.emacsでdefunし、global-set-keyでエイリアスを設けることで,瞬時にリストが表示できる。
; check your todo (setq clmemo-file-name "~/usr/memo/diary.txt") (defun clgrep-todo () (interactive) (progn (add-change-log-entry nil (expand-file-name clmemo-file-name)) (clgrep-item-header "ToDo"))) (global-unset-key "\M-t") (global-set-key "\M-t" 'clgrep-todo) (clgrep-todo) ;; Emacs起動と同時にToDoリストが表示される
[ToDo]が片付いたら,[ToDo]を[ToBeDone]に書き換えるquery-replaceを使ったファンクションを、同じくdefunとglobal-set-keyすることで、ToDoリストを消去するのではなく、作業日誌として残すことができる。
; change your todo to ToBeDone (defun todo2tobedone () (interactive) (progn (add-change-log-entry nil (expand-file-name clmemo-file-name)) (query-replace "\[ToDo\]" "\[ToBeDone\]"))) (global-unset-key "\M-d") (global-set-key "\M-d" 'todo2tobedone)
2. は、「p:」フラグによって非公開を実現している箇所のChangeLogReader.pmのソースを弄り、特定のカテゴリのみを出力し、また公開したくない文字列にマッチングした場合は公開しない等、あらかじめソースに記述することで容易に定義できる。
- if ($ih =~ /^p:/) { # Ignoring private items
+ ### 1) プライベートマークp: 2) []が存在しない 3) 公開用マッチング 4) 非公開用マッチング
+ if ($ih =~ /^p:/ || $ih!~/\]/ || $ih!~/Windows|Mac|Macintosh|Linux|Fedora|MySQL|Perl|PHP|ATOK|Emacs|Meadow|ChangeLog/i || $ih=~/Auction/i) { # Ignoring private items
さらにcrontabに、chalowの出力とncftpputによるサーバへのアップロードを任せておくことで、自動的な公開が可能となる。
公開用のChangeLogReader.pmと自分用のChangeLogReader.pmを、別のディレクトリに保存し、perl -I に渡すinclude用のライブラリパスでswitchすれば, p: を個別のエントリに設定する必要がなくなるかもしれない。
0 0 * * * kawachi /bin/rm -rf /tmp/chalow/; mkdir /tmp/chalow/ ; cd /tmp/chalow/ ; perl -I~/usr/lib/perl5/ ~/usr/bin/chalow -c ~/usr/etc/cl.conf ~/usr/memo/diary.txt ; \ ncftpput -m -u user -p password server.com /public_html/c * ; /bin/rm -rf /tmp/chalow
日常的にメモ書きを使用するには、ChangeLog + clgrep + chalow の組み合わせは非常に有用である。
ただし、ChangeLogがPukiwikiが果たしてくれていた役割を全てになっているかといえば、そうでもない。
長い文を記述したり,体系的に知識を整理したい場合は、pukiwikiに書き込む方が有効だ.
大規模な文章をChangeLogに記述することは,後から見返すことを考えるとあまり有効ではない。
抽象的だが,ChangeLogとPukiwikiの関係は,バイクと乗用車の関係に似ており,双方の利を理解した上で,両立して使用していくことが最良の道かと思う。
他にも,howmや紙copiなど多くの有用なツールがあるが,多機能さや導入のコスト故か、個人的に馴染めなかったため、ChangeLogとPukiwikiに帰結した。
ChangeLogはEmacsやViさえあれば起動できるし,Pukiwikiはブラウザとネット環境があればよく、携帯からでも編集できる。
このユニバーサルさも長く使用する上で重要な指標となる。
歴史上の成功者は,メモ魔が多いという。
その恩恵にあやかるべく,「ChangeLog + clgrep + chalow」「Pukiwiki + pukiwiki-mode.el」をこれからも愛用したい。
ツールの開発者様に謝意と敬意を表し、末筆とする。
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
最終更新時間: 2008-10-17 00:00