c
@shuyo さんがブログを書いた数日後に奇しくもロジスティック回帰を実装してexpのオーバーフローではまっていたので,expの限界について,自分自身で体感してみることにした.@shuyo さん曰く,だいたい710くらいでinfになりまっせ,とのこと.ふむふむこれ…
デーモンプロセスを作る場合には,教科書によく書かれている2度forkは不要ではないか? ということを以前の記事に書いた. [c][unix]UNIXネットワークプログラミングのお勉強 (2) デーモンの作り方 - 睡眠不足?! 確かにBSDのdaemon(3) のコードでは,forkは…
そういえば一か月前はネットワークプログラミングを勉強していたことを思い出した.案の定,すべてを忘れていたのでもう一度復習. マシン内の通信の場合,TCP通信 (PF_INET) 以外にファイルを介したソケット通信 (PF_UNIX) という選択肢がある.どれくらい…
C言語初心者向けメモ. 僕はファイル処理をする場合にはfgetsを多用するのだけれど,その際 #define BUFFLEN 102400 char buff[ BUFFLEN ]; とか,スタック領域に乗らない程大きな領域であれば char *buff = malloc(sizeof(char) * BUFFLEN); というようにゆ…
前回: お手軽転置インデクスを用いた検索エンジン: (1) AND検索編 - 睡眠不足?! 前回に続き,なんちゃって検索エンジンを作ってみます.ネットワークプログラミングをやりたかった理由のひとつが,検索エンジンをデーモンとして立ち上げておけば,ソケット…
3連休何をしようかと考えていたら,なんとなくデーモンプログラムを書いてみたくなったので,Cによるネットワークプログラミングを勉強することにした. 2年くらい前に文献[1]を購入し,過去に2回ほど勉強しようと思ったけれど,とにかくインクルードする必…
突然Cでコードを書きたくなったので,なんちゃって転置インデクスを用いた検索プログラムを書いてみた.転置インデクスとは,索引語と呼ばれる単語が出現する文書情報 (場合によっては位置情報も) を保持したデータ構造のことで,索引語と,それに対応する転…
ワード単位で操作したいので,4バイト型として(signed) int型を利用していた.符号なんて別に関係ないだろう,そう思っていた時期が僕にもありました. シフト演算を行う際に符号あり型の場合,右シフトした際の左ビットは0で埋められるとは限らない.1で埋…
会話の中で「ヒープに比べてスタック領域の方が処理が速い」という話が出てきて,なぜそうなのかすぐにわからなかった.後で考えてみれば,ヒープ領域はアドレスから参照するしかないので,ワンステップ余計な処理が必要だな,と気がついた.けれど,そのロ…
ゆとりなもので,ついこないだまで動的リンクと静的リンクの違いがわかっていなかった.動的リンクというのが理解できた頃,そっかユーティリティライブラリは自分で共有ライブラリ作ってしまえばいいんだ,というごく当たり前のことが理解できた.UNIXをさ…
variable-byte(VB) codeに引き続きgamma codeを実装してみた.今度はかなり苦労. というのもVBのように固定長でないため,異なるビット長の結果を詰めて格納していかなければならない.先輩に教わったマスクの作り方(~0ビット列を左シフトして戻ーす,右シ…
なんだかbit-wiseな圧縮手法の実装を練習してみたくてカタカタしてみた. コードは汚いので割愛.結果 4Byte integer -> VB code # 824, 5, 214577を圧縮 before: 00000000 00000000 00000011 00111000 00000000 00000000 00000000 00000101 00000000 000000…
どう書く.orgの問題で久しぶりに解けそうな問題がでてきた.比較をしないソート http://ja.doukaku.org/187/ぱっと思いついたのはビンソート.というわけでCで実装.だんだんリファレンスを見なくても書けるようになってきた.
strtokはstaticなchar*を分割していくので,入れ子にすることができない.それを解決するのがstrtok_r. char *strtok_r(char *str, char *delimiter, char **save_ptr) こりゃ便利.
勉強会に予習なしで参加してしまったので復習。 特筆することはないけれどPascalの場合、配列の添字が1からsizeという表現のため、 二分木の配列表現がC系とは異なるので注意 例えば、array[i]の子要素はよく left: array[i*2] right: array[i*2 + 1]と表現…
今までCでこーぢんぐするとき,常にひとつのファイルで作っていた. 数百行程度だったらいいのだろうけれど,大きくなったり,ライブラリを作ろうとなったら 分割コンパイルせななぁ,と思っていたけれど,入門書やら分割コンパイルに関して記述されている文…
`u_int32_t' undeclared (first use in this function)というエラーが出た #include <sys/types.h>で解決</sys/types.h>
真偽値を返す条件文の場合,真を返すことが発覚 int x = (0 < 10); printf("%u\n", x); //=> 1int x = 5; int *p, *q; p = &x; q = p + 1; printf("%p %p\n", p, q); //=> 0xbfbfebec 0xbfbfebf0 printf("%u %u\n", p, q); //=> 3217026028 3217026032
独習Cの問題は余裕余裕と鼻くそほじりながら解いていたら,ある問題でひっかかる. strcat()関数を自分で設計しなさいという問題. 文字列とポインタについて大分知識がついたつもりだったところで落とし穴. あれ,うまくいかないよママン char *str1, *str…
基本中の基本であるCをやることにした.かじったことはあったけれど基本からやり直したい. そしてK&Rなんて硬派な書物は怖いので独習Cあたりから始めることにする. 独習C作者: ハーバートシルト,柏原正三,Herbert Schildt,トップスタジオ出版社/メーカー: …