タグ

cとprogrammingに関するmoozのブックマーク (62)

  • コードを愛でる - コードを愛でる

    1/89 >> First Last コードを愛でる はまじしん一ろう

    mooz
    mooz 2010/06/04
    本には載っていないコード達. ハッカーにはかなわないな.
  • Cプリプロセッサメタプログラミングで、文字列系泥沼関数型プログラミング - 簡潔なQ

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

    Cプリプロセッサメタプログラミングで、文字列系泥沼関数型プログラミング - 簡潔なQ
    mooz
    mooz 2009/11/09
    プリプロセッサメタプログラミングというタイトルで笑った。内容を見て姿勢を正した。
  • プログラミング言語 C の新機能

    プログラミング言語 C は 1990 年に ISO で規格化された言語です。その後、何度かの誤りの訂正や wchar_t 型の追加といった追補がなされた後、さらに使いやすくするための新しい機能が検討されてきました。そして、1999 年、ついに新しいプログラミング言語 C の仕様「ISO/IEC 9899:1999 - Programming Language C」(略称 C99) が 1999/12/01 付けで規格として出版されました。ここでは、その新機能を説明します。

    mooz
    mooz 2009/09/05
    指示付き代入とかめっちゃ便利そうなんだけど、互換性がなあ……
  • curl

    What is curl used for? curl is used in command lines or scripts to transfer data. curl is also libcurl, used in cars, television sets, routers, printers, audio equipment, mobile phones, tablets, medical devices, settop boxes, computer games, media players and is the Internet transfer engine for countless software applications in over twenty billion installations. curl is used daily by virtually ev

    mooz
    mooz 2009/07/05
    http とか扱うのに便利なライブラリらしい
  • Manpage of HSEARCH

    Section: Linux Programmer's Manual (3) Updated: 2003-11-28 Index JM Home Page roff page 名前 hcreate, hdestroy, hsearch, hcreate_r, hdestroy_r, hsearch_r - ハッシュテーブルの管理 書式 #include <search.h> int hcreate(size_t nel); ENTRY *hsearch(ENTRY item, ACTION action); void hdestroy(void); #define _GNU_SOURCE #include <search.h> int hcreate_r(size_t nel, struct hsearch_data *tab); int hsearch_r(ENTRY item, ACT

    mooz
    mooz 2009/06/30
    こんな関数があったのか。 search.h だとさ。
  • マイクロデータベース管理システムの実装

    怪奇? 「ファイルサイズ: 0」の謎 先週の課題プログラムには、「testfile」というファイルを作成して 256バイトのデータを書き込み、そのファイルの大きさが実際に何バイトかをstat システムコールを使って調べる、という内容が含まれていました。 しかし、実際にそのプログラムをMacOS Xの環境で実行すると、 プログラムの最後のstatシステムコールを使って調べた ファイルサイズの結果が「0」になるという不思議な現象が起こった人もいるかもしれません。 この謎を追ってみましょう。 まず、lsコマンドで実際のファイルサイズを調べてみます。 % ls -l testfile -rw------- 1 furuse prof 256 Apr 18 15:16 testfile 確かに、ファイルサイズは256バイトになっています。 次に、デバッガのgdbを使ってプログラムの実行状況を調べてみ

    mooz
    mooz 2009/06/13
    st_size が long long int であるというお話。 gdb の ptype コマンドも。
  • ネットワークプログラミングの基礎知識

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

  • opaque typeを使う/サンプル集/ソフトウェア工房/松本計画

    opaque typeとは利用する側から実装がわからない型のことをいいます。具体的には型の宣言だけが公開されていて、その型へのアクセスはポインタを利用し関数を介してでのみ行うことができるようにしたものです。 例ではstruct opaque_typeという構造体が宣言されていますが、実装が定義されていません。このため、この構造体にどのようなメンバがあるのか、サイズがいくつなのか利用する側は知ることはできません。関数として、struct opaque_typeのデータの生成と破棄を行うcreate関数とdispose関数、値の設定、取得、出力を行うset_value関数、get_value関数、write_value関数が用意されていますが、値が実際にはどのように処理されるのか、類推することもできません。 opaque_type.h #ifndef OPAQUE_TYPE_H #defin

    mooz
    mooz 2009/06/06
    opaque typeとは利用する側から実装がわからない型のことをいいます
  • まつもと直伝 プログラミングのオキテ---目次 - まつもと直伝 プログラミングのオキテ:ITpro

    第0回 あらためてRuby入門 まつもとゆきひろ氏自身による「Ruby入門」をお届けします。日経Linuxの連載開始前の特別企画(2005年4月号)として,Rubyが他のスクリプト言語やオブジェクト指向言語とどこが違うのか,なぜ便利なのかを中心に解説してもらったものです。 ● 基と他言語との違い ● 実装とRuby誕生の秘密 第1回 プログラミングとオブジェクト指向の関係 プログラマを目指す人々の中にも,「オブジェクト指向は難しい」とか,「なかなか分からない」という印象を持つ方が多いようです。そこで,Rubyを題材にオブジェクト指向という考え方について説明していきます。 ● その1 ● その2 ● その3 第2回 抽象データと継承 オブジェクト指向プログラミングを構成する3原則のうち,前回は「ポリモーフィズム」を学びました。今回はオブジェクト指向の歴史を復習した後,残りの「データ抽象」と

    まつもと直伝 プログラミングのオキテ---目次 - まつもと直伝 プログラミングのオキテ:ITpro
    mooz
    mooz 2009/05/31
    印刷して読もうっと
  • B3 OS/Programming

    シラバス コースは、プログラミングの基について、ひととおりの技術を学び終えた受講者を対象とする。コースの目的は、実際のソフトウェアを開発する際に、具体的にどのようにプログラムを設計し、またどのように OS の機能を利用していけばよいか、感覚をつかんでもらうことである。このため、コースは講義中心ではなく、いくつかのソフトウェアの作成演習をとおして、そのソフトウェアのプログラムはなぜそのように設計されているのか等を考えてもらう。 1. 簡単な C コンパイラ 言語仕様を簡略化したCコンパイラを作成し、言語処理系の基構成を学ぶ。また関数呼び出しや配列参照など、C言語の各基機能が実際にどのような機械語に変換されていくのかを学ぶ。 実際に作成する処理系は2つで、まずはじめに字句解析の練習として、ごく簡単なLispインタプリタを作る。 その後、構文解析、コード生成の演習のため、C言語風の手続

    mooz
    mooz 2009/05/24
    構文解析など
  • 7-3. setuid は慎重に

    リスト1のサンプルプログラムsetuid_test.c をご覧いただきたい。「setuid_test.out」という名前のファイルを作成(13行目)するだけの簡単なプログラムだ。 1 #include <sys/types.h> 2 #include <sys/stat.h> 3 #include <fcntl.h> 4 #include <stdlib.h> 5 6 int main(void); 7 8 int main(void) 9 10 int fd; 11 12 /* create a file */ 13 fd = creat("setuid_test.out", 0644); 14 if(fd!=-1) close(fd); 15 } 1 $ gcc -o setuid_test setuid_test.c ← コンパイル 2 $ ls -l setuid_test 3 -

  • Buffer Overflow Primer Part 8 (Return To Libc Theory)

    mooz
    mooz 2009/05/14
    Return to Libc 攻撃の How To
  • Return-to-LIBC - t04ya0’s Handbook

  • Editline Library (libedit) - Port of NetBSD Command Line Editor Library

    This is an autotool- and libtoolized port of the NetBSD Editline library (libedit). This Berkeley-style licensed command line editor library provides generic line editing, history, and tokenization functions, similar to those found in GNU Readline. Download libedit-20230828-3.1.tar.gz The libedit source code tarball. Examples Various examples are distributed with this package in the /examples dire

  • Re: Background process implementation

  • ヘッダーファイルは慎重に扱わないと危険です

    ホーム < ゲームつくろー! < C++踏み込み編 < ヘッダーファイルは慎重に扱わないと危険です その7 ヘッダーファイルは慎重に扱わないと危険です ヘッダーファイルは関数やクラスのプロトタイプを宣言するファイルです。今更なんだと思われるかもしれません。しかし、ヘッダーファイルは慎重に扱わないと取り返しのつかないバグを生んでしまいます。それこそシステムが崩壊するほどのバグになることも時にはあります。 ヘッダーファイル軽んずべからず。この章はそういったヘッダーファイルにまつわるお話です。 ① ヘッダーファイルって何なのか? 冒頭でも述べましたように、ヘッダーファイルは関数やクラスのプロトタイプ宣言をするファイルです。プロトタイプ宣言とは、「変数の名前、型」そして「関数名、引数の型、戻り値の型」のみを記述する事を指します。クラスの場合、クラス名と共にクラスが持つメンバ変数やメンバ関数がプロト

  • Rubyソースコード完全解説 / 青木峰郎

    $Id: index.html,v 1.6 2004/07/20 23:08:12 aamine Exp $ この文書は書籍『Rubyソースコード完全解説』のHTML版です。 ただし初校段階の原稿をベースにしているため、 書籍では修正されている間違いが残っている場合があります。 予め御了承ください。 2004-02-16 に全章を公開しました。 目次 まえがき 序章 第 1 部「オブジェクト」 第 1 章「Ruby言語ミニマム」 第 2 章「オブジェクト」 第 3 章「名前と名前表」 第 4 章「クラス」 第 5 章「ガーベージコレクション」 第 6 章「変数と定数」 第 7 章「セキュリティ」 第 2 部「構文解析」 第 8 章「Ruby言語の詳細」 第 9 章「速習yacc」 第 10 章「パーサ」 第 11 章「状態付きスキャナ」 第 12 章「構文木の構築」 第 3 部「評価」 第

  • System Notes and Examples

    mooz
    mooz 2009/05/02
    システムプログラミングのテクニック満載
  • Unix Pipes

    mooz
    mooz 2009/05/02
    パイプラインの実装を図解で詳しく
  • Pipe, Fork and Exec and Related Topics