タグ

c++に関するkoroharoのブックマーク (7)

  • 凡人プログラマーの独り言 C++用のシンプルなテストツール「CxxTest」

    C++用のテストツールは,5,6種類あるのですが,今回はCxxTestについて説明します。 CxxTestは,約10個のcppファイルと,約20個のhファイル,2個のPythonスクリプトで構成された,シンプルなテスト用フレームワークです。 特徴としては,ヘッダーファイルにテストケースを書き,そこからcxxtestgen.plというPythonスクリプトを使ってテスト用cppファイルを生成し,このcppファイルをビルドして実行することでテストを行います。 ■インストール方法 CxxTestの公式サイトでは,CxxTestのソースコードとrpmパッケージしか配布されていません。 Debian/Ubuntu系LinuxでCxxTestを使うには,ソースコードを手動でインストールするか,rpmをdebに変換してインストールします。 今回は,手間を省くために後者の方法を使います。 まずは,ali

  • C++チップス - 誰かの役に立てばいいブログ

    最近 120 年ぶりに C++ を書くことにしたので、もだーんとは何かという禅問答を繰り返した記録を公開。 C++ のススメ なぜ C ではなく C++ を使うのか。その理由の 99.999% は std::string にある。 char* は忘れるんだ! std::string を使うだけで↓のように幸せになれる! void f(const std::string& s) { g("hoge "+s); } C ならこんな感じになるところだ。 void f(const char* s) { char buf[256]; sprintf(buf, "hoge %s", s); g(buf); } ライブラリ STL は機能リッチとはとても言えないので、ちょっとなにかやりたいことがあるとライブラリをまず探すという面倒なことになる。まあ主要なところをいくつかまとめておく。 用途名称URLコメ

    C++チップス - 誰かの役に立てばいいブログ
  • アセンブリ読んだら負けかなと思ってる - 誰かの役に立てばいいブログ

    子供のころからできるだけ手抜きして成果を挙げることだけは長けている山です。 今回は、C/C++ で作ったプログラムが運用中にクラッシュするときのデバッグ方法のお話しです。 開発中のデバッグは gdb などでソース追いながらデバッグできますが、運用中ですと strip していたり最適化していたりしてデバッグが難しくなります。 そもそも、いきなりクラッシュすると情報が残らずに困ってしまいます。そんなときどうするか。 Step1. スタックトレースを出力する こんな関数を用意しましょう。Linux 以外の人はそれなりに実装してください。 #include <execinfo.h> #include <unistd.h> void dump_stack() { void* bt[100]; int n = backtrace(bt, 100); backtrace_symbols_fd(bt,

    アセンブリ読んだら負けかなと思ってる - 誰かの役に立てばいいブログ
  • マクロにしかできないこと 〜C++でマクロを使うべきな場面〜 - akihiko’s tech note

    C++では, #define で定数を定義するな, const TYPE によるグローバル変数(もしくは適当な名前空間に内包されたグローバル変数)を使え, #define でマクロ関数を定義するな,代わりに inline 関数を使え,みたいなことが言われる.これは確かにその通りだ. 1項 #define ではなく, const と inline を使おう Scott Meyers (スコット・メイヤーズ): Effective C++ (吉川訳, アスキー出版局, 1998) に書いてあるように, プリプロセッサよりコンパイラに仕事させるべき だ.でもマクロにしかできないことも多々あるわけで. case 1: 配列のサイズを取得 #define SIZE_OF_ARRAY(array) (sizeof(array)/sizeof((array)[0])) SIZE_OF_ARRAY(配列)

    マクロにしかできないこと 〜C++でマクロを使うべきな場面〜 - akihiko’s tech note
  • C++の話(本当にあった怖い話)

    constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ

    C++の話(本当にあった怖い話)
    koroharo
    koroharo 2010/07/15
    こわいよー
  • バッファオーバーフローの回避

    Table of Contents5.1. C や C++ の危険なところ5.2. C と C++ でのライブラリによる解決策5.2.1. 標準 C ライブラリによる解決策5.2.2. 静的もしくは動的に確保したバッファ5.2.3. strlcpy と strlcat5.2.4. libmib5.2.5. C++ std::string クラス5.2.6. Libsafe5.2.7. その他のライブラリ5.3. C や C++ でのコンパイルによる解決5.4. その他の言語 頻繁に発生しているセキュリティ上の弱点は、「バッファオーバーフロー」 に対する脆弱性です。 バッファオーバーフローは「バッファオーバーラン」とも言われ、さまざまな バッファオーバーフロー攻撃が存在しています(「スタック領域破壊」や 「ヒープ領域破壊」もそうです)。 厳密に言えば、バッファオーバーフローはプログラムの実装

  • Big Sky :: C++で軽量Webサーバ書いた。

    書いたといっても結構前からあったのですが、いらん所を削ぎ落として軽量Webサーバとして仕立て上げました。 軽量とは言えど、CGIを使って結構色々動きます。 例えば、ソースアーカイブを解凍したらCGIがあって、apacheから見える場所にコピーして...とか面倒くさかったりしますよね。 おれは今すぐWebサーバを起動したいんだ!そして今いるディレクトリのファイルをWebサーバからサーブしたいんだー! って事ないですか?blogソフトウェアをダウンロードして今すぐ試したいけど、apacheインストールされてなかった...とか悲しすぎます。 今回紹介する"tinytinyhttpd"(tthttpd)はそんな、小さい様で大きな問題を解決出来るかもしれないソフトウェアです。 mattn's tinytinyhttpd at master - GitHub tiny tiny httpd http:

    Big Sky :: C++で軽量Webサーバ書いた。
  • 1