メモの日々


2000年12月27日(水) 押し迫ってきた

  • ダイアログの後ろの絵を再描画するにはfrmUpdateEventを拾ってあげる必要があったのだ。拾うことで一応解決。
  • いまだにはかどりません。集中力がないのだ。
  • 書くことがあまりないのだ。思い出せない。

2001年12月27日(木) 大掃除の日か

会社

  • 12:00 掃除終えた。解析の人達はすごく掃除好きだ。

テレビ

  • なし

2002年12月27日(金) 京都中央信用金庫立てこもり爺さん逮捕

[life] 大掃除

会社の大掃除。あまりやる気なし。ほとんどさぼってちょこっと手伝った。イザというときのために段ボール箱を一つキープした。


2006年12月27日(水)

  • 昨日は大雨。今日は最高気温20度とか言っている。

[life] 健康診断を受けた

9月末に健康診断をタダで受診できるハガキが来ていたのだけれどずっとサボっていた。今日は暖かかったので意を決し病院へ。

まずは初診の申込書を書いて受付へ提出。暫く待つと紙の束と紙コップを渡され、院内のこことこことここを回って受診してくださいと説明を受けた。患者さんはたくさんいるけど、紙コップ持ってうろうろしているのはおれだけだ。

回る順番は自由で、最初に血液検査を受けることにした。採血される。右腕左腕好きな方と言われたのでなんとなく右腕から採血してもらった。終わると小さな絆創膏を張られて2分間押さえていろと言われる。

続いてレントゲンへ行った。Tシャツ姿になり写真撮られて終わり。次、心電図へ。ベッドに横になり心電図とられて終わり。次、尿を紙コップに取らないといけないのだが全く出る気配ないので後回し。最後に内科の窓口へ行けと言われていたので先にそちらへ行った。

すると先に血圧を測ってこいといわれたので血圧計の所へ行き自分で測る。この器械が右腕専用だったので右腕で測ったが、さっき採血したばかりの腕を圧迫されることになり傷口から血が吹き出るのではないかと冷や冷やした。大丈夫だったけど、採血は左腕ですべき或いは血圧は最初に測るべき、というのが教訓。

内科へ戻ると身長と体重を量られた。これが昔の銭湯にあったような古ーいタイプの体重計と身長計でちょっとガッカリ。この病院よくないかも。

最後に尿を取らねばならないがやっぱり出る気配がない。以前もこういうことあったなあ。こういうときはどうすればいいんだろう。とにかく、トイレの個室に篭り、瞑想し、なんとか搾り出した。ふー。

これでおしまい。来年結果を受け取りに行かねばならない。健康でありますように。

[life] 図書館へ行く

  • 闘うプログラマー 上/下 (G・パスカル・ザカリー)
  • サッカーマガジン 2006.11.14 「「スーパーゴール」100人の記憶」

を借りた。帰りにNHKの受信料と家賃を払い込んだ。

[book] 社長物語 (薄井ゆうじ)

4062096439 前回借りた本のことちょっとメモ。

フリーランスのイラストレータ森田がフリー仲間と会社を立ち上げ社長となって苦労する話。フリーのままいるか会社を作るかと悩む所は興味深いけど、物語は淡々と進んであまり盛り上がらない。でも続編も読みたい。3点。

[xrea][soft] pnamazuのバージョンを2006.12.23にした

バージョンアップしろとアナウンスが出ていたのでバージョンアップした。前回は問題あったけど、今回は大丈夫そう。パッチ取り込まれている模様。

やること

  • デザイン変更
  • 保険
  • 健康診断

2016年12月27日(火)

[c++] C++で型名とメンバ関数名を同じにしてみる

型名と変数名を同じにしたときの話を以前にメモしたが、型名とメンバ関数名を同じにしたときのGCCの挙動もメモ。型名を小文字で書いていると変数や関数や名前空間名との衝突が起こりがち。

サンプルコード

#include <iostream>

namespace ns {
  struct value {
    int v;
  };

  struct holder {
    value val;
    const value& value() const { return val; }
  };
}

int main() {
  ns::holder h{ns::value{100}};
  std::cout << h.value().v << std::endl;
}

このコードはclang 3.8だとコンパイルできるが、g++ 6.1では次のコンパイルエラーになる。

prog.cc:10:46: error: declaration of 'const ns::value& ns::holder::value() const' [-fpermissive]
     const value& value() const { return val; }
                                              ^
prog.cc:4:10: error: changes meaning of 'value' from 'struct ns::value' [-fpermissive]
   struct value {
          ^~~~~

名前空間名を補うとg++でもコンパイルできるようになる

次のように名前空間名を補って struct value を使うんだという意思を示すとg++でもコンパイルできる。

@@ -6,8 +6,8 @@
   };

   struct holder {
-    value val;
-    const value& value() const { return val; }
+    ns::value val;
+    const ns::value& value() const { return val; }
   };
 }

メンバ関数value()の宣言だけでなく、メンバ変数valの型にも名前空間名を補わないとコンパイルエラーになるのが分かりにくい。


2019年12月27日(金)

[dev][windows] Visual StudioでCMakeを使う

Visual Studio 2017にはCMakeがバンドルされており、IDEと連携してCMakeを使えるようになっている。公式ドキュメントが

にある。

プロジェクトを開く

Visual Studio 2017では次のようにしてCMakeList.txtからプロジェクト開くことができる(ソリューションファイルは使わない)。

  • [ファイル]→[開く]→[CMake]

CMakeList.txtを開くとcmakeコマンドが自動的に実行され、CMakeList.txtの内容に応じて[CMake]メニューから次のような操作を行えるようになる。

  • ビルド
  • コード分析
  • インストール
  • テスト
  • デバッグ
  • CMakeのキャッシュの操作

ビルドの成果物の出力先

ビルドの成果物の出力先は、デフォルトでは C:\Users\ユーザ名\CMakeBuilds のサブフォルダになる。サブフォルダのフォルダ名が分かりにくいので、メニューの [CMake]→[キャッシュ]→[キャッシュフォルダーを開く] を使って開くのがよさそう。

cmakeコマンドの再実行

cmakeコマンドを再実行したいときには、[CMake]→[キャッシュ]→[キャッシュフォルダーの削除]を実行した後[CMake]→[キャッシュ]→[生成]を行えばよい。

ビルド構成の設定

リリースビルドやデバッグビルドなどの設定や切り替えを行うには、CMakeSetting.jsonファイルを作成する。[CMake]→[CMakeの設定を変更]と辿るとファイルを生成できる。

CMakeSetting.jsonに複数の「構成」を定義することで、ツールバーのプルダウンメニューから構成を切り替えてビルドやデバッグができるようになる。

CMakeSetting.jsonで何を設定できるのかは次のドキュメントに書かれている。