- 投稿日:2020-07-15T20:50:47+09:00
【Swift】Stringを空文字でsplitしたい!
こういうやつ
JavaScriptやRubyなら簡単。
"Hello, World".split('') // -> ["H", "e", "l", "l", "o", "," ...]String#split(separator: Character)じゃダメなの?
"Hello, World".split(separator: "") // Error: Cannot convert value of type 'String' to expected argument type 'String.Element' (aka 'Character')そもそも実行できない。
String#components(separatedBy separator: T)
"Hello, World".components(separatedBy: "") // -> ["Hello, World"]お、惜しい!(惜しくない)
正解 → Array(_ s: Sequence)
Array("Hello, World") // -> ["H", "e", "l", "l", "o", "," ...]というわけで、Arrayのイニシャライザが使えるようです。
いざ調べても、たどり着くのに苦労したので記事にしてみました。参考
Convert Swift string to array
https://stackoverflow.com/questions/25921204/convert-swift-string-to-array
- 投稿日:2020-07-15T20:50:47+09:00
【Swift】JavaScriptやRubyみたいにStringを空文字でsplitしたい!
こういうやつ
JavaScriptやRubyなら簡単。
"Hello, World".split('') // -> ["H", "e", "l", "l", "o", "," ...]String#split(separator: Character)じゃダメなの?
"Hello, World".split(separator: "") // Error: Cannot convert value of type 'String' to expected argument type 'String.Element' (aka 'Character')そもそも実行できない。
String#components(separatedBy separator: T)
"Hello, World".components(separatedBy: "") // -> ["Hello, World"]お、惜しい!(惜しくない)
正解 → Array(_ s: Sequence)
Array("Hello, World") // -> ["H", "e", "l", "l", "o", "," ...]というわけで、Arrayのイニシャライザが使えるようです。
いざ調べても、たどり着くのに苦労したので記事にしてみました。参考
Convert Swift string to array
https://stackoverflow.com/questions/25921204/convert-swift-string-to-array
- 投稿日:2020-07-15T17:05:22+09:00
Flutter+firebaseでアプリが起動しないときの対処法
問題
起動すると下記のような例外でアプリが起動しない
flutter run -d XXXXXXXXXXXXX Launching lib/main.dart on iPhone 11 in debug mode... Running pod install... 14.3s Running Xcode build... └─Compiling, linking and signing... 19.6s Xcode build done. 205.3s Configuring the default Firebase app... *** First throw call stack: ( 0 CoreFoundation 0x00007fff23e3cf0e __exceptionPreprocess + 350 1 libobjc.A.dylib 0x00007fff50ba89b2 objc_exception_throw + 48 2 CoreFoundation 0x00007fff23e3cd4c +[NSException raise:format:] + 188 3 Runner 0x000000010ac7e602 +[FIRApp configure] + 130 4 Runner 0x000000010b1d9c89 -[FLTCloudFirestorePlugin init] + 217 5 Runner 0x000000010b1d9a96 +[FLTCloudFirestorePlugin registerWithRegistrar:] + 262 6 Runner 0x000000010ac7984c +[GeneratedPluginRegistrant registerWithRegistry:] + 204 7 Runner <…> This is taking longer than expected...対策
FirebaseのコンソールでAppを予め作っておき、
GoogleService-Info.plist
をプロジェクトに追加しておくその他
チュートリアルにはアプリ作ってから起動している風なこと書いてあるけど全然そんな事ありません
(あたりまえなのかもしれない)
https://codelabs.developers.google.com/codelabs/flutter-firebase/index.html
pubspec.yaml
にfirebase系のdependencyを追加した瞬間からアプリが動かなくなるので、追加するときには作っておきましょう!(という学び)
- 投稿日:2020-07-15T09:57:55+09:00
画像の人の関心を得やすい部分(Saliency)のサムネイル化について
そこまで詳しくないのですが、今回はDeepLearningのモデルでSaliencyを測ることで、画像内の人の関心を集めている部分(人の視線が集まるような部分)をトリミングできることを紹介します。
ここでは、すみませんが、こいうことができるよという話が主に中心で、iOSのトリミングのケースでしか紹介しませんが、iOSに限らず他のプラットフォームでも同様なことが可能だと思います。今までは画像のサムネイル化する際に画像の中心をサムネイル化することが多かったと思いますが、
下記全体の画像内から人が関心を集めるポイントをDeepLearningのモデルでSaliencyで抽出することで
参考:https://medium.com/better-programming/cropping-areas-of-interest-using-vision-in-ios-e83b5e53440b
画像内で人の関心を集めるであろうポイントを抽出できます。(上記の場合は、何もないところで左端にあるリモコンを抽出できています)
上記の場合はiOS13のVision Frameworkで標準で実装されている機能を使用していますが、どこかで学習されているモデルを手に入れればサーバーにアップロードされた画像のサムネイルを作成する際に、画像内で人の関心を集めるであろうポイントを中心にサムネイル化することもできると思います。そうすることで、より人が関心を集める箇所をサムネイル化していくことができ、ユーザー体験が向上すると思います。
iOSのVison Frameworkの公式ドキュメントや公式のサンプルは下記に記載されています。
https://developer.apple.com/documentation/vision/cropping_images_using_saliency