nDiki : 2013年09月16日

2013年9月16日 (月)

Linux から Day One エントリを新規作成・Emacs で編集する

iPod touch を買ったので Day One使い始めているAndroid 版が出ることを期待してるんだけれど、それまで iPod touch (と iPad 2) からだけだと使わなくなりそうな予感。Mac 使ってないしね。

Dropbox 同期なのでもしかしたら Linux からちょっとは編集できるんじゃないかなと思ったら、データ形式がシンプルで簡単にできるということがわかった。

仕様を確認

Day One のサイトにデータ形式などが説明されているのが非常に好感が持てる。 あー、なんとなく人気な理由がわかった気がする。

Dropbox で同期していると

 Day One/Journal.dayone/entries/<UUID>.doentry

という構成で1エントリ毎に1ファイルが作られる。XML プロパティリスト (plist) 形式で、普通に XML ファイルとして編集できる。Linux 側で編集すると、わりとすぐに iPod touchDay One で表示しているエントリにも定期的に反映される。いい感じ。

ということで既存のものなら普通に Emacs で編集しちゃえばOK。

新規作成

UUID を生成してファイルを作る必要があるので簡易的に以下のようなスクリプトを作った。

実行すると note と書かれたエントリファイルを作成した後 emacsclient -n でそのファイルをオープンする。Creator のところはいじっても良さそうだけれど、良くないかもしれないのでとりえあえず iPod touch で生成したのと同じままで。

 #!/usr/bin/perl

 use strict;
 use warnings;
 use File::Spec;

 my $DIR = '/path/to/Dropbox/Apps/Day One/Journal.dayone/entries';

 my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst)
   = gmtime(time);

 my $date = sprintf(
   "%04d-%02d-%02dT%02d:%02d:%02dZ",
   $year + 1900,
   $mon + 1, $mday, $hour, $min, $sec
 );

 my $file_name;
 my $uuid;
 while (1) {
   $uuid = `uuidgen`;
   chomp $uuid;
   $uuid =~ s/-//g;
   $uuid = uc($uuid);
   $file_name = File::Spec->catfile($DIR, "$uuid.doentry");
   last unless -e $file_name;
 }

 my $plist =<<__ENDSTR__;
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 <plist version="1.0">
 <dict>
          <key>Creation Date</key>
          <date>$date</date>
          <key>Creator</key>
          <dict>
                 <key>Device Agent</key>
                 <string>iPod touch/iPod5,1</string>
                 <key>Generation Date</key>
                 <date>$date</date>
                 <key>Host Name</key>
                 <string>オレのiPod touch</string>
                 <key>OS Agent</key>
                 <string>iOS/6.1.3</string>
                 <key>Software Agent</key>
                 <string>Day One (iOS)/1.11.3</string>
         </dict>
         <key>Entry Text</key>
         <string>note</string>
         <key>Starred</key>
         <false/>
         <key>Time Zone</key>
         <string>Asia/Tokyo</string>
         <key>UUID</key>
         <string>$uuid</string>
 </dict>
 </plist>
 __ENDSTR__

 open my $file, '>', $file_name or die $!;
 print $file $plist;
 close $file;
 exec "emacsclient -n '$file_name'";

探す

Linux 用で UI をもつ clone 見つからなかったので、とりあえず howm検索パスに前述のディレクトリを追加して、howm から検索できるようにした。これでワードがわかれば最低限さっとエントリファイルを Emacs で開ける。

スポンサード リンク

今日のさえずり: Dropbox のルートフォルダに作られた「アプリ」という日本語フォルダ名が許せない

2013年09月16日

  • 11:46 台風で家にいるのでこれからチョコバナナ作り大会開催。
  • 11:52 いまさらながら今年の如蘭会会報を読んで、東京都立日比谷高等学校の校舎棟大規模改修が今年の4月から始まっていることを知った。今はグランドに建てた仮設校舎使ってるんだ。
  • 12:47 エアコンがポコポコいっているので、消音バルブ掃除してみた。特に目詰まりはしてなかった。
  • 12:57 iPod touchインストールした。今日トーク選びしようと思ったので丁度良い! / “iOSYAPC::Asia Tokyo 2013 スケジュールビューアがリリースされました! | YAPC::Asia Tokyo...” http://bit.ly/1egNm8k
  • 13:40 おやっ、富士山が見える。
  • 14:12 “グーグル社員直伝AdSense違反の直し方 | しゅうまいの256倍ブログ neophilia++” http://bit.ly/1eDQkFe
  • 17:40 月曜日なので「すすめ!キッチン戦隊クックルン」観るよ。7月15日以来2度目。
  • 17:41 Dropbox のルートフォルダに作られた「アプリ」という日本語フォルダ名が許せないので Web 版上で名前を Apps (English 版での App folder のルートフォルダ名)に変更した。
  • 17:53 富士山のシルエット凛々しい。
  • 20:30 Day One のエントリファイルの雛型を Dropbox 同期ディレクトリの生成して emacsclient -n するスクリプト書いた。またそのディレクトリを howm検索パスに追加して検索はそちらで。
  • 22:26 手紙力が無くてに助けてもらっている。
[ 9月16日全て ]

About Me

Naney Naney (なにい)です。株式会社ミクシィで SNS 事業の部長をしています。

nDiki1999年1月に始めたコンピュータ日誌を前身とする NaneyWeb 日記(兼パーソナルナレッジベース)です。ちょっとしたノートは nNote にあります。

※内容は個人的見解であり所属組織とは関係ありません。

月別インデックス
Process Time: 0.056986s / load averages: 0.41, 0.66, 0.67
nDiki by WATANABE Yoshimasa (Naney)
Powered by DiKicker