タグ

cとprogrammingに関するTAKESAKOのブックマーク (11)

  • Super Technique 講座~longjmpと例外

    プログラムの流れを制御する手段として、いわゆる「構造化構文(for とか if とか)」、悪名高い「goto 文」などがあるのは周知のことだが、かなり特殊なものとして、「setjmp, longjmp」による「非ローカル分岐」と呼ばれるものがある。この「非ローカル分岐」は「非ローカル」と言うだけあって、ある関数の中から、別な関数に制御を移すことができたりする。まあ、そのために乱用すべきではなく、注意して使わなくてはならないライブラリ関数なのだが、実はこれは JavaC++ で言語の上で実装されている「例外」の基礎となるものである。だから、まずこの標準ライブラリ関数「setjmp, longjmp」について解説しよう。 → Java 講座の「例外」 setjmp, longjmp とは どうやって実現してるの? setjmp/longjmp の利用例~インタプリタ 補追1:setjmp

    TAKESAKO
    TAKESAKO 2009/10/15
    >対応するsetjmpマクロの呼出しを含む関数中の、volatile修飾型でない自動記憶域期間をもつオブジェクトの値が、setjmp呼出しとlongjmp呼出しの間に変更された場合に不定となることを除いて、すべてのアクセス可能なオブジェ
  • 常駐型サーバープログラムのデバッグ手法

    BOOK: WEB+DB Press TITLE: 常駐型サーバーのデバッグ手法(ドラフト版) AUTHOR: (株)プリファードインフラストラクチャー 太田一樹 *注: この文章はWEB+DB PRESS Vol.48に掲載された記事のドラフト版です はじめに 今回はデバッグ関連特集ということで、常駐型サーバープログラムを作成する際のハマりどころやそれに対する解析方法・解析ツール・対策を、実際の経験を交えながら紹介したいと思います。 筆者は(株)プリファードインフラストラクチャーでインメモリ分散検索エンジン「Sedue (セデュー)」を開発しています。モバイル向け検索エンジン「エフルート」や、2008/11/6にリニューアルされました「はてなブックマーク2」などの検索バックエンドとして使われております。 この検索エンジンはいくつかの常駐型サーバープログラムから構成されており

  • Google Code Archive - Long-term storage for Google Code Project Hosting.

    Code Archive Skip to content Google About Google Privacy Terms

  • memcpy 最適化 - kazuhoのメモ置き場

    バイト単位でコピーするアホなコードの方が、勝手にベクトル化される分、gcc 内蔵のヤツより最大3倍高速なんだってwww memcpy() compiled with vectorizing compilers All current compilers for linux should support SSE2 auto-vectorization with #include <string.h> void *(memcpy)(void *restrict b, const void *restrict a, size_t n){ char *s1 = b; const char *s2 = a; for(; 0<n; --n)*s1++ = *s2++; return b; }(中略) x86-64 gcc memcpy() (中略) Linking in a user-compiled

    memcpy 最適化 - kazuhoのメモ置き場
    TAKESAKO
    TAKESAKO 2008/06/16
    奥が深いなぁ。。。
  • 2008年度「陰険なCコードコンテスト」開始 | スラド セキュリティ

    家/.の記事より。毎年開催されている「陰険なCコード」(Underhanded C Contest)だが、今年も募集が始まった。締切は9月30日。このコンテストでは、応募者は一見単純かつ無害で、可読性の高いCプログラムに、ちょっとソースを読んだくらいではなかなか分からない予想外の有害なふるまいを実装することが要求される。今年のテーマは「PPM形式の画像を与えると、その画像の一部が消える(ただし後で復旧可能)」というもの。ちなみに去年のテーマは「0.01%から1%の確率で暗号化が脆弱になってしまう単純な暗号化ユーティリティを書け(ただし暗号化に失敗したことを簡単に見破られてはいけないし、復号もできなければならない)」というものだったが、昨年の優秀者とその作品も発表されている。

  • C/C のポインタの機能--参照渡し - page2 - builder by ZDNet Japan

    ポインタとは ポインタはC/C++言語の特徴的な機能のひとつである。ポインタ(pointer)を直訳すると「指し示すもの」であり、別の変数や文字列定数の場所を指し示すために使う。また、ポインタを指すポインタ(ポインタへのポインタ)というものも存在する。 このページをお読みいただいている読者にあっては、「C言語 ポインタ」「C++ ポインタ」などのキーワードでWeb検索をしたことがあるかもしれない。そうするとポインタに特化した内容の書籍をいくつか見つけられる。それだけ奥が深い機能ということである。 ポインタの用途 では、ポインタはどんなところで使われているのだろう。C/C++言語では、あらかじめ定義されている関数が多数存在するが、その一覧には、*(アスタリスクあるいはアステリスク)が付いているものをよく見かける。 これらはポインタを表し、主に文字列の操作やファイルをはじめとするデータの入出力

    C/C のポインタの機能--参照渡し - page2 - builder by ZDNet Japan
  • Valgrind Home

    Information About News Tool Suite Supported Platforms The Developers Source Code Current Releases Release Archive Variants / Patches Code Repository Valkyrie / GUIs Documentation Table of Contents Quick Start FAQ User Manual Download Manual Research Papers Books Contact Mailing Lists and IRC Bug Reports Feature Requests Contact Summary Commercial Support How to Help Contributing Project Suggestion

    TAKESAKO
    TAKESAKO 2008/02/25
    valgrind-safe
  • mod_mod: Apache module を動的にコンパイルして実行する Apache module : DSAS開発者の部屋

    現在 WEBアプリケーションの開発言語といえばいわゆる Light Weight Langage が主流の様な気がしますが、C言語で WEBアプリケーションを書きた いと思った時、どのような方法があるでしょうか。一つはコンパイルした実行 オブジェクトを CGI として呼び出す方法、もう一つは apache module を書く という方法があると思います。 CGI の場合プロセス起動のオーバーヘッドがありますが apache module の 場合非常に高速です、にも関わらず apache module による WEB アプリケーショ ンの開発があまり流行っていないのはやはり、コード変更の度にコンパイルし なければならない事と、反映の際に apache を再起動しなければならない事が 原因ではないかと思います。 そこで、apache module っぽい C言語のコードをサーバー上で動的に

    mod_mod: Apache module を動的にコンパイルして実行する Apache module : DSAS開発者の部屋
  • C/C++ リファレンス

  • Esoteric source code

    Writing obfuscated code is fun. Golfed binaries I created other page . Polyglots Polyglot quine Polyglot Quine in C and Ruby and Python and Perl and Brainfuck . In other words, this program is runnable with 5 language implementations and it produces its source code without file I/O. Source code . You can use this source code like following: > gcc -xc <(./BFI <(python <(ruby <(perl poly_quine5.txt)

    TAKESAKO
    TAKESAKO 2007/09/14
    変態プログラミングの極地(いい意味で)
  • 概要 - プログラミング言語 D (日本語訳)

    D って何? Dは、汎用のシステム/アプリケーション プログラミング言語です。 高級言語ですが、高速なコードを書く能力や、 OS の API やハードウェアへの直接アクセスの機能も維持しています。Dは、 中規模から100万行単位の大規模ソフトウェアをチームで開発するのに適しています。 Dは学習が簡単で、 プログラマを補助する沢山の機能を提供し、 コンパイラの強力な最適化技術と相性の良い言語です。 Dはスクリプト言語でも、 インタプリタ言語でもありません。 VM を持たず、 宗教やおおげさな哲学とも縁がありません。 信頼性・保守性の高い・読みやすいコードを書いて仕事をサクサク進める必要のある 現実的なプログラマのための、 現実的な言語です。 D は、様々な言語のコンパイラを実装し、 その言語で大きなプロジェクトを構築してきた数十年の経験の集大成です。 D はそれらの言語(特に、C++)からイ

  • 1