Gradleを使ったWebアプリケーションのさくさく開発(マイグレーション編)

さくさく開発にかかせないのが、データベースのマイグレーション。今回は、Flywayを使って、GradleのタスクとしてFlywayのマイグレーションが実行できるようにします。FlywayはJava向けのDBマイグレーションフレームワークの一つで、個人的にはシンプルで扱…

Gradleを使ったWebアプリケーションのさくさく開発(Jenkins連携編)

今回はGradleをJenkinsで使う場合の話です。Jenkinsを使って前回作成したプロジェクト(gradle-sample-webapp)のビルドを行います。 リポジトリからソースコードを取得 ユニットテストの実施 war作成 Javadoc作成 Jenkinsにプラグインをインストール Jenkin…

Gradleを使ったWebアプリケーションのさくさく開発(war作成とJUnit編)

時間とモチベーションに余裕のあるうちに行けるところまで調べていきます。というわけで、今回はwarの作成と、Jettyでの起動確認。 コード 需要はないと思いますがGitHubに公開します(EclipseからGitを利用するのに妙にハマりました…。Gitはあまり使い慣れ…

RHEL4でのdaemon起動スクリプトの注意点

/etc/init.dにおく起動スクリプトを書く時の注意点。RHEL4の場合、/etc/init.d/functionsにあるdaemonシェル関数でpidfileオプションが使えないので、注意が必要です。startに daemon --pidfile=${pidfile} "${cmdline} &" のように書いてしまうと、「Usage:…

Gradleを使ったWebアプリケーションのさくさく開発(トラブルシューティング編)

さくさく開発を目指しているのに、トラブルシューティングに時間をとられるのもいかがなものかと思いつつ…。 Build Gradle Model for xxx 昨日作ったgradle-sampleプロジェクトが、今日Eclipseを起動した時にタスクが何も実行できなくなってしまいました…。…

Gradleを使ったWebアプリケーションのさくさく開発(セットアップ編)

IvyやMavenもまともに使ったことはないですが、Gradleを使いはじめました。 目標と前提条件 Gradleがどこまで面倒見てくれるかは何も考えずに立てた条件がこちらの通りです。 Jettyで動作する実行可能なWAR(java -jar sample-app.war -p 8080みたいな形で)…

Redmineでのエラー「リポジトリに、エントリ/リビジョンが存在しません。」

Redmine設定のピンポイントなネタです。日常的にRedmineを使っていくと、バージョン管理システム(VCS)との連携なしでは考えられなくなってくるので、エラー「リポジトリに、エントリ/リビジョンが存在しません。」なんてのは運用上、致命的。GitやMercurial…

Developer Migration 2013

Developer Migration 2013に参加しました。有用な話が多々聞けてとても充実したイベントでした。 開発者は仕事でリーダブルなコードを書けるのか?(株式会社クリアコード 須藤 功平さん) プレゼンメモ: コードは書いた人の意図を語る→書いた人の意図がわ…

アジャイル開発とスクラム 顧客・技術・経営をつなぐ協調的ソフトウェア開発マネジメント

デブサミで購入した本ですが、読み終えました。買ったきっかけは、エクシード千葉さんの「Opsから挑むDevOps」でテンションが上がって、その中で参考文献として挙げられていたからです。単行本でも中身は大変濃く、よくまとまっている本だと思いました。自分…

Developers Summit 2013に参加してきました。

目黒雅叙園で2月14と15日に開催されたDevelopers Summit 2013(通称デブサミ)に行ってきました。発表者、参加者、スポンサー、スタッフの皆さま、おつかれさまでした。聞いたセッションは以下の9つ。内容未定の時点で申し込んだとかも含まれてますが、概ね…

IndexErrorを起こさないArray#transpose

Rubyの基本的なメソッドの話題です。Rubyで配列の配列を行列と見立てて、転置行列を求める場合、Array#transposeを使いますが、このメソッドは、各要素数が異なるとIndexErrorが発生します。これを、要素数が異なっていても、後ろの要素にnilが入ってるとみ…

Java ♡ HTML5 Nightに行ってきた。

先日、Oracle本社にて開催されたJava ♡ HTML5 Nightに行ってきました。JJUGとhtml5j.orgの初の共催イベントらしく、とてもためになる内容で、面白かったです。主催、スタッフ、参加者の皆さま、おつかれさまでした。資料は公開されるのかどうかわからないで…

SinatraをJerseyと比べながら試してみた

Ruby on Railsのintegrationテストを真面目に書いていたら挫折しそうになったので、色々と寄り道しながら調べていたら*1、Ruby on Rails以外のRuby製WAFとしてSinatraを知ったので、試してみました。簡単なRESTfulアプリケーションを作りたいという時の選択…

rbenvとVirtualBoxで0から作るRuby on Railsアプリ開発環境

2013年最初のエントリは、rbenvとVirtualBoxでRuby on Railsアプリの開発環境を作る手順です。入門編。簡単にきっかけなんかを書きます。今の仕事では、Railsプロジェクト用の開発サーバ(CentOS)が存在し、そこに各メンバーがログインして、開発するスタイル…

2012年のふりかえり

うちは28日が仕事納めだったので、すでに年末年始休暇中ですが、この機会に2012年を軽くふりかえってみました。 仕事 個人的には可もなく不可もなくかなと(それでいいのかはさておき)。ある程度年内で区切りをつけて休暇に入れたのでよかった…。周囲で異動…

リソースクラスにGuiceでオブジェクトをDIする(Jersey版)

JerseyとGuiceの連携の例。Jerseyを使うとJAX-RS準拠のRESTfulなHTTPサービスを作ることができる。この時リソースクラス(クラス宣言に@Pathをつけたクラス)は、自動でHTTPリソースとして登録されるので、特別インスタンスを取得することはない。ただ、DIコ…

Arquillianで結合テストをしてみる

単体テスト(JUnit)では起きない(=パスする)けど、システムテストで見つけるのでは遅すぎる、そんな類のバグを結合テストで検出したい。ってことで、Arquillianを使うことにした。毎回ちまちまとやってる同じような回帰テストを継続的に自動実行できるよ…

The transaction is not active!

Transaction is not active: javax.transaction.RollbackException: The transaction is not active! というエラーと奮闘した話(JBoss AS5.1.0GA/Seam2.2/EJB3)メッセージでそのままぐぐればTech Team Lead Newsの記事が見つかるので、トランザクションタ…

CanvasとJSで遊ぶ〜プロローグ〜

pygameでの自己満足ゲーム開発が止まって大分経つけど、浮気してJSに手を出してみようと思う。余談になるけど、最近、無理やり仕事でPythonを使う機会を作ってみて、簡単なプログラムを作ったが、なかなか書けずに苦労する辺り、自分の未熟さを知った…。うー…

JavaからPowerShellを実行するとコマンド(プロセス)が終了しない場合の対応

JavaからWindows PowerShellスクリプトを実行しようとすると、Process#waitFor()がいつまで経っても終わらなくて(powershellプロセス自体も残ったまま)ハマったので、それを回避する方法についてまとめる。以下は、JavaからC:\test.ps1というPowerShellス…

DbUnitをApache POI3.8互換にする

昨日のつづき。修正箇所はそこまで多くなかったので、自前で修正してjarを作ることにした。DbUnitが依存するApache POIを最新の3.8にしてNoSuchMethodErrorを回避する方法。 org.dbunit.dataset.excel.XlsTable org.apache.poi.ss.usermodel.DateUtilをimpor…

DbUnitが2年ぶりに新しくなったので・・・

DbUnit( http://www.dbunit.org/ )の2.4.9がちょっと前にリリースされた。アップデートはもうないものだと思っていたのだけど。DbUnitは、Excelのデータファイルを扱うために利用しているApache POI( http://poi.apache.org/ )を使っている。ただ困ったこと…

pages.xml備忘録

実は、JBoss Tools使わずにSeamアプリケーションを作っていたので、ページ制御は結構いい加減。すでにログイン済みの場合にログイン画面を表示しようとしたら、指定した画面にリダイレクトする、っていう簡単な定義をするのにも四苦八苦…。というわけで、困…

スタンドアロン環境で動くRailsアプリインストール(Rails3編)

Rails3からパッケージ管理にBundlerが使われるようになったので、依存するGemとか気にせずに「bundle install」一発で済むようになった。これはすごく便利なんだけど、非インターネット接続環境でインストールしたい場合には、ちと工夫がいる。Gemfileに書か…

今更のデータベースバックアップ・リストア・移行(MySQL編)

仕事だとPostgreSQLばかりで、あまりMySQLを使ったことはなかったので。とにかく肝は文字化けしないようにすること。 ダンプ mysqldump -u [ユーザ名] --default-character-set=binary -p [データベース名] > dump.sql リストア mysql --default-character-s…

Redmineで複数のプラグインを共存させたり、開発する場合の勘所

Redmineのプラグイン開発。詳しくわかってない人が詳しくわかってないなりに、複数のプラグインを導入する場合のプラグイン開発において、ハマったポイントとかを交え、勘所としてまとめておく。プラグイン開発のTipsやチュートリアルは公式を参照。 develop…

Jenkins ユーザ・カンファレンス 2012 東京に行ってきた

昨日のpyfesに引き続き、今日はJenkins ユーザ・カンファレンス 2012 東京に行ってきた。大変に有意義な1日になったと思う。あと、ノベリティも充実しており、大事に使いたいと思う。企画者、スタッフ、参加者の皆さま、おつかれさまでした。概要は公式サイ…

Python Developers Festaに行ってきた

Python Developers Festa 2012.07に行ってきた。今回が初参加。楽しかった。おつかれさまでした>企画者、スタッフ、参加者の皆さま規模の割にブログが書かれないイベントとして有名らしい。たしかに、プレゼンの半分以上はPython関係なかったし。そんなわけ…

第6回渋谷Rails勉強会に行ってきた

というわけで、最近またRailsを触るようになったので、タイミングよく開催された第6回渋谷Rails勉強会に行ってきた。懇親会(飲食無料)に参加して、帰ってきてこの記事を書いているので、ほろ酔いである*1。久しぶりに名刺交換した。第6回ってことだけど、…

Flotを使ったリアルタイムグラフ更新を少しカスタマイズしてみた

Javascript製のグラフ描画用ライブラリとして、色々あるうち、Flotを使ってみた。他にもいくつか選択肢はあったんだけど、 Ajaxで外部データを取り込んでグラフ描画が可能 以前も使ったことのある実績(簡単に使える) jQuery製であること ひと通りのAPIが提…