タグ

c++に関するkoyhogeのブックマーク (95)

  • vs UTF-8, UTF-16, UCS4 - 枕を欹てて聴く

    前置き おはミルキィ! ChromeFullFeedが公開停止になった話を前置きとして書いていたのですが, あまり関係がないのと, 長くなりそうになってきたので, 別の記事に分けました. http://d.hatena.ne.jp/Constellation/20110530/1306701693 概要 という前置きで. ECMAScriptと切っても切れない文字コード, UTF-16. iv / lv5はUnicode変換のためにICUに依存していたのですが, UTF-8 <=> UTF-16なら何とか自分でも書けるのではないかと思い, Unicode Converterを書きました. これでlv5の依存はlibboost, libgc (Boehm GC)に減りましたー. Unicodeの変換の教授, bugつぶしにおいて, id:masa141421356 さんに非常にお世話になりま

    vs UTF-8, UTF-16, UCS4 - 枕を欹てて聴く
  • Boost.Localeがクソすぎる

    Boost.Localeがレビューされているので見てみたが、クソすぎる。しかも、作者はそれが糞であることに気がついていない。 Boost.Locale: Boost.Locale Boost.Localeはstd::localeの機能を持っている。しかし、日人なら誰でも知るように、std::localeはクソの役にも立たない。よって、Boost.Localeも、その機能としては役立たずだ。 Boost.Locale: CollationとBoost.Locale: Conversionsでは、大文字、小文字、アクセント記号の有無に対する無視や、相互変換などの機能を提供している。これは、日語には何の役にも立たない機能である。 Boost.Locale: Numbers, Time and Currency formatting and parsing これは、数値や日付、貨幣単位に対する

  • Cのコールバック関数をC++のメンバ関数にバインディングする方法 - kazuhoのメモ置き場

    たとえば libevent のような C 言語でかかれたイベント駆動型のライブラリを C++ から使っていると、C++ のメンバ関数をコールバックとしてセットできたらうれしいことが多いですよね。以下のようにすればできます。 たとえば、コールバック関数をセットする関数の型が、 void set_foo_callback(void (*)(void* cb_arg), void* cb_arg); なら、以下のようにクラスとメンバ関数を引数にとるテンプレート関数を定義し、 template <typename T, void (T::*FUNC)()> void to_foo_callback(void* cb_arg) { T* obj = reinterpret_cast<T*>(cb_arg); (obj->*FUNC)(); }以下のように受け渡せばいい。 class K { publ

    Cのコールバック関数をC++のメンバ関数にバインディングする方法 - kazuhoのメモ置き場
  • ニコニココメントサーバーにおけるメモリ使用量増大問題の調査と対策 - ドワンゴ 研究開発ブログ

    はじめに コメントサーバーは、ニコニコ関連サービスのコメントを司るサーバーである。稿は、ニコニコ広場で起こったコメントサーバーメモリ使用量増大問題について、我々コメントサーバー担当が行った調査と対策のまとめである。 今回のメモリ増大問題の解決にあたり、「仮説を立てる + 計測する→修正する→確認する」というパターンを繰り返した。このパターンは、ソフトウェアの様々な問題を調査するのに適用できる、基パターンである。 コメントサーバー概要 コメントサーバーについて簡単に概説する。 コメントサーバーはニコニコ関連サービスのコメントを管理するサーバーである。基的な機能は、新しいコメントの保存、およびコメントの出力である。ニコニコサービスのユーザーがコメントサーバーに直接触れることはなく、ニコニコのプレイヤーがコメントサーバーと直接やりとりを行う。ニコニコ動画の例でいうと、コメントサーバーを使用

  • 美しきObjective-C

    Objective-Cというプログラミング言語があります。 C言語をベースにオブジェクト指向言語のSmallTalkの拡張を施した言語です。 オブジェクト指向を取り入れたC言語にC++がありますが 根から拡張されているC++と違い Objective-Cは素のままのC言語にSmallTalkを融合させたような形を取ります。 Objective-Cは世界で2番目に美しいGUIを生み出した現AppleComputer社CEOである Steve Jobs氏がNeXTコンピュータのOSであるNeXTSTEPで採用した言語です。 NeXTSTEP自体はPC/AT互換機やHewlett Packard社のHP9000、 Sun Microsystems社のSparcStationにも移植されたようですが、残念ながら私は触れた事がありません。 現在では希にYahoo Auctionに出品されますが、

  • モダンなC, C++の開発環境の構築方法 - 考える人、コードを書く人

    まだC, C++がないようなので書いてみた。主にLinux(DebianとかUbuntu)での環境構築について。 コンパイラ まずはapt-getでコンパイラをインストールする。UbuntuやDebianなら以下のコマンドでgccやg++および標準ライブラリ等がインストールされる。 $ sudo apt-get install build-essential デバッグツール デバッガおよびデバッグツールは少なくとも以下の三つは入れる。(あとltraceも欲しいかな?) GDB 言わずと知れたGNUのデバッガ Valgrind メモリリークや不正メモリアクセスの検出 strace システムコールのトレース $ sudo apt-get install gdb valgrind strace ビルドツール C, C++のビルドツールといえばまずmakeが浮かぶけど、最近ではSConsやCMak

    モダンなC, C++の開発環境の構築方法 - 考える人、コードを書く人
  • emacsでインテリセンス - NO!と言えるようになりたい

    CEDETなるものを使うとわりと簡単にできるらしいので,導入してみた. http://cedet.sourceforge.net/ ダウンロードして解凍して,コンパイルを適当に行う. $ cd cedet-1.0pre7 $ make $ pwd /path/to/cedet-1.0pre7.emacsに設定を追加 ;; CEDET (load-file "/path/to/cedet-1.0pre7/common/cedet.el") (require 'semantic-gcc) (semantic-add-system-include "/opt/local/include" 'c++-mode) (semantic-add-system-include "/opt/local/include" 'c-mode) (semantic-load-enable-gaudy-code-he

    emacsでインテリセンス - NO!と言えるようになりたい
  • 本の虫: 新しいプログラミング雑誌の発行

    [Grimoire]「プログラミングの魔導書」予約開始! - Faith and Brave - C++で遊ぼう 株式会社ロングゲート - 製品案内 新しいプログラミング雑誌が、とうとう発行された。PDF版は、いますぐ予約購入して、8月7日以降に読むことが出来る。物理的に印刷された雑誌は、予約販売という形をとっている。これは、7月末まで予約を受け付け、その後に印刷して、発送するという仕組みだ。印刷は、予約期間を逃すと、もう手に入れることはできないが、PDF版は、いつでも購入可能になっている。 このブログで何度か言及してきたが、私は、Bjarne Stroustrupへのインタビューをして、その翻訳と、C++歴史について、二の記事を書いた。いうまでもなくBjarne Stroustrupは、C++プログラマでその名前を知らなければモグリであるし、非常に興味深い内容となっている。全C++

  • 本の虫: 邪悪なC形式のキャストにしかできないこと

    注意:邪悪で汚らわしいC形式のキャストは、いやしくもC++プログラマたる者は、使うべからず C++では、玉虫色のC形式のキャストの機能を、三つに分割した。static_cast、reinterpret_cast、const_castである。しかし、この三種のキャストでは、C形式のキャストを完全に代替できないという声をよく聞く。曰く、「どうしても書けないキャストがある」と。 それはよく聞く話だが、では実際にどのようなキャストなのかということは、誰も審らかにしない。誰も知らないキャストであれば、特に使えなくても問題ないはずだ。ただし、「C形式のキャストならばできるキャストが、新しいキャストを組み合わせてもできない。どんなキャストかは知らないが、とにかくできないと聞いている。故に新しいキャストはクソだ」などという論調で、C++の改良されたキャストを使わぬC畑の外道がしゃしゃり出てくるのも困る。そ

    koyhoge
    koyhoge 2010/07/06
  • http://1978th.net/tech/promenade.cgi?id=76

  • 並列イベント駆動I/Oフレームワーク「mpio」リリース - Blog by Sadayuki Furuhashi

    分散KVS kumofs のコードは、全体で約2万行です*1。 そのうち、ネットワークI/Oやプロトコルに関するコードは約1万行*2で、全体の約半分を占めています。 ロジックは残りの半分*3だけで実装されています。 この実例から分かりますが、kumofsのような分散アプリケーションを開発するにはI/O周りの実装が大変で、とてつもなく大きな障壁になっています。*4 さらに今日では、性能を稼ぐためにマルチスレッド化が必須です。また、多数のクライアントを少ないリソースで効率よく相手にするには、非同期・イベント駆動型のアーキテクチャも必要になります。さらに、究極的な性能を達成すべく GC を利用しない C++ においては、実装のみならず設計も大変です。 これに加えてソケットAPIの難解な挙動に対処にしなければならないため、C言語やC++によるネットワークプログラミングは、vimの使いこなしなどと同

    並列イベント駆動I/Oフレームワーク「mpio」リリース - Blog by Sadayuki Furuhashi
  • C++についてLinus Torvaldsへの反論 | taro-nishinoの日記 | スラド

    私が以前に書いた"「構造化プログラミングに関する覚え書き」へと導いたもの"の前置きで、Linus氏がC++をぼろくそに貶したことに対する日人の反応を辛辣に書きました。そのことで私の真意を誤解している人が少なからずいらっしゃいます。要は私が言いたかったのはLinus氏に反論するなら反論するで、世界に向けて英語で書き、Linus氏が目にするようにせよと言いたかったのです。それをせずに日国内でぶつぶつ言っても、それは所詮国内向けポーズでしかなく、自己愛に満ちているとしか言い様がないのです。私の愛国精神云々とかは全く関係ございませんし、恥ずかしいものは国を問わず恥ずかしいのです。勿論英語の壁があるでしょうし、もっと重要なのはLinus氏並の実績でしょう。英語も駄目で実績も無いなら言うな、です。 それに引き換え、海外に目を転ずると、堂々と反論している人が(英語ネーティブでなくても)何人もいます。

    koyhoge
    koyhoge 2010/03/15
    C++が問題をより複雑にする方向性を持っていることは確かだと思うが、抽象化というのはそもそもそういうもの。
  • fujimap: 簡潔な連想配列 - DO++

    博論終わったので仕事の合間にfujimapというライブラリを作ってみました。 fujimap project fujimapは作業領域が非常に小さい連想配列で、文字列からなるKeyを利用して、整数値もしくは文字列からなるValueを登録・参照することができるライブラリです。 今巷では大規模なKey Value Stroe (KVS)が流行っていますがFujimapは一台のマシンのメモリ上で動作することを想定して作成されています.Fujimapの特徴は必要な作業領域量が非常に小さいことです.キー自体を明示的に保存しないため、作業領域は値を格納するのに必要なサイズと、許容するfalse positive(後述)にのみ依存します。 例えば、google N-gramのunigramの約1300万キーワードとそれらの頻度の対数を記録する場合、false positiveを気にしないなら、一キーワー

    fujimap: 簡潔な連想配列 - DO++
  • Faster PHP fo shizzle—HipHop for PHP

    [This post is in progress. There may be a number of errors. Please comment below with corrections and I’ll update this article.] Facebook announced the release of HipHop for PHP today. Haiping Zhao Facebook, Palo Alto, California Sony DSC-WX1 1/80sec @ ƒ2.4, ISO400, 4.2mm (24mm) When I left Plaxo, Haiping was the server architect there. Today, he works at Facebook and announced HipHop for PHP. It

    Faster PHP fo shizzle—HipHop for PHP
  • http://japan.internet.com/webtech/20100203/10.html

  • PHPをC++に変換して高速化する「HipHop for PHP」をFacebookが公開 : candycane development blog

    アメリカ時間の昼ごろにTwitter上が一つのニュースで埋め尽くされました。 PHPC++に変換して高速化する技術をFacebookが公開したというものです。世界中のPHPハッカーが注目する興味深いリリースという事でちょっと長いですが、リリースノートの和訳を行いました。 原文 http://developers.facebook.com/news.php?blog=1&story=358 Facebookにおいて重要なことのひとつが動作の速さです。過去6年間にわたって、PHPが提供する高速な開発ペースによって多くを成し遂げてきました。プログラミング言語としてみると、PHPはシンプルです。簡単に習得し、簡単に書き、簡単に読み、簡単にデバッグする事ができます。我々は他の言語よりも早くエンジニアを獲得し、それによってより早いイノベーションをすることができます。 今日、私は2年に渡って作業して

  • GitHub - AcademySoftwareFoundation/OpenShadingLanguage: Advanced shading language for production GI renderers

    Welcome to Open Shading Language! Open Shading Language (OSL) is a small but rich language for programmable shading in advanced renderers and other applications, ideal for describing materials, lights, displacement, and pattern generation. OSL was originally developed by Sony Pictures Imageworks for use in its in- house renderer used for feature film animation and visual effects, released as open

    GitHub - AcademySoftwareFoundation/OpenShadingLanguage: Advanced shading language for production GI renderers
  • 京都収納棚:DBMの率直な壱実装 - mixi engineer blog

    飲み屋に行くとかなりの確率で荷物を忘れて帰るmikioです。さて、今回はここ2ヶ月ほどで急ピッチで開発した軽量データベースライブラリ「Kyoto Cabinet」について紹介します。 開発の動機 以前から軽量データベースライブラリとしてご好評いただいているTokyo Cabinetですが、DBMとして必要十分な機能と性能を備えていてなかなか良いものだと自負しております。ただ、開発を進める中でいくつか不満な点があったのも事実です。端的に言えば、全てC言語で記述して、標準ライブラリ(とzlib/bzip2)以外の機能は全て自作しているので、最適化がしやすい反面、メンテナンスの難易度が高くなってしまっているというのが不満です。 そこで、多少性能が悪くなってもいいから、私自身としてお気楽に開発およびメンテナンスができて、移植性も高いような実装を作ってみようと思い立ったのが昨年10月頃。様々な検討を

    京都収納棚:DBMの率直な壱実装 - mixi engineer blog
  • 「並列化の難しさの議論には間違った部分がある」

    「並列化の難しさの議論には間違った部分がある」 Michael McCool,Intelデベロッパ・プロダクツ・ディビジョン,パフォーマンス&プロダクティビティ・ライブラリーズ,ソフトウエア・アーキテクト Intel of Canadaでデベロッパ・プロダクツ・ディビジョン,パフォーマンス&プロダクティビティ・ライブラリーズのソフトウエア・アーキテクトを勤めるMichael McCool氏が,来日して日経ソフトウエアの取材に応じた。氏は米Intelが2009年8月に買収した加RapidMindでチーフ・サイエンティストを勤めてきた人物で,University of Waterlooで教壇にも立っている。Intelが2010年に投入予定の並列プログラミング製品「Ct」について,その意義を語った。 並列プログラミング(パラレル・プログラミング)は難しい。 並列プログラミングの難しさには,当の

    「並列化の難しさの議論には間違った部分がある」
  • 今更ながらに Boost.SmartPointers を考える - 野良C++erの雑記帳

    Smart Pointers というか主に shared_ptr ですが(scoped_ptr のこともたまには思い出してあげてね!)。 恐らくは散々ガイシュツなネタですが、まー「検索するのが面倒だ」って人の手助けになればいいかと思います。僕も検索するの面倒ですし。 というかこの記事書いてるときもロクに検索してないです。間違いとかあったらすみません。 疑問点とか有りましたら、自分で調べるか、あるいは僕に知らせてもらえると助かります。では、始めましょう。 [最終更新] 応用例にカスタムアロケータでの参照カウント管理を追加: 09/12/16 基的な使い道 まず基的なことについては、僕が説明するより、この動画を参照した方が速いでしょう: http://www.ustream.tv/recorded/2981654 それに対するついったーでの突っ込み: http://kiwofusi.sa

    今更ながらに Boost.SmartPointers を考える - 野良C++erの雑記帳
    koyhoge
    koyhoge 2009/12/15