Programing

Brainf*ck

http://www.kmonos.net/alang/etc/brainfuck.php 前どこかで見て気になっていたんだけど、こういう物か。 インタープリンタぐらいだったら作れそう。

XORを使用したリスト

XORを使用したリストがあるらしい。 検索したけど、日本語サイトでは解説が無いのでメモ 性能は普通のよりも、速度、データ量で上回る。 通常の構造体は以下の様な感じ typedef struct node { struct node *prev; struct node *next; int data; } node; xor…

C言語強い

http://www.tiobe.com/index.htm?tiobe_index いまだに、2位というのがすごい。 まあ、自分のメイン言語もC言語だけどね。

Pthread + Boehm GCでSIGSEGV

仕事でテスト辺りが今のメイン作業なので、気晴らしに家でプログラムを作っている。 それで、ここ数日悩んでいたのが、Pthreadを使っている環境でBoehm GCのGC_malloc()を使うとSIGSEGVが発生する現象。 ネットで調べても解決しないかったので、解決した方法…

「はじめてのカーネル・ソース」

面白そうな連載があったのでメモ。 そんなにも長くなさそうだし入門にはいいかも。 Kernel2.4だけどIPC関連は読んだ。 あと、ドライバ(というかLKM)を作るためにsys_write()とかのシステムコール関係は広く浅く読みました。 Unix Cはそれなりに経験がある人…

プログラミング関係のWikipediaがおもしろい

色々揃ってて、暇つぶしにはもってこい。 説明が足りなくても検索すれば良いし新たな概念をしるにはもってこい。 http://ja.wikipedia.org/wiki/Category:%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0 http://ja.wikipedia.org/wiki/Category:%E…

Category:信号処理

色々役立ちそうなのでメモ http://ja.wikipedia.org/wiki/Category:%E4%BF%A1%E5%8F%B7%E5%87%A6%E7%90%86

興味がある技術まとめ

仕事、個人関係なく今興味がある技術のリストメモ。 順番は思いついたままなので優先度じゃない。 ただし、現在進行形の物はのぞく。 *Windowsの開発(dos等の環境等も含む) Windowsの開発も出来たら仕事の幅も広がるしね。 VC++.net 2003を大分前に買ったの…

メモ

http://code.nanigac.com/

Xorshift法

XORとシフトを使うだけの超高速な擬似乱数生成アルゴリズムらしい。 http://lucille.atso-net.jp/blog/?p=9 PDFのリンクが切れている。 以下が多分変わりのPDFかな。 http://www.iro.umontreal.ca/%7Elecuyer/myftp/papers/xorshift.pdf

HookDate

Windows用のソフトで、時間関係の関数をHookするらしい。 これって以前作ったhttp://d.hatena.ne.jp/longicorn/20070227#p1と発想が同じだなあ。 Windowsは詳しくしらないけど、WindowsでもHookできるんだなあ。 自分が作ったのはgettimeofday()しかHookして…

malloc()のヒープの拡大を確認する

malloc()の実装は(細かい部分は無視して) ・OSからヒープをまとめて取得する。 ・malloc()されるとヒープを分けあたえる。 ・ヒープに余裕がない場合は、ヒープを拡大する。 と言う感じだと思います。 でこの流れを実感できる方法があったのでメモ。

1.8.6インストール

いつの間にやらRubyの新版がリリースされている。 ちょうどいいので、1.8.6をインストール。 ./configure && make && make installで問題なく終了。 aliasを設定したんだが、whichだと/usr/bin/rubyを指している。 でもruby -vすると1.8.6を表示する。 which…

Narray

仕事が忙しいのでメモだけ。 http://narray.rubyforge.org/index.html.ja Arrayの高速版? C言語レベルでの実装で早いらしい。 ただ、最新版が2006-08-09版なので開発が止まっている?

拡張ライブラリでHashを使う

拡張ライブラリ中でHashを使う方法がほとんど分からない。 README.EXT.jaにも書いていない。 ちょっと調べたのでメモ。 rb_hash_new()で空のハッシュをつくれる。 Rubyレベルの[]やHahs.newと同じ。 rb_hash_aset(hash, key, val)はhashに追加する。 逆に取…

CPU使用率取得

なんかCPU使用率取得を知りたいらしく検索してくるらしい。 Kernel2.6で試しに作ってみた。 ヒントは/proc/statのCPUの行。 この内容の意味はman procに書いてある。

CでRubyライブラリを作ってて思った事

まだ、Rubyのソースも読み始めたばっかりだけど、 それでもCでRubyライブラリを作ってて思った事。 Linux Kernelのソースのときも感じたんだけど、 乱暴ないい方をするとC言語のラッパーというか、 C言語を便利にしただけのような気がしてきた。 もちろん、…

CライブラリとRuby間でバイナリデータのやりとり

色々あって、CでRubyのライブラリを作成中。 http://www.loveruby.net/w/RubyExtensionProgrammingGuide.htmlを参考にしています。 まあ基本は上記サイトとか,Rubyに付属のREADME.EXT.jaを見れば大体分かる。 でタイトルの件だけど、今まで不思議だったのは…

pthread_cond

久しぶりにPthreadについて。 Ruby1.9のYARVではスレッドがRubyレベル出はなく、システムのスレッドを使用するようになる。 Ruby1.9のソースを眺めていたらpthread関係で、 pthread_cond系を使用していたのを見たのを切っ掛けにメモ。 普段からPthreadは使用…

1.9と2.0の違い

ruby_dev:29912に書いてある。 1.9と2.0です。つまり、「将来のRuby」と言われていたもののうち、 現実的な期日でリリースできそうなものを1.9と呼び、もうちょっ と(だいぶ?)時間がかかりそうなものを2.0と呼んでます。 大幅に変更するのは2.0、1.9はYARV+…

1.8と1.9

速度測定4でソースを見ずに書いていたところの追記。 1.8.6を落として、適当にdiffで軽く見た。 やっぱりArrayとかHashなどの基本的なところはソースが同じだった。 もちろん1.8からの修正は多数あったけど。 なので1.8と1.9で速度がほとんど変化していない…

速度測定4

昨日1.9をとりあえずコンパイルできたので、 1.9で今までのと同じ比較をする。 先に結論を書いておくと、 速度 基本的に1.8よりも早くなる。 早さは数倍から10倍くらい。 ただ、ほとんど変化しないのもある。 速度比較 今までやってきた速度比較を1.9でも行…

速度測定3

injectを使用する/しない n = 500000 Benchmark.bm do |x| ary = Array.new(n){1} x.report{ num = 0 ary.each do |i| num += i end } x.report{ ary.inject(0){|result, item|result += item} } end user system total real 0.940000 0.240000 1.180000 ( 1…

RubyInline

Rubyコード中にCのコードを埋め込めることが出来る。 これでRubyを高速化出来るらしい。 これって、コンパイラがいるのかな? コンパイラ無しでいいのなら組込みで使用できるんだけど。 まあ、CでRubyライブラリの作り方も分かったので最悪はCで作ればいいけ…

FUSE

これでユーザー空間ファイルシステムを簡単に作成できるらしい。 http://www-06.ibm.com/jp/developerworks/linux/060317/j_l-fuse.shtml

Ethernetケーブルがささっているのか、抜けているのかを検出

http://www.komoto.org/etc/ethlink.html に書いてあった。 サンプルソースを見ると、ioctl()でSIOCETHTOOLオプションを渡している。 Linuxのみなのかな? 他のUnixでも使えたら便利なんだけど。

どうしてプログラマに・・・プログラムが書けないのか?

私と同様、この著者は、プログラミングの仕事への応募者200人中199人はコードがまったく書けないということで苦労している。繰り返すが、彼らはどんなコードも書けないのだ。 彼が引用している著者というのはイムランのことで、彼は単純なプログラムも書けな…

構造体

StructがあるがOpenStructというのがあるのを今日初めて知った。 http://www.sakalab.org/prog-ruby/ruby-man-ja-html-20051129/OpenStruct.html どうやらStructよりも使い勝手が良さそう。 ソースも勉強になりそうな内容。

速度測定2

昨日の続き。

__send__

の使いかたが分かった。 def hoge(arg) #なんか処理 end __send__(:hoge, arg) Cで配列辺りに関数ポインタのリストを持っておいて、 動的に関数を呼ぶような処理に使える。 しかもcaseなんか使用するよりエレガント。sendでもいいみたい。 $ refe __send__|n…