タグ

C++に関するgigi-netのブックマーク (58)

  • 本の虫: C++標準化委員会の10月の興味深い文書

    2018-10のC++標準化委員会の文書集が公開されていたので、興味深い新機能の提案に限って紹介する。 secure_val セキュリティ上の理由でメモリの内容を破棄したい場合、コンパイラーの最適化によって意図通りのコードが吐かれないことがある。 void decrypt() { char password[64] ; // パスワードを取得 get_password(password) ; // 複合処理 // パスワードをメモリから破棄 std::memset( buffer, 0, 64 ) ; } このコードでは最適化の結果memsetが省略されるかもしれない。なぜなら、bufferはmemsetの後に使われていないから、memset自体が不要だとコンパイラーは判断できるからだ。 そのために、最適化によって消えずに値を消去できるライブラリを提供する。 void secure_cle

    gigi-net
    gigi-net 2018/10/27
  • C++に提案されている静的例外

    C++に静的例外が提案されている。 [PDF] P0709R1: Zero-overhead deterministic exceptions: Throwing values 例外はそのパフォーマンスへの影響が懸念され、一部のC++プロジェクトではコンパイラーオプションによって例外自体が無効化されていた。 これは由々しき事態だ。というのも、例外は標準C++の機能の一部であり、標準ライブラリは例外の存在を前提にして設計されている。例外が無効化されているということは、それはもはやC++ではない。C++風の別言語を使っていることになる。 なぜ例外は忌避されるのか。例外のパフォーマンスが非決定的だからだ。例外の実装はスタックからの確保ではなくヒープからの動的なメモリ確保が必要で、例外のキャッチにはRTTIによる型情報の比較が必要だ。 ifとgotoによるエラー処理のパフォーマンス特性は決定的に見

    gigi-net
    gigi-net 2018/07/31
  • Rustでむりやりプレステ1向けプログラムをつくってみる - Qiita

    この記事はRust その2 Advent Calendar 2016 4日目の記事です。 こんにちは、murachueです。 Rustについて知った時、「RustでOSを書くこともできるんだぜ~」的なことを耳にしたので、きっとCやC++でしか書けないようなモノもRustなら書けるんだろうな~と思いました。 というわけで、今回はRustでむりやり初代PlayStation(以下PS1)向けの簡単なプログラムを作ってみます。 Cという名の高級アセンブラやC++という名の超高級アセンブラに負けないぞ~。 (ちなみに、その昔「ネットやろうぜ!」という一般人でもPS1ゲームが作れるキットがあったらしいんですが、その開発言語はCだったそうです。) いちおう、RustについてはThe Rust Programming Languageの5~6章ちょっとくらいまでに書いてあることくらいを知っている前提です

    Rustでむりやりプレステ1向けプログラムをつくってみる - Qiita
    gigi-net
    gigi-net 2016/12/05
    勉強になる
  • コンパイル中にコンパイルする「コンパイル時Cコンパイラ」をつくった話 - kw-udonの日記

    僕は先日、「コンパイル時Cコンパイラ」なるプログラムをつくって、公開した。 「コンパイル時Cコンパイラ」とは、コンパイルするとC言語プログラムのコンパイルが行われるというようなC++プログラムである。 C++のコンパイル中に C言語プログラムのコンパイルを行う、 "コンパイル時Cコンパイラ"をつくりました #ELVMhttps://t.co/kKiLU3rLFX— うどん (@kw_udon_) 2016年11月18日 自分で書いておいてなんだが、「なんのこっちゃ」という感じではある。(ちゃんと記事中で説明する。) 実際、変なプログラムではあるのだが、とても嬉しいことに多くの人に面白がっていただき、予想だにしなかった大きな反響をいただいた。 Hacker Newsで1位になったり、LLVMの公式ブログで紹介されたり、果てはC++の作者であるBjarne Stroustrupにも言及されるに

    コンパイル中にコンパイルする「コンパイル時Cコンパイラ」をつくった話 - kw-udonの日記
    gigi-net
    gigi-net 2016/12/04
  • ISUCON6予選をC++で参加して予選通過した話

    チーム名「Anago」で @iwiwi, @zuisou, @imos の 3 人で ISUCON6 予選に参加し,幸運にも 1 日目 3 位で通過することができました.@iwiwi が「ISUCON に C++ で参加したい!」と言っており,それを全力バックアップをしようと思ったのがきっかけの参加でした. 前日までにやったこと C++ で全てを書けば最速になるのは自明なのですが,C++ は参考実装として与えられていないだけではなく,HTTP サーバを書くことを想定していない言語のため準備には苦労しました. C++ で HTTP サーバを書く方法は,既存の Web サーバ (e.g., nginx, Apache, H2O) のプラグインを書いて実装するか,FastCGI として実装するか,フルスクラッチで書くかの選択肢が考えられますが,プロセス間通信を避けて爆速にしたかったので,事前に

  • OpenGLやDirectXなGUIにimguiが最強すぎる - Qiita

    imguiとは imguiは、OpenGLやDirectXなどの描画環境の中で動くGUIフレームワークです(vulkanも?)。 "Immediate Mode GUI"と呼ばれるパラダイムにより、大変短く直感的なコードでGUIを構築できます。 どういうGUIコンポーネントが使えるかは、リポジトリのスクショを見ていただいたほうが良いかと思います。 デバッグや調整、テスト用のGUIを構築することが目的のフレームワークです。 環境 今回この記事ではwindows10, vs2015, Cinder(0.9.0)上でサンプルを作成しました。 Cinder用には専用のimgui拡張があるため、そちらを使用します。 https://libcinder.org/ https://github.com/simongeilfus/Cinder-ImGui的な考え方や、imguiAPIは同じですが、

    OpenGLやDirectXなGUIにimguiが最強すぎる - Qiita
    gigi-net
    gigi-net 2016/09/04
    めっちゃ良い
  • 強くなるためのプログラミング -様々なプログラミングコンテストとそのはじめ方- - ぴよぴよ.py

    みなさんは何のためにプログラミングをしていますか? 仕事のため、何かをつくるため。 それも良いけれど、「強くなる」ためにプログラミングしてみませんか。 様々なジャンルのプログラミングコンテストとまだ見ぬライバルたちがあなたを待っています。 今回はアルゴリズム/AI/機械学習/セキュリティ等の様々なジャンルのコンテストとその始め方について紹介したいと思います。 ※これはPyConJPでの発表を文字におこしたものです。が、Pythonの話は殆どないです。 プログラミングコンテストとは? すべてのコンテストに共通する、「コンテストに参加する利点」 1. 自分と同じ問題を解いた、他の人の解法を知ることができる 2. 同じコンテストに出ていた、たくさんのライバルと知り合える アルゴリズムのコンテスト 問題1 問題2 TopCoder Single Round Match CodeForces AtC

    強くなるためのプログラミング -様々なプログラミングコンテストとそのはじめ方- - ぴよぴよ.py
  • Cocos2d-x のカスタムアロケータを試してみた - def yasuharu519(self):

    Cocos2d-x の v3.4 からカスタムメモリアロケータの仕組みが追加されています。 Cocos2d-xの勉強会に参加した時にConsole機能について知ったのですが、 そのConsoleの中でメモリアロケータの情報を取得することができるようになっており、 今回試してみたくなってためしてみたところです。 tl;td Cocos2d-x のカスタムメモリアロケーション機能をonにする方法について メモリアロケーションとは (間違っているところもあるかもしれないので、間違いがあればご指摘いただければ幸いです) プログラムを動かす際には、プログラムやデータの領域をメモリ上に確保することが必要です。 その際、 スタック領域にメモリ領域を確保(自動メモリアロケーション) ヒープ領域にメモリ領域を確保(動的メモリアロケーション) の大きな二つがあります。 簡単に言うと、一つ目はnewを使わずに変

    Cocos2d-x のカスタムアロケータを試してみた - def yasuharu519(self):
  • 前置インクリメント vs 後置インクリメント | 闇夜のC++

    後置インクリメントにはひと目で遅くなりそうな処理が見て取れますね。 前置インクリメントがインクリメント処理後、単純に自身の参照を返すのに対し、後置インクリメントではインクリメント前に一時オブジェクトの生成、そしてインクリメント後にはその前に生成した一時オブジェクトを値で返しています。 前置と後置では、単純にオブジェクトをコピーして返す分、普通に考えたら後置の方が遅いよね。というのが従来の認識でした。 「C++ Coding Standards -101のルール、ガイドライン、ベストプラクティス」の中でも、特に後置インクリメントの必然性が無い時は迷わず前置インクリメントを使うことが推奨されてきました。 元の値を必要としないときは前置形式の演算子を使おう __C++ Coding Standards (p50) 新たな主張 「ゲームエンジン・アーキテクチャ第二版」の中の一節を紹介します。 しか

    gigi-net
    gigi-net 2015/04/21
    ずっと前置インクリメントしてた
  • OMMF2014 で レゴ x プロジェクションマッピングなゲーム Mont Blanc Pj. を出展してきた - 凹みTips

    はじめに 仕事が立て込んでいて書くのが遅れてしまいましたが、8/23、24 でソフトピアジャパンで行われた Ogaki Mini Maker Faire 2014 (OMMF2014) に、レゴで出来た自由に組み替えられるステージにプロジェクションしてインタラクティブに遊べるゲーム Mont Blanc Pj.(もんぶらんぷろじぇくと)を出展してきました。 Ogaki Mini Maker Faire 2018 | 2018年12月1日・2日 岐阜県大垣市ソフトピアジャパンで開催します。様々な分野のつくり手「Maker」たちが全国から集まり、つくったものを見せ、語り、その楽しさを共有するイベントです。 http://www.montblancpj.com/ Mont Blanc Pj. は以下の3つのコンセプトを主軸において、友人の id:jonki と趣味で開発しているゲームです。 レゴ

    OMMF2014 で レゴ x プロジェクションマッピングなゲーム Mont Blanc Pj. を出展してきた - 凹みTips
    gigi-net
    gigi-net 2014/09/10
    おもしろい!!!
  • C++14の言語拡張まとめ - Faith and Brave - C++で遊ぼう

    C++14は、C++11に対するマイナーアップデートです。仕様のバグ修正や、C++11の比較的小さめな機能不足を補うバージョンになっています。 細かすぎる変更はさすがに書きませんが、ある程度大きめの変更を以下にまとめます。 この内容は、正式に策定されるまでに変更される可能性があります。 コア言語 2進数リテラル 変数テンプレート 通常の関数の戻り値型を推論 ジェネリックラムダ 一般化されたラムダキャプチャ constexpr関数の制限緩和 どこからともなく現れる結果の規定(前半, 後半) [[deprecated]]属性 数値リテラルの桁区切り文字 サイズ付きのデアロケーション initializer-listによるaggregate初期化の制約緩和 ロックフリーの定義 シグナルハンドラでできることの制限緩和と明確化 ライブラリ make_unique() コンパイル時整数シーケンス tu

    C++14の言語拡張まとめ - Faith and Brave - C++で遊ぼう
  • スクールガールストライカーズの 内製クライアントエンジン

    近年、ハイスペックなスマートフォン、高品質なネットワークが普及し、それによりモバイルゲームの制作手法やそれを取り巻く環境も変化してきました。スクウェア・エニックスでは、そのような環境の変化に対して、日々新たなチャレンジをし続けています。そして、このようなスピード感溢れる業界の流れには、会社の枠を超えた技術情報の共有、交流が欠かせないと感じております。 そこでこの夏、社内のエンジニア・テクニカルディレクターによる最新のモバイル開発の技術情報や社内モバイルエンジン、開発秘話によるセッションをメインに、スクウェア・エニックス モバイル オープンカンファレンスを開催する運びとなりました。また、セッションの後は登壇する弊社スタッフと直接ディスカッションやフリートークができる場を設けております。この機会にスクウェア・エニックスという会社についても、より詳しく知って頂ければ幸いです。 マネージャー・テク

    gigi-net
    gigi-net 2014/07/17
    すごい
  • 本当は怖くないムーブセマンティクス - yohhoyの日記(別館)

    この記事はC++ Advent Calendar 2012の15日目にエントリしています。 内容はC++11「ムーブセマンティクス」の入門記事となっています。 もくじ ムーブセマンティクス再考 シンタックス vs. セマンティクス コピー vs. ムーブ ムーブのもつ2つの意味 C++11のムーブセマンティクス対応 auto_ptrからunique_ptrへ auto_ptrの暗い過去 unique_ptrへの移行 std::moveの役割 ムーブセマンティクスを使おう C++11標準ライブラリとムーブ ムーブ"後"の中身は? ムーブを利用して関数を書く (文のみ約9500字) まえがき To move or not to move: that is the question. ― Bjarne Stroustrup, 2010(改)*1 プログラミング言語C++の新しい国際標準規格*2

    本当は怖くないムーブセマンティクス - yohhoyの日記(別館)
  • Hello • Gosu

    Gosu is a 2D game development library for Ruby and C++. It’s available for macOS, Windows, Linux, and iOS. Gosu is focused, lightweight and has few dependencies (mostly SDL 2). It provides: a window and a main loop 2D graphics and text, powered by OpenGL or OpenGL ES sounds and music keyboard, mouse, and gamepad input Gosu is mostly used to teach or learn Ruby or in short game development competit

    gigi-net
    gigi-net 2014/06/20
    この前教えて頂いてメモし忘れてたRuby製ゲームエンジン
  • テラシュールウェア [Unity]Unity5はC#をC++化する技術でパフォーマンス大幅UPするかも

    UnityのIL2CPP(C#をC++に変換する技術)だが、別のプラットフォームにも使うらしい。(正しくはC#の吐いたアセンブリをC++に直す) そもそもIL2CPPはWebGL 具体的にはasm.jsに対応する為の技術として公開されていた。で、これを他のプラットフォームでも行う事が今日のUnity公式ブログにあった。 The future of scripting in Unity (ユニティのスクリプトの未来) 凄く要約すると、こんな感じ。 ・C#コードもC++化して最適化がかけられるのでパフォーマンスが2〜3倍上がる ・静的解析もできるんで深く最適化出来る ・.NET(Mono)がアップデートされる。Microsoftと共同で互換性を担保 ・静的解析によりGCが減る(スコープが短い処理はスタックに置くとか?) ・とりあえずWebGL版が上手く行ったら他にも移植する ・AOTと同じ制約

    gigi-net
    gigi-net 2014/05/21
    最強に見える
  • C++テンプレートテクニック 第2版 を出します - Faith and Brave - C++で遊ぼう

    2009年に出版した書籍『C++テンプレートテクニック』の第2版を出版します。 C++テンプレートテクニック 第2版 - Amazon.co.jp C++テンプレートテクニック 第2版 - SBクリエイティブ 発売日は、2014年4月17日(木)です。 C++テンプレートテクニック 書は、プログラミング言語C++のテンプレート機能に関する技法を解説したです。 プログラムをより汎用的にしていくにあたって起きる、様々な問題への解法を提供します。 第2版の更新内容 第2版の主な更新は、C++11への対応です。C++11に追加された機能を使用した各種技法を掲載しています。C++03の技法で今もなお有用なものは残してあります。 第2版では、以下のような変更を行いました: 第1版の章「Extension Member Function」および「C++0xにおけるテンプレート」を削除 新章「コンセプ

    C++テンプレートテクニック 第2版 を出します - Faith and Brave - C++で遊ぼう
    gigi-net
    gigi-net 2014/03/27
    気になる
  • UE4のソースコードを落として読んでみた - Qiita

    はじめに 時は2014年。このげいむ業界はUnity帝国の統治により平和な日々(!)を過ごしていた。しかし突然、地底からUE4が・・・(伝記 戦争の歯車の冒頭より) でも実は、UEの歴史はすごく古いデス。 ※僕も実はアンリアル1の頃からMod作るためにちょこっとエディタ触ってました。ValveのSorceエンジンやQuakeエンジンのエディタより断然使いやすかったなぁ( ´∀`) GDC2014で歴史的発表がなされた。 【GDC 14】Epic Games、「Unreal Engine 4」にサブスクリプションモデルを導入―月額19ドルで全ての機能が利用可能に gamespark → 2015年3月3日から無料になりました\(^o^)/ え?今更オープンソース化?カーマック先生(Quake・Doom開発者・現Oculus CTO)は昔からやってたよ!あれちがう!?安いとは言え金取るのかよ!

    UE4のソースコードを落として読んでみた - Qiita
    gigi-net
    gigi-net 2014/03/26
    買うかな
  • ドワンゴに入社した

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

    gigi-net
    gigi-net 2014/02/13
    江添さんが!
  • C++でターミナルに画像を表示させる - いぐにさんにっき

    これはC++ Advent Calendar 2013 23日目の記事です。 目的: sshでリモートに接続して計算を行い、その結果を図として得たい場合、 図をダウンロードするしかないのですが、 いちいちダウンロードして画像ビューアに移ってという過程を経ずに ターミナル上で画像を表示させたいということが結構あります(私は)。 ターミナルを選びますが、Sixel Graphicsというものを使えばこれは可能です。 これをC++で利用する方法について書きます。 前提: ターミナルをSixel Graphics対応のものに変えること。 これが一番ハードル高いのですが、 WindowsならRloginが良いと思います。 http://nanno.dip.jp/softlib/man/rlogin/ 他の環境だとtanasinnですかね。 http://zuse.jp/tanasinn/userma

    C++でターミナルに画像を表示させる - いぐにさんにっき
    gigi-net
    gigi-net 2013/12/28
    便利tipsだ
  • 【cocos2d-x 3.0】binding-generatorでScript Bindingを自動化する方法 - Qiita

    cocos2d-x Advent Calendar 2013 12月15日の記事です。 まずは投稿が遅れましたことお詫び申し上げます。 この記事は? まだalpha版であるcocos2d-x 3.0では、さまざまな新機能が追加されています。 そのなかでも、従来は面倒だったScript Bindingが簡単に行えるユーティリティbinding-generatorをご紹介します。 今回は特にLua Bindingを例に説明します。 cocos2d-x 3.0 alpha 今年9月にcocos2d-x 3.0のalpha版が公開されました。 12/7に開催された『札幌C++勉強会 #5』において、cocos2d-x 3.0の新機能についてセッションを行いました。 Script Binding以外の変更点については以下のスライドをご覧ください。 cocos2d-x 2.xまでのLua Bindin

    【cocos2d-x 3.0】binding-generatorでScript Bindingを自動化する方法 - Qiita
    gigi-net
    gigi-net 2013/12/16
    cocos2d-x Advent Calendar書きました。ぜひ!