開発
技術系の記事はDevelopersIOで執筆することにした。一方、すぐに修正されそうなトピックやワークアラウンド的な内容は記事の寿命が短くなる可能性があるため、引き続き「酢ろぐ!」で書くことにしている。 毎月の終わりに、DevelopersIOで執筆した記事へのリ…
技術系の記事はDevelopersIOで執筆することにした。一方、すぐに修正されそうなトピックやワークアラウンド的な内容は記事の寿命が短くなる可能性があるため、引き続き「酢ろぐ!」で書くことにしている。 毎月の終わりに、DevelopersIOで執筆した記事へのリ…
技術系の記事はDevelopersIOで執筆することにした。一方、すぐに修正されそうなトピックやワークアラウンド的な内容は記事の寿命が短くなる可能性があるため、引き続き「酢ろぐ!」で書くことにしている。 毎月の終わりに、DevelopersIOで執筆した記事へのリ…
技術系の記事はDevelopersIOで執筆することにした。一方、すぐに修正されそうなトピックやワークアラウンド的な内容は記事の寿命が短くなる可能性があるため、引き続き「酢ろぐ!」で書くことにしている。 毎月の終わりに、DevelopersIOで執筆した記事へのリ…
技術系の記事はDevelopersIOで執筆することにした。一方、すぐに修正されそうなトピックやワークアラウンド的な内容は記事の寿命が短くなる可能性があるため、引き続き「酢ろぐ!」で書くことにしている。 毎月の終わりに、DevelopersIOで執筆した記事へのリ…
技術系の記事はDevelopersIOで執筆することにした。一方、すぐに修正されそうなトピックやワークアラウンド的な内容は記事の寿命が短くなる可能性があるため、引き続き「酢ろぐ!」で書くことにしている。 毎月の終わりに、DevelopersIOで執筆した記事へのリ…
技術系の記事はDevelopersIOで執筆することにした。一方、すぐに修正されそうなトピックやワークアラウンド的な内容は記事の寿命が短くなる可能性があるため、引き続き「酢ろぐ!」で書くことにしている。 毎月の終わりに、DevelopersIOで執筆した記事へのリ…
技術系の記事はDevelopersIOで執筆することにした。一方、すぐに修正されそうなトピックやワークアラウンド的な内容は記事の寿命が短くなる可能性があるため、引き続き「酢ろぐ!」で書くことにしている。 毎月の終わりに、DevelopersIOで執筆した記事へのリ…
技術系の記事はDevelopersIOで執筆することにした。一方、すぐに修正されそうなトピックやワークアラウンド的な内容は記事の寿命が短くなる可能性があるため、引き続き「酢ろぐ!」で書くことにしている。 毎月の終わりには、DevelopersIOで執筆した記事への…
技術系の記事はDevelopersIOで執筆することにした。一方、すぐに修正されそうなトピックやワークアラウンド的な内容は記事の寿命が短くなる可能性があるため、引き続き「酢ろぐ!」で書くことにしている。 毎月の終わりには、DevelopersIOで執筆した記事への…
技術系の記事はDevelopersIOで執筆することにした。一方、すぐに修正されそうなトピックやワークアラウンド的な内容は記事の寿命が短くなる可能性があるため、引き続き「酢ろぐ!」で書くことにしている。 毎月の終わりには、DevelopersIOで執筆した記事への…
技術系の記事はDevelopersIOで執筆することにした。一方、すぐに修正されそうなトピックやワークアラウンド的な内容は記事の寿命が短くなる可能性があるため、引き続き「酢ろぐ!」で書くことにしている。 毎月の終わりには、DevelopersIOで執筆した記事への…
技術系の記事はDevelopersIOで執筆することにした。一方、すぐに修正されそうなトピックやワークアラウンド的な内容は記事の寿命が短くなる可能性があるため、引き続き「酢ろぐ!」で書くことにしている。 毎月の終わりには、DevelopersIOで執筆した記事への…
技術系の記事はDevelopersIOで執筆することにした。理由は、技術記事の信頼性や検索性を高めるためである。一方、すぐに修正されそうなトピックやワークアラウンド的な内容は、記事の寿命が短くなる可能性があるため、引き続き「酢ろぐ!」で書くことにして…
技術系の記事はDevelopersIOで執筆することにした。一方、すぐに修正されそうなトピックやワークアラウンド的な内容は記事の寿命が短くなる可能性があるため、引き続き「酢ろぐ!」で書くことにしている。 毎月の終わりには、DevelopersIOで執筆した記事への…
技術系の記事はDevelopersIOで執筆することにした。一方、すぐに修正されそうなトピックやワークアラウンド的な内容は記事の寿命が短くなる可能性があるため、引き続き「酢ろぐ!」で書くことにしている。 毎月の終わりには、DevelopersIOで執筆した記事への…
技術系の記事はDevelopersIOで執筆することにした。一方、すぐに修正されそうなトピックやワークアラウンド的な内容は記事の寿命が短くなる可能性があるため、引き続き「酢ろぐ!」で書くことにした。 毎月の終わりには、DevelopersIOで執筆した記事へのリン…
技術系の記事はDevelopersIOで執筆することにした。一方、すぐに修正されそうなトピックやワークアラウンド的な内容は記事の寿命が短くなる可能性があるため、引き続き「酢ろぐ!」で書くことにした。 毎月の終わりには、DevelopersIOで執筆した記事へのリン…
多言語対応アプリの開発は非常に大変だ。特に、アプリ内で使用される各種テキストを管理する「文字列リソース」の取り扱いについては、更新や検証に多大な労力を要する。この課題を解決するために、csv2strings というスクリプトを公開した。 csv2strings は…
アプリ開発界隈で、課金管理をスムーズに行うために多くの開発者が利用する「RevenueCat」だが、導入する際に「The receipt is not valid.(レシートが無効です)」というエラーが発生する。 これは大抵の場合、「アプリ固有の共有シークレット」が間違って…
2023年10月7日の activesupport のアップデートによって CocoaPods が使えなくなった。すぐに修正されると思うが、直近で困ってる方のために備忘録を残す。 bundler: failed to load command: pod エラーが発生する bundle update のあと、 bundle exec pod …
MacBook Air (11-inch, Mid 2011)でリカバリができなくなってしまった。 内部ストレージとインターネットの両方で再インストールが失敗。MacBook Pro (2021)を使用してMac OS X El CapitanのUSBインストーラーを作成することにした。 本当はMBAの初期OSであ…
さくさんは Assets.xcassets や Colors.xcassets にアクセスするために R.swift を愛用している。Xcode 15.0 アップデート後、R.swift の ColorResource や ImageResource の extension でエラーが発生するようになった。 R.swift の ColorResource や Image…
Xcode 15.0へのアップデート後、CocoaPods経由でインストールしたFirebase Apple SDKでコンパイルエラーが発生する。 解決方法 CocoaPods 1.13.0 のリリースされると、この問題は解消される見込みである。ただし v1.13.0がリリースされるまでの間は、ワーク…
大量にある SVGファイルを PNGファイルへ変換したい。 大量にある SVGファイルの例(例:国旗アイコン) 本記事では、rsvg-convert コマンドを使って、指定したディレクトリ内のSVGファイルをPNGファイルに変換する方法を以下に説明する。 rsvg-convert のイ…
家庭内サーバーマシンをリプレイスした。いままで使っていた Mac mini (Late 2014) が不要になったため、Mist を使って USBインストーラーを作成して初期化した。 あらすじ 今年の3月に「ThinkCentre M715q Tiny」を譲ってもらった*1。しかし、デスクトップ…
長いあいだ、Swift でのデータ操作が煩雑な Cloud Firestore を使う気になれなかったのだが、いつのまにか Swift Concurrency に対応していた。async / await が使えると話が変わってくる。格段に使いやすくなっていたので、お試しで簡単なアプリを作ってみ…
たとえば画像識別アプリを開発中には、テスト画像を Bundle からロードして、画像を識別してその結果を評価するユニットテストを作成する。または、HTMLをスクレイピングするアプリを開発中には、ダミーのHTMLを Bundle からロードして、スクレイピング処理…
自宅サーバーでは毎日メールを送信するバッチを処理している。これまではmacOS上のJenkinsで動かしていたため、Swiftで実装したプログラムを使用していたが、JenkinsをWindowsマシンへ移行することに伴い、Pythonへ移植することにした。 本記事では、Python…
本文はあとで書く。 developer.apple.com dismissSearch() を実行すれば、検索モードがオフになり、検索バーに入力していたテキストもキーボードも消える。 Sets isSearching to false. Clears any text from the search field. Removes focus from the sear…