Posted – 12月 30th, 2008
under mac
Leave a comment
 
– go to post
Bookmark this on Delicious
このエントリーをはてなブックマークに追加
はてなブックマーク - 1password 無料でゲット

MacHeistがクリスマスプレゼントに1Passwordなどを無料公開

Macの手書き説明書さんの記事によると、
MacHeistでMac用のパスワード管理ソフト「1Password」が
期間限定にて無料配布されているとのこと。

Mac Giving Tree

Googleで「1Password」を検索すると、便利!便利!って言葉が
ザクザクでてきて前から気になってたので早速Getしてきました。

欲しい方はお早めに。


Posted – 12月 16th, 2008
under カメラ
Leave a comment
 
– go to post
Bookmark this on Delicious
このエントリーをはてなブックマークに追加
はてなブックマーク - Gx200

R0011997.JPG  

久しぶりにgx200で写真を撮りました。
やっぱコンパクトでこんなよって撮れるのは楽しいなぁ


Posted – 12月 16th, 2008
under ruby, ノーツ
Leave a comment
 
– go to post
Bookmark this on Delicious
このエントリーをはてなブックマークに追加
はてなブックマーク - Notes 添付ファイル その2

RubyでNotesのメールを書き出す
を参考に、Notes添付ファイルを一括出力する処理をRubyで書いてみました。
まんまコピーなんですが、忘れないように記録

全件対象で処理した場合、エラーが発生し落ちてしまったので、
@Attachmentsで抽出したViewを作成し処理対象を添付ファイルが
存在する文書のみに変更しました。

require 'win32ole'
 
class Log
  def initialize(s)
    @@logger ||= Proc.new { |x| puts x }
    @@logger.call(s)
  end
 
  def Log.register_logger(p)
    @@logger = p
  end
end
 
class Notes
  class Session
    def initialize(server, dbname)
      @server, @dbname = server, dbname
      @session = WIN32OLE.new('Notes.NotesSession') or return nil
      @db = @session.GetDatabase(@Server, @dbname)
    end
 
    def each
      view = @db.GetView('Attachments')
      doc = view.GetFirstDocument
 
      while doc
        yield Notes::Document.new(doc)
        doc = view.GetNextDocument(doc)
      end
    end
    include Enumerable
 
    #添付ファイルをdirに書き出す
    def extract_files(dir)
      self.each do |doc|
        doc.each_attachment do |obj|
          name = obj.name
          Log.new "\t#{name}"
 
          #対象外の拡張子をチェックする
          ext = File.extname(name).downcase
          next if %w(htm html csv pif scr com bat).include?(ext)
 
          #書き出しメソッドを呼び出し
          doc.extract_file(name, "#{dir}/#{name}")
        end
      end
    end
 
    #添付ファイルをdir/fromに書き出す
    def extract_files_by_sender(dir, body_hash = nil)
      self.each do |doc|
        k = doc.unid
 
        #出力先の作成
        extract_dir = "#{dir}/#{k}"
        Dir.mkdir(extract_dir) unless File.exist?(extract_dir)
 
        doc.each_attachment do |obj|
          name = obj.name
          Log.new "\t#{name}"
          ext  = File.extname(name).downcase
          next if %w(htm html csv pif com bat).include?(ext)
          doc.extract_file(name, "#{extract_dir}/#{name}")
        end
      end
    end
  end
 
  class Document
    def initialize(doc)
      @doc = doc
    end
 
    def each_attachment
      a = @doc.Items or return
      a.each do |obj|
        yield Notes::Attachment.new(obj) if obj.Type == 1084 #ATTACHMENT
      end
    end
 
    def unid;    @doc.UniversalID; end
 
    def extract_file(name, path)
      obj = @doc.GetAttachment(name) or return
      begin
        obj.ExtractFile(path)
      rescue => e
        Log.new "**** #{e.message} ****"
      end
    end
  end
 
  class Attachment
    def initialize(obj)
      @obj = obj
    end
 
    def extract_file(path)
      @obj.ExtractFile(path)
    end
 
    def name
      @obj.Values[0]
    end
  end
end

呼出し側

require 'notesruby'
require 'optparse'
 
opt_hash = Hash.new
opt_hash['dir'] = '.'
 
p ARGV
ARGV.options do |opt|
    opt.on('-d [dir]') { |v| opt_hash['dir'] = v }
    opt.on('-s') { |v| opt_hash['same_folder'] = v }
    opt.parse!
end
 
dir = File.expand_path(opt_hash['dir'])
if !File.writable?(dir) || ARGV.size == 0
  Log.new "Usage: ruby #{$0} [-s] [-d dir] file [file...]"
  exit
end
 
body_hash = Hash.new
ARGV.each do |arg|
  if m = arg.match(/(.*)@(.*)/)
    nsf, svr = m[1, 2]
  else
    nsf, svr = [arg, '']
  end
 
  if db = Notes::Session.new(svr, nsf)
    Log.new "添付ファイル抽出...(#{arg})"
    if opt_hash['same_folder']
      db.extract_files(dir)
    else
      db.extract_files_by_sender(dir, body_hash)
    end
  end
end

 
– go to post
Bookmark this on Delicious
このエントリーをはてなブックマークに追加
はてなブックマーク - GMail Backup でバックアップ

なんとなくGmailの中を整理したいと思いはじめたので、
現状をBackUpすることにしました。

適当なPOPクライアントで受信すればいいかなと思ったんだけど、
Google先生に聞いたら、バックアップツールが見つかったので、
試してみる事にしました。

GMail Backup
まずは、上記のサイトからlinux用のプログラムをダウンロード

中身はPythonで書かれてるスクリプトらしい。
まずはとりあえず、ここを参考にターミナルから実行してみる。

./gmail-backup.sh backup ./backup_dir hoge@gmail.com password
.
.
AttributeError: ‘module’ object has no attribute ‘ssl’

なんかエラーとなりました。。。
sslって出てるか、ssl関連のモジュールが足りないのかな?と
pythonのモジュールをチェック
port search py25 でそれっぽいのがないか調べてみました。
py25-opensslってのがあった!!

sudo port install py25-openssl

とりあえずインストールして再度backup実行してみましたがダメ

なんだろうな…と思いながら、スクリプトを置いたディレクトリを
見ていたら、gmail-backup-gui.shってファイルを発見。
こっちを実行しないといけなかったのかな?と思い実行してみるもエラー

しょうがないので、ダウンロード元にもどって英語をながめていると
wxPythonってのが必要らしい。なんじゃこれ?と思い調べてみると
Python用のGUIキットってことなので、macportでからインストール

sudo port instal py25-wxpython

なんか1回失敗したんだけど、もう1回実行したらインストールできました。
で、gmail-backup-gui.shを実行


Guiがあがりました!!
で、アカウントとパスワードを入力して、実行してみたんですがやっぱりsslが…と最初と同じエラー
なにが足りないのかなと色々検索した結果、py25-socket-sslが足りない模様。

早速、インストール

sudo port instal py25-socket-ssl

でGUIより実行。無事バックアップがとれました。
ちゃんとスクショとっとけばよかった‥