nDiki : rsync

2007年1月8日 (月)

iCalendar 形式経由でスケジュールを社内 Blog に表示

仕事用に Skype 名を作成し、ついでに社内 BlogSkype ボタンを貼りつけてログイン状態を表示できるようにしてみた。

そういえば電話もそうなんだけれど、本社に連絡を取るとき「もしかして会議中?」などと勘繰ってかけるかどうか迷ってしまうことがある。 かけたい人の予定がわかればいいのになと。

ならば逆もしかりだろうということで、自分の仕事のスケジュールを晒してみようと思いついた。 グループウェアとかそういうのは大袈裟なので、まずは社内 Blogサイドバーに表示するようにしたい。

ということでこの3連休実装してみた。

構成

入力

完全なスケジュールはほぼ日手帳に手書きで管理しているので、ミーティング・外出など晒しカテゴリのイベントだけを、電子化する必要がある。 手で HTML 毎回ごりごり書き直すのも嫌なので、スケジュール管理ソフトを使いたい。 この部分は KDE の KOrganizer を使うことにした。

サーバへアップロード

で、KOrganizer のスケジュールを iCalendar 形式でエクスポート。 このファイルを社内 Blog を配信しているサーバに rsync で転送。

この処理はちょっと手間なので自動化したいところ。

社内 Blog 内表示用 JavaScript Include ファイル生成 CGI プログラム

この iCalendar 形式ファイルを読み込んで、今日以降の10件(程度)を HTML フラグメントに変換し JavaScript プログラム (document.write() 列) として出力する Perl CGI プログラムを作成。

iCalendar の形式の読み込みについては Data::ICal や iCal::Paraser などの Perl モジュールを利用できる。 今回はシンプルに使えそうな iCal::Parser をチョイス。 基本的には

 use iCal::Parser;
 my $parser = iCal::Parser->new;
 my $calendar = $parser->parse($ics_file_name);

で読み込んだデータがハッシュリファレンスとして $calendar に設定される。 イベントは $calendar->{2007}->{01}->{01}->{$uid} のように「年、月、日、イベントUID」のハッシュ階層として格納されているので、これを読み出せばよい。

社内 Blog サイドバーに表示

で、この CGI プログラムが生成する JavaScript プログラムをサイドバーJavaScript Include

まずは表示までできるようになった。

これで

をまとめて公開できる社内 Blogアップグレード

おいおいスケジュールの表示デザインとかは改良していきたい。 hCalendar 形式にして CSSデザインするのがいいのかな。

スポンサード リンク
[ 1月8日全て ]

2008年6月11日 (水)

今日のさえずり - スポーツの制裁金ってどこにいくのだ?

[ 6月11日全て ]

2009年2月13日 (金)

ファイルを変更すると自動的に rsync してくれる lsyncd

ファイルを変更すると「何もしなくても」自動的に同期してくれる Dropbox が非常に便利で昨年9月以来ずっと使っている。 「何もしなくても」同期してくれるというのが気にいったので、Linux 上でもいいソフトウェアがないか探してみた。 で見つけたのが lsyncd (というか1年以上前に1度チェックした形跡があるが記憶にない)。

inotify でファイルの変更を検出して自動的に rsync を実行してくれるというもの。 裏で rsync を呼び出すので同期先は rsync できる場所ならローカルでもリモートでも OK。

例えば lsyncd /tmp/a/ /tmp/b/ とすると、/tmp/a/ でファイルの作成・変更・削除を行うと /tmp/b/ にもすぐ反映される。 これはいい。 一般ユーザでも実行可能。

Dropbox から USB メモリに常に同期しておくのとかに使えそうだな。

なおデフォルトでは

 -lt%r --delete {--exclude-from [FILE]} [SOURCE] [DIRECTORY]

というオプションで rsync が呼び出される (%r は lsyncd 起動時には r、それ以外は d になる)。 ここで --delete が指定されているので注意。 lsyncd.conf.xml ファイルを作成して --conf オプションでそのファイルを指定すれば、rsync の引数を変更できる。 rsync の --delete オプションを外し、また -a オプション相当を指定するならば以下のような設定ファイルを作ればよい。

 <lsyncd version="1">
   <settings>
     <callopts>
       <option text="-%rlptgoD"/>
       <exclude-file/>
       <source/>
       <destination/>
     </callopts>
   </settings>
 </lsyncd>

ただしソース側で chmod をしてもイベントを拾わないので、すぐには rsync が実行されず権限が同期先に反映されないことを理解しておく必要がある。 lsyncd ではディレクトリ単位で rsync を実行するので、同じディレクトリでファイルの変更等がおきることで副次的にそのディレクトリの他のファイルの権限変更が同期されることになる (rsync で -p オプションを指定している場合)。

Debian GNU/Linux sid では Debian パッケージになっていないようで、今回はソースからインストールした。

 tar zxvf lsyncd-1.26.tar.gz
 cd lsyncd-1.26
 dh_make --createorig
 fakeroot dpkg-buildpackage
 sudo dpkg --install ../lsyncd_1.26-1_i386.deb
[ 2月13日全て ]

2010年8月23日 (月)

今日のさえずり: 髪についてはバッチリスルーされた

2010年08月23日

  • 10:29 TeraStation PROrsyncエラーを吐きまくり。後で原因特定せねば。
  • 12:05 おにぎり 361円。 (@ セブン-イレブン神田佐久間町店) http://4sq.com/cEfW1k
  • 14:59 出力の validator をプログラム自身に組み込むか。
  • 15:29 どうせなら TAP で出力しよう。
  • 16:08 TAP で出すとテストプログラム自身の TAP 出力とかぶるのでやっぱりヤメ。
  • 19:36 半分予想はしてたけど、髪についてはバッチリスルーされた。になんて報告しよう。
  • 19:37 「失恋したんですか?」とか言ってくれればいいのに。
  • 19:47 @asdku ありがとうございます。さっぱりです。
  • 19:52 そういえば昔から @akigonn のアイコンが「白い水着を着た女性が黒いシャツを脱ごうとして、あげた腕にまだそのシャツが絡まっていて、これから首が抜けるところ」に見えて仕方がない。
  • 19:58 満月? なの?
  • 20:00 8月25日が満月か。
  • 20:02 @shinobuk ですね。よーく見たらちょっと欠けてました。でも綺麗。
  • 20:48 @akigonn 耳が左手に見えてました。しばらく前にジーっと見てようやく正体がわかったので今は誤認しないですけれども(いや、今でもたまにそう見える)。
  • 21:10 それだけ長いと誤差の範囲内ですね。 RT @as_tone: 自分、10cmも切ったのに誰も気付いてくれません。かれこれ二週間も経つのに…
  • 23:12 枕にゴロンしたいが乾いていない髪が拒んでいる。
  • 23:53 @hellokirin 床屋ついでに2年以上ぶりのアイコン更新です。サッパリ。
[ 8月23日全て ]

2010年9月9日 (木)

今日のさえずり: パスワードを暗記しておくのに何バイト消費しているのだろう

2010年09月09日

[ 9月9日全て ]

2010年10月15日 (金)

今日のさえずり: 「We はーと blog」シールをさっそく貼っといた

2010年10月15日

naney:5085927367

[ 10月15日全て ]

2012年4月1日 (日)

今日のさえずり: 人を疑うのも嫌だし人に疑われるのも嫌なので、一切アクセスしないし投稿もしないことにしてる

2012年04月01日

  • 08:34 毎年この日は、人を疑うのも嫌だし人に疑われるのも嫌なので、一切 The Internet にアクセスしないし投稿もしないことにしてる。
  • 09:49 TweetDeck 修正完了か。復活しとる。
  • 11:04 RT @as_tone: 久しぶりに池袋に来たら、西武と東武が入れ替わって西が西武、東が東武になってた。すごく分かりやすくていい!
  • 11:39 うちもユニクロ企業コラボT作ってもらわないかなー。
  • 11:44 @nagowl お、昨日の深夜に復活してたんですか。昨日は HootSuite に浮気してました。見やすさ的には TweetDeck の方が好きなんで復活助かります。
  • 14:16 @nagowl Crowy 数カ月前にしばらく使ってたんですが、Facebook 認証だといろいろ権限求めてくるので使わなくなっちゃいました。日本的な機能とか入ってていいんですけどね。
  • 15:53 RT @lesamoureuses: そういえば今日辞める人たちのunkさんばりのガルーンの「初退職…ども…」を見忘れた。あとで何書いたのか見なくちゃ。
  • 16:08 いい陽気なので窓開けて換気した(自殺行為)。
  • 22:02 家に NAS 欲しい。Unison から rsync できるやつ。
  • 22:07 たまには iPad も使うか。
  • 22:41 「いっそ、もっと、輝こう」という封書がきたので何かと思ったら、ゴールドカードのお誘いだった。年会費10,500円なんて払えんよ。
  • 23:08 あ、緊急地震速報出てた地域あるんだ。
  • 23:10 Yahoo! JAPAN、地震情報がヘッダ部分に挿入されるんだ。いいね。
  • 23:19 REGZA の連ドラ予約でカーネーションの最終回録画失敗してて騒ぎになってる。
  • 23:27 NHKオンデマンドも壊れてるし。
  • 24:21 Emacs のカラースキームを Solarized (dark) にしてみた。目に優しくなるかな。 http://t.co/JGv5FGxC
  • 24:23 ミニ四駆? 何それチョロQ?
[ 4月1日全て ]

2012年9月21日 (金)

今日のさえずり: 生プルーン、ソルダムみたいな感じだった

naney:8009096930

2012年09月21日

[ 9月21日全て ]

2013年6月2日 (日)

今日のさえずり: どうみても健歩できた陽気でした。ありがとうございました。

2013年06月02日

  • 09:12 CS も数字いっぱいあるので常時表示したいな。 / “50インチディスプレイは7万円台 « なんか:かんがえて-5” http://bit.ly/13uIK6d
  • 09:53 どうみても健歩できた陽気でした。ありがとうございました。
  • 12:43 入場無料。 (at @Tck_keiba) http://4sq.com/147MFb7
  • 13:32 カレーライス食べてマッタリ。
  • 13:54 まだ馬のウも見かけていない。
  • 14:30 競馬のあとは、ホーマッ! (@ ホーマック 大井競馬場前店) http://4sq.com/19yclA7
  • 15:34 イートインコーナーが数少ない喫茶スポット。 (@ 文化堂 ウィラ大井店) http://4sq.com/1aQcw7V
  • 15:38 ホーマック、良さげなカラビナなかったし。
  • 15:43 foursquare、チェックインを Twitter にシェアした時、 Twitter アカウントが設定されている venue ならその名前じゃなくて Twitter アカウント名で書き込まれるのか。
  • 18:27 “Re: rsync で削除すると速い (?) 件 - いちいの日記http://bit.ly/11wRPbr
  • 18:38 ホーマックで買ってきたプリティーリズムの塗り絵がどうも1つ前のシリーズのディアマイフューチャーらしくて、1ページ目のキャラの名前がわからなくて、色がわからなくて、調べて、ようやく「上葉みあ」らしいということが判明。
  • 18:39 ソーシャルメディアでアカ割るより難儀した。
  • 23:08 結婚記念日のお祝いする。
  • 23:08 宇宙戦艦ヤマト2199もあわせて視聴。
  • 24:50 大井競馬、日曜日開催って意外にレアだったんだ。今度はちゃんとレース見られるように時間組もう。
[ 6月2日全て ]

2014年3月25日 (火)

EmacsOrg Capture でぼっちつぶやき

あとで整理してまとめたりできるように、ふと思ったことを非公開で1人 Twitter タイムライン的にログっておくのに PC 上でなかなかいいのないんだよねとずっと思っていたんだけれど Emacs の Org mode にある Org Capture 試してみたらいい感じだった。

普段 Org mode 使っていないので Org Capture で必要なところだけ設定してみた。

 (require 'org)

 (setq org-capture-templates
       '(
         ("t" "Timeline (local)"
          plain
          (file (concat "~/var/timeline/timeline-" (format-time-string "%Y-%m-%d") ".md"))
          "- [%(format-time-string \"%Y-%m-%d %H:%M:%S\")] %?\n")
         ("n" "Note (local)"
          plain
          (file (concat "~/var/note/" (format-time-string "%Y-%m-%d-%H%M%S") ".md"))
          "# %?\n[%(format-time-string \"%Y-%m-%d %H:%M:%S\")]\n")
         ("T" "Timeline"
          plain
          (file (concat "/naney@example.com:/home/naney/var/timeline/timeline-" (format-time-string "%Y-%m-%d") ".md"))
         "- [%(format-time-string \"%Y-%m-%d %H:%M:%S\")] %?\n")
        ("N" "Note"
         plain
         (file (concat "/naney@example.com:/home/naney/var/note/" (format-time-string "%Y-%m-%d-%H%M%S") ".md"))
         "# %?\n[%(format-time-string \"%Y-%m-%d %H:%M:%S\")]\n")))

 (global-set-key (kbd "\C-cc") 'org-capture)

'C-c c t' すると

 - [2014-03-25 23:24:25]

が書かれたバッファが開くので適当に何か書いて C-c C-c する。と、~/var/timeline-2014-03-25.md にその内容が追記される。

TRAMP でリモートホスト上のファイルを開く時のファイル名を指定してみたらうまくいったので、さくっとリモートファイルにも追記できてすごく嬉しい。ので 'C-c c T' で書き込めるように設定してみた。これで Dropboxrsync / Unison などで同期する必要がなくていろいろ良い。

あとは追記型ではなくて都度新しくノートファイルを起こすタイプの設定も追加しておいた('C-c c n' と 'C-c c N' で呼び出し)。howm で 'C-c , c' するのと同じ感覚で作れる。こちらもリモートホスト上にファイル名で悩む必要なくさくっとノートを書いておくことができて良い(そのかわり howm みたいに grep できないけれど)。

2014年3月27日追記

リモートホスト上のファイルへの保存の方を良く使うので、'C-c c' の後のキーは小文字の方をリモートに、大文字の方をローカルに変更。

[ 3月25日全て ]

About Me

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

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

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

月別インデックス
Process Time: 0.066786s / load averages: 0.46, 0.43, 0.36
nDiki by WATANABE Yoshimasa (Naney)
Powered by DiKicker