ラベル eclipse の投稿を表示しています。 すべての投稿を表示
ラベル eclipse の投稿を表示しています。 すべての投稿を表示

2011年7月27日水曜日

Eclipse慣れしたボクがVisualStudio環境で困惑すること

これまではCとかJava一辺倒だった(むか~しVB 6.0とかExcel VBAとかもやってましたが、あれはまぁ、ねぇ)ボクですが、今回仕事でC#をVisual Studio 2010環境で弄ってまして、WebアプリケーションをASP.NET MVC3とRazorで作ってるわけですが、もう困惑しまくってます。
というわけで、今後のために「ここが違う」っていうのを、何回かに分けてメモっておきます。
#しかしアレだね、C#ってのはなかなかイケてる言語だね。今更ながら。

デバッグ用WEBサーバーがややこしい

EclipseでWebアプリ(Servlet)開発するとなると、まぁ一般的にはTomcatをインストールして、EclipseにTomcatプラグインを入れて、Eclipse側にTomcatのホームを教えてあげるじゃないですか。

で、下記のボタンを操作することでWEBアプリケーションサーバーが起動して、無事デバッグが出来るようになる。
一番左のボタンを押せばTomcat(WEBアプリケーションサーバー)が起動し、×印のボタンを押せば、サーバーが止まる。
実にわかりやすい。


Visual Studioでも当然、Webアプリのデバッグが出来る。下記の実行ボタンを押すと、Webアプリケーションサーバーが起動してデバッグが出来るようになる。

ちなみに、実行ボタンを押すとブラウザが自動的に起動して、自動で割り当てられたポートに対してアクセスした状態になる。

さらにちなみに、このポートを固定したければ、プロジェクトを右クリックしてプロパティを開き、「WEB」タブを選ぶ。すると、任意で指定したポートに固定したり、IISを指定したり出来る(ここで「え?IISを指定できるって、じゃあ一体何が動いているの?と思った方は勘がいい)。

ここまでは何となく理解できるが、実は既にEclipse+Tomcat環境に慣れ親しんだボクには既に理解し難いことが起こっている。

Tomcatの×ボタンに相当する(であろう)上記の停止ボタンを押したら、普通はWebアプリケーションサーバーも止まる、と考えると思うんだけど、Visual Studio は違う。実はこのボタンを押しても止まってなくて、証拠に、ボタンを押した後にIE等のブラウザを起動して同じポートにHTTPアクセスすると、同じように画面が表示されるんですねぇ。

じゃあ実行ボタンを押したら何が起こっているかと言うと、裏でコイツが起動している(パスは64bit環境の場合)。
C:\Program Files (x86)\Common Files\microsoft shared\DevServer\10.0\WebDev.WebServer40.EXE

要は、こいつがデバッガで、Visual Studioの三角の実行ボタンは「そのデバッガにブラウザをデタッチさせて起動する」ボタン、といったところ。たぶん。

ちなみに、環境とか設定のせいかもしれないけど、Visual Studioで「cshtml」とかのソース画面をアクティブにした状態で実行ボタンを押すと、その画面をブラウザで表示しようとしてエラーになるから気をつけろ。(csとかのhtmlではないソースをアクティブにした状態で実行すること!)


他にもいろいろ、本当にいろいろ「え?」っていうところがあるんだけど、また追々書いていこうと思います。

2011年6月13日月曜日

【誰得】ファイルコピーするだけのeclipseプラグイン作った

先日、このブログでEclipseとローカルファイルシステムを同期してくれるFileSyncプラグインについて書きましたが、その際に「実は逆方向のコピー機能が欲しい」と呟いてみたものの、誰も作ってくれないので(当たり前)作ってみました。
Eclipseプラグインを作るのはまったく初めてですが、なんせ「ファイルをコピーするだけ」という超簡単な機能なので、以下のサイトを見ながら半日で作れてしまいました。
すごいぜeclipse!

■参考にさせていただいたサイト
[ThinkIT] 第1回:Eclipseとプラグイン (1/4)(2005年の記事…)
Eclipse/プラグイン開発のTIPS集 - きのさいと

あの、もちろんですが、このプラグイン使用に関連して生じる損害等については一切責任を負いませんので、ご利用は自己責任でお願いします(^^;

シンプルコピープラグイン概要

ボタンを押すと、「コピー元フォルダ」に設定したフォルダ内のファイルを「コピー先フォルダ」にコピーする。
それだけ。
一応、コピー対象の拡張子は1つだけ指定できます。
(指定しないと全ファイルがコピーされます)

【設定画面】メニュー>ウィンドウ>設定>シンプルコピー
※フォルダのパスはいくつも設定できますが、ボタンを押したときに有効なのは一番上の一つだけ、です。自分専用なんで、それで要件を満たせるんです。すいません。

【使い方】
ツールバーに現れた謎のボタンを押すとコピー処理が走ります。
※いきなり押すとデフォルト設定でいきなり動くから超気をつけて!


動作確認環境

・Windows 7 Professional
・Eclipse 3.6 Helios

上記以外では動作確認してませんし、する予定もありません(キッパリ

ダウンロード&インストール

更新サイトなんてもちろん用意してませんので、以下からzipをダウンロードして解凍したら、jarファイルをeclipseのpluginsフォルダに入れてeclipseを起動してください。

ダウンロード→simplecopy.zip

無事インストールされたら、ツールバーに謎のボタンが表示されるはずです。



そもそも、機能的にはあくまでボク個人が使えさえすれば、それでいいというものなので、「これ役立つわぁ」という人はもう完全にどうかしちゃってると思いますが、それでも使ってやろうという奇特な方は、よろしければご自由に。
万が一ご要望があれば、お気軽にコメントかfacebookかtwitterでメッセージください。

■2011.06.15追記
一応、コピー対象ファイルの差分を見て「内容が異なる場合だけコピー」っていうオプションを追加しました。
「内容が異なる」の定義は、「コピー元、コピー先のMD5値が異なる」です。
コピー先にファイルが存在していない場合は普通にコピーされます。

2011年6月5日日曜日

Eclipseとローカルファイルシステムの同期(FileSyncプラグイン)

Eclipse内(ワークスペース)とOSのファイルシステム間で自動的に同期を取りたいなぁ、と思って探したら、そのものズバリなプラグインがあったので試してみた。
環境は、
OS:Windows 7 Professional
Eclipse:3.6 (Helios Service Release 2)

ファイル同期プラグイン「FileSync」

FileSync概要

Eclipseで作成・保存したファイルを、自動的に指定したフォルダに保存(同期)してくれる。
Eclipseからローカルファイルシステムへの一方通行。


インストール

1.Eclipseのメニューで、「ヘルプ」>「新規ソフトウェアのインストール」を選択。

2.作業対象に以下を入力。
http://andrei.gmxhome.de/eclipse/
入力後、Enterキーを叩いてしばらく待っているとインストール可能なプラグインが表示されるので、ツリーを展開して「FileSync」を選択し、「次へ」。
※直接「http://andrei.gmxhome.de/filesync/」でも多分大丈夫(試してないです)。

3.ライセンスに同意して、「次へ」

4.インストールが始まるので、コーヒーでも飲みながら待つか、バックグラウンド実行で終わるのを待つ。

5.インストールが終わったら「再起動しろよ」というダイアログが表示されるので、素直にEclipseを再起動。「-clean」で再起動した方が無難。

以上でインストール完了。

使い方

1.FileSyncはプロジェクトに対する設定となるので、対象プロジェクトで右クリック>「プロパティ」を選択。

2.プロパティウィンドウが表示されたら、「ファイル同期化」を選択。
右ペインに表示された設定ウィンドウで、コピー元(Eclipse側)のフォルダーを選択。
下部にある「デフォルトのターゲット・フォルダ」には、コピー先の(OS側)フォルダを設定。

3.あとは、ファイルを作成したり更新したりしたら、それが保存されたタイミングで自動的に指定した場所にコピーされる(プロジェクトが「自動的にビルド」に設定されていること)。
当然、フォルダ構成もEclipseのワークスペースのままコピーされる。

※設定ウィンドウにある「異なるターゲット・フォルダの許可」等の設定については、ちょっと触ってみたけどうまく動かなくてよくわかりませんでした…。

パターンマッチ等でいろんな条件を設定できそうなので、詳しく知りたい方は公式リファレンス(英語)をどうぞ。

注意点

ザッと2分ほど触った上で、注意点。
  1. プロジェクトが「自動的にビルド」になってないと動かない。
  2. 概要に書いた通り、逆方向の同期(OS側で更新した内容をワークスペースに反映)はしてくれない。
  3. Eclipse側で同期対象のファイルを削除すると、エクスプローラが落ちる(ギャー)


シーンによっては、いろいろと使えそうなプラグインです。

#実は、むしろ逆方向(OSからEclipse)の同期を取ってくれるようなプラグインを探してたので、ボク自身は結局このプラグインを使うことはなさそうなんですけどね…(だから2分ぐらいしか触ってない)。
そもそも逆方向にコピーしたらEclipseがぶっ壊れそうなので、そんなプラグイン無いのかな…。作るか…。

2011年5月26日木曜日

EclipseでCVSにコミットできない

(この記事を読むのにかかる時間:約3分30秒)
とある開発案件で、自分の担当プログラムのソースをEclipseからリモートのCVSサーバーにコミットしようとしても「サーバーの応答を受信中」といった表示がずっと出るだけで一向にコミットできない(CVSサーバーを再起動してもダメ)という症状が出た。
数日間、コミットできないまま放置していたんだけど、いよいよ納期的にコミットしないとマズイ時期にきて、ようやく調べて解決したので、やったことのメモ。

この記事の対象

あんま、CVSとかよくわかってないけどソース管理に便利だから(っていうか参加した開発プロジェクトで使ってるから)使っている人。
で、CUIコマンドはイケる人。

環境

クライアントOS:Windows XP SP3
Eclipse: Helios Service Release 2 (All in oneの楽々パック)
サーバーOS:Red Hat Enterprise Linux AS release 4(Nehant update 4)
CVSサーバー:上記に標準で入っているもの

症状

特定の自作Javaパッケージのみ、EclipseからGUIのメニューでコミットしようとしても「サーバーの応答を受信中」のままずっとコミットが完了しない。
CVSサーバー(およびOS)を再起動してもダメ。

原因

他の人がロックしてた。
(分かってみれば、ただそれだけのこと…)

調査方法(というか、やったこと)

Telnetでサーバーに自分のユーザーでログインし、CVSクライアント環境を構築。
$export CVSROOT=:local:/export/home/public/cvs[Enter] ←CVSのリポジトリ
$env[Enter] ←環境変数にCVSROOTが設定されたか確認
 :
CVSROOT=:local:/export/home/public/cvs
$cvs checkout MyProject[Enter]

これでガサっとプロジェクトをCVSクライアント環境にチェックアウトできた。
とりあえず状態を見てみる。

$cd MyProject[Enter]
$cd src/jp/hoge/test[Enter]
$cvs status Test.java[Enter] ←状態確認。ここでは特に問題なし。

次に対象のファイルを、コマンドでコミットしてみて何か詳細なメッセージが出ないか試してみる。
vi等でコメントなどをつけて適当に編集し、コミット。

$cvs diff Test.java[Enter] ←一応、差分を確認
$cvs commit Test.java -m "Test dayo!" ←コミット!

すると、何やらメッセージが・・・

Waiting for suzuki's lock...
(メッセージ内容はうろ覚え)

・・・誰か他の人(例ではスズキさん)がファイルをロックしているらしい。
スズキさんに確認するも、「まったく身に覚えがない」ということだったので(実は今回のプロジェクトメンバーの中で一番スキルが高い子)、まぁ何かがどうにかなってそうなってしまったんだろう、ということでロックファイルを削除。

今回コミットできなかったのはパッケージなので、cvsリポジトリのディレクトリに移動して、該当のプロジェクトのディレクトリの中を ls コマンドで見てみたら、確かにオーナーが「suzuki」の「#cvs.rfl.hostname.3131」という、それっぽいファイルが存在している。
このファイルを、rootユーザーにお願いしてリネームしてもらった(いきなり削除する勇気はなかった)ところ、無事、Eclipseからコミットすることが出来た。


結論

Eclipseが、「サーバーの応答を受信中」の他に「Waiting for suzuki's lock~」のくだりを表示してくれたら、すぐわかった話(「詳細」にも出てこないんだもん)。
普段使う分にはあまりに便利すぎるツールだけど、こういうエラーの時は(ボクみたいによく知らずに使っていると)結構大変だよね。


しかし、All in Oneに入ってるDB用のプラグイン「DB Viewer」が泣きたくなるほど便利(Oracleとの接続で利用)。AccessっぽいGUIでのデータ編集が出来るのはもちろん、PL/SQLのコンパイルとかもEclipse上で出来ちゃうし、先月まで参加していた「TeratermとSQL*Plusでがんがる!」というプロジェクトの環境とは、まさに天と地の差…。

2010年10月13日水曜日

セキュリティがめんどくさいぞ…Windows7での開発

この夏、Windows XPから一気にWindows 7へ移行した夏デビューのボクですが、あれですね、あのー、セキュリティが厳しくなって開発環境のセットアップがいちいち面倒ですね。

Eclipseがうまく動かないのも、PostgreSQLがインストールできたのにpgAdminで接続エラーになるのも、すべて「管理者権限で実行」していなかったから、か。

というわけで、

PostgreSQLのインストーラは「管理者権限」(右クリックメニューで「管理者として実行」ってやつですね)で行いましょう。じゃないとインストールが正常に終わってサービスも開始されて、いざデータベースを作ろうと思ったら接続できない、なんてオチが待っています。

Eclipseは、毎回管理者権限で実行しましょう。じゃないと、謎のエラーに振り回されます。
起動用のEXEあるいはショートカットを右クリックして、プロパティで「互換性」タブの「管理者としてこのプログラムを実行する」にチェックを入れておくと便利です。


要は、C:\Program Files配下への書き込み権限がないユーザーで実行するとセキュリティに引っかかってNG、ということですが、こんなの常識ですよね、すいません、今さら。

分かっていても、なかなか身に付かないもんです。うっかり何度もやってしまう・・・
何かいい方法はないもんですかね。

2008年6月19日木曜日

Eclipse 「JVM terminated. Exit code=-1」

昨日開催したLinuxコンソーシアム リッチクライアント部会(議事録)で、
先日のXMLコンソーシアムWeekで失敗してしまったAntennaのデモのリベンジをしようと思って Eclipse を起動しようとしたところ、いきなりダイアログが出て

JVM terminated. Exit code=-1

と言われ、起動しない。つい先日まで問題なく動いていたのに。

仕方ないのでms2さんに無茶ぶりし、結局ボクはリベンジできぬままms2さんがプレゼン(実装した本人がプレゼンすることになったので、結果的にそれで良かったかも。なんて無茶ぶりしたことを棚にあげて思ったり)。

今日、少し時間が空いたので調べてみると、やっぱり同じような方がいた。
http://kanonji.blog4.fc2.com/blog-entry-173.html

ここに記載してある通りに、ボクの eclipse.ini の中にあるJVMに対するメモリ関連項目の記載を削除してみた。
削除したargumentsは以下。
-vmargs
-Xms40m
-Xmx256m

すると、すんなり起動成功。

元ネタの内容を読んでいると、原因として「常駐ソフトとの相性」というのがあるみたいだけど、最近常駐ソフトなんて新しくインストールしてない。
まったく謎のままです。。。

■2008.6.20追記
逆に、今日新しく常駐ソフト「ArtTips」をインストールした後、試しにメモリに関する記載を復活させてみたところ、普通にEclipseが起動しました。謎は深まるばかり。

■2010.7.1追記(2年後て…)
新しい開発環境でやはりeclipseが起動しない(スプラッシュが一瞬でて落ちる)ので、同じようにiniファイルからメモリ関連を削除したところ起動。その後、試しにArtTipsもインストールしてみたが、やっぱり起動せず。ArtTipsが云々、というわけではないようです。当たり前か。