Shammer's Philosophy

My private adversaria

2012-05-01から1ヶ月間の記事一覧

LISP で改行しながら文字列出力する・他

LISP で改行しながら文字列出力する・改 - Shammerismで、write を使う、という話を書いたが、よく調べてみるとterpri というのが new-line をストリームに送る、という関数だった。 CLHS: Function TERPRI, FRESH-LINE write-line で改行しているところに、…

LISP で改行しながら文字列出力する・改

LISP で改行しながら文字列出力する - Shammerismの実装では、改行が一行ごとにならなかったので別の方法を考えてみました。write というのがあるのでそれでできるかなと思ったのも束の間、以下のようなエラーに。 (with-open-file (f "file.txt" :direction…

Autotoolset を使ってみる

Tarball からビルドする際、呪文のように ./configure make make install を実行しているが、この形式でインストールが可能にしてくれるのがAutotoolsetというもの。ちょっとだけ試しに使ってみる。 実行ファイルの用意 #include <stdio.h> int main(){ printf("Hello</stdio.h>…

CLOSエクササイズ_値渡し参照渡し

ちょっと今更感もあるが、Cのように関数で値を渡したときに参照渡しではなく値渡しになるのかが気になる。値渡しではなく、参照渡しと予想してはいるが、、、そうじゃないならポインタを見えなくしている意味がない。 ? (defclass test () ((x :reader get-x…

LISP で改行しながら文字列出力する

sorting - Common Lisp Concatenate and newline - Stack Overflowの方法を参考にしてできました。(write-line "文字列" stream) を使うことで実現できる。 (with-open-file (f "file.txt" :direction :output) (let ((lines (list "aaa" "bbb" (concatenate…

システムで定義されたマクロを確認する方法

C

以下のようにすることで確認できる。 $ echo | cpp -dM #define __DBL_MIN_EXP__ (-1021) #define __UINT_LEAST16_MAX__ 65535 .....Cのソースは、OS などのプラットフォームが変わっても問題なくコンパイルできるように、環境ごとに展開されるコードを変え…

include の動きを確認してみる

C

gcc の -e というオプションを使うと、プリプロセッサがどのようにソースコードを変更したのかを確認することができる。例えば、以下のような sub.c というソースを int func1(){ return 0; } main.c が include しているとする。 #include "sub.c" int main…

ライブラリの依存関係を調べる

C

ldd というコマンドで確認することができる。ls が依存するライブラリを調べる場合は以下のようになる。 $ ldd `which ls` linux-vdso.so.1 => (0x00007ffc6558b000) libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f1e0ba5c000) librt.…

分割コンパイル

C

C言語で作成したソースを gcc でコンパイルする際、何もオプションを指定しなければ a.out という名前の実行ファイルが生成される。しかし、実行ファイルができるまでにもいくつかの工程が存在している。 プリプロセッサの処理 オブジェクトコードの作成 オ…

逆アセンブルしてみる

C

objdump というコマンドで逆アセンブルできるみたいなのでちょっとやってみた。とりあえず、以下の HelloWorld プログラムを逆アセンブルしてみる。本当に Just Memo という内容だが。 #include <stdio.h> int main(void){ printf("HelloWorld!\n"); return 0; } これ</stdio.h>…

C言語によるスーパーLinuxプログラミング

C

標題の書籍を購入してみました。Amazonのリンクはhttp://www.amazon.co.jp/C%E8%A8%80%E8%AA%9E%E3%81%AB%E3%82%88%E3%82%8B-%E3%82%B9%E3%83%BC%E3%83%91%E3%83%BCLinux%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-C%E3%83%A9%E3%82%…

ポインタを堀り下げるその2

C

ポインタを堀り下げるその1 - Shammerismの続き。堀り下げるとか言ってもわかっている人からすればハア?何そのアタリマエのこと・・・みたいな感じなんだろうなぁ。まあ、そんなことはどうでもいい。自分がわかるようになることが重要なんだから。ポインタ…

ポインタを堀り下げるその1

C

配列とポインタその2 - Shammerism以来になるが、またポインタを少しやる。というか、もうちょっと堀り下げていきたいと思う。ポインタも最初は簡単。しかし、どこかのタイミングでよくわからなくなる。それがどこなのかはよくわからないが。変数に&をつけ…

Python でファイルを読み込み

簡単な例だがメモ。 >>> f = open('test-text.txt') >>> data = f.read() >>> f.close() >>> lines = data.split('\n') >>> print lines ... Python もいずれは IO function 集みたいなのを書いておいた方がいいかも。 さらに、読み込んだ行に特定の文字が含…