Chat (Lingr.com)
Informaiton
Daily
Column
- MySQL日本語の旅(5/1)
- アクセス向上秘伝(5/9)
- 一風変ったHaskellλ門(6/13)
- SICP Answer Book (5/31) 問題3.26追加
Zope Solution
Extra
アーカイブ
OSS案内所
Site Info
関連リンク
- 2004: 01 02 03 04 05 06 07 08 09 10 11 12
- 2005: 01 02 03 04 05 06 07 08 09 10 11 12
- 2006: 01 02 03 04 05 06 07 08 09 10 11 12
- 2005-06-30 [lndir] ディレクトリツリーのシャドーコピー
- 2005-06-29 [locale] Fedora Core 3 のロケールの変更
- 2005-06-28 [log] 複数のログのマージ
- 2005-06-27 [emacs] wheel mouse
- 2005-06-24 [Gnome] ワークスペースの切り換え
- 2005-06-23 [SQLite] SQLiteでテーブルの存在チェックする
- 2005-06-22 [Haskell] 関数の再帰呼び出しの様子を見る
- 2005-06-21 [command] ファイルの行のマージ
- 2005-06-20 [command] 絶対パスからファイル名だけを取り出す
- 2005-06-17 [command] コンソールでディレクトリのツリー表示
- 2005-06-16 [Shell] シェルスクリプトでコマンドの戻り値を表示する
- 2005-06-15 [FIY] テキストエリアの編集に Emacs を使う
- 2005-06-14 [Tips] X server の再起動
- 2005-06-13 [Tips] ブラウザへのicon表示
- 2005-06-10 [FYI] Debian 3.1 sarge 登場
- 2005-06-09 [FYI] XHTMLによるスライドショウ
- 2005-06-08 [misc] 交代級数の加速
- 2005-06-07 [text] PDF文書をプレーンテキストに変換する
- 2005-06-06 [Gauche] inits
- 2005-06-03 [misc] ごみ箱スクリプト
- 2005-06-02 [shell] キーバインディングの一覧
- 2005-06-01 [misc] 所属グループの変更
2005-06-30 [lndir] ディレクトリツリーのシャドーコピー
おおきなソースツリーでビルドするとき,展開した元のディレクトリ ツリーは綺麗なままにしておきたいことがある.ディレクトリツリーごと 外部にすっかりコピーしてもいいのだけど,lndir を使うと,ディレクトリ構 造はコピーが作られ,通常ファイルは元のファイルへのシンボリックリンクに なる.
% lndir fromdir todir
これで fromdir 以下のディレクトリのシャドーコピーが todir 以下に作成さ れる.
--nobsun
2005-06-29 [locale] Fedora Core 3 のロケールの変更
Fedora Core 3 ではデフォルトのロケールが ja_JP.utf8 になっていて少し使 いにくいことがある.デフォルトのロケールを変更するには, /etc/sysconfig/i18n を書き換えるのだが,個人設定でのみやるなら,~/.bashrc などに
export LANG=ja_JP.eucJP export LC_ALL=ja_JP.eucJP
を書いておく.
--nobsun
There is no comment.
2005-06-28 [log] 複数のログのマージ
Web サーバを負荷分散して round-robin で使っているような場合, 複数のサーバのアクセスログを一本にして解析したいことがある. このとき,各レコードが日付順にならんでいてほしい.このようなことをする ツールに mergelog というのがある. 使い方は簡単,たとえば,
mergelog access.v1.log access.v2.log access.v3.log | webalizer
とすると,access.v1.log access.v2.log access.v3.log を整列マージして webalizer に喰わせることができる.
--nobsun
There is no comment.
2005-06-27 [emacs] wheel mouse
wheel mouseの使用はXの方で設定しててもemacsは別。 .emacs に以下の行を追加。
(global-set-key [mouse-4] 'scroll-down) (global-set-key [mouse-5] 'scroll-up)
これでぐりぐり。
--cut-sea
There is no comment.
2005-06-24 [Gnome] ワークスペースの切り換え
通常 Gnome の仮想デスクトップを切り替えるには,「ワークスペース切り換 え器」を使うのだけれど,
Ctrl + Alt + 矢印
でもよい.しらんかった.
--nobsun
There is no comment.
2005-06-23 [SQLite] SQLiteでテーブルの存在チェックする
SQLiteはsqlite_masterというシステムテーブルにテーブル名が書き込まれている。
たとえばhogeというテーブルの存在をチェックしたければ、 以下のSQLを実行して結果セットの行数をチェックする。
SELECT * FROM sqlite_master WHERE type='table' AND name='hoge';
行数が1だったらテーブルは存在する。 結果セットが空なら存在しない。
--yasuyuki
There is no comment.
2005-06-22 [Haskell] 関数の再帰呼び出しの様子を見る
ちょっとした工夫で再帰呼び出しの木を作って,それを表示する.
fib :: Integer -> Integer fib 0 = 0 fib 1 = 1 fib n = fib (n-2) + fib (n-1)
これにちょっと手を入れて,
import Data.Tree
treeFib :: Integer -> (Integer,Tree String)
treeFib 0 = (0,Node (fibnode 0 0) [])
treeFib 1 = (1,Node (fibnode 1 1) [])
treeFib n = let (i,l) = treeFib (n-2)
(j,r) = treeFib (n-1)
in (i+j,Node (fibnode n (i+j)) [l,r])
fibnode k m = "fib "++show k++" = "++show m
で実行してツリーを表示すると
*Main> putStrLn $ drawTree $ snd $ treeFib 5
fib 5 = 5
|
+- fib 3 = 2
| |
| +- fib 1 = 1
| |
| `- fib 2 = 1
| |
| +- fib 0 = 0
| |
| `- fib 1 = 1
|
`- fib 4 = 3
|
+- fib 2 = 1
| |
| +- fib 0 = 0
| |
| `- fib 1 = 1
|
`- fib 3 = 2
|
+- fib 1 = 1
|
`- fib 2 = 1
|
+- fib 0 = 0
|
`- fib 1 = 1
Fibonacci 数の素朴な定義だと冗長な計算をやっているのが良くわかる.
--nobsun
There is no comment.
2005-06-21 [command] ファイルの行のマージ
paste コマンドを使う.たとえば,
% cat foo 1 2 3 4 5 6 7 % cat bar one two three four five six seven eight % cat baz いち に さん し ご
だとしよう.これを paste でマージすると
% paste foo bar baz
1 one いち
2 two に
3 three さん
4 four し
5 five ご
6 six
7 seven
eight
となる.へぇー
--nobsun
There is no comment.
2005-06-20 [command] 絶対パスからファイル名だけを取り出す
「おぃおぃ」シリーズだね.
% basename /usr/local/src/Gauche-0.8.4/doc/gauche-refj.texi gauche-refj.texi
--nobsun
There is no comment.
2005-06-17 [command] コンソールでディレクトリのツリー表示
tree というコマンドを使う.
% tree -d kahua-web
kahua-web
|-- CVS
|-- autom4te.cache
|-- kahua-web
| `-- CVS
|-- test
| `-- CVS
`-- utils
|-- CVS
`-- objview
`-- CVS
--nobsun
There is no comment.
2005-06-16 [Shell] シェルスクリプトでコマンドの戻り値を表示する
「echo $?」を使う。
たとえばscbayesで「~/Mail/inbox/1」ファイルのSPAM判定をしたければ、
#!/bin/sh scbayes --check-mail ~/Mail/inbox/1 echo $?
などとする。scbyaesについては以下を参照。
http://namazu.org/~satoru/scmail/
--yasuyuki
There is no comment.
2005-06-15 [FIY] テキストエリアの編集に Emacs を使う
WiKi や blog に書き込みをするとき,Emacs から使えると便利である. firefox の extensions に MozEx というのがあってこれを使うのが便利.
実は「今日の一行」はこの方法をつかって編集している.
詳しくは,山本和彦さんの firefox からエディタを利用する方法 を参照のこと.
--nobsun
There is no comment.
2005-06-14 [Tips] X server の再起動
Red Hat系の Linux において,runlevel 5 (GUI ログインモード?)で 利用しているとき,X server を再起動したいとき.考えるの面倒とか, とりあえずとか,言ってシステムを reboot しているそこのあなた(儂か?) もうちょっと簡単な方法は,
# init 3; init 5
なんだって.
--nobsun
control-alter-backspace プロセス番号を直接指定してやるのは、ちょっと恐いし、 RedHat以外でどうなるか分かんないしね。
2005-06-13 [Tips] ブラウザへのicon表示
<head> ... <link rel="SHORTCUT ICON" href="iconimage.ico"> ... </head>
この一行だけでブラウザのアドレスバーや、IEならお気に入り、 Mozillaなどのタグブラウザならタブ上にもアイコンが出現します。 ブラウザによって色々ですが。
--cut-sea
There is no comment.
2005-06-10 [FYI] Debian 3.1 sarge 登場
久々に新しいDebianリリース.
完全な i386 用 CDセットは 14枚もある.ネットワークがあるなら debian-31r0a-i386-netinst.iso 一枚で試してみよう.
デフォルトでは 2.4 系のカーネルがインストールされるが, CD からの最初のブートのオープニング画面で,
Press F1 for help, or Enter to boot: _
というプロンプトが出たときに,
linux26
と入力して Enter キーを押せば,2.6 系がインストールされる.
--nobsun
There is no comment.
2005-06-09 [FYI] XHTMLによるスライドショウ
HTML Slidy
専用のスタイルシートとJavaScriptを使う. プレゼンテーションは一つの XHTML ファイルに記述.
- マウスクリックで次ページ
- スペースバー or PgDnキー で次ページへ
- PgUpキー で前ページ
- Homeキーで先頭ページ
- Endキーで最後ページ
- F11キーは全画面表示トグル
などが可能になる.
--nobsun
There is no comment.
2005-06-08 [misc] 交代級数の加速
##(link2sicp "book-Z-H-24.html#%_sec_3.5.3" "SICP §3.5.3") にストリーム表現された交代級数(項の符号が交互に反転する級数) を加速して近似値を早く得る方法がある.
2の自然対数になる交代級数は
Error in expanding macro: (img "mimetex.cgi?$\\displaystyle \\ln 2 = 1 - \\frac{1}{2} + \\frac{1}{3} - \\frac{1}{4} + \\ldots $")
Invalid Image URL: "mimetex.cgi?$\\displaystyle \\ln 2 = 1 - \\frac{1}{2} + \\frac{1}{3} - \\frac{1}{4} + \\ldots $"
が良く知られているが,これは大変収束が遅く,8項までの表示すると
1.0 0.5 0.8333333333333333 0.5833333333333333 0.7833333333333332 0.6166666666666666 0.7595238095238095 0.6345238095238095
である.
2の自然対数は数表を索くと,15桁目までだと ln 2 = 0.69314 71805 59945 であるから,小数点以下1桁目までしかただしくもとまっていないことになる.
1000項目は 0.6936464315588232 である.それでも 正しくもとまっているのは小数点以下3桁目まででしかない.
Error in expanding macro: (img "mimetex.cgi?$\\displaystyle S_{n+1} - \\frac{(S_{n+1} - S_{n})^{2}}{S_{n-1} - 2S_{n} + S_{n+1}}$")
Invalid Image URL: "mimetex.cgi?$\\displaystyle S_{n+1} - \\frac{(S_{n+1} - S_{n})^{2}}{S_{n-1} - 2S_{n} + S_{n+1}}$"
という Euler 加速を使うと,8項までは
0.7 0.6904761904761905 0.6944444444444444 0.6924242424242424 0.6935897435897436 0.6928571428571428 0.6933473389355742 0.6930033416875522
となって,3桁目まで正しくもとまっている. この方法で1000項目までやると 0.6931471806840143 となって,これで やっと,9桁目まで.
さらに,Euler 加速を再帰的に適用する加速を使うと,8項までで
1.0 0.7 0.6932773109243697 0.6931488693329254 0.6931471960735491 0.6931471806635636 0.6931471805604039 0.6931471805599445
となる.
14桁まで正しくもとまっている.もとの級数をそのまま 使う場合だと14桁まで正しく求めるには 10^13 項くらいの和 を求める計算が必要なことを考えると,劇的!
Scheme でのコードは SICP にあるが,以下はそれを Haskell で 書いたもの.
eulerTransform (s0:ss@(s1:s2:_)) = (s2-((s2-s1)^^2)/(s0-2*s1+s2)):eulerTransform ss accelarate transform s = map head (iterate transform s) ln2Summands n = (1.0 / n) : map negate (ln2Summands (n+1)) ln2s0 = mapM_ print $ take 8 $ scanl1 (+) (ln2Summands 1.0) -- 加速しないものの8項まで表示 ln2s1 = mapM_ print $ take 8 $ eulerTransform ln2s0 -- Euler 加速したものの8項まで表示 ln2s2 = mapM_ print $ take 8 $ accelarate eulerTransform ln2s0 -- 再帰的に Euler 加速したもの8項まで表示
--nobsun
There is no comment.
2005-06-07 [text] PDF文書をプレーンテキストに変換する
PDF文書の内容を加工したり,検索したりする場合,PDF文書をプレーンテキス トに変換できると便利である.
% pdftotext tree.pdf - プログラムを読もう どのような言語を使うにせよ,プログラミングを楽しむためにはその言語の構 文と文法を身につけなければ ならない.これは自然言語と同じである.しか し,エッセンスのみ取り出した構文と文法だけを暗記するよ うな学習はあま り楽しいものではない. ...
--nobsun
There is no comment.
2005-06-06 [Gauche] inits
(a b c) ==> (() (a) (a b) (a b c)) という変換を行う関数inits の定義. Haskell の標準ライブラリには関数が定義されているのだけど,Gauche には ないようだ.Haskell の真似をして Gauche で定義すると
(define (inits xs)
(if (null? xs)
(list xs)
(cons '() (map (cut cons (car xs) <>) (inits (cdr xs))))))
てなかんじ.とあるコードを読んでいて見つけたちょっと 面白い定義
(define (inits xs) (map-with-index (lambda (idx _) (take xs idx)) (cons #f xs)))
(map-with-index proc alist) はリストalistの要素に適用する手続きprocが, 第1引数として,その要素のインデックスをとるような特別なマップで, gauche.sequence モジュールで定義されています.(take alist n) は リスト alist の最初からn個の要素で構成されるリストを返す関数です.
--nobsun
There is no comment.
2005-06-03 [misc] ごみ箱スクリプト
なんてことはないスクリプト trash.みそは捨てた日付別になっていること.
#!/bin/sh
trashbox=$HOME/`date +%Y%m%d`
if [ -d $trashbox ]; then
mv $1 $trashbox
else
mkdir $trashbox
mv $1 $trashbox
fi
これを ~/bin において,実行パーミッションを付けて
chmod +x ~/bin/trash
これで,
% trash gomi.data
とやると,~/20050603/ に gomi.data が移動する.
--nobsun
if [ ! -d $trashbox ]; then mkdir $trashbox; fi mv $1 $trashbox と短くしたい
うっ、確かに。。。もとのやつ冗長で素人くさいなぁ。。。
2005-06-02 [shell] キーバインディングの一覧
これも「おぃおぃ」かなぁ. シェルのキーバインディングの一覧を見る.
zsh,csh, tcsh なら
% bindkey
bash は何だろう.
$ bind -p
かな.ほとんど使わないものもあるけど,いろいろ発見があって, 結構おもしろいです.
--nobsun
There is no comment.
2005-06-01 [misc] 所属グループの変更
「おぃおぃ」シリーズだなこれ.
# usermod -g users nobsun
これはプライマリグループの変更.
-G を使うとサブグループの変更ができる.
# usermod -G haskellers,lazies nobsun
--nobsun
There is no comment.
There is no comment.