C++幼女先輩

プログラミング成分多め

C++

なぜ2019年にもなって非同期コネクションを使わず プロセスを無駄に浪費するスクリプト言語(Ruby、Python、PHP)のサービスが作られるのか

node.jsが出てもう10年になる nodeがベストではないが、nodeの登場で非同期を使うべきだとわかったはずである C10K問題に代表されるように、今は同時接続数が重要 ところが、同時接続数が少ない プロセス起動がたの PHP、Python、Rubyの開発が一向に減らない…

難案件思い出し。PS2のカーネル作ったお

PS2は本当に変態ハードウェアです 東芝のEmotionEngineが本当に変態で素晴らしすぎる!! 東芝株爆上げ!! ただし PS2は弱小な会社にはゲームエンジンがもらえず、分厚い本を読んで自分で作るか買うしかない 掲示板で回答してたらいきなり仕事になり、PS2の…

btcdが同期しない

Bitcoinのサーバとして オフィシャルの bitcoindがあります それの Go実装が btcd btcdでtestnetでは正しく動いたのですが mainnetだと 途中からブロック取得が出来なくなったので 結局 bitcoindにしました bitcoindはC++で実装されています また、BCHに関し…

ios開発にRustを使う 環境構築編

iOSでは、Objective-C(C++も書ける)、Swift しか使えません が、C++の 異言語間インタフェース FFIを使えば、Objectibe-CやSwiftから C++を通して Rustを実行出来ます そのための環境構築 とりあえず xcodeでのビルドを行う Rustのインストール Rust自体は…

nodeを愛人にします(C++は使ってます)

まずC++ 実は最近C++の仕事もしている RustやJava、Swift、Objective-CのFFIでC++を使っているので あとは Bitcoin等も経典はC++で書いているので 読む機会もある ただ、なんでもC++という時代ではないので、その他の言語を そろそろ会社としてのメインを決…

久々のAndroid開発(いきなりndkでOpenGL)序章

私には出来ませんって 断り続けたものの お客さんがかんたんに許してくれるわけでもなく 3回ほど断ったけど 結局 やってやんよ! というしか無かった Android開発 もちろん NDAの範囲で〜 の話だけど 具体的なことはかけないのだが NDKでAndroidの開発であ…

聖書(bitcoind)のソースを読み解く part1 ~ 全体像とドキュメント編

C++

自分へのメモですが・・ 私の解読のしかたは下手でおおざっぱです そして順番にこまかくよまず 大雑把にを繰り返します はじめに Bitcoinは仮想通貨の最初の実装で、SatoshiNakamotoの論文をもとに実装したものである 初期にはSatoshiNakamotoのコードがあり…

2年前に開発したC++のリアルタイムゲームサーバ

C++

はじめに 2年半ほどまえに、リアルタイム対戦ゲームの ソーシャルサーバとリアルタイムサーバの作成案件をもらった ソーシャルサーバは何度か作ったし余裕 リアルタイムサーバは、いわゆるMO的なゲームでロビーサーバを作ったり、レートでマッチングしたり、…

右辺値参照~完全転送まで100%理解するぞ! part8 おまけ。

おまけ 可変引数テンプレートの Parameter Bagを展開しながら 全部出力する #include<iostream> using namespace std; struct Concat{ template <class... T> void operator ()(T&&... t) { concat_(std::forward<T>(t)...); } private: void concat_() { } template <class Head, class... Tail> void concat_(He</class></t></class...></iostream>…

右辺値参照~完全転送まで100%理解するぞ! part7 可変引数テンプレート

前回の template<class T> void hoge(T&& x){ std::forward<T>(x); } universal referenceを使うことで、右辺値参照も左辺値参照もどちらも入ってくる std::forwardを使うことで、右辺値参照の場合は ムーブコンストラクタ、左辺値参照の場合は コピーコンストラクタ が</t></class>…

クラスのコンストラクタを可変長テンプレートにして ごにょごにょ

C++

前回なやんだ続きではあります 関数テンプレートは暗黙的インスタンス化可能だが、クラステンプレートは不可能 ならば コンストラクタを可変長テンプレートすればいいじゃない [Wandbox]三へ( へ՞ਊ ՞)へ ハッハッ #include<iostream> #include<sstream> using namespace std; struct</sstream></iostream>…

関数テンプレートは暗黙的インスタンス化できる

C++

[Wandbox]三へ( へ՞ਊ ՞)へ ハッハッ で終わりなんだけど、少し悩んでやっぱ無理そうだったのでメモ 関数テンプレートで実装出来るのだが、使い勝手や最適化など考えて 関数オブジェクトにしたかったが 関数とクラスの テンプレートの違いで出来なかった 追記:や…

右辺値参照~完全転送まで100%理解するぞ! part6 Universal Referenceと std::forward

やっと UniversalReferenceですよ! その前に復習 右辺値参照を引数にする時は あまり気にせず下記のようにするのが正しいのでしたね #include <iostream> using namespace std; class X{ public: // explicit付けられない! X(X& x){ cout << "copy" << endl; } X(X&&</iostream>…

右辺値参照~完全転送まで100%理解するぞ! part5 参照の圧縮(reference collapsing)

右辺値参照の山場の一つ Universal Referenceまであと一歩 参照の圧縮とは UniversalReferenceそのものだが 参照は(const等のストレージクラス除き)2種類しかない X& (左辺値参照)、X&&(右辺値参照) X&&& 等はエラーですし X& && 等、参照を重ねる事は出来…

右辺値参照~完全転送まで100%理解するぞ! part4 Universal Reference その前に

こうやって 人に見せようと書く事は自分の理解になる 復習DEATH 前回の復習。右辺値参照を関数の引数にするには 一見コピーに見えるが void hoge( X x ) とプロトタイプすればよい 呼び出し側で hoge( std::move(x) ) とすればムーブコンストラクタが使われ…

右辺値参照~完全転送まで100%理解するぞ! part3 関数呼び出し

いまいちまだ 納得していない部分もある(理解不足 実践的な関数呼び出し 右辺値参照はムーブセマンティクスのために使われる ムーブセマンティクスは主に ・ 所有権の移動 ・ コピーのコストを削減(ポインタのすげ替え) で使われる 所有権の移動 コピーさ…

右辺値参照~完全転送まで100%理解するぞ! part2 VisualStudioの罠

はじめに おまけ。 右辺値参照を理解するうえで大きな妨げになった VisualStudioでの挙動(バグ?? 詳細希望) 左辺値は暗黙で右辺値参照にキャスト出来ない バグ? の前に基礎から 左辺値(参照)は 左辺値にのみ 右辺値(参照)は 右辺値にのみ 暗黙キャスト…

右辺値参照~完全転送まで100%理解するぞ! part1 右辺値参照とは

TL;DR はじめに、私が右辺値参照を調査したのは、何番煎じかわからない 解説をしたいわけではなく VisualStudioでの動作の違い、universal referenceの特殊化したときの動き、複数の引数をuniversal referenceしたとき デフォルト引数・・・ など、応用した…

Vulkanほんと入門!

はじめに 3D APIは複数あります OpenGL系 OpenGL、OpenGLES、WebGL等 色々と出ているがどれもがクロスプラットフォーム 現状 Windows、Linux、Mac、Android、iOS、Web が動くのはこれしかない コンシュマーゲーム機でも採用されている 現在 WebGL1.0(GLES2.…

boost::bind (std::bind)を理解する

C++

はじめに C++で仕事をしていますが、C++って人によって理解度が違います 今回の案件はBoost.Asioで作れという指定なので、どうしてもC++色が強くなります stream、string、functional、bind、rambda はたまた triboolやtuple、各種コンテナと 他の作業員がC+…