タグ

c言語に関するkgbuのブックマーク (25)

  • LLVMのC/C++コンパイルエラーメッセージはわかりやすい | エンタープライズ | マイコミジャーナル

    LLVM is a robust system, particularly well suited for developing new mid-level language-independent analyses and optimizations. CやC++でアプリケーションを開発する場合、またはC/C++で開発されたオープンソースソフトウェアをコンパイルする場合に遭遇するコンパイルエラーや出力されるエラーメッセージは、C/C++に精通していなければ原因を予測しにくいことが多く、C/C++初心者を萎縮させる原因のひとつになっている。移植する段階でインクルードが必要になったとか、typedefを追加するといった簡単な対処でコンパイルできるものが、エラーメッセージの内容が理解できないために解決できないということはままある。 LLVM Project Blog: Amazing feat

  • イベントインターフェースの分類 - .mjtの日記復帰計画

    修論ではmoshのFFIとyuniSchemeから移植したFFI Threadsを使ってやっていたイベント処理だけど、フレームワーク自体は他の言語でも有用と考えられるので、C言語で書きなおしてライブラリとして整備することにした。その方がmoshにも取り込みやすいと考えられる。 アイデアとしては、デバイスやネットワークを接続する"ピタゴラマシン"を作るためのライブラリということになる。"ピタゴラマシン語"として制限されたScheme(yuniScheme)を採用し、そのインタプリタも含む。これにより、GCの遅い*1moshでも、セミ-リアルタイムの処理が可能になると考えている。 難しい問題は、多岐に渡るイベントインターフェースを統合しなければならないという点で、様々なライブラリが、当に様々なセマンティクスを提供している。 libemitでwrapしたいライブラリを3種類に分類した。libe

    イベントインターフェースの分類 - .mjtの日記復帰計画
    kgbu
    kgbu 2010/02/18
    終端されない、っていうのがようわからん。あとで読む。
  • Lua on Promenade - mixi engineer blog

    ドラクエのプレー時間がついに150時間を突破しての視線が痛いmikioです。今回は、かんたんCMS「Tokyo Promenade」にスクリプト言語Luaを組み込んでカスタマイズする方法について述べます。 なぜスクリプト言語処理系を組み込むのか Tokyo Promenade(TP)はCで書かれていて軽量で高速に実行できるCMSです。PerlRubyなどのスクリプト言語で書かれたCMSはそのソース自体を編集して改良するのが容易ですが、Cの場合は再コンパイル作業が必要だし下手に手を出すとメモリ破壊などの致命的なバグを入れてしまう可能性が比較的高いので、ソース自体を編集してカスタマイズを行うのは現実的ではありません。 そこで、TPではプレゼンテーション層の機能をできるだけテンプレート側に委譲させるとともに、さらに装飾の多くはCSSを編集するだけで変更できるように配慮しています。テンプレート

    Lua on Promenade - mixi engineer blog
  • ■ - kurimura’s diary

    stack_ni_yasasii_free_tree treeを回転させて回転しきれなくなったら削除だと割と簡単にかける気がする。 void stack_ni_yasasii_free_tree(tree* t) { while(t){ tree*tmp; while(t->r){ tmp = t->r; t->r = tmp->l; tmp->l = t; t = tmp; } tmp = t; t = t->l; wrap_free(tmp); } }

    ■ - kurimura’s diary
  • C/C++ セキュアコーディングセミナー資料 | JPCERT コーディネーションセンター

    これまでにC/C++ セキュアコーディングセミナーで使用した講義資料を公開しています。2010年度にセミナを実施した、文字列、整数、動的メモリ管理、書式指定文字列、CERT C セキュアコーディングスタンダード、ROSE については、それぞれ最新版の資料を掲載しています。 文字列 ユーザとソフトウエア間に発生するデータのやりとりの大部分は文字列によって行われます。 また、プログラム間でのデータ交換も文字列形式で行われるようになり、その結果、文字列表現や文字列管理、文字列操作における弱点がソフトウエア脆弱性を生み出しています。 文字列では、C/C++ 言語における文字列操作、一般的なセキュリティ上の欠陥と、その結果発生する脆弱性と対処方法について解説します。 C/C++ における文字列の特性 犯しやすい文字列操作の間違い 文字列の脆弱性 プロセスのメモリ構成 スタック破壊の仕組み コードイン

    C/C++ セキュアコーディングセミナー資料 | JPCERT コーディネーションセンター
    kgbu
    kgbu 2009/05/15
    2008年度にセミナーで使った講義資料が公開されている
  • プラグインで独自ストレージを作ろう - mixi engineer blog

    OpenSocialとかC++0xとか世の中の流れが早すぎて、いろいろと勉強しなきゃなと焦りつつも、ついついピクミン2にはまってしまうmikioです。今回はTokyo Tyrant(TT)を使ってユーザ独自のストレージシステムを簡単に構築する方法について説明します。 プラグインとは オブジェクト指向プログラミングに慣れた人にとっては、インターフェイスと実装を分離することによってプログラムの拡張性や保守性を向上させる技法(データ抽象)は常識ですよね。その考えをさらに進めると、インターフェイスのみをプログラムに記述しておいて、具体的な実装は実行時に割り当てるという、いわゆるプラグイン(plug-in)という技法に至ります。プラグインでカスタマイズできる能力をプラガブル(pluggable)などと言ったりもします。 例えばTokyo Cabinet(TC)では、レコードの挿入、削除、参照といった

    プラグインで独自ストレージを作ろう - mixi engineer blog
    kgbu
    kgbu 2009/05/12
    C言語を使い、実装とインターフェースを切り離してpluggableにするtutorialとして読める。今はこういうのフレームワークに入っちゃってて自分で触ること無い場合もあるんだろうな。
  • はじめてのにき(2009-04-16)

    _ long とか printf("%lld\n", (long long)020000000000); printf("%lld\n", (long long)0x80000000); printf("%lld\n", (long long)-2147483648); printf("%lld\n", (long long)020000000001); printf("%lld\n", (long long)0x80000001); printf("%lld\n", (long long)-2147483649); の結果を言える人はえらいと思う。 でまぁこれ関係は標準ちゃんとあるのかなぁ… (02:38) _ あとすこし… ↑の問題は標準とか調べるのかったるいので適当にごまかした。 でも当は INT_MIN とかとかかわるから きちんと調べた方がいいなー。 あとはまぁ少しで tcc

    kgbu
    kgbu 2009/04/17
    Cの標準とその変化をしらべたいとき「S・P・ハービソン3世とG・L・スティール・ジュニアのCリファレンスマニュアル」がお薦めらしい
  • Redesign of setroubleshooter.

    kgbu
    kgbu 2009/01/24
    setroubleshooterがメモリ食いなので、Fedora11(rawhide)に入れるべく修正をしたという話。全面的な書き換えではないようだ。
  • JPCERT コーディネーションセンター イベント情報

    C/C++ セキュアコーディング ハーフデイキャンプ 2009夏 part3 は受付けを終了いたしました。 お申込みありがとうございました。 脆弱性のない安全なプログラムを開発するために ~ソフトウエアの脆弱性が作りこまれる根的な原因を学び、問題を回避する~ JPCERTコーディネーションセンターは、C/C++ 言語で脆弱性を含まない安全なプログラムをコーディングする具体的なテクニックとノウハウを学んでいただくためのセミナーを下記のとおり開催いたします。 セミナーは 2009年1月29日から 3月26日に開催した「C/C++ セキュアコーディング ハーフデイキャンプ」を再講演するものです。 従来のプログラミング教育は、基的なアルゴリズムをどのようにコーディングするかが主なものでした。 しかし C/C++ 言語による開発では、基的なプログラミングだけでなくセキュリティへの十分な配慮が

    JPCERT コーディネーションセンター イベント情報
    kgbu
    kgbu 2008/12/10
    C/C++ 言語で脆弱性を含まない安全なプログラムをコーディングする具体的なテクニックとノウハウを学んでいただくためのセミナー、だそうです。
  • はてなブログ | 無料ブログを作成しよう

    来年も作りたい!ふきのとう料理を満喫した 2024年春の記録 春は自炊が楽しい季節 1年の中で最も自炊が楽しい季節は春だと思う。スーパーの棚にやわらかな色合いの野菜が並ぶと自然とこころが弾む。 中でもときめくのは山菜だ。早いと2月下旬ごろから並び始めるそれは、タラの芽、ふきのとうと続き、桜の頃にはうるい、ウド、こ…

    はてなブログ | 無料ブログを作成しよう
    kgbu
    kgbu 2008/12/06
    makeは今となってはこういう評価だわなぁ。OMakeは正常な進化だと思う。Makefileの文法って、どういう方向に改善できるかな。ルールベースの並列プログラミング言語ではあるけれど、test, deployment, policyも表現したい。
  • Try out LLVM and Clang in your browser!

    Try out LLVM and Clang 3.0 in your browser! The LLVM demo page is currently disabled.

    kgbu
    kgbu 2008/11/18
    実際にコードを貼り付けて、LLVMの出力を見られるCGI。インストールしてみるほど気合が無い場合に便利。あとはこれでベンチマークまでしてくれればすばらしい、つーか、repositoryにこういうサービスをくっつけたい。
  • スタックオーバーフローの仕様の続き - まめめも

    いろいろコメントをいただきました。ありがとうございます。 問題点を整理すると、 1. 「無限に再帰呼び出しをする」という意味は、リソースが有限な現実のコンピュータでは実現不可能である (末尾再帰だけとか特殊な例はできるけど、一般的には無理だと思う) 。 2. C 言語の規格を流し読みする限り、くだんのプログラムは「無限に再帰呼び出しをする」という意味になりそう。そうならない理由が見つからない。 3. 1 と 2 より、現実のコンピュータで C 言語の規格に完全に準拠することは不可能である。 で、それはなんか変な気がしたので、2 が間違ってるかと思って聞いてみたのでした。 具体的に何を心配しているかというと、例えば、ものすごくスタックが短くて main 関数の呼び出しすら失敗するような環境 *1 でも、「C 言語の規格に準拠しています」と言っていいんでしょうか。別にいいのか。 ちなみにこの問

    スタックオーバーフローの仕様の続き - まめめも
    kgbu
    kgbu 2008/10/20
    なるほど、そういう話か。スタックのサイズには上限が定義できるかもしれないが、ネストの深さでは、1回に積む量(引数とかauto変数とか?)が不定だと意味ないかもなー。C++だと違うのだろうか<調べろ自分
  • mixi Engineers’ Blog » Lua on Tyrant: DBサーバにLLを組み込む

    遅めの夏休みで那須塩原に行ってきたmikioです。牧場でアルパカに触ってきたのですが、めちゃかわいかったです。さて今回は、Tokyo Tyrant(TT)にスクリプト言語Luaの処理系を組み込んで使う方法について解説します。 つか、Luaって何? Lua(公式サイトによると「るーあ(LOO-ah)」と発音)という言語の名前は聞いたことがあっても、数あるマイナー言語のひとつと思って特に気にかけていない人も多いと思います。私もそうでした。しかし、今では、C言語使いの第2言語・第3言語として使うにはとても有望な言語だと思っています。 Luaに関する日語の情報はまだ多くはないのですが、以下のサイトを順に読むとだいたいの雰囲気が掴めると思います。 Lua で組んでみる Lua 5.1 リファレンスマニュアル Luaは言語仕様が小さいので、とても習得しやすいです。上記のリファレンスマニュアルだけ読め

    mixi Engineers’ Blog » Lua on Tyrant: DBサーバにLLを組み込む
    kgbu
    kgbu 2008/09/22
    組み込み用言語として、仕様が簡明でネイティブスレッドに対応してるってところが面白いらしい。Rubyの対応も気になる。1.9ではどうなのだろう?[Ruby]
  • Tutorial for how to create Erlang linked-in driver.

    Erlang provides mechanism to communicate between Erlang and other programs written by C/C++ or other. This entry introduce how to create simple linked-in driver. Create shared library and Erlang interface to use Erlang's linked-in driver. Goal: To create HAVAL bindings for Erlang. HAVAL is fast cryptographic hash algorithm is invented by Yuliang Zheng, Josef Pieprzyk, and Jennifer Seberry in 1992.

    kgbu
    kgbu 2008/09/11
    HAVALというハッシュアルゴリズムをCで実装し、Erlangのlink-in driverとして利用するtutorial
  • GCC Tips - eLinux.org

    What's Here, Why You Should Care A collection of tips useful to those doing embedded development. Accumulated over several years of doing project work, helping other engineers, untangling projects for customers and feedback from several CELF presentations related to this topic. View Compilation Plan gcc -### <the rest of your command line goes here> The GCC you run is a driver program for a bunch

  • 関数ポインタのキャストと gcc - まめめも

    C の関数呼び出しは、関数定義の型と互換性のない型として呼び出したら未定義動作です。例えば以下のコードの動作は未定義です。 #include <stdio.h> int main(void) { ((int (*)(char *, ...)) &printf)("Hello, world!\n"); } printf は int printf(const char *, ...) なので、const が無くなってるのが間違ってます。未定義のプログラムはどのような実行結果になろうとも、C の規格には違反しません。 でも、現実問題としてこのコードは期待通りに動くだろー、と高をくくってました。しかし最近の gcc (3.4 以降くらい) では、このコードは落ちます。 $ gcc --version gcc (GCC) 4.3.1 Copyright (C) 2008 Free Software

    関数ポインタのキャストと gcc - まめめも
    kgbu
    kgbu 2008/09/01
    C言語というか、gccのようなコンパイラおよび、最適化の対象となるCPUのモデルって恐ろしく複雑怪奇なもののように思える。本当にこれでいいんだろうか(笑
  • Language.C を使ってみる with Data.Generics - らくがきえんじん

    Language.CはHaskell用の、C言語のソースコードを構文解析するライブラリ。 構文木はHaskellのデータとして操作可能で、これのおかげでC言語のコードを色々と操作できる。意味解析に役立ついくつかの補助関数も定義されているようだ(よく調べてない)。 やったこと、動機 JHC (Haskellのコンパイラ;ISO C互換のコードを吐く)は C99のコードを吐くようだ ツールの制約でgcc 2.95(19991024)しか手元にない。 gcc 2.95はC89しか受け付けないようだ jhc が吐くコードを gcc 2.95 でコンパイルできるよう自動変換したい そこで Haskell用の Cパーザである Language.C を使って、JHCが吐くコードを gcc 2.95でコンパイルできるように変換する。未完。 C89では 変数宣言が ブロックの頭以外に来たらエラー。全ての変数

    Language.C を使ってみる with Data.Generics - らくがきえんじん
    kgbu
    kgbu 2008/08/19
    HaskellでCの構文解析を行って、構文木をデータとしていじれるLanguage.Cというライブラリがあるらしい
  • Rubygrind - 兼雑記

    あんま深く考えず valgrind を Ruby の head のテストに適用してみたところ、結構もにょもにょ漏れてるもんだなぁと気付いたので、いくつか修正してみたりしたのですが、その時案外困るのが、リークする最小のコードが簡単に作れない、ってことでした。 valgrind は C 言語的にどこで malloc を呼んだかは教えてくれるものの、 Ruby コードでどこだったかは教えてくれないからです。修正はできたけど具体的にどこで漏れてるかはよくわからん、ということさえありました。 というわけで、 Ruby 的にどこで漏れたかを教えてくれる valgrind 用の tool 、 Rubygrind を作ってみました。 http://shinh.skr.jp/binary/rmemcheck.tgz これを valgrind-3.3.1 のディレクトリに展開して、 > diff -u con

    Rubygrind - 兼雑記
    kgbu
    kgbu 2008/08/19
    Rubyのコードで、どこでメモリリークが起きているかを指摘するツール
  • 産総研 RCIS: 2008年4月11日: 安全性を確保した実用的なC言語コンパイラを開発

    (4月11日 産総研プレスリリースより抜粋) 独立行政法人 産業技術総合研究所【理事長 吉川 弘之】(以下「産総研」という)情報セキュリティ研究センター【研究センター長 今井 秀樹】ソフトウェアセキュリティ研究チーム【研究チーム長 柴山 悦哉】の 大岩 寛 研究員は、日工業規格(JIS)や、米国規格協会のANSI C 規格互換でメモリ安全性を確保するC 言語コンパイラ「Fail-Safe C -release 1」を開発した。インターネット上で用いられるサーバーソフトウェアなどのセキュリティ脆弱性の防止に利用できる。今回、産総研情報セキュリティ研究センターは「Fail-Safe C -release 1」をウェブサイト上で一般に公開する(https://www.rcis.aist.go.jp/project/FailSafeC-ja.html)。 このコンパイラはC 言語で書かれた既存の

  • Route 477(2008-06-11)

    ■ [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式ベースにしてお

    Route 477(2008-06-11)
    kgbu
    kgbu 2008/06/15
    S式を使った言語をC言語に変換するらしい。言語拡張が簡単になるということだが、S式による拡張がしたいケースがそんなにあるのか?>俺。ところでこれは「C言語のソースに落とすLispコンパイラ?」と何が,,