しおメモ

雑多な技術系ブログです。ニッチな内容が多いです。

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

Swiftのバージョンが上がる前に、クロージャーに対して各種方法で変数をキャプチャした際の挙動を整理します。
ちなみに、新卒アドベントカレンダーではないです。

  • ARCについての前提知識
  • 強参照と弱参照の違い
    • 強参照
    • 弱参照
  • キャプチャの種類
  • 組み込み型の場合
    • 何もつけない場合
    • 値キャプチャの場合
  • クラスインスタンスの場合
    • 弱参照(weak)の場合
    • 弱参照(unowned)の場合
    • weak vs unowned
  • まとめ
続きを読む

Swift用デバッグロガー Linna

一ヶ月ほど前から、ちまちま開発を進めていた、 Swift用のデバッグロガー"Linna"の紹介です。
日本語ドキュメントはこちらです。

github.com

特徴

JavaJavascriptなど、他言語の代表的なロガーの機能を踏襲しつつ、
出来るだけシンプルな使い方ができることを一つのコンセプトとして作りました。

  • 標準的なロギング機能を備えています。
2018/12/01 03:25:03 [INFO] [xxx.swift::someFunc():5] Hello!
  • シンプルに導入できます。

今のところ、Carthageのみに対応しています。

import Linna

func someFunc() {
    Linna.out("Hello!")
}
  • 出力パターンを柔軟に変更することができます。
Linna.setFormatPattern(with: "%d %obj <%level> (%file:%func:%line)")
Linna.out("Hello!")
2018/12/01 03:25:03 Hello! <INFO> (xxx.swift:someFunc():5)
  • ファイル出力に対応しています。

ロードマップ

ログローテションの機能追加や、ロガーの非シングルトン化などのリファクタリングを計画しています。

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

デザインいじると上書きされてしまうから、いっそのことここに書いてしまおう。

/* 付け足す部分 */
body { font-family: "游ゴシック体", YuGothic, "游ゴシック", "Yu Gothic", "メイリオ", sans-serif; letter-spacing: 0.08em; }
/* 記事の左側の日付の部分 */
div.entry-date { letter-spacing: 0.03em; }
/* ソースコードはspacingを0にする */
pre.code { letter-spacing: 0; }