見積もりが大変なのでなんとかしたい件

寒くなってきて、薪ストーブの見積もりがちらほら。

そういえば、自動見積り計算機を作ってみよう、なんてほざいたはいいけど、すっかり忘れていたことを今しがた思い出しましたが、早速壁にぶち当たりました。

為替レートってどうやって取得しようかしら、ということです。

ちょっと検索したら、Google の JSON API がヒットしたんですが、404 だったんです。

代わりに見つけたのがこれ。

yql を使う方法が回答されていました。

必要なのは、CADJPY なので、以下のように書き換えました。

http://query.yahooapis.com/v1/public/yql?q=select * from yahoo.finance.xchange where pair in ("CADJPY")&env=store://datatables.org/alltableswithkeys

答えは、XML で戻してくれて、

<?xml version="1.0" encoding="UTF-8"?>
<query xmlns:yahoo="http://www.yahooapis.com/v1/base.rng" yahoo:count="1" yahoo:created="2015-11-10T16:31:22Z" yahoo:lang="en-us"><results><rate id="CADJPY"><Name>CAD/JPY</Name><Rate>92.9053</Rate><Date>11/10/2015</Date><Time>4:31pm</Time><Ask>92.9156</Ask><Bid>92.8950</Bid></rate></results></query><!-- total: 938 -->
<!-- pprd1-node250-lh1.manhattan.sg3.yahoo.com -->

ってな具合なわけです。

というわけで、早速実装しましょう。

<?php
if ($xml = simplexml_load_file('http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.xchange%20where%20pair%20in%20(%22CADJPY%22)&env=store://datatables.org/alltableswithkeys')) {
    print (string)($xml->xpath('//rate[@id="CADJPY"]/Rate')[0]);
}
?>

都度都度 yql に問い合わせが発生するので、結果をキャッシュするようにするなどは必要でしょうし、エラー処理も一切省いてますが、為替レートに基づいた見積もりを作れるようになるわけで、多少は正確になりそうです。

ていうか、xpath 式とか、久しぶりすぎてすっかり忘れてましたが、最近の若い人だったら、生まれてませんとか言われそうですね。

まあ、今日は眠いんで、ここまで。

Yosemite、今のところの不具合

各方面で多数の不具合が報告されている Yosemite、家でも幾つか症状がちらほら。

まず、MX-2640 で印刷ができなくなりました。スプールはされるもののの、解析中のまま停止。
PDF を AirPrint するなりしたいところだけど、iOS 8.x 対応も怪しいところ。
とりあえず、USB メモリでも探して、メモリから印刷するなどして対処する必要がありそう。

MacVim が起動するものの、ウインドウが開かない。

Adobe Photoshop CS3 で web 書き出しのダイアログ内で文字化け。ただ、これは、Yosemite だからか、環境が英語だからか、それは謎。

VMware fusion 5 の問題(起動しない)は継続中。VMware の日本法人から問題に関して電話がかかってきて、事情を説明するも(非通知だから怪しい電話かと思った)、その後音沙汰なし。未だアップグレード方法不明。

Bluetooth が時たま切れる、Wi-Fi がおかしくなる、という症状も散発的に発生。ただ、使えないほどではなくて、On/Off、再起動などで対処可能。

対処1
http://applech2.com/archives/41506650.html

対処2
http://osxdaily.com/2014/10/25/fix-wi-fi-problems-os-x-yosemite/

目下、影響が大きいのが MX-2640 の問題と、VMware の問題。

アップデートはちょっと早まったか、という印象。

その他、まとめの情報。
http://matome.naver.jp/odai/2141333207266480901

で、筆まめの件。

もう、クラウド版、週末までに公開ということで、クレオさんから聞いていたんだけど、早速登録してみました。

印象としては、普通のオンライン住所録、という印象で、筆まめの各フィールドのデータがどう引き継がれるのか、肝心のデータ移行は、Contact XML と vCard で、現状 VMware が使えないので、fwa から変換できないので移行できず。

Contact XML は筆まめのデータの一部が欠落するので、筆まめ 25 にアップデートして、筆まめの側で同期したほうがよさ気。

一番の関心事項は、筆まめ自体が、もともと複数の人間がデータを弄る前提で設計されていないので、同期機能を利用した場合、どうなるのか、つまり、オンラインで編集のデータベースと、筆まめでオフラインで編集のデータベースと、同期後にちぐはぐなデータが生じた時、マージなんかがどうなされるのか、という点。

特に、詳しい説明書がないから、買ってやってみるしかなさそうです。

筆まめのデータをSQLiteに取り込む

かれこれ、放置してしまいましたが、以前の続編です。
今回は、前回の失敗をふまえて作戦を変更しました。

まず、ContactXML に書き出すまでは、これ以外に選択肢がないので、変更はありません。

次に XML を PHP で parse するのをやめて、Safari を使うことにします。
そして、Safari を AppleScript で制御して、JavaScript によりデータを SQL 文に変換、それを AppleScript から SQLite に書き出す、という方法で変換することにしました。

Continue reading

ContactXML でハマる

住所録ソフトとして筆まめを使っていると以前書きましたが、とてもよくできたソフトではあるものの、やはり不満な点もあり、データを MySQL に引っ越そうとしています。

そのためには、データを汎用的な形式で書き出す必要があるのですが、タブ区切りを選ぶと、年賀状などの出受の記録が失われてしまいます。(すべてのデータが書き出せない)
試しに ContactXML 形式を選択すると、それらしいデータが出力されているので、早速 PHP で読み込むためのスクリプトを作成することとしました。 Continue reading