Iganinのブログ

日頃の開発で学んだ知見を中心に記事を書いています。

【SwiftUI】BackButtonの文字を消す

語り尽くされている感があるが、今一度調べたので備忘録的にメモ。 tl;dr; UINavigationBarのAppearnceをいじることで達成可能 navigationBarBackButtonHiddenにして、navigationItemをnavigationBarLeadingに追加でも対応できるが以下の機能が消える SwipeG…

2024年の目標

はじめに 新年明けましておめでとうございます。 今年もよろしくお願いいたします。 しばらくブログの更新ができていませんでしたが、年も明け心機一転頑張っていこうと思います。 2023年の振り返り 2023年の定めた目標と最終進捗は以下です。 想定していた…

【SwiftUI】要素数の少ない場合の表示も考慮したチャットライクな画面の実装

環境 以下の環境で実施しています。 Xcode 14.0 iOS 16.0.2 要件定義 いわゆるチャットのUIにおいては、最新の要素が画面下部に追加されていき、画面の初期表示時は画面最下部を基準に表示されているという要件が主流かと思います。 また、その一方で要素数…

【iOS】ARKitのFace Trackingの結果をobjファイルとして出力する

TL;DR; ARSessionでARFaceTrackingConfigurationを走らせる ARFaceGeometryをMDLAssetに変換する MDLAssetのexport(to:)メソッドを使う objファイルについて いわゆるobj形式のファイル。下記の記事が参考になった。 ブログ記事からの引用ではあるが、objフ…

【Kotlin】BCryptを使用してPasswordのハッシュ化を行う

TL;DR; パスワードは一般的な暗号化だけでなくSaltも加えた上でHash化するのが望ましい BCryptを使用すると暗号化データの中にSaltの情報が含まれるためSalt Columnが不要 jBCrypt/BCrypt.java at master · jeremyh/jBCrypt · GitHub がJavaではおそらく安牌…

【Kotlin】ExposedでDateTimeを扱う

TL;DR; org.jetbrains.exposed:exposed-java-timeを使う timezone付きでの保存には対応してないため注意 localDate, localDateTimeへの変換の際にsystemDefault TimeZoneが使用されるため注意 環境 Exposed 0.23.1 内容 ExposedはKtorとともに主に使用される…

【Flutter】RiverpodのProviderの変化を検知する

TL;DR; ProviderObserverを使用し,ProviderScopeのobservers引数に設定する 環境 [✓] Flutter (Channel stable, 2.2.3, on macOS 11.3.1 20E241 darwin-x64, locale ja-JP) [✓] Xcode - develop for iOS and macOS [✓] Chrome - develop for the web [✓] And…

【Flutter】FlutterのDartコードの難読化について

TL;DR; Dartコードの難読化には buildOptionとして --obfuscate --split-debug-info をつける 難読化について 難読化はクラス名やメソッド名を変更し、バイナリサイズを落とすことを主な目的としているらしい。 例えば、 SpecialCatクラスをaに置き換えると…

【Flutter】ScrollViewとExpandedを併用してSignIn / SignUp画面 などのレイアウトを作成する方法

TL;DR; LayoutBuiderとIntrinsicHeightを併用する 環境 [✓] Flutter (Channel stable, 2.2.3, on macOS 11.3.1 20E241 darwin-x64, locale ja-JP) [✓] Xcode - develop for iOS and macOS [✓] Chrome - develop for the web [✓] Android Studio (version 202…

【Flutter】GraphQLClientでキャッシュの永続化を行う(DIにRiverpodを使用)

TL;DR; HiveStoreを使う HiveStoreの初期化は非同期処理のためgraphqlのproviderがFutureとなってしまいめんどくさい 上記解消のために main.dart で 初期化を終わらせ ProviderScopeでoverrideする 環境 [✓] Flutter (Channel stable, 2.2.3, on macOS 11.3…