タグ

cに関するhiromarkのブックマーク (165)

  • Pthreadsプログラミング

    これまで、UNIXでのマルチスレッドに対応したライブラリやAPIの実装は、ベンダーごとにまちまちで、プログラミング方法も統一されていませんでした。現在は、POSIXがPthreadsとして規定したライブラリが、業界標準として普及しています。書は、このPthreadsライブラリを使ったマルチスレッドプログラムの設計、プログラミング、デバッグを、銀行のATMマシンの例題プログラムを設計、開発しながら解説します。 正誤表 ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すでに修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷版、刷り年月日をご確認の上、ご利用ください。 正誤表1(第2刷時修正) Phreadsプログラミング 第2刷修正 viペ

    Pthreadsプログラミング
    hiromark
    hiromark 2005/09/08
    ちょっとこの本チェック。
  • 7-4. ネットワークサービスは必ずforkしよう

    このサンプルプログラムは Internet Explorer や Netscape Navigator などのブラウザからアクセスした場合に,画面1のようなWebページをブラウザに返信する。ここでは一般ユーザ権限でサーバを実行させるために,TCP ポート 8080 で簡易 HTTP サーバプログラムを動作させている。そのためブラウザで指定するURLには,":8080" という TCP ポート番号指定が必要である。またサンプルプログラムであるため,出力される Web ページは URL に関わらず固定である。 1 #include "tcpserver.h" 2 #include <stdio.h> 3 4 #define SERVER_PORT 8080 /* サーバ用PORT */ 5 #define SERVER_IP 0x00000000UL /* サーバ用待ち受けIP */ 6 #

    hiromark
    hiromark 2005/09/01
    ネットワークサービスを開発するときの基本事項。
  • Misc. about Computer Science - 文字列操作の比較表

    高林さんのいやなブログ: 配列操作の比較表: Ruby, Python, JavaScript, Perl, C++に触発されて,個人的により混乱している文字列操作の表を書いてみました.個人的に使うもの,ということで,Perl, Java, WTL, STL, C, shです.さすがにshだと,できることは少ないです. いずれも一通り使えるってレベルなので,間違いがあったらご容赦を.とくにperlは,もっとalternativeがありそう.. Perl Java WTL::CString std:string C sh 長さ length($a) a.length() a.GetLength() a.length(), a.size() strlen(a) 結合 $a = $a . $b a = a + b a = a + b a = a + b strncat(a, b, strlen(

    Misc. about Computer Science - 文字列操作の比較表
    hiromark
    hiromark 2005/08/31
    文字列操作の各言語比較。
  • OpenBSD、malloc(3) を改良。多数パッケージに影響か | スラド

    tamo 曰く、 "Undeadly.org の記事によると、3.8 リリースの近付く OpenBSD で malloc(3) に大きな変更が加えられたため、より多くのユーザによるテストが求められている。 変更点は、まず malloc(3) が brk(2) ではなく mmap(2) を使うようにしたこと。そして mmap(2) がランダムな領域を取るようにし、かつ、割り当てられた複数の領域が隣接することのないようにしたこと。これらにより、ソフトウェアにバグがあってオーバーフローしても、既存領域を上書きすることなく SIGSEGV で死ぬようになる。 また、free(3) は領域を実際にカーネルへ返してしまうようになった。そのため、free(3) したあとに読み書きしようとすると SIGSEGV することになる。 これらはどちらも legal ではあるが、プログラマに厳しい制約を課すことに

    hiromark
    hiromark 2005/08/26
    ほほう、、、
  • スタックオーバーフローのハンドリング (Stack Overflow Handling)

    作成日:2004.04.12 更新日:2006.02.19 更新記録 (2004.04.12) 3/6、 3/11、 3/13 の日記をまとめて作成。 (2004.05.07) 文章を修正。サンプルコードを追加。 (2005.01.20) alternative → alterante に修正。 (2005.02.13) 追記を記述。 (2006.02.17) linux_stack_info.cpp の実装に誤りがあったので修正。 (2006.02.19) BSD 系OS でのスタック領域情報の取得の仕方を追加 初めに C/C++ でプログラムをしているとつい忘れてしまうのがスレッドのスタックオーバーフローの問題。 最近の OS はスレッド当たり 2〜8MB のスタック領域を持っているため、よほどのことがない限りスタックが溢れてしまうことはない。 だが、再帰や alloca を積極的に使

    hiromark
    hiromark 2005/08/25
    スタックオーバーフローのハンドリング手法。すげぇ良質。
  • <h2>C言語によるアルゴリズム(コメント付き)</h2>

    hiromark
    hiromark 2005/08/21
    これは便利!
  • Quick introduction to XWindow Graphics

    Xlib入門 XWindowに絵を描くプログラムを急ぎ作成したい人は、この章を読まずに 書が提供する nxgraphライブラリを 使うのが賢明です。 時間に余裕があってXWindowに絵を描くプログラムを作る方法を ゆっくり学びたい人は、この章で解説する Xlib入門を読んで 簡単なプログラムを作ってから、市販の詳しい Xlib解説書を 読むと良いでしょう。 Xlibの知識は無いけれど、格的な3次元グラフィックプログラムを XWindow環境やWindows98環境で作成したい人は、市販の OpenGL解説書を 読んで勉強すると良いでしょう。その人には Xlibは必要ありません。 目次 第1章 Xのグラフィックのメカニズム 第2章 ウィンドウを開く 第3章 描画コマンドをあやつる 第4章 イベントを聞く 第5章 色を織りなす 第6章 絵を使いまわす 第7章 アニメーション 総合目次 渡

    hiromark
    hiromark 2005/07/25
    Xlib の入門。
  • X11

    Xlib - C Language X Interface 目次 1章: Xlib について 2章: ディスプレイ関数 3章: ウィンドウ関数 4章: ウィンドウ情報関数 5章: ピクスマップとカーソル関数 6章: 色管理関数 7章: グラフィックスコンテクスト関数 8章: グラフィックス関数 9章: ウィンドウマネージャとセッションマネージャのための関数 10章: イベント 11章: イベント処理関数 12章: 入力デバイス関数 13章: ロケールと国際化テキスト関数群 14章: クライアント間通信のための関数 15章: リソースマネージャ関数 16章: アプリケーションユーティリティ関数 付録A: Xlib 関数とプロトコルリクエスト 付録B: フォントカーソル 付録C: 機能拡張 付録D: 互換関数 用語集 X Japanese Documentation Project のホームペ

    hiromark
    hiromark 2005/07/25
    Xlib プログラミング関連。
  • http://d.hatena.ne.jp/lestrrat/20050713

    hiromark
    hiromark 2005/07/13
    XS の複雑さを許容できる効果があるとは限らず。さて、有効性をどう判定するか。
  • きまぐれ日記: もっと SWIG を!

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

    hiromark
    hiromark 2005/07/12
    こういう選択肢もあるかぁ。
  • argv[0]を書き換えるのはあり - higepon blog

    hiromark
    hiromark 2005/07/11
    argv[0] 書き換え関連についてのまとめ。
  • argv[0]を書き換えるのはあり? - higepon blog

    C言語でコマンドライン引数をうけとるには int main(int argc, char *argv[]) { }argc, argvを使ってごにょごにょします(略。 今日とあるアプリケーションのコード@Linuxを読んでいたところ argv[0] をプログラム中で上書きしているのを見かけました。 意図としては、ps コマンドを実行したときに表示される、プロセス名を好きなように変更してしまえという感じなのです。 例えば a.out というプログラムを実行して、ps コマンドを実行すると、a.outの名前でプロセスの状態が見ることができます。 これを、a.outのプログラムの中で、argv[0]をhogeに上書きすると、ps コマンドでも hoge と表示されるのです。 ちなみに上書き時には、argvにどれだけスタックが割り当てられているかは考慮していているみたいです。 "proc/self

    argv[0]を書き換えるのはあり? - higepon blog
    hiromark
    hiromark 2005/07/09
    へぇ、そうなんだー。知らなかった。
  • Amazon.co.jp: C言語ポインタ完全制覇 (標準プログラマーズライブラリ): 前橋和弥: 本

    Amazon.co.jp: C言語ポインタ完全制覇 (標準プログラマーズライブラリ): 前橋和弥: 本
    hiromark
    hiromark 2005/06/23
    この本はなかなかの力作。
  • http://www.iis.u-tokyo.ac.jp/~susaki/image/c_process.html

    hiromark
    hiromark 2005/06/17
    ちょっとした実験プログラム作成時の逆引き用。
  • XS利用でPerl高速化 その2 - ひげぽん OSとか作っちゃうかMona-

    前回は、XSモジュールを使うと処理が高速になる可能性があるという紹介をしました。 ただしXSモジュールの導入にはデメリットもあります。 C言語で実装しているという関係上、 モジュール変更のたびにリコンパイルが必要である メモリリークの危険性がある Perlの管理下にないメモリは自分で解放しなければなりません(詳細は後日) プラットフォーム間での互換性が保てない リコンパイルや修正が必要な場合が多い PerlのXSバージョンに左右される場合がある Perl単体のときと比べてデバッグが難しい などなど、クリアすべき点があります。 というわけで使いどころとしては、 Perlのコードで速度的にボトルネックになっている部分があり そのコードの仕様はほぼfixしている(変更が入る可能性は少ない) というような場合に、XSで処理を書いてみて、ベンチマークをとってみるという形が良いと思います。 なおXSに

    XS利用でPerl高速化 その2 - ひげぽん OSとか作っちゃうかMona-
    hiromark
    hiromark 2005/06/16
    XS の使いどころの説明。
  • ひげぽん OSとか作っちゃうかMona- - [Perl] XS利用でPerl高速化

    (追記:2009/03/25) id:tokuhirom さんからコメントを頂きました。このベンチマークは問題があるそうです。 http://d.hatena.ne.jp/higepon/20050615/1118829090#c (追記:終わり) PerlにはC言語で書かれた関数を呼び出すためにXSという仕組みが存在します。 一部CPANモジュールでも使われているためご存知の方も多いと思いますが、今回はこのXSの簡単な利用方法を紹介したいと思います。 なおXSは、はてなでも使用しています。 さてXSモジュールを使うとうれしい事は C言語で書くことにより、処理が高速になる可能性がある 既存のC言語ライブラリ資産をPerlから利用することができる Perlがあまり得意でない、メモリ内などに存在するビット単位での細かなデータ構造を、あれこれできる などが挙げられると思います。 今回は、高速化に

    ひげぽん OSとか作っちゃうかMona- - [Perl] XS利用でPerl高速化
    hiromark
    hiromark 2005/06/16
    XS: C で書かれた関数を Perl から呼びだす。これを機に覚えてみよう。
  • http://www-ise.is.s.u-tokyo.ac.jp/~inagami/memo/c/index.php

    hiromark
    hiromark 2005/06/13
    さくっと調べたいときに便利なのでメモ。
  • C/C++ のコードをスクリプト言語から利用する為のラッパー生成ツール「SWIG」

    hiromark
    hiromark 2005/06/12
    スクリプトから C/C++ のコードを利用するためのツール。なんかに使えるかも。
  • regex Tips

    Copyright (c) 2001 Koichi OKADA まず「取扱説明書」をお読みください。 はじめに regex とは regex ってのは POSIX 準拠の正規表現ライブラリです。 POSIX 準拠のシステムでは標準で準備されています。 正規表現というのは任意のテキストを検索する際に便利な表現方法です。 最近流行りの多くの Script 言語でも採用されています。 C は特に文字列の処理が不得手なので知っておくと便利です。 GNU Rx GNU Rx とは POSIX 互換の正規表現ライブラリです。 POSIX の regex と同名の関数が使えます。 GNU Rx 特有の機能もありますが、ここでは解説しません。 win32(VisualC++) 向けの Software / GNU Rx(librx) で公開しておきます。 ライセンス reg

    hiromark
    hiromark 2005/06/03
    regex の Tips。助かる。
  • regex.hの使い方

    Cの言語仕様そのものには正規表現は含まれていないので、C言語で正規表現を扱うには何らかのライブラリを利用する必要があります。ここでは、POSIX準拠のregex.hを利用して正規表現の処理を行います。 UNIXライクなOSなど、POSIX準拠のシステムであれば使用できるはずです。このページのサンプルなどはLinux上のgcc-2.96でテストを行っています。 使用方法 regex.hでの正規表現の基的な使用方法を簡単に述べると、次のようになります。 regcomp()で正規表現をコンパイル regexec()で実行 regfree()でコンパイルした正規表現を解放 多少面倒なように見えますが、正規表現ライブラリとしてはごく一般的な手順です。正規表現による検索処理の前に正規表現の文字列をコンパイルし、検索処理を行った後に処理に使ったバッファを解放する必要があります。 ということで、関数をひ

    hiromark
    hiromark 2005/06/03
    おおお、なんだなんだ、便利そうじゃん!