タイトル/名前 | 更新者 | 更新日 |
---|---|---|
日記/2012/09/30/Apache IvyとローカルのMavenリポジトリの連携 | msakamoto-sf | 2012-09-30 17:31:32 |
日記/2012/09/12/Win7,64bitでデスクトップ背景の変更で少し困惑。 | msakamoto-sf | 2012-09-12 23:25:41 |
PHP/セッションとクッキーの共存/セッション固定化問題への影響 | msakamoto-sf | 2012-06-24 19:39:47 |
Java/ServletとJSESSIONIDのURL管理 | msakamoto-sf | 2012-06-17 21:28:23 |
日記/2012/06/16/たまには最近読んだコミックの話でも。 | msakamoto-sf | 2012-06-16 22:06:25 |
Java/Maven3/ビルド番号, SVNリビジョン番号を MANIFEST.MF に埋め込む | msakamoto-sf | 2012-06-10 21:51:46 |
Java/Maven3/Tomcatへのdeployメモ(tomcat-maven-plugin, cargo.codehaus.org) | msakamoto-sf | 2012-06-10 21:31:39 |
日記/2012/06/10/Jenkinsのビルド情報をMANIFEST.MFに埋め込む | msakamoto-sf | 2012-06-10 16:37:21 |
日記/2012/06/03/娯楽マンガ・小説の読み方の変化 | msakamoto-sf | 2012-06-03 21:06:09 |
日記/2012/06/02/"Android SDK Content Loader"のローディングでEclipseが固まる。 | msakamoto-sf | 2012-06-02 23:20:26 |
Apache Ivyを触ってみました。
入門編としては以下のBlogが大変参考になりました:
Apache Ivyは依存関係のjarを取得する点に専念しており、その分Mavenのような複雑さはありません。Antが使えるのであればすんなりと入っていけると思います。Antならではの細かいカスタマイズに応えてくれます。その点で、Mavenを適用できないレガシーなプロジェクトであったり、依存関係の処理にMavenでは対応しきれない特殊な部分が出てくるようなプロジェクトには最適です。
今回試したのは、「MavenのローカルリポジトリをIvyから参照する」です。
「デスクトップの背景」で、「画像の場所」で「参照」ボタンから背景画像系をまとめてるフォルダを選択するんだけど、何度選択しても、フォルダと画像一覧に選択したフォルダが追加されない。
→エクスプローラからフォルダ中の適当な画像を右クリック、「デスクトップの背景として設定」をクリックすることでようやくフォルダが追加された。
・・・なんか理不尽な気もするけどそんなものかな・・・。
Java/ServletとJSESSIONIDのURL管理 でServletコンテナでのJSESSIONIDのURL管理について調べました。今回はPHPの"session.use_only_cookies"と"session.use_trans_sid"の組み合わせについて、セッション固定化の問題に対する影響を調べてみました。
結論から言うと、やはり"session.use_only_cookies=Off"と"session.use_trans_sid=1"の組み合わせがもっとも影響度が大きいと思われます。一方で同じ"session.use_only_cookies=Off"でも、"session.use_trans_sid=0"であれば影響は限定的と思われます。
Servletプログラミングでセッションを使うとき、Cookieをクリアしたブラウザでアクセスすると初回のPOSTやGET遷移でだけ、URLに";jsessionid=xxxxyyyy..."というのが付加される。
以前から、これはServletコンテナが独自に実装してくれた機能なのか、Servletの仕様としてそうなっているのかが気になっていた。先日お仕事中にその辺りを調べる必要が生じたので、数年越しに自分の中でこの";jsessionid=xxxxyyyy..."について決着をつける。
最近というか今日GETしたばかりのコミックですが。
まずは「信長のシェフ」4巻。
ジト目の楓タン可愛いよ(*´Д`)ハァハァ
信長さんのツンデレ度合いに磨きがかかって来ててそろそろBL腐女子界隈が騒ぎ出しても良い頃合いだろう。
「べ、べつにあんたのことが心配だから楓を寄越して助けに行かせたんじゃないんだからね!」というセリフを幻視したのは私だけではないはず。もうね、信長さんと主人公ね、熟年夫婦のごとく言葉がなくても心を通じ合わせてるんだよね。
あと相変わらず主人公が気持よすぎるくらいにチート状態でもうそのまま突っ走ってください状態。
たとえ失敗しても絶対に失地回復して生き延びる、そう、この主人公はいわばハリウッド映画の主役なのだから、安心して見ていられる。
続いて二宮ひかる最新作「ダブルマリッジ」。R18かね。
二宮ひかる作品のどこが好きかと言われると、「女性の髪の毛の描写」の一点に絞られる。直に指で梳いてみてくるくるこねくり回したくなるような髪の毛を描けるのは二宮ひかると、こうの史代が自分の中のTOP2。
このエントリのオチは特にアリマセン。
メモ段階です。未検証。Jenkinsと組み合わせる場合は 日記/2012/06/10/Jenkinsのビルド情報をMANIFEST.MFに埋め込む 参照。
ソースツリーにあるカウンタファイルあるいは日時などからビルド番号を埋め込むタイプ:
SVNのリビジョン番号をそのまま埋め込むタイプ:
MANIFEST.MFをwarアプリから読み込む:
以前、 Java/Maven3/Eclipse上でサクサクWeb開発 (例:tomcat-maven-plugin) でtomcat-maven-pluginを使ってEclipse上からTomcatを起動してサクサク開発環境を試してみました。
今回は純粋にdeployに絞り、様々なJavaEEサーバに対応しているcodehausのcargoを試してみます。
環境:
Win7 32bit JDK6 Maven 3.0.4 Tomcat 6.0.35 conf/tomcat-users.xml: <role rolename="manager-script"/> <user username="tomcat" password="tomcat" roles="manager-script"/>
※tomcat-users.xmlで一般的に良く使われるmanager-gui roleは"/manager/html"のブラウザ画面用のroleです。今回紹介するtomcat-maven-pluginおよびcargoは両方共テキストベースのmanager機能を使うため、manager-scriptのroleでユーザを用意しておく必要があります。
荒っぽくメモ:古い掲示板のスレッドからコピペしたので、環境変数名がHUDSONになってるけど変える。
<pom> ... <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <inherited>true</inherited> <configuration> <archive> <manifest> <addDefaultImplementationEntries>true</addDefaultImplementationEntries> <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries> </manifest> <manifestEntries> <Application-Name>${pom.build.finalName}</Application-Name> <Application-Version>${pom.version}</Application-Version> <Iteration-Name>${iteration}</Iteration-Name> <Build-Time>${buildNumber}</Build-Time> <HudsonBuildNumber>${BUILD_NUMBER}</HudsonBuildNumber> <HudsonBuildId>${BUILD_ID}</HudsonBuildId> <HudsonJobName>${JOB_NAME}</HudsonJobName> <HudsonBuildTag>${BUILD_TAG}</HudsonBuildTag> <HudsonExecutorNumber>${EXECUTOR_NUMBER}</HudsonExecutorNumber> <HudsonJavaHome>${JAVA_HOME}</HudsonJavaHome> <HudsonWorkspace>${WORKSPACE}</HudsonWorkspace> <HudsonUrl>${HUDSON_URL}</HudsonUrl> <HudsonSvnRevision>${SVN_REVISION}</HudsonSvnRevision> </manifestEntries> </archive> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-ejb-plugin</artifactId> <inherited>true</inherited> <configuration> <ejbVersion>3.0</ejbVersion> <archive> <manifest> <addDefaultImplementationEntries>true</addDefaultImplementationEntries> <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries> </manifest> <manifestEntries> <Application-Name>${pom.build.finalName}</Application-Name> <Application-Version>${pom.version}</Application-Version> <Iteration-Name>${iteration}</Iteration-Name> <Build-Time>${buildNumber}</Build-Time> <HudsonBuildNumber>${BUILD_NUMBER}</HudsonBuildNumber> <HudsonBuildId>${BUILD_ID}</HudsonBuildId> <HudsonJobName>${JOB_NAME}</HudsonJobName> <HudsonBuildTag>${BUILD_TAG}</HudsonBuildTag> <HudsonExecutorNumber>${EXECUTOR_NUMBER}</HudsonExecutorNumber> <HudsonJavaHome>${JAVA_HOME}</HudsonJavaHome> <HudsonWorkspace>${WORKSPACE}</HudsonWorkspace> <HudsonUrl>${HUDSON_URL}</HudsonUrl> <HudsonSvnRevision>${SVN_REVISION}</HudsonSvnRevision> </manifestEntries> </archive> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <configuration> <archive> <manifest> <addDefaultImplementationEntries>true</addDefaultImplementationEntries> <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries> </manifest> <manifestEntries> <Application-Name>${pom.build.finalName}</Application-Name> <Application-Version>${pom.version}</Application-Version> <Iteration-Name>${iteration}</Iteration-Name> <Build-Time>${buildNumber}</Build-Time> <HudsonBuildNumber>${BUILD_NUMBER}</HudsonBuildNumber> <HudsonBuildId>${BUILD_ID}</HudsonBuildId> <HudsonJobName>${JOB_NAME}</HudsonJobName> <HudsonBuildTag>${BUILD_TAG}</HudsonBuildTag> <HudsonExecutorNumber>${EXECUTOR_NUMBER}</HudsonExecutorNumber> <HudsonJavaHome>${JAVA_HOME}</HudsonJavaHome> <HudsonWorkspace>${WORKSPACE}</HudsonWorkspace> <HudsonUrl>${HUDSON_URL}</HudsonUrl> <HudsonSvnRevision>${SVN_REVISION}</HudsonSvnRevision> </manifestEntries> </archive> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-ear-plugin</artifactId> <inherited>true</inherited> <configuration> <defaultJavaBundleDir>lib/</defaultJavaBundleDir> <archive> <manifest> <addDefaultImplementationEntries>true</addDefaultImplementationEntries> <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries> </manifest> <manifestEntries> <Application-Name>${pom.build.finalName}</Application-Name> <Application-Version>${pom.version}</Application-Version> <Iteration-Name>${iteration}</Iteration-Name> <Build-Time>${buildNumber}</Build-Time> <HudsonBuildNumber>${BUILD_NUMBER}</HudsonBuildNumber> <HudsonBuildId>${BUILD_ID}</HudsonBuildId> <HudsonJobName>${JOB_NAME}</HudsonJobName> <HudsonBuildTag>${BUILD_TAG}</HudsonBuildTag> <HudsonExecutorNumber>${EXECUTOR_NUMBER}</HudsonExecutorNumber> <HudsonJavaHome>${JAVA_HOME}</HudsonJavaHome> <HudsonWorkspace>${WORKSPACE}</HudsonWorkspace> <HudsonUrl>${HUDSON_URL}</HudsonUrl> <HudsonSvnRevision>${SVN_REVISION}</HudsonSvnRevision> </manifestEntries> </archive> </configuration> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>buildnumber-maven-plugin</artifactId> <inherited>true</inherited> <executions> <execution> <phase>validate</phase> <goals> <goal>create</goal> </goals> </execution> </executions> <configuration> <format>{0,date,yyyy-MM-dd HH:mm:ss}</format> <items> <item>timestamp</item> </items> </configuration> </plugin> </plugins> </build> ... </pom>
ちゃんとしたのは、オライリーのJenkins本(日本語版), "5.6.4 ビルド中でのJenkinsの環境変数の利用" 参照。
MANIFEST.MFを読み込むには:
やっぱりビルドNOとか、ビルドに使ったソースコードリビジョン番号とか、見れるとカコイイ。
多分Webの脆弱性の検査のお仕事を始めたことが多分に影響していると思うが、最近、娯楽向けの小説やマンガの読み方で「あれ、自分、こんな読み方をするようになったのか」と気づいた点がある。
一つはとある推理小説を読んでいた時。伏線の張り方から、「作者はなぜこの人物にこんな伏線を張ったのだろう」から逆算していって、ロジックとか抜きで犯人を当てることが出来た。まぁ、その作者の伏線の張り方がいかにもバレバレでそこは読者サービスだったのかもしれないけれど。
もう一つはとあるマンガを読んでいて、比較的チート性能を有する主人公がピンチに陥った時。ちょうど最新刊の巻末で「ピンチ!」で終わっていて、その後の展開を雑誌等で確認していなかったこともあり、ピンチに陥った状況を頭の中でゆっくり分析する余裕が出来た。すると、「あの状況であの人物がこうするのはいかにも不自然だ」というのが出てきて、逆算していくと「これは、主人公を活躍させるためにあえてピンチに貶めたのだな、だからこそ、ピンチに陥ったあの状況でここが不自然なんだ」ということで作者側の思惑を裏読みし始めた。ついでに「あの登場人物達の絡みから、主人公がピンチを脱出するために作者が用意するシナリオは・・・」と考え始めたり。
毎日、毎週、いろんなWebアプリを操作して、「このWebアプリはなぜこういう挙動をしめすのか?」とか、「なぜこのWebアプリは、一般的でない作り方をしているのか?」とか、そういうのと取っ組み合ってると、こんな思考パターンになっていってしまうのかもしれません。
開発側の事情とか思惑を想像することが多いのです・・・。
Eclipse 3.7 + Android SDK r18 + ADT Plugin 18.0.0で発生。
しかも時々発生するが、割りと高確率で発生するのでたちが悪い。
固まらず立ち上がってから、自動ビルドをOFFにして、再起動してから、もう一度ONにしたりして何とか発生しなくなった。何だったんだ・・・。
参考: