アプリ開発備忘録

PlayStationMobile、Android、UWPの開発備忘録

Java

【Graph API】リクエストBodyが空の時にHTTP Error 411. The request must be chunked or have a content length.

kotlin/JVMでコードを書いている時の事。MicrosoftのGraph APIを使用していました。bodyは無いコードです。Content-Lengthは制限されていて、手動では設定できません。 val result = HttpClient.newHttpClient() .send( HttpRequest.newBuilder(URI(url)) .h…

Gradle Application Pluginで作成したアプリで特定モジュールのディレクトリの子ファイルを動的に取得する

以下のような構造のフォルダ構成から、graphql以下のファイルを全て取得します。これはMain-Classがあるモジュールから参照されているモジュールとします。jarファイルには既に含まれているとします。 graphql/filename1.graphqls graphql/filename2.graphql…

Jakarta Mailでメールを確認する【Kotlin】

Jakarta Mail(旧 Java Mail)でメールを取得します。 build.gradle implementation("jakarta.mail:jakarta.mail-api:2.1.2") implementation("org.eclipse.angus:jakarta.mail:2.0.2") imports import java.net.URLEncoder import jakarta.mail.Authenticator…

java.time.InstantをSwift Codableでパースできるようにする

xxxxxx.yyyyyy , "xxxxxx.yyyyyy", xxxxxx どの形式でも受け取れるようにします。 Double等でパースすると精度が足りないのでDecimalを使用します。 import Foundation @main public struct hello_swift { public static func main() { let decoder = JSONDe…

GraalVM + Kotlinでネイティブコンソールアプリを作る

GraalVM + Kotlinでネイティブコンソールアプリを作る bashでshell scriptを書くのが大変。使い慣れた言語のKotlinを使ってスクリプトを実行したい。しかし、Java環境が入れられない制約がある場所で実行したいという状況になりました。 最初に思い浮かんだ…

protobuf-grpcのJVMコード生成がいつまでもNullアノテーションに対応しないので無理矢理対応させる

protobuf, gRPCを使っているサーバーと通信するために公式が用意しているコード生成を使用しています。 https://github.com/protocolbuffers/protobuf/tree/master/java https://github.com/grpc/grpc-java https://github.com/grpc/grpc-kotlin (バックエン…

【kts編】KotlinをGradleでビルド

groovy編 https://matsudamper.hatenablog.com/entry/2019/09/17/064542 コード tasks.withType(Jar::class) { manifest { attributes["Main-Class"] = "package.to.MainKt" } from( configurations.runtimeClasspath.map { it.toList().map { if(it.isDirec…

lightweightとheavweightとは【Java AWT】

SwingやAWTを使用する時にWindowsのAPIを叩きたい時にネイティブウィンドウハンドル(HWND)を取得したい場合があります。 heavweightはネイティブスクリーンリソースに紐付けられている為、HWNDが取得できますが、lightweightはネイティブに紐付けられていな…

Java Agentで実行時にクラスを差し替える

Java Agentとは java コマンドを実行するとhelpが出力されるわけですが、そこにJava Agentについて書いてあります。 -javaagent:<jarpath>[=<options>] Javaプログラミング言語エージェントをロードする。java.lang.instrumentを参照 Instrumentとは 既存のアプリケーションを</options></jarpath>…

gradle dependencies treeの読み方

facebook SDKを含むAndroidアプリの依存を解決してみました。 省略 (*) 既に別の場所で出力されているので子の依存を省略 推移的依存解決 -> 別のライブラリ等の定義で新しい物が使用されていたのでそちらを使用する 出力された依存グラフ +--- com.facebook…

Javaで外部ライブラリなしでMockをする

Java/Kotlinにて、テストとかで使うのではなく、ちょっとした確認でMockを使用したかっただけでした。それくらいでMockライブラリを入れるのが面倒だったので、ライブラリ無しでMockできないかを検討してみました。 1. Mockライブラリを調べる Mockライブラ…

【MySQL】tinyint(1)はBool値だが、0,1以外も入れられてしまう

tinyint(1) tinyint(1) は明確に公式でBOOLと書いてあります。 BOOL, BOOLEAN | TINYINT | See TINYINT, above as these are aliases for TINYINT(1), currently. https://dev.mysql.com/doc/connectors/en/connector-j-reference-type-conversions.html 数…

IntelliJ内でJDKのインストールを完結する

プラグイン 「JB SDK Bintray Downloader」プラグインを使います。 使い方 Shift二回連打かCtrl + Shift + Aで「Get JB SDK」と検索して実行します。 バージョンを選択してダウンロード、インストールを実行します。 設定 Project Structureにて設定を行いま…