programming

Approximate Sorting

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

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

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

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

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

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を返した場合にプログラムが正常に処理を継続できるか調査できる.なんとも恐ろしい発想をする方がいらっしゃるものだということで,日記に書いて…

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>…

gimpのプラグインのコンパイル方法(gimptoolの使い方)

C言語でgimp のプラグインを作る方法ついて調査したので,メモ.gimpでは,単純なプラグインならscheme(script-fu)で書くことが出来ます.しかし,複雑な処理を実現するには,やはりCでローレベルな記述する必要があります.というわけで,環境は linux のみ…

お題は「100までの整数から素数を列挙せよ」

http://ll.jus.or.jp/2006/blog/doukaku1 にて,「キミならどう書く 2.0」というプログラミングスキルを競うコンテストが開催されているみたい.お題は「100までの整数から素数を列挙せよ」.面白そう.とはいえ,100までの素数なんて25個しかないのだから,…

gtk に関するメモ: Tree and List Widget

最近のgtk-2系はいろいろ中身の設計から変更があり,ツリービューや,コンボボックスなどのコンポーネントは, モデル:M ビュー:V コントローラ:C のMVCとして再設計されたみたい.実際には以下の4つのコンポーネントから構成される. The tree view widget…

gtk に関するメモ: widget に値を関連付ける方法

久しぶりにgtkを使ったので,ポイントとなる処理をメモ. widgetは ハッシュ表を持っていて,{文字列, 整数値}のペアを追加できる. たとえば {"user_data", value} を追加するなら,以下のようにする. g_object_set_data(G_OBJECT(widget), "user_data", (…

gcc-4.1.1 released

http://gcc.gnu.org/gcc-4.1/This release is a bug-fix release ということで,やっと 4.1.1 が出た.めでたい.

C言語でxmlを読み込む

C言語でxmlを読み込む方法についてメモ.ライブラリはlibxml2 を使った.xmlをパースするAPIには,大きくわけてSAXとDOMの2種類ある.両者を比較すると以下のようになる. SAX (Simple API for xml) DOM (Document Object Model) メモリ消費量 少ない 多い x…

sys_splice

そろそろ公開されそうなlinux-2.6.17 で,新しく追加されるシステムコール splice について調べてみたのでメモ. splice とはオーバヘッドの少ないパイプらしい. 利点は,ゼロコピー.つまりメモリ間のコピー回数を減らすことで,オーバヘッドを削減してい…

Makefile の書き方(その3)

makeの暗黙のルールを確認するには次のコマンドを実行すればよい. $ make --print-data-baseまた make のマニュアルも参考になるはず.

Makefile の書き方(その2)

新人向けドキュメントの下書をメモ. CPPFLAGS=-I/usr/local/include LDLIBS=hogehoge.a all: sample sample: sample.o sub.o というMakefileと,二つのソースファイル sample.c sub.c を用意し, $ make allを実行した場合の処理を順に説明する. all: samp…

Makefile の書き方(その1)

新人向けドキュメントの下書をメモ. makefileには生成規則(ルール)を記述する ターゲット: ソース コマンドMakefileにはこのように,"ソース"のファイルから "ターゲット"のファイルをつくる場合にどのような"コマンド"を実行するかを記述する.これを生成…

CPU機能フラグ

linux で /proc/cpuinfo を見ると, cpuがサポートしている命令セットなどの情報が得られる.たとえば,Xeon だと flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe lm p…

svn における文字コード,改行コード

テキストファイルには 文字コード,改行コードの問題があるが,svn では改行コードを自動的に変換する機能があるらしい.どうも,svn は,属性 svn:eol-style が native の場合,クライアント側の環境に併せて改行コードを変換するとのこと. コマンドとして…

svn における ファイルの属性

*1でも触れたように,svn はファイルの属性を管理できる.たとえば,mime-typeとその値の一覧を見るには次のようにする. $ svn propget svn:mime-type -v ファイル名基本的に,mime-typeでは,バイナリかテキストか,つまり行の概念があるかないかを指定す…

gcc-4.1 で プロファイルを利用した最適化を行う(その3)

gccのinfoによれば,-fprofile-generate -fprofile-use は内部で以下のオプションを有効にするとのこと. -fprofile-generate -fprofile-arcs -fprofile-values -fvpt -fprofile-use -fbranch-probabilities -fvpt -funroll-loops -fpeel-loops -ftracer

gcc-4.1 で プロファイルを利用した最適化を行う(その2)

実際に gcc-4.1.0 で -fprofile-generate -fprofile-use を使ってみた.使用したコードは,手元にあった自作のもの.26028ステップもあります(涙両オプションは コンパイル時とリンク時 両方で指定する必要がある. $ export CPPFLAGS="-fprofile-genereate"…

gcc-4.1 で プロファイルを利用した最適化を行う(その1)

コンパイラでプロファイルを利用した最適化を行うと,例えば条件分岐の頻度をサンプルすることで分岐予測の精度を高めることができ,その結果より最適化されたバイナリが生成できる.例えば,以前のgccでは gcov コマンドと gcc の -fprofile-arcs -ftest-co…

gcc-4.1.0 release

gcc-4.1.0 が正式に release された模様.