Open Source WEB



2004-09-30 Vine Linux 3.0でJ2SE 5.0のappletviewer文字化けを防ぐ

 sudo ln -s /usr/share/fonts/alias/TrueType /usr/java/jdk1.5.0/jre/lib/fonts/fallback

参考文献


Name:
Comment:

There is no comment.


2004-09-29 char -> hex

文字 '0'〜'9'、'a'〜'f' を16進数字とみなして、整数に変換する。これは、 「ハッカーのたのしみ」の和田英一先生の「推薦の辞」にある例題です。

「常識的には」、

#define c2n(x) ((x)-((x)&64?87:48))

とか(ここでは和田先生の関数をマクロで表現しています)。 でも、もっと短く。

#define c2n(x) ((x)%87%48)

と書けるそうです。
上記の本には、「こういう精神が漲っている」。 是非一読を、おすすめします。


Name:
Comment:

There is no comment.


2004-09-28 ワイルドカード代りの !$

複数のファイルを消去するのに rm にワイルドカードを渡す前に ls に渡して確認を取ることが多いですね。

$ ls a*
a1 a2 a3
$ rm s*
$ ls a*
a1 a2 a3

「あれっ?」「ギャーッ!」となるわけです。そんなときには、!$ を使う。

$ ls a*
a1 a2 a3
$ rm !$
rm a*
$ ls !$
$


Name:
Comment:

There is no comment.


2004-09-27 gauche.time Gaucheで時間を計測する

どのようなプログラムにせよ性能を評価するために、特定の処理についての 時間を計測する必要がでてきます。Gaucheの場合、インタラクティブに使う 方法(timeマクロ)とプログラムに埋め込んで使える方法(<time-counter> オブジェクト)の二つが gauche.time モジュールで提供されています。

(use gauche.time)

with-time-counter を使うと便利。

(define (my-eval exp env)
  (let* ((ta (make <real-time-counter>))
         (tb (make <real-time-counter>))
         (tree (with-time-counter ta (analyze exp)))
         (result (with-time-counter tb (tree env))))
    (begin
      (format #t "Time spent in analyze: ~s~%" (time-counter-value ta))
      (format #t "Time spent in execute: ~s~%" (time-counter-value tb))
      result)))


Name:
Comment:

There is no comment.


2004-09-24 bg ジョブをバックグラウンドに移す

ターミナルのコマンドラインから emacs を起動するときには、& 付きで 立ち上げることも多いのだけど、普通に(& を付けずに)起動して作業を開始 してしまうこともよくある。emacs がフォアグラウンドで走るので、 そのターミナルが別作業に使えなくなる。X Window を使って作業している のだから、別のターミナルを立ち上げればいいだけなんだけれど、 ディレクトリの深いところで作業しているとき、別のターミナルを開いて、 そのディレクトリまで降りてというのは面倒だったりする。この時、 フォアグラウンドで動作している emacs をバックグラウンドに移したくなる。

こんなときには、emacs を起動したターミナル上で、Ctrl-z を押下して から、bg コマンドを実行する。

% emacs foo.lhs

zsh: 17054 suspended emacs foo.lhs
% bg
[1]  + continued  emacs foo.lhs
%

bg や fg などのコマンドは、以前は Unix では必須だったにちがいないのだが、 今は知らない人がいてもすこしも変じゃないのだろうねぇ。


Name:
Comment:

There is no comment.


2004-09-22 grep で特定のパターンを「含まない」ファイルを探す

grep には -c というオプションがあって、これは指定したパターンが 何回あらわれるかをカウントしてくれます。

$ grep -c "<var>" *.html
gauche-refe.html:0
gauche-refe_1.html:0
gauche-refe_10.html:2
gauche-refe_100.html:6
gauche-refe_101.html:13
gauche-refe_102.html:1
gauche-refe_103.html:25
gauche-refe_104.html:13
gauche-refe_105.html:12
gauche-refe_106.html:46
gauche-refe_107.html:0
gauche-refe_108.html:14
gauche-refe_109.html:6
...

というわけで、パターンが0回あらわれるものだけを取りだせばよので、

$ grep -c "<var>" *.html | sed -n 's/:0$//p'

とやる。


Name:
Comment:
shiro: (Sat Sep 25 06:45:35 2004 )
そのものずばり、grep -L というのもありますね。GNU grepだけかな。
yoichi: (Sun Oct 10 11:43:44 2004 )
grep の -L オプションでも行けます
yoichi: (Sun Oct 10 11:46:56 2004 )
ちなみに FreeBSD は GNU grep でした。
;; shiro さんのコメントとかぶりましたすみません。


2004-09-21 auto-save-buffers Emacsでファイルの自動保存

auto-savebuffers.el を load-path が通っているディレクトリに置いて、~/.emacs に

(require 'auto-save-buffers)
(run-with-idle-timer 0.5)

を仕込む。これは、0.5秒間キー入力がなければ、更新のあったファイルを セーブするというものです。ただし、サイズの巨大なファイルの編集をしている ときには、あまり、小さい値を設定すると、ファイルのセーブのたびにすこし 待たされて欝陶しいかもしれない。

詳しくは、高林哲氏のEmacsでファイルの自動保存 (auto-save-buffers)をどうぞ。


Name:
Comment:

There is no comment.


2004-09-17 C ビット演算

符号なし整数 x が2の羃乗かどうかをチェックする

#define isPowerOf2(x) !((x) & ((x)-1))

不思議でしょ。

x & (x - 1)

は一番右にある on ビットを off にする。


Name:
Comment:

There is no comment.


2004-09-16 a2ps (perl版)

ヘッダなし、フッタなし、枠なし、時刻なし、ポートレートで印刷

$ a2ps -nh -nf -ns -L "" -l "" -p foo.txt | lpr


Name:
Comment:

There is no comment.


2004-09-15 行番号付きのファイル表示

$ less -N Prelued.hs

のように less に N オプションを指定する。 このようなオプションを持たないページャを使うときには、

$ grep -n \^ Prelude.hs | more

とか。面倒な場合は alias にしてしまうという手もある。


Name:
Comment:
aa: (Sat Oct 16 17:56:39 2004 )
$ cat -n Prelude.hs | more
cut-sea: (Fri Nov 12 12:20:55 2004 )
cat -n でも行けますね。
grep みたくファイル名が出ないけど。
primo1209: (Mon Feb 13 15:21:23 2006 )
test


2004-09-14 深いディレクトリツリーでの grep

$ find . -name "*.hs" -print | xargs grep mapAccumL /dev/null

/dev/null が味噌なんだなぁ。grep は複数のファイルを渡されたときには、 マッチしたファイル名を表示してくれるのだけど、一つしか渡されないと、 ファイル名を表示してくれない。そこで、/dev/null を追加して、 複数のファイルが grep に渡ることを保証するというわけ。


Name:
Comment:

There is no comment.


2004-09-13 HDD のデータの抹消

ブートフロッピィでLinuxを起動して、/dev/hda のデータを抹消する。

# dd if=/dev/zero of=/dev/hda

とやると、/dev/hda 全体にゼロが書き込まれる。/dev/zero は常にゼロで満された バッファを返す特殊ゼロファイルからの読み込みを行うデバイス。


Name:
Comment:

There is no comment.


2004-09-10 echo でファイル一覧

ファイルのリストが欲しいとき、ls だと、alias で余計な修飾がついたりする ことがあって、それが邪魔になるときがある。そんなときには、

$ echo *


Name:
Comment:
cut-sea: (Mon Nov 8 11:37:23 2004 )
\ls って escape もありかな。


2004-09-09 mew メッセージのリナンバリング

Summary モードで O


Name:
Comment:

There is no comment.


2004-09-08 mew 重複したメッセージの削除

$HOME/.mew.el に

(setq mew-scan-form-mark-delete t)

とやっておいて、Summary モードで M とすると、重複メッセージに 削除マークが付く。


Name:
Comment:

There is no comment.


2004-09-07 wget

Web サイトのコピー

wget -r -L -l 10 http://www.example.org/index.html

http://www.example.org を再帰回収(-r)で相対リンクだけ(-L)をたどり 深さ10まで(-l 10)でダウンロードする。


Name:
Comment:

There is no comment.


2004-09-06 xli スライドショウ

MagicPoint などで作成したスライドでスライドショウをしたいとき、

xli -delay 30 -goto p01.png -fullscreen p??.png 

などとする。p??.png という一連の画像ファイルを30秒ごとに切り替え、 最後までいくと、p01.png にもどって、また、繰り返し切り替えます。


Name:
Comment:

There is no comment.


2004-09-03 w3m HTMLをプレーンテキストに変換する

ときどきやりたくなるのが、HTML -> plain text の変換。

$ w3m -dump -cols 78 http://www.example.org/index.html > example.txt


Name:
Comment:

There is no comment.


2004-09-02 rm *~

Emacsでファイルを編集した後、バックアップファイルを rm *~ で消したく なることがある。(vi つかえよってのは、なしね。) で、

$ rm *~ 

のつもりが、手がすべって、

$ rm * ~ 

とかやっちゃって、「ぎゃっ!」ということにならないように、

$ alias rm='rm -i'

をやっとけということなんだけど。そうしても、 結局、「本当に消去してもいいですか?」に答えるのが面倒になってしまう。 でどうしているかというと、Makefile を作って、

clean   :
        -rm *~

というのを入れておくことにしている。開発用のディレクトリでなくても、 あたらしい working directory を作ったときに、ついでに

$ cat > Makefile
clean   :
        -rm *~
^D

とやっておく。バックアップファイルを消去したいときには、

$ make clean

とやればよい。キーストロークは長いけれど、記号がない分、打ちやすいので そんなに、気にならない。


Name:
Comment:
ranzo: (Thu Sep 9 13:46:31 2004 )
私の場合、あまり気にせず定期的に実行するバックアップスクリプトの中で以下のように実行しています。
  find /home/hoge -name "*~" | xargs rm
で気になる時だけ、Emacsの Dired mode で、「~」押せば表示しているディレクトリのバックアップファイルすべてに D マークがつくので、あとは「x」で削除してます。


2004-09-01 LaTeX 箇条書の項目間の行間を詰める

LaTeX で箇条書を使ったときに、各項目が一行におさまるような場合、 項目間の行間の空きが広過ぎると感じることがあります。 その場合以下のように \setlength を使って項目間の空きを指定すれば、 行間を詰められます。

\begin{description}
 \setlength{\itemsep}{-5pt}
 \item[基本式] 言語が関る最も単純なものを表す
 \item[組合せ法] より単純なものから合成物を作る
 \item[抽象化法] 合成物に名をつけ、単一のものとして扱う
\end{itemize}


Name:
Comment:

There is no comment.


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

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