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は…

DBFluteのぶり対応をカスタマイズ

jfluteさん向けメモ的なエントリ。 DBFluteでぶり対応を有効にすると、Entityに「BuriDef.パッケージ_プロセス_Status getStatus_パッケージ_プロセス()」というメソッドが追加されるけど、メソッドの中で getBuriPathData().getPathName() をしている。この…

Ubuntu 8.10 で Sun-Java を標準にする

https://help.ubuntu.com/community/Java $ sudo apt-get install sun-java6-jdk $ sudo update-java-alternatives -s java-6-sun単に $ sudo update-alternatives --config javaとすると、/etc/alternatives/java 以外のものが java-6-openjdk を指したまま…

ぶり祭り2008

先日ぶり祭り2008に参加してきました。どんな祭りだったかは ぶり祭 2008 - 豆無日記 が詳しいのでそちらで。しばらくBuriを調べてて、「これでワークフローエンジンとして耐えられるんだろうか?」と疑問に思っていたんだけれど、その疑問は解決?した。 ぶ…

DBFlute-0.8.3と0.8.4は使っちゃダメ?

DBFlute-0.8.3(多分)から、自動生成されたコードがmaven(つまり素のJDK)でコンパイルできなくなっている。S2Dao依存を外して独自実装されたところで、Genericsの扱いにやられている模様。質の悪いことにEclipse上ではコンパイルできちゃってるので、コミ…

S2Daoは枯れたと思ってたのに

1.0.49でAbstractIdentifierGeneratorのコンストラクタのシグネチャが変更されたので、MS-Accessのオートナンバー用に作ったGenerator(IdentityIdentifierGeneratorを継承)がコンパイルエラーになってしまった。。。 DBFluteのbasic-exampleも1.0.49にアッ…

DBFluteのMS-Access自動生成

DBFlute 0.8.2(?)からMS-Access用の自動生成ができるようになってます。build-project.propertiesのtorque.databaseには「msaccess」を指定します。JDBCの設定(databaseInfoMap.dfprop)はこんな感じで。 map:{ ; driver = sun.jdbc.odbc.JdbcOdbcDriver…

JdbcOdbcDriverでMS-Accessに接続するときのメモ

DB

driverClassNameは"sun.jdbc.odbc.JdbcOdbcDriver" URLは"jdbc:odbc:{ODBCデータソース名}" 文字コード指定は接続プロパティのcharSetで行う URLに"jdbc:odbc:hoge;charSet=MS932"とやっても何故か効かない DatabaseMetaData#getTables などのschema名を引数…

EAからのDDL出力カスタマイズ

EA

自分TODO AccessにJDBC-ODBCで接続して中身を取ってくる 済 EAテーブル構造の把握(大体理解した) DB方言に対応する(S2JDBC-GenのEntityModelに乗せる?) 固定カラムを自動で追加する(EA上で追加しなくてもいいように) ディクショナリに対応する(EA上…

(今更)JDBCでMS-Accessにアクセス

DB

自分は普段Enterprise Architectというモデリングツール(有名?)を使ってER図なんかを書いてます。で、EAはモデルからDDLを作成してくれるんですけど、残念ながらテーブルの論理名をDDLのコメントとして出力する機能がなぜかないんです。しかもJavaソース…

Oracleのシノニムでカラム名が見えない(続き)

昨日DBFluteでシノニムのカラムが取れないと言った話の続き。 今日やってみたら、SELECT権限しかないテーブルへのシノニムでも、きちんとカラム名が取れました・・・ databaseInfoMap.dfpropのpropertiesMapの指定が間違ってたような。。。 id:jfluteさん、…

Oracleのシノニムでカラム名が見えない

DBFlute 0.7.8からgenerateがDBのシノニム(またはエイリアス)に対応したということなので0.8で試してみたけど、Oracle 10g XEでカラム名がとれませんでした。 project-schema-xxx.xmlにはテーブルがtype="SYNONYM"でてくるので、シノニム自体の取得はでき…

データベースの進化的設計

こないだのSeasar Conferenceでデータベースの進化的設計というのが印象に残ったのでオブラブで公開されてる日本語訳を読んでみた。 自分はDBFluteを使っているので、その観点でまとめ。 DBAは開発者と密接に協力し合う みんな協力してがんばろうというお話…

JiemamyとDBFlute

Seasar Conferenceで一番興味があったのは、データベースの進化的設計を実現するというJiemamyでした。 というのも、いまはDBのスキーマとUT/IT/ST用のデータ管理にDBFluteを使っているのですが、開発時にちょっと嫌な点として、スキーマを変更する度にデー…

Seasar ConferenceとDBFluteユーザーの集いに参加してきました

先日行われたSeasar Conferenceに参加後、DBFluteユーザーの集いに参加してきました。意外と.Net系が多いんだなぁと思ったり、名古屋や九州(!)から参加していることにびっくりしたり、とても楽しい会でした! 主催してくれたjfluteさんに感謝です!! 約…

Maven 2.0.7 + Continuum

Maven 2.0.7 のmvn.batは、エラーコードを正しく返さない。そのため、たとえコンパイルが失敗しても、テストが通らなくても、Continuumはビルドが成功したと判断してしまう。(From Continuum - Continuum Faqs) Continuumサーバのmvn.batを、上からたどれ…

実写『ドラゴンボールZ』公開日決定

マイコミより ストーリーの大枠も明かされた。人型ロボットの悟空はある日、自分が地球を破壊するために送り込まれていたということを知る。しかしその使命には従わず、ドラゴンボールを手に入れて宇宙を支配しようとする異星人の猛攻から地球を守るために立…

cobertura-maven-plugin 2.1でカバレッジが100%になるバグの回避方法

Maven2でcobertura-maven-pluginの2.1には、レポートでカバレッジが常に100%になっちゃうバグがある。これはmaven-surefire-pluginでcoberturaのファイルを指定してやることで、正しい結果を得ることができる。2.0に戻したりする必要はありません。 <plugins> <plugin> <groupId>org.ap</groupid></plugin></plugins>…

Consolas、DejaVu Sans MonoをgVimで利用する

欧文セットしかないフォントをgVimで利用する場合のメモ。 プログラミングをしていると、ほぼ等幅ゴシック体フォントを見続けることになるのですが、MSゴシックは 線が細くて見にくい ClearTypeが意味無し なので普段は違うフォントを利用しています。 Conso…

Jazztronik - Grand Blue

タワレコがダブルポイントキャンペーン中だったのでいってみたら、Jazztronikのフルアルバムが発売されてるじゃないですか!!Love Tribeなんかも入ってて、しかも初回限定盤DVD付、こりゃもう買うしかない!ってことで、他にStudio Apartmentなどもまとめ買…

特定ディレクトリ以下の指定日以降に修正されたファイルだけを別ディレクトリにコピーする

xcopy 送り側 [受け側] /S /D:月-日-年 これを利用して、SVNから指定日以降に修正されたファイルのみ取り出すことが可能。 svn export [URL] todir xcopy target todir /s /d:6-29-2007