AWS SDK for Java (DynamoDBMapper)を使った条件付き書き込み

DynamoDBMapperの概要については以下に書かれています。 docs.aws.amazon.com DynamoDBMapper はタイプセーフに扱えて便利な反面、素のAWS API(オペレーション)が色々とラップされてしまっているので、以下によく使う利用法を逆引きリファレンスとして整理…

(続)活動を意図的にアーカイブしてテストしたい #salesforce

この前(というか日付的には昨日)、こんな記事を書きました。 jappy.hatenablog.com 「期日が1年以上前の活動を作ったら、そのうちアーカイブされると思ったが、1日待ってもアーカイブされなかった」というのが要旨ですが、改めて確認するとアーカイブされ…

活動を意図的にアーカイブしてテストしたい #salesforce

Salesforceにおける活動のアーカイブとしては、 期日が365日以上前の活動はアーカイブされる この365日という期限に関しては、サポートデスクに依頼することで(必要であれば)延長できる ことまでは書かれています。 さて、1件も活動が登録されていないクリ…

MyBatisのMapperをSpockで全自動テスト

MyBatisのSQLは2Way SQLではない上、動的SQLやスニペットなどによって可読性が損なわれがちということもあり、構文エラーは早めに検知する仕組みを用意した方がよいという印象です。 そこで、Mapperを全スキャンして、SpockでData Driven Testingを行う方法…

ApexでJSON.serializeした時のデータ型ごとの出力形式まとめ #salesforce

Apexでオブジェクト(SObject)を JSON.serialize した時に、データ型ごとの出力形式がどうなるのか、確認しました。 どこかにまとまっているのかもしれませんが…。 データ型が()付きのものは標準項目、それ以外はカスタム項目です。 データ型 出力時のフィ…

GradleでMyBatis Generatorを使う

MyBatisを使ったことがなかったので、評価中です。 MyBatis Generator用のGradleプラグインがあるみたいなので、試してみました。 Gradle - Plugin: com.arenagod.gradle.MybatisGenerator build.gradle build.gradle は以下のような感じです。 plugins { id…

Spring Bootでキャッシュ(Redis)からのデータ取得エラー時のカスタマイズ

(この前書いた以下の記事に近い話ですが、今回はSpring Sessionに限らない話です) Spring Bootでキャッシュ機構としてRedis( org.springframework.boot:spring-boot-starter-data-redis )を使っている場合、デフォルトでは Redis への書き込み、Redis から…

小ネタ) SpockのData Driven Testingでテスト観点をUnrollのメソッド名に記述するとよいかもしれないと思った話

Spockのデータ駆動テスト(Data Driven Testing)では、メソッド名としてデータ変数を含んだ文字列を使うことで、テスト結果を見た時にどこで失敗したか、わかりやすくすることができます。 データ駆動テスト — Spock 1.0-SNAPSHOT さて、この時に利用するデー…

マルチデータソースにおけるGradleでのFlywayタスク実行

マルチデータソース(2つのRDB)を使っている場合に、FlywayのGradle PluginでflywayMigrateなどのタスクを実行し、両方のDBにマイグレーションを実行したい場合。 flyway { user = 'user1' password = 'pass1' url = 'jdbc:xxx://host1/db1' } def flyway2 …

Spring Sessionのバージョンアップとデシリアライズエラー

Spring Security + Spring Sessionを使っている場合、通常、セッションの中身はシリアライズされてセッションストアに保存されます(実際に確認したのはRedisのみ)。 シリアライズされる org.springframework.security.core.context.SecurityContextImpl に…

正解が見えない課題を圧倒的に解決する超仮説思考 #書籍

正解が見えない課題を圧倒的に解決する 超仮説思考作者: 高野研一出版社/メーカー: かんき出版発売日: 2016/08/26メディア: Kindle版この商品を含むブログを見る 印象に残ったところを自分なりにまとめるとこんな感じでした。 5F, 3C, SWOT等のフレームワー…

Spring BootでJettyのログを少しカスタマイズする

Spring Bootでリクエストログを出力するための方法については、以下の記事で紹介されています。 qiita.com 以下の内容はSpring Boot 1.4.3で確認してます。また、Jetty以外のアプリケーションサーバの場合は当然ながら全く違った設定方法になります。 X-Forw…

Cloud First Architecture 設計ガイド #書籍

気が付いたら2017年も1週間が過ぎてしまいました。まさか7月のイベントが2016年の最後のエントリになるとは思いませんでした。 年々顕著にエントリが減ってきているので、今年は週1くらいのペースで書く習慣をつけていきないなと思います。 ネタが少ない時な…

Doma勉強会 in 東京に行ってきた #doma_tokyo

Doma勉強会に行ってきました。 eventdots.jp 最近はJPAを使っていてDomaを使えていないのですが、以前そこそこ長い間(3年以上)Doma(1, 2両方)を使ったシステム開発をしてたので、そのあたりからの進化とか色々知ることができました。 スライドは公開され…

Spring Bootでprototypeスコープを使う方法あれこれ&ベンチマーク

今更感はありますが…。 Spring Boot(というよりSpring)でインジェクションされるコンポーネントのデフォルトのスコープはSingletonになります。 そのため、Singletonスコープのコンポーネントに対して、Singletonより短いスコープであるPrototypeコンポー…

モダンJavaScript(ES6)で書いたコードがIEで動かなかったので対応ポイントをメモ

ES6で書いていたJavaScriptのコードがIE(※)で動かなかったので、その時に対応した内容のメモです。 ※ IEのバージョンは9以上を想定してます。IE8、あるいはそれ以前となるとさらに面倒さが増すので。 各ブラウザの対応状況を知る 各ブラウザの対応状況を調…

forcedotcom/wscにプルリクエストを送ってみた

先日Qiitaにこんな記事を書きました。その続きです。 qiita.com さて、変換仕様をwscを使ってアップロードするメソッドは2つあります。 void BulkConnection#createTransformationSpecFromStream(JobInfo, InputStream) TransformationSpecRequest BulkConne…

5分くらいでわかるSwagger

最近身の回りでSwaggerを聞くことが多くなってきたと感じます。 上記記事でも言及されていますが、AWS API Gateway Importerでも、APIをAPI GatewayにインポートするためのAPIの入力仕様としてSwaggerが使われています。 私もちょっと前から、AWS API Gatewa…

Google Maps API v3で任意のDOMをマーカーにしてアニメーションで移動させたい

なぜかGoogle Maps APIを使うことがここ最近は増えました。 さて、Google Maps API v3を使って地図上にマーカーを表示させる場合、標準APIだけだと少し不足感を感じることがあります。 まず、標準APIで使えるのはデフォルトのピン(画像データ)や、指定した…

Spring Session利用時、Redis上のセッション情報をデバッグするツールを作った

Spring Bootによるアプリケーションでは、Spring Sessionという仕組みでRedisにセッション情報を保持させることができ、複数サーバ間でセッション情報を共有する仕組みを簡単に実現できます。 さて、デバッグのために、Redis上のセッション情報の中身を確認…

developとトピックブランチだけで運用してたらmasterを作ってなかったので作った

GitHubを使った開発フローで、本流であるdevelopと、プルリクを送るためのトピックブランチを使ってサイクルを回していました。 しばらくコミットを重ね、ようやくリリースに至り、masterブランチにdevelopをマージしようとしたところ、masterブランチを作っ…

Boot Campで起動したWindows 7上でUSBメモリが認識しない

(注)プログラムと関係ないですが、ハマった話を書いておきます。 タイトルの通りで、Boot Campで起動したWindows 7上でUSBメモリが認識しない現象に遭遇しました。 この手の症状は検索すると色んな対処法が出てくるのですが、どれを試しても解決に至らず困…

GitHub FlowとPull Request駆動開発をYWTでふりかえり

最近関わったプロジェクトでは、GitHub FlowとPull Requestベースの開発を行いました。 個人的には、まともにこのスタイルで開発するのは初めてだったということもあり、YWT(やったこと、わかったこと、次にやること)形式でふりかえった結果を紹介していきま…

IonicとCordovaのバージョンについて整理してみる

ここ最近はIonicを使ったハイブリッドアプリを開発してました(個人でなく、会社でのプロジェクトです)。 さて、こちらの記事の通り、Cordova Androidに脆弱性が見つかり、修正版がリリースされました。 IonicではCordovaのAPIを利用してネイティブの機能を…

社内LTでゲームフレームワークPhaserについて話をしました

久しぶりのエントリになってしまいました。内容はどうあれアウトプットも大事にしていきたいのですが、ここ最近は社内のBacklogに閉じてしまっているのが悩ましいところです。 さて先日、社内でLT大会がありました。 テーマに縛りがなかったため、色んな話が…

「実戦での Scala ~ 6つの事例から知る Scala の勘所~」に参加してきた #jissenscala

スマートニュース様にて開催された「実戦での Scala 〜 6つの事例から知る Scala の勘所〜 - 実戦での Scala | Doorkeeper」に参加してきました。 簡単にですが、感想を書きたいと思います。 私とScala いきなり「お前なんでここに来たんだ」という感じです…

Jenkins Workflow Pluginを使ってGradleマルチプロジェクトのワークフローを組んでみた(WIP)

先日のJenkinsユーザ・カンファレンスの講演を受けて、Jenkins Workflow Pluginがすごく便利そうだったので、早速試してみました。 Jenkins ユーザ・カンファレンス 2015 東京に参加してきた。 #jenkinsja #juc2015 - Splash of waters - 2nd. Season 想定す…

Jenkins ユーザ・カンファレンス 2015 東京に参加してきた。 #jenkinsja #juc2015

今年もマイペースに更新していきますので、よろしくお願いします。 今年は参加したイベントのレポートを忘れずに書くことを目標にしたいと思います。ということで早速、今年最初の参加イベントである「Jenkins ユーザ・カンファレンス 2015 東京」についての…

Java SE 8とJava EE 7によるアプリケーションのモダナイゼーション~中間ふりかえり~ #javaee

はじめに この記事は、「Java EE Advent Calendar 2014」の5日目の記事となります。 昨日は、@kazuhira_rさんの「JCacheの実装とキャッシュ管理のご紹介」でした。 明日は、@susumuisさんの「ねこ踏んじゃった系エントリ:Tomcatいじめたら意外と強かったこ…

Java EE 5からJava EE 7へのアップデート 〜依存関係の大掃除〜

ちょっと泥臭い話で、Java EE 5からJava EE 7へのアップデートにあたり、利用しているサードパーティ製の追加ライブラリ(依存関係)についても改めてみることにしました。せっかくJava EE 7標準で用意されているのに他の代替ライブラリを使い続けてる、みた…

Java EE 7アプリケーション開発のスタートアップ

前日のエントリで予告しておいたJava EE 7アプリケーション開発のプロジェクトひな形ですが、「結合テストとワンクリックデプロイがすぐに使えるJava EE 7開発のためのbuild.gradle」としてQiitaに投稿したので、そちらをご覧ください。 結合テストとワンク…

Java EE 5からJava EE 7へのアップデート

注)このエントリは前置きです。 Java EE 5で作ったアプリケーションをJava EE 7にアップデートすることを検討中。 実は、3年近く前に、Java EE 6 (JBoss AS 7)へのアップデートを試みたのだけど、諸々の事情があって保留になっていました。。 JBoss AS7を使…

最近のJava関係イベントの個人的なまとめと感想

デブサミやJava Day Tokyoなど、会社の許可をもらってイベントにありがたく行かせてもらっているけど、ちゃんとレポートできていなかったということで、社内勉強会で話すことにしました。 まとめ資料を作ったので、このブログにて先行して公開してしまいます…

Redmineのカスタムクエリを少し便利にするプラグイン

会社の業務で必要に迫られているものとは別に、Redmineのプラグインを作りました。 Redmine Query with Version Plugin プラグインの概要 カスタムクエリと任意のバージョンの組み合わせによるチケット検索を可能にするプラグインです。 特定のバージョンの…

Qiitaのブログパーツのカスタマイズ&設置

伊藤さんのブログの「Qiitaのブログパーツをはてなブログのサイドバーに設置する方法」を参考に、便乗してこのブログのサイドバーにもQiitaのブログパーツを貼り付けてみました。 同じく、@suinさんの作られているQiita Widgetをカスタマイズしています。 カ…

いいコードをみんなで書く

Keynoteに慣れるために、適当なスライドを作ってアップロードしてみました。 このスライドは、1年くらい前にチームで行ったLT大会の初回に発表したテーマです。プログラミングをする上で考えていることとか、これまでの反省点とか、LTみたいな場がないと話さ…

Dropwizard 0.7.0でWebSocket

Dropwizard 0.7.0では組み込みWebサーバとしてJetty 9.0.7が使われており、Jettyであれば非Java EE7環境でもWebSocketが使えるはずだと思ったので、一番簡単なechoを作って試してみました。 build.gradle まず、websocket-server への依存関係を追加します。…

Dropwizard0.7.0でのassets

Dropwizard続き。 Dropwizardで作るアプリケーションのビューとしては、「Dropwizard Views」にあるように、FreeMarkerとMustacheが使えるみたいなのですが、せっかくJAX-RSベースのRESTfulアプリケーションを開発しているので、ビューとロジックは分けたい…

「qpstudy 2014.04 ~俺の屍を超えて行け、でも踏まないで~」をニコ生で観た

140文字にきれいに収まらないかもしれないので(きれいに収まっていないのはいつもだけどw)、こっちに感想を残しておこう。 「qpstudy 2014.04 ~俺の屍を超えて行け、でも踏まないで~」がニコ生で観られるとのことだったので、昨日観てました(途中から…

DropwizardでWebアプリケーションを作る

調べものをしていたらたまたまDropwizardを見つけたので試してみました。 Dropwizardとは? Dropwizard is a Java framework for developing ops-friendly, high-performance, RESTful web services. 公式サイトにある通り、「運用に優しく、ハイパフォーマ…

VeeweeでCentOS6.5のboxを作る

ただの作業記録です。 以下のGemfileを作って bundle install source 'https://rubygems.org' gem 'veewee' CentOSのテンプレートを探す # bundle exec veewee vbox templates | grep CentOS CentOS6.5が見つからないため(veewee 0.3.12時点)、CentOS6.4を選…

Jenkins×Capistrano3×Chef×serverspec×Dockerを使った一気通貫な開発

ここ最近、タイトルの通りのことをやろうとしていて、そのための雑記(記録)を書いていこうと思います。 目的 自動化できるところは可能な限り自動化し、テストできる(すべき)ところは可能な限りテストする、といった当たり前のことを当たり前にやって、…

Qiitaとの棲み分けを考えるテスト

ブログでは最近の活動とか、Qiitaで書いた内容を紹介してみたらどうだろうか?というものです。 読んだ本 なぜ、システム開発は必ずモメるのか? 49のトラブルから学ぶプロジェクト管理術 なぜ、システム開発は必ずモメるのか? 49のトラブルから学ぶプロジェ…

はてなブログに移行しました

はてなブログに移行しました。移行したのにあまり理由はありません。強いて言うなら、Markdown記法が使えるということと、タイトルが浮かんだことくらい。 ただ今後は、整理したトピックはQiitaに書くようにしていくかもしれないです(この辺の棲み分けは試…

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 構築・運用パーフェクトガイド…