金码堂码资料本站还提供大量的金码堂码资料创新内容,金码堂码资料新闻,金码堂码资料图片等相关信息。
金码堂码资料本站还提供大量的金码堂码资料创新内容,金码堂码资料新闻,金码堂码资料图片等相关信息。
イントロダクション Webで動的にコンテンツを作る仕組みとして、CGI(Common Gateway Interface)がよく使われています。サーブレットなども流行っていますが、私はCGIが好きです。単純でわかりやすいし、仕様が枯れているからです。ここでは、CGIスクリプトをC言語を使って実装する方法について書いてみます。 ところで、CGIはインターフェイスの規約に過ぎないので、「CGIを実装する」というと、WebサーバにCGIスクリプトを呼び出す機能をつけるということになってしまいます。ここで紹介する、CGIを介して呼び出されるプログラムは「CGIスクリプト」と呼ばれます。間違っても、「俺、CGI作れるぜ」と公言するのはやめましょう。とはいえ、社会生活においてそのような趣旨の突っ込みを入れると嫌な顔されることうけあいです。 スクリプトというくらいなので、CGIスクリプトを実装するのには
■ [lisp][lab] S式ベースC言語「SC」がリリースされたようです 僕がいた研究室の先輩のプロジェクト、「SC」がリリースされたようです。 SC: The SC Language System SCは、一言で言うと「S式でC言語を書くためのシステム」です。 言語処理系の研究では、JavaやC言語などの既存の言語に並列処理やGCなどのいろいろな機能を付け加えたりします。 ここで問題になるのが、「JavaやC言語の文法をいじるのは大変」ということです。例えばJavaに「このキーワードでくくった区間は並列に動作します」みたいな 文法を追加しようと思ったら、yaccとか使って頑張らないといけません。 そこでS式です。 S式はLisp系言語で使われるフォーマットで、プログラミング言語のような木構造を扱うのに特に適しています。 俺言語からC言語への変換は大変ですが、俺言語をS式ベースにしてお
C言語で、rubyの拡張モジュールを作成する方法について調べてみました。 とりあえず例として Sample という拡張モジュールを作成し Sample::sample() というメソッドをCで実装 してみました。 このSampleモジュールを使うと、以下のrubyのコードは require "sample" puts Sample::sample("test") コンソールに "test" と表示するようになります 拡張モジュールのソースコード Cで次のようなコードを書きます。 #include <ruby.h> static VALUE rb_sample_sample(VALUE obj, VALUE arg) { Check_Type(arg, T_STRING); return rb_str_new2(RSTRING_PTR(arg)); } void Init_sample()
このマクロの目的 offsetof マクロは、構造体のメンバのバイト位置を示す整数を返す。 定義 #include <stddef.h> offsetof(type, member-designator); 働き このマクロは、 member-designator が type 型の先頭から何バイト目にあるかという size_t 型の整数定数に展開される。構造体メンバに対し、構造体の先頭からのバイト数になる。 member-designator は、 static type t; という宣言があった時、 &(t.member-designator) という表現がアドレス定数になるものでなければならない。 (指定されたメンバがビットフィールドであった場合の動作は未定義である。) 解説 実際の stddef.h 内には #define offsetof(s,m) (size_t)&(((s *
ハッカーのたのしみ読んでます。実はこの本、「解説が殆ど無い」。提示されているのは式のみ。後は自分で探るしかないのだ・・・メモメモ。 記号はCの演算子。=は等号。 & マスク。共通するビット以外をオフにする効果を持つ。 例:IPアドレス & サブネットマスク = ネットワークアドレス 192.168.1.100 & 255.255.0.0 = 192.168.0.0 | ビットを立てる。とにかくビットが立ってたらビットを立てる。 例:ファイルhoge.scmの権限は644なので、実行権限(111)を与える。chmod +x hoge.scm 644 | 111 = 755 (8進数) ~(not) ビットの反転。1の補数を取る。 ^(xor) 繰上り無しの足し算。mod2世界の足し算と覚えておくと忘れない。 1 ^ 1 = 0 1 + 1 = 0 (mod 2) -1 最右のビットを消して、
id:minekoaさんの以下のエントリーを読んでつらつらと。 [C++] 漢の言語(http://d.hatena.ne.jp/minekoa/20080310/1205146973) 一時期、何でもかんでも巨大なライブラリアーカイブ(.a,.lib)に放り込むというコーディングスタイルを持っていた時期がありました。 結構いろんなメリットがあって、 ライブラリ自体が巨大でも、ライブラリ内のモジュール依存性が低いと実際にリンクされるのは一つだけ。 C言語はエントリーポイントを一つしか持てないので、ユニットテストがやりづらいのを切り分けられる(本番時もmain関数のみのソースをリンクするのみ) コンパイルの時間が省略される まぁ、生でC言語を触ることが極端に減ったのでこの辺の好みは今となってはあまり生かされていないのですが、他にもこんな方針を同時に立てていました。 関数は1画面以内。それも、
_ 日常 本当は朝のうちに行くつもりだったのに、 結局夕方になってから、 No Country for Old Men を観に行った。 原作の評判は聞いていたのだが、映画も割と評判良さそうだったので、 見に行く気になった。 少々オーソドックスなストーリーと言えなくもないが、 映画の世界にどっぷり浸かれて、かなり良かったー。 ハリウッドじゃ、最近はゲームやコミックの映画化が多くて、 どうしても勧善懲悪な内容になりがちで、 少々食傷気味だっただけに、 こういう善対悪にならない構図は非常によろしい。 一応善に限りなく近い存在であるシェリフは常に事件から一歩退いた位置にいるし、 観客の多くが一見善と捉えがちな主役は所詮こそ泥だ。 どっちの方がより恐ろしい存在か程度の違いしかないと言っていい。 たぶん、この映画で最も重要なテーマは自分の運命の決め方なんだと思う。 われわれは常に何かを選択しながら生き
東大のアルゴリズムとデータ構造演習(リンク切れ)が面白そうなので演習問題を解いてみる。 課題1-A:シェルを実装せよ。 ガンバリマス。 方針 パイプもリダイレクトも無し。一番簡単そうな実装を目指します。 1行取得は面倒なのでGNU getline使います。 fork,exec,waitを使って実装します。 execはexecvpを使うことにしました。 引数の処理は、単語の先頭ポインタをargvに追加して、スペースか改行があったら\0で踏み潰していきます。 コーディング #define _GNU_SOURCE #include <stdio.h> #include <stdlib.h> #include <unistd.h> void prompt(void) { printf("* "); } int main(void) { /* 行の取得用 */ char *line = NULL;
本演習の目的は、プログラミング言語C及びSchemeの基礎を習得し、 それらの言語を通じて、講義「アルゴリズムとデータ構造」の理解を深めることにあります。 重要なお知らせ 特に重要な連絡事項はここに掲載されます。 課題について 課題には、A課題とB課題があります。(課題番号の末尾が種類を表します。) B課題が基礎的な課題で、A課題が発展的な課題となっています。 B課題を全問解くことが、単位取得の目安です。 C入門第1回(10月10日) C入門第2回(10月17日) C入門第3回(10月24日) C入門第4回(10月31日) C第1回(11月7日) C第2回(11月14日) C第3回(11月21日) C第4回(11月28日) C第5回(12月5日) Scheme第1回(12月12日) Scheme第2回(12月19日) Scheme第3回(1月9日) Scheme第4回(1月16日) C補講
cursesの多くの関数のうち,基本的なものを紹介する. cursesの基本的な関数 カーソルの移動 文字出力 文字の削除 画面のクリア サンプル サンプル2 cursesには沢山の関数がある.ここではそのうちの以下の機能を使ってみる. カーソルの移動 文字出力 文字の削除 画面のクリア カーソルの移動カーソルの移動には int move(int y, int x); を使用する.左上が0,0となる.そして縦にy,横にxが増加していく.また,ウィンドウが複数になると,ウィンドウを指定してそのウィンドウのカーソルを移動させることができる. int wmove(WINDOW *win, int y, int x); 複数のウィンドウの扱いについては別項に記述する. 文字出力文字を出力する関数はいろいろある.最も基本的なものとして以下がある. int printw(char *fmt [, ar
低水準ファイル入出力関数 perl でプログラミングするにしても、 基礎知識としてC言語のファイルディスクリプタの概念を知っておくにこしたことはありません。 特に 4引数 select を使うときには、 ファイルディスクリプタの知識があると理解が早いでしょう。 C言語でファイルを扱うときは、一般的に fopen・fread・fwrite・fclose などの ライブラリ関数を使います。これらは stdio.h で宣言されており、 標準入出力ライブラリ (標準入出力関数) と呼ばれます。 ファイルをオープンするときは FILE *fp; fp = fopen("file.dat", "r"); として FILE 構造体を得ます。それに対して fread・fwrite を実行します。 しかし、これら fopen・fread などのライブラリ関数も、 内部では open・read・write・c
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く