○ [技術][C++] V8 から OLE オートメーション せっかくアプリへの組み込み前提なのだから、OS のネイティブな機能を使ってみたくなるのが人情というもの…。 というわけで、最近は OLE オートメーションに対応したオブジェクトを Javascript からいじるためにごそごそやってます。これができると Ajax のコア機能がアプリに組み込めたりして。
○ [技術][C++] V8 から OLE オートメーション せっかくアプリへの組み込み前提なのだから、OS のネイティブな機能を使ってみたくなるのが人情というもの…。 というわけで、最近は OLE オートメーションに対応したオブジェクトを Javascript からいじるためにごそごそやってます。これができると Ajax のコア機能がアプリに組み込めたりして。
[編集] 意図[編集] 整数の0とNULLポインタを区別するため。 別名[編集] 動機[編集] C++では、長年にわたり、NULLポインタを指定するキーワードがないという恥ずかしさがありました。 C++11ではその恥ずかしさが解消されました。C++の強力な型チェックにより,CのNULLマクロは式の中ではほとんど役に立たなくなっています。 #define NULL ((void *)0) // 訳註:C++ では定義が異なる std::string * str = NULL; // void * から std::string * へ自動的にキャストすることはできない void (C::*pmf) () = &C::func; if (pmf == NULL) {} // void * からメンバ関数ポインタへ自動的にキャストすることはできない そのため、C++ では整数定数 0 をヌルポイン
Most people will agree that C++ is a fairly complex language. But just how complex is it? I got curious about quantifying that by comparing the number of concepts a programmer has to understand to learn a programming language in its entirety. Concepts in my definition include large categories like classes and operators, as well as more fine grained things like if-else statements and while loops. T
Boost.勉強会 #9 に行ってきた。つくば遠い。筑波大学広大。 とり急ぎ役に立たない感想をつらつら書くよ。 実は明日の yokohama.vim #3 の資料がまだできてなくて書きつつ聞いてたりしたのでところどころ嘘言ってるかもしれないです。てかまだ書き終わってないので死亡フラグ立ちまくり。 並行並列へのC++としてのアプローチ - @Flast_RO 資料: Boost9 session Boost.Thread は v1 はリリースされず、v2 は v3 への踏み台。なんかすごい。 Boost.Context は面白そうだけど色々削られたり 1.50.0 には入らなかったりで実装遅れてる感じなのかな? 今後に期待。 Boost.Coroutine 便利そう。入ってくれるのかなー Context がまだあんな感じだし、入るとしてもまだ先そうだけど。いつ頃使えるのかなー。 C++ ti
C++11標準ライブラリで新しく追加されたstd::promiseとstd::futureについてメモ。 future/promiseの基本 両者ともに標準ヘッダ <future> にて定義されるクラステンプレートであり、「別スレッドでの処理完了を待ち、その処理結果を取得する」といった非同期処理を実現するための部品*1。 処理結果として、通常の戻り値(value)または例外(exception)を扱う*2。戻り値の型はテンプレート引数にて指定するが、例外は任意の型を扱うことができる。(例: int型を扱うならstd::future<int>, std::promise<int>を用いる。例外はstd::exception_ptrを利用するため任意の型を伝搬可能。) future は計算処理の完了待ち(同期機構)と結果取り出し(通信チャネル)機能を提供する。 promise は計算処理の結果
Boost.Threadにあるpromiseとfutureという2つのクラスは、 スレッド間において安全にデータを読み書きし通知する方法のひとつとして提供されています。 (非同期処理の結果を生成するために使われたりします) promiseがデータを書き、futureはpromiseによってデータが書かれるまで待機して値を取り出します。 promise::get_future()で待機用のfutureを得ることができるので、そのインスタンスで待機します。 #include <iostream> #include <boost/thread.hpp> #include <boost/ref.hpp> void thread_func(boost::promise<int>& p) { boost::this_thread::sleep(boost::posix_time::seconds(3)
Scott Meyers氏によるEffective C++11ネタ集を見つけたのでInitial Thoughts on Effective C++11より抄訳。 2014-03-23追記:本記事の内容はBook Report: New Title, New TOC, New Sample Itemにてアップデートされている。(2013-03-25 Effective C++11: Content and Status) 2013-04-18追記:並行/並列関連だけ詳細化された姉妹版→Effective C++11/Concurrency関連の目次草案 明示的な型宣言よりもautoを使おう オブジェクトの生成では () と {} を区別しよう ただしauto + { expr } == std::initializer_listは忘れずに(auto x{1};/auto x={1};ではs
H.Torii @torii_h C++エンジニア採用面接最終回。設問を用意して知識と頭の回転を調べてゆく。問1:悲観的排他制御と楽観的排他制御の違いを、実装した経験から述べよ。ここでOracleとMySQLの歴史や、哲学者の食事問題あたりが出てきて欲しいところ。でも両者の得失がわかってれば合格。 H.Torii @torii_h 問2:リスト逆転問題。int a[100]の各要素の前後関係を逆転せよ。性懲りもなく同じ出題をしてみた(^_^;) 何秒で解けるかで頭の回転がわかる。ついでにビッグオー表記をわかってるか試せるし。for/while版、再帰版、STL版の3通りがスラスラ出てくれば申し分ないのだが。 H.Torii @torii_h 問3:デザインパターンについて。知ってるのを手短かに解説せよ。SingletonやFactoryを知らない、使ったことがない、なんてわかれば即退席して
最近どのブログでも node.js ばかりでもう飽き飽きしてる皆さんこんばんわ。 node.js 面白いですよね!ェ node.js ってアプリケーションを作る側(つまりライブラリを使う側)からすると、Web周りの便利なライブラリが既に色々あって、そのライブラリが一体どうやって動いてるのか気にすることってあんまり無いかと思います。 pure javascriptな物ならばコードを読むのは簡単です。ただしやれる事に限りがあります。node.js はGoogle製のJavaScript Engineであるv8をベースに作られているのですが、このv8はアプリケーションに組み込むのに適した構成になっていて、関数テンプレートやインスタンス、プロトタイプという各機能がC++のクラステンプレートで上手く表現出来ているライブラリです。Spidermonkeyも確かに扱うのは簡単なのですが、僕からすると若干
C++ Advent Calendar です。 google の V8 engine を 組み込んで簡易スクリプトにしてしまおうという話です。 C++の言語仕様や boost の話は超絶詳しい人たちがされているので、誰もやらなそうな ぬるいいい加減な話をします。 #間違ってたら突っ込みよろしく!! なぜ V8? Lua ぢゃだめなんですか? C++ から呼び出しやすい 組み込み言語として、 Luaがあります。 しかし、 Luaはコメントが -- から始まったり、 〜end と、 C / C++ に組み込みやすいスクリプト言語なのになぜか pascal チックな文法?という不思議なところがあります。 やはり、 C++ ユーザとしてはコメントは // で書きたいし、ブロックは { } でやりたいですよね (y/Yes) そんなところに、 google の V8 engine があります。 C+
(基本だらだら進行で、過程を追記していきます) Google Chrome が出ました Google Chrome で JavaScript エンジンが刷新されたということで、その JavaScript エンジン V8 についていろいろ調べてみようと思います。 Issues - v8 - V8 JavaScript Engine - Monorail ビルドしてみる まず、 svn からソースを持ってくる $ svn co http://v8.googlecode.com/svn/trunk/ v8おおお。以外と少ない で、 trunk の中に入って $ cd v8scons でビルド(scons が入ってない人は、 port や apt-get で入れる) $ scons scons: Reading SConscript files ... scons: done reading SC
なぜ CodeRepos に登録しないのか べつだん深意や確執があるわけじゃなくて,華々しく 500 人めのコミッタになろうと思ったら,現在 461 人だったからです。ということで 38 人の方々,コミッタ登録してください ;P 冗談はともかくおまえの書いた汚いコードを早く添削したいんじゃという方がいらっしゃったら,代理でいれといて構いません。 Acme::JavaScript::V8(Perl XS)を書くときに苦労したこと New ていうのが XS での define 値だったので困りました。V8 側だと,new / delete するんじゃなくて Class::New() する流儀なので。 ですから,#undef New してあります。他のマクロで使われていたらマズいなぁと思いますが,動いたからよしとします。 エンベッダーズガイド V8 JavaScript engine を読む s
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く