タグ

cに関するsukepyonのブックマーク (9)

  • Open Tech Press | Libxml2 を使う

    XML はあらゆる分野における基礎技術となって利用が進みつつあるが、GNOME 環境においても例外ではない。GNOME 2 においては Libxml2 が XML を扱うための基ライブラリとして採用され、あらゆる局面で活用されている。稿ではこの Libxml2 を使った簡単なプログラミング例を紹介しよう。 GNOME と XML GNOME の多くのアプリケーションは設定に関する情報を GConf というフレームワークを利用して保存しているが、この GConf は標準では XML 形式のテキストファイルを利用して情報を保存している。GNOME を利用しているなら、ホームディレクトリにある ~/.gconf/ というディレクトリの中を覗いてみよう。そこの中には %gconf.xml というファイルがいくつも存在しているが、これが GConf によって書き出されたユーザ固有の設定情報である

    Open Tech Press | Libxml2 を使う
    sukepyon
    sukepyon 2010/02/20
    試した。libxml/xmlreader.hとstdio.hをincludeするとOKだった。
  • sizeofオペレータを正しく使おう ――C/C++セキュアコーディング入門(5)

    はじめに 今回はsizeofオペレータをとりあげます。sizeofは、引数に与えたオブジェクトや型名から、その型のデータがメモリ上に占めるバイト数を求めるオペレータです。皆さんも、メモリ領域を動的に確保したいときや文字列操作などに関連して使ったことがあるでしょう。まずはsizeofオペレータの使用上の注意について説明し、その後でsizeofオペレータの誤用例を2つ紹介します。 sizeofオペレータ使用上の注意 「sizeofオペレータの使用上の注意 その1」は、プログラマが意図する正しい引数を渡すこと、です。メモリ上のオブジェクトのコピーや移動などの操作は、オブジェクトのメモリ上のサイズにもとづいて行います。オブジェクトのサイズを間違っていたら、アクセス違反やオーバフローといった脆弱性につながることは容易に想像できるでしょう。 「sizeofオペレータの使用上の注意 その2」は、引数に副

    sizeofオペレータを正しく使おう ――C/C++セキュアコーディング入門(5)
    sukepyon
    sukepyon 2010/01/25
    可変長配列以外の引数は評価されないのは知らなかった。
  • C/C++セキュアコーディング入門一覧

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    C/C++セキュアコーディング入門一覧
  • Cプリプロセッサメタプログラミングで、文字列系泥沼関数型プログラミング - 簡潔なQ

    今年の文化祭で書いた記事です。 - C言語といえば、いやなイメージ、過去の遺産といった感じがあるかもしれません。 C言語のネガティブな側面というと、やはりポインタやメモリ管理などが難しい、ということが思いつくかもしれません。 しかし、C言語のポインタは表記に騙されやすいだけで、仕組み自体は全く難しくありません。 文法も、どこぞのPerlC++と比べたら屁でもない単純さです。 実のところ、仕様が煩雑で難しいのは、Cプリプロセッサなのであります。 普段からあまり複雑な使いかたをしないから気づかないかもしれませんが、Cプリプロセッサの置換処理は、欺瞞と裏切りに満ちた世界なのです。 これが進化するとテンプレートなどといったもっと面白いものになるのですが、今回はCプリプロセッサで計算をしちゃったりするところまで試しにやってみましょう。 (なお、GCCにより実験的に調べた記事なので、他のCコンパイラ

    Cプリプロセッサメタプログラミングで、文字列系泥沼関数型プログラミング - 簡潔なQ
    sukepyon
    sukepyon 2009/11/13
    いいぞ。もっとやれ、いや、やってください。
  • Let’s use doxygen!

    はじめに プログラマには、ドキュメント、とくにプログラムの内部仕様書を書くのが苦手、 という人が多い。 その理由は明らかであって、そもそも、ソースコードに (バグも含めて)*1 すべての仕様が子細もらさず書かれているのに、なぜ、さらにそれと独立した仕様書が必要なのかと、 (半ば気で) 思ってしまうからである。 ソースコードと独立にメンテナンスをしなければならないような仕様書は、 いずれソースコードと整合性が取れなくなって、無意味ならまだしも、 かえって害をなす存在となり果てることもある、ということを、 彼らは経験的に理解しているのである。 (*1) Ruby の作者である、まつもとゆきひろ氏は、 その著者『オブジェクト指向スクリプト言語 Ruby』の中の「付録C Ruby 用語集」で、 次のように書いている: ドキュメント まつもとの苦手なもの。彼は普段から「ソースがドキュメントだ。

  • C言語によるUNIXネットワークプログラミング入門 (UNIX Netowrk Programming)

  • Manpage of SELECT

    Section: Linux Programmer's Manual (2) Updated: 2008-07-14 Index JM Home Page roff page 名前 select, pselect, FD_CLR, FD_ISSET, FD_SET, FD_ZERO - 多重化された I/O の同期をとる 書式 /* POSIX.1-2001 に従う場合 */ #include <sys/select.h> /* 以前の規格に従う場合 */ #include <sys/time.h> #include <sys/types.h> #include <unistd.h> int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); voi

  • ネットワークプログラミングの基礎知識

    ネットワークプログラミングの基礎知識 ここでは IP アドレスやポート番号、クライアントとサーバの役割などを説明し、 perl・C言語・Java などでソケット (Socket) を使った HTTP クライアントや POP3 クライアント、簡単なサーバを作成してみます。 要はネットワークプログラミングをやってみよう、ということです。 このページのサンプルプログラムは、RFC などの規格に準拠した「正しい」プログラムではありません。 また、全体的にエラー処理が不十分です (今後改善する予定です)。 あくまでも概要を理解するためのサンプルととらえてください。 もし気でしっかりとしたクライアントやサーバを書きたいなら、このページを読んだ上で、 さらに RFC を熟読し、そして wget・Apache・ftp コマンドなどのソースを参考にしてください。 このページに間違いを見付けたら、掲示板

    sukepyon
    sukepyon 2009/07/11
    分野広いなこれ
  • ポインタとメモリと型(構造体)の関係 (2) - C言語 - 碧色工房

    これは Cygwin 上の gcc での結果で Visual C++ を利用した場合 long double は 8Byte となります。 あと、 sizeof の結果は char いくつ分のサイズかを返す訳ですが、今回実験している環境だけではなく、 ほとんどの処理系では char は 8bit(1Byte)であるため(っていうかそうじゃない処理系ってあるのかなぁ)、 ここでは sizeof の返す値の単位を Byte であるとして話を進めています。 さらに、何度も書いていますがここでやっていることは、ほとんどが処理系依存で、 このような結果になることを前提にプログラムを書くと、非常に移植性の低いものになってしまいます。 また、同じ環境でもコンパイラの最適化の影響とかを受ける可能性もないわけではありません。 ハードウェア的にどうのといってる部分がいっぱいありますが、 正直なところ私はそっち

    ポインタとメモリと型(構造体)の関係 (2) - C言語 - 碧色工房
    sukepyon
    sukepyon 2009/06/26
    構造体メンバーのメモリ配置、#pragma pack(n)
  • 1