タイトル/名前 | 更新者 | 更新日 |
---|---|---|
日記/2012/06/02/Eclipseでeclipse.iniの"-vm"オプションは"-vmargs"より前に書く | msakamoto-sf | 2012-06-02 23:08:36 |
Java/Maven3/warパッケージングで"selected war files include a WEB-INF/web.xml which will be ignored"警告 | msakamoto-sf | 2012-06-02 21:54:43 |
技術/Android/HTC Aria(S31HT) root化メモ | msakamoto-sf | 2012-05-27 18:55:12 |
技術/Android | msakamoto-sf | 2012-05-27 17:46:07 |
Scala/色々な実行方法 | msakamoto-sf | 2012-05-06 22:32:01 |
Scala | msakamoto-sf | 2012-05-06 20:54:03 |
日記/2012/05/04/さすがに23時overはきついかも。 | msakamoto-sf | 2012-05-04 15:31:10 |
日記/2012/05/02/JavaでHTTP(S)両対応のProxyを実験してみた。 | msakamoto-sf | 2012-05-02 22:40:45 |
日記/2012/04/22/JavaでSSLSocketの勉強メモ2 | msakamoto-sf | 2012-04-23 00:01:23 |
日記/2012/04/22/JavaでSSLSocketの勉強メモ1 | msakamoto-sf | 2012-04-22 19:20:38 |
elipse.iniでついうっかり、"-vm"オプションを一番下(="-vmargs"の後ろ)に書くとトラブルになります。
"-vmargs"以降はJVMへの引数として解釈されるので、eclipseのオプションは"-vmargs"より前に書きましょう。
参考:
Mavenのwarパッケージングで、
[WARNING] Warning: selected war files include a WEB-INF/web.xml which will be ignored (webxml attribute is missing from war task, or ignoreWebxml attribute is specified as 'true')
という警告が出ました。Antのwarタスクでも同じ警告が出てしまう場合があるようです。
手許で確認した限りでは、archetypeとして org.codehaus.mojo.archetypes:webapp-jee5 (1.3) の構成で"mvn package" すると同警告が表示されました。
環境:
> mvn -version Apache Maven 3.0.4 (r1232337; 2012-01-17 17:44:56+0900) Maven home: C:\in_vitro\apps\apache-maven-3.0.4\bin\.. Java version: 1.6.0_22, vendor: Sun Microsystems Inc. Java home: C:\Program Files\Java\jdk1.6.0_22\jre Default locale: ja_JP, platform encoding: MS932 OS name: "windows 7", version: "6.1", arch: "x86", family: "windows" > mvn help:effective-pom ... <plugin> <artifactId>maven-war-plugin</artifactId> <version>2.1.1</version> <executions> <execution> <id>default-war</id> <phase>package</phase> <goals> <goal>war</goal> </goals> </execution> </executions> </plugin> ...
これを解決するには、maven-war-plugin の2.2を使います。
pom.xml:
<build> <plugins> ... <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.2</version> </plugin> ... </plugins> </build>
警告ではなく、以下のINFOメッセージが表示されるようになりました。
[INFO] WEB-INF\web.xml already added, skipping
警告でもINFOメッセージでも、
src/main/webapp/WEB-INF/web.xml
が
target/(artifactId)-(version)/WEB-INF/web.xml
にコピーされ、最終的にwarに含まれるので動作自体には影響ありませんが、警告が表示されるのが気になってしまう場合はためしてみると良いでしょう。
なお<webXml>でweb.xmlを指定する方法もweb上で紹介されていますが、2.2の前の2.1.1で試したところ<webXml>を指定しても警告は消えませんでした。
<build> <plugins> ... <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.1.1</version> <configuration> <webXml>src/main/webapp/WEB-INF/web.xml</webXml> </configuration> </plugin> ... </plugins> </build>
Antのwarタスクでも同じような警告が出るらしいので、maven-war-plugin自体と言うよりはwarパッケージングのライブラリの問題かもしれません。
参考:
2012-05現在では遅きに失したが、ようやくEMOBILEのHTC Aria (S31HT)をroot化出来た(Superuserを導入し、"/system/bin/su"コマンドでroot化可能な状態)ので、簡単にまとめておきます。
大雑把な作業の流れやトラブルについてメモしておきます。具体的な作業手順等については随時紹介している外部ページを参照してください。
AndroidSDKはWindows環境、HTC Syncは導入し、ADBドライバだけもらった後にアンインストール・・・したような。すくなくともAndroidSDKのadbコマンドで問題なく操作できる状態です。
HTC Aria (S31HT), EMOBILE については確か一度アップデートがかかりましたが、とりあえず現時点ではAndroid 2.2です。
DLしておくもの:
fastboot用のデバイスドライバかな?とにかくこれを導入しておかないと、AndroidSDKのplatform-toolsのfastbootコマンドでHTC Ariaを操作できない。
あと、Windowsだけの場合らしく、linuxやmacでは不要っぽいです。
手順参考:
手順参考:(結構細かい手順が含まれてますので、よく読んでください。)
実は自分の場合、revolutionary導入時に一緒にClockWorkModもセットで導入したのですが(revolutionaryのツールが自動的にDL&インストールしてくれました)、以下の様な感じで、CWMのメニューを選択しても反応しなくなってしまいました。
そこで、あえて古いCWMに入れ替えたところ無事"install zip from sdcard"が動きました。
DOS> fastboot flash recovery recovery.img
これで、ちゃんとメニューをPowerボタンで選択できるCWMが導入されます。ちょっとバージョンは古いですが、Superuserのzipをインストールしたりする分にはこれで問題ありません。
CWMのリカバリメニューから"install zip from sdcard"でSDカードに予めコピーしておいたsuperuserのzipをインストールして完了です。
トラブルになったポイントです。
S31HTが最初から2.2だったのかは不明ですが、とにかく海外の掲示板では「Android 2.2 にアップデートしたHTC Ariaじゃ、"Unrevoked"のツールでS-OFF出来ない!」という悲痛な叫びが寄せられています。
"Unrevoked"というのはHTC製端末に特化したroot化やROM操作などのツールを提供しているサイトです。
自分も"reflash_package.exe"というのを使ってみたんですが、"Internal error: failed to unlock nand flash"というメッセージが表示されてしまいました。
同様の症状もxda developersで報告されてます。
どうも、Android2.1のバグを突いて"S-OFF"化を試みていて、2.2になって(あとHBOOTのバージョンもUPした関係?)、使えなくなったようです。
電源OFFすら選択しても無反応になりますので、何回も直接電池を外して強制OFFしました。
最終的に、clockworkmod-2.5.1.7というやや古いバージョンのものにして事なきを得ました。
作業内容のところでひと通り紹介しては居ますが、他の参考URLなど。
※"技術/"以下でなくて独立させて良いほど溜まってきたが時既に遅いのでそのままにします。
Scalaを実行する色々な(といっても2種類だけど)方法。
シェバン行指定については調べてません。
(適当なディレクトリ1)/run_by_script.scala:
args.foreach(println)
実行:(適当なディレクトリ2)に移動してscalaコマンドでファイル名指定。
> scala (適当なディレクトリ1)/run_by_script.scala abc def abc def
ポイント:
(適当なディレクトリ1)/hello.scala:
class c1 class c2 object main { def main(args:Array[String]) { for (i <- 0 to args.length - 1) println("args(" + i + ") = " + args(i)) } }
"適当なディレクトリ2"に移動してコンパイル
> scalac (適当なディレクトリ1)/hello.scala
→ "適当なディレクトリ2" の下にクラスファイル(.class)が生成される。("-d" で出力先ディレクトリを指定できます。)
"適当なディレクトリ2"に移動してコンパイルしたクラスファイルを実行
> scala main abc def args(0) = abc args(1) = def
ポイント:
こういう機能はない・・・多分。
foo.scala: ... import "abc/sub1.scala" ...
(適当なディレクトリ1)/package1.scala:
package foo { class c1 } package foo.bar { class c2 } package foo.bar.baz { object main { def main(args:Array[String]) { args.foreach(println) } } }
"適当なディレクトリ2"に移動してコンパイル
> scalac (適当なディレクトリ1)/package1.scala
→ "適当なディレクトリ2"の下に以下の構成でclassファイルが生成される。
foo/c1.class foo/bar/c2.class foo/bar/baz/main.class, main$.class, ...
"適当なディレクトリ2"の外からコンパイルしたクラスファイルを実行
> scala -cp 適当なディレクトリ2 foo.bar.baz.main abc def abc def
ポイント:
Scalaに関するエントリや、役立ちリンクなど。
言語および言語ドキュメント:
ライブラリ:
昨日の真夜中あたりから下痢と吐き気で身動き取れない・・・。お昼すぎに正露丸買ってスポーツドリンク確保して、ようやく落ち着いてきた感じ。
1週間くらいのお休みで、後半位に発症してる。前回は年始・年末休みが開けて新年会終わった日の真夜中から発症。
2度も同じ症状なので、2回も同じ風邪とかインフルエンザに罹ったともな・・・。
去年末位からかなり帰りが遅くなる傾向で、ここ最近も週2-3日は日が変わってからオフィスを出たりする羽目になっている。
おかげで土曜日は頭痛と目眩で、午後いっぱいはだらだらとWeb見るだけが限界。
多分長めの休みを取ると、それまでのダメージが少し遅れて現れてくるのかも。
前回から4ヶ月の間が開いているので、次回は9月頃にまた1週間程度の休みを確保してみて、なおかつその前の月は遅くとも21:00頃にはオフィスを出るようにして調節してみて、比較実験をしてみようか。
前回・前々回のエントリーとJavaでSSLSocket関連のお勉強をしてきましたが、そもそもの目的はBurpSuiteなどのHTTP/HTTPS両対応のJavaのProxyが、どうやってHTTPSのProxyを実現しているかの調査でした。基本的にはHTTPSプロキシを設定されたUser-Agentは、最初にCONNECTメソッドで本来のホスト名とポート番号をProxyに伝え、Proxyは以降、HTTPではなくTCPレベルでUser-Agentと実際のサーバとの間のパケットの中継のみを行います。したがってSSL/TLSのパケットの中身には触れません。一方で、BurpSuiteやDoormanなどはSSL/TLSのパケットの中身についても読み書きが出来ます。さらにBurpSuiteなどは接続先に応じて証明書をその場で生成することが可能で、共通のPortSwiggerのCA証明書で署名された証明書がUser-Agentには提示されます。
ProxyがSSL/TLSの内容について読み書きする方式は、少なくとも2種類の実装方式があるようです。
今回はMITMのSSL/TLSサーバを立ち上げ、中継するタイプを作れるか実験してみました。HTTPサーバ・クライアントの実装やHTTPメッセージの処理については Apache HttpComponents の HttpCore を使って手抜きしました。さすがにソケット入出力の調整やHTTPメッセージの処理まで、ゼロからコーディングする体力は無いです・・・。
前回のエントリ 日記/2012/04/22/JavaでSSLSocketの勉強メモ1 に対してFacebook経由で早速HTTPのCONNECTメソッドでFA。
やばい、SNSでこんなに早くヒントとかFAもらえるのってあまりにも初体験すぎる。
さておき、ちょっとJavaのKeyManager触ってて疑問に思ったのが、「複数のKeyPairが格納されていた時、どれがクライアントに提示されるんだろう?」
→すでにStackOverflowに挙がってた。
X509KeyManagerを実装して、chooseServerAlias()を調整すればよさげ。なるほどな〜。
お仕事でBurpSuiteを使っているのだけど、暫く前から気になってしょうがない点がある。HTTPSの時に、なんでBurpは適切なCNでPortSwiggerによる証明書を生成できるのだろう?
というわけで、その辺のもやもやを解決するためにはまずSSLを学ばないと駄目かなと思い、資料漁ったり入り口としてJavaでSSLを使うにはどうするのか、とか手をつけてみました。
今回はそのお勉強メモで、SSLでechoサーバをJavaで作ってみようという、少しぐぐればサンプルがゴロゴロ転がってるやつです。ただ、そのサンプルが「なぜそれで正常に動作するのか?」を理解するだけで実に丸一日使い果たした・・・。