タグ

cに関するyoupyのブックマーク (11)

  • Learn C the Hard Way

    Learn to think like the computer hates you, because it does. Learn C The Hard Way (LCTHW) is a practical book teaching real world useful C using the same proven Learn The Hard Way method. LCTHW teaches real robust C coding and defensive programming tactics on real hardware rather than abstract machines and pedantic theory. The book emphasizes breaking your code on purpose, and in the process teach

  • ビキビキ…たった1行のC言語だけで鳴らされる異常に格好良い電子ノイズの数々 : matsu & take

    ブブブブブブビビビビビビ…。 まったくC言語のプログラムに関する知識のない自分でも、このノイズの格好良さとシンプルな数式のマジックには意味がわからないままに驚愕します。たった1行程度のC言語プログラムで生成された低bitなデジタルノイズミュージックの数々がプログラムのコードとセットでYouTubeに公開されています(via: motherboard.tv)。 上のようなたった数十文字の単純な記号と数字を書きこむだけで当にこんなノイズが出せるものなんでしょうか。一文字一文字の意味の詳しい説明を聞いても全く頭の中にとどまりそうにありませんが、作者のブログに説明が書かれています(→Link) 動画の作者はviznutというフィンランド人。小サイズのCGアートを製作するデモシーン(Demoscene →Wikipedia)で活動している人物だそうです。 作者がこの動画を作るきっかけになったという

  • node.js C/C++ addons 入門 - unknownplace.org

    node.js のドキュメントを見ていたら C/C++ で簡単に拡張が書けそうだったので試してみた。 addons - Node.js Manual & Documentation ドキュメントに載っている hello.cc をみてみると: #include <v8.h> using namespace v8; extern "C" void init (Handle<Object> target) { HandleScope scope; target->Set(String::New("hello"), String::New("world")); } この extern "C" void init (Handle<Object> target) というやつが、jsで require("hello") したときに呼ばれる感じらしい。この関数だけは必ず実装する必要がある。 この中の Ha

  • Android2.3だからCだけでテルミンもどきを作った。 - 2011-01-11 - 閉村観光

    (2012 追記)以下の内容は読まずこちらを参考にしてください http://d.hatena.ne.jp/miujun/20120307 (2011 9/30 追記)先ほどHTC EVO WIMAXを2.3にあげて試したのですが残念な結果でした。音は出るし周波数も変わりますが遅延があまりにひどかった。エミュレータでは良かったのですがねえ〜。ということですので注意してお読みください。 ソースが汚いので部屋を明るくして離れてご覧ください 動的なサウンド生成はAndroid用のOpenSL ESをGUIはNativeActivityで作られたテルミンです。正直まだOpenSL ESのサンプルも少なく私自身が実験して導き出したもので誤りも含まれているかもしれません。nexus sも持っていませんしエミュレータで確認した程度ですが動的なサウンド生成には成功しています。アドバイスや訂正があればコメン

    Android2.3だからCだけでテルミンもどきを作った。 - 2011-01-11 - 閉村観光
  • PerlエンジニアのためのObjective-C Blocks入門 - unknownplace.org

    OS X 10.6 以降の xcode では Objective-C に Blocks というシンタックスが追加されている。 Blocks Programming Topics: Introduction Perl でいうところの無名関数(コードブロック)を作ることができる機能で、Perlでいうところの my $f = sub { ... }; $f->(); は void (^f)() = ^{ ... }; f(); のように書ける。書式がきもいのはObjective-Cの定めなのであきらめましょう。 より詳しい書式については上記ドキュメントを見ると良い。 しかしデフォルトではPerlのコードブロックとはレキシカル変数の扱いが異なる。 my $i = 0; my $f = sub { return $i + 1 }; $i++; $f->(); # 2 を返す perlではこのようにレ

    youpy
    youpy 2010/05/12
    無名関数
  • Firefox 3.7でのjs-ctypes « Mozilla Developer Street (modest)

    去年行われたFirefox Developers Conference 2009でjs-ctypesについて説明しましたが、いくつかの制限があり、Firefox 3.6で使える状況はあまりなかったかと思います。現在開発を行っているFirefox 3.7では、js-ctypesが大幅に改良される予定で、現在のビルドでは、構造体のサポートやコールバック関数のサポートが含まれます。今回は構造体の使用について説明します。 この説明では、Windowsに含まれるカラーピッカー(色の選択をするダイアログ)を表示する例を挙げます。 Windowsでカラーピッカーを表示するAPIは、ChooseColorです。この関数は引数として以下の構造体のポインタを持ちます。 typedef struct { DWORD lStructSize; HWND hwndOwner; HWND hInstance; COL

    Firefox 3.7でのjs-ctypes « Mozilla Developer Street (modest)
  • 橋本商会 » Cでgearman workerを書いてRubyのclientから呼び出す

    gearmandをソースからインストールして、Cライブラリのlibgearmanが使えるようになった。 これでC言語でworkerを作ってRubyのclientから呼び出せる。環境はUbuntu9.04とgearmand0.11 ■Cでworkerを書く str_reverseというアビリティを持つworkerを作る。 ほぼAPIドキュメントのままだが、jobの引数を受け取るのと、値を返せるようにがんばった。ジョブ失敗した時とかのエラー処理全然書いてない。たぶんenum gearman_return_tを返せばいいんだろうけど strreverse-worker.c // 文字列をreverseして返すworker #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include 

  • GNU strlen を読む - blog.8-p.info

    Hacker News でみかけた Glibc’s strlen implementation: Probably not what you’d guess というスレッドが面白かった。スレッドでは GNU の他に OpenBSD (べたな C, i386, x86-64) と Apple (SSE3 を使っている) にもリンクがあるんだけど、ここでは GNU strlen の実装についてだけ説明します。 実装 GNU strlen は文字列から long word 単位でおおまかに NUL っぽいものを探してから、バイト単位でこまかく探す、という方法をとっている。 strlen.c にある strlen は、トリッキーなところを丁寧にコメントで補っているせいもあってやや長い。まず、strlen の引数の str のアドレスが long word にそろっていない場合、最初の for ルー

  • WAVE file format

    WAVE (.WAV) file format 4バイト 'R' 'I' 'F' 'F' 4バイト これ以下のバイト数 (= ファイルサイズ - 8) 8バイト 'W' 'A' 'V' 'E' 'f' 'm' 't' ' '(←スペース) 4バイト WAVEfmt欄のバイト数 2バイト データ形式 (PCM: 01 00) [RFC 2361] 2バイト チャネル数 (モノ: 01 00 ステレオ: 02 00) 4バイト サンプリングレート (44100Hz なら 44 AC 00 00) 4バイト バイト/秒 (44100Hz ステレオ 16ビット なら 10 B1 02 00) 2バイト バイト/サンプル×チャネル数 (ステレオ 16ビット なら 04 00) 2バイト ビット/サンプル (16ビット なら 10 00) 「WAVEfmt欄のバイト数」-16バイト 拡張部分 4バイト

  • Imager::API

    NAME Imager::API - Imager's C API - introduction. SYNOPSIS #include "imext.h" #include "imperl.h" DEFINE_IMAGER_CALLBACKS; MODULE = Your::Module PACKAGE = Your::Module ... BOOT: /* any release with the API */ PERL_INITIALIZE_IMAGER_CALLBACKS; /* preferred from Imager 0.91 */ PERL_INITIALIZE_IMAGER_CALLBACKS_NAME("My::Module"); DESCRIPTION The API allows you to access Imager functions at the C leve

    Imager::API
  • RubyInline - Doge log

    RubyInlineを使うとCを埋め込めるらしいので試してみた。 $:.unshift File.dirname(__FILE__) require 'rubygems' require 'inline' VERSION = '0.0.1' class KQueue inline do |builder| builder.include "<sys/event.h>" builder.include "<sys/time.h>" builder.include "<unistd.h>" builder.include "<errno.h>" =begin builder.map_c_const({ 'EVFILT_READ' => 'int', 'EVFILT_WRITE' => 'int', 'EVFILT_AIO' => 'int', 'EVFILT_VNODE' => 'int',

    RubyInline - Doge log
    youpy
    youpy 2008/10/15
  • 1