請求書サイト

なんかパートのおばちゃんが聞えよがしに、「請求書はメールにリンクするより添付して送ればいい。」とか新人に言っている。

数サイトある各運営サイトの契約をまとめて、毎週金曜に請求書を作成するサイトをわしが作ったのだが、メールに「請求書を見るのはこれを見ろ」とURLを記述したメールを送っているのが不満らしい。

1年前は、multipart/alternative で、プレーンテキスト、HTML、PDF添付のリッチなメールを送っていたものです(遠い目)。

それが、今のプレーンテキストの請求書を見るURLのみになったのは理由がある。gmail がことごとく迷惑メールにしやがるので、客が請求書を見ないのだ。

それと、PDFがネットオフラインでも見えるように、会社ロゴ、社印画像をインラインにしているので、サイズがデカい。

今のプレーンテキストは 5KB ほどだが、リッチ(笑)なメールは 80KB と、約16倍のサイズで、こんなものを iモードや SPモードのメールで送られた日には、「ギガが減る!!」とか言われそうである。

SPAM要素を減らすのと、一応プレーンテキスト部分に金額は記述してるので、「請求書が欲しかったらサイト見てダウンロードしてね」というスタンスで今の形になった。

パートのおばちゃんは、自分が優秀であると自己アピールをしたがる傾向があるように思われるのだが、「客の為にはこうするのが正しいのに、それをやってないのは馬鹿なのか!?」とでも思ってんだろーなー。

以前、客が請求書を紙で欲しがるのが多いので、全員に紙の請求書を送りたいとか言い出した事があった。

今のシステムになったのは、昔、事務員2〜3人で、何十通も時間と金を掛けて、請求書を郵送していて、経費削減の為に請求書サイトを作成した経緯を滔々と説明した。

そして、その説明が終わった後で、パートのおばちゃんは何と言ったかと言うと…

「それで、紙の請求書を全員に送っていいですか?」

全然話を聞いちゃいねえ(笑)
自分の素晴らしい提案を差し置いて、しょうもない話をグダグダしやがると思ってたんだろーなー。

物事には何でも理由があるのだが、その理由を尋ねずに、勝手に現在のものを見下して批判し、自分が優れているとか考えるのだから、言っても治らんだろうなあ。

後、gmail のヘッダ見てると、送信IPアドレスがSPFレコードに定義されてないとか書かれてるんだが、会社が使ってるメールサーバーが旧式で、SPFレコードは定義できるけど、定義するかしないかをチェックボックスでチェックするだけで、向こうが勝手に設定し、内容は指定できない。

From: に記述したメールアドレスは、SPFレコードで定義されているメールサーバーで送っているが、そのメールサーバーに接続するIPアドレスがSPFに定義されてないって騒ぐgmail のSPFチェックもちょっと頭がおかしいんだよなあ。

試しに自宅のサーバーからレンタルサーバーにgmailのわしのアカウント宛にメール投げてみたけど

ちゃんとメールサーバーのIPアドレスでSPFチェックされてる。

違いは、会社のIPアドレスはOCNの固定IPアドレスで、わしのはmopera U の動的IPアドレスなのだが、まさか固定IPアドレスサービスかどうかまで把握してるんだろうか?

google ……おそろしい子((( ;゚Д゚)))

よろしかったでしょうか? の違和感

電話応対を聞いていると、「よろしかったでしょうか?」なんて言うてる奴がいる。

なんで過去形?相手の意向を聞いてんじゃないの?

過去形になってるという事は、事後承諾を求めていると考えられ、「あんたの意向は関係無しにやっちゃったけど、いいですね?」と主張しているように思える。

「よろしいでしょうか?」と聞くのは、これからやろうとする未来の事に関しての方針に同意するか? と相手の意向を伺っている訳だ。

なんか、これも、「流用します」と同じニオイがするねえ。
相手の意向なんか関係無しに自分の意思を押しつけようとしている様に思える。

LINEばっかりやってるせいで、コミュニケーション障害になっとるんやないの?(笑)

Virtualbox 6.0のビデオドライバがクソ

会社で Virtualbox で Linux 仮想マシンを動かし、業務に使用しているが、仮想ビデオドライバがうまく動いていたのが Ubuntu 14.04 までで、それ以降がうまく動かない。

Ubuntu 18.04 などは、端末のウィンドウを最大化して戻すという事をやると、数分フリーズするので使い物にならない。

あれこれ試して、Ubuntu Mate(マテ) 18.04 ならストレス無く動くので、Ubuntu Mateを使っている。

全画面表示で、ちゃんとフルスクリーンになるし、ウィンドウサイズ変更にも追随するので、動作はしていると思うが、「追加のドライバー」を見ると、「プロプライエタリなドライバーは使われていません。」などと表示され、動作があやしい。

Virtualbox がこんなクソっぷりだが、VMWare の方はちゃんと高速に動作する。個人使用なら VMWare 一択だろう。

ケチ臭い客

植野メグルさんのtwitterでリツィートされてたネタだが、小まめに色んなリツィートする人のtwitter って知識の共有に役立つなあ。でも、自分でやるのは面倒臭えなあ(笑)

で、このネタでSI(System Integrator)関係の仕事の客を思い出した。
公共事業系って「予算ケチれ」って号令が出てるせいか、非常にケチ臭いネタが多い。

前に大阪市の公募で、無料で小学校のプログラミング教育をやってくれる業者募集ってのがあって呆れ果てたが、こんな感じ。

情報源: 大阪市、小学校のプログラミング教育を「無償で」やってくれる事業者を募集 | スラド デベロッパー

こんなの赤字出してやるメリットって「名前を売る」以外に無いから付き合いたくも無いのだが、恵んでもらう癖に妙に高飛車で、まさに「態度のデカい乞食」。

自分の立場を弁えてて、「こんな低予算ですまんなあ」という態度であれば、まだ愛嬌があって「しょうがねぇなあ…」となるのだが、「プレゼンしに来い」「見積もりはあいみつでやるよ」とか、色々条件つけてきて何様のつもり!? って言いたくなる。

まあ、この手の公共事業系は「メンテで稼げるよ」ってのが暗黙の了解なのかもしれないが、態度のデカい乞食を相手にすると、最初の開発の段階で追加仕様が山盛り出てきて破綻して、訴訟沙汰になるのが定番。

「メンテで稼げる」どころか、開発でデスマーチだから、時間と金の無駄以外の何物でも無く、そもそも関わり合いになりたくないから、問い合わせされると返答する時間も惜しいのでしないで欲しいものだ。

OpenPGPの鍵失効

会社をクビになったので、PGPの証明書の失効手続きをやった。

PGPはメールに署名すると、改竄をチェックできるので、わしが送信するメールにはPGP署名する事にしている。改竄されて被害を受けた事は無いが、取引関係のメールだと、言った言わないの話があるので、あると便利だと思う。

あと、送る相手の公開鍵で暗号化すれば、そのペアとなる秘密鍵を持っている人にしか解読できない機能もある。これは海外との機密情報をやり取りするのに役に立つ。

特に支那の様な、国外への通信を傍受して検閲しているような所とのやり取りに向いている。

話はそれたが、そう、鍵の失効初体験!
Thunderbirdで、OpenPGP→鍵の管理 で鍵を選択して、編集→鍵を失効させる でローカルでは失効になる。

さらに 鍵サーバ→公開鍵をアップロード で鍵サーバに失効した鍵を登録すれば、完了。

鍵サーバ検索したら、Air internet使ってた時のPGPキーがまだあった(笑)。これって既にキーは無いし、失効もできないけど、キーサーバって随分長い間、鍵を保持してくれるんだなあと感心する事しきりである。

もう少し

何やら、永久に完成しないだろうと思っていたプロジェクトがまだ生きていたようである。

社長の話では、ハードウエア担当が、評価ボードを作ったので、データベースへ接続して欲しいと言い、「もう少しだ」とか言っている。

果てしなく嘘くせえ。

わしは、かつては、電気業界の組み込みソフトウエア部門に居て、ハードウエア担当と話をしていたから、話をすれば、どの程度の能力かってのは分かる。

このハードウエア担当は、わしの見立てでは、出来合いの物を買ってきて組み合わせる位の能力しかない。

なので、評価ボードを作ったと言っているが、売り物の評価ボードを買ってきて、組み立てただけの可能性が高いな。

わしとしては、「評価ボードを作った」というからには、「ALTERAにロジック焼きました」レヴェルの話でないと納得できないが、まあ、DOS/Vマシンにしたって、ただ組み立ててるだけなのに、「自作」って言うからねえ 🙂

社長は「もう少し」と言っているが、わしがその評価ボードに対して言う言葉は既に決まっている。

「論外じゃボケぇ!」(笑)

F-Secure Linux gateway

今更ながらに Ver.4.03にバージョンアップした。

元々、インストールした時に debパッケージは無く、tar ballの野良ビルドだったが、今は debパッケージがあり、それを入れると、ちゃんと、野良ビルド環境の設定を引き継いで何の問題もなく、バージョンアップが終了した。

そこで、設定を見ていてふと気づいたのが、SPAM RBL関係が「無効」になっている。

わしは余り深く考えずに、自動で SPAM を排除してくれる便利なもの程度で、気軽に有効にしていたが、時折、Junkにお客さんのメールが叩き込まれる事があり、難儀していた。

そして、会社からお客さんに送信したメールが届かないってので、調べると、お客さんのプロバイダに迷惑メールフィルタサービスがああり、どうもRBLを利用してるっぽい。

よくよく調べると、規制方法として、ボランティアの報告者が「SPAM業者許すまじ!」とIPアドレスグループでごっそり拒否とかしていて、無関係の善良なサーバがそのとばっちりで、SPAM発信者と誤認される事が多々あるそうだ。

それに、マルチドメインサーバーが多い昨今で、IPでの規制はすごく問題があるな。だから、F-SecureのLinux gateway はデフォルトで無効にしたのか。

会社で「メールが届きません」ってメールが来る事が度々あり、調査をするのだが、送信が正常にも関わらず、「届いていない」というのは、メールソフトの迷惑メールフォルダに入ってるか、サーバの迷惑メールフィルタで届く前に捨てられているかのどちらかだ。

しかし、この調査結果を依頼者に言うと、それを元にお客さんにメールで返答しているようだ(´・ω・`)

そのメールも届かない可能性が高いってのは思い巡らないのだろうか?

結局、お返事メール書いたところで、お客さんに届いていないのであれば、意味が無いし、メール書くのに費やした時間も全くの無駄だ。

インターネットで通販やってる会社で、インターネットの仕組みを理解して、ちゃんとした運用をやってる会社ってのは、案外少ないのかもしれないな。

イヤ~ンな仕様

ファイルのアップロードでディスクへの格納に、お客様の名前のディレクトリを作成して格納するって事になっている。

このお客様の名前というのは、フォームの名前欄で、どんな文字でも入力できるので、わしなら絶対に採用しない仕様。

とりあえず、phpの関数しか使っていないし、ヤバそうな文字は予めエスケープしたり、文字置換したりしているからいいかと思っていたが、バックアップでファイルをリアルタイムでコピーするって話になってさあ大変。

最初は php の move_uploaded_file() が成功したら、バックアップディスクにもファイルをcopy() でコピーするコードを書いた。

しかし、ファイルコピーが終了するまで、phpスクリプトが終了しないので、完了時間が数秒延びてしまう。

ディレクトリが入力フリーダムな状況で、その文字列をシェル渡しにするなんぞ、絶対にやりたく無かったが、仕方がないので、exec() でバックグラウンド起動し、スクリプトはすぐに終了するようにした。

シェル渡しにすると何が問題になるのか?

たとえば、名前欄に「野泉雄嗣」と入れて、次のコマンドが実行される様な事を期待していたとする。

copy /var/www/upload/野泉雄嗣/filename.lzh /backupdisk/野泉雄嗣/filename.lzh

では名前欄に「; rm -rf /;」って入れたらどうなるか?

copy /var/www/upload/; rm -rf /;/filename.lzh /backupdisk/; rm -rf /;/filename.lzh

で、これがシェルに渡ると5つのコマンドと解釈される。
1. copy /var/www/upload/
2. rm -rf /
3. /filename.lzh /backupdisk/
4. rm -rf /
5. /filename.lzh

1,3,5はエラーで終わるが、2と4が実行されると、apacheに書き込み権のあるディレクトリのファイルが全部削除される。

php の copy() はパス名にこういうヤバい文字が含まれていても、うまい事握ってくれるが、exec()でやるとなると、この辺は自前で何とかしないといけない。

変なコマンドを実行されない為には、次の様にヤバい文字をエスケープすれば良い。

copy /var/www/upload/;\ rm\ -rf\ /\;/filename.lzh /backupdisk/\;\ rm\ -rf\ /\;/filename.lzh

escapeshellcmd()とか、ヤバい文字をエスケープしてくれる関数があるが、これはマルチバイト非対応で、漢字文字列があると全部削除される。

つまり「野泉雄嗣」の様な漢字のディレクトリが作られる事を想定しているプログラムには使えない。

とりあえず、escapeshellcmd()でエスケープする文字に空白とかも追加して
$str = addcslashes($str,’ \'”#&;`|*?~<>^()[]{}$\\’.”\x0A\xFF”);

とやったが、これってUTF-8の漢字の一部に該当するコードがあっても置換される予感がするなあ…。前に組んだmb_replace_string()って自作関数使った方が良さそう。

しかし、そもそも論で言えば、「何で人間が見て分かる形にする必要があるの?」ってのがある。

システム化というのは、「人間が見て判断する」という非効率でヒューマンエラーが発生しやすい状況を改善する事が目的である。

効率化を追求した結果、これ以上効率化が無理だからシステム化するってなら分かるが、非効率な手順は一切変えず、それを無理矢理システム化するってのは、システム化に対する幻想がある気がするな。

友人が電気店で見たある客がMacを指差しながら店員に「これ買ったらすごい絵が描ける様になるんですよね!?」って言ってたって話を思い出したな 🙂

Ubuntu 9.10のFDTI USB シリアル通信

会社でRBIO-2Uのシリアル通信プログラムが動かなくなったので、テストプログラムでテストしてみた。

ソース

Ubuntu 9.10 Desktop kernel 2.6.31

Ubuntu 9.04 Desktop kernel 2.6.28-16

9.04だと、”PCR01″って送信したら、”\r\nOK\r\n”って文字が返ってきている。
シリアルポートの設定は同じだが、read()で読み出した時の挙動が違う。
これは、kernel 2.6.31のFTDIのドライバか、シリアル関係がバグってそうな予感…。

ATCOM IP08

会社でATCOMのIP08の設定をやった。

同僚が設定していて、転送設定ができないとの事で、わしが見る事になった。
BAPsのfirmwareアップデート済みだったが、#を押しても”Transfer”っておねいちゃんの声が聞こえず、DTMFがスルーされてる感じ。

シリアル端末で、
ipkg remove asterisk-1.4.4
ipkg install asterisk-1.4.20

ってasteriskのバージョン上げても変わらず、しまいには、Grandstreamの電話機では繋がらず、ソフトフォンなら繋がるという謎の現象になってしまったので、BAPsのファームウエアは放棄!

ATCOMのDownload centerから、ファームウエアを落っことしてアップデートすると、転送の#押下は認識するようだが、電話がブチ切られる。

asterisk -vvvr でモニタすると、pbx-transferの音声ファイルが開けませんとかいうログが出ていた。

ファイルの位置を調べると、
/persistent/asterisk/sounds
とかにあるみたいで、

/var/lib/asteriskのディレクトリで、
ln -s /persistent/asterisk/sounds .

とシンボリックリンク貼ってやったら動いた。

AsteriskNowは、asteriskを作ったdigiumが作っただけあって、非常に良くできている。

パッケージのビルドさえ完璧であれば、GUIで設定できて、簡単なのだが、そうでない場合は、Linux弄る知識が無いと、とても触れたもんじゃない。ちょっと残念な製品だな。