タグ

cに関するf99aqのブックマーク (27)

  • Big Sky :: ちっちゃなビルドシステム qo が激しく便利だった件

    « Re: VimでURLをドメインだけに置換するコマンドを正規表現でうったら、当に正規表現って意味不明なフォルムと思った。 | Main | golang のリファクタリングには gofmt ではなく、gorename を使おう。 » golang には go build というビルド機能があり、C言語と golang をまぜた cgo というC言語拡張も同じコマンドでビルド出来ます。 その際、ソースコードのコメントに CFLAGS や LDFLAGS を自ら指定する事が出来るので package gtk // #include "gtk.go.h" // #cgo pkg-config: gtk+-2.0 import "C" import ( "fmt" "log" "reflect" "runtime" "strings" "unsafe" "github.com/mattn/g

    Big Sky :: ちっちゃなビルドシステム qo が激しく便利だった件
  • C言語プログラミングの覚え書き(改訳) - アスペ日記

    原文: Notes on Programming in C Rob Pike 1989年2月21日 Copyright (C) 2003, Lucent Technologies Inc. and others. All Rights Reserved. Lucent Public License Version 1.02 前書き KernighanとPlaugerによる“The Elements of Programming Style” (「プログラム書法」木村泉訳)は重要で影響力のあるです。このにはそれだけの価値があります。しかし、その中の簡潔なルールが、来意図されたような哲学の簡潔な表現としてではなく、よいスタイルのレシピとして受け取られているように私は時々感じます。このが変数名は意味を持つようにつけられるべきだと言うなら、名前が使い方を説明するちょっとしたエッセイのような

    C言語プログラミングの覚え書き(改訳) - アスペ日記
  • Big Sky :: clib の使い勝手にマジ感動した

    C言語でアプリケーションを書くのは他の言語と比べて少し気合が必要ですよね。例えば HTTPからデータを取得する 取得したデータを json パースする 結果の一部を色付きで表示する こんな場合、C言語プログラマは 「HTTP か、じゃぁcurlかな」 「JSON か、parson かな」 「色表示か...エスケープシーケンスでもいいけどWindowsがなー...」 といった事を考え、そこから curl や parson といった資材の調達を始める事になります。途中で新しい機能を追加したくなり、それを外部ライブラリに頼る場合だとその都度資材を調達する必要があり、思考を停止しなければなりません。 この辺は rubyperl、nodejs、golang 等の様に、ちょっとした手間だけで済ませたい物です。 またC言語の場合、ヘッダファイルはシステムの include フォルダに提供元が期待す

    Big Sky :: clib の使い勝手にマジ感動した
    f99aq
    f99aq 2014/06/28
    Package manager for C!!!
  • GitHub - google/sanitizers: AddressSanitizer, ThreadSanitizer, MemorySanitizer

    sanitizers This project is the home for Sanitizers: AddressSanitizer, MemorySanitizer, ThreadSanitizer, LeakSanitizer, and more The actual code resides in the LLVM repository. Here we keep extended documentation, bugfixes and some helper code. The documentation for our tools: AddressSanitizer (detects addressability issues) and LeakSanitizer (detects memory leaks) ThreadSanitizer (detects data rac

    GitHub - google/sanitizers: AddressSanitizer, ThreadSanitizer, MemorySanitizer
    f99aq
    f99aq 2014/05/26
  • パスワードとmemset関数 - yohhoyの日記

    C言語プログラム上で高機密性情報(パスワード文字列など)を消去するケースで、memset関数の単純利用では機密情報がメモリ上に残存してしまい、セキュリティ上の脆弱性につながる可能性がある。 void secure_operation() { // パスワード文字列を取得 char passwd[128]; get_password(passwd, sizeof(passwd)); //... // メモリ上の高機密データを消去... memset(passwd, 0, sizeof(passwd)); // ?? } 上記コードではパスワード文字列が格納された変数passwdを使用後にゼロクリアしているが、コンパイル時の最適化によりmemset関数呼び出しが削除される可能性がある。この(プログラマの意図に反する)最適化は、C言語の言語仕様上も許容されるコンパイラの振る舞いとなっている。*1

    パスワードとmemset関数 - yohhoyの日記
    f99aq
    f99aq 2014/03/21
    memset後にその自動変数を使って無いから最適化で無かったことにされる。セキュリティ用途の関数が用意されている。
  • C99の仕様

    長い歴史を持ちながら、依然として人気の高いC言語。その最新仕様の情報にキャッチアップするための連載スタート。今回は1999年に策定された「C99」を取り上げる。 連載 INDEX 次回 → C言語(以降、単にC)はDennis Ritchieによって1969~1973年の間にベル研にて開発されたプログラミング言語である。長い歴史を持つと共に非常にポピュラーな言語で、プログラマーでCを知らない人はまずいないと言っていいだろう。プログラミング言語のシェアを調査しているTIOBEでも、ここ最近は常に1、2位を占めている。 Cの言語仕様は今から25年近く前である1989年に初めて規格化され、これは一般に「ANSI-C」と呼ばれている。ANSI-Cは長らくCの言語仕様のスタンダードの位置を占め、世の中の大半のプログラマーは、このANSI-Cに慣れ親しんでいることだろう。しかし、実はCの言語仕様はその

    C99の仕様
    f99aq
    f99aq 2014/02/07
  • Glibc malloc internal

    glibc mallocの解説 Video: https://youtu.be/0-vWT-t0UHgRead less

    Glibc malloc internal
  • MySQLの自前strtod実装がタコすぎる - hnwの日記

    MySQL5.1のソースコードを確認していたところ、浮動小数点数の10進表記から浮動小数点数への変換処理に実装上の問題点を見つけました。浮動小数点数処理の典型的な落とし穴にはまっていて、計算の途中で精度を落としてしまっています。 これは古くから知られているバグのようで、下記URLから判断すると2007年末頃には修正コードが開発系ブランチに入っていたようです。しかし、その後のんびりしていたのか、2010年4月のMySQL5.5.3で初めて安定版としてリリースされました。また、今のところ5.1系へのバックポートは出来ていないようです。 Worklog :: WL#2934 >> Make/find library for doing float/double to string conversions and vice versa MySQL Lists: commits: bk commit

    MySQLの自前strtod実装がタコすぎる - hnwの日記
  • 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

  • clangでObjective-Cプログラムを静的解析

    はじめに 今回は、clangの静的解析機能を紹介します。 LeopardのOpenGLに採用されたことでも知られる、LLVMというコンパイラプラットフォームがあります。clangはLLVM内のプロジェクトのひとつで、gccに変わるC/C++/Objective-C用のLLVMフロントエンドを開発しています。 複数のAppleエンジニアが開発に参加しており、Objective-Cを積極的にサポートしているのも特徴です。 clangでは、通常のコンパイラとして以外にもコードの内部構造にアクセスするいくつかの機能があり、そのひとつが静的解析機能です。 プログラムの静的解析 プログラムを実行せずにプログラムの問題点・バグなどを分析することを「静的解析」といいます。 最近では、JavaのFindBugsが有名ですね。 人力で行うコードレビューも、静的解析と言われることもあります(そりゃそうでしょう

    f99aq
    f99aq 2009/10/17
    静的解析
  • Module::Install::ForC で C のプログラムを簡単に構築する - tokuhirom's blog

    http://github.com/tokuhirom/p5-module-install-forc Module::Install のアーキテクチャを利用した configure/SCons 等のサブセットをつくりました。 記法は SCons を参考にしており、Rake のような黒魔術的でとっつきにくい記法ではなく、シンプルでわかりやすい記法になっています(もちろん主観ですが、Rake の記法は Rake を知らない人にとって非常にとっつきにくく、見通しがわるいというのが個人的見解です。慣れても見通しがいいとはおもいませんが。。。)。 Perl Monger がちょっとした C のコードを書くときに便利なのではないかとおもいます。Module::Install をつかってるので inc/ もいっしょに配布すれば、perl5.8.0 以上さえあればうごくということになります。便利です。 最

    f99aq
    f99aq 2009/10/04
  • clang-intro

    an unofficial, non-gentle introduction to clang compiler.Read less

    clang-intro
    f99aq
    f99aq 2009/07/28
  • GraphvizでC関数のcallgraphを描く - @takuma104 log

    ちょっと必要だったので、gcc専用ですが、実行中のC関数が呼び出される様子(callgraph)をいろいろな組み合せてつくってみました。こんな図が描けます。(これはサンプルなので、実際のモノによってはもっと巨大な図が生成されます) 使い方 まずこの辺からダウンロードします。 http://github.com/takuma104/hacktools/tree/99ea8c9e71a4eae67f34f44f0054c466c78520ba/callgraph 実行には、GNU binutils が必要です。MacOSX で確認しているのですが、インストールされていないので、MacPort でインストールしました。 $ sudo port install binutils とかでいけます。あとは make してOKであれば*1 $ ./sample $ ruby trace2dot.rb s

    GraphvizでC関数のcallgraphを描く - @takuma104 log
  • Mozilla コーディングスタイルガイド - Mozilla | MDN

    このドキュメントは Mozilla コードベースで使われる基スタイルとパターンを説明するためのものです。 新しいコードはこれらの標準に沿うよう試みるべきです。それは、既存のコード同様にメンテナンスが楽になるためです。 もちろん、どのルールにも例外はあります。しかし、にもかかわらずルールを知ることは重要なのです! これは、新しく Mozilla コードベースへ向かっている、コードをレビューされるプロセスにある人へ特化して向けられています。 レビューを受ける前に、このドキュメントを読み通して、あなたのコードがここで推奨されている内容に沿っていることを確認してください。 命名とコードのフォーマット The following norms should be followed for new code, and for Tower of Babel code that needs cleanup

    Mozilla コーディングスタイルガイド - Mozilla | MDN
  • C-users.jp - 日本のC/C++ユーザのためのハブサイト

    YAPC::Asia 2008でMichael Schwernは「SEOに有効な独自ドメインを取って、もっとPerl初心者が集まりやすいniceなPerlの情報を集めたサイトを作れ!」といったそうです。そして「Perl-users.jp - 日Perlユーザのためのハブサイト」ができました。これはC/C++も同じではないのか。そう思い、c-users.jpドメインを取って、ここにC-users.jpを開始します。平成二十年六月四日 流れに乗っかって、発作的にドメインを取ってサイトだけ立ち上げましたが、当然の如くノープランです。 ポリシー的な物 C及びCの拡張言語(C++C++/CLI、Objective-C、Cg、SystemCなど)の話題について広くキャッチアップしたいと思います。 後継言語(C#、Dなど)については関与しません。 Win32 APIやDirectXなどの話題があっ

  • malloc(3)のメモリ管理構造 VA Linux Systems Japan

    malloc()といえばC言語ではお馴染みのライブラリで、最も良く使用されるライブラリの一つです。しかしその分だけ何らかの不具合を経験した人も多いのではないでしょうか。書ではmalloc()、free()で確保、解放されるメモリリソースが内部的にどのように管理されているかを説明していきます。mallocライブラリの仕様を理解する事で、ライブラリ使用時に何らかの不具合が発生した際の手助けになればと思います。 ここではLinuxディストリビューションで標準的に使用されているglibcのmallocライブラリを扱います。今回の調査では次の環境を使用しています。 ディストリビューション :Debian sarge パッケージバージョン :glibc-2.3.2.ds1-22 OS : i386 Linux 書では、上記の通りi386アーキテクチャの場合について記述しています。

  • enbug diary(2008-02-02)

    _ 日常 当は朝のうちに行くつもりだったのに、 結局夕方になってから、 No Country for Old Men を観に行った。 原作の評判は聞いていたのだが、映画も割と評判良さそうだったので、 見に行く気になった。 少々オーソドックスなストーリーと言えなくもないが、 映画の世界にどっぷり浸かれて、かなり良かったー。 ハリウッドじゃ、最近はゲームやコミックの映画化が多くて、 どうしても勧善懲悪な内容になりがちで、 少々傷気味だっただけに、 こういう善対悪にならない構図は非常によろしい。 一応善に限りなく近い存在であるシェリフは常に事件から一歩退いた位置にいるし、 観客の多くが一見善と捉えがちな主役は所詮こそ泥だ。 どっちの方がより恐ろしい存在か程度の違いしかないと言っていい。 たぶん、この映画で最も重要なテーマは自分の運命の決め方なんだと思う。 われわれは常に何かを選択しながら生き

    f99aq
    f99aq 2008/02/17
    なるほど
  • 変数名取得マクロ - Faith and Brave - C++で遊ぼう

    #define TO_STRING(VariableName) # VariableName #include <iostream> #include <string> using namespace std; int main() { int value = 3; // 変数名取得 string str = TO_STRING(value); // 変数名表示 cout << str << endl; // value return 0; } シリアライズとかで使えそうな気がする

    変数名取得マクロ - Faith and Brave - C++で遊ぼう
    f99aq
    f99aq 2007/11/18
    目から鱗
  • Secure Programming Cookbook for C and C++

  • Unix Programming Frequently Asked Questions 日本語訳 - Table of Contents

    このFAQについて 1 プロセス制御 1.1 新しいプロセスの生成: fork() 1.1.1 fork()は何をするのですか? 1.1.2 fork()とvfork()の違いは何ですか? 1.1.3 forkによる子プロセスを終了するときにexitよりも_exitを使うのはなぜですか? 1.2 環境変数 1.2.1 どうすればプログラム内で環境変数の値を取得・設定できますか? 1.2.2 どうすれば全ての環境変数を調べられますか? 1.3 どうすれば一秒未満のsleepができますか? 1.4 粒度の細かいalarm()はどうすれば得られますか? 1.5 どうすれば親プロセスと子プロセスの間で通信できますか? 1.6 どうすればゾンビプロセスができることを防ぐことができますか? 1.6.1 ゾンビプロセスってなんですか? 1.6.2 どうすればゾンビプロセスになることを防げますか? 1.7