XcodeのAssistant Editorの右側でCounterpartsを選んでいて左側でユニットテストコードを開くと自動的に右側にテスト対象のクラスのファイルが開かれる。

XcodeのAssistant Editorの右側でCounterpartsを選んでいて左側でユニットテストコードを開くと自動的に右側にテスト対象のクラスのファイルが開かれる。
素晴らしい!
たった今気が付いて驚いている。

Mac homebrew で Wireshark をインストールするときに"Error: invalid option: --with-qt"と怒られる。

Mac に homebrew で WiresharkGUIアプリとしてインストールしたくてネットを検索していると

$> brew install wireshark --with-qt

このコマンドオプションでwiresharkをインストールするという情報があったので実行すると

Error: invalid option: --with-qt

と"--with-qt"オプションは不正と言われる。
"--with-qt5"などの情報もあるがこれらも同じ不正と言われる。
どうやら最新ではcaskでwiresharkをインストールするとこれらのオプションや手続きが不要なようです。
結論としては上記のコマンドは不要で以下のコマンドを実行すれば大丈夫です。

$> brew cask install wireshark

もしすでに色々とインストールしていて競合していると言われたらそれらをuninstallをしてから実行します。
取り急ぎ上記情報を共有するためですのでbrew caskなど不明であればGoogle検索さんなどに相談して見てください。

NASのファームバージョンアップしたらMac Timechineバックアップフォルダにアクセスできなくなった

おそらくSynology DiskStation DS218+のファームウェアバージョンアップした頃からMac Time Mchineのバックアップができない状態になっていた。

手動でTime Mchineのバックアップを実行するとアカウントログインダイアログがでてログインすると(OSStatusエラー-1073741275)となって接続できなくなっていた。
DiskStation Manager (DSM) で見てみるとどうやら暗号化していたTime Machine用のボリュームがマウントできていない様だった。
「コントロールパネル」「共有フォルダ」の「暗号化」メニューから「マウント」を選択してマウントすると接続できる様になった。

プレゼンテーションが苦手な人の貴重なコンテンツを紹介するYouTuberってどう

マツコの知らない世界のマツコみたいに良いコンテンツを持っている人けどプレゼンテーションが苦手な人のコンテンツを紹介するYouTuberがいても良いと思う。

プレゼンテーションが苦手な人の貴重なコンテンツを紹介するYouTuberってどう

マツコの知らない世界のマツコみたいに良いコンテンツを持っている人けどプレゼンテーションが苦手な人のコンテンツを紹介するYouTuberがいても良いと思う。

SSZipArchiveの不具合

古いiOSiOS 9以前)でSSZipArchiveを使ってzipファイルを解凍するプログラムでなぜか突然unzipエラーが発生する現象がありました。
何度か再現させて調べてみると以下のようなSSZipArchiveのログが出力されていることもありました。

[SSZipArchive] Set attributes failed for directory: [ファイルのパス].

[SSZipArchive] Error setting directory file modification date attribute: [ファイルのパス].

原因を調査したところzipファイルがパスワード付きかどうかを調べるメソッド

+ (BOOL)isFilePasswordProtectedAtPath:(NSString *)path 

でオープンされたzipファイルがcloseされていない不具合があってアプリプロセスでオープンできるファイル数の限度を超過してアプリプロセスでファイルがオープンできない状況になっていました。
さらにこの状態になってからunzipを実行するとunzipのエラーが返るのですが、unzip処理の途中で圧縮ファイルを書き出すところでオープンできるファイル数の限度を超過する状況になると正常に解凍できてないにも関わらずunzipがエラーを返さない不具合もありました。

SSZipArchiveのソースで問題の箇所を特定して修正案を作成したので、この機会に以前からいつかはと思っていたGitHubデビューすることにしました。

isFilePasswordProtectedAtPathメソッドのzipファイルがcloseされていない不具合
  • バグリポート

github.com

  • 修正案(プルリクエスト)

github.com

プロセスでオープンできるファイル数の限度を超過する状況で正常に解凍できてないにも関わらずunzipがエラーを返さない不具合
  • バグリポート

github.com

  • 修正案(プルリクエスト)

github.com

SSZipArchiveを使用していてアプリでのファイル操作関連で問題が発生する場合に参考になればと思います。

iCalendarをRubyのhashに読み込む

例えば作業記録とかGoogle Calendarに登録した内容からデータを抽出して作業実績報告などのレポートを作成するためにGoogle CalendarからエクスポートしたiCalendarをRubyのhashに読み込むスクリプトを書いた。

#!/usr/bin/ruby

require 'pp'

hash_stack = []
hash_key_stack = []
current_hash = {}
while line = gets
  colon_index = line.index(":")
  key = line.slice(0, colon_index)
  value = line.slice(colon_index + 1, line.length - colon_index - 3)
  if key == "BEGIN"
    hash_stack.push current_hash
    hash_key_stack.push value
    current_hash = {}
    next
  elsif key == "END"
    new_hash = current_hash
    new_hash_key = hash_key_stack.pop
    current_hash = hash_stack.pop
    current_value = current_hash[new_hash_key]
    if current_value.nil?
      current_hash[new_hash_key] = new_hash
    elsif current_value.instance_of?(Array) 
      current_value.push new_hash
    else
      current_hash[new_hash_key] = [current_value, new_hash]
    end
    next
  end
  current_hash[key] = value
end
pp current_hash

このスクリプトは標準入力から読み込むようになっている。

> ical_to.rb < google_calendar.ics

とりあえずここまでできたら後は適当な形式に変換したりレポートデータをCSVで出力したりできると思う。