Rake 内では Exception の class 名が消える場合がある

Exception の class 名って表現で合ってるのかな。

上の Rakefile を実行すると

rake aborted!
bar

のように怒られる。FooExcept はどこいった? rake 0.8.7 で確認。それとも Rake はこういう仕様なのかな。

Unicode なメールの話

ちょっとしたツールでメールを送る、って処理で何回も何回も車輪を作り直してる気がするんだけど。Unicode のメールを送るってことにあまり真面目に取り組んだことがなかったのでちょっとやってみた。

そこで知ったこと。

Unicode の 8bit のデータをそのまま Content-Transer-Encoding: 8bit で送る(とりあえず UTF-8 と仮定)と、勝手に body をquoted-printable にしてしまう SMTP とそうでない SMTP がある

ということは UTF-8 のデータそのものが直接届くとは限らないわけだ。

quoted-printable body の扱い

  • Thunderbird では問題なく読める(確か Outlook Express でも大丈夫1
  • テキストデータとしては扱いにくいので body を nkf で UTF-8 に戻せるかと思ったら、使っている nkf のバージョンの問題なのか、全部を正しく復元することはできなかった

Thunderbird でソースを表示すると quoted-printable なデータを拝むことができる。見慣れないエンコーディングなのでデータが壊れてるんじゃないかと思うが、そうではない。

ただ問題は nkf で復元できなかったこと。すべてのデータが必ず復元できないのかどうかは分からないけど、なんかこう、一抹の不安は残る。

UTF-7 は便利だけど微妙

UTF-7 に encode してしまえば 7bit データなので勝手に quoted-printable になることはない。

UTF-7 とは超乱暴に言うと base64 を使って Unicode のデータを ascii にしてしまう encoding. したがってそのまま読み書きすることはできないと言っていい。

つまり

  • body だけ取り出してメタデータがなくなってしまうとそれが UTF-7 なのかどうなのか、少なくとも人間には当たりをつけるのは難しい
    • でも base64 を使っている UTF-7 にはダメ文字が多く、body だけをちゃんと取り出さないとまず変換できない
  • nkf は対応していないので iconv で取り出してね

Unicode の中で UTF-7 はそんなに扱いのいい方ではないと思う。多くの場合で UTF-8/16/32 くらいしか見ない。iconv は……。イマドキ普通に使えると言っていいのかなぁ? Windows のことなんか知らね、でよい? というか Ruby が入ってれば iconv は入ってる、と言ってよいのかしら。それならまぁいいのかな?

まとめ

Unicode 時代のメールって、まだちょっとやっかいだなーと思った。iso-2022-jp だけで済んでた時代は簡単だったなぁ。

  1. EdMax は Unicode 版を新たに作り直してるらしい。 

すっかり Perl の書けないカラダに

irb 超便利だよーとか言っているうちに昔書いた Perl スクリプトが直せなくなってきている。まぁ直せないのはそもそもの作りが悪いっつーのも大きいんだけど、CPAN をバリバリ使いこなして…っていう流れがどうにも解せない1こともあって非常に効率が悪い。だからと言って今さら自作ライブラリを書こうなんて気もさらさらなく、実に中途半端で困った状態になっている。

イマドキのライブラリを同梱した all-in-one perl とか誰か作ってくれんやろか。

[追記] とりあえず Data::Dumper を入れて泥臭く対処。

  1. こっちゃ大物アプリが作りたいんじゃなくてササっと管理用スクリプトを書きたいだけ。ただし、その中で比較的大きなものが扱いにくくなってしまっているという状態。 

MacBook 13" びみょー

アップル、“MacBook”を発表 (/.-j)

ほんとに小さいの作る気ないんだなぁ。

ポリカーボネートの質感、そしてそのうえに載ったキーボードの質感が納得できずに iBook は見送った経緯があるので、もう今度から 12", 13" ディスプレイサイズの OSX マシンは手に入れようがなくなってきたなぁ。テカテカ液晶も好きじゃないしー。今回のモデルチェンジで質感が急によくなってれば話は別だけどもなぁ。Windows もあんまり使いたくないけど、ノートはプロプラ OS の方が断然安心して使えるし…。

[2006-05-18 追記]

ITmedia +D PCUPdate:MacBookに触ってきた! (1/2)

VAIO の安物とか昔の MSX なんかにこの形のキーボードあったな…。はっきり言ってやだこれ。

ちょっと体調回復

先週、どうにもだるくて、なんか血が足りないような気がしたので週末もおとなしく過ごしていたんだけど、そう言えば春から初夏に掛けて貧血っぽい症状が出てくることが多いような気がしないでもないなぁ。1実際は血圧計ったり比重計ったりしてないので貧血かどうかも分かっていないんだけど、こういうときは「とりあえず無理せずとっとと寝る」方針で過ごすことにしている。もともと無理の効く方じゃないし。

貧血っぽいのはひょっとして姿勢が悪かったのが原因かとも思い、今日、机の足回りを少し片付けた。(一時的なつもりで荷物が置いてあったので絶えず身体をひねる体勢になっていた。)

別に吐き気があったりするわけじゃないけど、身体が重いと気持ちも重くなる。防げるもんなら防ぎたい。しかし!

貧血の食事療法 鉄分たっぷり!脱貧血メニューを、どうぞ

によると、食後のコーヒーは鉄分の吸収を妨げるとな。うぐぐ…。

  1. と思い、この日記を検索してみたけどそれっぽい記述は見当たらず。 

DOCTYPEスイッチ整理

Opera

HTML 4 Transitional

uri(システム識別子)あり標準
uri(システム識別子)なし互換

HTML 4 Strict

問答無用で標準準拠

7.1.x 以降は XML 文書に相当する(XHTML も当然含む)ものは標準モード

Mozilla

HTML 4 Transitional

uri(システム識別子)ありalmost standard
uri(システム識別子)なしquirks

Strict

full standard

XHTML 1.0 strict が full standard mode だとは書いてあるが、1.1 の記述なし。

IE

HTML 4 Strict

標準

HTML 4 Transitional

uri(システム識別子)あり標準
uri(システム識別子)なし互換

XHTML の場合はどっちでも標準モード。ただし、XML 宣言が入ると DOCTYPE スイッチが無効になるバグあり。

ということは HTML 4.01 と 4.01 Transitional のシステム識別子なしで比較するのがいちばんいいのかな?

スパイウェア

名前に反してスパイウェアについて丁寧に説明してくれるサイト。個人的にはクッキーをスパイウェアに数えるのは抵抗があるんだけど、確かに他のドメインのクッキーは弾いておいた方がいいかもな。

個人的には面倒くさくて説明する気にもならない再インストールの話なんかにも(ちょっと見つけにくいけど)触れられていて、参考にしやすいかも。欲を言えばもう少し詳細に触れていてほしいけど、まぁそれは仕方あるまい。

spybot 入れてみる

spysweeper 入れてみたけど、なんだかゴテゴテした印象でイマイチ。spybot は日本語も出るし、比較的分かりやすいインターフェイスなので採用。ときどきチェックしてみよう。

追跡用のクッキーをずいぶん食べてるなぁ。。。クッキーを問答無用で受け入れるのはやめっかな。

NTFS のややこしい問題

ふーむなるほどね。しかしようやく浸透してきた NTFS も Longhorn で WinFS になっちゃうんでしょ? 考えたら Microsoft の filesystem って妙に寿命短いなぁ。

ところで KNOPPIX 3.4 は USB の CD ドライブで起動できるのが個人的には嬉しい変更になりそう。あ、そういや実家のマシンでももう KNOPPIX 立ち上がるんだな。そーか。まぁ別にだからなんだって話だが。

About

例によって個人のなんちゃらです

Recent Posts

Categories

Tool 日々 Web Biz Net Apple MS ことば News Unix howto Food PHP Movie Edu Community Book Security Text TV Perl Ruby Music Pdoc 生き方 RDoc ViewCVS CVS Rsync Disk Mail FreeBSD Cygwin PDF Photo Zebedee Debian OSX Comic Cron Sysadmin Font Analog iCal Sunbird DNS Linux Wiki Emacs Thunderbird Sitecopy Terminal Drawing tDiary AppleScript Life Money Omni PukiWiki Xen XREA Zsh Screen CASL Firefox Fink zsh haXe Ecmascript PATH_INFO SQLite PEAR Lighttpd FastCGI Subversion au prototype.js jsUnit Apache Trac Template Java Rhino Mochikit Feed Bloglines CSS del.icio.us SBS qwikWeb gettext Ajax JSDoc Rails HTML CHM EPWING NDTP EB IE CLI ck ThinkPad Toy WSH RFC readline rlwrap ImageMagick epeg Frenzy sysprep Ubuntu MeCab DTP ERD DBMS eclipse Eclipse Awk RD Diigo XAMPP RubyGems PHPDoc iCab DOM YAML Camino Geekmonkey w3m Scheme Gauche Lisp JSAN Google VMware DSL SLAX Safari Markdown Textile IRC Jabber Fastladder MacPorts LLSpirit CPAN Mozilla Twitter OpenFL Rswatch ITS NTP GUI Pragger Yapra XML Mobile Git Study JSON VirtualBox Samba Pear Growl Mercurial Rack Capistrano Rake Win RSS Mechanize Sitemaps Android JavaScript Python RTM OOo iPod Yahoo Unicode Github iTunes God SBM friendfeed Friendfeed HokuUn Sinatra TDD Test Project Evernote iPad Geohash Location Map Search Simplenote Image WebKit RSpec Phone CSV WiMAX USB Chrome RubyKaigi RubyKaigi2011 Space CoffeeScript Nokogiri Hpricot Rubygems jQuery Node GTD CI UX Design VCS Kanazawa.rb Kindle Amazon Agile Vagrant Chef Windows Composer Dotenv PaaS Itamae SaaS Docker Swagger Grape WebAPI Microservices OmniAuth HTTP 分析基盤 CDN Terraform IaaS HCL Webpack Vue.js BigQuery Middleman CMS AWS PNG Laravel Selenium OAuth OpenAPI GitHub UML GCP TypeScript SQL Hanami Document SVG AsciiDoc Pandoc DocBook Develop Jekyll macOS Node.js Vite Heroku Transformer AI Data Cloud Wasm