2010年05月06日 rubyとpythonのarrayとlist
_ 配列に関するコマンドの違い
久々にpythonの勉強を再開した。頭がrubyで硬度9ぐらい固いので、なかなかpythonが覚えられないが、クネクネと柔らかくしていかなければならない。今回は、いわゆる配列に関するコマンドをまとめてみた。python | ruby |
l=['0','1','2'] | a=['0','1','2'] or %w(1 2 3) |
l[1] | a[1] |
l[1:2] | a[1...2] or a.slice(1...2) |
len(l) | a.size or a.length |
l.append('3') | a.push('3') or a<<'3' |
l.pop() | a.pop |
l.extend(['3','4']) | a.concat(['3','4']) |
l.sort() | a.sort! |
l.index('2') | a.index('2') |
l.reverse() | a.reverse! |
del(l[1]) | a.delete_at(1) |
del(l[1:2]) | a.slice!(1..2) |
l.insert(1,'0.5') | a.insert(1,'0.5') |
l.remove('1') | a.delete('1') |
'3' in l | a.include?('3') |
2010年05月07日 rubyとpythonのhashとdictionnary
_ 連想配列に関するコマンドの違い
昨日に引き続き、いわゆる連想配列に関するpythonとrubyコマンドをまとめてみた。python | ruby |
d={'a':1,'b':2} | h={'a'=>1,'b'=>2} |
d['a'] | h['a'] |
d.has_key('b') or 'b' in d | h.has_key?('b') or h.key?('b') or h.include? or h.member? |
d.keys() | h.keys |
d.values() | h.values |
d.clear() | h.clear |
d.copy() | h.clone |
d.get('c',0) | h.fetch('c',0) |
d.update(d1) | h.update(h1) |
len(d) | h.size or h.length |
del(d['b']) | h.delete('b') |
d.items() | h.to_a |
d.popitem() | h.shift |
2010年05月08日 rubyとpythonのstring
_ 文字列に関するコマンドの違い
文字列に関するpythonとrubyコマンドをまとめてみたが、文字列操作はややこしく、表では表しきれていない部分も多い。python | ruby 1.8 and 1.9 |
s="2010's" | s="2010's" or %Q(2010's) |
s='"2010"' | s=%Q'"2010"' |
s=r'c:\user' | s='c:\user' or %q(c:\user) |
s=u'\u9300' | s="\u9300"(1.9) |
s=u'\U00028b46' | s="\u{028b46}"(1.9) |
s="%dK,%fPa"%(273,1024) | s="%dK,%fPa"%[273,1024] |
s="""first | s="first |
second"""" | second" |
s[2] | s[2,1] or s[2].chr(1.8) and s[2](1.9) |
s[1:3] | s[1...3] or slice(1...3) |
len(s) | s.size or s.length |
int("1") | "1".to_i |
float("3.14") | "3.14".to_f |
s.count('0') | s.count('0') |
s.capitalize() | s.capitalize |
s.swapcase() | s.swapcase |
s.upper() | s.upcase |
s.lower() | s.downcase |
s.center(10) | s.center(10) |
s.ljust(10) | s.ljust(10) |
s.rjust(10) | s.rjust(10) |
s.strip() | s.strip |
s.lstrip() | s.lstrip |
s.rstrip() | s.rstrip |
s.find('1') | s.index('1') |
s.rfind('1') | s.rindex('1') |
s.split(',') | s.split(/,/) |
",".join(["a","b"]) | ["a","b"].join(",") |
s.replace('a','A') | s.gsub!(/a/){'A'} |
s.replace('a','A',1) | s.sub!(/a/){'A'} |
2010年05月09日 rubyとpythonのnumeric
_ 数値に関するコマンドの違い
数値に関するpythonとrubyコマンドをまとめてみた。通常の演算を除くと、意外に少ないが、これ以外にもいろいろとあると思う。python | ruby |
n=9999999999L | n=9999999999 |
0177 | 0177 |
0xff | 0xff |
3+4J | Complex(3,4) (require "complex") |
oct(314) | 314.to_s(8) |
hex(314) | 314.to_s(16) |
int('111',8) | '111'.to_i(8) or '111'.oct |
int('111',16) | '111'.to_i(16) or '111'.hex |
2010年05月10日 AVRのwait
_ ループは無視か
久々にAVRをいじって、制御用の装置を作っている。tiny2313をつかっているのだが、waitをかけるのに苦労した。昔はひたすらループを作っておいて、適当な時間になるように調整したら、うまくいった気がするのだが、なぜか数マイクロ秒しかかからない。コンパイラが最適化してしまってうまくいかないのかな。仕方が無いのでタイマーを使おうとしたが、割り込みを禁止していたので、うまく動かない。いろいろと調べていたら、ウェイトをかけるルーチンがあるようだ。#define F_CPU 1000000 /* 1MHz */ #include <util/delay.h>と宣言しておくと、_delay_us(100)とすると、マイクロ秒単位でwaitが指定できる。_delay_msも使えるようだ。これを使ったら、思ったとおりの挙動をしたが、装置の完成にはもう少し調整が必要なようだ。
2010年05月11日 Wineのfont
_ ttf-mscorefonts-installer
久しぶりにWindows用のソフトを使わざるを得なくなったので、仕方なくwineでインストールした。いざソフトを起動すると、いくつかのフォントが無いと言われた。aptitude searchでfontとmsで検索すると、ttf-mscorefonts-installerというものが見つかったので、インストールしてみたら、フォントが無いというエラーは無くなった。これでwineでうまく動くと良いな。
2010年05月30日 tdiaryの引越し
_ webサーバーの更新
もうすぐ、このblogを動かしているサーバーが更新される。rubyも1.6から1.8になるようなので、新しいtdiaryを入れようと計画している。しかし問題なのは、データの移行である。まだtdiaryのデータ構造を理解していなので、この記事を投稿したときに、どのファイルのサイズが変化するか調べてみよう。
_ 2010/5/30追記
201005.td2のサイズが変わったので、このバイナリが本文を記録しているファイルらしい。