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
- 2004-09-30 Vine Linux 3.0でJ2SE 5.0のappletviewer文字化けを防ぐ
- 2004-09-29 char -> hex
- 2004-09-28 ワイルドカード代りの !$
- 2004-09-27 gauche.time Gaucheで時間を計測する
- 2004-09-24 bg ジョブをバックグラウンドに移す
- 2004-09-22 grep で特定のパターンを「含まない」ファイルを探す
- 2004-09-21 auto-save-buffers Emacsでファイルの自動保存
- 2004-09-17 C ビット演算
- 2004-09-16 a2ps (perl版)
- 2004-09-15 行番号付きのファイル表示
- 2004-09-14 深いディレクトリツリーでの grep
- 2004-09-13 HDD のデータの抹消
- 2004-09-10 echo でファイル一覧
- 2004-09-09 mew メッセージのリナンバリング
- 2004-09-08 mew 重複したメッセージの削除
- 2004-09-07 wget
- 2004-09-06 xli スライドショウ
- 2004-09-03 w3m HTMLをプレーンテキストに変換する
- 2004-09-02 rm *~
- 2004-09-01 LaTeX 箇条書の項目間の行間を詰める
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
2004-09-29 char -> hex
文字 '0'〜'9'、'a'〜'f' を16進数字とみなして、整数に変換する。これは、 「ハッカーのたのしみ」の和田英一先生の「推薦の辞」にある例題です。
「常識的には」、
#define c2n(x) ((x)-((x)&64?87:48))
とか(ここでは和田先生の関数をマクロで表現しています)。 でも、もっと短く。
#define c2n(x) ((x)%87%48)
と書けるそうです。
上記の本には、「こういう精神が漲っている」。
是非一読を、おすすめします。
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 !$ $
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)))
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 では必須だったにちがいないのだが、 今は知らない人がいてもすこしも変じゃないのだろうねぇ。
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'
とやる。
そのものずばり、grep -L というのもありますね。GNU grepだけかな。
grep の -L オプションでも行けます
ちなみに 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)をどうぞ。
There is no comment.
2004-09-17 C ビット演算
符号なし整数 x が2の羃乗かどうかをチェックする
#define isPowerOf2(x) !((x) & ((x)-1))
不思議でしょ。
x & (x - 1)
は一番右にある on ビットを off にする。
There is no comment.
2004-09-16 a2ps (perl版)
ヘッダなし、フッタなし、枠なし、時刻なし、ポートレートで印刷
$ a2ps -nh -nf -ns -L "" -l "" -p foo.txt | lpr
There is no comment.
2004-09-15 行番号付きのファイル表示
$ less -N Prelued.hs
のように less に N オプションを指定する。 このようなオプションを持たないページャを使うときには、
$ grep -n \^ Prelude.hs | more
とか。面倒な場合は alias にしてしまうという手もある。
$ cat -n Prelude.hs | more
cat -n でも行けますね。 grep みたくファイル名が出ないけど。
test
2004-09-14 深いディレクトリツリーでの grep
$ find . -name "*.hs" -print | xargs grep mapAccumL /dev/null
/dev/null が味噌なんだなぁ。grep は複数のファイルを渡されたときには、 マッチしたファイル名を表示してくれるのだけど、一つしか渡されないと、 ファイル名を表示してくれない。そこで、/dev/null を追加して、 複数のファイルが grep に渡ることを保証するというわけ。
There is no comment.
2004-09-13 HDD のデータの抹消
ブートフロッピィでLinuxを起動して、/dev/hda のデータを抹消する。
# dd if=/dev/zero of=/dev/hda
とやると、/dev/hda 全体にゼロが書き込まれる。/dev/zero は常にゼロで満された バッファを返す特殊ゼロファイルからの読み込みを行うデバイス。
There is no comment.
2004-09-10 echo でファイル一覧
ファイルのリストが欲しいとき、ls だと、alias で余計な修飾がついたりする ことがあって、それが邪魔になるときがある。そんなときには、
$ echo *
\ls って escape もありかな。
2004-09-09 mew メッセージのリナンバリング
Summary モードで O
There is no comment.
2004-09-08 mew 重複したメッセージの削除
$HOME/.mew.el に
(setq mew-scan-form-mark-delete t)
とやっておいて、Summary モードで M とすると、重複メッセージに 削除マークが付く。
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)でダウンロードする。
There is no comment.
2004-09-06 xli スライドショウ
MagicPoint などで作成したスライドでスライドショウをしたいとき、
xli -delay 30 -goto p01.png -fullscreen p??.png
などとする。p??.png という一連の画像ファイルを30秒ごとに切り替え、 最後までいくと、p01.png にもどって、また、繰り返し切り替えます。
There is no comment.
2004-09-03 w3m HTMLをプレーンテキストに変換する
ときどきやりたくなるのが、HTML -> plain text の変換。
$ w3m -dump -cols 78 http://www.example.org/index.html > example.txt
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
とやればよい。キーストロークは長いけれど、記号がない分、打ちやすいので そんなに、気にならない。
私の場合、あまり気にせず定期的に実行するバックアップスクリプトの中で以下のように実行しています。 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}
There is no comment.
There is no comment.