件のコメント最近はソースや開発環境はDropbox配下に置き、マシンが変ろうともDropboxで同期させればおkということでなくてはならないDropboxですが、APIの正式版バージョン1が昨年10月に出たということで、使ってみました。KEY/SECRETを入手して、jarをビルドパスに通してアクセストークンKEY/SECRETを入手すればDropboxへアクセスできます。KEY/SECRETの取得はこちらを参考にしました。ザネリは列車を見送ったhttp://zaneli.hatenablog.com/entry/2011/12/10/123559サンプルソースDropboxの魅力の一つとして、いくつか履歴を残してくれます。間違ってファイルを変更しても、履歴が残っている間なら復元が可能です。APIを使って過去リビジョンのファイルをダウンロードするサンプルソースを作成しました。test.txtファイルに関して変更した過去10件分のファイルをDropboxから取得しローカルへ保存するプログラムです。}}ところが!ローカルに保存したファイルすべてが同じ内容でした。どれも最新版test.txt。・DropboxAPIhttps://www.dropbox.com/static/developers/dropbox-java-sdk-1.2.2-docs/index.htmlgetFileメソッドの使い方は間違っている気がしない。フォーラムで検索しようにも、英語でなんとキーワードを打てばよいのやら。SDK内のソースDropboxAPI.javaを開いてみました。実装後記ということで、実装されるのを待ちましょうかね。iOS版の方には入っているみたいな記述をチラっと見たので、自分で中身を実装すれば取得できるかもしれませんが、少なくともJava版のこのバージョン1.2.2では、過去のファイルは取得できない作りということで。あと、開発者が欲しがる機能として、Dropbox配下のファイルに変更があったらアプリ側に通知してくれるようなAPIがないそうです。最近変更されたファイル一覧を取得できるAPI。フォーラムのある人によれば、ここは規模が小さいし実装おせーから仕方ねー。Dropboxhttp://dropboxautomator.wappwolf.com/先日メールを飛ばすよう試してみましたが、思った動きをしませんでした。Dropboxを使ったアプリは開発者側にとってはまだまだ環境が揃っていないような印象を感じます。ちなみに、変更履歴一覧は個人であれば取得できなくもありません。「このフィードを購読」というRSSが配信されているので、このURLでXMLを解析等すれば変更情報を取得できますが、取得できもて10件~20件程度で、短期間に更新があっった場合は、こんな風にまとめられるので、扱い辛いです。いうわけで待ちましょうか。件のコメントある外部JARファイルをビルドパスに追加してそのJARファイルのクラスを使う処理を記述後、サーバを動かしてみると以下のようなエラーが。org/apache/thrift/transport/THttpClientビルドパスへ追加してコンパイル通ってるのに。思っていましたが、mavenプロジェクトなので、そちらへ追加が必要のようです。suite(EclipseベースのIDE。Dependency]を選択。JARファイルのキーワード”thrift”と入力してみるも、検索にヒットしない。Developersのものですセントラルリポジトリに存在しないのでダウンロードできないとの事。手動でローカル(ローカルリポジトリ)へ追加する必要がるものの、EclipseベースのIDEでGUI操作により追加する方法を探すも、見つからない。コマンドで入れろ的な事なので、しぶしぶコマンドで追加しました。-Dpackaging=<packaging>STSは入れたけど、mavenなんか入れてないぜ。どこでコマンド打つんだとSTSのインストールディレクトリを探してたら、mvnがありました。install~のコマンドを実行すると、見事ローカルリポジトリへコピーされました。------------------------------------------------------------------------この時グループIDの記述が気に入らなかったので、mvnでinstallコマンド打てるのならアンインストールもできるだろと思ってましたが、ググれどググれど見つからず。(正確にはよくわからず。)エクスプローラでローカルリポジトリの場所まで行って直接Deleteしました。Dependencyをしても見つけてくれないので、認識してもらう作業を。[Other..]とたどります。その中にMavenのビューがあるので、選択してOKボタン押下。リビルドが始まるので少々待ちます。先ほど追加したものが表示されてます。Dependency]を選択し、”thrift”と入力すると見つける事ができました。これでOKボタンを押下し、冒頭で述べたサーバを起動させると「java.lang.NoClassDefFoundError」と言われる事なく動作させることができました。Jettyだったら一瞬で起動するのに。いうわけで、STSにJettyを入れて起動させてみたいと思います。AdaptorがJettyバージョン6でないとダメのようで。Codehaushttp://irc.codehaus.org/display/JETTY/Downloading+Jetty6で最新のjetty-6.1.26.zipをダウンロードします。ダウンロードが完了したら任意のディレクトリへ解凍しておきます。Adaptors」リンクで追加します。Adaptorを探してくれるようですが、これが長い。Adaptor」が表示されます。これを選択してNextボタンを押下するとダウンロードしてリスタートを要求されたはず。Serverと選択します。選択して、Nextボタンを押下します。Homeの場所を求められるので、パスをきってもいいですが、今回はBrowseボタンでディレクトリを設定しました。start.jarが入ってるディレクトリを選択します。Nextボタンを押下します。次の設定はデフォルトのもので良いので、Nextボタンを押下します。ボタンで追加してFinishボタンを押下します。すると、Serversビューに追加されます。Serversビューのサーバースタートボタンを押して、Jettyを起動してみると。́o`;)実際にどれくらいスピードが違うかというと、ざっくり計ってみました。左手にAndroidアプリのストップウォッチを表示させ、右手にServerスタートボタンに照準を合わせたマウスを持ち、同時に押し、Webアプリケーションがブラウザで表示できるようになった所でストップウォッチ止めました。約11秒Adapterで使うJetty全然遅いじゃないか。入れたサーバですが、デバッグに使うにはちょっと厳しいですね。埋め込んで使えって事ですね。7200rpmCPUをグレードアップさせ、補助記憶装置をSSDにすればスピードにストレスを感じなくなるでしょう。結論はTomcatままで良かったということで。件のコメントいろいろ試行錯誤したので、できた所までの覚え書き。Samples」のmvc-ajaxプロジェクトへの実装。導入と動かし方等は過去の記事で。log4j.xmlを操作してみるまず、サーバを実行するとこのようなログがコンソールへ出力されます。日付が入っていないので、試しに日付が出るようにlog4j.xmlを修正してみたいと思います。ディレクトリで言うと、{保存先のディレクトリ}mvc-ajax\trunk\src\main\resources\log4j.xmlパッケージエクスプローラで言うと、src/main/resourcesに入っています。</appender>サーバを起動させると、日付が挿入されました。次にこれをファイルに出力してみます。これもlog4j.xmlへ以下を追加します。</appender>設定の詳細については、log4jのリファレンスにて。D:/logs/mvc-ajax.logへログファイルが出力される設定です。Loggerへ1行追加します。</root>これでサーバを起動すると、コンソールとファイルへlog4jのログが出力されます。オリジナルのログを出力する上記では、デフォルトで出力されるログについてですが、任意の場所で出力できるようJavaコードを修正してみたいと思います。動作を確認しやすいようにAccountController.javaを対象にします。importへorg.apache.log4j.Loggerを記述。インスタンス生成時とGetリクエストが呼ばれたタイミングでログを出力するようにしてみます。}このままでは、エラーは出ませんが埋め込んだロギングを認識しません。log4j.xmlへorg.springframework.samples.mvc.ajax.account配下のクラスでログ出力するように以下の記述を追加します。Requestのように表示されます。アスペクト指向(AOP)でロギングを自動的に埋め込むコードをいじらなくても、AOPでメソッドの最初と終りにログを埋め込める魔法のようなやり方だと思ってましたが、なかなか一筋縄にいかず、とりあえずできた方法を掲載します。このmvc-ajaxというサンプルでなく、単にAOPの実装を動かしてみたい場合は、ググればもっと簡単なやり方があるのでそちらを。mvc-ajaxはデフォルトでアスペクト指向を使えないので、mavenへdependencyを追加してやります。Dependencyを選択します。aspectで検索かけると2件ヒットするので、2件とも追加します。以下の3ファイルをorg.springframework.samples.mvc.ajax.accountへ追加します。IHoge.java・・・・・・Hogehoge.javaのインタフェース。ロギングしたいメソッドを記述しますHogehoge.java・・・・ロギングされるクラス。MethodLogger.java・・Hogehoge.javaへ埋め込むロギング処理せっかくベースとなるAccoutController.javaがあるのでそちらへロギングを埋め込もうとしましたが、エラーが出て実装できないのでHogehoge.javaへロギングを埋め込み、AccountControllerから呼び出す形でログを出力したいと思います。org.springframework.samples.mvc.ajax.account.Hogehoge.*(..))")でロギングを埋め込みたいメソッドを指定しています。今回はワイルドカードを使ってHogehogeクラス全てのメソッドへ適用するようにしています。joinPoint.proceed();の前後で行っている所がポイントです。Start");のようなメソッドの開始(または終了)だと分かる処理を記述してやります。これらの処理をbeen定義ファイルで有効にするにはservlet-context.xmlを修正してやります。実装する場合には、このファイルではなく別途been定義ファイルを作成した方が良いような記述を見受けました。以下beansのタグ内とaopタグbeanタグを追加します。/></beans>で最後にAccountControllerからメソッド呼び出しの処理を追加します。今回はGetリクエスト処理内へ追加しました。hogeを定義し、このインタフェースへロギング対象ということで@Autowiredを記述。Getリクエストを受けてthis.hoge.testMethod()のメソッドを呼び出しすよう修正しました。これでサーバを起動し、クリックすると、メソッド呼び出しで以下のようにログが出力されます。end太字の部分が埋め込まれたロギング出力です。AccountControllerクラスでHogehogeクラスをnewしてインスタンスを生成した場合だとロギングは埋め込まれません。インタフェースからメソッドを呼び出す必要があります。Frameworkの思想との事ですが、自由にロギングを追加/削除できるイメージでしたが、このやり方だとある程度最初からAOPを意識した実装にしておかないといけないですね。人気の記事Eclipseの高速化メモEclipseが重いと一言に言っても、いろいろな工程での話があると思いますが、過去記事のなども含めてこの記事にピックアップしておきたいと思います。以下はWindows環境での話です。JavaでprivateなfieldやmethodにアクセスするJUnitでテストしてると、privateなフィールドにアクセスして、値を参照したりセットしたりしたくなるわけですが、よく使うのでメモしておきます。次のような対象のクラスがあるとします。...Androidのlogcatを自動で保存させたいEclipseのlogcatビューは、いらないログはすぐ消してしまうので、さっきのログをもう一度見たいという時に、どこかに残ってないかなと思うことが時々あります。Sh...Eclipseで一通り基本的なGitを使ってみる備忘録的にまとめておきたいと思います。おかしな点があればご指摘いただければ幸いです。