タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

programmingとProgrammingとc++に関するshimanpのブックマーク (14)

  • Windows仮想プリンタプログラムを作ってみる : DSAS開発者の部屋

    普段よく使っているソフトウェアであっても、どういうしくみで機能を実現しているのかよくわからないものが結構あります。 筆者は主に Windows 環境で作業をしていますが、PDF ファイルを作成するたびに目にする「仮想プリンタ」もそのひとつでした。 システムは物のプリンタだと信じているのに実はそれはソフトウェアへのインターフェイスにすぎず、印刷ジョブを渡したら最後、データは隅から隅までなめまわされ好きなように処理されてしまう。ということは、その気になればあんなことやこんなこともできてしまうはず・・・。 あらためて考えてみるとなかなか面白い話なので、仮想プリンタのしくみを調べて何かプログラムを書いてみたいと思いました。 手はじめに、定番の題材として所定のドキュメントを PDF や画像に変換しファイル出力する仮想プリンタを作ってみることにしました。 ひとつの仮想プリンタを自作のコードで構築し、

  • 速いしスケールする並列CSVパーサ作った紆余曲折話 - 俺とお前とlaysakura

    この記事は↓に移転しました。 laysakura.github.io

    速いしスケールする並列CSVパーサ作った紆余曲折話 - 俺とお前とlaysakura
  • モダン並列・並行プログラミング ~ Concurrent Revisions による実装と現実 ~ - Preferred Networks Research & Development

    日社内向けのTechTalkにて、並列・並行プログラミングに関する話を行いました。 昨今、プログラムの並列化はなくてはならないものとなっています。しかし、そのプログラミング環境は依然としてロックを用いたものが主流です。今回の発表の主張を端的に申し上げますと、 “Locks must go!” ということになります。並列プログラミングに銀の弾丸はありません。しかし、ロックは別の何らかの安全性を確保したプログラミングモデルで置き換えられなければいけません。そうでなければ、再現しにくいバグに苦しめられ、終電を逃す日々と決別することはできないでしょう。また、ロックによるプログラミングの抱える質的問題にも言及しています。 この界隈の最新の動向として、去年OOPSLA’10にて発表されたConcurrent Revisionsについての解説も行なっております。また、弊社研究開発において、先日Con

    モダン並列・並行プログラミング ~ Concurrent Revisions による実装と現実 ~ - Preferred Networks Research & Development
  • d.y.d. 2倍だけじゃない

    10:01 10/07/20 それでも2倍だ 先日のvectorの伸長度合いの記事に関して 当に1.5倍のほうがメモリ効率がよいのか という反応をいただきました。とても興味深い。みんな読みましょう。 自分の理解メモ: 「再利用ができるから嬉しい」等の議論をするなら、 今までに確保したメモリ (1 + r^1 + ... + r^k) のうち、 有効に使えてるメモリ r^{k-1} (バッファ拡大直後) や r^k (次のバッファ拡大直前) の割合で評価してみようじゃないかという。 まず簡単のために再利用をしない場合を考えると、この割合はそれぞれ (r-1)/r^2、 (r-1)/r になります(途中計算略)。 この利用率が最悪になる瞬間 (r-1)/r^2 を最善にしよう、 という一つの指標で考えてみると、式を微分なりなんなりしてみると r = 2 で最大(25%)となることがわかります

  • Kinectで光学迷彩を作ってみた | fladdict

    C++勉強開始二日目。 OpenFrameworksのお陰でだいたい基礎的なことは理解したので、光学迷彩を作ってみた。クネクネ動いててキモイですね。1:20秒ぐらいから見始めるのがよいかと思います。 赤外線でとったデプスで屈折をずらしたり、なんか水面っぽくしてみたり、C++わからねーとか叫びながら手探りで実装してますが大分楽しい。 これプロジェクタやサイネージで広いところでやってみたいなぁ。 stringとintの足し方とか、*マークと&マークの違いとか、みなさんに色々教えて頂いたおかげで、無事ここまで作れるようになりました。多謝多謝です。

  • クリエイティブなC++ライブラリ "Cinder" の紹介 - Preferred Networks Research & Development

    こんにちは、人恋しい季節になってきましたね。 研究開発チームの祢次金(@nejigane)と申します。 エントリではCinderというクリエイティブなコーディング向けのライブラリについてご紹介したいと思います。 Cinderとは Cinderとは、画像、音声、動画等を簡単に処理&可視化できる、主にビジュアルデザイン向けの強力なC++ライブラリであり、The Barbarian GroupのAndrew Bell氏が中心となってオープンソースとして開発が進められています。 同様の思想を持つProcessingやopenFrameworksによく似ており、C++で簡単に記述できるうえ、WindowsMacOSX、iOS(iPhone/iPad)といった複数のプラットフォームをカバーしています。 細かい機能/特徴の紹介は家サイトに譲るとして、Cinderを極めるとどのぐらいクリエイティブな

    クリエイティブなC++ライブラリ "Cinder" の紹介 - Preferred Networks Research & Development
  • Programming Languages - Google Code University - Google Code

    Programming Languages Google's Python Class This is a complete online introduction to Python programming, including writen materials, lecture videos, and coding exercises. The class is geared for people with a little bit of programming experience, and is used within google to introduce Python. Below are video-taped lectures from Google Video on various technology areas. These videos are great oppo

  • C++0x基礎文法最速マスター - Faith and Brave - C++で遊ぼう

    C++0xになると、C++03でごちゃごちゃした部分がだいぶ すっきり書けるようになるので、C++0xでの入門はこんな感じになるよー、 という気持ちで書きました。 1. Hello World C++0xでの入出力には、IOStreamというものを使用します。 <<演算子でどんどんつないでいきます。 以下のプログラムの読み方は 「標準出力(cout)に"Hello World"という文字列と、改行(endl)を出力する」 です。 #include <iostream> int main() { std::cout << "Hello World" << std::endl; return 0; } Hello World coutとendlを使用するには、 #include <iostream> のように、という標準ライブラリのファイルを読み込む必要があります。 2. コメント 行コメント

    C++0x基礎文法最速マスター - Faith and Brave - C++で遊ぼう
  • 類似画像検索システムを作ろう - 人工知能に関する断創録

    C++版のOpenCVを使ってカラーヒストグラムを用いた類似画像検索を実験してみました。バッチ処理などのスクリプトはPythonを使ってますが、PerlでもRubyでも似たような感じでできます。 指定した画像と類似した画像を検索するシステムは類似画像検索システムと言います。GoogleYahoo!のイメージ検索は、クエリにキーワードを入れてキーワードに関連した画像を検索しますが、類似画像検索ではクエリに画像を与えるのが特徴的です。この分野は、Content-Based Image Retrieval (CBIR)と呼ばれており、最新のサーベイ論文(Datta,2008)を読むと1990年代前半とけっこう昔から研究されてます。 最新の手法では、色、形状、テクスチャ、特徴点などさまざまな特徴量を用いて類似度を判定するそうですが、今回は、もっとも簡単な「色」を用いた類似画像検索を実験してみます

    類似画像検索システムを作ろう - 人工知能に関する断創録
  • C++: 編集距離を求めるアルゴリズム

    編集距離(edit distance)とは二つの文字列がどの程度異なっているかを示す数値であり、レーベンシュタイン距離(Levenshtein distance)を指すことが多い。文字の挿入、削除、置換それぞれを一つの操作として必要な操作の最小数を求めるものだ。例えば、kittenとsittingの編集距離を求める場合、下記のように3回の操作でkittenをsittingに変更できるので編集距離は3となる。 1. sitten (k を s に置換) 2. sittin (e を i に置換) 3. sitting (g を挿入) そこで今回は編集距離を求める複数のアルゴリズムについてC++で実装してみた。 動的計画法 編集距離を求めるもっとも一般的なアルゴリズムは、動的計画法(dynamic programming)だろう。計算時間はO(mn)であり、手軽だ。C++で書いたコードを下に示

  • インテル Parallel Studioを使って 並列化プログラミングを試してみた

    CPUのマルチコア化に伴い、開発者にも「並列プログラミング」が必要とされる時代になってきています。5月下旬にインテルがリリースした「インテル Parallel Studio」を利用すると、使い慣れたVisual Studioの開発環境で、並列化プログラミングの様々なサポートを得ることができます。稿では、その概要やインストール方法、テスト結果などについて解説します。 はじめに IT業界はよく日進月歩だと言われます。確かに我々開発者を取り巻く環境は日々変化し、新しいテクノロジーが毎月のように発表されています。しかし、ある程度経験を積んだ開発者は、そのような変化は表面上のものだと考えます。 プログラミング言語は進化し、どんどん新しい機能が追加されてゆき、それに伴い新しい開発環境が登場します。ですが、冷静に考えてみればそう慌てることはありません。昨今騒がれている言語の新しい機能も大半が古くからあ

    インテル Parallel Studioを使って 並列化プログラミングを試してみた
  • 100行のCプログラムでWebチャットを実装する方法 - mixi engineer blog

    例の冷却ファンを修理してもらいに秋葉原に行ったのですが、最近の同人ゲームのクオリティはすごいなあと感心していたら、その二階はもっととんでもないことになってて、ひとつ大人になってしまったmikioです。今回は、Tokyo Cabinetのテンプレート直列化機能を駆使して、たった100行のCプログラムでWebチャットシステムを実装してみます。 古式ゆかしいWebチャットシステム 10年くらい前にCGIスクリプトでチャットシステムを作るのが流行していたのを覚えている方も多いと思います。チャットログは現在のようにデータベースサーバに転送して格納するのではなく、ローカルファイルシステム上のファイルにCSVやTSVなどのフォーマットで格納したり、同じくローカルのDBMファイルに格納するのが主流でした。2ちゃんねるの「datファイル」もそのようなデータファイルの一種と言えるでしょう。 その頃から、CGI

    100行のCプログラムでWebチャットを実装する方法 - mixi engineer blog
  • 【ハウツー】ゼロからはじめるWindows API - WinMain 関数 すべての始まり編 | パソコン | マイコミジャーナル

    C言語を学習するときに必ず最初に出会うことになるprintf()関数を使えば、テキストをコンソール上に表示できます。しかし、普段使っているグラフィカルなアプリケーションと同じように、ウィンドウを表示してその中に図形やコントロールを表示するには、アプリケーションを実行するシステムが公開しているAPIを利用しなければなりません。 稿では、Windows アプリケーションの開発で必要となるWindows APIを毎回1つずつピックアップして、その機能や具体的な利用法について説明します。C言語を学習して次のステップに進みたい方や、逆に.NET FrameworkやJavaなどの仮想マシン上のアプリケーション開発経験者でネイティブのプログラミングを学習したい方に、参考にしていただければと思います。 現在、多くのアプリケーションが.NET Framerowkに移行していますが、こうした新しい仮想プラ

  • WinPcapを使用したパケットモニターの作成:CodeZine

    はじめに 稿では、WinPcapを使用したパケットモニターを作成し、パケットドライバー「WinPcap」の利用方法、および取得したデータをプロトコルに従って解析する手法について紹介します。対象読者 WindowsC++を使用してネットワーク関連のプログラムを作成される方。パケットモニターの作成に興味をお持ちの方。WinPcapドライバーの利用に興味をお持ちの方。 必要な環境 サンプルプログラムは、WinPcapがインストールされているコンピュータで動作します。サンプルコードは、C++ Builder 6およびVisual C++ .NET 2003でコンパイルできます。 WinPcapについて WinPcap.exeは、http://www.winpcap.org/において、 BSDライセンスにもとづき配布されているWindows用のパケットドライバーであり、ホームページから自由にダウ

  • 1