なんかgoogle fusion tables が社内で流行ってるみたいなので、google my mapみたいなんを作ってみた。
「京都おすすめ平田マップ」
普通の観光案内にはあんまりでない場所を中心に京都で行きつけだった場所をまとめる感じで作ってみました。(まったくもって未完成、西陣方面と百万遍方面ばっかりですな。)
visualize->mapで地図が出ます。
感じたこと:
1.入力UIは分かりやすくて便利。
2.自動geo codingは便利。だけど京都の地名はその特殊性によりあんまし精度でない。(〇〇通り東入るとか)
この点に関しては、手動で『ジオどす』京都通り名ジオコーダ API を利用した。
3.画像出したり、種類別にピンの位置変えたり、iPhoneから表示できないものかな?あとリンク先が地図にはできないものだろうか?
4.こんな使い方ならmy mapのほうがいいかも。でもAPIも廃止されたし今後が不安。入力UIもfusion tablesのほうがいいな。いっそ共同編集にしたらどうだろう?
あ、ブログ埋込みの仕方分かったのでやって見る。
2011年08月17日
2011年01月07日
csvファイルのフォーマットを変換する2(Ruby)
前記事では、データにコンマが入っているcsvファイルには対応していないので別バージョンを作りました。
# encoding:utf-8
require "csv"
def make99(n=9,filename="99.csv") #九九のファイルを作る。
foo = File.open(filename,'w')
for i in 1..n
foo.print "A,B,"
for j in 1..9
foo.print i*j
foo.print ","
end
foo.puts " \n"
end
foo.close
end
def edit_csv2(namer,namew)
writer=CSV.open(namew,'w')
CSV.open(namer,'r') do |txt|
txtAryr =txt.to_a
txtAryw = txt.to_a#書き込み用に同じものを作っておく
#ここにやりたい処理を書く 以下は例
txtAryw[4],txtAryw[3]=txtAryr[3],txtAryr[4]#順番交代
txtAryw[1,2]=[]#削除
txtAryw[4,2]=["A,B","C"]#挿入
##################################
writer<<txtAryw #書き出し
end
writer.close
end
make99()
edit_csv2("99.csv","99_2.csv")
2011年01月06日
csv tsvファイルのフォーマットを変換する(Ruby)
Rubyの練習にcsv tsvのファイルフォーマット変換器を作ってみました。
csvのデータの中にコンマが入っている場合は対応していません。
列の入れ替えや、列の挿入、列の削除などの作業が簡単にできます。
こういう簡単な作業にいちいちエクセルを開くと非効率ですしね。
例では九九表を作りそれをいろいろいじっています。
csvのデータの中にコンマが入っている場合は対応していません。
列の入れ替えや、列の挿入、列の削除などの作業が簡単にできます。
こういう簡単な作業にいちいちエクセルを開くと非効率ですしね。
例では九九表を作りそれをいろいろいじっています。
# encoding:utf-8
def edit_csv(namer,namew,spr="\t",spw="\t")
#読み込みファイル名 書き込みファイル名 読み込み用区切り文字 書き込み用区切り文字
fh = open(namer,"r")
fw= open(namew,"w")
while !fh.eof
txt = fh.gets.chomp! #一行読む 改行記号を削る。
txtAryr = txt.split(spw) #読み込み用区切り文字
txtAryw = txt.split(spw) #書き込み用に同じものを作っておく
#ここにやりたい処理を書く 以下は例#############
txtAryw[4],txtAryw[3]=txtAryr[3],txtAryr[4]#順番交代
txtAryw[2,1]=[]#削除
txtAryw[4,2]=["A","B"]#挿入
###############################################
txtAryw.each do |word|
fw.print word
fw.print spr #書き込み用区切り文字
end
fw.print "\n"
end
fh.close
end
def make99(n=9,filename="99.tsv") #九九のファイルを作る。
foo = File.open(filename,'w')
for i in 1..n
for j in 1..9
foo.print i*j
foo.print "\t"
end
foo.puts "\n"
end
foo.close
end
make99()
edit_csv("99.tsv","99_mod.tsv")
2010年09月01日
iPadで読む電子書籍について
iPadをもって大体一ヶ月。アプリ購入や、自炊などでいろいろ本を入れてみた感想を種類別に記します。
1.iPad用に作成された電子書籍。
例:元素図鑑、Alice in Wonderland、Design Classics
これらは、iPadの性能をフルに生かし素晴らしい出来です。例えるならハリーポッターに出てくる動く新聞。紙を凌駕しています。才気あるクリエイターは作成に挑戦して欲しいです。
2.フォントが内包された本。
いわゆる電子書籍です。青空文庫など。論文のpdfをi文庫にHDに入れて読んだりもしています。読みやすいです。
3.フォントが内包されていない画像形式の本。
元サイズがiPadより大きいものは一画面一ページでは文字が霞んで読みにくくなります(scan時の設定と讀人に依存)。次のバージョンのiPadでは解像度がよくなって改善されるでしょう。ある程度のフォントの霞みなら、画面を遠くに離すことにより、脳に補完させ、ストレスなしに読むことが可能です。
3-1.雑誌
雑誌はたいてい元サイズがiPadより大きいですが、雑誌はトピックを選んで読むものなので、気になる記事だけ拡大して読めばOKです。Newsweek日本版を購読し始めましたが、快適です。
3-2.漫画
白黒が鮮明で紙より綺麗です。大判の漫画を入れることはまだ試していません。早く各漫画雑誌から好きな漫画だけを購入でき、毎週届けてくれる時代になって欲しいです。
3-3.小説
元が文庫本だと問題ないです。
3-4.技術書
元サイズが大判なものが多く文字が霞むので通読には多少ストレスを感じます。(同居人は全く問題ないといっています。)必要な箇所だけ読むなら問題ないと思います。
1.iPad用に作成された電子書籍。
例:元素図鑑、Alice in Wonderland、Design Classics
これらは、iPadの性能をフルに生かし素晴らしい出来です。例えるならハリーポッターに出てくる動く新聞。紙を凌駕しています。才気あるクリエイターは作成に挑戦して欲しいです。
2.フォントが内包された本。
いわゆる電子書籍です。青空文庫など。論文のpdfをi文庫にHDに入れて読んだりもしています。読みやすいです。
3.フォントが内包されていない画像形式の本。
元サイズがiPadより大きいものは一画面一ページでは文字が霞んで読みにくくなります(scan時の設定と讀人に依存)。次のバージョンのiPadでは解像度がよくなって改善されるでしょう。ある程度のフォントの霞みなら、画面を遠くに離すことにより、脳に補完させ、ストレスなしに読むことが可能です。
3-1.雑誌
雑誌はたいてい元サイズがiPadより大きいですが、雑誌はトピックを選んで読むものなので、気になる記事だけ拡大して読めばOKです。Newsweek日本版を購読し始めましたが、快適です。
3-2.漫画
白黒が鮮明で紙より綺麗です。大判の漫画を入れることはまだ試していません。早く各漫画雑誌から好きな漫画だけを購入でき、毎週届けてくれる時代になって欲しいです。
3-3.小説
元が文庫本だと問題ないです。
3-4.技術書
元サイズが大判なものが多く文字が霞むので通読には多少ストレスを感じます。(同居人は全く問題ないといっています。)必要な箇所だけ読むなら問題ないと思います。
2010年08月19日
文字列の分割 C++
C++にはsplit関数がないので文字列を分割するのが面倒です。
Cにあるstrtok関数を使うのも面倒なので、検索関数findと部分列取り出し関数substrを用いて、文字列を二つに分けるサンプルコードを書いてみました。サンプルコードでは絶対パスの文字列を分割し、ファイル名を取り出しています。
Cにあるstrtok関数を使うのも面倒なので、検索関数findと部分列取り出し関数substrを用いて、文字列を二つに分けるサンプルコードを書いてみました。サンプルコードでは絶対パスの文字列を分割し、ファイル名を取り出しています。
string inputfilename="a\\b\\c\\ddd.txt";
int div;//分割ポイント
div=inputfilename.find_last_of("\\")+1;//+1は次の文字列を\\の後からはじめさせるため。
string firststr,laststr;
laststr=inputfilename.substr(div);//ddd.txt divから最後までを取り出す。
firststr=inputfilename.substr(0,div);// a\\b\\c\\ 最初からdiv前まで取り出す。
2010年08月04日
おひさしぶりです。
五月、六月は大阪に出張に行ってきました。まいにちまいにちC++のコード書いてました。ご飯が安くておいしかったのがいい思い出です。
昨日iPadを購入しました。元素図鑑を早速ダウンロードしたのですが、かなりいい感じです。そもそも読書用に買ったので、i文庫HDもダウンロードしました。ドグラマグラがプレインストールされているのが素敵です。
そろそろまた引越しをするので、どんどん持っている本を電子化しiPadに入れていく所存です。これでやっと重いPC、重い本を持ち運ぶ苦しみから解放される…。
昨日iPadを購入しました。元素図鑑を早速ダウンロードしたのですが、かなりいい感じです。そもそも読書用に買ったので、i文庫HDもダウンロードしました。ドグラマグラがプレインストールされているのが素敵です。
そろそろまた引越しをするので、どんどん持っている本を電子化しiPadに入れていく所存です。これでやっと重いPC、重い本を持ち運ぶ苦しみから解放される…。
2010年05月24日
using namespace stdの位置
関数の引数に*string を使うところがあって、コンパイルエラーが出ていた。
using namespace stdの位置を使う前に移動させると、通るようになった。
ググって調べてみたのですがusing namespace std;は名前空間の汚染になるので使わない方が良いみたいですね。
using namespace stdの位置を使う前に移動させると、通るようになった。
ググって調べてみたのですがusing namespace std;は名前空間の汚染になるので使わない方が良いみたいですね。
2010年05月20日
C++ stringクラスの使いかた サンプルコード
再びメモ
string str1("hello");
string str2("world");
string str3;
cin>>str3;
//自然な入力ができる。
string str;
str=str1+str3+str2;
//文字列の足し算、等号ができる。
cout<<str<<endl;
//出力ができる。
char c[80];
strcpy(c,str.c_str());
//charに直せる。
cout<<c;
string str1("hello");
string str2("world");
string str3;
cin>>str3;
//自然な入力ができる。
string str;
str=str1+str3+str2;
//文字列の足し算、等号ができる。
cout<<str<<endl;
//出力ができる。
char c[80];
strcpy(c,str.c_str());
//charに直せる。
cout<<c;
タグ:C++
C++ ファイルバイナリ出力 サンプルコード memcpyの使用法。
C++においてfloatをバイナリ入出力することが必要になり、学習したのでメモ。
//////////////////////////////////////////////////////
float f;
f=-3.14/100;
cout<<f<<endl;
char fw[4];
memcpy(fw,&f,sizeof(float));
//char fw[]<float <f
ofstream ofs( "floatio.bin" ,ios::out|ios::binary) ;//output
ofs.write(fw,sizeof(float));
ofs.close();
//file<<char fw[]
char fr[4];
ifstream ifs( "floatio.bin" ,ios::in|ios::binary) ;
ifs.read(fr,sizeof(float));
//char fr[]<<file
float f2;
memcpy(&f2,fr,sizeof(float));
//float f2<<char fr[]
cout<<f2<<endl;
float f3;
memcpy(&f3,&f2,sizeof(float));
//float f3 << float f2;
cout<<f3;
///////////////////////////////////////////
出力結果
-0.0314
-0.0314
-0.0314
//////////////////////////////////////////////////////
float f;
f=-3.14/100;
cout<<f<<endl;
char fw[4];
memcpy(fw,&f,sizeof(float));
//char fw[]<float <f
ofstream ofs( "floatio.bin" ,ios::out|ios::binary) ;//output
ofs.write(fw,sizeof(float));
ofs.close();
//file<<char fw[]
char fr[4];
ifstream ifs( "floatio.bin" ,ios::in|ios::binary) ;
ifs.read(fr,sizeof(float));
//char fr[]<<file
float f2;
memcpy(&f2,fr,sizeof(float));
//float f2<<char fr[]
cout<<f2<<endl;
float f3;
memcpy(&f3,&f2,sizeof(float));
//float f3 << float f2;
cout<<f3;
///////////////////////////////////////////
出力結果
-0.0314
-0.0314
-0.0314
2010年05月14日
この年になってもまだオイラー角に悩まされる。
ベクトルの変換、座標軸の変換、元から先、先から元の4種類あってどれがどれか、物理をずっとやってたのにまだ混乱します。
今回の仕事では角度がいつもと逆だったり、ヨーロールピッチだったり。
右手系から左手系へと移っていたら、公式通りいかないので、わからなくなったら原理に戻ってノートを書きました。
だいたい物理学、学部一、二回生向けです。
というわけでまとめノート。
e_iたちを元の基準ベクトル(面倒なので以下太字にしない)、これをe'_i→e''_i→e'''_iと回転することを考えます。
e'_j=R_1^{ji} e_i
e''_j=R_2^{ji} e'_i
e'''_j=R_3^{ji} e'_i
と変換されるとする。
すると
e'''_j=e_i (R_3 R_2 R_1) ^{ij}
両辺にv_jをかけてjで和をとって
v_j e'''_j=e_i (R_3 R_2 R_1) ^{ij} v_j
つまり、先でvのベクトルは前の座標では
(R_3 R_2 R_1)vであったことがわかります。
今回の仕事では角度がいつもと逆だったり、ヨーロールピッチだったり。
右手系から左手系へと移っていたら、公式通りいかないので、わからなくなったら原理に戻ってノートを書きました。
だいたい物理学、学部一、二回生向けです。
というわけでまとめノート。
e_iたちを元の基準ベクトル(面倒なので以下太字にしない)、これをe'_i→e''_i→e'''_iと回転することを考えます。
e'_j=R_1^{ji} e_i
e''_j=R_2^{ji} e'_i
e'''_j=R_3^{ji} e'_i
と変換されるとする。
すると
e'''_j=e_i (R_3 R_2 R_1) ^{ij}
両辺にv_jをかけてjで和をとって
v_j e'''_j=e_i (R_3 R_2 R_1) ^{ij} v_j
つまり、先でvのベクトルは前の座標では
(R_3 R_2 R_1)vであったことがわかります。

