タグ

c++に関するgologo13のブックマーク (229)

  • appleseed - A modern, open source production renderer

    Fetch is a short film produced by the development team and entirely rendered with appleseed We are proud to announce the release of appleseed 2.1.0-beta, the twelveth (or twelfth?) release of our beta program and the 35th public release since the first alpha in July 2010. This release is the fruit of relentless design, development, testing and coordination efforts by the appleseed team, an interna

  • シングルファイル C/C++ ライブラリが便利すぎてやばい - Qiita

    漢は黙ってシングルファイル C/C++ ライブラリですね! シングルファイル C/C++ ライブラリとは, ヘッダファイル .h ひとつだけで機能が実装されているライブラリ(もう少し条件をゆるくして .cc も含む)のことです. header-only とも言われれたりします. このあたりの元祖は nothings 先生 http://nothings.org/ ですね. 最近は github にコードをあげています. https://github.com/nothings/stb シングルファイル系のライブラリまとめ一覧もあります. シングルファイル系が便利すぎてやばいので, 自分でもいくつか作りました. TinyObjloader(Wavefront .obj loader) https://github.com/syoyo/tinyobjloader TinyEXR(OpenEXR

    シングルファイル C/C++ ライブラリが便利すぎてやばい - Qiita
  • 優れたモダンなC++を書くのに役立つC++ Core Guidelines

    APIデザインレビューは死んだ。APIデザインレビュー万歳! To design APIs at scale, it takes deliberate effort to create consistency and make several discrete APIs feel like a platform. This requires an efficient and useful API design review process.

    優れたモダンなC++を書くのに役立つC++ Core Guidelines
    gologo13
    gologo13 2015/10/06
  • 【C++】なぜヘッダと実装はわけるべきなのでしょうか(.hに実装を書くことは邪道か)

    私はC++歴3年の学生趣味プログラマーです。 「C++はなぜヘッダと実装を分けなくてはならないのか/そもそも当に分けなければならないのか」という質問です。 C++といえば、ヘッダー部と実装部を.hファイルと.cppファイルに分けることが一般的とされている言語ですが、 これは同じオブジェクト指向言語のC#やJavaにはない特徴です。 そのせいでC++使いたちは今日もcppファイルとhファイルを行ったり来たりしながらコーディングする羽目になっています。(そしてVS使いはF12とCtrl+-を得意気に連打しています。) 私にとってもそれが当たり前になって久しいですが、 時々C++を学び始めたばかりの後輩から「なぜヘッダファイルに実装を書いてはならないのか」「なぜC++は二度も同じコードを書くことを強いるのか」と質問を受けます。 私はそのたびに「実装の隠蔽化」とか「循環参照の危険が云々」とか「そ

    【C++】なぜヘッダと実装はわけるべきなのでしょうか(.hに実装を書くことは邪道か)
  • Cのエラーハンドリングと例外設計、例外処理のメモ - 百日半狂乱

    二十五日半狂乱、6日目(の分...orz)の記事 Cのエラーハンドリングを毎回やるのは面倒だ! 前回も言ったが、Cではエラーハンドリングに戻り値とerrnoを用いる. それはそうと例外設計において"無視"は大罪である. だから、関数を呼び出したら戻り値は漏らさずチェックすべきだ. ということで、例えば以下のように逐一戻り値をチェックする. if(send(sockfd, buf, len, 0) < 0){ ERROR("send"); exit(1); } あぁ、面倒だ. 一体コードのどの部分が正常系の処理なのか? ほとんどエラーハンドリング*1で埋め尽くされるじゃないか. そもそもエラーハンドリング部分に書くのは毎回同じコードだし、コードの繰り返しは防ぎたい. エラー処理部分をラッピングして楽をする unpv12eの中でラッパーを被せることによってこの面倒を回避する方法を知った. in

    Cのエラーハンドリングと例外設計、例外処理のメモ - 百日半狂乱
  • ドワンゴに入社した

    そう。タイトル通りだ。筆者、江添亮はドワンゴに雇用された。一体、どのような経緯でドワンゴに入社するに至ったのか。また、どんな仕事をしているのか。それを説明するには、時系列を追って書いたほうがいいだろう。 2013年8月21日 ふとみると、以下のようなサブジェクトのメールが届いていた。 【ご相談】ドワンゴ主催の C++11, 14 に関する勉強会にスピーカーとしてご参加頂けないでしょうか C++11? C++14? なんと、日C++14などという単語を知っている企業があったのか。しかし・・・ドワンゴ? SPAMだろうか。いや、こんなにピンポイントなSPAMがあるわけがない。 それにしても解せないメールだ。ドワンゴといえば、もちろん、あの有名なニコニコ動画の企業だ。ニコニコ動画と言えばWebサイトだ。ニコニコ動画やその関連サービスの開発にC++を使っているのだろうか。いやまて、たしか子会社

  • ネイティブ開発アンチパターン

    Desarrollo de módulos en Drupal e integración con dispositivos móvilesLuis Curo Salvatierra

    ネイティブ開発アンチパターン
  • モダン C++ プログラミング - 日本語公開記事 - Confluence

    このドキュメントはサイボウズ社内のトレーニング用に作成したものです。 作成時点では C++11 はまだあまり利用できない状況でしたので、C++98 ベースの記述になっています。 いずれ更新を予定しています。 モダンの定義モダンとはテンプレートメタプログラミング(TMP)を駆使することです。嘘です。 宗教論争に意味はないので、ここでは 「最近の C++ の仕様・機能を理解し、C より実装効率が良く不具合の少ない」 プログラミング技法を「モダン C++ プログラミング」と定義します。 つまり、不具合が少なく、かつ C にはもう戻れなくなるような効率の良さを達成するものです。 学習効率(ROI)が極めて良くないような技法(例えば TMP)は、この定義では除外されます。 勉強方法お勧めの順序は以下。決して全部を読もうとしないこと。 C++ Language Tutorial のような、あっさりした

  • C99の複素数ライブラリがクソすぎる。

    C99では、複素数ライブラリが採用された。たとえば3.0 + 4.0iの複素数を書きたい場合、GNU拡張では、以下のように書く。 #include <complex.h> double _Complex x = 3.0 + 4.0i ; complex.hをincludeすれば使えるようになる。見た目はそのまんまだ。 これはGNU拡張であって、C99の規格による正式な書き方は以下の通りだ。 float _Complex x = 3.0 + 4.0 * _Complex_I ; _Complex_Iは、"0+1i"を意味する虚数単位定数であり、にかければ任意の虚部を表現できる。あとは実部を足せばいい。 どうやら、C標準化委員会は、まともな名前を考えつかなかったらしい。まあ、大方のきれいな名前は、既存のソースコードと衝突してしまうから、アンダースコアに大文字で始まる予約語を使うしかないのだろう

  • C++11参考書の公開:C++11の文法と機能

    C++11の参考書をGitHubで公開する。 GitHub: EzoeRyou/cpp-book GitHubからzipでダウンロード GitHub Pagesでの閲覧:C++11の文法と機能 序 書はC++11のコア言語の文法と機能を、標準規格書に従って解説したものである。正式なC++規格書として発行された後の、ひとつ後のドラフト規格、N3337 を参考にしている。ドラフト規格を参考にした理由は、正式なC++規格書は、個人での入手が煩わしいためである。読者に入手が困難な資料を元に記述された参考書は価値がない。そのため、読者が容易に入手できるドラフト規格のうち、正式なC++規格書とほとんどかわらないN3337を参考にした。 書の対象読者は、C++を記述するものである。C++実装者ではない。そのため、サンプルコードを増やし、冗長な解説を増やし、C++コンパイラーを実装するための詳細な定義

  • JP Morgan Chaseがデリバティブ専用スパコンをFPGAで作った話 #fpgax - スティルハウスの書庫の書庫

    金融系でFPGAというとHFTへの応用が知られてるけど、この事例はリアルタイムトレードの話ではない。金融業務で必要とされるバッチ処理やHPC(High Performance Computing)でもFPGA格的に使われ始めてるという話だ。 元ネタは、2011年にJP Morgan Chaseの人がスタンフォード大学で講演した内容。このビデオを見ていたらとっっっても面白かったので、 #fpgax 第3回で使う資料として要点を訳し、俺のコメントや補足を追加してみた。 http://www.youtube.com/watch?v=9NqX1ETADn0 (スライドはこちら) なお、FPGAも金融も素人なので、勘違いや誤訳があるかもしれない。FPGAとは何かよく知らない人はこちらをどうぞ。 リーマン・ショック対策のスパコン開発 JP Morgan Chaseは、社債やモーゲージ(不動産を担保

    JP Morgan Chaseがデリバティブ専用スパコンをFPGAで作った話 #fpgax - スティルハウスの書庫の書庫
  • C++11 時代のクラス設計に関する提案 - 野良C++erの雑記帳

    先日,ついに C++11 の主要な機能を一通り実装した GCC-4.8.1 がリリースされた. もう一方の主要な C++ コンパイラである Clang++ でも C++11 の機能は既に全て実装されており, 来る 6/05 に最新版の Clang-3.3 がリリースされ, C++11 対応が完了する見通しだ.*1 このような状況においては, C++11 への乗り換えを検討し始めているプロジェクトも多いことだろう. さて, C++11 では, C++98/03 との互換性を保ちつつ,クラス設計に大きな影響を齎す変化が採用された. すなわち, Move Semantics である. この登場により, C++11 で「良い」とされるクラス設計は, C++98/03 時代とは若干 異なったものとなる. そこで,この記事では,筆者が C++11 において「良い」と考えているクラス設計を提案してみたい

    C++11 時代のクラス設計に関する提案 - 野良C++erの雑記帳
    gologo13
    gologo13 2013/06/07
    ほう。。ムーブ演算子ってなんだ?
  • PHPをC++に変換して高速化する「HipHop for PHP」をFacebookが公開 : candycane development blog

    アメリカ時間の昼ごろにTwitter上が一つのニュースで埋め尽くされました。 PHPC++に変換して高速化する技術をFacebookが公開したというものです。世界中のPHPハッカーが注目する興味深いリリースという事でちょっと長いですが、リリースノートの和訳を行いました。 原文 http://developers.facebook.com/news.php?blog=1&story=358 Facebookにおいて重要なことのひとつが動作の速さです。過去6年間にわたって、PHPが提供する高速な開発ペースによって多くを成し遂げてきました。プログラミング言語としてみると、PHPはシンプルです。簡単に習得し、簡単に書き、簡単に読み、簡単にデバッグする事ができます。我々は他の言語よりも早くエンジニアを獲得し、それによってより早いイノベーションをすることができます。 今日、私は2年に渡って作業して

  • 本の虫: GNU/LinuxのC++11でプログラミングの常識がひっくりかえった

    C++11のコア言語を詳細に解説するを書いている。ライブラリについては書の範疇ではないし、どちらかと言えばコア言語の方が好きなのだが、ライブラリの解説だってやってやれないことはない。せっかくなのでC++11の範囲で非同期処理について書くことにしよう。 例えばあるファイルを全部メモリ上に読み込むような処理を考えよう。ファイルの読み込みは時間がかかる。残念ながら、まだmmapのようなmemory mapped fileは標準ライブラリにないし(あったとしてもこの問題には不適だし)、非同期I/Oもない。そのため、ファイルの読み込みは別のスレッドで行い、結果を元のスレッドに返したい。 これは非常に難しい問題である。別のスレッドを作ってその終了を待たなければならないどころか、その別のスレッドから何とかしてデータのやり取りをしなければならないのだ。それだけではなく、ファイルを読み込むという処理も書

    gologo13
    gologo13 2013/04/05
    こいつはすげー
  • C++プログラマ(というか自分)のためのObjective-C講座(というかメモ)

    目次 全般 クラス メッセージの送信 idとNSObject その他 全般 まあ、/Developer/Documentation/Cocoa/ObjectiveC/index.htmlを見れば、細かいことは分かるので、ここではC++に慣れた人から見たObjective-Cの概略をまとめるということで。 まず。 Objective-Cコンパイラは、C++コンパイラに比べるとコンパイラとしてよりもプリプロセッサに近い動きをする。 /usr/include/objc以下にいろんなヘッダがあるんだが、これらをあらかじめincludeしたC、という感じに近い(もちろん文法の拡張がいくつかあるので、それらの解析はObjective-Cの重要な機能なんだけど)。 それは例えば、「動的バインドされるメソッドにアクセスする関数」「動的にクラスを追加する関数」のような、言語仕様の内側部分をいじくっちゃうよう

  • Erich Kaltofen's Homepage

    Erich L. Kaltofen Professor of Mathematics, Symbolic Computation, NCSU Adjunct Professor of Computer Science, Duke University ACM Fellow Mail address: North Carolina State University Mathematics Department, Box 8205 Raleigh, N.C. 27695-8205 USA Physical address: SAS Hall 4220 (NCSU) Member of the Genomics Faculty (NCSU), Graduate Faculty of Computer Science (NCSU) Phone: (919) 515 8785 ¶ Secretary

  • C++ で Bloom Filter を実装してみた | Now or Never

    Bloom Filter を勉強する機会があったので、実装してみた。 概要 Bloom Filter 自体の説明はよそに譲るとして、ざっくり特徴を言うと、 二分木やハッシュテーブル等のデータ構造と比べると、はるかにメモリ効率が良い キーの値をメモリ上で格納する必要がない 逆に言うと、キーの集合を復元できない false positive(追加していないキーに対して true と返す誤り)による誤検出の可能性があるが、false negative(追加しているキーに対して、false と返す誤り)はない false positive する確率は 1 – exp(- k * n / m)) * k の式から算出できる パラメータ k: ハッシュ関数の個数、n: 追加する要素数, m: ビット列の長さ 要素を追加するほど、false positive が起きやすい n = 10 のとき 0.02

  • ぐだぐだ std::bitsetの使い方サンプル

    1 //std::bitset使用サンプル 2 #include<iostream> 3 #include<bitset> 4 5 using namespace std; 6 int main(){ 7     //8bitで131の表現 8     bitset<8> b1(131); 9 10     //表示 11     cout<<"b1="<<b1<<endl; 12 13     //2ビット目を1に 14     b1.set(2); 15     //7bit目を0に 16     b1.reset(7); 17 18     //unsigned long に変換 19     cout<<"b1="<<b1<<", and in unsigned long: "<<b1.to_ulong()<<endl; 20 21     //bit反転 22     b1.fl

    gologo13
    gologo13 2012/09/02
    nice sample
  • オブジェクト指向できていますか?

    3. 自己紹介 1992年~1997年 某ゲーム会社 プログラマ SFC,GB,PS1,N64のゲーム開発経験 1998年~現在 日工学院八王子専門学校 @mozmoz1972 専任講師 プログラミング教育を中心に担当 twitterもfacebookも実名です。よかったらフォローしてください。

    オブジェクト指向できていますか?
  • C++文字コードのお話

    Maxしぐれん @Sigureya なぜか文字コードの設定がマルチバイト文字になっていて面倒なことになっていた。 const char*がsjisになっていたっぽい。 2012-08-18 18:17:58

    C++文字コードのお話
    gologo13
    gologo13 2012/08/19