2024/11/13
laprasdrum.icon 書けるときに書く
/icons/hr.icon
BitriseのchecksumをmacOSで実現するには
checksum: This function computes the SHA-256 checksum of the contents of one or more files. This is useful for creating unique cache keys based on files that describe content to cache.
macOSには sha256sum はないが shasum ならある。
なので shasum -a 256 path/to/file を実行することで期待値を得られる。
Xcode 16.1 & SourceTreeでSPMが取得できない
最終的に、このスレッドを見つけました。その中で、SourceTree (私が選んだビジュアル Git クライアント) がグローバル~/.gitconfigファイルに新しい構成を追加したようだと人々が気づいています。
code:.gitconfig
bareRepository = explicit
ファイルからこれを削除またはコメントアウトし、Xcode を再起動すると、スレッド内の何人かの人の問題が解決したようです。私も試してみましたが、確かに私の場合もうまくいきました。
ただし、この構成が何を行うのかはわかりませんので、この構成を無効にすることで生じる可能性のある望ましくない副作用があればお知らせください。
AnchoredRelativeFormatStyle
新しい Foundation FormatStyle APIでは、日付に対して優れた Fluent API を使用することでこれを実現できます。
.formatted(.relative(presentation: .named))
Instruments講習
MainActorを付けただけではmain threadで実行されない
並行処理を初めて使う場合、メソッドに @MainActor を付けると、必ずメイン スレッドで実行されると思うかもしれません。残念ながら、同期メソッドではこれが保証されません。カンファレンス訪問中に私に連絡をくれたCyril Cermak氏のように、いくつかのチームが苦い経験を経てそれを知りました。
次のメソッドはメイン スレッドで実行されることが保証されません。
code:Sample.swift
@MainActor func updateViews() {
/// This is not guaranteed to be running on the main thread
/// even though you've marked it with @MainActor
}
同期メソッドは、アクターのアノテーションに関係なく、呼び出し元と同じスレッドで実行されます。メイン スレッドで実行されていることを保証するには、async でマークする必要があります。
code:Sample.swift
@MainActor func updateViews() async {
/// This is guaranteed to be running on the main thread
/// as it's async and marked with @MainActor
}
メイン スレッドで実行されているソースから常に同期メソッドを呼び出す場合、直接問題が発生することはないかもしれません。ただし、期待が一致せず、予期しない UI 関連のクラッシュが発生する可能性があるため、この微妙な違いを認識しておくことが重要です。
Screenshot/recordでキャプチャを防ぎたいとき(SwiftUI)
Swift formatとSwiftLintの違い
Swift runtime