プログラミング

makeplex presents 史上最強のプログラマー検定試験提出回答

深さ優先探索 初めに待ちを固定して手に加えた状態から探索開始 深さ0〜3では順子・刻子を全数検査 深さ4では頭を全数検査 解となる文字列の生成ではどの順子・刻子・頭に待ちがあるかを固定して生成 重複した解が出力されないようsetを使用 途中状態をメモ…

Visual Studio 2010 RCでコンパイル時にIDEごと落ちるバグの対処法

Visual Studo 2010 RCを使っている。オンザフライでコンパイルエラーを表示してくれたり、インテリセンスが強化されていたりと、個人的には大変気に入っている。以前Visual Studio 2010 RCを使っていて、コンパイル時にIDEごと落ちるバグに会ってしまい、再…

LLVMでSSE組み込み関数を使う

現在LLVMがマイブームである。今日ふと思い立ってSSE組み込み関数が含まれたC++のコードがllvm-g++でどのように変換されるのか試してみた。元のC++ソースコードは以下の通り。 #include <nmmintrin.h> void add(float* x, float* y, float*z) { _mm_storeu_ps(z, _mm_add_</nmmintrin.h>…

TR1以前のhash_mapをVisual Studio 2008とgccの両方で使う方法

趣味で書いているコードでハッシュを使った連想コンテナを使いたいのにTR1のunordered_mapが使えないという状況に遭遇した。仕方なくhash_mapで実装することにした。ところがVisual Studio 2008とgccで仕様が異なっており、コード互換性をとるために四苦八苦…

LLVMをVisual Studio 2008でコンパイルする

LLVMで遊ぼうと思い、ソースコードを落としてコンパイルを始めた。ところがインストラクション通りにやっているはずなのに上手くいかない。試行錯誤していくうちに何とかコンパイルすることができた。その時の手順を備忘録がてら書いていくことにする。 ソー…

Range Coder

Range Coderは現在最も良く使われているエントロピー符号化の一つである。最近Range Coderを使う機会があり、ネット上のライブラリを使っていた。しばらく問題なく使えていたのだが、ある時を境にテストコードが通らなくなった。サイズの小さいテストで失敗…

Pukiwiki 高速化

研究室で教授から研究室Wikiの動作が遅いので何とかして欲しいと頼まれた。研究室で使用しているWikiはPukiwikiで、主に研究室ゼミで使用する発表資料の共有等に使用されている。一番表示に時間がかかるのがこの発表資料を共有するページである。使用ポリシ…

MaximaでC言語風に出力させる

Maximaを使っていてすぐに困ったことが起こった。Maximaの出力をC系のプログラムに書き起こそうとすると移し間違いをするというものだ。これは痛い。時間のロスでしかない。 そこでC言語風に出力する方法が無いかと調べてみたところ、普通に見つかった。 Max…

Google Plugin for Eclipseを使い倒す

先日導入したGoogle Plugin for EclipseはCypalStudioに比べて微妙に機能が貧弱かつ使い勝手が悪いように思う。特にCypalStudioで行えたwarファイルのエクスポートが出来ないのがかなり痛い。これをどうにかしてみる。 まずeclipseを終了。続いてプロジェク…

類似画像検索エンジン詳細

今回作り直した類似画像検索エンジンの一番のポイントは特徴量ベクトルの差の絶対値の和を取る部分です。これはSSE2命令を使うとシンプルかつ高速なものを書く事が出来ます。具体的には「sad」系の命令を使って、 __m128i sad = _mm_add_epi16(_mm_sad_epu8(…

pixiv類似画像検索サービスβ公開

pixiv上の類似画像を検索するサービスpixivFinderを公開しました。 pya!向けに提供しているオイラーセンサー3をpixiv向けに改良したものです。より多くの画像に対応するために検索エンジン部分を高速化しました。 データベースにはpixivのイラスト番号の若い…

eclipseの64bit版をインストールしてみた

ふと思い立って研究室のPCにeclipseの64bit版をインストールしてみた。 以前インストールしたときにはsubversionプラグインであるsubversive/subclipseが動かず、元の32bit版を入れなおした。最近subclipseのメジャーバージョンアップがあったので、動いたら…

検索サーバーを書き終えた

pixiv類似画像検索サービスの検索サーバーの部分を書き終えた。70万枚の画像の類似画像検索で32msくらいだった。これなら十分行けると思う。次はクライアントインターフェースとサーブレットの記述だ。

pixiv類似画像検索エンジンの構想

pya!類似画像検索エンジンを移植しようと考えているのだが、そのまま移植すると速度が問題となると思われる。pya!類似画像検索エンジンでは検索部分にSQL文を使用して保守性を高めているのだが、それほど速くはない。5万画像の検索が数秒という感じだ。この…

pixiv類似画像検索サービス

かなり前に作ったオイラーセンサー3の類似画像検索エンジンを流用して、pixiv限定の類似画像検索エンジンを作成中。利用用途は全く持って不明。作る理由は「そこにpixivと類似画像検索エンジンがあるから」である。

オープンソフトの改良

あるオープンソフトをいじっている。処理速度に不満があるので少しでも速度を上げようとしているのだが、あまり上がらない。実力の限界を感じてしまう・・・。

GWT1.6正式版 & Google Plugin for Eclipse

自分がこよなく愛するGoogle Web Toolkitの最新版が公開された。今回の目玉は一新されたイベントハンドラ。前より少しだけ使いやすくなった気がする。 GWTの最新版と同時にGoogle Plugin for EclipseというGoogle公式のeclipse用プラグインが公開された。イ…

SSE Intrinsic命令まとめ

まとめて書いてるやつが無かったので自分で書いてみた。殆どMSDNのぱくり。 関数名 型 内容 詳細 備考 _mm_add_ss float 和 r0 := a0 + b0r1 := a1r2 := a2r3 := a3 _mm_add_ps float 和 r0 := a0 + b0r1 := a1 + b1r2 := a2 + b2r3 := a3 + b3 _mm_sub_ss f…

プログラミング談義

今日大学で海外から研究室に来ている研究員の方とお話しする機会があった。最初は学術的な話ではなく単なる雑談だったのだが、雑談の内容が一転して研究員の研究分野の話になった。 話していた内容はプログラミングの事。特に日本でのプログラミング教育はど…

【プログラミング】 Let's ICPC 入門編 (3) 【コンテスト】

新作をアップロードしました。 今回はあまり面白くはありません。次回からアルゴリズムの話に入っていく予定です。

Google Collection LibraryのMapMakerが使いやすい

Google Collection Libraryはその名の通りGoogleが作っているオープンソースのJavaコレクションライブラリである。少し前に自分の作っているプログラムの中でキャッシュを実装しなければならないシチュエーションに遭遇したとき、このGoogle Collection Libr…

fwrite()で書きこんだバイナリが崩れる

fopen()でテキストモードでファイルを開いてfwrite()すると、改行コードに相当するバイトがLFからCR+LFに自動変換される場合があるらしい。このときはfopenの第二引数に"b"を追加すればバイナリモードで開いてくれる。 バイナリファイルを書き込むプログラム…