風邪か、過労か

一昨日と昨日、風邪で体調崩して会社休んでしまったんですが。風邪というか、過労かもしれないという気持ちもあるけれど、あれくらいを過労といってよいものか?とも思うし、いや〜過労だろとも若干思う。まあ土日出勤してたし。

一昨日は病院行ったあとはず〜っと眠ってました。もうすっきりするほど寝たと思ってたんですが、昨日も頭がボーッとしてて熱っぽかったので、結局もう一日休んだんですが、あんだけ寝たのにまだ寝るかというくらい寝ました。飯食べて薬飲んでいたとはいえ、どちらかというと、寝ていたら治ったという感じがする。

先月はあまりの残業・休日出勤の多さで残業申請書が束になっていた。まあ短い残業とかも細々報告するからってのもあったけど。休日出勤して平日に熱出して寝込んでたら世話ないねーと自分でも思う。ああ、思う。でも、月曜までになんとかしろと言われていたので、そのとき俺一人しかいなかったので一人で頑張ったのだが、結局物理的に無理という判定が下されて月曜じゃなくてもよいということになり、体調崩して今日出勤したら、今日が締め切りになってて、他の人たちが苦労した空気になってた。他の人からしてみたら、こんなときに休みやがって!?と思っていたのでは?とハラハラしてしまう。でも俺は土日頑張ってたんだけどね!?

なんなんだ…。いや、というか月曜が伸びてスケジュールどうなったんだ?って聞いてもやることだけ指示されてスケジュール答えてもらえてなかったのに。開発チームの同僚に聞いたら、俺が休んだ初日に急に言われましたって言ってたし。まあでも俺が休む前に作っていた環境同期ツールとかが役に立っていたみたいだったのでよかった。

こういうやり方を続けていっても、モチベーションは上がっていかないと思うのだが、うちの会社の他の人(というよりは、うちの開発に関わっている人々。他社含む)ってどうやってモチベーションを保っているのだろうか?ぜひとも聞いてみたい。


PHP:mb_encode_mimeheaderでハマる

PEAR::Mailを使ったメールクラスを作っていて、日本語対応している途中でハマった。

$subject = mb_encode_mimeheader($subject, "ISO-2022-JP");
// 後に$subjectを件名にセットしたメールを送ると文字化けしてた

その後、以下のように修正してみた。

$subject = mb_encode_mimeheader(mb_convert_encoding($subject, "ISO-2022-JP". "auto"), "ISO-2022-JP");
// これでうまくいった!・・・かに見えたがダメだった

上記のように修正したところ、日本語は出るようになったが、Thunderbirdでメールを受信すると件名が途中から文字化けしていた。ちなみにGmailでは文字化けしていなかった。mb_encode_mimeheaderが悪いのか?と思い調査開始した。

検索してたら、mb_encode_mimeheaderのバグ?みたいに書いてある記述が多かったが、どうもそうではないという情報を得た。

mb_encode_mimeheader()の使い方

mb_encode_mimeheaderは内部エンコードを元に、$subjectをISO-2022-JPに変換した上でmimeheader用にエンコードしてくれてるらしい。mb_encode_mimeheaderは無罪だと。つーかmb_encode_mimeheaderするならmb_convert_encodingしたらダメ!だって。そうなのか…。じゃあ上でやったのは、ダメなことじゃないか。しかし、開発サーバの内部エンコードはUTF-8じゃないのかな〜と思って、再度調査。その前にphpinfo()でmbstring.internal_encodingの値を見たら、no valueだった。

echo mb_internal_encoding();  // EUC-JPだと〜!!

そんな…。no valueだとEUC-JPになるのか?UTF-8じゃないのか?そう嘆いてもこれが現実。

// mb_encode_mimeheaderを使う前に…
$default_internal_encode = mb_internal_encoding();
if($default_internal_encode != 'UTF-8'){
  mb_internal_encoding('UTF-8');
}
// mb_encode_mimeheaderを使った処理をする
// $subjectの文字列の文字コードはUTF-8
$subject = mb_encode_mimeheader($subject, 'ISO-2022-JP');

// メール送信とかしちゃう

// その後、元のinternal_encodeに戻す
mb_internal_encoding($default_internal_encode);

これでOKでした。今までmb_encode_mimeheaderを疑っててごめんなさい。
一応、.htaccess側で、ローカルのmbstring.internal_encodingを設定しといた。

php_value mbstring.internal_encoding UTF-8

PHP:FPDF error: Unable to find xref table

FPDFで、テンプレートに使うPDFファイルを読み込んだら、

FPDF error: file is encrypted

なるエラーメッセージが出てきて強制終了してしまった。
どうもPDFファイルが暗号化されてるから、fpdfが、「俺理解できないYO!」と言っているようだ。暗号化を取り除けばOKかなと思って、Adobe Acrobatが入ってるPC使ってる後輩にテンプレート用PDFを開いてもらって、セキュリティをなしに変更して保存してもらった。そうしたら今度は、

FPDF error: Unable to find xref table - Maybe a Problem with 'auto_detect_line_endings'

というエラーメッセージが出た。

このエラーメッセージでGoogle検索しても日本語情報がない…。
ちなみに、Maybe a Problem withとか言われてるのを

ini_set('auto_detect_line_endings', 1);

とかやってみたが、状況は変わらず。

仕方がないので英語の情報をツラツラと読むと、
「自分で作っていないPDFとかだとこういうエラー吐くことってあるよね〜」的なことが書いてあった。
PrimoPDFで対象のPDFファイルを再作成してみな!ということだったので、
やってみたところ、エラーがでなくなった。これにて一件落着!!


帰省、そして戻る

CIMG0290

シルバーウィークは初日は仕事…。
二日目から実家に戻り、三日目は法事、四日目は甥っ子、姪っ子との遊び疲れで爆睡、そして今日帰ってきたと…。写真は帰りの道にあった展望台から。

今回はETCを使って帰ったわけですが、高速道路の渋滞に巻き込まれてしまいました。1区間でしたがどうしようもないほど遅くてイライラしましたね〜!トイレにいきたくなったり、子供連れだったりすると大変だろうな〜とすごく思いました。これで高速無料化したら一体どうなるんだろうか?

無料になるということは、料金所がなくなるだろうから、遅くなる部分がなくなるからそのぶん渋滞は緩和するんじゃないかと思うのだけれど、俺が一番心配なのは、いわゆる暴走族とかが高速道路に入りやすくなるんじゃないかってことです。そうなると取り締まりとか、ますます大変になるから警察への負担が増えるんじゃないだろうか?と思いますね。そういう意味では、1,000円は抑止力にするためにあってもいいんじゃないかと思います。

気持ち的には、ETCがある人は土日に限らず終日1,000円がいいんじゃないかと思ってます。抑止力になりつつ、ETCを普及させるのが一番じゃないかな〜と。雇用も守れるし。温室効果ガスの観点でいうと微妙だと思うけど。包括的に考えると難しいんすよね。高速道路ばっかり通るようになると、下道のお店に入る人が減るだろうから、そういう意味では雇用が減りそうだし…。


prototype.jsすげー!

Prototype & script.aculo.us JavaScriptライブラリによるAjaxアプリケーション開発
Prototype & script.aculo.us JavaScriptライブラリによるAjaxアプリケーション開発 栗山 淳(監訳)

おすすめ平均
stars寄り道せずにこれで決まり
starsprototypeはもはや言語?
starsJavaScriptデファクトスタンダードライブラリのバイブル的1冊。
stars作者の独断

Amazonで詳しく見る by G-Tools

仕事でバリバリ使っています。prototype.js。
prototype.jsを使うとRubyチックにコーディングできる!でも俺Ruby使いじゃないし!
そんな俺でもこのprototype.jsのコーディングのしやすさにはマジ惚れる。

最初、この本を買ったときは、prototype.jsとscriptaculousの使い方がボチボチわかればいいやーという程度の期待感であったが、読めば読むほどというか、使えば使うほど、実はすげーじゃないか!?ということが判明。いやそれは俺が気付いてなかっただけなのかもしれないけれどもさ。

まだよくわかってない部分も多々あるけれど(bindとか…)、
とりあえずprototype.jsを使い始めるには、この本が一番オススメだと思います!
ただし、プログラマー向けだということは確実ですけどね!!