iOSアプリを作るときにReleaseビルドのときはデバッグログを出力しない

iOSアプリを開発するときには、デバッグ中にログを出力して、アプリの動作を確認したい場合があります。
しかし、アプリをリリースするときには、デバッグログを残しておくと、ユーザーに見られてしまいます。

そこで、以下の方法で、デバッグビルドのときはログを出力し、リリースビルドのときはログを出力しないようにしました。

Objective-Cのとき

アプリ名-Prefix.pchに以下の行を追加する。

#ifndef DEBUG
#   define NSLog(...)
#endif

デバッグモードではNSLogが有効になり、実際のログメッセージがコンソールに出力されます。
リリースモードではDEBUGが定義されていないため、NSLogマクロの定義が無効化され、何も出力されなくなります。

Swiftのとき

#if !DEBUG
func print(
    _ items: Any...,
    separator: String = " ",
    terminator: String = "\n"
) {
}

func debugPrint(
    _ items: Any...,
    separator: String = " ",
    terminator: String = "\n"
) {
}
#endif

リリースモードではprint関数やdebugPrint関数の中身が空になり、何も出力されなくなります。

Laravel8でLaravel Breezeを使用するには

Laravel9からMixの代わりにViteを使用するようになりました。

ドキュメントに書かれている以下のコマンドを実行すると、Viteを使用するバージョンのLaravel Breezeがインストールされます。

composer require laravel/breeze --dev

Laravel8でLaravel Breezeを使用するには、バージョン1.9.4のLaravel Breezeを使用します。

以下のコマンドで、バージョンを指定してLaravel Breezeをインストールします。

composer require laravel/breeze:1.9.4

これで、Laravel8でLaravel Breezeが使用できます。

Linux Mint 21にsnapでdockerをインストールする

snapをインストールする

$ sudo rm /etc/apt/preferences.d/nosnap.pref
$ sudo apt update
$ sudo apt install snapd

dockerをインストールする

$ snap install docker

一般ユーザーでdockerを実行する

Dockerを一般ユーザーで実行すると次のようなエラーになる。

$ docker ps
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json": dial unix /var/run/docker.sock: connect: permission denied

一般ユーザーをdockerグループに所属させる。

$ sudo addgroup --system docker
$ sudo adduser $USER docker
$ newgrp docker
$ sudo snap disable docker
$ sudo snap enable docker

一般ユーザーで実行できる。

$ docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

macOSのMySQL Workbenchがクラッシュする

MySQL Workbenchを8.0.32に更新してから、クラッシュするようになった。
調べてみると、私だけではないようだ。(参考

すぐに新しい修正バージョンが公開されると思っていたが、なかなか公開されないので、MySQL Product Archivesからバージョン 8.0.31をダウンロードしてインストールした。

バージョン 8.0.31は問題なく動作している。