[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

タグ

C++に関するrti7743のブックマーク (70)

  • How to Log Stack Frames with Windows x64

    I am using Stackdumps with Win32, to write all return adresses into my logfile. I match these with a mapfile later on (see my article [Post Mortem Debugging][1]). EDIT:: Problem solved - see my own answer below. With Windows x64 i do not find a reliable way to write only the return adresses into the logfile. I tried several ways: Trial 1: Pointer Arithmetic: CONTEXT Context; RtlCaptureContext(&Con

    How to Log Stack Frames with Windows x64
    rti7743
    rti7743 2011/01/08
    stacktrace
  • LinuxのカーネルモジュールをC++で書く - るなぽブログ

    C++ Advent Calendar 参加記事です。 LinuxのカーネルモジュールをC++で書く  ~C言語er(アンチC++)との仁義なき戦い(と敗北)~ 注:この記事はどようびが日ごろのうっぷんを晴らすべく心赴くまま書きなぐったモノです。理不尽なDISりとか投げやりな実装とか多数含まれますが、笑って許してください...m(__)m ... お願いします.... * はじめに 研究室でLinuxのソースを触ることになったのだが、そこには生粋のVB厨C++厨であるどようびにとっては信じられない世界が広まっていた! 既に絶滅したかに思われていたさまざまなコードがどようびを襲う! そして、カーネルいじりでもC++使えたらなぁ~。と思いぐぐってみたら次の記事が引っかかった! Linux: C++ In The Kernel? | KernelTrap Linus曰く The fact is,

  • C++0x Memory Model 第0回 - メモリモデルとは何か

    私は,スカートを履いた女の子に,スカートを履いたままぱんつを脱いで,脱ぎ終わったら右手を挙げるようにと,そう命令した.私は,その子が右手を挙げたのを確かに見た.だが,その子のスカートをめくってみたらぱんつはまだそこにあったのだ! - http://twitter.com/Cryolite/status/8455287843 より一部改変 これは C++ advent calendar の参加記事です。 ブログエントリは,以降のブログエントリと合わせて, C++0x のメモリモデルに関する規則を具体的な例や意味付けを交えた形で説明していくことを目的としています. 1998年に制定され,2003年に改訂された現行の C++ プログラミング言語標準規格 (以下, C++03) においては,プログラム中にただ1つの実行スレッドしか存在しない場合の規定しか記述されていませんでした*1.しかし, C

    C++0x Memory Model 第0回 - メモリモデルとは何か
  • ポインタは用法用量を守って正しくお使いください - kikairoya’s diary

    rti7743
    rti7743 2010/12/24
  • wat-array : wavelet木を利用した高速配列処理ライブラリ - Preferred Networks Research & Development

    こんにちは岡野原です。もう年末になりましたが、私の今年はこれからです。 wat-arrayというC++ライブラリを公開しました。 google code:wat-array wat-arrayはフリーソフトウェアであり、修正BSDライセンスに基づいて利用できます. wat-arrayはwavelet木と呼ばれるデータ構造を利用することにより、配列上の様々な処理を効率的に行うことができるC++ライブラリです。 例えば、 – 任意の連続した範囲内にある最大値 /最小値 / k番目に大きい値, またそれらの出現位置、頻度 – 任意の連続した範囲内にある指定した文字cの出現回数、c未満/より大きい文字の出現回数 – 任意の文字のi番目の出現位置 といったものを求めることが全て範囲長、入力長に対して定数時間で行うことができます。 例えば長さ10億、値の範囲が0から1000万であるような配列A中のA[

    wat-array : wavelet木を利用した高速配列処理ライブラリ - Preferred Networks Research & Development
  • 使いもしないのにC++のtemplateを毛嫌いする全ての人に - 神様なんて信じない僕らのために

    C++AdventCalendarの記事です。 さて、 生配列使ってますか? tr1::array(boost::array) 使ってますか? 生配列使っていると答えた貴方、 →まず死ね。 はい、arrayが常識ですよね。 さて、とはいえ、 「テンプレートを使うと遅いしコードがでかいし」 「生配列が一番速いしコードが小さいし」 「なのでテンプレート禁止」 なんて話を聞くこともあるかと思いますが、 こういう事をいう人は大抵「テンプレートを書いたことがない」のに言ってます。 なぜか? こういう人が当に心配しているのは「テンプレートが肥大化すること」じゃないのです。 「テンプレートが書けないし読めないのを認めたくないからです」 多くはCの老害だからですが、そういう人は放っておいてC++な人はきちんとテンプレートを使いましょう。 だって多くのテンプレートのコードは大きくもなければ非効率でもないか

    使いもしないのにC++のtemplateを毛嫌いする全ての人に - 神様なんて信じない僕らのために
  • C/C++ オブジェクトを Javascript オブジェクトにエクスポートする - 電波日記@はてな

    V8 の Embedder's Guide を見ると、C/C++ の関数を Javascript から使えるようにするやり方が解説されています。 Accessor のセクションにある Point の例をちょっと拡張すれば C/C++ のオブジェクトを Javascript のオブジェクトとして見せることができるようになりそうですが、オブジェクトのインスタンスを C++ コードとして生成していたりするのでちょっと gap があります。 ここでは、Javascript のオブジェクトに対して C/C++ のオブジェクト(のインスタンス)が対応して、メモリの解放も GC にしたがってよしなにされる、というところを目標にします。 Internal Field の利用 基的には Embedder's Guide のとおりです: Javascript のクラス定義というのは、コンストラクタ関数を基軸

    C/C++ オブジェクトを Javascript オブジェクトにエクスポートする - 電波日記@はてな
    rti7743
    rti7743 2010/12/17
  • Google Code Archive - Long-term storage for Google Code Project Hosting.

    Code Archive Skip to content Google About Google Privacy Terms

    rti7743
    rti7743 2010/12/11
    boost忘年会で教えてもらった言語。 luaの文法が嫌いなので興味深い
  • embed V8 - 枕を欹てて聴く

    embed V8がちょう楽しいので. 最近JSの処理系のソースコードを見るのが個人的な楽しみだったのだけれど, embed V8が思ってたよりもずっと手軽に処理系を触れると知って... 原文 Embedder's Guide - Chrome V8 — Google Developers id:edvakf さんによる邦訳. 素晴らしく, 読むとわくわくしてきます. Embedder's Guide - V8 JavaScript Engine - JavaScriptで遊ぶよ - g:javascript で, V8の該当ソース読み, C++で動かしてみて, id:edvakfさんの最後に言ってる疑問が確証もとれたので. #include <v8.h> #include <stdio.h> using namespace v8; static Handle<Value> acGetsGe

    embed V8 - 枕を欹てて聴く
  • http://atnd.org/events/10573

    http://atnd.org/events/10573
    rti7743
    rti7743 2010/12/03
    ベンチャーカフェで勧誘されたのでwww がんがる。
  • C/C++ におけるデータ入力の速度 - やた@はてな日記

    100 万行のテキストファイル(test-data)を C/C++ で作成したプログラムで読み込むとき,どのくらいの時間がかかるかを調べた結果です. データ入力がボトルネックになるような状況では,std::fgets(), std::fread(), std::istream::read() を使った方が良さそうです.std::istream については特に極端な差が出ていますので,速度面を重視する場合,便利なインタフェースを封印しないとダメっぽいです.実に惜しい…. 追記(2010-07-28):id:metaboles さんより,std::ios::sync_with_stdio(false) を使えば std::cin.getline() や std::getline() も std::fgets() と同じくらい速くなるというコメントをいただきました(後述). $ wc test-

    C/C++ におけるデータ入力の速度 - やた@はてな日記
    rti7743
    rti7743 2010/12/01
    fgets と fread の差が5倍ぐらいあるけど、改行をスキャンする作業の時間なんかね。
  • google-glogに潜むトリックを解明する - 射撃しつつ前転 改

    google-glogは非常に有名なロギングライブラリであり、その名前からわかる通りgoogleの人々によって開発されている。使い方は簡単で、 LOG(INFO) << "this is not a drill"; みたいな感じで、LOG()が返すオブジェクトoperator<<で記録したいオブジェクトをつなげていくだけで使える。とても便利である。実は、この便利さの裏には、実はいくつかのトリックが隠れている。適当に見た目を真似して作るだけでは、glogと同じような便利さは実現できないのである。今日は、その便利さを実現しているトリックを紹介したい。 なぜLOG()はマクロなのか まず、このLOG(INFO)というのは一見、関数もしくはクラスのコンストラクタかなにかに見える。しかしその実体は実はマクロで、以下のように展開される。 LogMessage(INFO).stream() LOGという

    google-glogに潜むトリックを解明する - 射撃しつつ前転 改
  • gccにconstexprが実装された

    GCC 4.6に、constexprが実装された。constexprについては、特に難しいことはない。単に、関数やクラスを、コンパイル時定数にできるというだけの話である。ともかく、せっかくなので使ってみる。この機能は、細々と解説するより、実際にコードを示したほうが分かりやすいであろう。 まずは、constexprな変数である。 int main() { constexpr int a = 0 ; // OK int value = 0 ; constexpr int b = value ; // エラー const int c = value ; // OK } constexpr指定された変数は、必ずコンパイル時定数になる。変数の初期化子は、定数式でなければならない。constとの違いは、constはコンパイル時定数でなくてもよいのである。constは、初期化子が定数式の場合、定数式にな

  • LOUDS(Level-Order Unary Degree Sequence)を調べたのでメモ - EchizenBlog-Zwei

    最近よく目にするLOUDS(Level-Order Unary Degree Sequence)というのが気になっていたので調べた。実は最初に提案されたのは1989年。結構昔からあったと知ってびっくり。 Space-efficient Static Trees and Graphs G. Jacobson, 1989 LOUDSというのは木構造を表現するデータ構造をひとつ。単純に考えると木構造を実装するにはノードを表すオブジェクトに子ノードへのポインタを持たせる、というものが思いつく。この実装はノードへのアクセスは効率的にできるけれどメモリをたくさん使ってしまう(O(NlogN))。 そこでノードへのアクセス効率をあまり悪くせずに、省メモリな木構造が欲しい。これを実現したのがLOUDS。LOUDSはノードの追加や削除が起きないstaticな木構造にしか使えないが、必要なメモリはO(N)で済

    LOUDS(Level-Order Unary Degree Sequence)を調べたのでメモ - EchizenBlog-Zwei
    rti7743
    rti7743 2010/10/16
    こーゆー分かりやすいまとめは助かる。あえて言うなら、select() や rank() を簡単に説明しないで、手で展開させてみて、こうなりますねって説明するといいと思う。
  • Ideone.com | 2hHxK

  • cpplands.png (image)

    rti7743
    rti7743 2010/10/06
    C++ land
  • C++ Land's Map

    rti7743
    rti7743 2010/10/06
    C++ land
  • 本の虫: 多くのプログラマは言語を表面的な理解だけで使っている

    一般のプログラマの多くは、プログラミング言語というものを、ごく浅い表面的な理解だけで使っている。これは、いわゆる「入門書」によるところが大きい。入門書は、言語をできるだけパターンで教えようとする。かくかくしかじかの場合には、とらとらうまうまのように書いておけばいい、などといった具合だ。 たとえば、配列の全要素や、aggregateの全メンバーをゼロで初期化したいとする。多くのC++プログラマは、以下のように書く事であろう。 int a[100] = {0} ; このコードは、正しく動く。配列aの要素は、すべてゼロで初期化される。しかし、C++という言語を考えた場合、{0}と書く必要はない。空の{}で十分なのである。 int a[100] = {} ; では何故、多くのC++プログラマは{0}と書くのか。それは、多くの参考書が、そのように書いているからに過ぎない。大多数のC++プログラマは、

  • C++ for Haskeller

    http://haskell.g.hatena.ne.jp/mr_konn/20061006/1160138831 Haskellから入った人には、cinとかcoutとか微妙すぎてよくないだろ、と、思ったので、適当に。 対象読者は、Haskellわかるし、C++もわかる人(意味ねー)。ネタを理解できる人です。 C++とは C++とは、以下のような特徴を持ったプログラミング言語です 参照透明(!) 出現評価(occurrence evaluation) (などといういかがわしい単語をつくる) パターンマッチできる 全く直感的でない構文 IOモナドを書くための大量のsyntax sugarがある 説明していくと長くなるので、それぞれ、おいおい必要になったときに説明するようにします。 C++の型 C++には、次の型があります。 整数 真偽値 連想配列 まあ、おいおい説明。(はやくも飽きてきた)

    C++ for Haskeller
  • ocn光代理店のおすすめ

    今、事情があり、共同生活をしています。 社会貢献に熱心な管理人さんで、最初は戸惑いました。 先日、三人目の新しい入居者さんが来て、同じように困惑しているようです。ocn光代理店おすすめ 結構な不満をぶつけられたけど、今の私には発言権がないので「ふふっ」と笑うしか出来ませんでした。 状況はだいだいわかってきたし、新しい入居者さんの不満もわかります。 二ヶ月以上経ちましたが今でも危機感は変わりません。 だからこそ言葉に気をつけなければと思っています。 「郷に入っては郷に従え」という諺通りに従い、時には「時の流れに身をまかせ~♪」と口ずさみます。 何事もなかったかのように振舞っていますが、頭の中ではフル回転です。 けれど回転を止めるときもあります。 考えると疲れるからです。 私がこの社会貢献に付き合うことで、この管理人さんも危うい立場になってしまうのはわかりきっているのに何故こうまでして熱心に誘