タグ

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

  • 本の虫: 記録からみるLinus TorvalsのC++観

    On Wed, 5 Sep 2007, Dmitry Kakurin wrote: > > Gitのソースコードを始めてみた時、2つのことが頭にひっかかった。 > 1. C++じゃなくて純粋なC。理由は不明。移植性とか言わないでよ。 > クソだ。 クソまみれなのはオメーの方だ。 C++は悲惨な言語だ。しかも、少なからぬ数のプログラマーが使っていて、完全無欠のどうしようもないクソを生成するのがめちゃめちゃ簡単になっているという点で、よけいに悲惨だ。マジで、Cを選択する理由が「何もなかった」としてもだ、C++プログラマー避けになるというだけで、Cを使う大義名分になる。 つまりだ:Cの選択は唯一のまともな選択なんだよ。Miles Baderがふざけて、「いやがらせによる追い返し目的」なんていってたが、実際のところ正しい。俺の出した結論では、プロジェクトにCよりC++を使いたがるプログラマーは、む

    goinger
    goinger 2015/10/15
  • 本の虫: rvalue reference 完全解説

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

    goinger
    goinger 2015/07/13
  • 本の虫: lambda 完全解説

    目的 この記事は、C++0xのlambdaを完全に解説せんとする目的を以て書かれた。サンプルコードは最小に留め、エラー処理等は省いた。この記事さえ読めば、今日からlambdaを恐れることなく使う物のC++0xプログラマになれるだろう。 lambdaとは何ぞや lambdaである。あるものは、lambda関数、あるいは無名関数という名称を使っている。いったいlambdaとは何なのか。 lambdaは関数である。また、特に名前はない。したがって、lambda関数、無名関数と呼ぶのは、間違ってはいない。しかしここでは、単にlambdaと呼ぶことにする。 lambdaを定義しよう lambdaは関数オブジェクトである。lambdaは関数オブジェクトである。これはとても大事なので二度書いた。lambdaは関数オブジェクト以外の何物でもない。ところが不思議なことに、皆lambdaが単なる関数オブジェ

    goinger
    goinger 2015/04/13
  • シニアエンジニアによるガラケー大戦回顧録に参加した

    シニアエンジニアによるガラケー大戦回顧録 : ATNDに参加した。 この会合の主旨としては、当時の邪悪で不自由極まりないガラケーの開発姿勢が、如何に悲惨で惨めで肥溜めの中の蛭のようなものだったかを、非公開の会合で語ろうというものだ ガラケーの開発では、技術的に誤っている手法が実に多く使われていた。なるほど、不自由で貧弱なガラケーの実装が規格準拠しておらずバグだらけだったこともあろう。それにしても、ガラケーとは関係がないサーバーの中だけで完結する場所におけるクソもあった。何故そんなことになってしまったのか。 理由は、情報が公に出せず、したがって共有されなかったことだ。情報が共有されないため、表立って議論や相談が出来ない。その状態でかろうじて見つけたちっぽけな情報を元に、技術的に極めて劣っていながらも、何とか動くものを作り出していた。そして、その動くものを、正しいやり方だと勘違いしていたのだ。

    goinger
    goinger 2014/06/10
  • 超会議3の超チューニング祭の感想

    さて、超チューニング祭が終わったので、感想を書こうと思う。すでに、参加者の中で、感想を書いている人もいる。 レポート - 超チューニング祭で努力賞(最速賞)をとるためにやったこと - Qiita ニコ動 超チューニング祭で最優秀賞もらいました 超チューニング祭に参加した - masarakki's blog JavaScript - 超チューニング祭に参加&表彰した - Qiita kmizu/slide_cho_tuning また、いつの間に行ったのか、優勝者に取材したところもあるらしい。 『ニコ超3』の超チューニング祭で、“創世神”戀塚昭彦氏を上回ったカップルが見せたバランス感覚 - エンジニアtype さて、筆者の視点からみた超チューニング祭はどうだったか。 そもそも、私がスタッフとして配置されるブースは、超時空ニコニコ研究所であるはずだった。しかし、超会議にさかのぼること三週間前、

    goinger
    goinger 2014/04/30
  • 2014-02-post-Issaquahのレビュー: N3900-3909

    2014-02-post-Issaquah mailingsが公開された。 最新のドラフトは、N3936となった。 [一発目から気分の悪いPDF] N3900: WG21 2014-01-31 Telecon Minutes 2014年1月31日に行われた電話会議の議事録。 [二発目にも気分を害するPDF] N3901: Minutes (February 2014) WG21 Meeting No. 57 N3902: Minutes (February 2014) PL22.16 Meeting No. 62 2014年2月15日に、米国ワシントン州Issaquahで開かれた国際会議の議事録。 N3903: C++ FCD Comment Status FCDに対するNBコメントへの返答一覧。 スイス(・∀・)< C++14はバグ修正リリースとマイナー新機能のはずだろ。標準規格の品質を

    goinger
    goinger 2014/03/25
  • ドワンゴに入社した

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

    goinger
    goinger 2014/02/14
  • リーナス・トーバルズ、セキュアブート鍵をカーネルに含めることを一蹴、曰く「おめーら、フェラ大会じゃねーんだぞ」

    リーナス・トーバルズ、セキュアブート鍵をカーネルに含めることを一蹴、曰く「おめーら、フェラ大会じゃねーんだぞ」 まず、Red HatのDavid Howellsが、マイクロソフトによって署名されたセキュアブート鍵をカーネルに含めてくれるよう、MLで要請した。 ようリーナス。 このパッチセットをpullしてくんね? セキュアブートモードで動くカーネルに、鍵を動的に追加する機能。鍵をロードするには、新しい鍵はすでに持っていて、信頼されている鍵で署名されている必要がある。この「すでに持っている」ところの鍵は、カーネルに組み込まれているものや、UEFIデータベースにあるものや、あるいは暗号ハードウェアのものが含まれる。 で、"keyctl add"は署名されたX.509認証を受け付けるのだけど、マイクロソフトの署名サービスは、EFI PEバイナリしか署名してくれないんだ。 LKML: David

    goinger
    goinger 2013/09/19
  • ハードウェア乱数生成器は信頼できるか

    How secure is Linux's random number generator? | Hacker News Hacker Newsで話題になっていたので。 主に暗号用途には、予測不可能な乱数が必要となる。予測不可能というのは、実装と内部状態が知られていても、なお将来の乱数が予測できないということだ。 たとえば、擬似乱数としてよく使われる線形合同法(Linear congruential generator)は、以下のように書ける。 namespace lcg { thread_local unsigned int seed ; void srand( unsigned int seed ) { lcg::seed = seed ; } int rand( void ) { // glibcの使っている値を拝借 seed = (1103515245 * seed + 12345

    goinger
    goinger 2013/07/18
  • ますますクリエイティブコモンズが変な方向へ

    「警察の萎縮効果狙う」 赤松健さん、2次創作同人守るための「黙認」ライセンス提案 (1/2) - ITmedia ニュース ただでさえ誤解を招きやすいクリエイティブ・コモンズがますます誤解を招きやすい方向に進もうとしている。 まず、「クリエイティブコモンズ」というライセンスはない。実際には、CC-BY(著作者表記)を基として、NC(非商用)、ND(非派生)、SA(コピーレフト)のオプションをつけて使うライセンス集であり、組み合わせ次第で非互換なライセンスになる。 このような非互換なライセンス集を、単にクリエイティブコモンズと呼ぶのは誤解を招き危険である。しかも、一部の条件であるNCやNDを使うと、それ以上の創作性が阻害される。商業利用や派生を禁止してクリエイティブとは何事か。ノンクリエイティブとかアンチクリエイティブに改名すべきである。 リンク先の記事によれば、 赤松さんとともにイベント

    goinger
    goinger 2013/07/04
  • UbisoftのDRMにバックドアがある件

    Full Disclosure: Re: AxMan ActiveX fuzzing <== Memory Corruption PoC どうも実証されたようなので書くことにする。 UbisoftのゲームとともにインストールされるDRMは、ブラウザのプラグインをインストールする。そのプラグインには、バックドアか、あるいは想像を絶する阿呆の手によるセキュリティーホールが仕掛けられている。 OBJECT要素のtypeプロパティを"application/x-uplaypc"とすると、その要素のopenというプロパティを関数呼び出しして、BASE64でエンコードしたパスを与えることによって、パスで指定された任意のファイルを実行できる。 もちろん、著作権に関する世界知的所有権機関条約と国内法の整備により、DRMを回避するのは違法である。ゆえに、Ubisoftのゲームを遊ぶ人間は、いかにバックドアが

    goinger
    goinger 2012/08/01
  • gccにconstexprが実装された

    GCC 4.6に、constexprが実装された。constexprについては、特に難しいことはない。単に、関数やクラスを、コンパイル時定数にできるというだけの話である。ともかく、せっかくなので使ってみる。この機能は、細々と解説するより、実際にコードを示したほうが分かりやすいであろう。 まずは、constexprな変数である。 int main() { constexpr int a = 0 ; // OK int value = 0 ; constexpr int b = value ; // エラー const int c = value ; // OK } constexpr指定された変数は、必ずコンパイル時定数になる。変数の初期化子は、定数式でなければならない。constとの違いは、constはコンパイル時定数でなくてもよいのである。constは、初期化子が定数式の場合、定数式にな

    goinger
    goinger 2012/06/19
  • 60%の人間はプログラミングの素質がない

    Coding Horror: Please Don't Learn to Code Please Understand Learning to Code Coding Horrorで有名なJeff Atwordが、ある州知事が今年の目標としてプログラミングを習得することを挙げていることに対し、そもそも税金を払う我々市民は、政治家にはプログラミング習得以上に重要な、政治家にしかできない問題の解決を望む、よってプログラミングを学ぶのをやめてくれという記事を書いた。これに対して、反論が多数上がっているが、Jeffも読んでいるある論文をあげて、この議論の参加するためには、必ずこの論文を知っておくべきであると書いた人がいる。この論文は有名で、非常に興味深いので、全プログラマーが読むべきである。 ふたこぶラクダという名前で知られている有名な論文がある。この論文では、60%の人間にプログラミングの素質が

    goinger
    goinger 2012/05/17
  • 本の虫: リチャード・ストールマンは常に正しかった

    Richard Stallman Was Right All Along 去年の年末頃、オバマ大統領はテロリストの容疑者を裁判や令状なしに拘束できる法に署名した。世界中で起こっている平和的なオキュパイ運動家は、権力者からテロリストだとレッテル貼りをされている。通信を監視するSOPAを成立させるような圧力もある。30年前、リチャード・ストールマンがGNUプロジェクトを立ち上げてからこのかた30年間、彼の極端な物の見方は、馬鹿げていてパラノイアじみていると嘲笑されたものだ。しかし、この2012年において、パラノイアだと思われていた予測が、現実のものになろうとしている。 ごく最近まで、リチャード・ストールマンを世間離れしたパラノイアの狂人だと一笑に付すことは簡単であった。まあ、いってみれば、奴は古臭いコンピューターヒッピーだ。地下室に引きこもって自分の世界に浸っているパソコンオタクだ。あのヒゲ、

    goinger
    goinger 2012/01/14
  • C++0xにおけるenable_ifの新しい使い方

    現在、BoostのML上で、C++0x上における、興味深いenable_ifの使い方が示されている。簡単にいうと、こうなる。 // Never defined extern void * enabler ; template < typename T, typename std::enable_if< std::is_arithmetic<T>::value >::type *& = enabler > void f( T ) { std::cout << "T is arithmetic" << std::endl ;} template < typename T, typename std::enable_if< std::is_pointer<T>::value >::type *& = enabler > void f( T ) { std::cout << "T is point

    goinger
    goinger 2011/06/09
  • 本の虫: C++0xによるコンパイル時の配列生成

    Don't do this at home. I am professional. 絶対にマネをしてはいけません。 コンパイルタイムプログラミング - 主題のない日記 昨晩、これと同じことがC++で出来るかどうか質問を受けた。5という数字が与えられたときに、0,1,2,2,3,3,3,4,4,4,4,5,5,5,5,5という数列をコンパイル時に生成できるかという問題である。 その時は、プリプロセッサー以外に、どうにもうまい実装方法が思いつかなかった。問題は、再帰を止める方法だ。しかし、今朝、改めて問題を考えると、頑張ればなんとかなるのではないかとも思った。 まず、プリプロセッサーによる実装を考えよう。これは、BOOST.Preprocessorを使えば、簡単に実装できる。簡単というのは、C++のプロにとって簡単という意味である。言うまでもなく、プリプロセッサーは邪道であり、中でもBoost

    goinger
    goinger 2010/12/24
  • これはひどい

    経済産業省 会見・スピーチ 大臣記者会見 ソースを見てほしい。このような邪悪なHTMLがいまどき存在を許されるのだろうか。 なんという前衛芸術のようなdivだろうか。 さらに細かいことをいうと、HTML4.01としてもおかしい。 まず、HTMLだが、DOCTYPE指定がない。つまりこのサイトは、互換モードで表示されているということになる。 次に、目につくのは、body > center > tableである。いまどき、レイアウトをテーブルで組んでいるのだ。ああ虫酸が走る。もちろん、邪悪なfont要素も使っている。吐き気をもよおす邪悪とは、このようなことをいうのだろう。centerとfontは、HTML4.01ですら廃止予定の要素である。ここまでくれば、もう誰も驚かないだろう。width、 height、bgcolor、alignなどという属性は、当然のごとく使っている。まあ、些細な問題だろ

    goinger
    goinger 2010/12/12
  • Bjarne Stroustrup、Conceptと未来を語る

    センスとフィーリングで大胆な意訳を試みた。Danny Kalevがやたらとウザい奴に成り下がっていたり、Bjarne Stroustrupがコミカルなまでにジジイ臭いのは仕様。ただ、DKの言い回しは、ちょっとやり過ぎたかも知れない。実際原文を読んでいると、これぐらいムカつく言い回しなのだが。 Page 1: Concepts: Disappointment Without Defeat Danny Kalev 今回のconceptの失敗についてどう受け止めてますか。今回の事件をどう思いますか。これは、あるいは、将来的に新機能を提案する妨げになると思いますか。 Bjarne Stroustrup C++0xにconceptを入れないと決定したことについてかね。ワシとしては、conceptが失敗したとは思っておらんよ。今回の問題は、個人的にはユーザビリティの問題だと思っておるんだが、まあ、せい

    goinger
    goinger 2009/08/15
  • 1