バックアップとかフォルダの同期

今日は職場で、計算ガリガリさせてるLinuxマシンのHDDが突然死んで大騒ぎな一日だった。subversionにインポートしとけって口酸っぱく言ってたのに、やってなかったみたい。

あーそういえば、家のバックアップってなにも考えてないやってことで、WindowsからLinuxにバックアップする方法を調べてみた。

ちょっと調べたらこんな感じ

http://del.icio.us/kzfm/Backup

  • cygwin経由でrsync or mirror
  • xcopy使ったのを書く
  • Unison

まぁ、rsyncはわかりやすいが、問題はどこからrsyncを動かすかだ。cygwinはちょっとでかすぎないか?あと、mt-daapdのことを考えるとsambaで同期させたかったり。

あんまそそるのないナァとなかばあきらめかけてたら、

SyncToy というものがあるらしい

SyncToyはsambaのフォルダとも同期させられ、定期実行のジョブも組めるらしいので、バックアップのほかに、sambaを使った音楽、画像データの同期と共有も期待できるかな。今ちょうどデジカメ画像の管理を見直していてpicasa2で統一しようかなと考えているところ。

Inline::Java

Inline::Javaおもろい。毎度コンパイルするので気持ち遅いが、Javaのコード扱えるのは便利。

正直Java使う必要あんの?と問われると

ケモインフォでは必要、それはCDKがあるからダ

化合物の二次元座標の発生なんかはPerlMolはまだまだだし、ChemRubyもサポートしとらん。というわけで、smi2molをやるにはCDKがいいし、構造の画像変換も楽。

という経緯もあってpythonのjava実装であるjythonなどに心惹かれた事もあったが、SWIG,XSとなにやら、グルーなノリで、Inline::Javaの方向で試してみることにしたヨ。モジュール化しとけば、Javaを気にせず使いまわせるし。クイックハックにちょうどいい。

さらに、Inline::Rubyも試してみたいし、、、、、

でも、結局Inlineなんだよなぁ

JavaでもRubyでもある程度のコード書けないとあかんのよね。

そういうわけで、ChemRubyの作者の方に教えてもらったプログラミングRubyなども読み読みせなあかん。今のとこ3章で止まってるナァ。

ProductName プログラミングRuby―達人プログラマーガイド
デビット トーマス
ピアソンエデュケーション / ?円 ( 2001-09 )


でも、Ruby学ぶと絶対Railsにはしりたくなっちゃう。

悩みは尽きない。

かんじん堂

京都駅の地下街ポルタに存在する、ちょっと観光客仕様のラーメン屋。

(同じ系列の)昔、長泉にあった手力本願と比べると、、、

アルバイトの女の子で一杯だ。あと修学旅行生で込んでた。

という状況なので、メニューもそれむけの海鮮丼みたいなのが多いんだけど、麺は柚子練りこみ系でうまい。

蕎麦でいう、柚子切りだ。

ナイスなうまさと喉越し。

PlaggerでChangeLogを扱う(2)

以前書いたのは改行がスキップされたりして困るので、書き直した。

Parse::RecDescent::FAQ - Parse::RecDescent 公式FAQ

デフォルトでは、P::RDはトークンの前にある全ての空白(改行も含む)を スキップする。

ということなので、$Parse::RecDescent::skipにタブを含めないようにして対処。あと、せっかくGmailに送るのでText::MarkdownでHTML化するようにした。でも本当はFilterでやるべきことなのかな?

なんでMarkdown使うのかというと、僕はblosxomをMarkdown使って書いてるので、メモも勢いMarkdownぽくなっちゃってるの。だから、いっそそういう記法で縛っておけば後々楽かなと。

さて、動作確認はせっかくなのでYAPCでのPlaggerとXSのメモをgmailに送ってみたヨ。

今回、設定ファイルは前回のに加えて、Filter::BreakEntriesToFeedsでエントリ毎にメールするようにしてあるので注意だ。

2006-03-30  kzfm  

* YAPC: XS
        はじめてのXS
        ====
        XSUBs
        数値計算はCのほうがいいから**ちょっと覚える**か

MakeMaker,Module::Build  
        サンプルがあっぷされるので動かしてみる  
        inline Cというのもあるらしい

2006-03-29  kzfm  

* YAPC: Plagger
        global:
        widget::delicious
        ボタンをつける

Planet Clone  
        EgoSearch  
        Publish::Feed

ロードマップ

- 0.6 Custom feeds revamp
        - 0.7 エンクロージャー
        - 0.8 重複チェックのためのサーバーとDB
        - 0.9 incoming Server
        - 1.0 web interface w/Ajax

実際にGmailで見るとこうなる。

cl2pl

あとは、PlaggerでCOOKPADのピックアップレシピをGmailへなどを参考に、Rule::Deduped で重複エントリーを削除すればよいかな。あーあと、タグで処理わけしなきゃならん。

それにしても、 PlaggerでCOOKPADは良かった(料理も食べるのも好きなので)

いつもは、自分のためにyaml書いてるけど、U隊長のgmailアドレスにも送るようにしといた。

嫁も読めだからyomeggerだ(wifehack)!

あーただ、言ってみたかっただけ。

ふつうのHaskellプログラミング

rubyもpythonも中途半端ななのに、とうとう耐え切れずに手を出しちゃいました。

Haskell

ProductName ふつうのHaskellプログラミング ふつうのプログラマのための関数型言語入門
青木 峰郎
ソフトバンククリエイティブ / ?円 ( 2006-06-01 )


雲平

九条大宮をずんずんと下りていくとある。

カレーうどん

まぁまぁ。昔の記憶との対比になっちゃうのであれだけど、味味香のほうが好みかな。

味味香って昔は、三条木屋町ちょっとさがったとこのトンコツ臭いラーメン屋の近くのスンゲー小さいとこだったよな。

移転してサイトも出来てますな。

http://www.mimikou.jp/

味蔵

堀川四条をちとあがったところにある、味蔵へ。カレーラーメンがうまいという事前情報を得ていたが敢えて味蔵ラーメンを注文。

味蔵 味蔵ラーメン

海苔、鰹節とそのしたにおぼろ昆布が。トンコツこってりスープなのに意外にあう。

ただちょっと塩味が濃い。

まったり食ったら、長い時間かけてホテルまで歩いて帰った。京都の道は歩道が整備されてるし、碁盤の目のようになっていてわかりやすいうえに、どの筋入っても発見があるし。夜風に吹かれてテケテケ歩くのは楽しい。

初めてのXS

SWIGついでにXSも。YAPCでDaisuke MakiさんのGetting Your Feet Wet With XSを聴いてから、一度やりたいと思ってたんだけど、最後のほうわかんなかったんだよね、SVとかからあやしくなってベンチマークでまたついていけるようになったという(実は)。

というわけで、相変わらず、実用Perlプログラミング初版を片手に。20章はperlの内部構造で、60ページぐらい割いてます。XSの説明とか書いてあるけど、まだちゃんと読んでないけど、HVとかAVとかSVとか詳しく書いてある(第二版にはないヨ)。

ProductName 実用Perlプログラミング
スリラム スリニバサン
オライリー・ジャパン / ?円 ( 1998-11 )


というわけで、mandel.cとmandel.hはSWIGで使ったソースを。

$ h2xs -x -n FractalXS mandel.h
Defaulting to backwards compatibility with perl 5.8.3
If you intend this module to be compatible with earlier perl versions, please
specify a minimum perl version with the -b option.

C::Scan required if you use -x option.
To install C::Scan, execute
   perl -MCPAN -e "install C::Scan"

C::Scanをインストールして再度。

作成されたMakefile.PLを少し修正、LIBSに-lgdを付加するのと、OBJECTにmandel.oとFractal.oを。

あとはmake,make test,make installで。

plaggerでChangeLogを扱う

clmemoみたいなchangelog形式のファイルをplaggerでフィルタリングしながらしかるべきとこ(はてブ,gmail,デリシャスとか)に送れたら便利じゃんと思ったので、シコシコと書いてみた。最初ココいじればいいかなと思ったんだけど、配列だとちょっと使いにくいのとヘッダーもう少し分けたかったので自分で書いた(そのせいでちょっとおかしいとこがある)

Plagger::Plugin::CustomFeed::ChangeLog

clmemo.txtはこんな感じ

2006-05-26  kzfm  <kerolinq@gmail.com>
        * test: テスト汁
        断酒でコーディング、呑むとやる気なくなるからな

2006-05-23  kzfm  <kerolinq@gmail.com>
        * 雑感: 今日は朝からお疲れ気味。
        最近雑用おおすぎ
        ちょっと会議もふえすぎ

* 雑感: WindowsXPだと環境変数の扱いがイマイチわからなくて苦労した
        なかなかつらい
global:
  timezone: Asia/Tokyo

plugins:
  - module: CustomFeed::ChangeLog
    config:
      changelog_file: /home/kzfm/clmemo.txt

- module: Publish::Gmail
    config:
      mailto:   xxxxxx@gmail.com
      mailfrom: xxxxxx@gmail.com
      mailroute:
        via: smtp
        host: localhost:25

gmailに送ったらこんな感じ。

changelog2plagger

あー、毎度のことながらwarningでてます。

$ ./plagger -c changelog.yml 
Plagger [info] plugin Plagger::Plugin::CustomFeed::ChangeLog loaded.
Plagger [info] plugin Plagger::Plugin::Publish::Gmail loaded.
Plagger [info] plugin Plagger::Plugin::Aggregator::Simple loaded.
Plagger::Plugin::CustomFeed::ChangeLog [info] Load /home/kzfm/clmemo.txt

Warning (line 22): Found an action ({$item[1]}) after an unconditional
                       
Plagger::Plugin::Publish::Gmail [info] Sending ChangeLog to xxxxxx@gmail.com

まだParse::RecDescentのitembodyのところが駄目駄目なのと、データの構造汚いのが気に入らない。日付とアイテム毎に入れ子のループを回さないといけないのだが、そういう場合ってどういうデータの構造にするのがよいのだろう?ハッシュと配列が入り混じっててヘナチョコになってしまったヨ。

初めてのSWIG

openbabelのperlラッパーに触発されたので、実用Perlプログラミングの初版を片手に。SWIGを使って、マンデルブロ集合を描いてみた。

mandelbrot

思ってたよりも、楽だ。まず、本の18章の mandel.cとmandel.hを用意する。本だとgifに出力してあったが、FC1のgd-2.0.15.1ではできなかったのでpngで出力するようになってる。

続いて、SWIGインターフェースのFractal.i

%module Fractal
%{
#include "mandel.h"
%}
%include mandel.h

を用意したら、swigコマンドを実行。本だとperl5を引数にとってたけど、ネット調べたらperlでいけそうだし、-shadowオプション付けてるのが多いので、よくわからんけど付けてみた(これは後でちゃんと調べる)。

$ swig -shadow -perl Fractal.i

あとはMakeFile.PL書いて、普通にmakeでOK

use ExtUtils::MakeMaker;
WriteMakefile(
              'NAME' => 'Fractal',
              'LIBS' => ['-L/home/kzfm/perltest/swigtest -lgd'],
              'INC'  => '-I/home/kzfm/perltest/swigtest',
              'OBJECT' => 'mandel.o Fractal_wrap.o'
              );

Perlで呼び出す

普通にモジュールを呼び出すだけですな。

use Fractal;
Fractal::draw_mandel('mandel.png', 300, 300,
                     -1.5, 1.0,
                     2.0, 20);

で、絵の出来上がり!

実用Perlプログラミングは初版、第二版ともにもっているけど、型グロブとかクロージャとかXS,SWIGなんかは初版の方が詳しく書いてあるので、僕は今でも重宝するヨ。というか最近わかってきたっぽくて読むのが楽しい。

ProductName 実用Perlプログラミング
スリラム スリニバサン
オライリー・ジャパン / ?円 ( 1998-11 )