タグ

c++とprogrammingに関するhiromarkのブックマーク (25)

  • C/C++のポータブルな実行環境としてのGoogle NaCl - nabeyangの日記

    ここ数日、Google NaClを使ってC++コードをweb上で実行できるようにするということを試していました(できたのはこれです)。使ってみた感想としては、この仕組みがwebサービスとして使われるようになるかは分かりませんが、C/C++コードで書かれたアプリケーションを実行できる状態で見せるといった用途では、現段階でも十分に使えるんじゃないかというものでした。 Google NaClを使うと、C/C++コードをweb上で動かすことができます。ちょうど、ruby, pythonなどのC APIを使った拡張モジュールのようなことがブラウザ上で動くJavaScriptでもできるようになったようなものだと思ってください。(ただし、NaClプラグインが動くのは現在のところGoogle Chromeだけです) というのも、C/C++で書かれたプログラムを実行しようと思ったら、まず自分以外の環境でもビ

    C/C++のポータブルな実行環境としてのGoogle NaCl - nabeyangの日記
  • 構築した辞書を元にAho Corasick法を使ってキーワードを探す - yasuhisa's blog

    どのようなときにAho Corasick法が必要か辞書構築した後の応用先(?)の一つとして、辞書を元にした転置インデックスを作ることがあげられる。「どのキーワードがどの文章に登場したか」が一番簡単な転置インデックスだと思うんだけど、今回は登場した文章のどの位置にあったかまで記録したい(例えばリンクを張る時に使いたいから)。転置インデックス作るときは、通常 形態素解析ベース N-gramベース の2種類が主な手法だと思うんだけど、今回はせっかく構築した辞書をもとに転置インデックスを作りたいので、上の2つではうまくできない。かといって、文章とキーワード総当たりとかやっていたら死ぬので、効率のよい方法が必要。そこでAho Corasick法ですよ、奥さん。はてなキーワードへのリンク処理とかに使われたりします。 入力と出力入力と出力を先に紹介しよう。入力は辞書とこんな感じの文章。 <総説誌名>蛋白

    構築した辞書を元にAho Corasick法を使ってキーワードを探す - yasuhisa's blog
    hiromark
    hiromark 2009/12/14
    AC法って意外とシンプルに書けるんですねー。
  • C++ のプログラムのデバッグを楽にする方法

    メディア関係者向けお問い合わせ先 メールでのお問い合わせ: pr-jp@google.com メディア関係者以外からのお問い合わせにはお答えいたしかねます。 その他すべてのお問い合わせにつきましては、ヘルプセンターをご覧ください。

    C++ のプログラムのデバッグを楽にする方法
    hiromark
    hiromark 2009/04/13
    あー、これ便利そうだなあ。
  • Resource acquisition is initialization - Wikipedia

    This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed. Find sources: "Resource acquisition is initialization" – news · newspapers · books · scholar · JSTOR (December 2012) (Learn how and when to remove this message) Resource acquisition is initialization (RAII)[1] is a pro

    hiromark
    hiromark 2009/03/03
    こっちもチェック。
  • メモリリークしない安全なプログラムの書き方

    とりあえず動くプログラムを書く ここでは例として、Fooという構造体の2次元配列を、引数で指定された幅と高さで作る、createFooMatrixという関数を作ってみます。 なお、配列の各要素を、initializeFoo関数で初期化しています。 Foo **createFooMatrix ( int width, int height ) { Foo **ptr = NULL; int w, h; ptr = (Foo **)malloc(height * sizeof(Foo *)); for (h = 0 ; h < height ; h++) { ptr[h] = (Foo *)malloc(width * sizeof(Foo)); for (w = 0 ; w < width ; w++) { initializeFoo(&ptr[h][w]); } } return ptr;

    hiromark
    hiromark 2009/03/03
    よくまとまってる。
  • メモリフラグメンテーション - コンピュータビジョンの日々

    今回は、画像処理に直接からむ話ではありません。 目下、他人様が以前に作った画像処理ソフトのメンテナンスをやらなければならなくなり、 メモリ関連の不具合で苦心しているところです。 症状 症状は、長時間実行しているとメモリ取得エラー(C++:new 演算子が 例外を送出するようになる。)を発生するという、 ある意味典型的なものです。 メモリリークですよね?ふつうー まず最初に想定すべき原因はメモリリークです。デバッガで調べると確かに幾つか少量のリークが見つかりました。 「実装継承を伴うクラスに、仮想デストラクタがない!」などという、C++初心者のようなコーディングミスも からんでいたりして、結構になります。 これらを全て修正して、再度長時間試験を行いました。 治っていません しかし、症状は改善しません。やはりメモリ取得エラーで落ちるのです。 タスクマネージャで見ると、そのときシステム全体では

    メモリフラグメンテーション - コンピュータビジョンの日々
    hiromark
    hiromark 2009/01/29
    昔やらかしたことがある、、、
  • はてなブログ | 無料ブログを作成しよう

    オーベルジーヌ実レポ べ物の鼻塩塩(未だに通じるのかな) オーベルジーヌというカレーをご存知だろうか 都内にあるデリバリー専門のカレー屋で、 ロケ弁などで大人気の格欧風カレーが楽しめるらしい いいな〜 いいな〜オブザイヤー 都内の奴らはこんな良いモンってんのか 許せねえよ………

    はてなブログ | 無料ブログを作成しよう
    hiromark
    hiromark 2009/01/27
    読んでみようっと。
  • はてなブログ | 無料ブログを作成しよう

    また作りたいレシピ 2024年5月第3週 「五月病」という言葉を忘れ去っていたことに気が付いた。もうすぐ5月も終わってしまう、なんということだ。ぐったり気味だった1週間の、また作ると確信したレシピです。 ・生ピーマンの肉みそ 去年、グルメ番組で見かけた生ピーマンと肉味噌の取り合わせが気になり…

    はてなブログ | 無料ブログを作成しよう
    hiromark
    hiromark 2009/01/10
    むー。
  • Google、社内で活用しているログAPI glogを公開、強力なログ機能提供 | エンタープライズ | マイコミジャーナル

    glog - Logging library for C++ Google, Software Engineering Team, Shinichiro Hamaji氏はGoogle Open Source Blogにおいてglogを発表した。glogはアプリケーションレベルで活用するロギングAPIC++スタイルストリームのAPIを提供するほか、さまざまなヘルパーマクロを提供している。ライセンスは3条項BSDライセンス。 多くのソフトウェアは必ずといっていいほどバグを抱えており、バグを修正するためにはログデータが欠かせない。glogはそういった用途で活用するためのライブラリ。すでにGoogle社内で広く活用されているものとされている。シンブルでさまざまな機能を提供しており、コマンドラインからログの振る舞いを変更できるという特徴がある。 サポートしているシステムはFreeBSDやMac O

    hiromark
    hiromark 2008/10/15
    要チェック。
  • Spaghetti Source - 各種アルゴリズムの C++ による実装

    ACM/ICPC(プログラミングコンテスト)系列の問題を解くことを目標にして,各種アルゴリズムを C++ で実装してみた.極めて意地が悪い類の問題には対応していないし,特定の入力に対して高速に動くということもない.計算量も最良とは限らない. これらを参考にする方への注意とお願い: これらの記述は正確とは限りません.参考文献を参照することを強く推奨します.間違っている場合は是非教えてください. これらのプログラムは間違っているかもしれません.各人で検証することを強く推奨します.バグがあれば是非教えてください. 分類が怪しいので,これはこっちだろう,ということがあればコメントを下さると助かります. 注意! 現在書き換え中 TODO 分類を正しく行う. 全体的に説明と使い方を詳しく. Verify していないものを Verify. ボロノイ図(いつになることやら……) 基 テンプレート グラフ

    hiromark
    hiromark 2008/09/17
    これはうれしい!
  • 変電工 - Google C++スタイルガイド日本語訳

    国产亚洲欧美日韩在线一区二区三,AV蜜桃,中文乱码人系列一区二区,乱中年女人伦视频国产,男女性高爱潮是免费国产,国产成人精品三上悠亚久久,果冻传媒AⅤ毛片无码

    hiromark
    hiromark 2008/07/02
    日本語訳。そういや、まだ原文読んでなかった orz
  • サイボウズ株式会社

    サイボウズはクラウドベースのグループウェアや業務改善サービスを軸に、社会のチームワーク向上を支援しています。

    サイボウズ株式会社
    hiromark
    hiromark 2008/04/16
    正しいように思います。
  • Clouder::Blogger: riyaのように顔認識をするためのライブラリ

    ご存知の方も多いと思いますが、riyaというサービスではアップロードした写真の中に顔があるとそれを認識して視覚化したり、物があるとそれを認識してその物に似た商品(場合によってはそのもの)をみつけてくれるという機能があります。一見すごい技術に見えるのですが、実はあるライブラリを使えばこれを簡単に実現することができます。 事の発端は単純に自分が顔認識をやってみたいと思ったからで、そのためのライブラリやソフトウェアがないのかなぁとネットをさまよっていたらこのライブラリに行き着いたというわけです。 そのライブラリは「opencv」といいます。 このopencvは、Intelが開発を行っているものでSourceforgeにてプロジェクトが進められています。このopencvというのは、別に顔認識に特化したライブラリではなく、「OpenCV (Open Source Computer Vision) i

    hiromark
    hiromark 2007/01/09
    なかなかよさげじゃん。
  • いやなブログ - RAII と setjmp/longjmp

    RAII と setjmp/longjmp C++ には RAII (Resource Acquisition Is Initialization) というイディオムがあります。これはリソースの開放を確実に行うためのテクニックとして C++ のプログラムで広く用いられています。しかし、RAII も setjmp/longjmp という落とし穴があります。 RAIIの基 次のプログラムはメモリリークを起こします。 #include <string> using namespace std; int main() { string *p = new string; return 0; } このプログラムをビルドして valgrind でテストすると次のようなエラーメッセージが表示されます。4バイトのメモリリークが検出されました。 % g++ test.cc % valgrind ./a.ou

    hiromark
    hiromark 2007/01/09
    よい勉強になります。
  • コールバック - Mona OS developers Wiki

    経緯 † Monaでスレッドに引数を渡せるようになりましたが、SUNEO/007.まだ投げないでEDS1275さんより、ラッパーを挟まずにC++と絡めることができるかどうかという問題提起がありました。 結論から言うと、コールバック関数の呼び出し規約が、 cdeclであれば可能。 fastcallでは不可能。 ↑ メンバ関数の正体 † 次のようなソースを用意します。(test1.cpp) class Test { public: void test(); }; void Test::test() {} void call() { Test t; t.test(); } Intel形式でアセンブリを出力します。 $ g++ -masm=intel -S test1.cpp 出力されたtest1.sより、call()中のt.test();を抜き出してみます。 lea eax, [ebp-1] m

    hiromark
    hiromark 2006/10/24
    ほー、これは便利なページ。
  • checkstack.pl で関数のスタック消費量を調べる - bkブログ

    checkstack.pl で関数のスタック消費量を調べる Linux カーネルのソースコードに付属する checkstack.pl を使うと、C/C++ のプログラムの関数のスタック消費量を調べることができます。checkstack.pl は objdump -d のディスアセンブルの出力からスタックポインタの操作をパターンマッチしてスタックの消費量を計算しています。 入手方法 checkstack.pl は Linux カーネルのソースコードに付属しています。Debian GNU/Linux sarege なら次のようにコマンドラインから実行して取得できます。ソースツリーに含まれる scripts/checkstack.pl が目的のものです。 % apt-get source kernel-source-2.6.8 使い方 checkstack.pl の使い方は簡単です。スタックサイ

    hiromark
    hiromark 2006/04/24
    こんな便利なツールが?知らなかった。
  • クラスの雛形を作るスクリプト - higepon blog

    $ class_create.pl Higepon mona created "Higepon.h" created "Higepon.cpp" のようにコマンドラインから クラス名・namespace(省略可能)を指定して実行すると、Higepon.cppと Higepon.h が作成されます。 これで楽ができますね。 Higepon.h #ifndef __HIGEPON_H__ #define __HIGEPON_H__ namespace mona { class Higepon { public: Higepon(); virtual ~Higepon(); }; }; // namespace mona #endif // __HIGEPON_H__ Higepon.cpp #include "Higepon.h" using namespace mona; Higepon::

    クラスの雛形を作るスクリプト - higepon blog
    hiromark
    hiromark 2006/02/15
    おお、これはすばらしい。
  • 配列へのポインタと配列へのリファレンス - bkブログ

    配列へのポインタと配列へのリファレンス C/C++ のあまり使われない機能に、配列へのポインタと配列へのリファレンスがあります。ここでは、それらがどのようなものかまとめたいと思います。 C 言語には配列の先頭要素へのポインタとは別に配列へのポインタ が存在します。。プログラミング言語Cの 5.7 に多次元配列を受け取る関数の例が載っています。 次のプログラムではサイズ 256 の char 型の配列を作り、その配列へのポインタ p を作っています。++p を実行すると p の指すアドレスは 256 バイト分進みます。 #include <stdio.h> int main() { char foo[256]; char (*p)[sizeof(foo)] = &foo; printf("%p\n", p); ++p; printf("%p\n", p); // 256 バイト分進む ret

    hiromark
    hiromark 2005/12/19
    とりあえずおもしろいので法則にハマっておこう (笑)
  • main() の前に関数を呼ぶ - bkブログ

    main() の前に関数を呼ぶ C/C++ のプログラムで、main() の前に関数を暗黙的に呼びたいときがあります。ここでは GCC の拡張を使った方法と、C++ のコンストラクタを使った方法を紹介したいと思います。 GCC では main() の前に呼ばれる関数を __attribute__((constructor)) という拡張機能を使って定義できます。たとえば、次のプログラムでは main() の前に foo() が呼び出されます。 #include <stdio.h> __attribute__((constructor)) void foo() { printf("hello, before main\n"); } int main (int argc, char **argv) { printf("hello, world\n"); return 0; } 実行結果は以下の

    hiromark
    hiromark 2005/12/18
    こんな方法があるんですね。「まとめ」のとこに書かれている方法はたまに使う。
  • いやなブログ: Boost で再帰的な grep

    Boostの正規表現クラスを使う Boost の正規表現クラスを使ってみよう思い、ディレクトリ以下のファイルに対して再帰的に grep を行うコードを書いてみました。 以下がそのコードです。再帰的な grep はGNU grep の --recursive オプションでできるので実用的な意味はありません。 #include <assert.h> #include <unistd.h> #include <sys/mman.h> #include <sys/stat.h> #include <fcntl.h> #include <boost/bind.hpp> #include <boost/filesystem/operations.hpp> #include <boost/filesystem/path.hpp> #include <boost/regex.hpp> using name

    hiromark
    hiromark 2005/11/24
    これは使える。