Ubuntu 12.04時代のファイルシステムの選び方 ext4でいいじゃん編
※2013年1月3日、ext2/3/4を更新。
※2012年11月14日、NTFSの欠点を追加。
行っとけ! Ubuntu道場! ― 第55回 〜師範、Ubuntu 12.04の特徴を教えてください!〜
↑の記事の3ページ目にXFSのことが書いてあった。
hito:むしろXFSが安心して使えるようになることの方が大きいかなぁ。 hito:XFSって、わりとメモリ食うんですよ。 で、システム内のメモリがなくなってきたりするとですね……。 Linux全般でどんな挙動になるでしょう、そこのやまねさん。 やまね:キャッシュやバッファを始末するために、 メモリ上に貯めてるものを「追い出す」動作がかかるね。 hito:で、その「追い出す」先がXFSだったりするわけですね。 hito:そうすると何が起こるかっつーと、 「メモリが足りない→XFS領域にデータを書きだそうとする→XFSがメモリを要求する」という……。 hito:で、そういう挙動はダメだよねーっていう修正がやっと入った。6〜7年ぐらいかかってると思う。 まあXFSにはもっと前にスタック使い尽くす問題とかもあったんで、 やっとこさヘビーな使い方ができるかなーという感じ。
XFSの問題点の話になると、xfs stack overflowが引き合いに出されていたような気がするが、このバグがマシになったという事なのだろうか。
この記事を読んで、Linuxのファイルシステムはどれを使えばいいのかを改めて考えてみた。ファイルシステムに関する詳しい知識が無い私の、現時点での印象を纏めると以下のような感じになる。
名前 | 印象 | 利点 | 欠点 |
---|---|---|---|
Btrfs | 開発中 不安定 遅い |
? | ? |
ext2 | 古い 速い |
Ext2Fsdを使えばWindowsからアクセスできる 削除したファイルを復元できる(R-Linux) |
古い fallocate非対応 |
ext3 | 枯れてる 速度はそこそこ |
Ext2Fsdを使えばWindowsからアクセスできる 削除したファイルを復元できる(Ext4magic・R-Linux・extundelete) |
fsckが遅い fallocate非対応 |
ext4 | 全体的に結構速そう バグ多そう |
Ext2Fsdを使えばWindowsからアクセスできる 削除したファイルを復元できる(Ext4magic・R-Linux・extundelete) 色んなディストリのデフォルトファイルシステムなので安心感がある サイズの小さいファイルは結構断片化しにくい fallocate対応 |
ext3よりfsckが速くなっているが、それでも容量が増えると時間がかかる 128MBを超えるような大きなファイルを対象としたfallocateの性能がイマイチで断片化しまくり 遅延確保の性能がイマイチなので大きなファイルは断片化しまくり |
JFS | ? | ? | ? |
NTFS | 共有用 倉庫用 |
Linuxからも読み込めるし、書き込める |
Linuxから書き込むのは今でも何かちょっと不安 Linuxからだと読み書きの速度がちょっと遅い |
ReiserFS | 枯れてる | サイズの小さいファイルに強いらしい? | 今あえてコレを選ぶ理由が分からない |
Reiser4 | ? | ext3よりは速いらしい | ? |
XFS | 倉庫用 バグ多そう |
サイズの大きなファイルに強い シーケンシャルアクセスが速い ファイルが断片化しにくい fallocate対応かつ精度が高い ダイレクトI/Oの性能が良い 削除したファイルは復元不可能らしい |
ランダムアクセスが遅いらしい ファイルやフォルダの作成/削除が遅いらしい 昔nfsと組み合わせると駄目とかいうのどこかで見た気がする。もう直ってるかもしれないが。 クラッシュ時の復旧が難しそう 削除したファイルは復元不可能らしい |
で、どんな人がどのファイルシステムを使うべきなのか考えるとこうなる。
対象 | ファイルシステム |
---|---|
新しもの好き | Btrfs |
安定志向 | ext2/ext3 |
デフォルトのでいいじゃん派 | ext4 |
マルチブート派 | NTFS |
断片化嫌い デフラグ好き 128MBよりも大きなファイルを沢山持っている人 |
XFS |
上級者 | Btrfs/JFS/NTFS/ReiserFS/Reiser4/XFS |
やっぱext4は最強だわ。私は/とバックアップ用外付けHDDはext4、ローカルのデータ置き場はXFSにしようと思う。ってかしてる。あとタイトルは釣り。
Ubuntu 12.04でデフラグする(e4defrag編)
※2012年9月28日、間違えていた部分を修正。Thanks!、id:omasanoriさん。
Ubuntu 12.04からe4defragというext4用のデフラグツールが利用できるようになった。
$ e4defrag Usage : e4defrag [-v] file...| directory...| device... : e4defrag -c file...| directory...| device...
デバイスも対象に出来るらしい。
-vオプションを付けると、extentsがいくつに減ったか表示される。
-cは断片化状況を表示するオプションで、sudoと-vと一緒に使う。
e4defragはfake-defragと同じくfallocateを使用している。Ubuntu 12.04では11.10にあったfallocateのバグは修正されているようだが、精度が11.04の頃並に低下しているので、断片化を完全に解消することは難しいような気がする。
-cを付けてファイルを対象に実行すると、次のように表示される。
$ sudo e4defrag -cv ubuntu-12.04-beta2-desktop-amd64.iso.bak <File> [ext 1]: start 36286464: logical 0: len 12288 [ext 2]: start 36319232: logical 12288: len 2048 ※長いので省略 [ext 30]: start 36945920: logical 176128: len 2048 [ext 31]: start 36944933: logical 178176: len 843 Total/best extents 31/1 Average size per extent 23099 KB Fragmentation score 0 [0-30 no problem: 31-55 a little bit fragmented: 56- needs defrag] This file (ubuntu-12.04-beta2-desktop-amd64.iso.bak) does not need defragmentation. Done.
断片化の数スコアが0〜30、31〜55だとデフラグの必要が無く、56以上だとデフラグが必要と言われるらしい。
それをデフラグするとこうなる。
$ sudo e4defrag -v ubuntu-12.04-beta2-desktop-amd64.iso.bak ext4 defragmentation for ubuntu-12.04-beta2-desktop-amd64.iso.bak [1/1]ubuntu-12.04-beta2-desktop-amd64.iso.bak: 100% extents: 31 -> 25 [ OK ] Success: [1/1]
extentsの数が31から25に減った。なんという低性能。無いよりマシだけど、これはひどいと言わざるを得ない。
readの正しい使い方、writeの正しい使い方
※2012年5月2日、追記。
下記のコードよりもcopybenchのコードを参考にした方がいいかもしれない。
C言語: write(2)の正しい使い方というページがあったのだが、今は見ることが出来なくなっているので、似たような内容を残しておくことにした。
正しい使い方とはつまり、システムコールは割り込まれて中断することがあるからちゃんとエラーチェックをしましょう、ということだ。
以下に、writeを使用するためのソースコードを転載する。
/* http://www.koders.com/c/fidBA4A85F16684724E234A9F3D52154B6A3EE76852.aspx?s=md5 */ ssize_t full_write(int fd, const void *buf, size_t len) { ssize_t cc; ssize_t total; total = 0; while (len) { cc = safe_write(fd, buf, len); if (cc < 0) return cc; /* write() returns -1 on failure. */ total += cc; buf = ((const char *)buf) + cc; len -= cc; } return total; }
/* http://www.koders.com/c/fid1D28BE2FE0F7496591C635321BDFC406ED821089.aspx?s=md5 */ ssize_t safe_write(int fd, const void *buf, size_t count) { ssize_t n; do { n = write(fd, buf, count); } while (n < 0 && errno == EINTR); return n; }
readも同じような処理が必要なので、以下のような関数を使う。
/* http://www.koders.com/c/fidE71B6BE5B9B1AE1265F1CFBA2DB698715258B0F5.aspx?s=ftp */ int full_read(int fd, char *buf, int len) { int cc; int total; total = 0; while (len > 0) { cc = read(fd, buf, len); if (cc < 0) return -1; if (cc == 0) break; buf += cc; total += cc; len -= cc; } return total; }
/* http://www.koders.com/c/fidA918F638FF7469723CAC99A84826115C1310BC35.aspx?s=ftp */ ssize_t safe_read(int fd, void *buf, size_t count) { ssize_t n; do { n = read(fd, buf, count); } while (n < 0 && errno == EINTR); return n; }
ネットワークアプリケーションの場合は、さらにSIGPIPEシグナルを無視する処理が必要らしい。
関連:Programming UNIX Sockets in C - Frequently Asked Questions
Ubuntu 10.10 + Fierfox 4.0 beta 11 + Flash Player 10.2 で、ニコニコ動画の動画ファイルを保存する
今まではYouTubeやニコニコ動画などのFlashを使用した動画サイトのキャッシュは /tmp に保存されていたのだが、Flash Player 10.2からは別の場所(キャッシュフォルダかな?)に保存されるようになったらしい。
とりあえず代替手段として、LinuxやFirefox 4.0にも対応しているVideo DownloadHelper 4.8.2をインストールして使ってみたところ、保存はできた。キャッシュからコピーするんじゃなくてダウンロードし直しているっぽい点とか、設定の Services > Download > 保存ディレクトリのディレクトリを変更するボタンが正常に動作しない辺りが気になるが。
Ubuntu 10.10で4096バイトセクタなHDDをフォーマットする場合
※2011年4月15日、修正。
関連:Ubuntu 10.10のpartedでGPTったメモ
ドスパラの製品レビューを見たら良さ気だったので、Seagate ST2000DL003を購入してみた。ディスク・ユーティリティ(Palimpsest)でフォーマットしてみたところ、以下のようになった。
sudo fdisk -lu /dev/sdc [sudo] password for : ディスク /dev/sdc: 2000.4 GB, 2000398934016 バイト ヘッド 255, セクタ 63, シリンダ 243201, 合計 3907029168 セクタ Units = セクタ数 of 1 * 512 = 512 バイト セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O size (minimum/optimal): 512 bytes / 512 bytes ディスク識別子: 0x000314cb デバイス ブート 始点 終点 ブロック Id システム /dev/sdc1 63 3907024064 1953512001 83 Linux
始点が63バイト63セクタになっている。どうやらディスク・ユーティリティはまだAdvanced Format Technologyに対応していないらしい。この状態だとフォーマット時の書き込み速度が30MB/sぐらいにまで落ちる。GPartedだと以下のようになる。
sudo fdisk -lu /dev/sdc ディスク /dev/sdc: 2000.4 GB, 2000398934016 バイト ヘッド 255, セクタ 63, シリンダ 243201, 合計 3907029168 セクタ Units = セクタ数 of 1 * 512 = 512 バイト セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O size (minimum/optimal): 512 bytes / 512 bytes ディスク識別子: 0x0003db79 デバイス ブート 始点 終点 ブロック Id システム /dev/sdc1 2048 3702228991 1851113472 83 Linux /dev/sdc2 3702228992 3906619391 102195200 83 Linux /dev/sdc3 3906619392 3907028991 204800 5 拡張領域
始点が2048バイト2048セクタになっている。これだと普通に速い。これやWD20EARSなどの4Kセクターを採用したHDDをLinuxでフォーマットする場合は、fdiskかpartedかGPartedを使えばいいってことか。
関連:Seagate ST2000DL003に論理パーティションを作成しようとしてエラー
※2011年1月23日追記。ST2000DL003の新ファームウェアが公開された。Barracuda Green Firmware Update [218171]
C言語でファイルをコピーする(マルチスレッド&ダイレクトI/O編)
※2012年8月9日、追記。普通のファイルコピーのソースが見たい場合はcopybenchのソースが参考になると思う。このページの内容はやや古くなっているうえ、ソースコードの質が低いので注意。
そこに至る経緯。
- mmapが速いらしいと知ってググる。
- ファイルコピーだとmmapよりread/writeの方が早い、という事を知る。
- copybench-1.0をちょっと弄ってO_DIRECT使うようにしたら読み書きの速度が2/3程度にまで落ちた。
- 試しにreadだけやったらごっつ早い(つまりwriteが遅い?)
- 何となくpthread使ったら速度改善(゚∀゚)
シングルスレッドだと遅いのかな?よく分からん。
/* gcc -Wall -std=c99 `pkg-config --cflags --libs glib-2.0` -lpthread -O -o cp_thread_dio cp_thread_dio.c */ #define _XOPEN_SOURCE 600 #define _GNU_SOURCE #define _FILE_OFFSET_BITS 64 #define _LARGEFILE64_SOURCE #define IO_BUF 16777216 #define PATH_LEN 8192 #include <stdio.h> #include <stdlib.h> #include <limits.h> #include <fcntl.h> #include <unistd.h> #include <sys/stat.h> #include <utime.h> #include <glib.h> #include <pthread.h> char *buf1; /*ファイルを読み書きする際のバッファ*/ char *buf2; int rcount_1 = -1; int rcount_2 = -1; int wcount_1 = -1; int wcount_2 = -1; int woffset = 0; void * r_func1(void *read_tmp) { rcount_1 = read(*(int *)read_tmp, buf1, IO_BUF); if(rcount_1 == -1) { perror("r_func1"); exit(-1); } return NULL; } void * w_func1(void *write_tmp) { if(rcount_1 == IO_BUF) { wcount_1 = pwrite(*(int *)write_tmp, buf1, rcount_1, woffset); woffset += rcount_1; if(wcount_1 == -1) { perror("w_func1"); exit(-1); } printf("wcount_1 : %d\n", wcount_1); printf("woffset : %lld\n", (long long)lseek(*(int *)write_tmp, woffset, SEEK_SET)); } else { wcount_1 = pwrite(*(int *)write_tmp, buf1, (rcount_1 - (rcount_1 % 512)) + 512, woffset); woffset += rcount_1; if(wcount_1 == -1) { perror("w_func1"); exit(-1); } printf("wcount_1 : %d\n", wcount_1); printf("woffset : %lld\n", (long long)lseek(*(int *)write_tmp, woffset, SEEK_SET)); } return NULL; } void * r_func2(void *read_tmp) { rcount_2 = read(*(int *)read_tmp, buf2, IO_BUF); if(rcount_2 == -1) { perror("r_func2"); exit(-1); } return NULL; } void * w_func2(void *write_tmp) { if(rcount_2 == IO_BUF) { wcount_2 = write(*(int *)write_tmp, buf2, rcount_2); woffset += rcount_2; if(wcount_2 == -1) { perror("w_func2"); exit(-1); } printf("wcount_2 : %d\n", wcount_2); printf("woffset : %lld\n", (long long)lseek(*(int *)write_tmp, woffset, SEEK_SET)); } else { wcount_2 = pwrite(*(int *)write_tmp, buf2, (rcount_2 - (rcount_2 % 512)) + 512, woffset); woffset += rcount_2; if(wcount_2 == -1) { perror("w_func2"); exit(-1); } printf("wcount_2 : %d\n", wcount_2); printf("woffset : %lld\n", (long long)lseek(*(int *)write_tmp, woffset, SEEK_SET)); } return NULL; } void read_write(const char *from, const char *target_file) { struct stat stat_buf; //今回はutimensatを使わない struct utimbuf times; pthread_t t1; pthread_t t2; int ifrom = open(from, O_RDONLY | O_DIRECT | O_NOATIME); int ito = open(target_file, O_RDWR | O_CREAT | O_DIRECT, S_IRUSR | S_IWUSR); rcount_1 = read(ifrom, buf1, IO_BUF); for(;;) { pthread_create(&t1, NULL, r_func2, (void *)&ifrom); pthread_create(&t2, NULL, w_func1, (void *)&ito); pthread_join(t1, NULL); pthread_join(t2, NULL); if((rcount_1 == 0) || (rcount_2 == 0)) break; pthread_create(&t1, NULL, r_func1, (void *)&ifrom); pthread_create(&t2, NULL, w_func2, (void *)&ito); pthread_join(t1, NULL); pthread_join(t2, NULL); if((rcount_1 == 0) || (rcount_2 == 0)) break; } fstat(ifrom, &stat_buf); ftruncate(ito, stat_buf.st_size); times.actime = stat_buf.st_atime; times.modtime = stat_buf.st_mtime; utime(target_file, ×); rcount_1 = -1; rcount_2 = -1; wcount_1 = -1; wcount_2 = -1; woffset = 0; close(ifrom); close(ito); } int main(int argc, char *argv[]) { char current_dir[PATH_LEN]; char from[PATH_LEN]; char to[PATH_LEN]; char *from_basename; char *target_file; if(argc == 3) { if(g_file_test(argv[1], G_FILE_TEST_IS_REGULAR)) { if(g_file_test(argv[2], G_FILE_TEST_IS_DIR)) { if((realpath(argv[1], from) == NULL) || (realpath(argv[2], to) == NULL)) { puts("絶対パスの作成に失敗しました"); exit(-1); } getcwd(current_dir, sizeof(current_dir)); printf("cwd is : %s\n", current_dir); printf("from : %s\n", from); printf("to : %s\n", to); //buf1 = malloc(IO_BUF); //buf2 = malloc(IO_BUF); posix_memalign((void *)&buf1, 512, IO_BUF); posix_memalign((void *)&buf2, 512, IO_BUF); chdir(to); from_basename = g_path_get_basename(from); target_file = g_build_path(G_DIR_SEPARATOR_S, to, from_basename, NULL); read_write(from, target_file); } } } else { puts("引数が正しくありません"); } free(buf1); free(buf2); return 0; }
C言語を独学で習得するのに適した入門書を探してまとめてみた件について
※2017年11月8日、「やさしいC 第5版」「かんたん C言語」「ふつうのLinuxプログラミング」「C言語による スーパーLinuxプログラミング」「モダンC言語プログラミング」のリンクを修正。
Amazonで評判が良い本を、発売日順に並べてみた。
『C言語改訂版1、2』を読んだ後に『独習C』を読めばだいたい理解できると思う。
- 作者: 高橋麻奈
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2017/06/14
- メディア: 単行本
- この商品を含むブログを見る
価格 | 2,700円 |
---|
- 第2版を購入済み。
プログラミング学習シリーズ C言語改訂版 1 はじめてのCプログラミング
- 作者: 倉薫
- 出版社/メーカー: 翔泳社
- 発売日: 2009/02/13
- メディア: 大型本
- 購入: 3人 クリック: 14回
- この商品を含むブログ (2件) を見る
プログラミング学習シリーズ C言語改訂版 2 はじめて学ぶCの仕組み
- 作者: 倉薫
- 出版社/メーカー: 翔泳社
- 発売日: 2009/02/13
- メディア: 大型本
- 購入: 2人 クリック: 6回
- この商品を含むブログ (3件) を見る
価格 | 2,030円 |
---|
- 2のみ購入済み。
- 作者: ハーバート・シルト,柏原正三,トップスタジオ
- 出版社/メーカー: 翔泳社
- 発売日: 2007/12/06
- メディア: 大型本
- 購入: 1人 クリック: 23回
- この商品を含むブログ (15件) を見る
価格 | 3,456円 |
---|
- 購入済み。
- 作者: 柴田望洋
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2014/08/09
- メディア: 単行本
- この商品を含むブログ (1件) を見る
- 作者: 柴田望洋
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2015/12/09
- メディア: 単行本
- この商品を含むブログ (2件) を見る
価格 | 2,484円 |
---|
- 作者: 大川内隆朗,大原竜男
- 出版社/メーカー: 技術評論社
- 発売日: 2016/08/22
- メディア: Kindle版
- この商品を含むブログを見る
価格 | 2,678円 |
---|
『C言語ポインタ完全制覇』は必読、『CプログラミングFAQ』も買うべき、『エキスパートCプログラミング』を理解できれば中級者?
- 作者: 川俣晶
- 出版社/メーカー: 日経BP社
- 発売日: 2010/01/21
- メディア: 単行本
- 購入: 1人 クリック: 3回
- この商品を含むブログ (4件) を見る
価格 | 3,024円 |
---|
- ※2017年2月20日、いつの間にか絶版になっている。
- 作者: 柴田望洋,由梨かおる
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2016/02/20
- メディア: 単行本
- この商品を含むブログを見る
価格 | 2,160円 |
---|
- 作者: 柴田望洋
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2015/05/27
- メディア: 単行本
- この商品を含むブログ (1件) を見る
- 作者: 柴田望洋
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2008/10/22
- メディア: 単行本
- 購入: 1人 クリック: 10回
- この商品を含むブログ (3件) を見る
価格 | 2,592円 |
---|
- 作者: 平田豊
- 出版社/メーカー: 秀和システム
- 発売日: 2003/11/29
- メディア: 単行本
- 購入: 2人 クリック: 54回
- この商品を含むブログ (10件) を見る
価格 | - |
---|
- 購入済み。
- ※2014年8月23日、いつの間にか絶版になっている。
- 作者: 前橋和弥
- 出版社/メーカー: 技術評論社
- 発売日: 2001/01/01
- メディア: 単行本
- 購入: 22人 クリック: 147回
- この商品を含むブログ (75件) を見る
価格 | 2,462円 |
---|
- 購入済み。
CプログラミングFAQ―Cプログラミングのよく尋ねられる質問 (新紀元社情報工学シリーズ)
- 作者: スティーブサミット,Steve Summit,北野欽一
- 出版社/メーカー: 新紀元社
- 発売日: 2004/01/01
- メディア: 単行本
- クリック: 37回
- この商品を含むブログ (10件) を見る
CプログラミングFAQ―Cプログラミングのよく尋ねられる質問 (アジソン ウェスレイ・トッパン 情報化学シリーズ)
- 作者: スティーブサミット,Steve Summit,北野欽一
- 出版社/メーカー: トッパン
- 発売日: 1997/03
- メディア: 単行本
- この商品を含むブログ (1件) を見る
価格 | - |
---|
- 購入済み。
エキスパートCプログラミング―知られざるCの深層 (Ascii books)
- 作者: ピーターヴァン・デ・リンデン,Peter van der Linden,梅原系
- 出版社/メーカー: アスキー
- 発売日: 1996/03
- メディア: 単行本
- 購入: 17人 クリック: 404回
- この商品を含むブログ (78件) を見る
価格 | - |
---|
- 購入済み。
- ※2013年11月24日、いつの間にか絶版になっている。
新・明解C言語で学ぶアルゴリズムとデータ構造 (明解シリーズ)
- 作者: 柴田望洋
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2017/02/08
- メディア: 単行本
- この商品を含むブログ (1件) を見る
- 作者: 柴田望洋,辻亮介
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2011/08/27
- メディア: 単行本
- 購入: 3人 クリック: 37回
- この商品を含むブログ (7件) を見る
価格 | 2,700円 |
---|
- 旧版の方を購入済み。
- 作者: 紀平拓男,春日伸弥
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2011/03/26
- メディア: 単行本
- 購入: 15人 クリック: 255回
- この商品を含むブログ (31件) を見る
価格 | 3,024円 |
---|
珠玉のプログラミング 本質を見抜いたアルゴリズムとデータ構造
- 作者: ジョン・ベントリー,小林健一郎
- 出版社/メーカー: 丸善出版
- 発売日: 2014/02/28
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
珠玉のプログラミング―本質を見抜いたアルゴリズムとデータ構造
- 作者: ジョンベントリー,Jon Bentley,小林健一郎
- 出版社/メーカー: ピアソンエデュケーション
- 発売日: 2000/10
- メディア: 単行本
- 購入: 30人 クリック: 551回
- この商品を含むブログ (162件) を見る
価格 | 3,672円 |
---|
定本 Cプログラマのためのアルゴリズムとデータ構造 (SOFTBANK BOOKS)
- 作者: 近藤嘉雪
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 1998/03
- メディア: 単行本
- 購入: 11人 クリック: 169回
- この商品を含むブログ (77件) を見る
価格 | 2,916円 |
---|
C言語による最新アルゴリズム事典 (ソフトウェアテクノロジー)
- 作者: 奥村晴彦
- 出版社/メーカー: 技術評論社
- 発売日: 1991/03/01
- メディア: 単行本
- 購入: 20人 クリック: 396回
- この商品を含むブログ (96件) を見る
価格 | 2,516円 |
---|
- 購入済み。
アルゴリズムとデータ構造 (岩波講座 ソフトウェア科学 3)
- 作者: 石畑清
- 出版社/メーカー: 岩波書店
- 発売日: 1989/03/30
- メディア: 単行本
- 購入: 10人 クリック: 83回
- この商品を含むブログ (17件) を見る
価格 | 4,212円 |
---|
辞書的に使える本は一冊ぐらい持っておきたい。
- 作者: 林晃
- 出版社/メーカー: シーアンドアール研究所
- 発売日: 2011/10/12
- メディア: 単行本(ソフトカバー)
- 購入: 1人 クリック: 2回
- この商品を含むブログを見る
価格 | 3,240円 |
---|
C言語標準ライブラリ関数 ポケットリファレンス [ANSI C、ISO C99 対応] (POCKET REFERENCE)
- 作者: 河西朝雄
- 出版社/メーカー: 技術評論社
- 発売日: 2008/12/27
- メディア: 単行本(ソフトカバー)
- 購入: 1人 クリック: 9回
- この商品を含むブログ (3件) を見る
価格 | 2,462円 |
---|
- ※2016年10月15日、いつの間にか絶版になっている。
S・P・ハービソン3世とG・L・スティール・ジュニアのCリファレンスマニュアル
- 作者: 3世,サムエル・P.ハービソン,ガイ・L.,ジュニアスティール,3,Samuel P. Harbison,Guy L.,Jr. Steele,玉井浩
- 出版社/メーカー: エスアイビーアクセス
- 発売日: 2008/10/01
- メディア: 単行本
- 購入: 9人 クリック: 110回
- この商品を含むブログ (20件) を見る
S・P・ハービソン3世とG・L・スティール・ジュニアのCリファレンスマニュアル
- 作者: 3世,サムエル・P.ハービソン,ジュニア,ガイ・L.スティール,3,Samuel P. Harbison,Jr.,Guy L. Steele,玉井浩
- 出版社/メーカー: エスアイビーアクセス
- 発売日: 2015/04/01
- メディア: 単行本
- この商品を含むブログを見る
価格 | 6,048円 |
---|
- 購入済み。
- 作者: B.W.カーニハン,D.M.リッチー,石田晴久
- 出版社/メーカー: 共立出版
- 発売日: 1989/06/15
- メディア: 単行本
- 購入: 28人 クリック: 721回
- この商品を含むブログ (199件) を見る
価格 | 3,024円 |
---|
まず『ふつうのLinuxプログラミング』、次に『例解UNIXプログラミング教室』、これで基礎は身につくと思う。『Linuxシステムプログラミング』は良書。『詳解UNIXプログラミング』は値段が気にならなければ買うべき?
ふつうのLinuxプログラミング 第2版 Linuxの仕組みから学べるgccプログラミングの王道
- 作者: 青木峰郎
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2017/09/22
- メディア: 単行本
- この商品を含むブログを見る
ふつうのLinuxプログラミング 第2版 Linuxの仕組みから学べるgccプログラミングの王道
- 作者: 青木峰郎
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2017/09/22
- メディア: Kindle版
- この商品を含むブログを見る
ふつうのLinuxプログラミング Linuxの仕組みから学べるgccプログラミングの王道
- 作者: 青木峰郎
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2005/07/27
- メディア: 単行本
- 購入: 35人 クリック: 450回
- この商品を含むブログ (150件) を見る
価格 | 2,970円 |
---|
- 購入済み。
- ※2017年11月8日、第二版が出たらしい。
- 作者: W. Richard Stevens,Stephen A. Rago,大木敦雄
- 出版社/メーカー: 翔泳社
- 発売日: 2014/04/22
- メディア: 大型本
- この商品を含むブログ (2件) を見る
価格 | 8,964円 |
---|
- 作者: Michael Kerrisk,千住治郎
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/12/01
- メディア: 大型本
- クリック: 14回
- この商品を含むブログ (7件) を見る
価格 | 8,208円 |
---|
C言語による スーパーLinuxプログラミング Cライブラリの活用と実装・開発テクニック
- 作者: 飯尾淳
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2017/03/30
- メディア: Kindle版
- この商品を含むブログを見る
価格 | 1,836円 |
---|
- 作者: 小俣光之,種田元樹
- 出版社/メーカー: 秀和システム
- 発売日: 2014/10/07
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
価格 | 3,420円 |
---|
- 作者: 菅谷保之
- 出版社/メーカー: オーム社
- 発売日: 2009/10/15
- メディア: 単行本(ソフトカバー)
- 購入: 6人 クリック: 138回
- この商品を含むブログ (5件) を見る
価格 | - |
---|
- 購入済み。
- ※2016年10月15日、いつの間にか絶版になっている。GTK+3版を執筆中とのこと。
Linuxシステムコールプログラミング (エッセンシャルソフトウェアガイドブック)
- 作者: 山森丈範
- 出版社/メーカー: 技術評論社
- 発売日: 2009/09/24
- メディア: 単行本(ソフトカバー)
- 購入: 3人 クリック: 24回
- この商品を含むブログ (5件) を見る
価格 | - |
---|
- 購入済み。
- ※2016年10月15日、いつの間にか絶版になっている。
- 作者: Bruce Molay,長尾高弘
- 出版社/メーカー: アスキー・メディアワークス
- 発売日: 2008/04/21
- メディア: 大型本
- 購入: 9人 クリック: 280回
- この商品を含むブログ (47件) を見る
価格 |
---|
- 購入済み。
- ※2016年10月15日、いつの間にか絶版になっている。
- 作者: Robert Love,ロバートラブ,千住治郎
- 出版社/メーカー: オライリージャパン
- 発売日: 2008/04/16
- メディア: 大型本
- 購入: 5人 クリック: 181回
- この商品を含むブログ (31件) を見る
価格 | 3,888円 |
---|
- 購入済み。
- 作者: 冨永和人,権藤克彦
- 出版社/メーカー: ピアソンエデュケーション
- 発売日: 2007/09/28
- メディア: 単行本(ソフトカバー)
- 購入: 6人 クリック: 185回
- この商品を含むブログ (22件) を見る
価格 | - |
---|
- 購入済み。
- ※2013年、ピアソンの技術書撤退に伴い絶版。
- 作者: Robert Mecklenburg,矢吹道郎(監訳),菊池彰
- 出版社/メーカー: オライリージャパン
- 発売日: 2005/12/01
- メディア: 大型本
- 購入: 4人 クリック: 115回
- この商品を含むブログ (34件) を見る
価格 | 3,024円 |
---|
Linuxプログラミング―例題で学ぶUNIXプログラミング環境のすべて
- 作者: ニールマシュー,リチャードストーンズ,Neil Matthew,Richard Stones,葛西重夫
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2004/08
- メディア: 単行本
- 購入: 4人 クリック: 69回
- この商品を含むブログ (20件) を見る
価格 | - |
---|
- ※絶版
UNIXネットワークプログラミング〈Vol.1〉ネットワークAPI:ソケットとXTI
- 作者: W.リチャードスティーヴンス,W.Richard Stevens,篠田陽一
- 出版社/メーカー: ピアソンエデュケーション
- 発売日: 1999/07
- メディア: 単行本
- 購入: 8人 クリック: 151回
- この商品を含むブログ (35件) を見る
UNIXネットワークプログラミング〈Vol.1〉ネットワークAPI・ソケットとXTI
- 作者: W.リチャードスティーヴンス,W.Richard Stevens,篠田陽一
- 出版社/メーカー: トッパン
- 発売日: 1999/07
- メディア: 単行本
- 購入: 1人 クリック: 1回
- この商品を含むブログを見る
価格 | - |
---|
- ※2013年、ピアソンの技術書撤退に伴い絶版。
『リーダブルコード』の評判が良いらしい。『Code Complete』は読んでおくべきらしいが、高いし分厚いので上下の二冊とも読むのは大変だと思う。やや古いが『プログラミング作法』と『達人プログラマー』もお薦め。
モダンC言語プログラミング 統合開発環境、デザインパターン、エクストリーム・プログラミング、テスト駆動開発、リファクタリング、継続的インテグレーションの活用 (アスキー書籍)
- 作者: 花井志生
- 出版社/メーカー: KADOKAWA / アスキー・メディアワークス
- 発売日: 2014/01/23
- メディア: Kindle版
- この商品を含むブログ (3件) を見る
価格 | 2,177円 |
---|
リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)
- 作者: Dustin Boswell,Trevor Foucher,須藤功平,角征典
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/06/23
- メディア: 単行本(ソフトカバー)
- 購入: 68人 クリック: 1,802回
- この商品を含むブログ (138件) を見る
価格 | 2,592円 |
---|
- 購入済み。
Cプログラム高速化研究班 コードを高速化する20の実験と達人の技
- 作者: 片山善夫
- 出版社/メーカー: USP研究所
- 発売日: 2012/03/08
- メディア: 新書
- 購入: 1人 クリック: 53回
- この商品を含むブログ (3件) を見る
価格 | 1,944円 |
---|
- 作者: Robert C. Seacord,久保正樹,戸田洋三
- 出版社/メーカー: アスキー・メディアワークス
- 発売日: 2009/09/29
- メディア: 大型本
- クリック: 5回
- この商品を含むブログ (7件) を見る
価格 | 5,184円 |
---|
Code Craft ~エクセレントなコードを書くための実践的技法~
- 作者: Pete Goodliffe,後藤正徳,鵜飼文敏,平林俊一,トップスタジオ,まつもとゆきひろ
- 出版社/メーカー: 毎日コミュニケーションズ
- 発売日: 2007/11/29
- メディア: 単行本(ソフトカバー)
- 購入: 3人 クリック: 216回
- この商品を含むブログ (83件) を見る
価格 | - |
---|
- ※2014年8月23日、いつの間にか絶版になっている。
CODE COMPLETE 第2版 上 完全なプログラミングを目指して
- 作者: スティーブマコネル,Steve McConnell,クイープ
- 出版社/メーカー: 日経BP社
- 発売日: 2005/03/26
- メディア: 単行本
- 購入: 44人 クリック: 1,166回
- この商品を含むブログ (288件) を見る
CODE COMPLETE 第2版 下 完全なプログラミングを目指して
- 作者: スティーブマコネル,Steve McConnell,クイープ
- 出版社/メーカー: 日経BP社
- 発売日: 2005/03/26
- メディア: 単行本
- 購入: 16人 クリック: 193回
- この商品を含むブログ (164件) を見る
価格 | 6,588円 |
---|
- 上のみ購入済み。
プログラミングテクニックアドバンス―実践的UNIXプログラミングソースコードにみる珠玉の手法 (UNIX MAGAZINE COLLECTION)
- 作者: 多治見寿和
- 出版社/メーカー: アスキー
- 発売日: 2004/12/01
- メディア: 単行本
- 購入: 4人 クリック: 31回
- この商品を含むブログ (14件) を見る
価格 | 1,944円 |
---|
- 購入済み。
プログラミングテクニック―UNIXコマンドのソースコードにみる実践プログラミング手法 (UNIX MAGAZINE COLLECTION)
- 作者: 多治見寿和
- 出版社/メーカー: アスキー
- 発売日: 2003/11
- メディア: 単行本
- 購入: 9人 クリック: 141回
- この商品を含むブログ (47件) を見る
価格 | - |
---|
- 購入済み。
- ※2017年2月20日、いつの間にか絶版になっている。
- 作者: Andrew Hunt,David Thomas,村上雅章
- 出版社/メーカー: オーム社
- 発売日: 2016/10/20
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (8件) を見る
- 作者: アンドリューハント,デビッドトーマス,Andrew Hunt,David Thomas,村上雅章
- 出版社/メーカー: ピアソンエデュケーション
- 発売日: 2000/11
- メディア: 単行本
- 購入: 42人 クリック: 1,099回
- この商品を含むブログ (347件) を見る
価格 | 3,456円 |
---|
- 旧版を購入済み。
- 作者: Brian W. Kernighan,Rob Pike,福崎俊博
- 出版社/メーカー: KADOKAWA
- 発売日: 2017/01/30
- メディア: 単行本
- この商品を含むブログ (3件) を見る
- 作者: Brian W. Kernighan,Rob Pike,福崎俊博
- 出版社/メーカー: ドワンゴ
- 発売日: 2017/01/30
- メディア: Kindle版
- この商品を含むブログ (5件) を見る
- 作者: ブライアンカーニハン,ロブパイク,Brian Kernighan,Rob Pike,福崎俊博
- 出版社/メーカー: アスキー
- 発売日: 2000/11
- メディア: 単行本
- 購入: 58人 クリック: 1,152回
- この商品を含むブログ (209件) を見る
価格 | 3,024円 |
---|
- 購入済み。
- 作者: Steve Oualline,望月康司(監訳),谷口功
- 出版社/メーカー: オライリー・ジャパン
- 発売日: 1998/06/15
- メディア: 大型本
- 購入: 7人 クリック: 158回
- この商品を含むブログ (45件) を見る
価格 | 4,860円 |
---|
実践 デバッグ技法 ―GDB、DDD、Eclipseによるデバッギング
- 作者: Norman Matloff,Peter Salzman,相川愛三
- 出版社/メーカー: オライリージャパン
- 発売日: 2009/06/08
- メディア: 大型本
- 購入: 10人 クリック: 199回
- この商品を含むブログ (31件) を見る
価格 | 3,024円 |
---|
Debug Hacks -デバッグを極めるテクニック&ツール
- 作者: 吉岡弘隆,大和一洋,大岩尚宏,安部東洋,吉田俊輔
- 出版社/メーカー: オライリージャパン
- 発売日: 2009/04/27
- メディア: 単行本(ソフトカバー)
- 購入: 12人 クリック: 419回
- この商品を含むブログ (74件) を見る
価格 | 3,456円 |
---|
GDBを使った実践的デバッグ手法―Emacs,Eclipse,Cygwin,Insi (Interface増刊)
- 作者: インターフェース編集部
- 出版社/メーカー: CQ出版
- 発売日: 2008/07/01
- メディア: 単行本
- 購入: 5人 クリック: 45回
- この商品を含むブログ (11件) を見る
価格 | - |
---|
- ※2015年5月25日、いつの間にか絶版になっていた。
C言語 デバッグ完全解説 (Gihyo Technology)
- 作者: 坂井弘亮
- 出版社/メーカー: 技術評論社
- 発売日: 2008/02/13
- メディア: 大型本
- 購入: 2人 クリック: 39回
- この商品を含むブログ (11件) を見る
価格 | - |
---|
- 購入済み。
- ※2015年5月25日、いつの間にか絶版になっていた。
- 作者: Arnold Robbins,千住治郎
- 出版社/メーカー: オライリージャパン
- 発売日: 2005/09/08
- メディア: 単行本(ソフトカバー)
- 購入: 2人 クリック: 39回
- この商品を含むブログ (22件) を見る
価格 | - |
---|
- ※2015年5月25日、いつの間にか絶版になっていた。
次の6冊は、複数の本で参考文献として挙げられていたので、買って損はしないと思う。
- プログラミング言語C
- 上級者向け
- Cリファレンスマニュアル
- 良質な辞書
- エキスパートCプログラミング
- 脱初心者に。内容は結構難しい。
- CプログラミングFAQ
- 良書だが絶版
- 詳解UNIXプログラミング
- 値段が高い
- UNIXネットワークプログラミング
- 値段が高い
- C言語 FAQ 日本語訳
http://www.kouno.jp/home/c_faq/
『CプログラミングFAQ』のWeb版。『CプログラミングFAQ』が手に入らない場合は目を通しておきたい。
- 初級C言語Q&A
http://www.st.rim.or.jp/~phinloda/cqa.html
昔C MAGAZINEという雑誌に連載されていた記事のWeb版。古い部分もあるが参考になるので読んでおきたい。
- 配列とポインタの完全制覇
http://kmaebashi.com/programmer/pointer.html
『C言語ポインタ完全制覇』のWeb版。
- Cプログラミング診断室
http://www.pro.or.jp/~fuji/mybooks/cdiag/index.html
『改訂新版 Cプログラミング診断室』の前の版のWeb版。
- プログラミング言語 C の新機能
http://seclan.dll.jp/c99d/
C99についてまとめられているので目を通しておくといいかも。
- CERT セキュアコーディングスタンダード
http://www.jpcert.or.jp/sc-rules/
『CERT Cセキュアコーディングスタンダード』のWeb版。
- OpenBSDのソースコード
http://www.openbsd.org/cgi-bin/cvsweb/
これのソースも綺麗らしいので、読めば勉強になるかも。
※2017年2月20日、「新・明解C言語中級編」「プログラミング作法」「新・明解C言語で学ぶアルゴリズムとデータ構造」「プログラミングテクニック」の4冊を更新。
※2016年12月9日、達人プログラマーのリンクを追加。
※2016年10月15日、絶版になっている本があったので修正。いくつかリンクを追加。※2015年5月25日、リンクを修正。5冊ほど絶版になっていたので価格を修正。
※2014年8月23日、画像を追加、値段を修正。