Micronaut + Doma2 連携(超簡易版)

やっぱり RDBMS と連携したかったのでやってみました。 参考にしたのは Access a database with MyBatis Micronaut + Kotlin + DomaでTransactionを楽に扱う*1 です。 build.gradle LocalTransactionManager 関連 DomaConfigFactory DomaConfig Dao @DaoConf…

Micronaut 2.0.0 に version up する

前回 までの奴は micronaut 1.3.6 でした。 先日 2.0.0 がリリースされたので、それに追従してみましょう。 Session Authentication https://micronaut-projects.github.io/micronaut-security/latest/guide/#session 依存 jar が変わります。 annotationPro…

Micronaut ことはじめ - テストを書いて歩こう (5)

前回 までで一般的な Web アプリケーションを作るのに必要な Controller 部分のサンプルが溜まってきたと思います。あとは UseCase とか Repository が残っていますが、こいつらは Micronaut 依存が少ないので興味がある方は引き続きやっていただければと思…

Micronaut ことはじめ - 共通処理を組み込もう (4)

前回 はエラーハンドリングを組み込んでみました。今回は CSRF 対策を共通処理っぽく入れてみたいと思います。 コードはこちら CSRF View をレンダリングする時にデータを埋め込む ViewModelProcessor POST の時に csrf チェック OncePerRequestHttpServerFi…

Micronaut ことはじめ - Error Handling で異常ケースも良い感じに (3)

前回は認証機能を組み込んでみました。今回はエラーハンドリングを組み込んでみましょう。 コードはこちら 認証でエラー発生時 Global Error Handling サーバサイドの validation Form Controller Local Error Handling Thymeleaf のタグ まとめ 認証でエラ…

Micronaut ことはじめ - Session Authentication を添えて(2)

前回 は Thymeleaf を使ってログイン画面をレスポンスしました。次は認証機能を組み込んでみましょう。 コードはこちら Session Authentication build.gradle application.yml ログイン画面 認証処理 AuthenticationProviderUserPassword SystemConfiguratio…

Micronaut ことはじめ - Thymeleaf と仲良し(1)

事の発端は www.amazon.co.jp でした。 SpringBoot で作ったアプリを Heroku で公開しようとした時にメモリを食いすぎて起動できなかったので、「Java でそういうの無理かな」と思ってた時に出会ったのがきっかけです。 実際のメモリ消費量がどのくらいなの…

Doma2 で JSON 型を使う

魔がさして、RDBMS の JSON 型を導入しようとしてみました*1。 前提条件 Doma 2 2.34.1-SNAPSHOT jackson 2.11.0 検証した RDBMS H2 PostgreSQL データ構造 create table customers ( customer_id varchar(255) not null constraint customers_pkey primary …

Mock を極力使わないようにしていた私が Mockito を使わないとムズムズするカラダになった理由

はじめに 以前、私の著書では 時間が限られた中、本番に使用しない Mock オブジェクトを作成するよりも、依存する実クラスを使用してテストケースを増やした方が時間もかからず、効率的にテストが行えると思いませんか? とか書いていたのですが、最近はそう…

【読了】ドメイン駆動設計 モデリング/実装ガイド

https://booth.pm/ja/items/1835632 「エリック・エヴァンスのドメイン駆動設計」や「実践ドメイン駆動設計」でわかった気になったけど実際にどうすれば良いかいまいちイメージがつかなかった人に是非読んでもらいたいです。 QA 形式で実際に実践する時に躓…

JaSST'19 Niigata に参加してきた

JaSST'19 Niigata が長岡で開催されたので参加してきました。 お堅い空気のイベント久しぶりでした。 S1) 基調講演 レビューのキキメ ~あなたのレビューは何のため? レビューは静的なテストの1つであるという所はなるほどなぁと思いました。最近レビュー…

Doma 2 入門

前回 の SpringBoot2.1 + Kotlin のリポジトリを Doma 2 対応しました。 いちいち Insert を書かなくて済んだり、場合によっては SQL をかけたり(SQL ファイルで定義したり、アノテーションで SQL 定義したり)、項目を絞った Update が SQL 文書かずにできる…

JAWS-UG 新潟県 (新潟/長岡/上越 合同) + NDS第60回 に参加してきた #jawsug #jawsug_niigataken #nds60

参加 してきました。 なんと、今回は1日使ったイベントでした。 午前: ハンズオン github.com AWS Systems Manager 触れたので良かったです。 EC2 に入りたい時に踏み台サーバが不要になるので良い感じ。 午後: メインセッション 「EAT SLEEP DEPLOY REPEAT …

Kotlin 入門

色気づいてサーバサイド Kotlin に興味を持ち始めたので勉強してみました。 今回のコード 構成 SpringBoot: 2.1.4.RELEASE Kotlin: 1.3.30 あと使用してるのはこの辺見てください 内容 JSON 返す API サーバとして作ってます。 Repositry とりあえず SQL 実…

【読了】失敗から学ぶRDBの正しい歩き方

失敗から学ぶRDBの正しい歩き方 (Software Design plus)作者: 曽根壮大出版社/メーカー: 技術評論社発売日: 2019/03/06メディア: 単行本(ソフトカバー)この商品を含むブログを見る アプリ開発の経験年数=RDBに触ってきた年数でもあるので、知識の棚卸しに…

Selenide をローカルの file から open してみる

Selenide 良いですね。 さて、わかる人にだけ伝われば良いやシリーズです。 Selenide 使って最初にアクセスするページが http が https とは限りません。HTML のドキュメントそのもの(文字列)ということだってあるわけです。Selenide のサンプル見ると、 ope…

噂の肉巻きバウムクーヘンに挑戦してみた

BBQのインパクトを強めるべく、たけだバーベキューさんが紹介していた「肉巻きバウムクーヘン」に挑戦してみました。 用意するもの バウムクーヘン 原信で購入。 薄切りバラ肉 カトウ食材で購入。解凍しておきます。 アルミプレート ダイソーで購入 手順 1. …

長岡IT開発者勉強会(NDS)の第55回勉強会に参加してきた #nds55

NDS の 第55回勉強会 に参加してきました。 地元の開発者さんに会う機会が久しぶりだったのでテンションが無駄に上がってた気がします。 申し込み時は発表するネタが思いつかなかったけど、それから何か話したい熱が盛り上がり、何の気なしにそんな事をTwitt…

JAWS-UG 上越妙高支部 第3回勉強会(サーバーレス勉強会)に参加してきた

JAWS-UG 上越妙高支部 第3回勉強会(サーバーレス勉強会) いつもは長岡市近辺の勉強会に顔を出しているのですが、唐突に行ってみたい衝動にかられ、上越まで車を走らせました。 天気も荒れてなくて良かった...。 あ、この子スキーの装備だけじゃなくてかん…

Amazon EchoからSlackに通知を出してみた(Cognito + API Gateway版)

前回、前々回 とAlexaからSlackに通知できる仕組みを試してみましたが、Alexaから呼ばれるLambdaに接続先やメッセージを環境変数で設定する必要があり、ユーザ毎にできるようにしたくなってきました*1 今の仕組みでも、Alexaユーザーとシステムユーザーを関…

Amazon EchoからSlackに通知を出してみた(Web API版)

前回はAlexa、会社に連絡をしてと話しかけることでSlackに通知するアプリを作成しました。 ですが、このアプリ経由だと「誰からのメッセージなのか」がわからないので、環境変数で名前を設定する必要がある為、ユーザ毎にLambdaファンクションを登録する必要…

Amazon EchoからSlackに通知を出してみた(Incoming Webhooks版)

年末に待望のAmazon Echoが届きました。招待リクエストを送ってから1ヶ月以上待たされ、情熱も失いかけましたが、なんとか気力を振り絞ってアプリ開発をしてみました。 今回の目的 Alexa、会社に連絡をして と話しかけることで、SlackのIncoming Webhooksを…

読了 IntelliJ IDEA ハンズオン

IntelliJ IDEAハンズオン――基本操作からプロジェクト管理までマスター作者: 山本裕介,今井勝信出版社/メーカー: 技術評論社発売日: 2017/11/08メディア: 大型本この商品を含むブログを見る読みました。いやー、私のようにScalaやりたくてIntelliJ初めたけど…

手ぶらキャンプ! in うまみち森林公園 に行ってきた

最近、休みの日には仕事とは直接関係ないことをしてリフレッシュしたい衝動にかられ、キャンプとかアウトドアな体験をしてみたい、と思っていた所、Facebookにこんなのが流れてきました。 『キャンプ』・・・やってみたいけど、なかなかきっかけがないな〜 …

長岡IT開発者勉強会(NDS)の第51回勉強会に参加してきた #nds51

nagaoka.techtalk.jp 参加して、お題には沿っていなかったと思いますが、ちょっと背伸びしてフロントエンド的な話をさせていただきました。 他のjsフレームワークを知らないので、それらに比べてVue.jsのここがイイ!というのを伝えられなかったのが心残りで…

長岡IT開発者勉強会(NDS)の第50回勉強会に参加してきた #nds50

12/10に長岡市で、長岡IT開発者勉強会(NDS)が開催されました。 NDSとは、 新潟県長岡市のIT系開発者が、自主的に勉強会を開催するために2008年11月に結成されたグループです。 長岡市での勉強会の開催や、議論をを主な活動とします。 情報処理技術に関するも…

iPhone7Plusの落下防止の為にネックストラップを購入しました

ずっとiPhone5sを使っていたのですが、満を持してiPhone7に機種変しました。 カメラ性能が良いとの触れ込みで、特に写真を撮ったりインスタをするわけでもないのに勢いでPlusにしてしまいました。 わくわくして開封の儀を済ませたのですが、 ...大きいですね…

Niigata.NET 2015-10 に参加してきた #ngtnet

新潟でも.NETコミュニティ!ということで、参加してきました。 (@AILightタクシーがこれのセッションやるのと等価交換だとはその時は思いもしませんでした...)ngtnet.doorkeeper.jp 新潟の開発やってらっしゃる方の知り合いが少ないので、新潟での.NETのニー…

【読了】はじめよう!要件定義 -ビギナーからベテランまで

はじめよう! 要件定義 ~ビギナーからベテランまで作者: 羽生章洋出版社/メーカー: 技術評論社発売日: 2015/02/28メディア: 単行本(ソフトカバー)この商品を含むブログ (2件) を見る一気に読みきりました。 要件定義って突き詰めればここに書いてあることで…

Tomcat + DynamoDBでSesison管理を任せてみる

JavaでTomcatなWebアプリケーションを作っている時に、Sessionの情報をどう管理しようか、というのが問題になります。 認証済み状態であることをSession上に設定しておき、認証されていないリクエストが来た時にログイン画面に遷移させる、というアプリケー…