タグ

Cに関するikebeのブックマーク (17)

  • Apache Developers' C Language Style Guide - The Apache HTTP Server Project

    Apache Developers' C Language Style Guide¶ Compiled by Paul Sutton paul@awe.com. Based on a vote taken in November, 1996. Further refinements voted upon in July 1997. Introduction¶ [This bit could state that code should be laid out to be clear to someone else familiar with Apache. Functions should be short and easily understood. Comments should be provided to explain the rationale for code which i

    ikebe
    ikebe 2007/12/18
  • mixi Engineers’ Blog » 最適化しよう?

    エンジニアブログを私物化していると専らの評判のmikioです。ブログを書かないと死んでしまう病に冒されているのでしかたないですね。個人ブログ時代よりもわかりやすくする努力はしているんですけどね。さて、今回はソースコードの最適化による高速化について述べます。 ベンチマークテスト TCはQDBMや他のDBMより高速であるという主張をしたいのですが、その根拠としてベンチマークテストの結果が必要となります。そこで、データベースに100万レコードを格納する処理と、そうして作ったデータベースから全てのレコードを探索する処理の時間を、各DBMで計測してみました(TCのパッケージのbrosというディレクトリにテストコードが入っています)。実行環境は、Thinkpad T60(Intel(R) Core2 CPU T7200 @ 2.00GHz)上のLinux version 2.6.16です。 ハッシュ

    mixi Engineers’ Blog » 最適化しよう?
    ikebe
    ikebe 2007/11/13
  • mixi Engineers’ Blog » 言語バインディングを書こう

    世田谷の某所から原宿まで自転車通勤しているのですが、そろそろ寒くなってきたので電車に切り替えようかと悩み中のmikioです。今回はTokyo Cabinetのスクリプト言語バインディングについて述べます。 スクリプト言語バインディングとは TCはC言語で実装されたライブラリで、C言語(C89、C99)およびC++言語のプログラムから利用することができます。CやC++は各種の計算処理やシステムコールの呼び出しを直接的に記述できるので高速に動作するプログラムを作ることができる反面、ポインタ演算やメモリ管理などで致命的なバグを潜ませやすいので非常に注意深くコーディングを進めなければいけません。つまり、プログラムの実行速度は速いが、開発速度は遅いということです。 それに対して、PerlRubyをはじめとするいわゆるスクリプト言語は、実行速度はCやC++に劣るものの、高水準かつ直感的な文法と強力な

    mixi Engineers’ Blog » 言語バインディングを書こう
  • 第3のmemcachedクライアントライブラリ (C言語) - (ひ)メモ

    C言語のmemcachedクライアントライブラリは、 apr_memcache libmemcache の2種類が存在していたのですが、第3のライブラリがリリースされたようです。 libmemcached So why implement another C client library? (since that is the first question I expect some one to ask) 1) The libmemache library I was using for a while for the MySQL memcached storage engine leaks memory and after toying with it I decided I didn't want to fix it. 2) The APR one has the drawback

    第3のmemcachedクライアントライブラリ (C言語) - (ひ)メモ
  • 記事一覧

    Apache HTTP Server 2.0 からは、APR (Apache Portable Runtime) というライブラリが Apache とは別に開発され、Apache HTTP Server は、その APR を土台として作られています。この APRは、OS間の差異を吸収するための関数や、プログラムを作成する上で便利な関数の集合体です。 APRはApache HTTP Serverにも同梱されていますが、別アーカイブとしても配布されており、それを入手して利用することもできます。 Apache HTTP Server 2.0系統の時には APR はまだバージョン1.0に達しておらず、2.0系統の最新版である 2.0.59 では 0.9.12 が同梱されていました。しかし、最新の安定板系列である2.2.3では1.2.7になっています。 APRには、基的な関数群をまとめたAPR、付

    記事一覧
  • Google Japan Blog: Google が公開しているソフトウェアの解説 ( その 1 )

    メディア関係者向けお問い合わせ先 メールでのお問い合わせ: pr-jp@google.com メディア関係者以外からのお問い合わせにはお答えいたしかねます。 その他すべてのお問い合わせにつきましては、ヘルプセンターをご覧ください。

    Google Japan Blog: Google が公開しているソフトウェアの解説 ( その 1 )
    ikebe
    ikebe 2007/07/13
  • http://yasa.newzilla.org/

  • Webサーバ書くのって流行りなの? - グニャラくんのグニャグニャ備忘録@はてな

    Memcachedの添え物として扱われている(ような気がする) libeventちゃんカワイソウ。 libevent というわけで、libeventとsennaを使って COOKIEによるセッション維持機能がついたWebサーバを書いてみた例。 (Sennaは単なるハッシュライブラリとして使っています。) mainを書き下すと、 Senna初期化 libevent初期化 httpd機能開始 URIごとにハンドラ関数を設定 イベントをガンガン処理 といった感じ。 Cでこれくらいの長さだったら、 妥当だと思います。 バグがありそうだし、セッション変数の種も適当だけど、 気にするなってことで。 実用にはならないけど、サンプルの1つとしてどうぞ。 LLな言語のインタプリタなんかを抱え込むと面白いのかもね。 #ifdef WIN32 #include <winsock2.h> #include <wi

    Webサーバ書くのって流行りなの? - グニャラくんのグニャグニャ備忘録@はてな
    ikebe
    ikebe 2007/05/08
    libevent の http サポートはアツいかもしれない。
  • libdbi homepage

    General Information libdbi implements a database-independent abstraction layer in C, similar to the DBI/DBD layer in Perl. Writing one generic set of code, programmers can leverage the power of multiple databases and multiple simultaneous database connections by using this framework. In order to utilize the libdbi framework, you need to install drivers for a particular type of database. The driver

    ikebe
    ikebe 2007/03/27
    Cでdbi
  • libcsv

    libcsv is a small, simple and fast CSV library written in pure ANSI C89 that can read and write CSV data. It provides a straight-forward interface using callback functions to handle parsed fields and rows and can parse improperly formatted CSV files.

    ikebe
    ikebe 2007/02/25
    libcsv
  • memccpy() で文字列をコピーする - bkブログ

    memccpy() で文字列をコピーする 詳解Unixプログラミングを読んでいたところ、標準入出力ライブラリの章に「この例からわかることは、行単位の関数は memccpy(3) を用いて実装されていることである」という記述がありました。 一瞬、memcpy(3) の誤植かと思いましたが、調べてみると 4.3 BSD で追加された関数ということがわかりました。 glibc に入っているので Linux でも使えます。 マニュアル によると memccpy() は次のような関数です。 書式 void *memccpy(void *dest, const void *src, int c, size_t n); 説明 memccpy() はメモリ領域src からメモリ領域dest に最大でnバイトコピーする。nバイトコピーする前に文字 c が見つかると、そこでコピーを中止する。 返り値 memc

    ikebe
    ikebe 2006/06/26
  • C言語: UNIX最速ファイルコピー

    Created: Kazuki Ohta, 2006/06/14 Last Update: Kazuki Ohta, 2006/06/14 「write(2)の正しい使い方」と同じく、OS演習でやった事の延長線の記事を書いてみる。お題は「UNIX上で大規模ファイルを最速でコピーする方法」だ。一般的に、UNIXでファイルをcopyする際には以下のような方法が有る。 read -> write read -> write with posix_fadvice mmap -> mmap -> memcpy -> fsync mmap -> mmap -> memcpy -> fsync with madvise mmap -> write mmap -> write with madvise read, write, mmap辺りは良いとして、posix_fadviseというシステムコールが有

    ikebe
    ikebe 2006/06/22
  • http://d.hatena.ne.jp/lestrrat/20060610

    ikebe
    ikebe 2006/06/11
    Mac OS Xでlddの代わり
  • C(++)言語: valgrindの使い方

    ubuntu% uname -a Linux ubuntu 2.6.12-10-386 #1 Sat Mar 11 16:13:17 UTC 2006 i686 GNU/Linux ubuntu% valgrind --version valgrind-3.0.1 (0) 目次 Valgrindに含まれるツール Memcheck: メモリエラーを検出する(default) Cachegrind: キャッシュミスを検出する Massif: ヒーププロファイラを使う まとめ valgrindの使い方とエラーメッセージを整理してみた。「valgrind --leak-check=full command」というコマンドラインをよく用いる。これによりメモリ周りのバグを検出出来る。 --tool=cachegrindではプログラム実行時のキャッシュミス率を測定する事が出来る。cg_annotateを

  • http://svn.zilbo.com/svn/mod_ip_count/trunk/mod_ip_count.c

    ikebe
    ikebe 2006/05/16
    apr_memcache の使い方
  • きまぐれ日記: もっと SWIG を!

    はてなでは XS を使い始めて処理速度が改善されつつあるようです。 スクリプト言語へのバインディングは、もはやミドルウェアには必須の機能だと思います。 しかし、最近気になっているのは、少なくとも日では XS 直書きのようなスクリプト言語固有の機能を直接使ってバインディングを作成している開発者が圧倒的に多いということです。 正直なところSWIG をもっと使ってほしいです。 私が気に入っている点は以下です。 1. SWIG はスクリプト言語固有のバインディング作成バッドノウハウを エレガントにラップしてくれます。たとえば、例外処理などがいい例ですが、 SWIG のインタフェイス上で例外処理を書いておけば、 各言語の例外処理のシンタックスに適切に変換してくれます。 2. バンディングレベルで OOP の機能が無く、プリミティブな関数呼び出ししかできない スクリプト言語(perl,python,

    ikebe
    ikebe 2005/07/12
    使いどころを見きわめるのが実は一番難しいよな。
  • ふつうのLinuxプログラミング

    対象読者 このは、C 言語の入門書および Linux の操作に関する入門書を 読了した程度の読者が対象です。 具体的には次のようなかたに書をお勧めします。 C 言語の初歩は身に付けたので Linux での具体的なプログラミングを知りたい プログラミングを通じて Linux について知識を深めたい 他の Linux プログラミングを読んで挫折した 目次 第1部 Linuxの仕組み 第1章 Linuxプログラミングを始めよう 第2章 Linuxカーネルの世界 第3章 Linuxを描き出す3つの概念 第4章 Linuxとユーザ 第2部 Linuxプログラミングの根幹 第5章 ストリームにかかわるシステムコール 第6章 ストリームにかかわるライブラリ関数 第7章 headコマンドを作る 第8章 grepコマンドを作る 第9章 Linuxのディレクトリ構造 第10章 ファイルシステムにかかわる

    ikebe
    ikebe 2005/07/07
  • 1