2006-01-01から1年間の記事一覧

emacs でソースコードを整形する方法

emacsの機能を駆使して,ソースコードを半自動的に整形する方法.手順はたったの2stepです.具体的には step-1 C-c C-q で自動インデント step-2 M-x align-regex でキーワードを指定してテキストを整列 という流れになります.以下例としてC言語で記述され…

viでスペルチェッカーを使う方法

vi (厳密にはviの改良版,vim)でスペルチェッカを使う方法. :set spellemacs だと M-x ispell-region とか M-$ で同様にスペルチェックできる.

VMware & linux-2.6.19

VMware が提供するネットワークドライバ vmxnet は、 linux-2.6.19 でコンパイルできない。以下、簡単なパッチを書いたのでメモ。まず、ドライバのソースコードを展開 $ tar xvf /usr/lib/vmware-tools/modules/source/vmxnet.tar 次に、下記のパッチをあて…

壊れたHDDからデータを取出す方法

停電とか,寿命でHDDが壊れてしまった場合,せめて残っているデータだけでも取出したい・・・そういう泣きそうな状況に陥った人向けの作業メモ.概要としては,例えばCDROMをCDRへコピーする際には, 一度 CDROMからデータを吸い出してISOイメージをつくって…

software raid の復旧手順

redhat/whitebox/fedora 系でsoftware raidを復旧する手順は以下の通り. 下準備 状況を把握する $ cat /proc/mdstatたとえば以下のような出力が得られた場合,md1を構成しているsda5の領域が壊れている. Personalities : [raid1] read_ahead 1024 sectors …

std::ostream_iterator

#include <iostream> #include <iterator> #include <vector> using namespace std; int main() { vector<int> d; d.push_back(1); d.push_back(3); d.push_back(13); copy(d.begin(), d.end(), ostream_iterator<int> (cout, " ")); return 0; } #include <iostream> #include <iterator> using namespace std; int mai</iterator></iostream></int></int></vector></iterator></iostream>…

firefox をデバッガ上で動かす方法.

run-mozilla.sh というスクリプトを使うと,デバッガ gdb 経由でfirefoxが起動できる. $ /usr/lib/firefox-1.5.0.7/run-mozilla.sh -g ./firefox-bin -d gdbこれだけ.詳細は run-mozilla.sh のコメントにいろいろ書いてある. 10/23追記. 同じことが, $ …

glibc でバックトレースを表示する方法

2017年11月6日追記.demangle 処理を追加したコードを公開しています.詳細は http://d.hatena.ne.jp/pyopyopyo/edit?date=20171106 で.http://0xcc.net/blog/archives/000067.html にて知ったのだが,glibc はバックトレースを表示するための関数を提供し…

gdbでSTLのコンテナの値を表示する方法

STLを使ったコード,たとえば std::vector<int> array;というコードがあったとして,gdbでデバッグ中に array[0] の値を確認したい場合はどうするか?実はこれが結構面倒なのだ. gdbでデバッグ中に,変数の値を確認したい場合は print コマンドを使う.例えば in</int>…

double型 v.s. float型

浮動小数点演算を行う際に 浮動小数点型(floatかdoubleかlong doubleか) 計算精度 を変えると,実際にどれくらい計算速度が異なるのか測定してみた.測定した環境は fedora core 5 ベースのlinuxで,中身としては linux-2.6.17, glibc-2.4 Intel(R) Pentium(…

C99 における浮動小数点演算の丸め方,例外の取り扱い

C言語の新しい規格であるISO C99では, 浮動小数点演算の丸め方 例外の取り扱い を制御するために,11個の関数を定義している. #include <fenv.h> // 例外関係 int feclearexcept(int excepts); int fegetexceptflag(fexcept_t *flagp, int excepts); int feraiseex</fenv.h>…

C99における浮動小数点演算の計算精度(その2)

C99では,FLT_EVAL_METHODの値で float型 や double型の計算精度を制御できるようになっている.では FLT_EVAL_METHOD の初期値はどうなっているのか? Linux環境で調べてみた. 結論: デフォルトでは FLT_EVAL_METHOD は 2.つまり float でも double でも …

C99における浮動小数点演算の計算精度(その1)

C99では,FLT_EVAL_METHOD というラベルの値で,浮動小数点演算の計算精度が制御できる.FLT_EVAL_METHODの値と保証される精度の関係は以下の表の様になる. FLT_EVAL_METHODの値 float型が保証する精度 double型が保証する精度 0 float double 1 double dou…

objprelink2: Faster C++ program startups by improving runtime linking efficiency.

http://objprelink.sourceforge.net/ Objprelink is a code transformation tool that optimizes C++ shared libraries in order to reduce the runtime linking time.

Approximate Sorting

http://www.radiumsoftware.com/0605.html#060531より.Approximate Sorting というアルゴリズムがあるらしい.大変興味深い.

abobe acrobat reader 7.0.8

今頃知ったのだが,先月 7.0.8 なるバージョンがリリースされていたらしい.ftp://ftp.adobe.com/pub/adobe/reader/unix/7x/7.0.8/jpn時間が出来たらアップグレードしておこう.

svn でファイルに実行権限を与える

subversion で管理しているファイルに実行権限を付けるには以下のようにする. $ svn propset svn:executable ファイル名ファイル名は複数同時に指定できるので,*.sh にまとめて実行権限を付ける場合は $ svn propset svn:executable *.shとする. Subversi…

bashのスクリプト用デバッガ (その1)

http://bashdb.sourceforge.net/ bashで書いたシェルスクリプトがデバッグできるみたい.ステップ実行とかも普通にできるみたい.

debian で googleearth する

ライセンスの都合上, debian で googleearth を使うためには *.deb を自動生成するスクリプトを apt-get でインストール スクリプトを使ってパッケージ *.deb を生成 dpkg -i でインストール という作業が必要になる.まず,パッケージを生成するまでの作業…

Tiny C Compiler

Tiny C Compilerhttp://fabrice.bellard.free.fr/tcc/

std::iomanip

よくマニピュレータにハマッている人がいるので,メモ.よく使うと思われる manipulator と,その動作. setw(n) 出力幅を最低n文字にする setprecision(n) 出力桁をn桁にする right 出力を右に詰める left 出力を左に詰める setw(n)の設定だけは一度なにか…

failmalloc

http://www.nongnu.org/failmalloc/メモリ関連のデバッグ用ライブラリ.failmalloc を使うと,malloc()がNULLを返した場合にプログラムが正常に処理を継続できるか調査できる.なんとも恐ろしい発想をする方がいらっしゃるものだということで,日記に書いて…

aspellがデフォルトで使う辞書を設定する方法

emacs から M-x ispell-buffer とか M-$ で スペルチェッカ aspell を起動すると,以下のようなエラーがでる. Error: No word lists can be found for the language "ja_JP"このような場合は 以下のような内容で~/.aspell.conf を用意すれば良い. lang en_…

linuxで時刻を取得する方法

linuxで時刻を取得する方法について調査した.(2006/7/17更新) 時刻を取得する方法としては システムコールを呼び出し,時刻を管理しているデバイス(RTCとかカーネル内部のオブジェクト)を読む方法 userlandから直接CPUが持っているクロックのレジスタを読む…

cvs2svn cvsのリポジトリをsvnのリポジトリに変換

cvs上のrepositoryを svn用のrepository に変換する手順をメモ.手順は大まかには cvs2svn で cvsのリポジトリを svn形式でdump dumpした結果を,svnadmin load でsvnのリポジトリに読み込む の2段階. 手順1 まず,cvs2svn でリポジトリをsvn形式でdumpす…

gdb:New or Improved User-level Features

http://gccsummit.org/2006/2006-GCC-Summit-Proceedings.pdf より.gdbに追加された新機能について,個人的に面白そうだと思ったものをメモ. checkpoint レジスタとかスタックの内容を保存したり,復元する機能.たとえば,バグが発生する直前の状態を一度…

Linux で エディットコンテニューする方法.

結論からいうと,まだ出来ないみたい.LinuxのC/C++開発環境に不足している機能の一つにエディットコンテニューがある.エディットコンテニューってのは,デバッガ上で実行中のプログラムを書き換えてもそのままプログラムを継続してデバッグできる機能.mic…

遅延評価

http://www.scheme.com/tspl3/ の"Section 5.6. Delayed Evaluation" より引用。 An expression subject to lazy evaluation is not evaluated until its value is required and once evaluated is never reevaluated 必要になるまで値の評価を行わない 一度…

bash と getopt の連携.

このページの内容は古すぎるので,新しい記事を用意しました http://d.hatena.ne.jp/pyopyopyo/20180426/p1 複雑な shell script を書くためには,コマンドライン引数の構文解析が必要不可欠.そこで,bash上でgetoptを使ってコマンドライン引数を解析する方…

gimp のプラグインの雛形

とりあえず,数値を+1するプラグインを書いてみた.つまり,script-fu で (inc 10)とすると,(11) を返すプラグインである. #include <libgimp/gimp.h> static void query (void); static void run (const gchar *name, gint nparams, const GimpParam *param, gint *nretur</libgimp/gimp.h>…