programming
http://www.radiumsoftware.com/0605.html#060531より.Approximate Sorting というアルゴリズムがあるらしい.大変興味深い.
subversion で管理しているファイルに実行権限を付けるには以下のようにする. $ svn propset svn:executable ファイル名ファイル名は複数同時に指定できるので,*.sh にまとめて実行権限を付ける場合は $ svn propset svn:executable *.shとする. Subversi…
http://bashdb.sourceforge.net/ bashで書いたシェルスクリプトがデバッグできるみたい.ステップ実行とかも普通にできるみたい.
Tiny C Compilerhttp://fabrice.bellard.free.fr/tcc/
よくマニピュレータにハマッている人がいるので,メモ.よく使うと思われる manipulator と,その動作. setw(n) 出力幅を最低n文字にする setprecision(n) 出力桁をn桁にする right 出力を右に詰める left 出力を左に詰める setw(n)の設定だけは一度なにか…
http://www.nongnu.org/failmalloc/メモリ関連のデバッグ用ライブラリ.failmalloc を使うと,malloc()がNULLを返した場合にプログラムが正常に処理を継続できるか調査できる.なんとも恐ろしい発想をする方がいらっしゃるものだということで,日記に書いて…
linuxで時刻を取得する方法について調査した.(2006/7/17更新) 時刻を取得する方法としては システムコールを呼び出し,時刻を管理しているデバイス(RTCとかカーネル内部のオブジェクト)を読む方法 userlandから直接CPUが持っているクロックのレジスタを読む…
cvs上のrepositoryを svn用のrepository に変換する手順をメモ.手順は大まかには cvs2svn で cvsのリポジトリを svn形式でdump dumpした結果を,svnadmin load でsvnのリポジトリに読み込む の2段階. 手順1 まず,cvs2svn でリポジトリをsvn形式でdumpす…
http://gccsummit.org/2006/2006-GCC-Summit-Proceedings.pdf より.gdbに追加された新機能について,個人的に面白そうだと思ったものをメモ. checkpoint レジスタとかスタックの内容を保存したり,復元する機能.たとえば,バグが発生する直前の状態を一度…
結論からいうと,まだ出来ないみたい.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 必要になるまで値の評価を行わない 一度…
このページの内容は古すぎるので,新しい記事を用意しました http://d.hatena.ne.jp/pyopyopyo/20180426/p1 複雑な shell script を書くためには,コマンドライン引数の構文解析が必要不可欠.そこで,bash上でgetoptを使ってコマンドライン引数を解析する方…
とりあえず,数値を+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>…
C言語でgimp のプラグインを作る方法ついて調査したので,メモ.gimpでは,単純なプラグインならscheme(script-fu)で書くことが出来ます.しかし,複雑な処理を実現するには,やはりCでローレベルな記述する必要があります.というわけで,環境は linux のみ…
http://ll.jus.or.jp/2006/blog/doukaku1 にて,「キミならどう書く 2.0」というプログラミングスキルを競うコンテストが開催されているみたい.お題は「100までの整数から素数を列挙せよ」.面白そう.とはいえ,100までの素数なんて25個しかないのだから,…
最近のgtk-2系はいろいろ中身の設計から変更があり,ツリービューや,コンボボックスなどのコンポーネントは, モデル:M ビュー:V コントローラ:C のMVCとして再設計されたみたい.実際には以下の4つのコンポーネントから構成される. The tree view widget…
久しぶりにgtkを使ったので,ポイントとなる処理をメモ. widgetは ハッシュ表を持っていて,{文字列, 整数値}のペアを追加できる. たとえば {"user_data", value} を追加するなら,以下のようにする. g_object_set_data(G_OBJECT(widget), "user_data", (…
http://gcc.gnu.org/gcc-4.1/This release is a bug-fix release ということで,やっと 4.1.1 が出た.めでたい.
C言語でxmlを読み込む方法についてメモ.ライブラリはlibxml2 を使った.xmlをパースするAPIには,大きくわけてSAXとDOMの2種類ある.両者を比較すると以下のようになる. SAX (Simple API for xml) DOM (Document Object Model) メモリ消費量 少ない 多い x…
そろそろ公開されそうなlinux-2.6.17 で,新しく追加されるシステムコール splice について調べてみたのでメモ. splice とはオーバヘッドの少ないパイプらしい. 利点は,ゼロコピー.つまりメモリ間のコピー回数を減らすことで,オーバヘッドを削減してい…
makeの暗黙のルールを確認するには次のコマンドを実行すればよい. $ make --print-data-baseまた make のマニュアルも参考になるはず.
新人向けドキュメントの下書をメモ. 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には生成規則(ルール)を記述する ターゲット: ソース コマンドMakefileにはこのように,"ソース"のファイルから "ターゲット"のファイルをつくる場合にどのような"コマンド"を実行するかを記述する.これを生成…
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:eol-style が native の場合,クライアント側の環境に併せて改行コードを変換するとのこと. コマンドとして…
*1でも触れたように,svn はファイルの属性を管理できる.たとえば,mime-typeとその値の一覧を見るには次のようにする. $ svn propget svn:mime-type -v ファイル名基本的に,mime-typeでは,バイナリかテキストか,つまり行の概念があるかないかを指定す…
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.0 で -fprofile-generate -fprofile-use を使ってみた.使用したコードは,手元にあった自作のもの.26028ステップもあります(涙両オプションは コンパイル時とリンク時 両方で指定する必要がある. $ export CPPFLAGS="-fprofile-genereate"…
コンパイラでプロファイルを利用した最適化を行うと,例えば条件分岐の頻度をサンプルすることで分岐予測の精度を高めることができ,その結果より最適化されたバイナリが生成できる.例えば,以前のgccでは gcov コマンドと gcc の -fprofile-arcs -ftest-co…
gcc-4.1.0 が正式に release された模様.