Tuesday, 12 March 2019

macOS Calendar の recovery

Visual Studio の方はだいたい片付きました。久しぶりにWiondowsなプログラミングのくそさを堪能しました。Assembler level DLL、結構、面白い。

今は、Agda の開発versionのinstall中。 既に18日には飲み会が入ったらしいです。 20日がIngress NL1331 杉戸町 (東武動物公園) かな。

それとは関係なく、macOSのカレンダーが同期しなくなっていて。自分のカレンダーが見れるのは自分ではなく妻だけ。なにそれ。

面倒くさくなって、全部、削除して subscribe しなおしたら治ったみたい。なんですが、

  ローカルなカレンダーを消してしまって復旧できない...

昔は、backup あったけど、今だと、File -> Export -> Calendar Archive か。やってればね。

なので、Time Machince から復元と思ったんですが、それもやり方がわからんぞ。まさかと思うがTime Machineの中からCalendar起動するとかかじゃないよな。

そうかも知れないけど、Perl でやるよね。

  cd /Volumes/Backup2018/Backups.backupdb/insigna.cr.ie.u-ryukyu.ac.jp\ \(3\)/2019-02-15-000001
  cd Server\ HD/Users/kono/Library/Calendars

と言う感じで、昔の ~/Library/Calendars の下に。そこで、

  grep name `find . -name Info.plist`

とすると、name というカレンダーのフォルダが見つかります。そこのEventsの下に ics がたくさん。これを全部 import しても良いが、

以下のPerl script で結合して一つのファイルにします。これを、どっか web において、subscribe すればOk。いや、もちろん、直接、Calendarに放り込んでも良いです。

  #!/usr/bin/perl

  print << "EOFEOF";
  BEGIN:VCALENDAR
  VERSION:2.0
  PRODID:-//Apple Inc.//Mac OS X 10.9.5//EN
  CALSCALE:GREGORIAN
  EOFEOF

  my $in = 0;
  while(<>) {
    if (/BEGIN:VEVENT/) {
      $in = 1;
    }
    print if ($in);
    if (/END:VEVENT/) {
      $in = 0;
    }
  }

  print << "EOFEOF";
  END:VCALENDAR
  EOFEOF

No comments: