<< 2003/07/ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 >>
トップ «前の日(07-16) 最新 次の日(07-18)» 追記

2004-07-17

_ 予想通りメールの乗り換えは恐ろしくつらい作業だ。

コンバートにも時間が掛かったが、いちいち振り分けのルールを作っていく過程がたまらなくつらい。UI なんか要らないから全部エディタでルールを書かせてくれないかと真剣に考えてしまう。トラックパッドはやはり細かい作業には向いてないって。

Datula → Thunderbird

  • Datula で mbox 形式で吐き出す
  • 拡張子を .mbx にしておく
  • Thunderbird 側で Eudora のメールをインポート
    • さっきの .mbx のファイルが置いてあるフォルダを指定すれば ok
    • ローカルフォルダ内にインポートされたメールがセットされる

Eudora ってなんだ、っていうのが正直なところ。今回のバージョンは Firefox もそうだけど、一般ユーザーをかなり意識した作りになってきているところは確かに評価できる。でもさ、mbox 形式って表記くらいは入れようよ。仮にも Thunderbird ですよ、ああた。どれだけ作り手が一般ユーザーを意識してもさ、まだマニア向けだっつの。

雑感

今回はメールボックス内に飼っていたワームが AVG に引っかかって作業が中断してしまったので、ついでに高速化のために AVG を切って作業を行った。

Thunderbird の動作は 0.6 よりは 0.7 の方が速い感じ。大量のメールデータを一気に扱う場合は Datula に比べて明らかに遅いが、まぁそんな機会はめったにあるわけでなし。それよりメール作成時に外部エディタが使えないのが痛い。細かいテキストを作るときにはやはりエディタの力がほしい。そういや昔 EdMax と Datula を比較した際にも

  • 設定が楽であること
  • 外部エディタで編集できること

で Datula に軍配を上げたような気がする。

Thunderbird の動作はまだまだこなれていない感じがする。

  • フォルダツリーでフォルダをダブルクリックすると新しいウィンドウが立ち上がる。

これはたぶんメッセージ一覧でダブルクリックしたらメッセージウィンドウが立ち上がる動作がそのまま転用されているんだろうけど、明らかに変だ。

  • メッセージを移動する際に移動中のカウントが出たり出なかったりする。

いつまで待てばいいのかよく分からなくて気持ち悪い。あんまり遅いので殺して再起動したら移動は終わってたりする。

こうして別な作業をしながらでないと続けられない。

Tags: 日々

2006-07-17

_ パーツショップのショッピングサイトってひどいんだなぁ

最近 Pentium M で新しいサーバを組もうと思ってパーツをあれこれ注文していた*1んだけど、そこで気づいたことがある。全部かどうかは知らないが、PCショップのショッピングサイトの作りがひどすぎるということである。高木先生にたれ込んだらきっと重油吹くサイトのオンパレードだ。個人情報を入力して注文を完了させる画面において、

  • SSL 使ってない
    • あるんです!
  • オレオレ証明書
    • 少しはやる気があったんだなぁ
  • 決済処理丸投げで別ドメインの証明書*2
    • しかもオレオレ
    • しかもフレーム分けてる

なんてのがザラにある。もちろん安めの店を狙っていたからなのかもしれないけど、そういうところはおまけに電話で注文を受け付けてくれなかったりする。電話掛けてもサイトから注文をお願いしますと言われる。

まぁ別にその店に個人情報が渡ったとか、パーツを買った履歴が漏れるかもしれないとか、spam が増えるかもしれないといった程度のことにこっちはそんなにビクビクしちゃいない。買い物はすべて代引きにしてるのでクレジットの情報はやりとりしてないしね。

にしてもだ。今なお Web 上で正しくセキュアな通信を行うなんてことに、中小零細のショップが気を回せるところにはきてかもしれないけれども、PCショップの客層にはそういうの詳しい人結構いるんでないかい? そういうところ気にならないのかなぁ。ショップ比較する人たちはセキュリティには興味ないのかな? もしかしてプライバシーポリシーとか特定商取引の文言があればいいの?

文句は言っているが、なぜかほしいものが扱ってる店のかなり限られたものばかりになってしまい、セキュアでないことは分かったうえで買っちまった。「こういう店では買わない宣言」できればかっこよかったかもしれないんだけどねぇ。

*1 当然のように自分のほしいものは近場のリアル店舗にはない。自作好きではないのでパッケージの商品があればそれでもよかったんだけど、Pentium M のミニタワーで見た目もそれなりで安いものなんて全然ないので、仕方なしに作ってみることにした。まぁこういうことやっておかないと新しい規格とかさっぱり分からなくなるんで、たまにはいいかな。

*2 決済処理を外注することと証明書が正しくないことは別問題なんだけど、一緒くたに丸投げしてしまっているとか、外注先のレベルの低さがモロバレ。


2007-07-17

_ Debian etch の Trac 0.10.3 に Web Admin Plugin

WebAdmin - The Trac Project - Trac

インストールは

TracPlugins - The Trac Project - Trac

の通りに

sudo easy_install http://svn.edgewall.com/repos/trac/sandbox/webadmin

ってやったらあっけなく済んだ。インストール先は

/usr/share/trac/plugins/

ではなく

/usr/lib/python2.4/site-packages

の方だったけど、trac.ini の方で enabled にしたら普通に認識してくれたのでよしとしよう。

あとは user をコマンドラインから

trac-admin PROJECT permission add USER TRAC_ADMIN

してやると、Web の方でいちばん右端に Admin タブが現れるので、これ以降は Web 上で管理できるようになる。user とか group 作った方がいいんだろうけど、今のところそんなに複雑な管理してないから、ここら辺はまだ放置でいいかな。外に公開もしてないし。

※ trac 0.11 ではこれは core package に入るらしいのでますます楽になるのね。

Tags: Web Debian Trac

2008-07-17

_ REXML で SAX風に id と class を抜き出してみた

こんな風に使います。

ruby class_id_picker.rb FILENAME

当然、HTML は処理できなくて、XHTML でないとダメです。

使い道は、とりあえず付けてある名前を推敲するのに使えるかなーくらい。あとは id が unique かどうかとか? 普通はこんなの要らない気がする。

attrs をチェックする際にわざわざ

//i

で引っ掛けているのは REXML でのパース時に大文字や小文字への正規化は行われないためです。

#! /usr/bin/env ruby

require 'rexml/document'
require 'rexml/streamlistener'

class ClassIdPicker
  def initialize
    @ids     = []
    @classes = []
  end
  attr_reader( :ids, :classes )

  def self.parse( io )
    obj = self.new
    REXML::Document.parse_stream( io, Listener.new( obj.ids, obj.classes ) )
    return obj
  end

  def attrs
    return instance_variables.map { |e|
      e.sub( /\A@/, '' )
    }
  end

  def browse
    puts "=== Classes ==="
    puts @classes.sort.uniq.join( "\n" )
    puts "=== Ids ==="
    puts @ids.sort.uniq.join( "\n" )
  end

  class Listener
    include REXML::StreamListener

    def initialize( ids, classes )
      @ids     = ids
      @classes = classes
    end
    attr_reader( :ids, :classes )

    def tag_start( name, attrs )
      attrs.each_pair { |name, val|
        case name
        when /\Aid\z/i
          @ids.push( val )
        when /\Aclass\z/i
          @classes.push( val )
        end
      }
    end

  end
end

if ( __FILE__ == $0 )
  app = ClassIdPicker.parse( ARGF.file )

  # 数を数えながら表示してみる
  app.attrs.each { |attr|
    p attr
    attr_list = app.send( attr ).dup
    attr_list.sort.uniq.each { |name|
      puts "#{name}\t#{attr_list.grep( name ).size}"
    }
  }
end

参考

Tags: Ruby XML