シングルトンパターンは、デザインパターンがさっぱりわからないプログラマーでも聞いた事があるかもしれないくらい有名であるにもかかわらず、真面目に実装しようと思うと様々な問題が発生してしまいます。 具体的には、 static変数の初期化順序が未定義であるために、予期せぬ値を参照してしまう。 複数のスレッドから同時に初期化処理を行なった際、適切な同期を行なえない。 シングルトンクラスのコンストラクタでシングルトンを参照した際、無限ループが発生する。 このうち最後だけはどうにもなりませんので何とか気をつけることとして、他の2つはできれば「シングルトン基底クラス」的なクラスを継承すれば自動的にどうにかしてくれる……というのが理想的です。 なので作ってみました。 #include <memory> template <class T> class Singleton { public : static
「Appmethod」はiOS、Android、MacOS、Windowsすべてのネイティブアプリを同一ソースコードで開発できるビジュアル開発環境。米エンバカデロが発表 米エンバカデロは、iOS、Android、MacOS X、Windowsのネイティブアプリケーションを開発できるビジュアル開発環境「Appmethod」を発表しました。将来的にはウェアラブルコンピュータなどにも開発対象を広げるとのこと。リリースは今年前半の予定。 Appmethodはマルチデバイス対応アプリ開発に特化 同社はすでにDelphiやC++ BuilderなどでiOSやAndroid、MacOS X、Windowsなどに対応したビジュアル開発環境を提供しています。Appmethodは両製品をベースにしたものですが、DelphiとC++ BuilderにはWindows対応のVCL(Visual Component
レガシーコード改善ガイド (Object Oriented SELECTION) 作者:マイケル・C・フェザーズ翔泳社Amazon レガシーコード改善ガイドを読んだ。 この本では、レガシーコードの内部をリファクタリングする際に何を気にする必要があるかとか、非常に長いモンスターメソッドをリファクタリングしていく時にまずどこからやるかとか、そういうことが書いてある。とにかくレガシーコードに直面して何から始めたらいいかわからないという時にはおすすめ。 リファクタリングという本と近い内容だけど、僕の中ではこの本よりはリファクタリングの方がなんとなく肌にあった。また今度再読してみようと思う。 印象に残ったところを書いていく。 依存関係を排除する 「たいていの場合、テストの最大の障害となるのが依存関係です」と書いてあるのだけれど、これは確かにと思った。いつもは無意識にやっているけど、言語化されてよかっ
MonoプロジェクトのGithubをうろうろしてるとなんか面白そうなのを見つけました、ってので。 mono/CppSharp ってのを見つけました。こいつは、C++のDLLを自動でラップしてくれるコードを吐いてくれる、というライブラリです。C++ネイティブのライブラリをC#から呼びたい、って場面も結構あるんですよね。特に数値計算系の処理とか。なので、昔から色々プロジェクトは盛んで、monoもCXXIってのもやってます。また、C#に限らない汎用的なツールとしてSWIGってのもあります。 これらのツールと大きくアプローチが異なるところがありまして、それは、この人、中にLLVM/Clangを飼っています。C#コードを生成する際のC++のパースにClangを用いているのですよ。なので、SWIGのように事前の型定義をしておく必要がありません。 一方で、CXXIがマルチプラットフォームをはなっから志向
関数とかのベンチマークをサポートしてくれるライブラリ. C++11 機能(より正確には -std=c++0x)を使っているので新しめの C++ コンパイラでないと動きません. 使い方は至って簡単で, ユニットテストのように, ベンチマークで計測したい関数を適当に benchmark::State を引数に取るようにして, マクロで呼び出しの指示を与えます. #include "benchmark/benchmark.h" static void BM_LongTest(benchmark::State& state) { double tracker = 0.0; while (state.KeepRunning()) for (int i = 0; i < state.range_x(); ++i) tracker += i; CHECK(tracker != 0.0); } BENCH
[サマリ]C/C++でBDDしたいならiglooとcmakeの組み合わせがオススメです 日本語だとびっくりするくらい情報が無いですが、Stackoverflowだとちょくちょく名前が出てきています => igloo - BDD Style Unit Testing for C++ xUnit系だとgoogletestがほぼ鉄板になりつつありそうな雰囲気がしますが、BDD系だと鉄板だといえるのが出ていない感あります。CSpec/CppSpecなどが候補に上がりますが、マクロがDSLとして作られすぎているとか、C言語のライブラリへのテストに向かないような仕様になっているものとかもあり。 そこで探していたところ、iglooがC言語でBDDするのにも対応できそうだし、DSLとしてのシンタックスも簡易で、何よりインストール不要でgit submoduleでブチ込めばすぐに使えるというのが気に入りまし
FixedSD SD Bus 接続の SD カードを HDD として認識させる Vista 専用フィルタドライバ。 WILLCOM D4 や LOOX U などで使用できます。
今まで質問で多かったのが、「じゃあどうやってアプリ作ったらいいのよ」という質問です。 ついで「どうやってプログラミング勉強すればいいの?」などでしょうか。 アプリに興味はあるものの、何から始めたらいいのかわからないし、どうやったらアプリが作れるのかわからない、という人は多くいるようです。 すべてを語ると何十エントリに達するだろうかという内容になると思いますので、 ひとまずはある程度の知識を持っている方向けに、様々なアプリの開発手法を伝えていきたいと思います。 基本のおさらいからですが、iOSアプリとAndroidアプリをそれぞれ作るための、公式開発手法がXCodeとEclipse+AndroidSDKになります。 XCode 【取得先】macのApp Storeアプリよりダウンロードする 【条件】AppleIDが必要。また作成したアプリを実機に転送したり、ストアへアプリを公開する場合には、
What's LangScan? LangScan is a program analyzer for source code search engine. What's New 2005-10-31: LangScan 1.2 Released! Added Eiffel support. Added D support. Added Io support. Added Lua support. Enhanced OCaml support. Some bugs have been fixed. 2005-09-26: LangScan 1.1 Released!
「VisualStudio の便利な小物」の続編でもうひとつ,便利なツールを紹介します。 ちょっと古い VisualStudio2005用なのですが,メンテしているソフトウェアの関係で,まだVS2005を使っている方も多いと思います(私もそうです)ので,そのような方には役立つと思います。 Microsoft Visual Studio 2005 IDE Enhancements Visual Studio 2005 IDE Enhancements are a set of Visual Studio extensions provides tools to effectively use Visual Studio resources. Microsoft 純正の拡張プラグインです。説明ページからダウンロード・インストールすることで,VisualStudio2005 に次のような機能を追
[2013/12/25 追記] この DynamicPatcher をさらに改良し、Visual Studio のアドインとして実装した Alcantarea をリリースしました DynamicObjLoader を改良し、実用に耐えそうな実行時 C++ コード編集機能を実装しました。 C++ コードを編集してそれをリアルタイムに反映させることができます。 DynamicPatcher https://github.com/i-saint/DynamicPatcher (bin) DynamicObjLoader の時点で一応は同等機能を実現していたのですが、更新したい関数を事前にマクロで包む必要があったり、virtual 関数を持つ class はシリアライズが必要だったりと、運用上色々面倒な点がありました。 今回はそのへんが大きく改良されています。 ・前準備なしに既存のほぼ全ての関数を
こんにちはサイボウズ・ラボの光成です。 今回は8月31日に開催された「x86/x64最適化勉強会6」の模様についてお伝えします。 今回の勉強会では、6月に発売された Haswell の新しい機能にかかわるものが3件、C++ によるゲーム開発の環境にかかわるもの、ARMと x86 の比較、Xeon Phi についてがそれぞれ1件ずつの発表でした。 以下、それぞれの発表内容について簡単に解説します。 Haswell 関係 私は「Haswellサーベイと有限体クラスの紹介」(動画1)を発表しました。前半は Haswell の復習として、パイプラインの改良点と、256bit 長に対応した整数演算命令 AVX2、積和演算を1命令で行う FMA、いくつかのビット演算命令や暗号用途の整数演算命令などについてサンプルコードを示しつつ紹介しました。gcc 4.8 などの新しいコンパイラでは、ソースコードを変
C++プログラマにとって、『Effective C++』はバイブルのような存在です。どれくらいバイブルかというと、皆さんの使っているGNUのGCCコンパイラには、EffectiveC++のコーディングガイドラインに従っているかどうかチェックするためのコンパイラオプション『-Weffc++』が、あるくらいです。 しかし、その内容は決して初心者向きではなく、実際に買ったはいいが、書棚の肥やしになっているような人たちも多いと思います。そこで、そのような初心者の人たちに EffectiveC++ を読み解くために各章のエッセンスをまとめたガイドラインを書いてみました。 C++はもう時代遅れとよく言われますが、組み込み系からビジネスシステムまで、幅広くカバーできる言語は、C++以外にありません。C++を知っていれば、おそらくどのような業界にも通用するでしょう。ITプログラマを自負するのであれば、C+
米Adobe Systemsは、「Flash C++ Compiler (FlasCC)」をオープンソース化すると発表した。「CrossBridge」という名称で、GitHubを通じて提供する。 米Adobe Systemsは6月25日、「Flash C++ Compiler (FlasCC)」をオープンソース化すると発表した。「CrossBridge」という名称で、GitHubを通じて提供する。従来、「Alchemy」のコード名で呼ばれ、「Adobe Creative Cloud」の一部として提供されていたもの。Adobeは今後もCrossBridgeへの投資を続け、プロジェクト管理を担いながら、オープンソースでの改善を目指すとしている。 Adobeによると、CrossBridgeはGCC(GNU Compiler Collection)を基に開発され、C/C++のソースコードをAdob
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く