こじつけの解釈でごり押ししてなんのメリットがあるのだろう. 周りに諭す人がいないのも情けない. こんな人たちに日本が70年かけて培ってきたポジションを壊してほしくない.
こじつけの解釈でごり押ししてなんのメリットがあるのだろう. 周りに諭す人がいないのも情けない. こんな人たちに日本が70年かけて培ってきたポジションを壊してほしくない.
C++WG小委員会参加
昼御飯を食べ損ねたので夜は多めに食べる.
crit-bitの勉強のため写経でcritbit.hppをいじって遊ぶ. std::set<std::string>とstd::unordered_set<std::string>の中間ぐらいの速度のようだ. sizeに上限を入れてNodeはもっとコンパクトにしたいな.
PKC2014を勉強する会に参加.
いろいろ勉強になった. ありがとうございます. いつも快適な会場を提供してくださってるIIJは月末から飯田橋に引っ越しするらしい.
『流星の絆』(東野圭吾)
かなり昔ドラマで見て最終回のどんでん返しに驚いた印象が強い. 今更だけど, ようやく原作を読んでみた. 流石にうまいなあ. ラストはどうなんだろう. 彼らの性格からすると自首しそうな気もするが.
VC14 CTPの1iってなんだ
C++14で入った複素数リテラル. 試しに
#include <iostream>
#include <complex>
int main()
{
using namespace std::literals::complex_literals;
std::complex<double> z = 1i;
std::cout << "z * z = " << z * z << std::endl;
}
ってやったら(1,0)って表示された. 駄目じゃん. 1iが1になってしまってる. include/complrexではoperator""(long long)でオーバーライドされてるのに呼ばれてないようだ. というか
int main() { return 1i; }
がコンパイルできてしまうのはおかしいなあ. iって何か整数を表すサフィックスだっけ. 1Iもコンパイルが通る.
『動的平衡2』(福岡伸一)
正直, つまらなかった. 渦巻きがどうとか音楽がどうこうとか観念的な話は, 別にそれ自体は構わないけど科学でもなんでもない. そもそも液体の流れだけででなく、その境界を作ってる固体(=体そのもの)が常に再構成されながら全体の形は保ってるというのが動的平衡と主張してるものじゃなかったのかな.
VCでvzeroupperを入れ忘れる最適化のバグ
VC14CTPではまだ直ってなかった「とってもややこしい発現条件だったVisual Studio 2013の/arch:AVXでコンパイルすると数学関数が遅くなることがある現象」はこの夏のVCで直されるそうな. cf. an AVX optimizer does not generate vzeroupper after dealing with ymm registers
宣言の無いtypedef
VC14 CTPをちょっと触ってみる. 1~2時間触っただけでもいくつか不具合を見つけた. 後で報告しておこう.
void f(int *p, size_t n)
{
p += n;
for (size_t i = -n; i != 0; i++) {
p[i] = 0;
}
}
が/O2でinternal errorなのはどうか. えらいregressionだな.
# 符号なしはラップラウンドするのが正しいのでこれは規格上ありなはず.
まあ自分ではこんなコード書かないけど.
今まで警告じゃなかったのも警告になってる部分がいくつか. 変数のhidingをいちいち指摘されるのが結構うっとうしい. あと
typedef enum{};
って規格上ありなんだねぇ. 知らなかった. VC14がWindows SDKのヘッダの中にそういうのがあって警告を出していた. 明らかに規格上のミスだろうと思う. Omitted typedef declaratorではそんな宣言を許す理由が無いとある. 15年ほどopenな状態なのか.
gdbが落ちるプログラム
いろいろ調べて開発中のコードを最小化したもの(コード自体に意味はない):
#include <utility>
#include <stdio.h>
struct BaseHolder { };
template<class Func>
struct Holder : public BaseHolder {
Func func;
explicit Holder(Func&& func)
: func(std::forward<Func>(func))
{
}
};
struct Runner {
BaseHolder *holder_;
template<class Func>
explicit Runner(Func && func)
: holder_(new Holder<Func>(func)) { }
~Runner() { delete holder_; }
};
template<class T>
void f(T &)
{
auto g =[&](){ };
Runner{g};
}
int main()
{
int a = 0;
f(a);
}
g++ crash-gdb.cpp -std=c++11 && gdb ./a.out
で落ちる. 落ちるgdbのバージョンは7.7や7.7.1. 7.4では落ちなかった. 実行前のシンボル読み込み中に落ちるのでそのあたりをBugzillaで探すとBug 16845が見つかった. レポジトリの最新版で試すと落ちなくなっていた. 扱ってるコードを変更するわけにもいかないのでgdbをupdateするか.
valgrindで動かないプログラム
別に凝ったことはしてないのにvalgrindで動かない現象に遭遇していろいろ調べてやっと原因がわかった. プログラム自体の情報を得るために"/proc/self/exe"を使っていたのだけど, その中身がvalgrind経由で実行するとvalgrindの本体(?)になってしまう. readlinkした先は正しくもとのプログラムを指しているのでそちらを使えばよい.
#include <stdio.h>
#include <cybozu/file.hpp>
#include <string>
int main()
{
const char *self = "/proc/self/exe";
printf("self size=%d\n", (int)cybozu::GetFileSize(self));
std::string path;
path.resize(4096);
int ret = readlink(self, &path[0], path.size() - 2);
if (ret < 0) {
perror("readlink");
return 1;
}
path.resize(ret);
printf("path=%s\n", path.c_str());
printf("path size=%d\n", (int)cybozu::GetFileSize(path));
}
% ls -l ./a.out -rwxr-xr-x 1 shigeo shigeo 26527 Jun 11 21:37 ./a.out // そのまま実行 % ./a.out self size=26527 path=/home/shigeo/a.out path size=26527 // valgrindで実行 self size=3800080 // 違うバイナリになってる path=/home/shigeo/a.out path size=26527
まあそらそうかという気もするけど悩んだ.
そして今度はgdb経由で起動するとsegvするプログラム. これも別にたいしたことはしてないのになぜだろう. どきどき.
構造体の区別
struct A {
int a;
#ifdef DEBUG_MODE
int info;
#endif
};
みたいなクラスがあってDEBUG_MODEのときはメンバーが増えていたのだけど, うっかりDEBUG_MODEありのobjファイルとなしのobjファイルをリンクして実行時に意味不明なエラーで落ちてしまった.
わかってしまえばしょうもないことなんだけど, 4~5年に一度ぐらい遭遇してる気がする. こういうのはどうするのがいいのだろう.
#ifdef DEBUG_MODE
#define A A_DEBUG
#endif
struct A {
int a;
#ifdef DEBUG_MODE
int info;
#endif
};
みたいに構造体の名前を変えてしまうのが一番安全かなあ. Aのポインタを持つCリンケージなグローバル関数はアウトだけど, 今回はC++の範囲だけだし.
DEBUG_MODEでビルドされたモジュール内のf()がthrow A_DEBUGしてたら, DEBUG_MODEされてないビルドでcatch (A&)すると受け損ねるな. まあ例外クラスの場合はstd::exception継承してそれでcatchしとけばいいか. うーん, あんまり安全とは言えない.
『カノン』(篠田節子)
20年前の学生時代の知人の死を機会に, 音楽教師の身の回りでおかしなことが起こりだす.
読んでて途中でオカルトっぽくなってきたので, なんだか面倒になって最後の方まですっとばす. そしたらまあまあ面白かったので元に戻って読み直す.
ホラーのジャンルだったらしいが, そこは別に怖くもなんともなくて, むしろラストの彼女の今後の生き方の決断の方が怖い.
CCS Injection脆弱性(CVE-2014-0224)発見の経緯についての紹介
菊池ですと書かれてると最初気がつかなかったが菊地さんだった.
『動的平衡』(福岡伸一)
まあまあ面白い. ただところどころ感性に訴えるだけで論理が飛躍してるような気が. 最終章はなんだかよくわからなかった.
NHKの技研公開2014
見に行ってきた. 8K一色. 蝶の鱗粉の色とかの再現性も凄い. うちのテレビは24インチでFull HDですらないんだが.
パネル展示をつらつらと見てたらパネルに「属性ベース暗号」が入ってるのを見かけておお?と思った. 放送通信連係サービスのためのプライバシー保護技術というやつだった. 産総研とやってるのかあ.
帰りは都立大学駅行きのバスを使う. 初めて乗ったけど電車の乗り換えを何度もしなくていいので便利だな.