2009年8月31日月曜日

BrooksのPresentation

Rodoney BrooksPresentationを見つけました。
新しく興したHeartland Roboticsで人と共存できるロボットの開発を行っているそうです。現代AIの一つの潮流である身体性のきっかけとなったSubsumption Architectureを開発し、またiRobotでRoombaを開発したBrooksですので、産業用ロボットへの新しい風を吹き込んでくれるものと期待しています。

でも、昔は・・・な感じでしたが、今ではいいおじさんになりましたねえ(^^;

2009年8月30日日曜日

洗濯機修理失敗(^^;

洗濯機が回転時に轟音を発するようになったので

洗濯機の修理
ベルト緩み調整・ベルト交換

などを参考に修理するつもりでしたが、横倒ししてびっくり。なんと世界初の直接駆動(Direct Drive)方式の洗濯機でした(^^; よってベルト調整などは出来ず、掃除だけして戻しました(^^;

2009年8月29日土曜日

Youtube University

大学の講義もYoutubeで展開しているんですねえ。おもしろい時代です。

UC Berkelay
MIT
CMU
Stanford

その他たくさん
大学
University

2009年8月25日火曜日

Firefox:places.sqliteの最適化アドオン も一つ

と思ったら、こんなのもありました(^^;

Vacuum Places Improved


若干Improveしていて、指定回Firefoxを立ち上げるごとに自動的に圧縮するとか、何回かFirefoxが立ち上がるまでアイコンを見せないとか出来ます。とはいえ

Vacuum Places

でも指定回立ち上げごとの圧縮がないだけですが。

で、Vacuum Placesで圧縮後、Vacuum Places ImprovedをかけてみましたがImproveはしませんでした(^^; 性能は同じ?

Firefox:places.sqliteの最適化アドオン

窓の杜に

肥大化した「Firefox」の内部データベースをボタン一発で最適化「Vacuum Places」


というのがあったので試してみました。最近とても立ち上がりが遅くなっていたので。結果、データベースplaces.sqliteは157MBから117MBへと40MBほど小さくなり、立ち上がりも気のせいかもしれませんが速くなったようです(^^V

places.sqlite はVistaでは

C:\Users\(ユーザ名)\AppData\Roaming\Mozilla\Firefox\Profiles\(ややこしいフォルダ名)

の中にあります。

使い方はインストールしてFirefoxを再立ち上げするとステータスバー(Firefoxの下部に出てるやつです)の右側にギアのようなマーク(このページにあるマークです)が出ているので、これをクリックするか、右クリックして’Vacuum Places Now'を選択するかです。しばらくすると圧縮終了のメッセージが出ます。それまではFirefoxは無反応状態です。

2009年8月24日月曜日

Ruby:[BUG] object allocation during garbage collection phase

多分win32oleを使うからかと思うのですが、ときどき

[BUG] object allocation during garbage collection phase

というエラーメッセージが出てきてRubyが落ちてしまいます。ここら辺にはもう直っているように書いてあるのですが、Ruby1.8.6、1.8.7、1.9.1のどれでやってもだめです。困った困った。

Ruby, wxRubyバージョンアップ

以前、wxRubyをRuby1.9で利用しようとしたらエラーが出て挫折していました。多分、'wx'ライブラリが利用できないよというようなエラーだったと思います。今日はここからwxruby-2.0.0-x86-mingw32.gemを落としてgem install wxruby-2.0.0-x86-mingw32.gem とインストールしようとしました。ようやく、おびただしいなんとか.dllがないという警告を1つ1つdllをダウンロードして切り抜け、さあっ、と思ったら最後に
プロシージャエントリポイント rl_vi_editing_modeがダイナミックリンクライブラリreadline.dllから見つかりませんでした。

なんですか、これは(^^; ついにあきらめ先ほどのホームページから今度はmingw32-ruby-1.9.1-wxruby-2.0.0-setup.exeをダウンロードして、インストール。無事インストールできましたが、こっちはwxRubyの下にRuby1.9がインストールされるようです。が、まあとにかくRuby1.9でwxRubyが使えるようにはなりました。

2009年8月22日土曜日

BlogのLayoutを変えてみました

前のLayoutは幅が狭かったので変えてみました。これでWindow幅いっぱいまで見えますね。

Ruby:’(シングルクォーテーション)と”(ダブルクォーテーション)の違い

いままであまり意識してなかったんですが、メッセージボックスに2行のメッセージを入れようとしてシングルクォーテーションでは改行がうまくはいらなかったので分かりました(^^;

msg1 = 'abc'
msg2 = 'def'
msg = msg1+'\n'+msg2
Wx::MessageDialog.new(nil, msg, 'Message', Wx::OK | Wx::CANCEL)

だと メッセージが

abc\ndef

としかなりませんが、ダブルクォーテーションを使う(msg = msg1+"\n"+msg2)と

abc
def

となります。

すでにFAQのようです(^^; というより仕様か。

[Ruby]シングルクォートとダブルクォートの違い
【Ruby】Hello World(文字列出力)


実行速度にも変わりはないとか。

Rubyのシングルクォートとダブルクォートは、実行速度には差が無い

RubyでExcel操作:Cellの属性設定

Excelのセルの属性の設定方法。

sheet は現在のActiveSheet。
sheet.Range(’A1').Value = ’abc'   #値の設定
sheet.Range(’A1').Interior.ColorIndex = 8   # 色の設定 light blue
sheet.Range(’A1').HorizontalAlignment = ExcelConst::XlCenter # 水平配置
sheet.Range(’A1').VerticalAlignment = ExcelConst::XlCenter   # 垂直配置
sheet.Range(’A1').NumberFormatLocal = "0_ "            # 数値出力フォーマット

設定する値の詳細はExcelでマクロで記録して確かめるか、Microsoft Excel Constants [Excel 2003 VBA Language Reference]を参照してください。

RubyでExcel操作:Cellの直接アクセス

がんばって文字変換などでセル位置を計算したと思ったら

sheet.Cells(50,1).Value = 'abc'

で、直接セルの行番号、列番号指定でアクセスできることが判明(^^;

2009年8月20日木曜日

RubyでExcel操作:Cell位置制御のための文字変換

ExcelのCell位置をRubyから制御するにはExcelのセル番号?の'A1'とかを指定しないといけません。数値で(1,1)とか指定できそうなものですが、いまだに出来ておりません(^^; 数値で指定できないと'A1'などを添え字として使わなければなりませんが、これをデータ数に応じて増やしていくには足し算をしないといけません。'A1'の5列先は'F1'だとかいう計算ですが、文字のままでは足し算できません。そこで

ASCII文字をコード値に(コード値をASCII文字に)変換する


にあるようにコード値を使って計算します。'A'のコード値に1を足すと’B’となります。すなわち

 col = 'A'
 col = (col[0] + 1).chr #->'B'

のような感じです。
’A1'から列を増やしていくには、
  
 col = 'A'
 col = (col[0]+1).chr # calculate column number
 cellNo = col + '1'

となります。

さらに’Z1’まで行くと、次は’AA1’となりますので、26のmoduloを使って対応する必要があります。

もっと簡単な方法はないのでしょうか?

Excelの列数制限

RubyからExcelを使っているとどんどん列数が増えていきました(^^; ところがあるところに来ると列が増えない(^^; で、調べましたら以下のようになっていました。
         Excel 2003     Excel 2007
列数 256(28)    16,384(214
行数 65,536(216) 1,048,576(220

だそうで(^^;

OpenOffice 3.XのCalcでは列数1024、行数65,536だそうだ。

とはいえ、OpenOfficeでwin32oleを使うのもいまさら大変なのでとりあえずExcel2003で行くか・・・

2009年8月16日日曜日

RubyでExcel操作:関連URL

備忘録としてさらにいくつかの参考URLを。

みなさんに参照されている  RubyでExcel はリンク切れなのでアーカイバで見つける。
jiヒヒeの日記
pure Ruby の Excelファイル操作ライブラリ - Spreadsheet
Spreadsheet スプレッドシートを一般的に扱うライブラリらしい
[Ruby] Excel ファイルの内容を Ruby を使って高速取得する
RubyでExcelのWorkSheetを追加する。

おいおい見ていこうと思います。

2009年8月15日土曜日

RubyでExcel操作

win32oleを利用するとRubyやPython、JavaなどからOfficeなどのWindowsアプリケーションが操作できます。ExcelをRubyから使いたいと思い、いろいろやってみました。なかなかまとまった資料が見つからないのですが、下記のURLにはかなりお世話になりました。後は手探りですね(^^;

Win32OLE 活用法 【第 1 回】 Win32OLE ことはじめ
VBA より便利で手軽 Excel 操作スクリプト言語「Ruby」へのお誘い
Ruby による Win32OLE プログラミング
Ruby on Windows

それからExcel関連の定数表は

Microsoft Excel Constants [Excel 2003 VBA Language Reference]

また実際にExcelで操作をマクロに記録し、そのマクロを見てみると下記のようになっています。

Sub Macro1()
'
' Macro1 Macro
' マクロ記録日 : 2009/8/15 ユーザー名 :
'
Selection.TickLabels.AutoScaleFont = True
With Selection.TickLabels.Font
.Name = "MS Pゴシック"
.FontStyle = "標準"
.Size = 11.25
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = 3
.Background = xlOpaque
End With
End Sub


これはExcelでチャートの座標軸を設定したりした結果のVBAスクリプトなのですが、ここからなんやかんや推定して、やってみました。ファイルを読み込んで、その5列目、6列目のデータをx、y座標値として散布図を描いたものです。VBAの赤字がRubyでは下記の赤字になるようですね。どこを大文字にしてどこが小文字かなどがまだいまいち完全に理解できていません。

require 'win32ole'

class ExcelConst
end

# Start up Excel
excel = WIN32OLE.new('Excel.Application')
#load the excel constants
WIN32OLE.const_load(excel, ExcelConst)

excel.visible = false

# Open a file
book = excel.Workbooks.Open(File::expand_path(file)
#ワークシートの指定
sheetInput = book.Worksheets(1)
#グラフ領域の指定
graphInput = sheetInput.ChartObjects.Add(380,50,500,500)
#チャートの生成
chartInput = graphInput.Chart
#散布図の指定
chartInput['ChartType'] = ExcelConst::XlXYScatter #with XlXYScatter's x capitalized

chartInput.HasLegend = false

#Chartのデータの設定
chartInput.SetSourceData(sheetInput.Range('E1:F'+inputData.length.to_s))

#Chartのタイトルの設定
chartInput.HasTitle = true
chartInput.ChartTitle.Characters.Text = 'ABC'
chartInput.ChartTitle.Font.Name = 'Verdana'
chartInput.ChartTitle.Font.Size = 16
chartInput.ChartTitle.Font.Bold = true
chartInput.ChartTitle.Font.ColorIndex = 5 # Blue

#Chartの軸の設定
chartInput.Axes(ExcelConst::XlValue).tickLabels.font['Background'] = ExcelConst::XlOpaque
chartInput.Axes(ExcelConst::XlValue).tickLabels.font['ColorIndex'] = 3 # red
chartInput.Axes(ExcelConst::XlCategory).minimumScale = (xmin/100).floor*100 #このXLCategoryがx軸のようだ
chartInput.Axes(ExcelConst::XlCategory).maximumScale = (xmax/100).ceil*100
chartInput.Axes(ExcelConst::XlValue).minimumScale = (ymin/100).floor*100 #このXLValueがy軸のようだ
chartInput.Axes(ExcelConst::XlValue).maximumScale = (ymax/100).ceil*100
excel.visible = true

Ruby:多次元配列

Rubyでは直接多次元配列を下記のように扱うことは出来ないようです。

a = Array.new(10,5)

のように10行5列の配列を作ろうと思うと、上のやり方では出来ない。ので、ちょっと面倒ですが、1次元配列の中に1次元配列を入れてやるように次のようにやればできるようです。

a = Array.new(10)
a.each_index{ |y|
a[y] = Array.new(5)
}

初期化したければ、

a = Array.new(10)
a.each_index{ |y|
a[y] = Array.new(5, 0) # 0で初期化
}

とします。

このようにすればあとは

a[i][j]

というようなアクセスが出来るようになります。

wxRuby

wxRuby自身の話を書いていませんでした(^^; wxRubyの日本語の解説はこちら。wxRubyはwxWidgetsをRubyから使うためのライブラリです。wxWidgetsはC++で書かれたクロスプラットフォームなwidget(要はGUIの部品)で、Win32, Mac OS X, Linuxなどに対応し、C++, Python, Ruby, Perl, C#/.NET などの言語で使えるライブラリです。クロスプラットフォームかつ多言語対応なので作ったGUIを他のプラットフォームや言語でも簡単に使えるという期待があります。

またwxWidgetsはXRCというXMLであらわされたリソースファイルに落とし込めますので、GUI(見かけ)とコードをかなりな程度切り離して管理することができるようになります。ソフト開発のときにはGUIの見た目を作り、それをXRCに落としてGUIの処理側のソフトから読み込んで、各部品と処理を関係づけるような開発となります。GUIの見た目の開発ツールとしてはwxGladeやVisualWxなどがあります。僕はVisualWxを使っていますが、開発が2007年で止まっているようなのが心配です。

2009年8月14日金曜日

wxRuby: ディレクトリの選択

wxRubyではディレクトリの選択Windowを作るには

Wx::DirDialog

を使う。

dirDialog = DirDialog.new(frame, message = "Choose a directory")
# defaultPath = "",
# "",
# pos = DEFAULT_POSITION,
# size = DEFAULT_SIZE,
# name = "DirCtrl")
dirDialog.show_modal     #dialog windowの表示
puts dirDialog.get_path    #選択されたディレクトリ名の表示

とりあえずこれで選択Windowが出るようになりました。frameはこのWindowの親Windowです。

2009年8月13日木曜日

Eclipse: Dynamic Languages Toolkit

EclipseDynamic Languages Toolkit(DLTK)というものを見つけインストールしてみました。Eclipse v3.3まではRDT(Ruby Development Tools)というツールがあったんですが、3.4になってAptanaというWeb統合開発ツールにRDTが統合されてしまい、これはこれで便利なんですが、しょっちゅう眼前になぜか現れるし(^^; ということで困っておりました。

DLTKにはPythonやRuby、Perl、PHPなどの開発ツールが含まれるようです。DLTKサイトからよくわからないのでまず下の方のBundlesのAll-in-oneをダウンロードして入れてみました。入れ方はzipを展開して出来たeclipseフォルダの中のpluginsとfeaturesフォルダを使っているEclipseのフォルダにコピーします。すでにpluginsとfeaturesフォルダがあるので「統合しますか?」と聞いてくるので統合します。これでOKです。

で、立ち上げましたがRubyのエディタが入っていないし、Rubyプロジェクトも作れるようになりません。それでDLTKサイトからAll-in-oneだけでなくRuby IDEというのもダウンロードしてみました。それでもちゃんとならなかったんですが、何度か立ち上げなおすと、なんと、ちゃんとRubyを認識するようになっていました。何がよかったんでしょうか? ということでまあRubyの開発が出来るようになりました(^^V

Ruby、XRC、no handler found for XML node 'object'

家でRubyのプロジェクトの開発をしようとしたら、アプリケーションを立ち上げると

no handler found for XML node 'object'

と出てくる。この辺で調べるとどうもXRC(GUIリソース、wxRubyで使っている)が悪いということで、XRCを作ったVisualWxを立ち上げて再度XRCを生成してみたところ無事動きました(^^V

2009年8月8日土曜日

Python

昔はPythonを使ってましたが、今はRubyの方を使ってます。RubyはREXMLでXMLを簡単に扱えるし、dRubyという分散オブジェクトも標準で抱えているのでとっても使いやすいのです。Pythonにも分散オブジェクトなどに対応した拡張があるようですが、以前調べた時にはあまり開発が活発でないようでした。今日、再度調べたら開発もそこそこのようでしたので書いておきます。

Pyro        分散オブジェクト
Pyro        Python Roboticsというのもあるようです(^^;
Python(x,y)   科学向け数値計算・データ解析・データビジュアライゼーション
Parallel Python 並列処理の枠組み

以上、OpenRTM-aist-Pythonを使う機会があったので調べてみました。

Firefox:表示が遅い

やたら遅かったFirefoxの表示ですが、一度ほとんどのアドオンを無効にして、それから再度有効にしてみたところ以前の快適な表示速度に戻りました。またリンクをクリックしても真っ白なページが出たりしてましたが、これも治ってちゃんとページの表示が見えるようになりました。何が悪かったんでしょう(^^;

たまたまIEのProxy設定を変えていたのでもしかしたらFoxyProxyやIEtabなどProxyやIEと関係するアドオンが悪さしてたのでしょうか? でもそれならぜんぜん表示できなかったりするはずですよね。実際、IEのProxy設定を変えてもう1度トライしてみましたが普通に表示されています(^^;

2009年8月6日木曜日

Fasterfox

最近、やたらホームページを開くのが遅くなってきました。何故だろう? Firefox3.5になってから? 原因不明です。そこでFasterfoxというAddonを入れてみました。これはホームページにあるリンクを先読みしたり、ネットワークのパフォーマンスをチューニングしたりしてくれるそうです。リンクの先読みは確かに効果があるようですが、パフォーマンスは体感的にはまだ一緒という感じです。

2009年8月1日土曜日

Amazon

Amazonでは一度買い物をした商品を再度表示したときに、ページ上部に「○○○○さんのご注文状況のお知らせ お客様は、2009/○/×にこの商品を注文しました。」と表示されます。書店で買うときのように同じものを2冊買う心配がありませんね(^^V

バドミントン

10年ぶりにバドミントン。打った後、ホームポジションにまったく戻れません。ハイクリアで上を向きすぎて首が痛いです(^^; 
参考URLを 明日のために その1 として(^^;
http://www.hmabad2.net/index.html 
http://www.sportsclick.jp/badminton/backnumber.html 
http://www.ultra-bad.net/senryaku.html 
http://www.badminton.ac/skill.html 
http://www.sbmgd.com/index.html