B-Teck!

お仕事からゲームまで幅広く

Kotlin

【Kotlin/PDFBox】Kotlinを使ってPDFBoxでPDFを編集する

前置き ライブラリ読み込み PDFを操作する 既存のPDFを読み込む 新しいPDFを生成する 保存する ページを複製する PDFを編集する 文字を書く フォントを指定する 文字列の高さ・幅を取得する 左寄せで文字を書く 折返しのある文字を書く 右寄せで文字を書く …

【Kotlin】画像をリサイズしたり切り抜いたりする

仕事で、URLから画像を取得していい感じにリサイズする要件があったため調べました。 備忘のためメモを書いておきます。 URLから画像の取得 画像の加工 BufferedImageへ変換 画像のリサイズ 画像の切り抜き 画像の保存 (おまけ)画像をいい感じにリサイズして…

【Kotlin】範囲同士の重なりの有無を判定する

2つの期間が重なり合うかどうかを判定する。 - こせきの技術日記 によると、 始点2 <= 終点1 && 始点1 <= 終点2 で網羅できるらしい。 雑にいくつかテスト書いてみたけどたしかに大丈夫だった。すごい。 以下余談。 雑に書いたコードをコミットして適当にブ…

【Kotlin/MySQL】MyBatisでレコードを取得するメモ

Kotlin + MyBatisを利用してMySQLに接続し、レコードの情報を取得するまでのメモです。 CRUD一通りとか動的クエリとかは別で書きます。 環境 ディレクトリ構成 ライブラリ読み込み MyBatisの設定ファイルを作成します SQLを定義する 実装 取得するエンティテ…

【Android/Kotlin】端末内に保存されたQRコードから情報を読み取る

下記の記事の続きです blog.beatdjam.com 端末内の画像一覧から任意の画像を取得するためのIntentを作成 取得したUrlからBitmap形式でファイルを取得 Bitmapファイルを入力としてQRコードの情報を読み取る 端末組み込みの画像一覧からQRコードの画像を取得し…

【Java/Kotlin】resourcesディレクトリにあるファイルを読む

ルートからの絶対パスで指定したリソースファイルを取得するスニペット。 IOExceptionはそのまま外に投げているので必要があればcatchしてリカバリーまで書くこと。 Java Kotlin Java import java.io.BufferedReader; import java.io.IOException; import ja…

【Android/Kotlin】ZXing Android Embeddedを用いて簡単にQRコードを扱う

Androidアプリの勉強のため、QRコードリーダーの開発を行っています。 とりあえずQRコードを読み取る・生成する部分については実装することができました。 せっかくなのでご紹介しようと思います。 記事内に登場するコードは、下記リポジトリにて記載されて…

【Kotlin】KotlinのReified type parametersについて

前置き 【Kotlin】Kotlin+JacksonでJSONをparseする - B-Teck! のparseJSONがなぜ型情報を使えるのか 会社でJavaを書いている人にこの話をしたところ驚かれたので。 Genericsとtype erasure JVMにおけるジェネリクスはJava1.4以前のバイナリとの仕様互換のた…

【Kotlin】data classにJavaから呼び出せるBuilderを用意する

はじめに Kotlinには名前付き引数を利用することができるので、 コンストラクタに渡す引数をわかりやすく記述することができます。 Person( name = "taro", age = 20 ) しかし、JavaとKotlinが混在している場合は、Javaからは名前付き引数の仕組みを利用でき…

【Kotlin】JerseyをKotlinで動かす その2 パラメータの取扱編

前回の記事 beatdjam.hatenablog.com 準備 HTTPリクエストのクエリ クエリをdata classに対応させる Pathに含まれる値 リクエストパスからパターンに対応した値を取り出す リクエストパスから正規表現に対応した値を取り出す Formから送信されたリクエストを…

【Kotlin】JerseyをKotlinで動かす その1 導入編

Jerseyの雛形を作る Kotlin化する pomの記述変更 ファイルのKotlin化 Main.java → Main.kt MyResource.java → MyResource.kt MyResourceTest.java → MyResourceTest.kt サーバーの起動 Grizzly上ではなく通常のJavaEEアプリケーションとして動かす場合 ここ…

【Kotlin】Kotlinで競プロする

Scannerとprintln()で入出力する readLine()とPrintWriterで入出力する その他Kotlinで書いて嬉しいところ 普段使ってる解答用テンプレ PaizaやってたときはPHP+JS、AtCoderでは主にJavaで解いてたんですが、 ここ半年の案件でずっとKotlinを書いていたらJav…

【Kotlin】社内LTでServer Side Kotlinの導入について話しました

speakerdeck.com 資料は主に以前書いたこの記事をベースに作成しました。 beatdjam.hatenablog.com

【Kotlin/Java】Jersey2でファイルアップロードを扱う

Jersey2でファイルアップロードを扱うときの方法を書いている記事があまり見つからなかったのでメモ。 StackOverfrowで見つけた。 java - Upload data method in REST web service - Stack Overflow アップロードされたファイルはbyte配列かInputStreamで扱…

【Kotlin】Kotlin+JacksonでJSONをparseする

準備 ビルドツールの設定に jackson-module-kotlin を追加する。 バージョンは任意で。 maven <dependencies> <dependency> <groupId>com.fasterxml.jackson.module</groupId> <artifactId>jackson-module-kotlin</artifactId> <version>2.9.7</version> </dependency> </dependencies> gradle compile group: 'com.fasterxml.jackson.module', name: 'j…

【Kotlin】Sequenceを使おう

Sequenceとは? Sequenceを使うと何が嬉しいか ループ回数が少なくなる Sequenceを使わない場合 Sequenceを使った場合 不要な計算をスキップできる Sequenceを使わない場合 Sequenceを使った場合 まとめ 参考 Sequenceとは? Kotlinにおけるコレクション遅延…

【Kotlin】Server Side Kotlin やってみた

tl;dr はじめに なぜKotlinを導入したのか? 実際にKotlinを導入してみた Server Side Kotlin導入のPros/Cons Pros Cons まとめ tl;dr Server Side Kotlinは特に特殊なことはないよ Kotlinの言語仕様は便利だよ Null安全の機構を導入することでアプリ側との…

【Kotlin】文字列の日時が指定の期間内に含まれているかを判定する

KotlinのDateにはRange演算子(Ranges - Kotlin Programming Language)が実装されているので、 簡単に大小や範囲を判定することができる。 下記は文字列の日時をSimpleDateFormatでDateに変換して、 0時から3時の間に含まれるかを判定しているサンプル。 impo…

【Java/Kotlin】URI Template(RFC6570)の仕様に則ってURL文字列に変数をセットする

"http://example.com/name/{name}/age/{age}"のような文字列に対して変数を割り当てたいとき、 javax.ws.rs.core.UriBuilderが利用できる。 URI文字列がqueryも含む場合は、 UriBuilder.fromUri() を利用すると良い。 Javaの場合 import javax.ws.rs.core.Ur…

【Java/Kotlin】BufferedReaderの今風な書き方を調べてみた

Javaで書かれたBufferedReaderの処理をKotlin化する中で、 イマドキのJavaでの扱い方と、Kotlinの場合どう書くかを調べてみました。 いにしえの書き方(Java) いまふうの書き方(Java) Kotlinで書くと…? サンプルはすべてsomeStream という入力を連結する場合…

【Kotlin】KotlinでJava EEのBean Validationを使うときの注意点

Kotlinの場合のBean Validationのアノテーションの書き方 Kotlinでdata classをbean paramとして利用してBean validationを行う際、 下記のように書くと正しくvalidationされない。 パラメータが欠けると500エラーで死ぬ (?=fuga や ?hoge= など) data class…

【Kotlin】Kotlinで複数の例外をキャッチする

Java7以降で対応されている複数例外のマルチキャッチ機能が、 Kotlinでは利用できなかったので調べた。 書き方 Java6以前の書き方 try { ... } catch(IOException e) { ... } catch(ClassNotFoundException e) { ... } Java7以降の書き方 try { ... } catch(…

【Kotlin】KotlinのNull安全

dogwood008.github.io KotlinのリファレンスのNull安全のページが英語しかなさそうだったので、ざっくり翻訳しつつ例を足したりした。 Null安全 Kotlinでは下記の要因以外でNPEを起こすことが無いよう作られている。 明示的な throw NullPointerException() …