2017年07月17日

boost::regexとstd::regex(tr1)、どっちを使っていこう?

去年の10月3日に、Visual C++ 2010には、STLにregex(正規表現)ライブラリが入っていたことに気づき、現時点ではboost::regex側が使われていることが確定して、10ヶ月くらいそのことを忘れていました。

STLのregex (以後はstd::regexと呼ぶ)と、boost::regexのどちらを使っていくべきか、その機能の違いや、exe生成後のサイズの比較を行い、今後どちらを使っていこうか考えようとしていたのでした。

Visual Studio 2010に入っているstd::regex(tr1)と、最新のboost::regexを比べてみると、明確な違いとしては次の項目が挙がります。

  • 文法の違い
    boost::regexの正規表現の文法はperlのものが採用されているが、std::regexの正規表現の文法はデフォルトでECMAScriptのものが採用されている。後者の方が文法の定義がしっかりしているとのこと。
  • exeファイルのサイズ
    boost::regexをリンクしたときより、std::regexをリンクしたときの方が、exeファイルのサイズが小さくなる。
  • regexのコンストラクタの引数に指定できるフラグ
    boost::regexにはデフォルト指定としてregex::normalが存在するが、std::regexには存在しない。
    regex::icaseだけを指定すると、マッチが行われない。regex::ECMAScriptもあわせて指定しなければならない。

  • マッチに関するフラグ
    boost::regexにはregex_constants::match_single_lineおよびmatch_not_dot_newlineが存在するが、std::regexには存在しない。

いずれも、Visual Studio 2010に入っているstd::regexに関する比較になります。
別のバージョンや処理系になれば、exeファイルのサイズ比較結果やフラグの指定方法も変わってくると考えられます。

例えば、regex::icaseだけを指定した場合にマッチが行われない問題は、C++11までの規則に起因する問題であり、C++14の規則に従っているバージョンならばこの問題が起きないようです。

また、Visual Studio 2010よりも後のバージョンであれば、regex_constants::match_single_line(の逆)に相当する別の定数が定義されているそうです。

なお、他の処理系では、wregex (basic_regex<wchar_t>のこと) を使う場合、日本語が正しく取り扱えないことがあったそうですが、Visual Studio 2010では正しく扱えていました。


続きを読む
posted by ayacy at 00:00 | Comment(0) | TrackBack(0) | プログラミング

2017年07月16日

ドラえもんって結構エグイ。セワシの発想は闇が深い。

先日、ケーブルテレビで放送されていた最近のドラえもんを見ていました。
最近とは言っても、新シリーズの放送開始は2005年なので、かれこれ12年も経っているんですけどね。
自分の育った時代で見ていたのは旧ドラえもん(日テレ番ではなくテレ朝1979〜2005年3月のもの)なので、現行のシリーズのことを、どうしても新シリーズと呼んでしまう。

んで、ケーブルテレビで放送されていた新シリーズを見ていたのですが、なんというか、ジャイアンによる、のび太への八つ当たりが酷いシーンがけっこう多い。
ジャイアンをのび太が虐めることにより問題が発生し、ドラえもんの秘密道具による問題解決のきっかけとなることで物語の起承転結が築かれるパターンなわけですけどね。

のび太はよくがんばって堪え忍んでいるよなぁ、と。
ドラえもんが来なかったはずの歴史では、秘密道具による問題解決すら無かったわけで、堪え忍ぶのはさらに大変だったはず。
両親は救いの手を差し伸べなかったようだし、それどころか、パパはのび太のことをさらに責めるようなことを言っていたこともあったし。
学校の先生も救いの手を差し伸べる様子はないし、それよりも成績が悪いことの方が気になっているようだし。
学校現場やスクールカーストの描き方としては、かなりヤバイものになっていますね。

昔、見ていたときはそうは思わなかったけど、ドラえもんって、そういう部分でけっこうエグい描かれ方がしていることが多いんですね。


そんな状況を改善し、自らの世代にまで及んでいる悪夢から解放されようと、22世紀からセワシくんがネコ型ロボットを現代に送り込んでくるわけですけど、これもまたやり方がエグイ。
改変前世界では、のび太はジャイ子と結婚していることになっています。
セワシはのび太のことを「おじいちゃん」と呼ぶので、ジャイ子は「おばあちゃん」だったはずなんですが、そんな「おばあちゃん」を自らの家系図から排除したいと思えてしまうところには、相当な深い闇を感じますね。
そんなにもセワシはジャイ子に恨みがあるのか? ジャイ子はセワシを酷く虐めていたとか?
のび太とジャイ子の結婚を無効化させようと思うに至る経緯を考えると、なんだか暗い気分になってきますね。

また、セワシによる歴史改変を、タイムパトロールが見逃していると思われる点も、不思議ですね。
3通りの解釈ができると思っています。

  • のび太とジャイ子が結婚することが、結果的に人類の破滅に繋がるくらいの公益に反する結果をもたらすことが分かっているため、公益の観点から見逃すことが妥当と判断された。
  • セワシは歴史改変で相当な余剰利益を得られる状態になっており、タイムパトロールに袖の下を送り続けている。
  • 実はドラえもんの物語は、セワシの家にタイムパトロールが突入するまでの、わずかの間に生じた時間線を描いた儚い物語である。未来でタイムパトロールが突入すれば、この時間線は消滅する運命にある。

どこの大学だったか、ドラえもんを研究する「ドラえもん学」みたいなのを立ち上げていた教授がいたはず。
その人なら、良い回答を導けているのかな。


posted by ayacy at 00:00 | Comment(0) | TrackBack(0) | アニメ

2017年07月15日

不健康と分かっているけど人間ドックへ行ってくる

35歳になる歳から人間ドックを受診しているから、今回で4回目の受診になります。
健康診断の時からそうですが、肝臓の値から見て不健康であることがわかっていながら受診しているので、不健康診断ですかね。

胃の検査では、胃カメラとバリウムではそれぞれ判明することが異なるということで、バリウムと胃カメラを相互に行うようにしています。
(ただし、初年度はバリウムを飲んだものの、ピロリ菌が見つかり、その除去に保険適用するために胃カメラを入れる必要があったため、バリウムと胃カメラの両方を行いました)

で、今年は胃カメラの番。

ちなみに一昨年、「鼻からの胃カメラは苦しくないらしい」と聞き、試したものの、花粉症の時期のためか鼻の穴が細くなっており、胃カメラが鼻を通らず、結局、口からの胃カメラとなりました。

というわけで今回は7月中旬に「鼻から胃カメラ」に再挑戦。さてどうなるか。



…ダメでした。左の鼻の穴がダメ。右の鼻の穴もダメ。
結局、オエオエ言いながら口から胃カメラを入れました。

両鼻の穴を先に試したからなのか、鼻の穴が鼻水で詰まってしまって、鼻詰まりのまま胃カメラを飲んで呼吸が苦しい。
ヤベェ。
死ぬかと思った。

まぁ、胃カメラを飲むときは、死ぬかと思わないときはなかったけど。


以前は、腕に針を刺すのが嫌だったので、健康診断最大のイベントは採血だったこともありましたが、最近では最大のイベントは胃の検査ですね。毎回、死ぬかと思ってしまう。

子供の頃は、予防接種とかで腕に針を刺すのがホントに嫌だった。
ほんの数秒のことなのに嫌だった。

大人になると、「一日が過ぎるのが早く感じる」とよく言われるように、子供の頃と比べて時間の経過が早く感じるためか、腕に数秒間、針を刺すくらいならどうってことなくなりましたね。

逆に、胃カメラを入れる時間は長いので、我慢する時間も長く、嫌なんですよね。

来年は順番通り、バリウムにしよう。
再来年は、もう鼻から胃カメラは試さず、最初から口から胃カメラにしよう。そうしよう。



posted by ayacy at 00:00 | Comment(0) | TrackBack(0) | 日記