しおメモ

雑多な技術系ブログです。

Nuxtでimgのsrc属性をJSから設定する場合の注意点

assetsの画像を読む際に、template内のimgタグに直接記述するのではなく、スクリプト側の変数を利用してsrcを設定する際、~などがうまく意図したパスに変換されないことがあります。 例 このようにした場合、上のimgタグは適切なパスを参照するのに対し、下…

ターミナルでXcodeのデバッグログを見れるようにした

前にファイル出力できるロガーをつくっていたので、ターミナルで見やすいようにちょこっと改良してみました。 Xcodeのウィンドウでは色がつけられなくなってしまったので、出てきたものにPerlで色を付けています(ゴリ押し)。

Swiftのassert系メソッドとfatalErrorの使い方

Swiftには、assertと似た役割を持つメソッドとして、preconditionやfatalErrorがあります。 これらのメソッドの使い方について考えてみます。

今さらUIPageViewController詳解

UIPageViewControllerが登場したのが古いこともあり、公式ドキュメントや、ネットに出ているの情報だと、いまいち各メソッドの挙動までは掴みづらかったので、改めてまとめてみました。

Arrayのextensionでサブクラスにダウンキャスト

タイトル通りで、UIViewControllerやUIViewのArrayから特定のサブクラスだけ抜き出す処理はよく書くので、 ただのaliasですが、少しでも楽しようとextensionにしてみる。 extension Array { func `as`<E>(_ type: E.Type) -> [E] { return self.compactMap({ $0</e>…

Spring Bootでのプロファイルを使った環境切り分け

Spring Bootでは、プロファイルという機能を用いて、設定値をyamlファイルやpropetiesファイルとして外部に切り分けることができます。 これを使って、実行環境ごとの定数値をまとめたり、DIされるクラスを変えたりすることができます。 基本 実行時に読み込…

TableViewのアニメーションでRxDataSourcesを使ってみた

RxDataSourcesはRxSwiftやRxCocoaの補助的なライブラリで、 UITableViewやUICollectionViewのDataSourceの追加、削除などの変更を検知して、RxSwiftに橋渡ししてくれます。 特に、混み行ったことをやろうとすると、これらの更新の判定ロジックは複雑になりが…

masterへのpushをローカルではじく

ルールとマナーを守って楽しくgit pushしよう!!

エンジニア1年目を振り返る

マイルストーン的な感じで、後で見返すように... 職務経歴書よりも、詳しい業務内容はぼかして、感じたことや業務外でおこなったことを追記してます。

Boostのsplit覚え書き

boost::algorithm::splitの使い方です。

Kotlinで簡単にサーバーサイドレンダリング

みなさんKotlin使ってますか? サーバーサイドでも便利なので、自分は最近よく使っています。 API側はよくみるので、今回はサーバーサイドレンダリングの方を書いてみます Kotlinのいいところ 準備 使うもの プロジェクト作成 雛形を見てみる indexページを…

Swiftで作成したiOS向けframeworkをローカライズする

普通のアプリの場合は、NSLocalizedStringにキーを渡すだけで大丈夫なのですが、frameworkを公開する場合、デフォルトだとアプリ側のBundleを参照してしまうので、そちらも正しく指定しなくてはいけません。 情報が少なかったので、その方法を記載しておきま…

Swift4で範囲の文字列表現をRangeに落とし込む

正確には、RangeExpressionのような、containsで要素を含むかどうかを判定できる適当なクラスに落とし込みます。 今回はRange(0.0...1.0みたいなやつ)だけではなく、RangeExpressionに適合するのすべてのクラスに対応したいと思います。 Swift4.2からRange系…

xargsの-Pオプションでコマンドを並列実行する

シェルだけで簡単にコマンドを並列実行するのに、xargsの-Pオプションがあります。 GNU Parallelも便利ですが、そちらはmacユーザーだと別途インストールが必要なので、こちらを紹介します。 使い方 活用例 例1. 一括画像リサイズ 例2. 連番ダミー画像生成 …

macのtz databaseが消えたら

一昨日あたり、帰ってきてPCを開いたらシェルの時刻がUTCになってたのですが、原因を調べたところ、Asiaのtz databaseが丸々消えていました(なぜ??) 現象 ls /var/db/timezone/zoneinfo/Asia 何もない(´・ω・`) /var/db/timezone/zoneinfoからファイルが消…

帰れないプロジェクトをgitから察知する

あけましておめでとうございます。新年からブラック()なネタです。 基本 git log --pretty='%ai %an' | sort -u -k1,1 | sort -k2 -r | head -20 日ごとに、最終コミットの日時を抽出して、ソートしてワースト20を出力します。 こんな感じ 2018-11-16 23:31:…

DispatchQueueによる非同期処理を見直す

他言語から入ると、一見取っつきづらいDispatchQueueですが、だいぶ浸透してきた気がします。 一方で、簡単に非同期処理ができるようになった結果、処理フローの制御がしづらくなったり、 知らないうちに、CPUやメモリリソースを異常に消費したりなど、副次…

SwiftのARCとクロージャのキャプチャ

Swiftのバージョンが上がる前に、クロージャーに対して各種方法で変数をキャプチャした際の挙動を整理します。 ちなみに、新卒アドベントカレンダーではないです。 ARCについての前提知識 強参照と弱参照の違い 強参照 弱参照 キャプチャの種類 組み込み型の…

Swift用デバッグロガー Linna

一ヶ月ほど前から、ちまちま開発を進めていた、 Swift用のデバッグロガー"Linna"の紹介です。 日本語ドキュメントはこちらです。 github.com 特徴 ロードマップ 特徴 JavaやJavascriptなど、他言語の代表的なロガーの機能を踏襲しつつ、 出来るだけシンプル…

はてなブログの游ゴシック, letter-spacing設定

デザインいじると上書きされてしまうから、いっそのことここに書いてしまおう。 /* 付け足す部分 */ body { font-family: "游ゴシック体", YuGothic, "游ゴシック", "Yu Gothic", "メイリオ", sans-serif; letter-spacing: 0.08em; } /* 記事の左側の日付の…

SwiftでRustのようなResult型を実装する

Swiftで従来のthrow~catchでは書きづらい場面も多々あるので、 RustのResult型を参考にした、エラーハンドルを取り入れてみました。 やること 実装 case メソッド その他 使い方 switchで使う Optionalで使う サンプル やること SwiftでRustのResult型のよう…

Obj-Cライブラリ由来のNSExceptionのSwiftでのハンドリング

ずばりこれ。 NSSetUncaughtExceptionHandler(_:) - Foundation | Apple Developer Documentation swiftのcatchで拾えないものもこちらでハンドルできる。 AppDelegate等に入れておく。 func application(_ application: UIApplication, didFinishLaunchingW…

iOS Simulatorにディスクイメージをマウント

hdiutilからマウントできました。Xcode 10です。 ディスクイメージ作成 iOSのシステムが数百MB使用するので、その分は最低限起動に必要です。 # APFS hdiutil create -size 1g -fs APFS /tmp/ios.dmg # HFS+ hdiutil create -size 1g -fs HFS+ /tmp/ios.dmg …

iOS(Swift)プロジェクトにSonarCloudを導入する

今回は、静的解析ツールのSonarQubeのクラウド版、 SonarCloudを導入します。 Travis, fastlane導入までは、前回の記事をご参照ください。 scior.hatenablog.com 環境 SonarQube Continuous Inspection アカウント登録 SonarCloudの設定 sonar-project.prope…

Express向けのSwaggerミドルウェア

Express向けのSwaggerパッケージを色々探しましたが、 依存パッケージが少なく、npm auditで引っかからなかった、 こちらを紹介します。 Swagger UI Express 使い方 その他 swagger-node generator-express-no-stress Swagger UI Express www.npmjs.com gith…

memo: CentOS7系のfirewalld

firewalld バージョン 共通操作 現在の設定の確認 設定再読み込み 各種設定 サービス追加 ポート追加 永続設定 Zone デフォルトゾーンの変更 設定値変更 firewalld CentOS6系までのiptablesの代わりに、7系からではfirewalldを用います。 中身はiptablesのま…

Springのcontrollerにおけるvalidation

Spring Frameworkにおけるvalidation Hibernate Validator 主なアノテーション Formに対するvalidation Formクラス Controllerクラス Form以外に対するvalidation 書いてないこと Spring Frameworkにおけるvalidation http://terasolunaorg.github.io/guidel…

Lombokはいいぞ

Lombokとは 共通テク よく使う @Getter, @Setter @ToString @EqualsAndHashCode @Data @xxxArgsConstructor @NonNull 知らなくても困らないやつ @Builder @SneakyThrows @Slf4j まとめ Lombokとは いい感じにAnnotaitionで、Javaのよく出てくる処理を書いて…

SwiftLint, fastlane, Travis CI導入まで (Xcode 9.4)

iOS開発(Swift)でCIまでを動かす際の手順です。 今回は、Xcode 9.4, Swift 4(3でも可)です。 サンプルリポジトリ: github.com 導入するツール Swiftlint Fastlane Travis CI 今後やること 導入するツール SwiftLint(0.26.0) コーディングスタイルの静的解析…

Perl6で開基から開集合系を生成する

10年ぶりくらいにPerl触ってます。RubyやPythonより好きです。 コード ((1).Set, (2, 3).Set, (2).Set).combinations.map({.reduce(&infix:<∪>)}).Set.say; > set(set() set(1 2 3) set(1 2) set(1) set(2 3) set(2)) 解説 ((1).Set, (2, 3).Set, (2).Set) …