Enterprise × HTML5 Web Application Conference 2014に行ってきた

2月28日は、会社に許可をもらって、終日Enterprise × HTML5 Web Application Conference 2014(明星大学 日野キャンパス)に参加してきました。明星大学は初めて来たのですが、のどかで落ち着く所だなと思いました。気温も寒くなく、普段のように窮屈なスー…

デブサミ2014に行ってきた

Developers Summit 2014に行ってきました。2日目のみ、そして残念がら途中まででしたが、少ない時間の中で面白い発表が聴けて満足です。自分の見た範囲では、雪の影響もほとんど感じさせず、盛況でした。大雪の悪天候にも関わらず、毎年のことながら素晴らし…

Knockoutの小技集 〜左右二つのリストで移動可能なセレクトボックス(2)〜

第3回は予告通り前回の続きで、項目がダブルクリックされたら、他方のリストに項目を移動する機能を追加します。 ViewModel まずはViewのことを気にせず、ViewModelでどのような関数が必要になるかを考えます。なるべく前回の構造を維持するという前提で、ぱ…

Knockoutの小技集 〜左右二つのリストで移動可能なセレクトボックス(1)〜

第2回は、2つの左右のボックスを互いに移動できるセレクトリストです。 完成形 リポジトリは同じです。これ、よく見るんですけど何ていう名前が適切なんですかね…?とりあえず、RichFacesのネーミングを借りて、List Shuffleとしました。まぁシャッフル機能…

Knockoutの小技集 〜チェックボックスの全選択ON/OFF〜

年明け最初のエントリーでは、軽めの内容として、何回かに分けて、Knockout.jsの小技(HTMLの画面開発でありがちな実装について、Knockoutでの実装例)を紹介していきたいと思います。第1回は、チェックボックスの全選択on/off(いわゆるtoggle)機能です。…

2013年のふりかえり

昨年に引き続き、今年をふりかえってみたいと思います。仕事の感想はブログだと書きにくいので、それ以外の部分で。ただのメモみたいなものですが。 書籍 購入した書籍のリストです。 JBoss Enterprise Application Platform 6 構築・運用パーフェクトガイド…

レガシーテストコード改善ガイド #TddAdventJp

TDD

はじめに このエントリーは、TDD Advent Calendar 2013 - Qiita [キータ]の参加エントリーです。前日のエントリーは、@PoohSunny(swimming_pooh)さんによる「2013年のTDDイベントをまとめてみた」でした。今回が初のAdvent Calendar参加になります。どうぞよ…

Replica Setとfluent-plugin-mongoでハマった話

久しぶりのブログになってしまいました。リハビリも兼ねて、手短なネタでも書こうと思います。Advent Calendarではないですが、FluentdとmongoDBの話です(ちょどブログをサボっていた時期はNode × mongoDB × Fluentdを組み合わせたアプリケーションの開発な…

Gradleのチートシート

以前Twitterでつぶやいたのですが、Gradleのチートシートが欲しかったので、自分で作ってみました。 ソースコード https://github.com/tq-jappy/Gradle-CheatSheet ダウンロード 内容はもっと洗練させていきたいですが、ひとまず以下に公開します。https://g…

GlassFish Users Group Japan 勉強会 2013 #1

久しぶりの勉強会エントリですが、GlassFish Users Group Japan 勉強会 2013 #1に参加して来ました。勉強会の内容は、サブタイトルの「Java EE 7リリース記念・集中勉強会」の通り、先日リリースされたJava EE7の機能についての紹介がメインでした。個人的な…

Gradleを使ったWebアプリケーションのさくさく開発(環境ごとの設定ファイル管理)

ちょうどキクタローさんが「Challenge Java EE ! - maven-war-pluginで環境ごとの設定ファイルを管理してみた」を書かれていたので、便乗してGradleでやってみようと思いました。 前置き Gradleで設定情報を外出しして環境ごとに切り分ける方法については、…

Gradleを使ったWebアプリケーションのさくさく開発(Herokuデプロイ編)

久しぶりのGradleシリーズです。これまで作ったアプリケーションをHerokuにデプロイしてみます。昔はRailsアプリケーションに限っていたようですが、現在のHerokuではベータ的にGradleもサポートされています。 Q: Does Heroku support Gradle builds? A: Ye…

ページオブジェクトパターンとマッパーを使ったメンテナンスしやすいSeleniumテストケース

Selenium Webdriverを使ったテストで、前回のスローテストと別に起きる大きな問題が、テストコードのメンテナンス性の悪さでした。SeleniumのJUnit4テストコードを作るために、今までやっていたことは以下のような方法です。 Firefoxの「Selenium IDE」プラ…

WebDriver(Firefox)の起動・停止を抑制してスローテスト問題を緩和する

以前からSelenium WebDriverを使ってWebアプリケーションのテストを行なっているんですが、ずっとつきまとっていたのがスローテスト問題(テストに時間がかかる!)。スローテスト問題は、テストの並列化やテスト数の削減などの解決策とともに随所で議論され…

CoffeeScriptとKnockout.jsのサンプル

JavaScriptのMVVMフレームワーク「Knockout.js」を使ってみました。 Knockout.jsを選んだ理由 深い理由はないですw双方向バインディングがイメージしやすく、ライブラリ自体が軽量で他のライブラリに依存しないので、シンプルでわかりやすい印象を受けたか…

CoffeeScriptとJSフレームワークによるHTML5 Canvasアプリ(2)

アイテム(○、△、□、コネクタ(不完全)、直線、曲線)の追加ができるようにしてみました。フレームワーク使わずに野良MVC(MVVM?)でやってますが、今のところ楽しいです。Canvasはともかく、上のツールボックスはKnockout.jsとかを使うとうまく扱える…のかな…

Sublime Text 2でよく使う基本キーバインド

CoffeeScriptで開発している時に覚えたものから。 Ctrl ] インデント Ctrl [ アンインデント Ctrl / コメントアウト Ctrl + フォントを大きく Ctrl - フォントを小さく

CoffeeScriptとJSフレームワークによるHTML5 Canvasアプリ

諸般の事情により、今までは少し遠目で見ていたCoffeeScriptに踏み込んでみることにしました。とりあえず慣れとか開発のノウハウをためるのに、行ったことをメモ的に書いていこうかなと。 目標 簡単にWebで使えるマインドマップツールを作るやりたいことに近…

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が提…

トランザクション属性REQUIRES_NEWの落とし穴

トランザクション属性としてREQUIRES_NEWを指定したセッションBeanのメソッドを、別のセッションBeanから何度も呼ぶと、2回目の呼び出しの時にトランザクションタイムアウトが起こるまで、処理が固まってしまう現象が起きた。簡略化すると、以下のようなセッ…

Windows環境にてRESTEasyを使ってJSONレスポンスを返すとUTF-8にならない件

RESTEasyの話。リソースクラスを実装して、JSONレスポンスを返そうとした時に、アプリケーションがUTF-8でなくShift-JIS形式のJSON文字列を返してしまう現象に出くわした(JBoss 5.1.0GA, Seam 2.2)。なお、JSONエンコーディングにはJSONICを利用。ただし、…