タグ

programmingに関するwata_dのブックマーク (148)

  • Windows実行ファイルのバイナリ概要:CodeZine

    はじめに アプリケーションを起動させるEXEファイルを、普段何気なく実行していることと思います。皆さんは、このEXEファイルの中身について考えてみたことはありますか? 連載は、そのEXEファイルの内部構造がどのようになっているのかを解説していくものです。 EXEファイルには具体的に、どのような情報が格納されているのでしょうか。通常、Visual C++やVisual Basic、Delphiなどのコンパイラが自動的に生成してくれるので、考えることはありませんが、今回はこの疑問に真っ向から勝負を挑んでいきます。EXEは魔法の箱? 筆者は「ActiveBasic」というネイティブコンパイラ搭載型の統合開発環境を開発しています。コンパイラ開発イコール、EXEファイルの仕様をかなり細かい部分まで理解しなければならないという状況に置かれることを意味します。 Javaや.NETが騒がれる昨今、あえて

  • Technical documentation

    This browser is no longer supported. Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.

    Technical documentation
  • http://park17.wakwak.com/~dragoon/mfctop.htm

  • 直線のアルゴリズム 円のアルゴリズム

    これも色々あるのですが多いのは 1)線分の始点終点で出来る長方形が交わるか? 2)線分が収まる円を描いて円同士が交わるか? 3)片方の端点から線分との距離2組みを求めて短い方 の3つくらいかな? 1)は判断を並べれば良いだけ しかし、分岐が入るとCPUは遅いので、 アセンブラレベルで大小比較結果(CF)を集めてまとめて比較するような工夫が必要です。 2)円同士が交わるかは、中心同士の距離を求めて双方の円の半径の 和(線分の長さ合計/2)との大小比較します。 hypotenuse を荒く、誤差分を安全側に判定れば(分岐予測のミスでペナルティを払うCPUでは) 1)より高速です。 3)は線分の交差判定の初段と実は同じ計算をします。 これ使うなら素直に交差判定した方がマシ GUIの為に、必要な処理です。 マウス座標をp0 線分が点p1,p2を通るとして rx:=p1.x-p0.x , ry:=p

  • Nopaste

    Note: do not post copyrighted or otherwise restricted material here. By posting code here, you agree to the terms of this statement. Posts expire after 24 hours. The syntax highlighting routines are released under BSD license. Download it here.

    wata_d
    wata_d 2006/05/30
    おもしろそう
  • 『C言語による最新アルゴリズム事典』

    奥村晴彦『C言語による最新アルゴリズム事典』技術評論社,1991年,ISBN4-87408-414-1,2400円 大きな画像(1.1M) 1987年10月にPascalを使った『コンピュータ・アルゴリズム事典』を,1991年2月にその改訂版としてANSI C言語を使った『C言語による最新アルゴリズム事典』を出版しました(いずれも技術評論社)。そのサポートページをつくろうと思いながら多忙のためなかなかできませんでした。とにかく始めなければ……というわけで,サポートページまがいのものを作ってみました。 石田晴久ほか『コンピュータの名著・古典100冊』(インプレス,2003年)に選んでいただきました。100冊といっても日人の書いたものは20%しかなく,たいへん恐縮しています。 Frequently Asked Questions どの銘柄のC言語ですか? ほぼ当時のANSI Cドラフトに基づ

  • 2進定数の書き方::実装技術

    2005-11-29 CにもC++にも、2進数を直接記述する方法がありません。しかし、定数に2進数を使いたくなることも少なくありません。コンパイラによっては、0b~とか、0y~とかの記法を使って2進数を使えるようにする拡張がサポートされている場合もありますが、このような拡張機能を使うと、CPUが変更になった場合など、大変な目に遭うことは必至です。 そこで、C++のテンプレートとマクロを組み合わせて、2進数を記述する方法を紹介したいと思います。テンプレートを使うので、実行時に計算する必要もなく、完全にコンパイル時に解決可能な汎整数定数式としてあつかうことができます。 template <int Bit> struct bit; template <> struct bit<0> { static const int value = 0; }; template <> struct bit<1

    wata_d
    wata_d 2006/05/19
    テンプレートで 2 進数を表現
  • http://221.112.61.214/~kzk/column/emacs/

  • マウスジェスチャを実装する(Win32版):CodeZine

    はじめに 私はGUI環境で簡単にコマンドを送ることができるマウスジェスチャが大好きです。今回はそんなマウスジェスチャを作ってみましょう。なお、.NET版については別稿を参照してください。対象読者 C言語(またはC++言語)でWin32のプログラムを開発したことがある方。必要な環境 少なくとも32bitWindows環境が必要です。64bit環境でのテストはしていませんが大丈夫だと思います。設計 まずは構想を練らなければなりません。今回はサンプルなのでこちらで決めさせて頂きます。右ボタンが押されたら始まり、離されたら終わる。入力可能方向は4方向(斜め判定は無し)同じ方向への連続入力は無し(普通はこうすると思います)ある方向に動かすと反対側の移動量は0になる縦横の移動量を比較して多い方だけを考える(より自然な移動になる)ウィンドウの外に出てもしっかりと動作するようにする(これを行わないと変な

  • ISP imaging-developers - 画像処理技術情報一覧

    リサイズ品質の評価の一基準として"CZP"を用いた評価手法を紹介すると共に、アルゴリズムによるリサイズ品質を比較検証いたします。

  • htmlhelp - Google Code

    JavaScript is disabled on your browser. Please enable JavaScript to use correctly mesosadmin frontend Please login Login Password Forgot your personal password ? We can remind you

  • プログラミング liboctave (C ) 〜数値計算・多変量解析・パターン認識〜(立志編)

    liboctave for windows MSVC or linux g++ 2008 2008年夏辺りのliboctaveの使い方についてのメモ liboctave以外には,IT++などのライブラリがあり,(これはliboctaveと異なり,そもそもAPIとして設計されたものなので)ドキュメントが豊富です.この情報もメモしておきます. 以下に2001,2002年あたりの古い情報がありましたが,あまりにも古くなってきたので使用例を除いて削除しました. Octave C++で数値計算例 固有値分解 EIG #include <iostream> #include <octave/config.h> #include <octave/Matrix.h> using namespace std; int main() { Matrix m(2, 2); m(0,0) = 3; m(0,1) =

  • 関数型言語が自然であり当然である世界

    手続き型言語が全盛で、関数型言語が、開発効率を変える新しいパラダイムのように言われている……と今更のように言うとずいぶん認識が古いと笑われてしまいそうですが。 関数型言語が後から出てきたのは事実なわけで。えーと、えーと、少なくとも型付きの関数型言語で手続き型同様のパフォーマンスを叩き出せるようになったのってML以降ですよね、ね。LISPコンパイラの中には物凄い最適化を行うものがあるらしいなんて話は忘れてっ。その結果、関数型言語には、refやらIOやら*Worldやら手続き型へのマッピングを行うためのなにかがあるわけです。 じゃあ、関数型言語が先に出来ていたら使われるようになっていたら、どのような世界になっていたのか……。 余談ですが、YTがこのようなことを突然考え出すのは、何かをさぼりながらであることは言うまでもありません。閑話休題。 まず、今の手続き型言語はどのように生まれたか。これは勿

    関数型言語が自然であり当然である世界
  • Main Page - Nemerle Homepage

    Nemerle is a high-level statically-typed programming language for the .NET platform. It offers functional, object-oriented and imperative features. It has a simple C#-like syntax and a powerful meta-programming system. more... The language implementation and this documentation is licensed under free-for-any-use BSD-like license. Activity If you're here to check activity of the Nemerle project, pl

    wata_d
    wata_d 2006/05/05
    が使える言語
  • '// Windows Script Host を使い尽くす //

    wata_d
    wata_d 2006/05/03
    過去ログ
  • HackCraft—The RAII Programming Idiom

    Or rather, which languages is RAII appropriate for. As will soon be explained RAII depends on the way that constructors and, in particular, destructors, get called and the predictability of this happening. RAII can be used with: Languages which can have user-defined types allocated on the stack (“automatic” objects in C/C++ terminology) and cleaned up during normal stack cleanup (whether because o

  • ガーベージコレクション

  • A garbage collector for C and C++

    Where to get the collector Platforms Scalable multiprocessor versions Some collector details Further reading Current users Local links for this collector Local background Links Contacts, Updates, and Reporting Issues Translations of this page [ This is an updated version of the page formerly at http://www.hpl.hp.com/personal/Hans_Boehm/gc, and before that at http://reality.sgi.com/boehm/gc.html an

  • Boehm GC を使ってみる

    なにそれ? 前提環境 準備 使ってみる。 もうちょっとちゃんと使ってみる。 速度差 速度差2 まとめ Wed, 18 Sep 2002 01:42:22 +0900、初稿。 Wed, 18 Sep 2002 02:55:41 +0900、改稿。ハヤッ。(Kent.Nさんのポカのご指摘に拠る。多謝) Wed, 16 Jul 2003 20:42:18 +0900、改稿。てつやさんによる。 注意:後半部、速度の比較をやっていますが、どうやら相当いいかげんです。気でこの比較を知りたければご自分でテストを作成し、ご確認ください。特に、最適化のあたりとか。一番いいのは、現在既にあるアプリを変更してやってみることかなぁ。 なにそれ? Boehm GCを使おうを参照。 前提環境 Windows 2000 MS VS 6.0 sp5 Memory 256MB CPU PentiumIII 500Mhz

  • Boehm GCを使おう

    はじめに CやC++である程度大きなプログラムを書く場合,最大の問題点は メモリ管理である.複雑なプログラムの場合,必要なメモリの量を あらかじめ見積っておくのが難しいから,メモリが必要になった 時点でメモリを確保し,不要になったらそれを解放するという プログラミングスタイルが一般的だ.Cで言えばこんな感じだ. char *x; ... x = (char*)malloc(n*sizeof(char)); ... x を使って仕事をする ... free(x); このプログラミングスタイルの問題点は,おおまかに言って こんなところだろう. free(x) を忘れると,プロセスがどんどん大きくなってしまう. free() してはいけないものを間違ってfree()する(たとえば,同じ メモリを2回 free() してしまうとか)と,その free() の中でなく, 全然違う場所でエラーが発生す