読者です 読者をやめる 読者になる 読者になる

文系プログラマによるTIPSブログ

文系プログラマ脳の私が開発現場で学んだ事やプログラミングのTIPSをまとめています。

GAE/GOのデプロイ時のOAuth2認証後にlocalhostに遷移してしまう時の対処法

東京リージョンにGAE/GOをデプロイしようと思ったらこれだよ!

GAEを東京リージョンに変更して高レイテンシの呪縛から解放されよう!

大分乗り遅れた感が強いですが、東京リージョンに変更しました。 GAE/Jのサイトでもかなり速くなりましたよ〜

Spring bootで静的リソースにキャッシュ回避のための「?xxx=xxx」を自動追加する

できるんだな、これが。

ようやくSaStrutsを卒業してSpring bootデビューしたので良かった点と悪かった点を書いてみます

長い道のりでした・・・

GAEで独自ドメインにLet's encryptで発行したSNI形式のSSL証明書を適用する

手順が結構あるうえ(無料では)自動化できないので、手順残しておきます。

GAE/go+ginとGAE/java+servletでそれぞれスピンアップの速度差をゆる〜く確認する

GAE/Gに手を出し始めましたよ〜

ついにtree-maps復旧!playを投げ捨てて素のservletに置き換えるまでの顛末

やっとtree-maps復旧しましたよ〜

Spring batch, Flyway, Jooq code generatorからJooq DSLでSQLを発行する!

Spring boot、Spring batch、Flyway、Jooq code generator、Jooq DSLの組み合わせですよ〜

Spring bootでjsonpの先頭に謎の/**/が混入する問題とその対応:その2

今度はObjectMapperの設定と組み合わせた場合の例ですよ〜

spring boot v1.3のdevtoolsのlive reloadとremote updateを試す

あともう一歩頑張ってくれればくっそ有用な機能なのにな〜

Spring bootでjsonpの先頭に謎の/**/が混入する問題とその対応

なんでデフォルトの挙動がこんな事になってるんですかね・・・

JDK1.5以上で最近のeclipseのWTPにtomcat6の動的webプロジェクトを追加する

実はserversにtomcat6を追加する方法、あるんですよこれが。ちょっと古めの環境で萎えている方も最新のeclipseを使ってみませんか?

eclipse4.5(Mars)のjavaのコードフォーマッターが怪しい

なんか怪しい・・・

GAE/Jで旧ドメインから新ドメインに301リダイレクトする(slim3、play framework)

Google App Engine For Javaで、独自ドメインを割り当てたので、301リダイレクトする方法を調べて実装してみました。

Intellij IDEA + gradleでspring loadedが動かない問題

spring bootでウェーイしようと思い、IDEをIntellijにしようとしたのですが、何故かspring loadedが動かない問題に遭遇しました。結果的にしょうもないオチがつきましたが解決しました。

seasarのユニットテストでTransactionTokenのチェック処理をスルーする

フォームがある画面の場合、URL直打ちによるアクセスや2重submit等を防ぐためにtokenチェックを入れるのが定番ですね。しかしこのtokenチェック、普通にやるとJUnitのユニットテストで必ずひっかかってしまいます。なんせ前の画面から遷移していませんからね…

SubEthaMailのwiserで仮想SMTPを立ててjavaのメール送信をユニットテストする!

メール送信はまだまだ業務で重要ですね。javaでメール送信をする処理をユニットテストしたいけどメールが大量に飛んでしまうのは困るし、誤って本番環境のメールアドレスにメールが飛んだら大変です。そんな時はwiserを使いましょう!

Google guavaを使ってjavaでdtoのリストを自由自在にソートする!

久々の技術ネタです。SQLで一回だけデータを取得後に、複数回ソートし直すような処理がある場合、java側でDTOのリストをソートしたくなる事があります。そんな時はGoogle guavaのOrderingを使いましょう!

webサイトの多言語化への道:その1:憤怒

現在お仕事でとあるサイトの多言語化をしております。プロジェクト開始から約1週間経過したのですが、色々と酷い事になっているので、日記ベースで綴っていこうと思います。

jenkinsのjabber pluginはv1.26からJDK1.7が必須になったので注意!

皆大好きjenkinsのお話です。本日新サーバに以前書いた以下の記事を参考に、新規にjenkinsをインストールしました。 CentOSにyumでjenkinsをインストールする - 文系プログラマによるTIPSブログしかしjenkins起動時にjenkins jabber pluginがエラーを吐いて…

xvfbとfirefoxでseleniumをヘッドレスに起動する手順

最近開発をしていて、入力フォームが沢山ある案件で、あれを修正するとあっちの画面にもこっちの画面に影響する、といった現象が連鎖してしまい、段々と影響範囲をテストできなくなってきました。これを何とかするため、ついにSelenium WebDriverを使うよう…

macのIntelliJ IDEAでJDK1.8を入れた後にplay1.2が動かない場合の対処

私は以下のサイトをGoogleAppEngine for javaの上でPlay framework1.2を載せて開発しています。tree-maps: 地図のWEB TOOLの事ならtree-mapsにお任せ!play2系だとGAE/Jに対応していないので動かないのですが、play1系だと実はGAE/Jに対応しているので、動く…

Dropwizardを学ぶ:vol2:JerseyFilterとServletFilter

Dropwizardを学ぶシリーズ、第2回です。今回はJerseyFilterとServletFilterについてです。

Dropwizardを学ぶ:vol1:特徴や他FWとの簡単な比較をする

2014年のjavaの注目フレームワーク、その名もDropwizardについての勉強記事を連載していきます。2014年のjavaフレームワークはTwelve-Factor Appに注目! - 文系プログラマによるTIPSブログチマチマとオフィシャルサイトのドキュメントを読みながら学んでい…

今更SaStrutsのユニットテストとモックの残念な関係に泣く

数年前に一世を風靡したSaStruts、今でも現役で沢山使われていると思います。このSaStrutsでもユニットテストをしたいですね。 中でもモックは非常に重要になります。例えばDBのデータがこういう時にこういう結果になる、というケースです。 DBのデータは毎…

apacheのURLをtomcatから取得できるようにする

apacheとtomcatを連携するシステムは多いです。apache(80) -> ajp(8009) -> tomcat(8080) という順に通信される訳ですが、SaStruts等、フレームワークによってはapacheとtomcatのURLが大幅に変わってしまう事がよくあります。SaStrutsの例になりますが、 apa…

やるおと学ぶ、一歩進んだjs・cssのキャッシュ問題の対応

web開発で必ず直面する静的ファイルのキャッシュ問題。その解決策の1つして、 <link href="/css/common.css?timestamp=${timestamp}" rel="stylesheet" type="text/css"/> このように、画面表示毎に動的にタイムスタンプをQueryStringに設定して回避する方法があります。</link>

2014年のjavaフレームワークはTwelve-Factor Appに注目!

皆大好き、javaのフレームワークの話題です。2014年のトレンドは・・・ Twelve-Factor Appです。 現代では、ソフトウェアは一般にサービスとして提供され、Webアプリケーション や Software as a Service と呼ばれる。Twelve-Factor Appは、次のようなSoftwa…

JDK1.8インストール後にGAE/JでUnsupported major.minor version 52.0が起きる問題

最近mac os marvericksにoracle jdk1.8をインストールしました。

プログラマの奇妙な世界、あるあるねーよ!?

プログラマの世界はとっても奇妙な世界です。 あれ?あれれ?と思う事に満ちあふれています。 今日はそんなプログラマの不思議な世界の片鱗を紹介したいと思います。さて、皆さんはあるある!と思うか。 ねーよ!と思うか。ではいきます。 概算見積もりが詳…

eclipseでJava ProjectをDynamic Web Projectに変更してプロジェクトに親子関係を持たせる

eclipseでサンプルプロジェクトをインポートした際にjavaプロジェクトだが、これを後から動的プロジェクト(Dynamic Web Project)に変更し、更にプロジェクトに親子関係を持たせる方法を紹介します。昔作った古いプロジェクトが動的webプロジェクトになって…

jstlの<c:forEach>で<ul><li>hoge</li></ul>のブロックを綺麗に出力する

解りにくいかもしれないので、早速やりたいことを書いてみます。 やりたいこと Actionでリストを生成し、jspにリストを渡す。 そのリストを以下のように3列づつ<ul>と<li>を使って出力したい。 但しリストの要素数は不定で、<li>が1個になってしまう場合がある。 リスト</li></li></ul>…

皆間違うlog.error(e);はStackTraceが出ないので要注意!

javaのロガーのお話です。 commons-loggingの話ですが、どうも勘違いしている人が多いのです。log.error(e); でStackTraceは出力されませんよ!!あまりにも勘違いしている人が多いように見えます。 よく見るStackTraceが出そうで出ない例 try { } catch (Ex…

GAE/JのFWの頂上決戦!slim3とPlay1.2のどちらを選ぶ?

あなたはどっち派?

はてなブログAPIで全記事取得とはてブ詳細を取得できたのでソースを公開!

【はてな】はてなブログのURL一覧とはてブ数を取得する方法【API】 - 文系プログラマによるTIPSブログ 以前こんな記事を書きました。 この時は物理的に可能だ、という話で終わってしまったので、今回は実際にやってみました。結論から言うと、 できました!…

プログラミングのフォントはRicty DiminishedがSourceCodeProを上回る!?

プログラミングにはエディタが必須ですね。 そのエディタで表示するフォントですが、皆さんどれを使っていますか?よく挙がる人気のプログラミングに適したフォントは、 Source Code Pro(Adobe製) Ricty ですね。私は今まではSource Code Proを使っていま…

GAE/J play framework1.2でメール送信する

GAE/Jからメール送信できますよ〜

【キャッシュ】はてなブックマークウィジェットを自力で実装する【高速化】

皆大好き、はてなブックマークウィジェットについてのトピックです。 ブログパーツの設定このウィジェットがちょっと問題があるので、色々解決策を考えてみたいと思います。 問題点httpsの画面で使えないはてなブックマークウィジェットで読み込まれるjsです…

【java】google-http-java-clientで簡単httpリクエスト!【さらばHttpClient4】

久々にtree-tipsを更新しました。 tree-tips: google-http-java-clientで簡単httpリクエスト! | java今回は、HttpClient4を使わず、google製のgoogle-http-java-clientで、 httpリクエストと、レスポンスxml・jsonをPOJOにマッピングする記事となっています…

【ライブラリ未使用】javaでxmlを整形する【簡単サンプル】

tree-tipsで色々な整形サービスを作ろうと思って色々調べているうち、javaの標準機能でxmlを整形するサンプルが出来てしまったので公開します。 xmlファイルから読み込むとテストしにくいので、文字列を引数に渡せるようにしています。 import java.io.ByteA…

【java】Grailsを学ぶ:Vol.01:GORMのDB定義【framework】

そろそろSaStrutsを使うのは時代遅れなので、Play FrameworkかGrailsを候補に検討中です。 Playは会社で使いそうなので、自宅ではGrailsを学ぶ事にしました。ざっくり触っただけですが、PlayはJava JavaしてるFWで、Grailsはjsやrubyのような感じ、という印…

【iframe】クロスドメインを無視して別ドメインのhtmlを取り込む【jsp】

自分のサイトに別ドメインのサイトを取り込む時、iframeが一般的にですね。 しかしこのiframe、heightとwidthが動的に変わらず、固定値になってしまう問題があります。この縦横固定を解消するため、iframe内のhtmlの描画完了後、html全体の縦横を取得し、jav…

【WEBTOOL】はてなブックマーク合計数取得ツールをリリースしました【はてぶ】

tree-tipsで対象サイトのはてなブックマーク合計数を取得するWEB TOOLをリリースしました! ↓↓↓ こちらです ↓↓↓ tree-tips: はてなブックマーク数を取得するWEB TOOLです | WEB TOOL使い方は簡単。textboxにURLを入力してボタンを押すだけです。 この機能を…

Apache POIでセルが文字化けする時の対処法

Apache POIのversion3.9を使っていて、 macのexcelでPOIでセルに日本語を書き込んだところ、 文字化けしまくるので非常に困っていました。色々ためしたところ、 フォント名が未設定だと文字化けする ということが解りました。 Font font = wb.createFont(); …

logbackのSMTPアペンダはバッチ実行時は非同期送信にしない方がいい

logbackにはSMTPアペンダがあり、 log.error()等を検出して、アラートメールを送信することができます。 メール送信には同期送信と非同期送信があり、パフォーマンス・リソース的には 当然非同期送信の方がよいです。しかし、この非同期送信には問題がありま…

javaのInetAddressのgetCanonicalHostNameはどの値を参照しているか

javaでサーバのホスト名を取得し、アラートメールの件名にサーバ名を記述したい時、 InetAddressのgetCanonicalHostNameを使う場合がありますね。 このgetCanonicalHostNameですが、一体どこの値を参照しているか実はよく解りませんでした。 public static S…

solrのkuromojiで全角数値の検索をヒットさせる

kuromojiでもlucene-gosenでも、初期設定のままだと全角数値が検索にヒットしません。 そこで対応するための設定と、どういう挙動になるかについて調べました。 内容的にこのブログに書くのが勿体無いので、tree-tipsにまとめました。以下を参照して下さい。…

javaでサイトマップxmlを生成するならsitemapgen4jで決まり!

定番のサイトマップxmlですが、皆さんどうやって生成してますか? 開発者であれば大抵自前でそれっぽいユーティリティーを作ったりするかと思います。 しかし自前で作ると色々面倒な事が起こります。 今回は自前のユーティリティーの何が問題か、sitemapgen4…

javaのビルドをgradleで行う:実践編6:高速に実用的な実行可能jarを生成する

今回はExecutableJar、所謂実行可能jarを生成する方法についてです。 簡単な実行可能jarの作り方としては以下のコードがよくサンプルとして挙がります。 jar { from configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } manifest.mainA…

javaのビルドをgradleで行う:実践編5:マルチプロジェクト時のprovidedCompileについて

Gradleの依存管理にはprovidedCompileという属性があります。 これは、コンパイル時にはクラスパスに含めるが、パッケージ(war・jar等)には含めない、 という機能です。しかしこのprovidedCompile、どうもサブプロジェクト構成で挙動が怪しいのです。 Gradle…