タグ

c++に関するcamelmasaのブックマーク (37)

  • バベル - extra - C++ - TrickLibrary

    This domain may be for sale!

  • libxml2 内のメモリの解放 - IT戦記

    ちょっとメモ 今日も valgrind 使ってます libxml2 を使って以下のような XML のパース処理を書く #include <iostream> #include <sstream> #include <boost/shared_ptr.hpp> #include <libxml/xmlreader.h> static int read(void* in, char* buf, int len) { return static_cast<std::istream*>(in)->readsome(buf, len); } int main() { std::istringstream in("<a><b/>hoge<c/></a>"); boost::shared_ptr<xmlTextReader> reader(xmlReaderForIO(read, NULL, &in,

    libxml2 内のメモリの解放 - IT戦記
  • C++0xの言語拡張まとめ(※随時更新) - Faith and Brave - C++で遊ぼう

    C++0xの概要はこちら ・Angle bracket テンプレートの連続した山カッコの問題の解決 ・初期化子リスト ユーザー定義のクラスで配列のような初期化構文を実装可能になる ・Uniform initialization コンストラクタの構文と初期化子リストの構文が一様になる ・デリゲーティング・コンストラクタ コンストラクタから他のコンストラクタを呼び出せる ・auto 型推論 ・記憶クラス指定子としての auto の削除 autoキーワードの意味が変更になるため、下位互換がなくなる ・decltype sizeofの型版 ・Template Aliases テンプレートを使用して型の別名を付けることができる。いわゆるtemplate typedef ・拡張sizeof 構造体/クラスのメンバをインスタンス化せずにsizeofすることが可能になる ・nullptr ヌルポインタを表

    C++0xの言語拡張まとめ(※随時更新) - Faith and Brave - C++で遊ぼう
  • Kazuho@Cybozu Labs: スレッド間で共有する変数のアクセス権制御を C++ コンパイラで強制する方法

    マルチスレッドなプログラムを書いていると、スレッド間で共有する変数へのアクセスを正しく直列化できているか、という点が常に問題になります。どうせなら、正しく書けているかコンパイル時に確認したいよね、ということで、以下のような C++ テンプレートを書いてみました。 template <typename T> class cac_mutex_t { public: class lockref { protected: cac_mutex_t<T>* m_; public: lockref(cac_mutex_t<T>& m) : m_(&m) { pthread_mutex_lock(&m_->mutex_); } ~lockref() { pthread_mutex_unlock(&m_->mutex_); } T& operator*() { return m_->t_; } T* ope

  • インテル Parallel Studioを使って 並列化プログラミングを試してみた

    CPUのマルチコア化に伴い、開発者にも「並列プログラミング」が必要とされる時代になってきています。5月下旬にインテルがリリースした「インテル Parallel Studio」を利用すると、使い慣れたVisual Studioの開発環境で、並列化プログラミングの様々なサポートを得ることができます。稿では、その概要やインストール方法、テスト結果などについて解説します。 はじめに IT業界はよく日進月歩だと言われます。確かに我々開発者を取り巻く環境は日々変化し、新しいテクノロジーが毎月のように発表されています。しかし、ある程度経験を積んだ開発者は、そのような変化は表面上のものだと考えます。 プログラミング言語は進化し、どんどん新しい機能が追加されてゆき、それに伴い新しい開発環境が登場します。ですが、冷静に考えてみればそう慌てることはありません。昨今騒がれている言語の新しい機能も大半が古くからあ

    インテル Parallel Studioを使って 並列化プログラミングを試してみた
  • C++ のプログラムのデバッグを楽にする方法

    メディア関係者向けお問い合わせ先 メールでのお問い合わせ: pr-jp@google.com メディア関係者以外からのお問い合わせにはお答えいたしかねます。 その他すべてのお問い合わせにつきましては、ヘルプセンターをご覧ください。

    C++ のプログラムのデバッグを楽にする方法
  • タダで始めるC/C++ プログラミング for Windows

    1. はじめに Windows で C 言語や C++ 言語でのプログラムを作成するには以下のものが必要になります。 C/C++ コンパイラ C/C++ のコードを記述したソースファイルから実行ファイルを生成する C/C++ コンパイラ (とリンカ) が必須です。 統合開発環境 (IDE) C/C++ コンパイラとエディタさえあればプログラム開発はできますが,それだけではコマンドプロンプト (DOS 窓) でコマンドやオプションを入力しなければならず面倒です。ボタンを押すだけでコンパイルなどができる開発環境があると便利です。 テキストエディタ 統合開発環境にはソースをキーワードで色分け表示してくれるエディタが内蔵されているので必須というわけではありません。しかし,ちょっとソースファイルを見たい,とか,他人のソースを見ながらプログラミングしたい,などと言う場合にはテキストエディタを使うと便利

  • AzaraC

    AzaraCは高速なCGIを効率よく作成するために開発されたC++用のテンプレートエンジンです。 新着情報 2006-10-27 AzaraC 0.3.0 同一キーに複数の値が割り当てられている入力を取得できるように変更 環境変数AZARAC_INCLUDE_PATHでテンプレートをコンパイルする際の-Iオプションを指定可能にした 環境変数AZARAC_LIBRARY_PATHでテンプレートをコンパイルする際の-Lオプションを指定可能にした 2006-10-16 AzaraC 0.2.0 POSTメソッドからの入力に対応 テンプレートエンジン AzaraCでは、Ruby on RailsPHPなどと同様に、Webページにプログラムを埋め込むことを可能にする「テンプレートエンジン」を提供します。テンプレートエンジンを利用することにより、デザインとロジックを分離したWebアプリケーションの作

  • boost::asioで簡単SSL通信 - okadyの日記

    SSLって何? なんか暗号化するやつやろ 認証がどーのこーの 安全っぽい っちゅう人向けに、とりあえずSSLの簡単な解説から。 通信、認証の手順はググればようけ出てくるからパスで。 OSI参照モデルとIP、TCPのパケット構成を知ってたらSSLは簡単 IPパケットの構成:IPヘッダー+TCPパケット TCPパケットの構成:TCPヘッダー+上位層で作られたデータ 上位層で作られたデータっちゅうのは、 HTTPとかFTPでクライアントがサーバーにデータを送信する例やと コマンドのことやと思ってもらったらええかな。 普通はアプリケーション層で作られたデータを指すわけやけど、 SSL通信やとアプリケーション層とトランスポート層の間にある セッション層でデータを暗号化するだけ。 つまり、 (非SSL)TCPパケットの構成:TCPヘッダー+上位層で作られたデータ (SSL)TCPパケットの構成:TCP

    boost::asioで簡単SSL通信 - okadyの日記
  • RubyConf'08のビデオから: Ruby VMの内部構造について - YARV、Rubinius、MagLev

    Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。このでは、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...

    RubyConf'08のビデオから: Ruby VMの内部構造について - YARV、Rubinius、MagLev
  • 私的 Win32 API メモ - IT戦記

    いろいろ勉強した 忘れてしまいそうなので書き下しておく 雰囲気的なこと ウィンドウ 俗にいうウィンドウではなく、 GUI の部品全般(ボタンとか、ツールバー)も含む 俗にいうウィンドウは、フレームとか言う ハンドル ポインタみたいなもん HWND ウィンドウのハンドル DOM でいうと Node みたいなもん LPXXX XXX のポインタって意味 owner と popup 「ポップアップさせたウィンドウ = owner」と「ポップアップしたウィンドウ = popup」 DOM でいうと owner は、 window.opener で popup は、 window.frames って感じ HINSTANCE DLL とか EXE とかひとつと対応してるハンドル アプリケーションの HINSTANCE というと実行されている EXE のハンドル DLL や EXE のメモリ上の位置 H

    私的 Win32 API メモ - IT戦記
  • Native Clientの仕組みはどうなっているのか? - やねうらお−よっちゃんイカはしばらく買わずにiPhoneだけに注力する男

    Googleが、Webブラウザ上でネイティブバイナリコードを実行する「Native Client」を公開した。 Native Client http://code.google.com/p/nativeclient/ Google Earth,Quakeなどがすでに動いているようだ。 これはすごい!ブラウザ上でX86バイナリを動かす「Native Client」 http://www.moongift.jp/2008/12/native_client/ サンドボックスで安全性確保、オーバーヘッド5% ブラウザでx86バイナリ実行、グーグルが新技術 http://www.atmarkit.co.jp/news/200812/09/nacl.html あと、サンプルのlife.ccにSDL_surfaceと書いてあるのでSDLの描画まわりが既に動いているのだろうから、今後、たくさんのアプリがN

    Native Clientの仕組みはどうなっているのか? - やねうらお−よっちゃんイカはしばらく買わずにiPhoneだけに注力する男
  • 設計者本人に聞く、 C++次期仕様「C++0x」を理解するための参考文献~Bjarne Stroustrup氏との対話~

    この連載では、Bjarne Stroustrup氏(C++設計者)へのメールインタビューを通して、プログラミング言語設計者の生の声を読者の皆様に直接お伝えしたいと思います。 今回は、開発者自らが選ぶC++の次期仕様「C++0x」を理解するための参考文献を伺いました。 はじめに 新しいソフトウェアを開発すれば、その設計思想、特徴、有用性、魅力を語る説明書が必要になります。説明書の作成には開発作業とは異なる次元の能力と忍耐が要求されます。独自技術を誇る組織の場合、技術紹介資料の作成作業はより困難を極めます。保有技術のすべてを文書化するわけにはいきません。開示レベルを慎重に設定しながら、自分たちの技術の魅力や有用性を記述しなければなりません。開示レベルの設定は簡単なことではありません。担当開発者は能的に、より多くの情報を公開したいと考える傾向があります。組織の経営者は競合他社の動きを警戒し、公

    設計者本人に聞く、 C++次期仕様「C++0x」を理解するための参考文献~Bjarne Stroustrup氏との対話~
  • C(++)言語: valgrindの使い方

    ubuntu% uname -a Linux ubuntu 2.6.12-10-386 #1 Sat Mar 11 16:13:17 UTC 2006 i686 GNU/Linux ubuntu% valgrind --version valgrind-3.0.1 (0) 目次 Valgrindに含まれるツール Memcheck: メモリエラーを検出する(default) Cachegrind: キャッシュミスを検出する Massif: ヒーププロファイラを使う まとめ valgrindの使い方とエラーメッセージを整理してみた。「valgrind --leak-check=full command」というコマンドラインをよく用いる。これによりメモリ周りのバグを検出出来る。 --tool=cachegrindではプログラム実行時のキャッシュミス率を測定する事が出来る。cg_annotateを

  • C++0xのマルチスレッド機能

    はじめに C++の新しい標準規格である「C++0x」の大きな新機能の1つが、マルチスレッド処理のサポートです。 従来のC++では、マルチスレッド機能は標準規格の拡張としてコンパイラごとに提供されていたため、細かな部分がコンパイラやプラットフォームによって異なっていました。しかしC++0xでは、すべてのコンパイラが同じメモリモデルに準拠し、同一のマルチスレッド機能を利用できることになります(ただし、従来同様の拡張をコンパイラが独自に提供することも可能です)。 開発者の立場からすると、マルチスレッドのコードを別のコンパイラやプラットフォームへ移植するときの手間を大きく省くことができます。複数のプラットフォーム向けの開発を行う場合でも、種々雑多なAPIや構文をいくつも頭に入れておく必要がありません。 新しいスレッドライブラリの中心を担うのは、実行スレッドを制御するstd::threadクラスです

    C++0xのマルチスレッド機能
  • C++ のコードを Flash Player で動かす! Alchemy を速攻試してみる。 - IT戦記

    はじめに Adobe から C/C++ で書いたコードを Flash や AIR で動かす Alchemy というものがリリースされましたね! Alchemy - Adobe Labs これはすごい!ということで、少し試してみたいと思います。 その様子をリアルタイムに書いていきます。ちゃんと出来るかな 環境 OS は Mac OS X で gcc 、 java は入っているものとします。 ホームディレクトリ(/Users/amachang)に AlchemyTest というディレクトリを作って作業します。 インストール まずは、いろいろインストールします。 Flash Player 10 Debugger Version Adobe Flash Player - Debug Downloads ここからダウンロードしてきて、普通にインストールします。 Flex SDK 以下から Flex

    C++ のコードを Flash Player で動かす! Alchemy を速攻試してみる。 - IT戦記
  • 複数の C++ のソースファイルに対して、一度にシンボルの置換をかけられるツールを探しています。 もし、知っている方がいらっしゃいましたら教えてください。 Linux のシ.. - 人力検索

    複数の C++ のソースファイルに対して、一度にシンボルの置換をかけられるツールを探しています。 もし、知っている方がいらっしゃいましたら教えてください。 Linux のシェルから使えるツールでお願いいたします。

  • スレッド間通信のオーバーヘッドを比較する - Blog by Sadayuki Furuhashi

    pthread_系の関数は mutex か cond しか待てないが、select/poll/epoll はファイルディスクリプタしか待てないので、両方待ちたいときに困る。 解決方法はいろいろあると思いますが、私の思いつく範囲では以下の4つ。 selectで待ち、シグナルで割り込む ファイルディスクリプタはselectで待つ。他のイベントはいったんキューに入れておき、シグナルを発生させてselectを中断させる。たしかlighttpdはこの方式だったはず。ただlighttpdはシングルスレッドなのでキューは使っていなかったような(うろ覚え) selectで待ち、パイプで割り込む selectで待つのだが、その中にpipe(2)で作ったパイプを1つわせておく。ファイルディスクリプタ以外のイベントはいったんキューに入れておき、パイプに1バイト書き込んでselectを中断させる。 select

    スレッド間通信のオーバーヘッドを比較する - Blog by Sadayuki Furuhashi
  • C言語の関数の仮引数における配列型宣言の危険性について - yuyarinの日記

    #lowhacksでnyaxt, nishioが配列とポインタの違いについて議論していた。その中で関数の仮引数を配列として宣言した場合の挙動はどうなるのか、という話題にたどり着いた。結果僕は非常に危険だと思った。 しかし、まさかそんなことする人はいないだろうと、この記事を書きかけで放置していたのだが、C言語を学習中の友人が危惧していたコードを書く可能性があるミスをしてしまったので書こうと思う。初心者のためにソースは全文、コンパイルチェックをした上で掲載している。 sizeof演算子のおさらい sizeof演算子は演算対象が配列ならば、配列の要素数×要素のサイズが返ってきて、ポインタならばポインタのサイズ(32bit系では4)が返ってくる。 /* 1 */ #include <stdio.h> #include <string.h> int main(void) { char str[] =

    C言語の関数の仮引数における配列型宣言の危険性について - yuyarinの日記
  • C++ のお勉強 - IT戦記

    とりあえず daytime のクライアント ほとんどこれの写経 #include <iostream> #include <boost/asio.hpp> int main () { // io_service を介して OS の IO を使う boost::asio::io_service io_service; // ソケットを作る boost::asio::ip::tcp::socket socket(io_service); // 名前解決をする // (ホスト名とサービス名から、 IP とポートを求める) std::cout << "resolving hostname ..." << std::endl; boost::asio::ip::tcp::resolver resolver(io_service); boost::asio::ip::tcp::resolver::qu

    C++ のお勉強 - IT戦記