今さらながら Selenide を使ってみる

今さらながら使ってみたけどいい感じ / Selenide: concise UI tests in Java https://t.co/IDTaRXqICV— kntmr (@knt_mr) 2017年10月5日 簡易なテストページを作って試してみました。 サンプルコード 以下、備忘録。 各ブラウザの WebDriver をダウンロードし…

JJUGナイトセミナー「メッセージングミドルウェア特集」に行ってきた #jjug

先日、JJUGナイトセミナー「メッセージングミドルウェア特集」に行ってきました。簡単に所感をまとめます。 jjug.doorkeeper.jp メモから抜粋。(資料が公開されたら貼っておきます) 実運用して分かった Rabbit MQ の良いところ・気をつけること オープンソー…

JSUG勉強会 2017年その7 〜 俺たちのマイクロサービス に行ってきた #jsug

JSUG勉強会 2017年その7 に行ってきました。簡単に所感をまとめます。 jsug.doorkeeper.jp 今回のテーマはマイクロサービスです。メモから抜粋します。 無理をしないマイクロサービス マイクロサービスアーキテクチャは手段 組織や体制に合うやり方でこれま…

java.lang.IllegalArgumentException: Comparison method violates its general contract!

自作の Comparator でリストをソートしたら初めて見るエラーメッセージが。 java.lang.IllegalArgumentException: Comparison method violates its general contract! 再現コード ※Java 1.8.0_92 です。 なかなか再現できずいろいろ試した結果、以下のように…

Spring の Bean Validation でエラーメッセージにフィールド名を埋め込む

Bean Validation と書いたが、メッセージにフィールド名を埋め込むのは、正確には Spring が提供する機能らしい。 サンプルコード アノテーションは以下の通り。 @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) @Constraint(validatedBy =…

Bootstrap と Vue.js で簡単なモックアップを作る

以前、Bootstrap ベースのモックアップについて書きました。 Bootstrap を利用して簡単なモックアップを作る - kntmr-blog で、今回は Bootstrap + Vue.js 版のモックアップを作ってみました。モックアップとしての内容は Bootstrap 版と同じです。Vue.js と…

Oracle 認定資格デジタルバッジ

8月から Oracle 認定資格を保有していることを証明する電子証明書『デジタルバッジ』の提供が開始されたようです。保有資格をオンラインで公開できるものらしい。 education.oracle.com というわけで、Oracle Certified Java Programmer のデジタルバッジを…

サービスインと切り戻しについて

先日、お客様サイドで新規システムのリリース対応がありました。 が、新規システムに正しくデータが連携できなったようで、長時間の作業も虚しく、残念ながら切り戻しとなりました。ちなみに、切り戻しと言うのは、新規システムのリリースを取り止めて旧バー…

Haskell を使ってみる 9 (高階関数1)

前回の続き Haskell を使ってみる 8 (再帰) - kntmr-blog 引数に取ったり返り値として返せる関数を高階関数と呼ぶ。 カリー化関数 Haskell のすべての関数は引数を1つだけ取る。複数の引数を受け取るような関数はカリー化されている。関数を本来より少ない引…

LINE Messaging API と Google Apps Script で LINE BOT を作ってみる

LINE Messaging API と Google Apps Script で LINE BOT を作ってみるメモ。今回は、LINEのグループに送信したメッセージをメールで転送するBOT。 アカウント作成 / BOT設定 ※事前にLINEアカウントを作成すること 「LINE Business Center > サービス」の Mes…

Haskell を使ってみる 8 (再帰)

前回の続き Haskell を使ってみる 7 (ガード) - kntmr-blog 再帰 関数を再帰的に定義する場合は問題を同じ種類のより小さな問題に分解する。再帰を使わずに定義できる問題を基底部と呼ぶ。再帰を実装する場合は基底部から考える。 maximum' :: (Ord a) => [a…

テスト駆動開発モドキ実践

TDD

過去のブログを掘り起こしたらこんなエントリを見つけました。 単体テスト(ユニットテスト/UT)で考えること - kntmr-blog どうすれば、メンテし易く保守性の高いソースコードが書けるか、というようなことを考えていた頃のエントリだと思われます。所謂、『…

JSUG勉強会 2017年その4 ~ Springを使ったバッチアプリケーション特集 に行ってきた

JSUG勉強会 2017年その4 に行ってきました。簡単に所感をまとめます。 jsug.doorkeeper.jp 今回のテーマは Spring を使ったバッチアプリケーション特集です。 バッチは地味だが役に立つ 20170525 jsug バッチは地味だが役に立つ from Yuichi Hasegawa …

フレームワークや開発ツールを取り入れることの意義とは

数年ほど前から JavaScript フレームワークの話題をよく見かけるようになり、同時に各所で適用事例が挙がるようになりました。 ところが、最近になって、JavaScript フレームワークを採用した SPA をやめてサーバーサイドレンダリングに移行した、みたいな話…

Eclipse の Team Synchronizing パースペクティブが開かない

Eclipse でプロジェクトのメニューから Team > Synchronize with Repository とすると、今まで Team Synchronizing パースペクティブが開いていたが、新しい開発環境を構築したら、ふとした拍子にパースペクティブが開かなくなってしまった。そんなときのメ…

GitHubとクラスメソッドの勉強会に行ってきた #github_method

GitHubとクラスメソッドの勉強会に行ってきました。簡単に所感をまとめます。 classmethod.connpass.com 今回のテーマは「GitHub x AWS の最新 DevOps 事情」です。 DevOps はインフラ自動化やリリース自動化など、ひとによって捉え方は違う 価値を無駄なく…

正規表現メモ

CODEPREP で正規表現を学びつつ、練習問題の3パターンをメモる。 codeprep.jp 電話番号にマッチさせる 電話番号は3ブロックの数字の並びで構成される 各ブロックの桁数は 3桁、3桁 or 4桁、4桁 各ブロックは - または ( or ) で区切られる 先頭のブロックの…

Cookpad Tech Kitchen #7 に行ってきた #cookpad_tech_kitchen

Cookpad Tech Kitchen #7 に行ってきました。簡単に所感をまとめます。 cookpad.connpass.com 今回のテーマは『理想の開発現場の「ふつう」のお話』です。資料はこちら。 開発者もテストエンジニアも品質を向上するという共通の目的を持つ テストの現場の理…

Haskell を使ってみる 7 (ガード)

前回の続き Haskell を使ってみる 6 (パターンマッチ) - kntmr-blog ガード ガードは引数の値が満たす性質で処理を分岐させるときに使う。パイプ文字 (|) と条件式と関数本体を組み合わせて記述する。(パターンは引数の構造で条件を分岐させるもの) -- 階乗…

Haskell を使ってみる 6 (パターンマッチ)

前回の続き Haskell を使ってみる 5 (型) - kntmr-blog パターンマッチ パターンマッチは、データ型が従うべきパターンを指定してそのパターンに従ってデータを分解するために使う。 -- パターンマッチと再帰で n の階乗を求める関数 factorial :: Int -> In…

Oracle Certified Java Programmer, Gold SE 8 認定資格

1Z0-809-JPN - Java SE 8 Programmer II を受験しました。 結果: 合格 / 正解率 72% (合格ライン: 65%) という訳で『Oracle Certified Java Programmer, Gold SE 8 認定資格』を取得しました。 「中上級者向け資格」とあるので、Java の開発案件を数年程度や…

JSUG勉強会 2017年その3 ~ ドメイン駆動設計 powered by Spring に行ってきた

JSUG勉強会 2017年その3 に行ってきました。簡単に所感をまとめます。 jsug.doorkeeper.jp 今回のテーマはドメイン駆動設計と Spring です。資料はこちら。 ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring from 亨 増田 www.slideshare.n…

java.util.function パッケージのインタフェースサマリー (用途別)

公式ドキュメントにインタフェースのサマリーが記載されているが、アルファベット順でイマイチ読み辛いので用途別に並べる。 java.util.function (Java Platform SE 8) Supplier インタフェース インタフェース 説明 抽象メソッド Supplier<T> 結果のサプライヤ</t>…

自分のブログを振り返る

ブログを始めて1年半近くが経とうとしています。ブログを始めた当初は、3日坊主レベルであまり続かないんではないかと思っていましたが、我ながらそこそこいいペースで更新できているんではないかと思います。内容はたいしたことないけども…。 というわけで…

HttpServletRequest#isRequestedSessionIdFromCookie は初回アクセスのときは false を返す

JSESSIONID とか Cookie とか URL リライティングに関連する備忘録。 ※Servlet API 3.x の話です。 レガシーな Web アプリのちょっとしたリプレース中なんですが、携帯サイトがなくなったり、サイト自体が SSL アクセスされるようになったりしたので、セッシ…

Bean Validation の initialize でアノテーションの属性値をインスタンス変数に保持する件

Bean Validation の isValid は、実装によってスレッドの安全性が保証されるべきって書いてあるけど、initialize でアノテーションのパラメータをインスタンス変数に保持するのはダメなの?という話。 https://t.co/M4uQGmFMuZ— kntmr (@knt_mr) 2017年2月21…

JMockit の部分モックを試す

JMockit の部分モックを試してみる。このあたりの API はバージョンによって変更や削除となることがあるため要注意。ちなみに今回試したバージョンは以下。 JMockit 1.30 JUnit 4.12 gist.github.com メソッドをモック化する場合は、Expectations の中でモッ…

Atom から Visual Studio Code に乗り換える

普段、Markdown エディタとして使っている Atom がどうにも重たい。起動が重たいのはしょうがないにしても普通に文字を入力したいときに固まったりするし。 そこで、Atom よりは軽量と噂の Visual Studio Code に乗り換えようかと。標準で Emmet が使えるし…

java.io.InputStream を複数のファイル読み込みで共有しない

java.util.zip.ZipOutputStream による ZIP アーカイブについて調べてたら、以下のようなコードを見かけました。(適当に抜粋してます) gist.github.com 単純に、ディレクトリ配下のファイルを commons-io で取得して、ZIP にアーカイブするコードです。これ…

Spring Boot + Spring Batch + Java 6 でバッチを実装した話

今回、Spring Boot + Spring Batch + Java 6 でバッチを実装する機会があったので、もろもろを備忘録としてまとめる。 開発環境 Spring Tool Suite v3.8.3 を使用。Spring Starter Project からプロジェクトを作成する。 Java Version 1.6 Spring Boot 1.4.3…