ぷろみん

プログラミング的な内容を扱ってます

毎月開催、自分頑張れよ会議

概要 8月の振り返りと9月の目標について 2017年8月の目標 - ぷろみん 8月の振り返り とりあえず、無事フリーランスになれた。 Rustの勉強はちょっとずつ進めている。 英語は相変わらず単語アプリで遊ぶ程度。 結局ブログも書こう書こうと思ってたけどこんな…

2017年8月の目標

概要 マイルストーンを置かないと人間はどこまでも怠惰になるので。 月初めに立てて、月終わりに見直そう。 したいこと 大き過ぎで小目標に向かないのもとりあえず書きだす。 C++ 英語 ブログ 独自ドメイン Rust OSS ゲーム制作 クォータニオンの解説 文章書…

オイラー角と空間座標系

概要 複数の環境間での回転のインポート、エクスポートについて調べていたのですが、全然進まないので最小限のアウトプットを目指したメモです。 オイラー角 説明はWikipediaに投げます。 重要なのは単にオイラー角といっても12通りの表現方法があることです…

中途半端なbit幅の符号付整数を扱い易くするSign extending trick

C++

charじゃ大きすぎる charは何気に256もの数字を記録できます。 しかし、組み込みのような制限の厳しい環境では1bitでも送受信のデータは節約したいものです。 そんな時はbit演算を駆使してデータをやりとりすることになるのですが、困った状況というものがあ…

C++では典型的なif文は使わない方が良い

C++

よくある間違い あなたはコンテナから指定のデータを探す時に以下のようなコードを書いていませんか? for(int i = 0; i < 10; i++) { if(list[i] == 5) { // do something break; } } 正しい書き方 // #include <algorithm>が必要 auto result = std::find(list.cbegin</algorithm>…

Unityの新入力システム

Unityの入力システムは汎用性が低い Unityはマルチプラットホームという利点がありますが、入力システムの汎用性は低いです。 当然同一で処理したいタッチ処理とマウスクリック処理を別々に書かなければいけなかったり、マルチプレイヤーゲームで1プレイヤ…

Unityのフォルダ構成ベストプラクティス

モチベーション Unityでは多岐にわたるプロジェクトを考慮してフォルダ関係のサポートは薄く、プロジェクト毎に自由に設定しなければならない。 自由は素晴らしいことだが統一規格がないことは他の人のコードを読む時にもんにゃりする。 そこで、私が良いと…

そもそもがそもそもだった

概要 何故またこっちで書こうと思ったのか。 そもそもの動機 将来性を考えると独自ドメインでブログは運用すべき。 なぜなら資産であるブログ記事を検索サイトに模倣と思われず引っ越す方法がないからだ。 ブログを書くモチベーション 結局は多くの人に見て…

C++で無理矢理クロージャを使ってみる

C++

クロージャ 現在クロージャという表現を使う場合状態を持ったラムダを指す場合が多い気がします。 つまり、ワンライナーで書けるクラスといった感じです。これはC++では関数オブジェクト的な手法で似たようなことができますが、javascript程普通なものではあ…

C++の標準描画ライブラリに入るかもしれないCairoのサンプルをwindows向けにビルドしてみた

cairoとC++ 本の虫: Herb SutterがCairoのMLにC++標準規格にCairoを入れられないか打診中 環境 windows msys2 依存関係 $ pacman -S mingw-w64-x86_64-zlib $ pacman -S mingw-w64-x86_64-libpng $ pacman -S mingw-w64-x86_64-pixman $ pacman -S mingw-w64…

基本クラスの継承を考えたデストラクタの属性設定

C++

概要 この記事は間違った情報が多分に含まれるため https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#c35-a-base-class-destructor-should-be-either-public-and-virtual-or-protected-and-nonvirtual と https://github.com/…

シングルトンを使うのはやめよう

C++

概要 この記事はC++の作者Bjarne Stroustrup等によって書かれたコーディングガイドラインのAvoid singletonsの箇所の翻訳です。 https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Ri-singleton シングルトンを使うのはやめよ…

DirectX12をビルド可能なプロジェクトを作る

前回 ようやくWindows10にしたのでDX12プログラミングを始めてみた - ぷろみん ビルド New Project -> Win32 Project -> Empty Project 新しく生成されたフォルダに前回ビルドに成功したサンプルの.cppと.hをコピーしてきます。 Solution Explorerのファイル…

ようやくWindows10にしたのでDX12プログラミングを始めてみた

概要 Windows10にしたらまず最初にすべき事といえば・・・ そう、DirectX12プログラミングですよね。 今回はその導入をやってみたのでメモしておきます。 Visual Studioのアップグレード 始めから入ってない人もここで入れるので一緒です。 Direct3D12 開発…

git-flowとhubコマンドを使ってCUIでgithubを活用する

github/hubコマンドを使ってみた - ぷろみんの続きです 概要 git-flowとhubを使います。 インストール $ sudo apt-get install -y git-flow 初期化 $ mkdir foo $ cd foo # hub導入済み $ git init -g $ git flow init # 質問には全部エンター $ git create …

github/hubコマンドを使ってみた

概要 githubをCUIで操作できるhubコマンドの使い方や困った事をメモしました。 環境 debian インストール まず、ビルドにgoが必要なのでインストールします。 私の場合はansibleで入れました。 こんなややこしい方法取らずに適当な方法でインストールした方…

gitの最新版をビルドする

環境 https://atlas.hashicorp.com/ARTACK/boxes/debian-jessieで作成されたdebianのboxを使っています。 $ sudo aptitude update $ sudo aptitude -y install git $ sudo aptitude -y install libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-d…

debianでglfwをコンパイルしてwindows向けバイナリを作成する

概要 windows環境での話です。 最近msys-gitやmysy2を使ったりで環境変数やら実行バイナリがごちゃごちゃしてきてしまったので、実験用の環境が欲しくなったので仮想化してみます。 事前準備 管理者権限が必要なパッケージもあります。 chocolatly https://c…

windows.hが必要ないwindows GUIアプリケーションの作り方

概要 int WINAPI WinMainというエントリポイントにも関わらずヘッダが必要な関数があります。 コンソールアプリケーションでプロジェクトを作るとint main()から始める事ができるが、アプリケーションの動作中ずっと不要なコンソールが出現したままになりま…

Concept Lite(軽量コンセプト)で出来る事

C++

概要 gcc6.0にてConcept Liteのコンパイルができるようになったので、色々と触ってみました。 wandboxを利用すれば簡単に試す事ができます。 [Wandbox]三へ( へ՞ਊ ՞)へ ハッハッ 書き方 conceptはconstexprな関数や変数としても解釈されるので以下の書き方は両方…

pacmanでglfwを入れる

pacmanでライブラリも入れられるのに気付いていませんでした。 # glfwのパッケージを探す $pacman -Ss glfw mingw32/mingw-w64-i686-glfw 3.1.1-1 A free, open source, portable framework for OpenGL application development (mingw-w64) mingw64/mingw-w…

glewとglfw環境の構築

私の環境はwindows上のmsys2-mingwです。この構成の場合のglfwのlinux向けライブラリの作成方法は分かりませんでした。 存在しないコマンドは適宜pacman -Sで入れてください。 失敗例(msys2-mingw) まず、glewを導入します。 $git clone https://github.com/…

std::vectorの正しい使い方

C++

イテレータ無効化ルール イテレータは容易に無効化されます。 Iterator Invalidation Rules (C++0x) 例えばvectorはコンテナサイズよりも要素が増えた場合、要素が取り除かれた場合にイテレータは無効化されます。 なので、基本的にイテレータが無効化される…

privateコンストラクタじゃなくてDefaulted and Deleted Functionsを使おう

C++

概要 参考 Explicitly Defaulted and Deleted Functions privateコンストラクタによるコピー不可クラスにはいくつかの問題があります。 コピーコンストラクタをprivateにするとコンストラクタが必要になる struct NonCopyable { // 何もしない場合でもコンス…

git for windowsからmsys gitに移行しました。

モチベーション 最近サーバを触り始めたので、ConEmuを導入してみました。 フォントや使い心地に概ね満足していたのですが、ローカルでvimを起動すると^Mが付くエラーが大量に出てしまいました。 NeoBundle関係が大体使えなくなってしまっていました。 Kaori…

Visual Studio Community 2015のデフォルトテーマ変更

VS Community 2015をインストールしたら、また白くなっていたので黒に戻そうとしましたが、どこから設定するか調べるのに思ったより手こずったのでメモしときます。 Tools -> Options -> Environment -> General -> Color Theme 一番上にあるのに気付かなか…

静的optional

C++

モチベーション ヘッダの依存性を減らしたい(コンパイラファイアウォールを強くしたい) しかし、動的メモリ確保を行いたくない おしいoptional optionalは静的確保できるポインタの様な物です。 静的型をnullableにする為に使われます。 後でコンストラク…

Caps LockキーをCtrlに置換する

Windowsでの話です。 ソフト入れたり大げさな事せずにできないかと調べたら丁度良い物がありました。 www.edandersen.com Windowsキー+Rで出現する「ファイル名を指定して実行」でpowershellと打ち込んでOKをクリック 立ち上がった青い画面のウィンドウに…

修正:C++のAbstractFactoryはvirtualを使わない

C++

C++のAbstractFactoryはvirtualを使わない - ぷろみん 前回のが抽象化できてない事が発覚したので修正しました。 前回のに修正を乗っけようと思ったのですが、そうするとMixinらへんも関係無くなるので新しいのにしておきました。 抽象化 #include<iostream> namespace</iostream>…

C++のAbstractFactoryはvirtualを使わない

C++

抽象化ができてなかったので修正しました。 修正:C++のAbstractFactoryはvirtualを使わない - ぷろみん 継承 C++では出来る限り継承は使わない方が良いです。 理由としては結びつきが強すぎるからです。 メンバに持って目的の挙動を達成できるのなら、そち…