投稿

5月, 2012の投稿を表示しています

Aptana StudioでRubyがデバッグできない?

イメージ
さてさて、昨日で一旦区切りをつけたつもりだったんですが、またまたRubyの開発環境を調べてます。
SketchUp用で使えるのは、基本的にエディタだけなんだなってことがわかってきたものの、じゃ普通の開発環境はどうなのよってことで試してみました。だってね、ちょっと消化不良なんですよ。Rubyが実際に動くところを見てみたい。

で、試したのはAptana Studio3
Rubyも一緒にインストールして、簡単なコードを入力したら、あっさり動いた。
でもデバッガを試すと、これがなぜかエラーで動かない。

このエラー、調べてみるとかなりポピュラーな話題らしく、あれやこれや対策方法が出てきたので、やってみるけど一向に改善しない。

あるサイトでは、なんか原因わかったんで対応した的なコメントがあったので、リンク先を調べたらパスワードの要るサイト。読めないっすよ。。。

これ、もしかしてバージョンダウンしたら対応できんのかな?
そう思って調べたら、ありました。

Aptana Studio 3でRubyをごにょごにょ

このサイトによるとRubyの最新版(1.9.3)だと、やっぱり無理らしい。

記載を参考にバージョンを一つ前の1.9.2へ戻したら、なんなく動くようになりました。こうやって対策をまとめている方がいると本当に助かります。

さて、これでようやくRubyが試せる。

しかし、オープンソース系って選択肢がいろいろあって面白いけど、使うとなるとそれなりにノウハウが必要ですね。というか使い手を選ぶというのかな?

ちょっと気軽に試そうって向きにはハードルが高いです。

SuRDebugを試すも。。。

昨日からSketchUpの開発環境でいいのがないか探す作業に取り憑かれております。

あれやこれや探して見つけたのが、これ、SuRDebug

説明のページを見るとデバッガーも付いているし、これはいんじゃないかと。

しかし、更新が2009年。。。

Windows7がリリースされる、ちょっと前です。


この手のツールで3年落ちだと、かなり不安ですが、ひとまずインストールしてみました。

動かんです、これ。
初回起動時に、なんだか設定を行なっているようなんですが、その時点で失敗。orz

リリースから3年も経つと、SketchUpもRubyもOSまで更新されているので、さすがに無理っぽいです。

終了。






SketchUp Ruby Code Editorを試す

イメージ
SketchUp Ruby Code Editorを試してみました。

インストールはすごく簡単。サイトからRuby Code Editorをダウンロードして、SketchUpのPluginsフォルダへ展開するだけ。
SketchUpを再起動すれば「ウィンドウ」メニューに「Ruby Code Editor」という項目が追加されるので、それを選んでエディタを表示します。

で、実際にサンプルをロードして実行してみたところ。
ソースコードがきれいに色分けされて表示されていて読みやすい。
「Reference Browser」タブを選ぶとAPIリファレンスが表示されるので、学習用にはもってこいです。

使いやすいけど、あくまでエディタなので、やっぱりデバッグ機能はない。

しかし、なんでSketchUp自身でIDEを用意してないんだろ。簡単なものでもあれば、開発者の裾野が広がるのに、不思議です。

つづくかもしれない。

SketchUpをRubyでカスタマイズ

イメージ
SketchUpってRubyでカスタマイズできるのは、なんとなく知ってはいましたが、この記事「SketchUp と Eclipse による 3D モデリング」を読むと、予想以上に簡単そうです。

個人的な興味で試し始めたものの、記事に沿ってプラグインを設定しても機能しない。。。
なんか、設定間違えてんのかな?記事の内容が若干古いので最新版のeclipseだと、別の設定がいるとか?

この記事で使っている「SketchUp Bridge」のサイトを調べると、RDEを使った例が紹介されているので、こっちも試してみる。

簡単なコードを書いて、スクリプトを放り込んでみると無事に動いた。
ところが、これ動くには動くんだけど、単にRubyのエディタからSkechUpのプラグインを起動するだけっぽい。これだと仕組み的にデバッグとかの用途じゃ使えないよね。

試すにしても、それなりに開発環境は欲しい。

改めてGoogleのFAQを調べてみると、以外な記述が。。。

Are there any debugging tools available for Ruby?
Not that are commonly used with SketchUp. Debugging Ruby is a challenge that typically requires a lot of puts() statements to print things to the Ruby console and watch what's going on, or even using Ruby's file access capabilities to write to log files. If you're really stuck on something, post your problem to the google group or Ruby forum on Sketchucation.com. We're all happy to help.

puts()を使えとか、かなりシンプルすぎる。
OpenStudioとか、それなり複雑なツールもリリースされているけど、彼らはどうやってんだろうか?

だれか知っている人、教えてプリーズ。

つづくかもしれない。。。

Windowsのエラーメッセージの英語訳を調べる

イメージ
エラーメッセージの英訳が必要になる時があります。

なんで英訳かというと、英語で問い合わせを出すときに必要だから。
英語版のツールを使っていると、問い合わせはもちろん英語。

例えば、こんな問い合わせを出したいとします。
○○の操作をしたら「△△△△△△」というメッセージが表示されます。原因はなんだと思う?
エラーメッセージの「△△△△△△」の部分が英語なら、そのまま書いて、聞きたいところだけ英訳すれば問題ない。
英語版のアプリ自身のエラーメッセージなら、そもそも英語なので、あまり困らないんですが、困るのがWindowsが表示するエラーメッセージ。

使っているのは日本語版Windows。当然メッセージもローカライズされてて日本語。そのまま書いても、相手には通じるわけがない。
ありがちなのが時々遭遇する、Windowsのこんなエラーメッセージ。

"問題が発生したため、プログラムが正しく動作しなくなりました。プログラムが閉じられ、解決策がある場合はWindowsから通知されます。"
これ、英語でどいうメッセージが表示されるかわかりますか?分からないですよね。

こんな時に便利なのがMicrosoftランゲージポータルってサイト。
追記:IE以外のブラウザだと反応が遅いようです。

「用語検索」のタブを選んで、検索したいメッセージを入力。
検索対象言語で「日本語」を選んだたら「検索」ボタンをクリックすると。。。

おー、ばっちり英訳が出てきた。しかも製品別でわかりやすい。

このエラーメッセージって、英語だと、
"A problem caused the program to stop working correctly. Windows will close the program and notify you if a solution is available." こういう表示なんだな。これで、問い合わせもバッチリだ。パチ、パチ、パチ。

英語版のメッセージが分かると、原文で書かれた(つまり英文の)情報を探す場合も便利です。
日本語の情報で適切なものが見当たらなくても、英文ではすでに対策などが公開されているケースがあるので、メッセージをキーに探しやすくなります。


Windowsのシステム情報を取得する

イメージ
Window / Rameshng

たまーにPCのシステム情報を調べたい事ってないですか?

例えば、原因不明のエラーに見舞われていて、しかも特定のPCでしか発生しないような場合です。
こういう時って、基本は何かシステムに違いがないか調べるところから始めます。

こいう時に便利なのがコマンドラインのツールのSystemInfo

コマンドプロンプトを起動して、SystemInfoと打つだけ。

これだけで、OSのバージョンとかアップデートの状況だとか、かなりの情報が取れるので、あとは問題のあるPCと問題のないPCの情報をみくらべてみる。

しかし、XP,Vista,7っていう違いの他、HomeだとかProfessionalだとか、更には32bitか64bitかまで含めると何パターン存在するんだろ?
Service Packの有無とかもあるし、OSだけに限っても条件多すぎですね。


以下、実際にコマンド実行して表示された項目。

ホスト名:               hoge
OS 名:                  Microsoft Windows 7 Professional ←Professionalなわけだ。
OS バージョン:          6.1.7601 Service Pack 1 ビルド 7601←Service Packが適用済み。
OS 製造元:              Microsoft Corporation
OS 構成:                メンバー ワークステーション
OS ビルドの種類:        Multiprocessor Free
登録されている所有者:   Hoge
登録されている組織:     Microsoft
プロダクト ID:          00000-OEM-0123456-0123456
最初のインストール日付: 2012/04/20, 14:10:14
システム起動時間:       2012/05/22, 8:34:50
システム製造元:         Dell Inc.
システム モデル:        Vostro 460
システムの種類:         x64-based PC  ←OSが64bit版の意味。32bit版だと"x86-based PC"と表示される。
プロセッサ:      …

Windows8ではスタートメニューがなくなる

イメージ
Windows8のセミナーで「スタートメニュー」がなくなります。って話をしてました。

へー、そうなんだ。とか思いつつConsumer Previewでデスクトップを確認すると。
ホントになくなってる。

かわりにキーボードから「Windows」キーを押すとスタート画面が表示されるので、ここからアプリケーションが起動できる。
どうも、これをスタートメニュー替わりに使ってくれってことらしいです。
しかし、こういう変更って、ユーザーは相当戸惑いそうだよね。
スタートメニューがない段階で慌てそうだ。下手をすれば障害だと思ってサポートに電話しそう。

それにスタート画面を表示するのに、「Windows」キーをクリックするのもなんだか面倒だ。

そう思ってたら、ポインタを左下(スタートメニューが今まであった場所)へ持って行くと、スタート画面へのショートカット(って言っていいのかな?)が表示されるので、ここでクリックすれば直接スタート画面へ行けます。

いちおう、ぎりぎり互換性は残っている感じです。

RAD Studio をインストールしようとしたら。。。

イメージ
新しくなった仕事用のPCにRAD Studio 2010をインストールしようとしらエラー発生。

「Setup has determined that this version of .NET Framework Language Pack is part of you  operation system and cannot be installed or uninstalled with this setup. Use Windows Update for all future updates to .NET Framework Language Pack. Setup will now exit.」


で、OKボタンをクリックすると、さらにメッセージ。

「Microsoft .NET 2.0 Framwork SDK(x64)をインストールできませんでした。インストール中に致命的なエラーが発生しましtあ。システムを確認してください。」
OSはWindows7(64bit)。もしかして64bit対応してないのかとか思ったけど、きっちり64bit版のSDK(x64)がインストールできないっていっているあたりからすると、意味がわからない。
だいたいLanguage PackってWindows7だと、デフォルトで入っていたいような気もする。

で、困ったときのサポート頼みで連絡してみました。
翌日届いた答えは、

「ランチャーからではなく、直接InstallフォルダからSetup.exeを起動してみてください」

いままでインストーラーだと思ってたのは、どうやらランチャーだったらしい。こいつが何らかの誤認識しているってことか?

言われたとおりにやってみたら、無事にインストールできました。

一件落着。


メトロへの乗り方の講習を受ける

イメージ
先日、Go MetroのDeveloper Campに参加してきました。

これ何かというとWindows8のMetroアプリケーションの開発者向けのセミナーです。

Windows8向けとは言え、基本的にWindowsだし、ようはUIがちょっと変わるぐらいの感覚で捉えてたんですが、まったく違ってました。

左側の「Metro style Apps」がWindows8で搭載されるMetroのアプリケーションの構造を、右の「Desktop Apps」が従来型のアプリケーションの構造です。
いずれも同じWindowsのカーネルに乗っているものの、別立てて構成されていることがわかります。

これ、相互にやり取りできるのかと思ってたんですが、Metro側はサンドボックスで実行される仕組みとのことで、まったくプログラムの作り方が変わってしまうようです。

例えば、従来アンマネージドなDLLとして実装してあったものについては、そのままMetroで利用しようとしても(サンドボックスの外なので)参照できないようです。
(このあたり、認識違いをしているかもしれませんが、少なくとも推奨じゃないようです)

それと、GUIはXAMLで書けるので、WPFアプリケーションなら簡単に移行できてもよさそうなものですが、これもタブレットを意識したデザインが必要になります。これについてもプレゼンテーションがありましたが、いわゆる「没入型」となるため、まあ、まったく今までと違うデザインが要求されます。つまり、書きなおしです。

従来型のアプリケーションも、そのまま動くため、無理にMetro対応する必要はないようですが、MicrosoftとしてはMetroアプリケーションについては、かっちり専用で作ってねという方針のようです。

Windows7からWindows8と名前こそ似ていますが、移行しようとすると、DOSアプリをWindowsへ変更するぐらいのインパクトがありそうです。

一時期、DOSアプリを無理やりWindowsに載せちゃった系のアプリが存在した時期がありましが、今回は、そういうのも仕組み的に有り得なさそうですね。


グラボを買いにゆく(インストール編)

イメージ
グラボを買ったものの、電源の容量がメーカー推奨値よりも少ないことが発覚。一応メーカーオプションにも乗ってるタイプだし、まー大丈夫だろうってことでインストールしてみました。

ちなみにハード構成は以下です。
DELL Vostro Mini Tower 460 CPU:  Intel Core i7-2600(3.4GHz) メモリ: 8GB OS: Windows7 Professional SP1 (64bit)
で、購入したグラボがこれ。 玄人志向  RH6450-LE1GH/HS
筐体を開けて、ボードをぷすっ、と差して付属のCDからドライバーをインストール&再起動。
あっさり動いてます。今のところ。

WEIを前後で比較してみた。

Before: Intel HD2000
 After: グラボインストール後
う~ん、3Dの値は5.9→6.2へ向上したもののAeroのパフォーマンスが5.4→4.7へ0.7も下がってるよ、これ。。。orz
Intel HD2000って、そんな性能いいのか?というかエントリクラスのグラボの性能が低すぎるのか?
しょうしょう納得が行かないが、もともとデュアルディスプレイで使うのが目的(※)で増設したわけだし、体感速度は、変わった感じがしないので、ひとまずこれで行くことにする。
※注 オンボードのグラフィックスでもHDMI,VGAの2ポート付いてるので、デュアルディスプレイ構成にできるようです。(試してないので出来るかどうか確証ないけど) 今回グラボを増設したのは手元のディスプレイがHDMIに対応していなかっため。 追記 よく考えたらDVIは付いているから、HDMI−DVI変換ケーブルあればつながるよな?って思って、調べたら普通にあるんだ。知らなかったよ。こっちから試せばよかった。


グラボを買いにゆく

イメージ
秋葉原でセミナーに参加したのをいいコトに、終わったあとでグラボの買い出し。

普段PCはメーカー品で済ませているので、グラボを買うのは初めてだ。今回予算の関係で、グラボを省いてしまったので、増設です。

パーツ屋に入ったら、特価品が目に留まる。価格は6千円程度。めちゃめちゃ3Dをぶん回す仕事でもないので、価格的に妥当なので手に取る。(なんか数万円のボードとかあるんだけど、そこまでつぎ込む気はない)
で、そこで店員さんの一言。

「電源大丈夫ですか?」

はて?ボード一枚で、なぜ電源の質問? ←シロウトまるだしです。

「これだと600W以上は必要ですよ」

慌ててマニュアル(念のため持ってきた)を開くと、350Wの文字が。。。
しかし、そんな電気食うのかグラボって。。。

「じゃ、消費電力が少ないのどれ?」

この質問で店員フリーズ。どうも、入る店を間違えたらしい。退散。

その後、秋ヨドでメーカーオプションと同じグラボを見つけたので購入。これなら大丈夫だろ。
自宅帰ってメーカーのサイトで確認したら電源400W以上推奨なのが発覚。50W足りないよー。
明日、挿してみて動かなかったら困るなーと思っている。←いまここ。


Installerクラスのデバッグ

イメージ
ここしばらくインストーラーであれやこれややってて、最終的にInstallerクラスで処理することで、なんとか形になりました。

Installerクラスを書いていて、最初に戸惑ったのがデバッグ。どうやってデバッグしていいのかわからない。(通常のDLLと同じようにデバッグしようとしてもインストーラーだと、うまく動かない。)

またまた、あれやこれや調べたら、単純にデバッグを開始したい箇所で、以下のメソッドを呼んで上げればOKということがわかる。

System.Diagnostics.Debugger.Launch();

で、実際にデバッグしてみた例。

以下、ソースコードの抜粋です。はじめにInstallメソッドにLaunch()を書いておきます。

publicoverridevoid Install(System.Collections.IDictionary stateSaver)

{ base.Install(stateSaver);
    System.Diagnostics.Debugger.Launch(); // .net 4.0 //System.Diagnostics.Debugger.Break(); // .net 3.5?
//System.Windows.Forms.MessageBox.Show("Install");
// 環境変数「path」を編集 string currentPath;     currentPath = System.Environment.GetEnvironmentVariable("path", System.EnvironmentVariableTarget.User);

インストールの作業中にこのメソッドが呼ばれると、次のような画面が表示されます。 これがインストーラーのメインのダイアログの影に表示されたりして、ちょっと判りにくのと、なんだかエラーが表示されているようで気持ちが悪いです。

それはともかく。ここで、「はい」を選択すると、続いてデバッガーの選択ダイアログが表示されます。
ここも「はい」を選べば別プロセスでVS2010が起動して、デバッグできるようになります。

DLLの依存関係を調べる

イメージ
オープンソースなツールをインストールしてみたら、起動時に以下のようなエラーが発生する。

「プロシージャ エントリポイント deflateSetHeader がダイナミック リンク ライブラリ zlib1.dll から見つかりませんでした。」

なんか、どうも参照しているDLLが間違っている気がする。
そういや何か依存関係を調べるツールあったよな?なんだっけ?

DependancyWalkerを思い出すまで、しばらく掛かる。連休明けで休みボケですかね?

確かVisualStudioのフォルダにあったはずだと探してみるが出てこない。
で、ぐぐってみたら配布元のサイトが出てきた。

http://www.dependencywalker.com/

これって、以前はVSにフォルダに入ってたけど、もともとはオープンなツールだったようです。

早速ダウンロード&インストール。
問題のファイルを開いてDLLを探して見ると。。。
で、ダブルクリックで中身を詳しく見ようとしたら、これだ。
どうも、想定しているファイルと全然違うフォルダのファイルを参照していることが発覚。(パスがぜんぜん違うとこ見ている)

これじゃエラーになるのも納得できるので、ちゃんとしたDLLをプログラム本体と同じフォルダにコピーしたら無事に起動。



インストーラーで環境変数を設定する(その2)

イメージ
前回からのつづきです。


あれやこれや、調べていたら、ほぼそのものズバリな手がかりを見つけました。
これ→「VisualStudio2005でインストーラを作成したアプリケーション~

リンク先にある、「カスタム動作」と「Installerクラス」を使うと、どうやら目的の処理ができそうです。

結局のところプログラムを書いて、インストーラーから呼び出して処理するってことですね。
しかし、この方法、.netが前提になるので、.net Frameworkのインストールから始まってしまうケースもありますね。
インストールするプログラム本体は通常のアンマネージドなバイナリなので、本来必要ないけど、インストーラーの都合でFrameworkが要るってことになる。なんだか不思議ですね。

カスタム動作については、ググると、ここ→「カスタム動作エディタの使い方」のサイトが大変参考になります。


以下、上記のサイトを参考に、実際に処理を追加して、インストールとアンインストール時に環境変数を書き換えた例です。

クラスライブラリを追加する SetUpと同じソリューションへクラスライブラリのプロジェクトを追加する。
ここは、上記サイトの例に倣って、CustomActionという名前でクラスライブラリを作成します。

そして、作成したプロジェクトにインストーラークラスを追加する。
しかし、こいうテンプレートがあるとは思わなかった。便利なものですね。

SetUpへクラスライブラリ(DLL)を追加する 上記で追加したクラスライブラリを、どうやら一緒に配布しないといけないらしいので、SetUpの「ファイルシステム」へ追加します。
配布先のフォルダを選んで、右ボタンから[追加]-[プロジェクト出力]を選択。

先ほど作ったプロジェクト「CustomAction」「プライマリ出力」を指定します。
メソッドを実装する 先ほどクラスライブラリに追加したInstallクラスに、インストール、アンインストールで環境変数を書き換えるためのメソッドを実装します。

以下、実際のコードです。参考にしたサイトの例から、インストール、アンインストールに必要なメソッドだけ処理を追加しています。
注:後述するカスタム動作の設定を行わないと、ちゃんと動かないです。


publicoverridevoid…

新しいPC

イメージ
数年ぶりに仕事用のPCを新しいのに入れ替えました。Core2からCore i7(2600)への乗り換えです。

このPC、発注した直後にIvyBridgeがリリースされて、すでにひと世代前のプロセッサーになってしまったけど、それでも十分速い。

Virtual PCで仮想環境動かしていても、レスポンスが落ちないのはさすがです。(今までのだと、ほぼフリーズに近いレスポンス)

うほほ。

インストーラーで環境変数を設定する(その1)

イメージ
前回、インストール先のフォルダをデフォルト以外に指定できたものの、今度は環境変数の設定で問題にぶち当たる。

インストーラーを作ろうとしているのは、もともとはUnix/Linux系のシステムで開発されたアプリケーションです。
こういう場合って必ずしもという事ではないと思いますが、特定の環境変数、具体的には「Path」の設定が必要になります。

設定したい環境変数は以下の2つ

path      = [インストールフォルダ]\bin
raypath  = [インストールフォルダ]\lib

この2つのうち、pathはすでに定義されている可能性が高いので、実際には既存の設定内容に、上記を加える必要があります。

例)すでにpathが設定されていたら、追加する

path = C:\hoge;
       ↓
path = C:\hoge; [インストールフォルダ]\bin

以下は手作業で設定してみた画面。

単に環境変数を追加するだけじゃなくて、ポイントは次の2点。

既存の設定を残しながらPathを設定。アンインストール時には、追加したところだけ削除する。

それで、以下いろいろ試行錯誤してみましたが、結果からいうとまだ解決できていないです。
できなかったけど、メモとして残して置きたいので書いてみました。


レジストリの書き換えで、対応できないか試す

ユーザー環境変数はここの情報によるとレジストリにの以下の箇所に書き込まれているらしいので、これをインストーラーで設定します。

HKEY_CURRENT_USER\Environment

まずはVS2010のメニューから[表示]-[エディター]-[レジストリ]を選択して、レジストリエディターの画面を表示します。
そして環境変数用にキーを追加してみる。


ビルドしてインストールを実行してみると、
指定した環境変数は登録されたけど、Pathは既存の設定に上書きされた状態。当たり前だわな、これは。

既存の環境変数を参照して書き換える方法はないか、さらに調べる。

レジストリ検索を試す

調べてみると、「起動条件」の「レジストリ検索」でレジストリの情報を取得できそうなので試してみる。こことかここのサイトの情報を参照。


インストールの必須条件のチェックの部分でレジストリの情報を取得。それを使って、レジストリの設定を書き換えることができそう。

メニューからを […