2014-02-01から1ヶ月間の記事一覧

iCalendar, webcal

iCalendarについてちょっと調べたので、メモ。 iCalendarとは? iCalendarはイベント・TODOなどのカレンダーデータを表現・交換するための標準フォーマットで、RFC 5545(旧版 RFC 2445)で規定されている。 RFC 5545 This document defines the iCalendar d…

APUE - 3.11 Atomic Operations

pread(2) Man page of PREAD pread() は、ファイルディスクリプタ fd の (ファイルの先頭からの) オフセット offset から最大 count バイトをバッファ buf へ読み込む。ファイルオフセットは変化しない。 lseek(2)に続けてread(2)を実行したのと概ね同じだが…

APUE - 16.3.1 Byte Ordering

include pathのアレコレ

c

インクルードパスについてのアレコレをメモ。 PATHを調べる gcc -v で確認ができる。 $ gcc -v hello.c (略) #include "..." search starts here: #include <...> search starts here: /usr/llvm-gcc-4.2/bin/../lib/gcc/i686-apple-darwin11/4.2.1/includ…

APUE - 15.9 Shared Memory

普通にforkしちゃうと、変数は共有することができない。 が、shmget(2), shmat(2)を使えば、メモリを共有することができる。 shmat(2) #include <sys/types.h> #include <sys/shm.h> void *shmat(int shmid, const void *shmaddr, int shmflg); int shmdt(const void *shmaddr); shma</sys/shm.h></sys/types.h>…

semaphore

c

POSIXのセマフォとSystemVのセマフォと2種類がある。 後者はAPI仕様上、複数個を扱うことになるのでやや使いづらい。 http://www.ibm.com/developerworks/jp/linux/library/l-semaphore/ APUEで解説されてるのはSystem Vのセマフォなので、そちらを。 最もシ…

nodebrew + node.js

js

ついカッとなって、node.jsをインストールしてみた。 homebrewでソースからビルドすると時間掛かるらしく、最近だとnodebrewがいいとの話なので、その方向で。 homebrewのnodeは消しておく $ brew uninstall node nodebrewのセットアップ $ curl -L git.io/n…

FIFO

c

FIFOは名前付きパイプとも呼ばれる。pipe(2)によってつくられるパイプは"無名"で、親子関係など限られたプロセス間通信にしか使えないが、FIFOならばそのような制約はない。さらに、FIFOはファイルと同じように扱える。 カンタンな例 mkfifo(1)を使う。 shel…

pipeとdup

c

dup(2), dup2(2)

c

Advanced Programing in the UNIX Environmentを再開した。 本日はdupとdup2を。 詳解UNIXプログラミング作者: W.リチャードスティーヴンス,W.Richard Stevens,大木敦雄出版社/メーカー: ピアソンエデュケーション発売日: 2000/12メディア: 単行本購入: 8人 …

アルゴリズムとデータ構造

c

MIT Open Coursewareが終わったので、次は積ん読になっていたこれ。 プログラミングの宝箱 アルゴリズムとデータ構造 第2版作者: 紀平拓男,春日伸弥出版社/メーカー: ソフトバンククリエイティブ発売日: 2011/03/30メディア: 単行本購入: 15人 クリック: 255…

pipe(2)

c

PIPE(2) #include <unistd.h> int pipe(int pipefd[2]); pipe(2) はパイプを生成する。 パイプは、プロセス間通信に使用できる単方向のデータチャネルである。 配列 pipefd は、パイプの両端を参照する二つのファイルディスクリプタを 返すのに使用される。 pipefd[0] </unistd.h>…

malloc(2), calloc(2), memset(2)

c

MAN void *malloc(size_t size); void *calloc(size_t nmemb, size_t size); malloc() 関数は size バイトを割り当て、 割り当てられたメモリに対する ポインタを返す。メモリの内容は初期化されない。 size が 0 の場合、 malloc() は NULL または free() …

select(2), poll(2)

c

引き続き、MIT Open Courseware。 select(2) int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); int pselect(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, const struct timespe…