プログラミング

C++難しい>

このコードがコンパイル通らない理由がわからない… template <class T> class Test{ public: typename T::param_type hige; }; class hoge: public Test<hoge>{ public: typedef int param_type; }; int main(){ hoge x; x.hige=0; }</hoge></class>

CRTPの勉強

先日CRTP(Curiously Recursive Template Pattern)の勉強をしたので,それのメモ. CRTPとは,基底クラスをクラステンプレートとして定義して,派生クラスでは,その基底クラスのテンプレート引数部分に自分自身を突っ込むものです. 基底クラス内で,派生ク…

Boostで正規表現

今日,I先生の正規表現についてのレクチャーを聞いた.で,PerlやRubyでやるのでは芸がないので,C++で正規表現を扱うプログラムを書いてみた.といってもC++で自前で作るのはアホなので,boost::regexを使ってみた. #include <iostream> #include <string> #include <boost/regex.hpp> int mai</boost/regex.hpp></string></iostream>…

Processingやってみた

Processingという言語がある.Javaで作られた実行環境上で動く超簡単な言語らしい.手軽に図を書いたり,音鳴らしたり,WebCamの画像処理したりできるぽい. こことかこことかが参考になるかも.Processingを知ったきっかけは,本屋でビジュアライジング・デ…

グローバルで名前付きの構造体しか認めないとか

std::for_eachを使うと,コンテナに対するループがちょっとカッコよく書けます. #include <iostream> #include <algorithm> #include <vector> void pred(int x){ std::cout << x << std::endl; } int main(){ std::vector<int> v; for(int i=0;i<10;i++) v.push_back(i); std::for_each(v.beg</int></vector></algorithm></iostream>…

ループを使わずに配列の順序を逆にしてみた

ループを使わずに配列の順序を逆にする。という問題があったのでやってみた.

C++/CLI のコンソールアプリケーションで標準エラー出力

ふと思い立って,以前作ったGUIのプログラム(C++/CLIで書いたもの)をCUI化した. そのとき,C++でいうところの std::cerr << "usage: 〜" << std::endl; みたいなことをやりたくなった.C++/CLIでは,標準出力に出力する System::Console::WriteLine("usag…

翻訳Bot

Google翻訳のAPIを使って,Tweetを日英,英日翻訳してくれるBotを作った. @en_2_ja 宛にTweetすると英日翻訳, @ja_2_en 宛にTweetすると日英翻訳です. ちゃんと動作確認してないですが,大丈夫かな. 不具合があれば教えてください.

RubyからSqlite3をさわる

インストールでいつもハマるのでメモ.OSはUbuntuです. sudo apt-get install ruby-dev sudo apt-get install rubygems sudo apt-get install sqlite3 sudo apt-get install libsqlite3-dev gem install sqlite3-ruby

OpenMPについて

初心者にありがちなミスが,forループしてるところ全部に #pragma omp parallel for for(int i=0;i

flymake-mode++

Emacs22にはflymake-modeというのがある.これは,リアルタイムに文法ミスとかのコンパイルエラー部分を強調表示してくれる. まずMakefileに, check-syntax: gcc -o null -Wall -S ${CHK_SOURCES} sample: gcc -o sample sample.c と書いておく. その後,…

Rubyで1階層だけDeepコピー

dupもcloneも浅いコピー(shallow copy:シャローコピー)だそうで,深いコピー(Deep copy:ディープコピー)するにはMarshalを使った方法が一般的です. array2 = Marshal.load(Marshal.dump(array1)); # deep copy 引用元:Rubyメモこれだとオブジェクト…

マルチプロセスでのファイル読み書き

プロセスAとプロセスBがあり,プロセスAがファイルXに書き込みを,プロセスBがファイルXから読み込みを頻繁に行っているとする. このときに,エラー無くファイルの読み書きを安全に行うにはどうすればよい?という問題が起きた.頑張って考えた解決策はこち…

C言語の char x[] と, char *x の違いを理解するためのコード

問題: int main(){ char x[] = "hoge"; char *y = "hoge"; x[0]='a'; y[0]='a'; return 0; } このコードはセグメンテーションフォールトになります.どこが悪いでしょう?

Google Code Jam 結果

今日Google Code Jamの1回戦がありましたが,…1回戦敗退しました. 悔しい.英語をもっと速く読めるようになるのと,すぱっとアルゴリズムを思いつく力をつけるのと,コードを書き始める前にちゃちゃっと設計する能力を鍛えないとダメだなぁと思いました.…

Google Code Jam

Googleが主催するプログラミングの大会がありました.昨日その存在を知ってさっそく参加登録.そして今日参加してきた.といっても手元のPCでログインして問題を解くだけですが.出題された問題をとにかく解けばよいっぽいので,Rubyでスパッと書いた.今回…

デバイス名が変わってる!

IEEE1394 接続のカメラ(PointGray社のFleaとか)は,これまで /dev/video1394/0 複数ある場合は1,2,3… とかいうデバイスファイル名になっていたが,最近のUbuntuでは, /dev/video1394-0 に変わってるぽい.いちかばちかでプログラム中の /dev/video1394/0 …

一年ぶりに九九スクリプト

ほぼ1年前に九九スクリプト書いてた.で,今見直したら,もっと短く書けるなぁということで書きなおしてみた. class Qq def initialize(n) @size=n end def kuku print (1..@size).map{|x| (1..@size).map{|y| x*y}.join("\t")}.join("\n")+"\n" end end q…

画像処理におけるマルチスレッドの利活用(OpenCV編)

次のエントリではもうちょい具体的なソースコードを書く.かも.といった手前,別のエントリは書けないということで,具体的なコードを書いてみる.今回のコードはC言語とOpenCVを使った例.動作確認はしていないので注意*1.なお,キャプチャ部分はOpenCV.j…

画像処理におけるマルチスレッドの利活用(OpenCV編):Linux版

画像処理におけるマルチスレッドの利活用(OpenCV編)ではWindows向けマルチスレッドプログラミングの紹介をしましたが,Linuxでも使えるよう,pthreadを用いたプログラムも紹介しておきます. ここでは,HANDLEの代わりにpthread_t,CreateThread関数の代わ…

画像処理におけるマルチスレッドの利活用

最近研究で,ウェブカメラ(的なもの)から画像をとってきて画像処理(追跡とか重い処理)をすることがあります. このとき,「画像をとってくる」処理は結構「待ち時間」があるので,リアルタイム処理をするときに困ります. そこで,時間のかかる画像処理…

proxy 経由の Twitter4R

サーバラックの温度をTwitterへ出力するbotを書いた.そのときProxy越しにポストする必要があったので,そのメモ.id:takahirox さんのrubygems の twitter を使ったクライアントスクリプト ( プロキシ対応 ) を参考にプログラムを作ったんだけど, Twitter:…

ライフゲーム

Rubyでライフゲームを作ってみた.起動後,10x10みたいな感じでフィールドの大きさを入力. あとはEnterを押すと世代が一つずつ進んでいく.また,座標の指定をすれば,その座標の生死を切り替えられる.以下にソースコードを示す.lifegame.rb #!/usr/bin/e…

attr_readerとかの仕組み

Rubyネタです.Rubyではクラスを class Salut def initialize @msg="hello" @count=10 end end sa = Salut.new のように定義し,利用する.ちなみに@msg,@countはインスタンス変数.で,このインスタンス変数に外部からアクセスしたいときには,通常はアクセ…

やっぱりこっちのほうがしっくりくる

研究の一環で,あるウェブアプリケーションを実装することになっていて,PHPで実装した.僕は特にanti PHP&Ruby信者ということではないが,なんだかPHPは書きにくい.ついつい同じものをRubyで書いてみたところ,かなりすっきり書けてしまったので,Ruby版…

OpenCVのプログラムがCGIから呼び出せない

Windows + Apache + RubyでCGIを作り,リクエストがきたらOpenCVを使ったプログラム(Visualize.exe)で画像を生成してそれを返すものを作った.テストとして,ローカルでVisualize.exeを実行すると,正しく実行されて処理結果の画像が生成された.しかし,C…

テレビ出演

作ったプログラムがテレビ出演&新聞に載りました. NHK全国 NHK京都放送局 読売新聞 京都新聞 テレビはほとんど先生へのインタビューで終わった…. NHKの記事はこちら 防犯カメラの映像を自動的に処理して、映っている人を棒のような画像に置き換えるシステ…

Pythonでi18nizer

Python勉強中なので,Pythonでi18nizer.pyを作ってみた. コードは以下. #!/usr/bin/env python3 import sys import re def i18nize(token): length=len(token) if(length > 2): val=str(len(token[1:length-1])) return token[0:1]+val+token[length-1:len…

スーパーカリフラジリスティックエクスピアリドーシャスに対してi18nizer

長い単語で有名な Supercalifragilisticexpialidocious に対して,i18niserを実行してみると・・・ S32sが正しく出力された.ついでに,世界一長い英単語(1913文字) Methionylglutaminylarginyltyrosylglutamylserylleucylphenylalanylalanylglutaminylleucyl…

i18nizer

どんな文字列もi18n な表記に変えてしまうスクリプトをRubyで書いてみた. #!/usr/bin/env ruby # i18nのような表記に変換するブロック i18nize=lambda do | token | if token.length > 2 num=token[1..token.length-2].length token[0,1] + num.to_s + toke…