タグ

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

  • 本の虫: Bazaar-NG: 分散バージョン管理システムを7年ハックしてきて

    Bazaar-NG: 7 years of hacking on a distributed version control system Bazaarの開発者が、Bazaarが失敗した理由について、当時を振り返って書いている。なかなか面白い。 Bazaar-NG: 分散バージョン管理システムを7年ハックしてきて この7年間、筆者はBazaarプロジェクトに関わってきた。筆者はプロジェクトから距離を置き始めている今この時、筆者のこのプロジェクへの関わりや、何が良くて何が悪かったのかの意見などを、振り返ってみるべきだと思う。 この回顧録には多くの複雑な詳細が出てくるので、筆者の誤りもあるかも知れない。間違いを見つけたら知らせてくれ。 黎明期 < ddaa> dscmsには2種類ある。古臭いやつと、実験中なやつ。 2004年、筆者は、 SambaのコントリビューターであるMartin Pool

  • Vimにclang_completeを導入した

    NoeBundleを得て、Vimのプラグイン導入を恐れなくなった私は、さっそく、Vimにclang_completeを導入した。 Rip-Rip/clang_complete NeoBundleを使った。とりあえず色々と試した結果、、以下の設定に落ち着いた。 " Install clang_complete NeoBundle 'Rip-Rip/clang_complete' let g:clang_periodic_quickfix = 1 let g:clang_complete_copen = 1 let g:clang_use_library = 1 " this need to be updated on llvm update let g:clang_library_path = '/usr/lib/llvm-3.4/lib' " specify compiler option

  • CとC++の違い:字句編

    京都C++勉強会の宣伝のために、CとC++の違いを、少しづつ解説することにした。 江添とボレロ村上の京都C++勉強会が、12月16日に行われる。これを書いている時点では、まだ空きがあるので、最新のC++14の新機能と、コンパイル時レイトレーシングを勉強したければ、ATNDで参加申し込みをせよ。 江添とボレロ村上の京都C++勉強会 | 集客ならイベントアテンド C++はCの完全互換ではない。Cのあまり良くない部分は、変更して改良した。ここでは、そのような変更点のうち、互換性に特に問題のあるものを取り上げる。 今回は、字句編だ。 新しいキーワード C++では、新しいキーワードが追加されている。C++で追加されたキーワードを名前に使っているようなCコードは、問題になる。 文字リテラルの型がintからcharに変更 Cでは、'a'の型は、intだった。これは、オーバーロード解決で問題になる。 //

    nsyee
    nsyee 2013/11/28
  • 技術屋にMac使いが多い理由ってなに?

    技術屋にMac使いが多い理由ってなに? : IT速報 答え:お手軽なUNIX互換環境だから。 今、個人が使うデスクトップやラップトップ用のOSとして、実用的なものに、GNU/Linux, Windows, Mac OS Xがある。読者の中には、FreeBSDも十分に実用的だと主張する者もいるかもしれないが、少数派だろう。 もちろん、サーバーや組込み用途には、その用途に合わせて別のOSが使われている。しかし、プログラマー個人が使うコンピューター用のOSは、圧倒的にMac OS Xである。これはとても残念なことだ。なぜならば、Macは不自由なソフトウェアで、しかもその動作するコンピューターまで、技術的な理由がなく制限されているからだ。 UNIX互換環境を必要とする理由としては、既存のPOSIX互換環境向けに書かれた有用なツールがとても多く、プログラマーはなんとしてもそのツールを使いたいのだ。

    技術屋にMac使いが多い理由ってなに?
  • C++参考書の販売:C++11の文法と機能

    完成したC++11参考書:C++11の文法と機能の販売をGumroad.comで開始した。 Gumroadで購入:C++11参考書:C++11の文法と機能 直接のGumroadへのURLは:https://gum.co/IwMm 内容はC++11のコア言語の文法と機能を、規格に忠実に解説した自由な参考書だ。すでにGitHubで公開しているものと同一の内容だ。 GitHub: EzoeRyou/cpp-book GitHubからzipでダウンロード GitHub Pagesでの閲覧:C++11の文法と機能 の虫: C++11参考書の公開:C++11の文法と機能 価格は、最低5000円以上の任意の額で購入できる。値段に関しては色々とあるだろうと思うが、筆者は、これでも安すぎると思っている。電子書籍に対価を支払う文化を根付かせなければならない。あまりに安すぎると意味がない。あまりに高すぎると払

  • Jenkinsの開発者、間違えて一ヶ月前のローカルレポジトリをgit push --forceしてしまう

    Jenkinsの開発者、間違えて一ヶ月前のローカルレポジトリをgit push --forceしてしまう Jenkin developers accidentally do "git push --force" to over 150 repos on github | Hacker News Jenkinsの開発者、Luca Milanesioによって、Jenkinsの多くのgitレポジトリに対してpushが行われた。不思議なことに、pushをしたというのに変更点はほとんどみられない。一体ルカは何をやったのだ。 Dominik Bartholdi やあみんな、とくにルカ。 昨日、GitHub上のJenkinsの多くのレポジトリ(50以上)に、なにか変なことが起こった。 どうやら、Luca Mmilanesioが、何の変更もないのに、たくさんのたくさんのレポジトリにpushしたらしいのだ。

  • DebianがUpstartかSystemdへの乗り換えを検討中

    [Phoronix] Debian To Switch To Systemd Or Upstart Debianが、従来のSysVinitに変えて、近代的な既存の実装を使おうと議論しているらしい。候補は、UpstartかSystemdだ。 Upstartは、主要な汎用のGNU/Linuxベースのディストリビューションでは、ほぼCanonicalのUbuntuぐらいしか使っていない。Systemdは、より広く使われている。 Upstartの利点に、既存のSysVinit用のスクリプトをそのまま動かすこともできるということがある。 Systemdはより広く使われているが、Linuxカーネルに強く依存した設計であり、Linuxカーネル以外での利用が難しいのだという。これは、DebianがLinuxカーネルに限定していないことを考えると、難点となる。 Debianの開発者には、Canonical社

  • 自由なGPUプロジェクト、またもや失敗

    [Phoronix] It Looks Like The Open-Source GPU Will Fail Again Open Source Graphics Processor (GPU) by Francis Bruno — Kickstarter Silicon Spectrumという会社が、FPGA上で2DのGPUを実装し、さらなる改良や3D機能の実装のために、三週間前からKickStarterでクラウドファンディングを募っていた。なんでも100万ドルの出資金が集まれば、さらなる改良もするし、ソースコードをLGPLv3で公開もするという。 先月の9日から始まっているので、今日で開始から25日目、締め切りまであと19日。今のところ集まったのは、たったの12440ドルだ。100万ドルには2桁も足りない。残りの98万ドルをポンと出す変人が19日以内に現れない限り、失敗する。 理由は色

  • Linus Torvalds、Linuxの32bit版の優先度は低いと表明

    [Phoronix] Linus Acknowledges 32-Bit Linux As Less Important 32-bit版のLinuxカーネルにおける、既存のある問題を修正したLinuxカーネル3.12に対するパッチのpullが、Linusによって退けられた。理由は、Linusは3.12のリリースを遅らせたくないからだという。すでに壊れていて、それほど問題になっていない問題を修正するのに、カーネルのリリースを遅らせたくないこと、それに、32-bit版の優先度は低いと言っている。 Linux-Kernel Archive: Re: [git pull] fixes for 3.12-final On Sun, Nov 3, 2013 at 11:54 AM, Al Viro wrote: > たしか、前にこういうことで32bit版のiget()が深刻に壊れて、 > それで、もう

  • nomodesetとLinuxにおけるGPUドライバーの問題

    前回、コメントからヒントを得て、カーネルパラメーターにnomodesetを渡した結果、Ubuntu Live CDの起動に成功した。しかし、釈然としない。ともかく、調べた範囲を書いてみる。 まず、nomodesetは何をしているのかというと、kernel mode settingを無効にする。mode settingとは、画面の解像度やビット数を変更するための規格である。これは、カーネルスペース(Linux)で行うこともできるし、ユーザースペース(X)で行うこともできる。カーネルスペースで行う利点は、パフォーマンスやフリッカーのない変更などの様々な利点をもたらすし、セキュリティ上も、ユーザースペースで動くコードに不必要な権限を与える必要がないという点で優れている。Linuxカーネルは2.6.28でIntelからGEMを提供されて、カーネルスペースでのmode settingに移行した。 と

  • 音響の違いでタッチを検出するデモ

    C++11の参考書、アマゾンお気に入りリストを公開中。 アマゾンの江添のほしい物リスト C++11の参考書、C++の文法と機能をGitHubで公開中。詳しくは、の虫: C++11参考書の公開:C++11の文法と機能を参照 GitHub: EzoeRyou/cpp-book レポジトリのzipダウンロード GitHub Pageで閲覧:C++11の文法と機能 江添亮 自由ソフトウェア主義者 C++ Evangelist C++標準化委員会の委員 ドワンゴ社員 C++11を執筆した。 株式会社ドワンゴで働いている。 Mail:boostcpp@gmail.com Twitter:@EzoeRyou GitHub: https://github.com/EzoeRyou 江添亮のマストドン@EzoeRyou 筆者にブログのネタを提供するために、品物をアマゾンお気に入りリスト経由で送りたい場合

  • うっかりチューリング完全になっちゃったもの

    Accidentally Turing-Complete ― Andreas Zwinkau 来なら、チューリング完全となるべきではなかったものがある。これは、そのようなうっかりチューリング完全になってしまったものの例である。 C++テンプレート 当初はチューリング完全を目指していなかったが、C++テンプレートはチューリング完全になってしまった。その証明は、この論文にある(PDF) x86 MMU x86のpage fault handlingは、単純なマシンの実装に使える。原理としては、page faultが1 wordをスタックに積み、それによりアンダーフローを起こして別のトラップを生成する。この仕組みは、「減算して0以下ならば分岐」処理を実現する。チューリングマシンを実装するには十分である。デモ動画、講演動画 マジック・ザ・ギャザリング マジック・ザ・ギャザリングはカードゲームであ

  • iBus 1.5の思想による問題

    iBus 1.5がUbuntu 13.10で採用されてから、あちこちから混乱の声が挙がっている。色々と議論を読んだ結果、ようやく、iBus 1.5の設計思想を理解したように思う。iBusでは、IMは常に有効になっているものなのだ。 IBus 1.5がUbuntu 13.10に投入されるまでの流れと現状 - いくやの斬鉄日記 結局IBus 1.5の何が問題なのだろうか。 - いくやの斬鉄日記 我々は日語を入力する時、日語IMEを使う。これは、日語の文字があまりに多すぎるため、それだけの物理的なキーを用意することが現実的ではないからだ。そのため、キーボードからの入力を、IMEに変換させ、さらに漢字に変換している。 ところで、日語中に半角英数を混ぜたい場合は、どうするだろうか。例えばこんなふうに、日語のsentence中にEnglishを混ぜるルー大柴の芸のようなwritingをしたい

  • iBus 1.5がクソすぎる

    Ubuntu 13.10へのアップデートが、問題なく終わった。問題は、iBusが1.5にアップデートされてしまったことだ。 iBus 1.5は、去年の年末にリリースされた。リリース直後から、IRCでは怨嗟の声が絶えなかったが、今になって、ようやくその意味がわかった。iBus 1.5はひどい。ひどいなんてものじゃない。クソだ。いや、クソですら上品過ぎる。iBusは超超超超超・・・残念ながら、まだiBusを罵るべき言葉が発明されていないが、とにかくその超なにかだ。 UNIX風システムでは、伝統的に、日本語入力は、かな漢字変換を担当するIMEと、IMEと文字入力を受け取るアプリケーションの間の橋渡しをするIMに分離されている。ユーザーから見えるIMの役割としては、IMEの有効無効を切り替えることだ。 筆者はこれまで、IMとしてiBusを、IMEとしてMozcを使っていた。 iBusはIMである。

  • Gentooを最速でブートせよ

    Patrick's playground: October 2013 Archives KVM上のVMで、Gentooをひたすら短時間でブートして、haltさせる試み。 BOOTING FAST(ER) (より)高速に起動 日、筆者は積年の疑問を解決すべく遊んだ。どのくらい速く、KVM上のVMでブートして、haltできるのか。 そこで、この実験のため、CPUの速度を最低の1.4GHzにした。そうでなければ面白くないだろう。目標は、KVMのVM上のGentoo/amd64を、十分に短い時間でブートして、haltすることだ。 rootファイルシステムはsquashfsにした。最初に行った1GBのext4ファイルシステム vs squashfsでは、fsck+mountというありがた迷惑のため、5秒の差がでたからだ。うへぇ。stage3を展開し、いくつか設定をして(デバッグのためにログインした

  • クッキー・クリッカー完結編

    この話は、の虫: クッキー・クリッカー:リセットのループの続編にして、おそらくは完結編である。これ以上は望めないからだ。 の虫: クッキー・クリッカーについて の虫: ババア補完計画 の虫: クッキー・クリッカー物語 の虫: クッキー・クリッカー:リセットの効果 の虫: クッキー・クリッカー:リセットのループ エゾエはついに、青天上のチップをためすぎて、指の一振りで、出現した莫大な質量のクッキーがブラックホールを生成するに至った。もはやこれ以上は望むべくもない。 3554週目 「おい、エゾちゃん、いったい何をしようっていうんだ」 「そうだエゾエ。お前が何か重大なことを発表したいというから、こうしてお友達や親戚一同に集まってもらったんだぞ」 エゾエはサヨナラも言わずに指をカチッと動かす。即座に、莫大な質量のクッキーが宇宙空間に出現した。その質量が大きすぎるがゆえに、自重によって内

    nsyee
    nsyee 2013/10/15
  • GNU Make 4.0にGNU Guileが組み込まれた

    GNU Make 4.0 released GNU Make 4.0がリリースされた。 今回のリリースでは、GNU MakeはSchemeの実装であるGNU Guileを組み込んだ。これにより、Makefileの中でSchemeが書けるようになる。 その機能は、GNU Make ManualのGuile Functionの項目で説明されている。まだ、オンライン版のGNU Make Manualが2010年から更新されていないので、コミット時のドキュメントの差分のリンクする。 8.13 The `guile' Function 具体的な組み込み方法としては、make側にguileという関数が追加され、この引数に文字列を与えると、SchemeとしてGuileで処理されるようになる。おそらく、このように。 Hello.o : $(guile (string-append "hello" ".c"

    nsyee
    nsyee 2013/10/10
    Makefileにscheme書けるって何のことかと思ったらこれか。埋め込みじゃなくてschemeのDSLにして欲しい。
  • x86のMMUはチューリング完全である

    jbangert/trapcc · GitHub The Page-Fault Weird Machine: Lessons in Instruction-less Computation | USENIX x86のMMU、つまりは割り込みとメモリ変換テーブルは、チューリング完全であることの証明。割り込みとメモリ変換テーブルを活用して、プログラムカウンターを一切進めず、ひたすら割り込みを続けるだけで、任意の演算が可能になる。もちろん条件分岐だってオーケーだ。 このテクニックを使えば、カーネルモジュールのバイナリにとても解析が面倒な難読化処理を施すことができる。なぜなら、通常のインストラクションは実行しないから、何をしているのか、通常のインストラクションを追うだけでは一見して明らかではないからだ。そもそも、既存のKGDBなどは、あまりに頻繁な割り込みがかかるため、まともに機能しなくなるようだ

  • ValveがSteamOSを発表

    SteamOS 紹介するのがはばかられるが、DRM汚染された不自由なゲームソフトウェアの流通であるSteamを行なっているValveが、SteamOSなるものを発表したようだ。 SteamOSは、現段階ではマーケティング部門が宣伝文句を書いたとみえて、詳細は分からない。単にLinuxベースとのみ書かれているが、おそらくは、またぞろ新たなGNUにLinuxカーネルを組み合わせたシステムを土台にしたディストロのひとつだろう。 Valveが独自のディストロに走るのは、分からないでもない。というより、必然的とも言える。ValveがUbuntu用に提供している不自由なゲームを流通させるためのSteamクライアントの仕組みというのは、ゲームのプログラムから必要になる主要なライブラリを、すべてバイナリで提供し、ライブラリへのパスを上書きしてゲームのプログラムを実行しているからだ。これは、ライブラリのバー

  • OSによる仮想化とは何だったのか

    最近の動向でわからないことがある。最近、クラウド(笑)とか称するマーケティング用語はともかく、クラウド(笑)のサーバー群の実装に、ハードウェアの仮想化技術がふんだんに使われていることだ。 完全にソフトウェアでハードウェアを実装するエミュレーターと違い、この手の仮想化技術は、ハードウェアに仮想化をサポートするための機能があり、それを使って、大きなオーバーヘッドが生じない仮想化を実現させている。 そのハードウェア仮想化の上で、ユーザーごとにゲストOSを実行している。つまり、これはOS外の仮想化である。 OSとは何だったのか。 我々は何十年も、OS内で仮想化を実装してきた。ひとつのコンピューターを複数人が使うという状況で、ユーザーとかアカウントという単位で仮想化を実現してきた。また、ファイルアクセスに権限を設け、ユーザーごとに柔軟に設定できるようにもした。プログラムはプロセスという単位で、他のプ