タグ

ブックマーク / cpplover.blogspot.com (17)

  • Googleの公開したAbseilライブラリの価値がわからない

    先日、GoogleはAbseilというライブラリを公開した。 abseil/abseil-cpp: Abseil Common Libraries (C++) その中身を見てみたが、どうもその価値がよくわからない。 その大半は、C++14/17風の標準ライブラリのC++11による実装だ。C++14はすでにGCCもClangも実装し終えており、C++17の完全な実装も時間の問題だ。このようなライブラリを使うことはむしろ最新のC++規格の普及を妨げる。 曰く、「Abseilは完全なC++14/17実装では標準ライブラリのtypedefになる」と。しかし、それで問題が解決するのであればさっさとC++コンパイラーのバージョンを挙げたほうがよい。 containerには変わり者がある。inlined_vector<T, N>はstd::stringのSSO(Small String Optimiza

    xxxxxeeeee
    xxxxxeeeee 2017/09/28
    お、absl出たのか
  • 闘会議2016のアナログゲームのとある運営スタッフの感想

    闘会議2016のアナログゲームのインスト要員として2日間運営スタッフとして入っていたので、その感想を書く。 筆者は江添亮、ドワンゴにエンジニアとして雇われている。ドワンゴのボードゲーム同好会のメンバーでもある。今年の闘会議でも、アナログゲームは設置される。もちろんカタンもある。カタンのインストをするために運営スタッフとして参加した。 今回の闘会議には不安が大きかった。なにしろ、今回のアナログゲームエリアには、30卓ほど立てるという予定である。1卓にスタッフを2人配置するとして、60人必要になる計算だ。60人ものボドゲがインストできるスタッフをどこから集めてくるというのか。あまりにも無謀すぎる。私が一切関わっていない会社の企画するイベントが失敗するのは私の知ったことではないが、カタンのインストが失敗し、カタンに悪い印象を与える事態だけは、ガチのカタンプレイヤーとして見過ごすことはできぬ。そこ

    xxxxxeeeee
    xxxxxeeeee 2016/02/03
    江添先生の熱さに触れることができて良文、全然どうでもいいんだけど京葉線と武蔵野線は三角形になってるよというのをよく念頭に置いておけば大丈夫!はい、鉄道好きの私は考えすぎてやはり乗り間違えた。
  • シェアハウスとタバコと暴力

    以下のようにまとめられている。 「煙草の煙から自身を守るためなら暴力もやむを得ない」のか - Togetterまとめ 何を書いても火に油を注ぎ、単に第三者の余興となるだけなのだが、私(江添)の視点で書いておこうと思う。 まず、妖怪ハウスの間取りについて説明しなければならない。妖怪ハウスにはリビングがあり、その横に和室がある。私はこの和室に住んでいる。リビングと和室に面してベランダが設置してある。このリビングと和室に面したベランダは禁煙である。かつ、室内に煙草の煙が流れこむことや、室内にタバコの吸い殻や灰をばらまくのも、極めて迷惑であり常識がない行為であると同意がなされている。 妖怪ハウスには、喫煙所として定められた、別のもっと大きなベランダがある。 28日の夕方過ぎ、なぜか自室の和室が煙たいことに気がついた。臭いは窓の外からやってくるようである。見ると、リビングと和室に面したベランダでタバ

    xxxxxeeeee
    xxxxxeeeee 2015/06/30
    タイトルが洒落てる
  • rm -rfしちゃったけどどうする

    rm -rf remains rm -rfの後に残りしもの 遊びのために、筆者は新しいLinuxサーバーを立ち上げて、rootでrm -rf /を実行して、何が残るかをみてみた。どうやら、今のrmというのは筆者のようなアホを相手にしなければならない未来に生きているようなので、実際に実行するには、--no-preserve-rootをつける必要があった。 # rm -rf --no-preserve-root / かかるおろかなる行為の後では、 /bin/ls /bin/cat /bin/chmod /usr/bin/file のような、偉大なるツールのたぐいはみな消え失せてしまった。まだ、ssh接続とbashセッションは生きているはずだ。つまり、bashの組み込みコマンドであるechoとかは残っているということだ。 Bashマクガイバーたれ root@rmrf:/# ls -bash: /

    rm -rfしちゃったけどどうする
    xxxxxeeeee
    xxxxxeeeee 2015/05/26
    Macでrm -rf $HOGE/して死にますた
  • 500マイル以上離れた場所にメールが送れないのだが

    http://web.mit.edu/jemorris/humor/500-miles From: Trey Harris <trey@sage.org> 今から私が書く話は、起こりようのない問題についてだ。この話を広く一般に公開してしまうのは惜しい。というのも、いい酒の話のネタになるからだ。この物語は、退屈な詳細や問題を隠すために、多少事実を変えていて、物語を面白く脚色している。 数年前、私はキャンパスのメールシステムを保守する仕事をしていて、統計学部の学部長から電話を受けた。 「大学の外にメールを送るのに不具合が発生しているのだが」 「どんな問題でしょう?」と私はたずねた。 「500マイル以上メールを送れないのだよ」と学部長は説明した。 私はラテを吹き出した。「何だって?」 「ここから500マイル以上離れた場所にメールを送信できないのだよ」と学部長は繰り返した。「実際は、もう少しあるの

    xxxxxeeeee
    xxxxxeeeee 2015/04/10
    いまならIXとかでまるで距離に関係ない結果になりそうだ
  • Dartすごい。マジすごい。美しい

    Dart : Structured web programming というわけで、Dartが発表されてからこのかた、Dartの規格を読んでいたのだが、これはすごい。マジですごい。ヤバイほどすごい。美しすぎる。 私が多少なりともかじっている言語は、C++Javascriptとアセンブリである。私は、もうこれ以上、学びたいと思う新言語が出てくるとは思っていなかった。たしかに、C#はWindowsでアプリを作るには面白そうだし、PythonやらRubyやらは、かなり人気だ。しかし、これらの言語を学びたいとは思わなかった。昔、Schmeに興味を持ち、SICPを買った。しかし、未だ綺麗なまま、棚の中に眠っている。Haskellに興味を示したこともあったが、やはり最初の感動が覚めると、学ぶ気にはならなかった。つまりは、わざわざ学ぶほどの魅力がなかったのだ。しかしどうやら、私は間違っていたようだ。D

    xxxxxeeeee
    xxxxxeeeee 2014/06/11
    最後の方ネタっぽい
  • みなさんスラッシュドットから出てこないほうがいいですよ。

    Objective-Cという汚らしい言語を長年強制し、プログラマーを絶望の淵に叩き込んでいたAppleが、とうとう新言語を発表した。名前はSwiftという。 iTunes - Books - The Swift Programming Language by Apple Inc. ただし、現時点で、Swift言語仕様書のダウンロードと閲覧に、Appleの独自仕様満載の不自由なデバイス、の上で動く不自由なOS、の上で動く不自由な閲覧ソフトウェアが必要だ。そのため、筆者は未だに言語仕様書を読めずにいる。これをもってこれをみると、Appleの新言語にかける姿勢が如実に現れていると言えよう。すなわち、Appleの不自由なシステム以外は、市場として考慮する必要がないということに違いない。事実、Objective-Cは、Appleの不自由なシステムでプログラミングするにあたって、仕方なく使わなければな

    xxxxxeeeee
    xxxxxeeeee 2014/06/03
    江添さんの自由偏向はいつも通りとしても、Apple叩いたらここまで信者が釣られるのな/例えばgolangとかRustみたいに世界とる気はないのな
  • ドワンゴに入社した

    そう。タイトル通りだ。筆者、江添亮はドワンゴに雇用された。一体、どのような経緯でドワンゴに入社するに至ったのか。また、どんな仕事をしているのか。それを説明するには、時系列を追って書いたほうがいいだろう。 2013年8月21日 ふとみると、以下のようなサブジェクトのメールが届いていた。 【ご相談】ドワンゴ主催の C++11, 14 に関する勉強会にスピーカーとしてご参加頂けないでしょうか C++11? C++14? なんと、日C++14などという単語を知っている企業があったのか。しかし・・・ドワンゴ? SPAMだろうか。いや、こんなにピンポイントなSPAMがあるわけがない。 それにしても解せないメールだ。ドワンゴといえば、もちろん、あの有名なニコニコ動画の企業だ。ニコニコ動画と言えばWebサイトだ。ニコニコ動画やその関連サービスの開発にC++を使っているのだろうか。いやまて、たしか子会社

    xxxxxeeeee
    xxxxxeeeee 2014/02/13
    まさかニュースなのでびっくり/エラい(こっちゃな)会社だ
  • XKCD What If: 致死量のニュートリノ放射ってどのくらいなの?っと

    超新星にどれだけ接近すれば、致死量のニュートリノ放射を浴びることができるの?っと (物理屋の事務所から聞こえてきたセリフ) 「致死量のニュートリノ放射」というセリフは、いかにも奇妙だ。私はこのセリフを耳にした後、何度も首をかしげざるを得なかった。 もし、読者が物理屋でなければ、読者にはさほど奇妙に聞こえないかも知れない。そこで、この驚くべき発想の意味をちょっとわかりやすく書いてみよう。 ニュートリノとは、幽霊のような粒子で、この世界とはほとんど干渉しない。試みに読者の手の平を観察せよ。毎秒10兆個ほどのニュートリノが太陽から降り注いでいるのだ。 読者が膨大なニュートリノの存在に気が付かない理由は、ニュートリノというものは、通常の物質とほとんど干渉しないからだ。平均して、このような大量のニュートリノは、数年に一回ぐらい、読者の体の一個の原子と衝突する[1]。 [1]: 読者が子供であれば頻度

    XKCD What If: 致死量のニュートリノ放射ってどのくらいなの?っと
    xxxxxeeeee
    xxxxxeeeee 2013/12/27
    面白い
  • 例外中に例外を投げるとか二重例外はエラーという俗説について

    いよいよC++の参考書の執筆も例外にまで到達した。例外は、規格の文面量だけで言えば短いが、詳細を解説するのは難しい。なにせ、まともに日語で解説しているは皆無だからだ。ついでに、規格の文面のバグも発見した。これはすでに報告済みなので、次のC++規格では修正されるはずだ。 ちなみに、"C++ 例外"で検索して出てくる情報の大半が間違っているか、十分な詳細を解説していない。責任は規格違反な実装、特にMSVCにある。MSVCの挙動が全てだと信じる愚者が、規格を参照せずMSVCの挙動をもとに解説を書いているからだ。 たとえば、例外をハンドルしていない状態でオペランドのないthrow式を実行すると、std::terminateが呼ばれる。 int main() { throw ; // std::terminateが呼ばれる } あるC++解説サイトでは、何故かstd::bad_exception

    xxxxxeeeee
    xxxxxeeeee 2013/04/29
    ようやく完成しそうとのこと
  • DNSの終焉が垣間見える、ぶっ飛んでて危険すぎるお名前.comの検閲事件

    忍者ツールズ全サービスが表示不可となる障害につきまして | ドメイン取るなら お名前.com ドメイン取得 年間280円~ 忍者TOOLSは、お名前.comというドメイン名レジストラにninja.co.jpのドメイン情報を管理させていた。忍者TOOLSは、ninja.co.jpというドメインを、自社の様々なサービスに使っていた。そのサービスは、忍者TOOLSのユーザーが使うものである。 さて、お名前.comの主張では、忍者TOOLSのユーザーがお名前.comの規約違反を起こしたために、ユーザーの規約違反は、すなわちそのユーザーのサービス提供元の規約違反であるとし、事前の協議や警告すらなしに、一方的にninja.co.jpのドメイン情報を消したそうだ。 これは恐ろしく危険な事件である。問題は、DNSが階層的な中央管理をされたシステムである以上、この問題は仕組み上どうしようもないという事である

    xxxxxeeeee
    xxxxxeeeee 2012/07/16
    valuedomainもGMOに買収されたので全く信用ならなくなった
  • C++11のstd::swapはC++03のstd::swapとは互換性がない

    C++11のstd::swapは、だいぶ大きく変更された。C++03までのswapは、<algorithm>にあり、CopyConstructibleかつAssignable(C++11のCopyAssignableに相当)を要求した。ところが、C++11では、<utility>に移されたあげく、MoveConstructibleかつMoveAssignableを要求するようになった。まるっきり別物になってしまっているのだ。果たして問題を起こさないものだろうか。おぼつかないものだ。 実装例は以下のようになる。 // C++03のswap template < typename T > void swap( T & a, T & b ) { T temp = a ; a = b ; b = temp ; } // C++11のswap template < typename T > void

    xxxxxeeeee
    xxxxxeeeee 2012/06/04
    swapがいろいろ変更になっているという話
  • 本の虫: Javaの権利にまつわるまとめがすごい

    The Java IP Story | Software Research and the Industry これはよくまとめてある。 これを読むと、GPLv3の重要性が分かるだろう。 旧Sunは、Javaの実装をGPLv2として公開した。GPLv2は、現在持ち上がっている問題に対処できない古いライセンスである。問題は特許だ。 Sunは、OpenJDKへの貢献は、著作権をSun側に引き渡すことという条件を課した。これにより、SunはGPLv2としてソフトウェアを公開しつつも、すべての著作権は保持しているため、プロプライエタリなライセンスでも提供できるというわけだ。 さらに、SunはJavaという商標も持っている。この商標を使うには、金を払ってJavaが規格準拠しているかどうか確かめる公式のテストをパスする必要がある。 金を払わないオープンソースなプロジェクトに対して、SunはJavaの商標

    xxxxxeeeee
    xxxxxeeeee 2012/04/24
    もはや言っている意味がわからないレベルのひどい話である>商標・特許
  • プログラミング認可制の日は近い

    高木浩光@自宅の日記 - ウイルス罪法案、バグ放置が提供罪に該当する事態は「ある」と法務省見解 政府は、バグ放置が罪せらるとの見解を発表した。また一歩、日が後退した瞬間である。 そもそも、放置とは何を言うのか。大部分のソフトウェアのバグフィクス、特にセキュリティに関するバグというのは、バグ発見者の善意によってなりたっている。バグを発見したものが、ソフトウェアに対して責任をもつ会社または個人に、秘密のうちに連絡をとり、バグの内容を伝える。責任者は、秘密裏のうちにバグを直し、アップデートパッチを公開する。バグの具体的な内容が公開されるのは、パッチ公開後である。この過程を経ずしていきなりバグが公になることを、ゼロデイという。ゼロデイは、マルウェアが未知のバグを利用していたり、またバグ発見者が、何らかの理由によって(たいていは、無責任な責任者にあきれて)、いきなり公開したりすることで起こる。 バ

    xxxxxeeeee
    xxxxxeeeee 2011/07/08
    アメリカ行きたい
  • 本の虫: なぜC++0xの正規表現は、ECMAScript準拠なのか

    Boostの正規表現ライブラリで使われている正規表現の文法は、Perl 5を参考としている。一方、C++0xに入る、正規表現の標準ライブラリは、ECMAScript準拠(プラスちいさな拡張機能)である。 オプションで、POSIXのbasic、またはexntended、それに加えて、grepの拡張機能に準拠した文法を使うこともできるが、POSIX規格は、常にLeftmost Longest ruleであり、Non greedy repeatsができないので、grepのようなツールならともかく、プログラミング言語の中で使う正規表現としては、貧弱である。 しかし、TR1は、Boostを参考に作られたはずである。なぜ、違うのか。 Perlの正規表現は、Javascriptプログラマから見ると、少々羨ましい機能がある。特に、independent sub-expressions, zero widt

    xxxxxeeeee
    xxxxxeeeee 2011/06/19
    そんな裏事情で…
  • 本の虫: C++0xの新しい乱数ライブラリ、random

    注意:最新ドラフトのN3000のrandomの規定は、コンセプトが却下される前の文面であり、今後、変更があると思われる。 C++は標準ライブラリが貧弱であるとは、よく言われることだ。ことに、乱数に関しては、貧弱の極みである。ご存じのように、C++は、Cから標準ライブラリを引き継いでいる。rand()だ。これは、0からRAND_MAXまでの値を返すと規定されている。RAND_MAXは実装によって異なるが、ほとんどの処理系では、32767である。現代の乱数需要を満たすには、あまりにも小さすぎる。 この状況を打破すべく、C++0xには新しい乱数のライブラリが盛り込まれた。randomである。これはBoostの実装を元にしているのだが、Boostとは少し違っている。今回はそのrandomを、浅く触りだけ紹介しようと思う。というのも、ライブラリの細かなメンバ関数の一つ一つまで説明するのは、甚だ冗長で

    xxxxxeeeee
    xxxxxeeeee 2011/06/19
    C++0xで乱数を扱う方法。綺麗。
  • 本の虫: rvalue reference 完全解説

    目的 この記事は、C++0xのrvalue referenceを完全に解説せんとする目的を以て書かれた。サンプルコードは最小に留め、エラー処理等は省いた。この記事さえ読めば、今日からrvalue referenceを恐れることなく使う物のC++0xプログラマになれるだろう。 lvalueとrvalueについて Cの時代では、lvalueとrvalueの違いは、代入演算子の左側か右側かという違いだけであった。つまり、left hand value, right hand valueの略である。従って、訳語も、左辺値、右辺値であった。C++においては、これはもはや正しくはない。従って、右辺値、左辺値というのも、誤訳である。それ故に、ここでは、これ以上、左辺値、右辺値という名称を使用しない。 誤解を恐れずにいえば、lvalueとは、明示的に実体のある、名前付きのオブジェクトであり、rvalue

    xxxxxeeeee
    xxxxxeeeee 2011/01/20
    いわゆる左辺値・右辺値/読み返してstd::forwardの必要性に気づいた
  • 1