フェルマータ

個人用のメモ。ソフトウェアの導入とかが多くなる予定。ライセンスの気になる方はこのブログに載せたコードは修正 BSD に準ずるものと考えてください。

cmake で github のレポジトリを登録したがコンパイルできない

経緯 Windows で CLion 使った開発を趣味でしているが表題の件でハマった。どういう状況でハマったかを書く。 コンパイラは MinGW を使用している Git は Windows でも Linux コマンドが使えるようなパスを通している cmake を使って github 上のレポジトリ…

作りたいもののポエム4

概要 shurabap.hatenablog.jp 4つ目、そろそろ実装に行きたい。 ところでこないだ真理を思い出したので設計が非常に単純になった。 唐突に真理を思い出したんだけど、音符一音一音に対するモーフィングとかいらないんだった。要件が一個落ちて簡単になるぞ…

作りたいもののポエム3

概要 shurabap.hatenablog.jp 一昨日からの続きやるよ。 作りたいもの UTAU 音源より表現力の高い音源形式 ↑のファイル読み書き部分 その他要件 既存リソースを活かすために UTAU 音源からインポートをできるようにする 波形情報と演奏情報とキャラクタ情報…

作りたいもののポエム2

概要 shurabap.hatenablog.jp 昨日の続きやるよ。 作りたいもの UTAU 音源より表現力の高い音源形式 ↑のファイル読み書き部分 とりあえず一旦ここまで書けたらいいこととする。(大きく作って死ぬことが多い気がする) その他要件 既存リソースを活かすため…

作りたいもののポエム

いきさつ 最近なにもプログラムを書いていなかった気がしてつらくなってきたので、なにか書くお題でも用意すればいいんじゃないかと思い立った。 作りたいもの UTAU 音源より表現力の高い音源形式 ↑のファイル読み書き部分 とりあえず一旦ここまで書けたらい…

Qt の QUndoStack の挙動

ポエム Qt には Undo framework があり、 QUndoStack に QUndoCommand を積んでいけば、いい感じに undo, redo できるようになる。 このときメモリが解放されるのかなど若干動作に癖というか、細かい部分の挙動の記述が少ないので記事にしておく。 Vitallium…

Qt のシグナルを一旦無効にする。

ポエム Qt の SIGNAL/SLOT は強力なんだが、 Undo, Redo を実装しようとしてシグナル止めて無いとユーザ編集と Undo, Redo によるモデルの変更が分からなくて Undo スタックがぶっ壊れるなと思ったので一旦シグナルを止める方法を調べた。 やり方 bool oldSt…

Qt の ui ファイルを cmake (CLion)から使う

ポエム 何度やっても QT_UIC_EXECUTABLE is missing といいよる cmake に愛想を尽かさず頑張った。 Qt の *.ui ファイルを使う方法がわかったので記事を書く。Qt 記事少なすぎでしょみんなもっと記事書いて!英語記事ですらほとんどないじゃん。 症状 以下の…

Qt を cmake から使う(CLion から使う)。

概要 Qt の開発というととりあえず QtCreator を使えばいいだろ、と思うのだが、最近 JetBrains から CLion という神ツールが発売された。 CLion: A power tool for a power languagewww.jetbrains.com 業務が IntelliJ だもので操作感が同じというのもある…

C++ でエラー処理書いてたら死にそうになったので Scala の Try パクってみた。

ポエム 業務で Scala を書いてるせいか、趣味で C++ 書いていると C++ のエラー処理のヤバさにつらみが溜まるし発狂したい。こういうのほんとうに辛い。 /** * path のファイルに書かれた文字列を返します。 * エラーがあった場合は err に値が書き込まれま…

qHash 関数と名前空間

概要 名前空間内で定義したクラスの qHash 関数の定義で手ひどい罠を踏んだので書いておく。 罠 これはダメなんだってさ。 namespace hoge { class Hoge { public: int foo; } } bool operator == (const hoge::Hoge &left, const hoge::Hoge &right) { retu…

音源のフォーマット考えている

Corpus-+--CorpusMetaInfo-+-name 音源名(言語別) | +-version バージョン名 | +-iconPath アイコンファイル名 | +-samplePath サンプル波形のファイル名 | +-author 製作者(言語別) | +-web 公開ページ | +-license ライセンス文(言語別) | +-descrip…

nginx の reqtime が 5 秒のところにピークがある。

応答遅延と思ったら… 5 秒のとこでピークあってどこかで詰まって返せてないのかなと思っていろいろ調べてたんだが、 User-Agent にもばらつきはないし、パスにもばらつきもないし原因が分からずずっと悩んでいた。 もう分からないので人に聞いたところ nginx…

C++ の参照型で多態は効くのか。

C++

経緯 ブログも久々だが C++ も久々で、書いているとどうにもポインタを触りたくないために、できるだけ参照型で物事を済ませたかった。のだが、そういえば参照型って多態効くんだっけと思って調べたがググらビリティが低かったので自分で調べた。 結果 効く…

Specs2 の Mockito でデフォルト引数つきのメソッドの動作定義がメソッドの呼び出し回数にカウントされる。

経緯 Scala でモックを使用したテストコードを書くときにに Mockito を使っている。Mockitoは大変便利で、 Specs2 で使う場合は以下のように簡単にメソッドの動作を定義できる。 val mockedHoge = mock[Hoge] val bar: Argument = new Argument() val result…

libsndfile + QIODevice で WAVE ファイルの読み書き

経緯 趣味で音声合成っぽいソフトウェアを作っている。いい加減音声ファイルの読み書き部を作らねばならなくなったのだが、C++ WAVE 読み込み 無料と Google 先生に聞いてもマッチョな結果しか返ってこない。これはこれで興味はあるが、音声合成のドメインに…

Qt の JSON 機能を少し使ってみた。

今趣味で書いているプログラムの保存形式をどうしようか悩んでいたのだが、 XML は前使ってみたとき煩雑だったしもう少し簡単な形式はないものかとネットを見ていたら、どうも Qt5.0 以降から JSON をサポートしているらしい。 QtCore 5.0: JSON Support in …

Google Mock で演算子オーバーロードしたクラスのモックを作る。

経緯 以前書いたGoogle Mock を導入してみた。に見るように 普通の仮想メンバ関数のモッキングは大変簡単なのだが、演算子のオーバーロードに対してはモッキングができないのかやり方を調べてみた。 問題 単純に仮想関数をモッキングするだけであれば、MOCK_…

Google Mock で参照を返す。

経緯 つい先程テストを書いていて、参照を返すタイプのメソッドをモッキングする際に失敗をしたのでメモしておく。 問題 こんな感じのクラスをモック化しようとする。 class MyClass { public: virtual ~MyClass(){ } virtual const Property &property() co…

UTAU 音源の仕様

経緯 UTAU 音源を読み込むプログラムを何回か書いているのだが、都度都度調べなおしているのが面倒になったので記事にまとめる。音源やプラグインを作るための情報ではなく、プログラムから音源を利用する際に必要な情報であることに注意。 構成 音源はディ…

Qt で複数のテストを同時に実行する。

経緯 Qt には QTest というテスト用ライブラリがついてくる。 QTestLib Manual http://qt-project.org/doc/qt-4.8/qtestlib-manual.html が、しかしデフォルトだと1プロジェクトに対して1テストだけしか実行できない。 Jenkins に Qt 用のプラグインあるの…

Google Mock を導入してみた。

経緯 ようやく余裕ができてきたのか家でときどきコードを書いている。 最近色んな書き方を覚えてきたので、せっかくだし書き方を試してみようと思って、C++ とQtを使ってこんなコードを書いた。 下手くそな英語は放っておいて欲しいが、このクラスはコンスト…