Open Source WEB



2005-06-30 [lndir] ディレクトリツリーのシャドーコピー

おおきなソースツリーでビルドするとき,展開した元のディレクトリ ツリーは綺麗なままにしておきたいことがある.ディレクトリツリーごと 外部にすっかりコピーしてもいいのだけど,lndir を使うと,ディレクトリ構 造はコピーが作られ,通常ファイルは元のファイルへのシンボリックリンクに なる.

% lndir fromdir todir

これで fromdir 以下のディレクトリのシャドーコピーが todir 以下に作成さ れる.

--nobsun


Name:
Comment:

There is no comment.


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


Name:
Comment:

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


Name:
Comment:

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


Name:
Comment:

There is no comment.


2005-06-24 [Gnome] ワークスペースの切り換え

通常 Gnome の仮想デスクトップを切り替えるには,「ワークスペース切り換 え器」を使うのだけれど,

Ctrl + Alt + 矢印

でもよい.しらんかった.

--nobsun


Name:
Comment:

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


Name:
Comment:

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


Name:
Comment:

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


Name:
Comment:

There is no comment.


2005-06-20 [command] 絶対パスからファイル名だけを取り出す

「おぃおぃ」シリーズだね.

% basename /usr/local/src/Gauche-0.8.4/doc/gauche-refj.texi
gauche-refj.texi

--nobsun


Name:
Comment:

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


Name:
Comment:

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


Name:
Comment:

There is no comment.


2005-06-15 [FIY] テキストエリアの編集に Emacs を使う

WiKi や blog に書き込みをするとき,Emacs から使えると便利である. firefox の extensions に MozEx というのがあってこれを使うのが便利.

実は「今日の一行」はこの方法をつかって編集している.

詳しくは,山本和彦さんの firefox からエディタを利用する方法 を参照のこと.

--nobsun


Name:
Comment:

There is no comment.


2005-06-14 [Tips] X server の再起動

Red Hat系の Linux において,runlevel 5 (GUI ログインモード?)で 利用しているとき,X server を再起動したいとき.考えるの面倒とか, とりあえずとか,言ってシステムを reboot しているそこのあなた(儂か?) もうちょっと簡単な方法は,

# init 3; init 5

なんだって.

--nobsun


Name:
Comment:
novice: (Tue Jun 28 10:53:18 2005 )
control-alter-backspace

プロセス番号を直接指定してやるのは、ちょっと恐いし、
RedHat以外でどうなるか分かんないしね。


2005-06-13 [Tips] ブラウザへのicon表示

<head>
  ...
  <link rel="SHORTCUT ICON" href="iconimage.ico">
  ...
</head>

この一行だけでブラウザのアドレスバーや、IEならお気に入り、 Mozillaなどのタグブラウザならタブ上にもアイコンが出現します。 ブラウザによって色々ですが。

--cut-sea


Name:
Comment:

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


Name:
Comment:

There is no comment.


2005-06-09 [FYI] XHTMLによるスライドショウ

HTML Slidy

専用のスタイルシートとJavaScriptを使う. プレゼンテーションは一つの XHTML ファイルに記述.

  • マウスクリックで次ページ
  • スペースバー or PgDnキー で次ページへ
  • PgUpキー で前ページ
  • Homeキーで先頭ページ
  • Endキーで最後ページ
  • F11キーは全画面表示トグル

などが可能になる.

--nobsun


Name:
Comment:

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


Name:
Comment:

There is no comment.


2005-06-07 [text] PDF文書をプレーンテキストに変換する

PDF文書の内容を加工したり,検索したりする場合,PDF文書をプレーンテキス トに変換できると便利である.

% pdftotext tree.pdf -
プログラムを読もう
どのような言語を使うにせよ,プログラミングを楽しむためにはその言語の構
文と文法を身につけなければ ならない.これは自然言語と同じである.しか
し,エッセンスのみ取り出した構文と文法だけを暗記するよ うな学習はあま
り楽しいものではない.
...

--nobsun


Name:
Comment:

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


Name:
Comment:

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


Name:
Comment:
貧乏性: (Fri Jun 3 11:34:16 2005 )
if [ ! -d $trashbox ]; then mkdir $trashbox; fi
mv $1 $trashbox
と短くしたい
nobsun: (Fri Jun 3 12:59:37 2005 )
うっ、確かに。。。もとのやつ冗長で素人くさいなぁ。。。


2005-06-02 [shell] キーバインディングの一覧

これも「おぃおぃ」かなぁ. シェルのキーバインディングの一覧を見る.

zsh,csh, tcsh なら

% bindkey

bash は何だろう.

$ bind -p

かな.ほとんど使わないものもあるけど,いろいろ発見があって, 結構おもしろいです.

--nobsun


Name:
Comment:

There is no comment.


2005-06-01 [misc] 所属グループの変更

「おぃおぃ」シリーズだなこれ.

# usermod -g users nobsun

これはプライマリグループの変更.

-G を使うとサブグループの変更ができる.

# usermod -G haskellers,lazies nobsun

--nobsun


Name:
Comment:

There is no comment.


このサイトは、 IPA の「平成15年度オープンソフトウエア活用基盤整備事業」 の委託事業として開発されたKahuaで試験的に運用しております。

Copyright (c) 2004-2007 株式会社タイムインターメディア About Us