DBFlute Hamcrestを利用したDB無しの単体テスト

先日、DBFluteのユニットテストをサポートするDBFlute Hamcrestというライブラリをリリースしました。名前から想像される通り、JUnitなどで利用するHamcrestの、DBFlute用カスタムMatcher(assertThat(a, is(b)) のis()の代わりに使うもの)となっております…

Jenkins + HipChatをHubotなしで連携する

JenkinsとHipChatを連携させると、Jenkinsジョブの結果をHipChatに通知したり、HipChatからbotコマンドを投げてJenkinsのジョブを起動したりすることができます。 HipChatそのものや、Hubotを使った連携のさせ方は以下を参照。 iOSアプリ開発でもCI/継続的…

DBFluteをできるだけ簡単に説明してみる

「DBFluteとは何か」と思って調べてみたら「DBFluteの紹介の時点で長すぎっ!!」って思った人向け。 いつも説明に困るのでまとめておく。 DBFluteとは、 データベースアクセスを行うO/Rマッパー。(DBFlute Runtime) データベース周りのかゆいところに手が…

Spring Batchのトランザクションをステップレベルからジョブレベルに変更する方法

Spring Batchでは、通常ステップがトランザクション境界となり、ステップ処理ごとにコミットが行われる。 チャンクの設定によって、一定件数処理するごと(1000件ごとなど)にコミットすることも可能。 大量データを処理する場合に、デフォルトでこの仕組み…

ThymeleafでSpringのMessageSourceを使ってテキストをローカライズする

ThymeleafはSpringとうまく結合されているので、Spring管理下にあるMessageSourceは特に意識せずともテンプレートで使用することができます。 Spring側で必要なのは、MessageSourceをBeanとして登録してあげるだけ。 @Bean public MessageSource messageSour…

SonarQubeでJavaのコードを解析する(Maven編)

SonarQubeでは複数の方法でコード解析を実行することが出来ます。 SonarQube Runner スタンドアロンJavaアプリ Mavenプラグイン Antタスク Gradle CIサーバ Jenkins, Bambooなど MavenもしくはGradleで管理されたプロジェクトでは、それぞれ対応するプラグイ…

SonarQubeの公開ポート番号を変更する

SonarQubeをデフォルト設定でインストールした場合、9000番ポートとなり、公開する上でちょっと面倒な場合があります。普通の80番ポートで公開するにはいくつか選択肢があります。 SonarQubeの設定を変更する mod_proxyを使う mod_proxy_ajpを使う 1. SonarQ…

SonaQubeをCentOSにインストールする

SonarQubeサーバの実行には、JavaとMySQL等のデータベースが必要です。 データベースは初期設定でH2を使うようになっており、必ずしも用意しなければならないものではありません。しかし、これはあくまでも評価用であり、実際に利用するときは別途データベー…

Tomcat再起動時に [Abandoned connection cleanup thread] がメモリリークしてるという警告が出る場合の対応

Tomcat上のWebアプリケーションでMySQLのJDBCドライバを使用すると、Tomcat再起動時に以下のような警告が出力されます。 The web application [] appears to have started a thread named [Abandoned connection cleanup thread] but has failed to stop it.…

Spring SecurityのCSRF対策とServlet 3.0のMultipartをJava Configで設定する

はまったのでメモ。 やりたかったこと HTMLのFORMをPOSTするとき <input hidden name="_csrf" value="..." /> でCSRFトークンを送りつつMultipartでファイルアップロードしたい。 Springの設定はJava Configでやっていて、web.xmlは作っていない。今さらいろいろな設定をxmlにしたくない。 やってみた…

SonarQubeでMavenのMulti-moduleかつMulti-language

SonarQube 4.2からMulti-languageがサポートされました。これにより、例えばJavaとJavascriptが1つのMavenプロジェクト内に存在する場合でも、両方の言語の解析結果を見ることができるようになりました。 Multi-languageとして解析するために特別な設定は不…

SonarQubeでMavenのレポートを再利用する設定

最近リリースされたSonarQube 4.3から、SonarQube実行時にユニットテストを実行する機能である sonar.dynamicAnalysis が非推奨になりました。*1 SonarQube自身が様々なの言語への対応を進める中で、各言語のテストフレームワーク全てを実行できるようにする…

Redmineのカレンダーに祝日を表示するプラグインを作りました

先日Redmineのカレンダーで祝日を表示する方法を見つけたわけですが、本体のソースを直接修正するのがだいぶイケてない感じでした。 せっかくなので、Redmine(とRails)の勉強がてらプラグインにしました。 taktos/redmine_holidays_plugin · GitHub インス…

Redmineのカレンダーで祝日を表示する

2013-01-30追記 本体のコードを修正しないで済むようにプラグイン化しました。 記事はこちら↓ Redmineのカレンダーに祝日を表示するプラグインを作りました - taktosの日記 基本的には以下のサイトと同じですが、祝日名を表示したいので、祝日判定にholidays…

Eclipse Juno (4.2) のパフォーマンスを改善するパッチ

Eclipse Juno、使ってますか?おっそいですよね・・・ 特にMavenのPOMファイルを開こうものなら、エディタ切り替えごとにツールバーが高速点滅したりして、まともに使えたもんじゃありません。というわけで、現行のEclipse Juno SR1 (4.2.1) のパフォーマン…

DBFluteで親テーブルをキャッシュから取得するサンプル

DBFlute-0.9.9.1B から、Entityの親テーブルがnullの場合に、代わりとなるインスタンスを返すことができるようになりました。この仕組みを使うことで、頻繁に結合されるテーブル(マスタなど)を、毎回DBアクセスせずにキャッシュから取得させることができま…

Cygwinでgitkを実行するのにX serverが必要になった

Cygwinでパッケージ追加しようと思って久しぶりにsetup.exeを実行したところ、正常に完了せずにエラーがでてしまった。Terminalどころかcmdでのashも無反応になってしまったので、仕方なく http://cygwin.com から最新のsetup.exeをダウンロードして再実行。…

gmaven-plugin 1.3 の generateStubs に sourceEncoding を効かせるパッチを書いた

Maven の gmaven-plugin 1.3 で providerSelection に 1.7 を指定している場合、マルチバイト文字列のあるGroovyファイルで generateStubs ゴールが失敗する問題がある。GMaven の JIRA には GMAVEN-85 で上がってるのでそのうち直りそうだけど、とりあえず…

codenarc-maven-pluginをmvn siteで使えるようにするパッチ

GroovyのコーディングスタイルをチェックするCodeNarcには、Mavenプラグインが用意されてはいるのだけど、mvn siteから実行させようとすると無限ループに陥ってしまう。 仕方ないから codenarc-maven-plugin 0.8-alpha-SNAPSHOT に対するパッチを書いた。 ht…

Windowsのコマンドプロンプトを使いやすく(Linuxに近付ける的な意味で)

普段からWindowsとそれ以外のOSを使っていると、コマンドプロンプトを使ったときに思わず「ls」って打っちゃいますよね?コマンドプロンプトを複数上げてると、どの窓がどれだったか分からなくなりますよね?cygwinを入れたり、GnuWin32 を入れたりすれば、…

ea2xmi-0.0.3をリリースしました

EA

Enterprise Architect からXMI形式でパッケージ情報を出力するWin32コンソールアプリケーションである ea2xmi のバージョン0.0.3をリリースしました。ダウンロードは下記のサイトからどうぞ。 ダウンロード - EA2DDL - SourceForge.JP XMIファイルの出力は E…

はてなのデザイン変えてみた

ついでにTwitterのつぶやきを表示するブログパーツをつけてみました。

9.10 64bitで日本語環境を整備

Ubuntuの64bit版デスクトップで日本語環境を整備する手順。64bit版には日本語Remix CDがないけれど、有難いことにJapanese Teamのリポジトリにはちゃんと64bit版バイナリも用意されてるので、通常版をインストールした後、Japanese Teamの追加パッケージ利用…

Ubuntu 9.10 Karmic Koala 64bit 版をインストール

先月末に Ubuntu の最新版である 9.10 (Karmic Koala) がリリースされましたね!早速自宅のノートPCにインストールしてみました。 そもそもなぜ64bit版をインストールするのか 64bit版を使う動機として「物理メモリを3GB以上認識しない」っていうのがあるけ…

Modeling Forum 2009に行ってきた

先日六本木ミッドタウンで行われたModeling Forum 2009に、午後から行ってきました。会場はスーツを着た40〜50代のおじさまで溢れており、セッション中にノートPCを開く人など皆無で、開始5分で寝始める人も多く、技術系カンファレンスとの違いをまざまざと…

会社マスタを継承を利用してモデリングする

パッケージソフトのマスタなどをのぞいてみると、よく「得意先」「請求先」「支払先」「仕入先」「出荷先」などのテーブルがありますよね。これらのテーブルは、大体どのパッケージでも同じように、それぞれ「会社名」「コード」「連絡先」というカラムを持…

iPhone 3GSではBluetoothイヤホンのリモコンが使えない

って、知らんかったー!会社帰りにヨドバシ行って、店員さんに聞いて初めて知った! リモコンくらい無くてもーって一瞬思ったけど、そのうちApple直々に出すんだろーなーとか考えたら萎えてきたので断念。 せっかくヨドバシまで来たのに。仕方ないからかわり…

TwitterのつぶやきをSkypeのムードメッセージにするGroovyスクリプトを書いてみた

Skype4Javaをダウンロードして、skype/release/skype_[linux|osx|win32].jar をクラスパスに通すか、~/.groovy/lib にコピーする。で、末尾のソースを twitod.groovy とか適当なファイルにコピーして、 groovy twitod.groovy [twitterのuserid]で実行。最初…

iPhone 3GS買っちゃった

衝動買い。後悔はしていない。 本当はPalm Preが欲しかったのだけど、当分日本では発売されないだろうと思い込むことにした。 これで今年の冬モデルとして発表とかされたらかなり泣けるなー。。。

ぶりが提供するVIEWはOracleでインデックスが効いてない

ぶりが提供しているOracle用のDDLでは、TIMESTAMP型の扱いに誤りがあるため、VIEWでインデックスが効いてないものがあります。 VIEWの定義中、TIMESTAMP型であるprocessDateカラムをCURRENT_TIMESTAMPと比較しているところがありますが、CURRENT_TIMESTAMPは…