タグ

cに関するyheldのブックマーク (23)

  • Matzにっき(2007-09-18)

    << 2007/09/ 1 1. U20プロコン最終審査会 2. 死なないために 3. [Ruby] davidflanagan.com: Nifty Ruby Unicode codepoints utility 2 1. [教会] 第一日曜日 3 1. [Ruby] RubyアソシエーションがRuby言語公式ロゴのデザイン募集:ITpro 2. [OSS] Open Tech Press | GNU GPLv3 日語訳 3. [言語] retlang - Google Code 4 1. Full Disclosure: World's most powerful supercomputer goes online (fwd) 2. [知財] 元麻布春男の週刊PCホットライン - DRMどころかEPNも嫌いだ 3. 取材 5 1. 取材 2. [Ruby] Ruby needs a

    yheld
    yheld 2007/09/28
  • c-repl

    Update (March 2013): C-REPL was a neat hack, but a more principled implementation of the same goal exists in Cling. Many programming languages come with a REPL (read-eval-print loop), which allows you to type in code line by line and see what it does. This is quite useful for prototyping, experimentation, and debugging code. Other programming languages, and especially C, use a "compile-run" model,

  • C言語を書くときにいつも思うこと - 日記を書く [・w・] はやみずさん

    SchemeでREPLを使ってプログラムを書いていると、ある関数一つを部品として仕上げることに集中することができる。ちょっと書いてはload and evalの繰り返し。時には部分的にevalしてみたりして。 そんなスタイルでプログラムを書くことに慣れているから、Cを書いているときにとても不安な気持ちでプログラムを書かなければいけない。Cの場合複数の関数や構造体を記述して、初めてプログラムを動かせることが多いから、部品一つ一つの完成を確かめながらプログラムを書いてゆくことができない。 一揃いのプログラムを書き終えてmakeすると、大量のエラーが表示されて、それを一つ一つ潰していく。その後、大体はSegFaultが発生するからgdbを使ってバグを一つ一つ潰してゆく。 Cでプログラムを書くときは大体こんなパターンで書いていて、あまり気持ちよくない。でも、C言語ってのはそんなもんなんだろうか。そ

    C言語を書くときにいつも思うこと - 日記を書く [・w・] はやみずさん
    yheld
    yheld 2007/09/25
    あるあるw>「一揃いのプログラムを書き終えてmakeすると、大量のエラーが表示されて、それを一つ一つ潰していく。その後、大体はSegFaultが発生するからgdbを使ってバグを一つ一つ潰してゆく。」
  • K&Rを読もう(30) 2.9 2進数のダンプをマクロで - ボクノス

    2.9はビット演算子の解説です。 ビット演算といえば2進数のダンプが欲しくなる。 型ごとに関数を作るのが面倒なので、マクロを活用してみた。 #include <stdio.h> #include <stdlib.h> #define dump(type, bin) \ do { \ int i; \ for (i = sizeof (type) * 8 - 1; i >= 0; i--) \ putchar('0' + ((bin) >> i & 0x01)); \ puts(""); \ } while (0) int main(void) { short mode = 0644; short mode_x = mode | 0111; dump(short, mode); dump(short, mode_x); dump(short, mode_x & ~0111); printf(

    K&Rを読もう(30) 2.9 2進数のダンプをマクロで - ボクノス
    yheld
    yheld 2007/09/07
  • C/C++言語によるCGIプログラミングの設計入門

    C/C++言語によるCGIプログラミングの設計入門 Webpageを対話的にするCGIプログラムをC/C++言語で設計 する方法についての解説です。 Last revised on May 6th, 2000. 目次 CGIとは何か 現在時刻の表示 色々なファイルの返送 Server side イメージマップ Client side イメージマップ 書き込みFORMの文法 FORMデータの処理 漢字コードの処理 アップロードの処理 電子メールの送信 Sbitによる権限の譲渡 アクセスの排他処理 原始的な電子掲示版 セキュリュティーホール Webserverでのコンパイル サーバーによる認証 パスワードの取扱 Cookieの調理法 特殊なヘッダー命令 CGIの環境変数 SSI:Server side include Java scriptの極一部 画像の作成 アクセスカウンタ アクセスの逆探

  • GNU catを読む - next_line_num()編 - ボクノス

    昨日、catのソースを読んでいて謎だったnext_line_num()の処理を解析してみた。 実際の動作を確認する。 cat -nで行番号表示が出来る。 % cat -n next_line_num.c 1 #include <stdio.h> 2 #include <stdlib.h> 3 4 #define LINE_COUNTER_BUF_LEN 20 5 static char line_buf[LINE_COUNTER_BUF_LEN] =表示桁数が固定なのが痛いが、catで行番号を表示することはまず無さそうなので、こんなもんかなぁと思う。 解析してみる。 next_line_num()を抜き出して遊んでみた結果。 解析結果はコメントに書いた。 #include <stdio.h> #include <stdlib.h> // 頭悪すぎコメント。 /* Buffer for li

    GNU catを読む - next_line_num()編 - ボクノス
  • K&Rを読もう(22) 演習2-1 変数の範囲 - ボクノス

    演習2-1 変数の範囲を調べる問題。 面倒なのでマクロで自動生成してみた。 #include <stdio.h> #include <stdlib.h> #include <limits.h> #include <float.h> #define UCHAR_MIN 0 #define USHRT_MIN 0 #define UINT_MIN 0 #define size(s, t, S) printf("%-15s : %2d byte %2d bit %16" #t "%16" #t "\n", \ #s, sizeof (s), sizeof (s) * 8, S ## _MIN, S ## _MAX) int main(void) { size(unsigned char, d, UCHAR); size(char, d, CHAR); size(unsigned short, d

    K&Rを読もう(22) 演習2-1 変数の範囲 - ボクノス
  • C言語にもboolがあった。 - ボクノス

    最近cflowの便利さに気づいたtanakaです。 % cflow cat.c | grep ':$' | sed 's/<.*//' main() usage() simple_cat() cat() write_pending() next_line_num()コールグラフが一目瞭然でっす。超便利。 便利過ぎなので関数のみ抽出するシェルスクリプト作った。 fflow() { cflow $@ | grep ':$' | sed 's/ <.*//' } やばい。死ねる。 boolって何よ? で、cflowのテストにGNU catのソースを使ってみたら、思わぬ拾い物。 bool ok = true; boolにtrue。なんだコレ? マクロの正体は、 #include <stdbool.h> 調べてみたら、標準Cライブラリの実装 stdbool.hあった。どうやらC99からの新機能らしい

    C言語にもboolがあった。 - ボクノス
    yheld
    yheld 2007/08/05
    うっはwwwすっげぇ便利w
  • zsnes_1_51

    yheld
    yheld 2007/07/28
    GLOBALSUGEEEEEEEEE
  • [network][c] networkメモ - goinger的日記

    readnおよびwriten関数でvoid *をchar *にキャストしてる理由は、voidポインタへの加算操作を許していないためである。 voidポインタは加算できんのか。しらなかったww

    [network][c] networkメモ - goinger的日記
    yheld
    yheld 2007/07/27
    へぇ
  • 三項演算子の正しい書き方

    C・C++JavaPerl などのプログラミング言語では、条件演算子として三項演算子?:が用意されている。条件演算子の書き方として、以下のような説明がされることが多い。 condition ? true-expression : false-expression この説明は、以下のプログラムと同じ程度、間違っている。 #include <stdio.h> main( ){printf ("hel" "lo, world\n" );} 条件演算子は、正しくは以下のように書く。 condition ? true-expression : false-expression 使い方の例を示す。 compare = obj1 == null ? obj2 == null ? 0 : -1 : obj2 == null ? 1 : obj1.toString().compareTo(obj2.to

    yheld
    yheld 2007/07/27
    普通にこう書いてた
  • K&Rを読もう(10) 演習1-16 これでいいのか不明。 - ボクノス

    世界中を飛び回ってみたけど演習1-16は(世界中で?)評判が悪い。問題の意味が全くわからない。 「プログラミング言語C(第2版)」第一章演習の答え を参考に書いた。(ほぼコピペ) バッファがオーバーフローした時は読み飛ばして、1行を取得せよ? int main(void) { int len; int max = 0; char line[MAX_LENGTH]; char longest[MAX_LENGTH]; int c; while ((len = getline(line, MAX_LENGTH)) > 0) { if (len == MAX_LENGTH - 1 && line[len - 1] != '\n') { // オーバーフロー中 while((c = getchar()) != EOF) { len++; if (c == '\n') // ココが正しい位置。 br

    K&Rを読もう(10) 演習1-16 これでいいのか不明。 - ボクノス
  • C++と Pthreads でミニマルなHTTPサーバを書く - いやなブログ

    C++と Pthreads でミニマルなHTTPサーバを書く 『UNIXネットワークプログラミング』を読んでいると、自分でも何かネットワーク系の小さなプログラムを書いてみたくなりました。そこで、ミニマルなHTTPサーバを C++と Pthreads で書いてみました。 同じ著者の「詳解UNIXプログラミング」もそうだったように、今回のもほとんどすべてのページに、重要なことが書かれています(最後のほうのXTIの部分は例外かもしれませんが)。 たとえば、27章ではネットワークサーバの実装として、次の設計方針がそれぞれ検討され、実際のコード付きで解説されています。 クライアントごとに fork 事前に fork - 各プロセスで accept 事前に fork - ファイルロックで accept を保護 事前に fork - Mutex ロックで accept を保護 (PTHREAD_PRO

  • The Aggregate Magic Algorithms

    There are lots of people and places that create and collect algorithms of all types (here are a few WWW sites). Unfortunately, in building systems hardware and software, we in The Aggregate often have found it necessary to do relatively obscure low-level things very efficiently. Many of the tricks we've devised or collected either require assembly language coding or are not entirely portable when

  • http://d.hatena.ne.jp/sato_tiff/20070618

  • code

    CODE < ^ > << new | old >> / 2023-03-27

    yheld
    yheld 2007/06/12
    全然へたじゃ無い件について@nirvash, まぁ、一部は・・・
  • C でも BF でも WS でもある - 兼雑記

    というコードを IOCCC に出したのでした。ただ C のコンテストに BF や WS のコード出してどうするということで、 C コードの機能として引数が ws 含んでると Whitespace インタプリタになって bf 含んでると Brainfuck インタプリタになるようになっています。無引数だとただの Hello, world! です。よって3種類の方法で Hello, world! が実行できるけど全部出力はおんなじー、というような。 http://shinh.skr.jp/dat_dir/bfws.c WS 埋めるのは簡単で、 BF も "Hello, world!\0+++++..." などとするなりコメントに埋めるなりして後をすっとばせば簡単なのですが、それだとつまらないので C のコードに溶け込んでもらってます。 C のコードとしては Obfuscation が足りないし

    C でも BF でも WS でもある - 兼雑記
  • 404 Blog Not Found:Cで強引にたらいを後回し

    2007年05月22日22:00 カテゴリLightweight Languages Cで強引にたらいを後回し 404 Blog Not Found:λ萌え - たらいを後回しを書いた後、なんとかCでも出来ないかと、車輪の再発明する代わりに横車を押してみた。 GCCにはclosureがある! 実は以外と知られていないが、gccでは無名関数は使えなくとも、closureは使える。最近では無名関数をサポートしている言語が人気ということもあり、また無名関数の多くがclosureとしても用いられているため、無名関数の別名としてclosureという呼び方をすることもあるが(私もときどきやる)。この二つは来は別物である。JavaScriptで書くと、 var outer = 1; var closure = function(x){ return outer++ }; var nonclosure

    404 Blog Not Found:Cで強引にたらいを後回し
  • CHoP - 更新履歴兼雑記

    C のヘッダをパースするライブラリを作りかけました。 http://shinh.skr.jp/chop/chop.tar.bz2 昔作った tccparser みたいな感じで、 Ruby/DL の宣言ヘルパみたいなのも作りました。 こんなのが動きます。 require 'chop' module LIBC extend Chop dlload 'libc.so.6' include 'stdio.h' include 'stdlib.h' include 'string.h' include 'ctype.h' include 'time.h' include 'sys/time.h' def my_compare(ptr1, ptr2) ptr1.ptr.to_s <=> ptr2.ptr.to_s end COMPARE = callback("int my_compare(char*

    CHoP - 更新履歴兼雑記
  • getlineラブ。 - ボクノス

    アルゴリズムの勉強用にC言語で1行読み込みを作ってみたけど、Rubyの方がずっと早かったorz。原因は、mallocの回数とioのバッファリングにあるような気がして今日はずっとRubyのio.cを眺めてた。ま、よくわからんのでwebを探索。 ・・・素敵なライブラリを発見してしまった。 Manpage of GETLINE なんと、C++のgetlineがC言語にも!! getline() は stream から 1 行全てを読み込み、テキストが含まれているバッファのアドレスを *lineptr に格納する。 "1行全てを読み込み" !! C言語でちゃんと1行読み取るのは結構しんどい。なぜなら、C言語の配列は固定幅だからだ。可変長な文字列を作るためにはmallocして、1文字づつ読んで改行を探して、領域がたりなくなったら、reallocしながら配列を広げるしかない。速度的にもチューンが欠かせ

    getlineラブ。 - ボクノス