2020年3月11日水曜日

Xubuntuの「システムプログラムの問題が見つかりました」のダイアログ表示対策、再び

家使っているXubuntuですが、最近また、
 システムプログラムの問題がみつかりました
のダイアログが表示されるようになりました。

「/var/crash」には、起動ごとに「_usr_lib_xorg_Xorg.0.crash」というダンプが吐かれているので、xorg関連の不具合だと思うのですが、一向に修正される気配がないので、クラッシュレポート自体を止めることにしました。

Ubuntu/Xubuntuでは、クラッシュレポート機能はapportで提供されていますので、これ自体を止めてしまいます。
apportの設定ファイルは「/etc/default/apport」ですので、この中にある「enabled=1」の記述を「enabled=0」に変更します。

多少乱暴な気がしますが、これでもう暫く様子を見てみることにします。

2020年1月12日日曜日

phantomjsからchromiumのheadlessモードへ引っ越す

今まで、livedoorブログやfc2ブログなどの定期監視にphantomjsを使っていました。
 本来ならwgetが使えればよいのですが、最近のブログサービスはjavascriptバリバリで、javascriptを解さないUAでは意味のあるHTMLソースを取得できません。
そんな中、FreeBSDのjail環境上で比較的軽量に動くphantomjsは大変重宝していました。

phantomjsはすでにプロジェクトが終了しているので、そのうち代替のソリューションに乗り換えなければ、とは思っていました。
そうこうしているうちに、phantomjsがFreeBSDのportsから削除されました、容赦なく。
メンテナンスのために、pkg update/upgradeしたら削除されてしまいました、マジか。

phantomjsが打ち切られた理由の一つに、chromeにheadlessモードが追加されたことがあるようです。
chromeは、FreeBSD向けにはビルド済みバイナリは提供されていませんが、chromeのコミュニティ版であるchromiumならばpkg形式で提供されています。

ということで、chromiumのheadless機能を使ってphantomjsの代替にしたいと思います。

google検索をかけると、seleniumやWebDriverに関して書かれた記事がたくさん引っかかるのですが、私が欲しいのは「javascriptを解するwget」ですので、chromiumだけでjavascript実行後のHTMLソースを取得してみたいと思います。

まずはchromiumの導入から。
pkg install chromium
これでchromiumがインストールされます。
インストールに伴い、chromium以外にも依存関係のあるライブラリ群も導入されます。
まっさらなjail環境にインストールすると、ライブラリ等含め、1GB程度のディスクスペースが必要なようです。

インストールが済んだら、以下のようにしてheadlessモードで動作するか確認します。
chrome --headless --disable-gpu --dump-dom https://www.kishiro.com/ > ./result.html
これでchromiumが持つDOMのデータをHTML形式で取得できます。

Xの設定とか色々いるのかと思いきや、普通にコマンドラインで動きますね。
確かにphantomjsの開発意義が失われてしまう感じかも。

なお、chromeはブラウザを終了させてもプロセスが残ることがあり、上記のようなコマンドをシェルスクリプトで連続して呼び出した場合、残ったプロセスによりchromeがうまく起動しない場合があります。
この場合には「--disable-background-mode」 を指定するとよいです。

ということで、chromiumのheadlessモードでphantomjsの代替はできそうです、よかった。

最後に、phantomjsの作者さん、今までどうもありがとう!

2019年11月22日金曜日

Xubuntuの「システムプログラムの問題が見つかりました」のダイアログ表示対策

家ではXubuntuを使っているのですが、最近ログインした後に、
システムプログラムの問題がみつかりました
というダイアログが表示されるようになりました。
 調べて見ると、「/var/crush」にcoreがダンプされていると、この表示が出るようです。
ということで、
 suro rm /var/crash/*
でcoreファイルを削除して再起動、これでダイアログが出なくなりました。
暫くこれで様子をみてみることにします。

2019年11月21日木曜日

Macで「エラー22 - 引数が無効です。」と表示されるzipファイルを開く

仕事でMacを使っているのですが、たまに取引先から送られてくるzipファイルが開けないことがあります。

アーカイブユーティリティでは「エラー22 - 引数が無効です。」と表示されて展開できない。
ターミナルでunzipを使って展開しようとすると「Illegal byte sequence」のエラーメッセージが表示されて展開されない。

いろいろ調べてみると、アーカイブ内のファイルの名前に日本語(Shift-JIS)が使われていると発生するようです。

google先生に聞いてみましたが、同じ問題に遭遇している方はいるみたいで、unzipの代わりにdittoを使うと良いみたいですね。

https://github.com/CocoaPods/CocoaPods/issues/7711

こんな感じで、zipアーカイブを展開できます。
ditto -V -x -k --sequesterRsrc --rsrc FILENAME.ZIP ./
パスワード付きのzipファイルなら、
ditto -V -x -k --sequesterRsrc --password --rsrc FILENAME.ZIP ./
です。

無事に展開そうで、開けました。

2019年10月13日日曜日

自宅サーバをjail環境を含めて11.3-RELEASEへアップグレード


自宅サーバをFreeBSDで運用しているのですが、忙しさにかまけてアップグレードを怠っていたので、三連休を利用してOSをアップグレードしました。

FreeBSD 11.2-RELEASEから11.3-RELEASEへ、jail環境も含めてアップグレードします。
まずはjailer(ホスト環境)から。
freebsd-update -r 11.3-RELEASE upgrade
freebsd-update install
reboot
続いて、prisoner(ゲスト環境)を更新します。
jexecでprisonerにダイブしてから作業するのかと思いきや、jailer側から更新可能なのですね。
setenv UNAME_r 11.2-RELEASE

freebsd-update -b /home/jail/prisoner1 -r 11.3-RELEASE upgrade
freebsd-update -b /home/jail/prisoner2 -r 11.3-RELEASE upgrade
freebsd-update -b /home/jail/prisoner3 -r 11.3-RELEASE upgrade
freebsd-update -b /home/jail/prisoner4 -r 11.3-RELEASE upgrade

freebsd-update -b /home/jail/prisoner1 install
freebsd-update -b /home/jail/prisoner2 install
freebsd-update -b /home/jail/prisoner3 install
freebsd-update -b /home/jail/prisoner4 install
ここまででカーネルの更新がされるので(prisonerなのでいらないけど)、続いてベースシステムを更新します。
unsetenv UNAME_r

freebsd-update -b /home/jail/prisoner1 install
freebsd-update -b /home/jail/prisoner2 install
freebsd-update -b /home/jail/prisoner3 install
freebsd-update -b /home/jail/prisoner4 install
終わったら、以下のようにしてprisonerを再起動させます。
/etc/rc.d/jail restert
jexecでprisoner環境にダイブし、freebsd-versionで更新後のバージョンが表示されればOKです。

2019年8月13日火曜日

BUFFALO BS-G2008MRのファームウェア更新

だいぶ前に秋葉原で入手したものの、しばらく放置していたBUFFALO BS-G2008MR。
これを設定して使えるようにすべく、まずはファームウェアのアップデートからはじめてみます。

必要なものは以下の3つです。

・シリアルポートがついたWindows PC
・インターリンク(クロス)ケーブル
・UTPケーブル

PCのシリアルポートとはストレートではなく、インターリンク(クロス)ケーブルで接続します。
シリアルポートへのアクセスには、Tera Term(SSHに対応している新しい方)を使います。
シリアルポートの設定は、Tera Termのデフォルトのままでよく、特に弄る必要はありませんでした。

シリアルコンソールからは、ID/パスワードは「admin」「」でログイン可能です。
設定方法はメニュー形式で、このあたりはコンシューマ向けの製品をたくさん手がけているBUFFALOならではな感じがします。

BS-G2008GRのファームウェアのアップデートでは、PCの方にTFTPサーバを動かし、BS-G2008MRからUTPケーブルでPCの方にファームウェアを取りに行く仕組みのようです。

BS-G2008MRのIPアドレスは、デフォルトで192.168.1.254が割り当てられているようなので、PC側も同じく192.168.1.?を割り当てます。

TFTPサーバのソフトウェアは、CISCO TFTPを使いました。
TFTPサーバのルートディレクトリにファームウェアを配置し、BS-G2008MRのシリアルコンソールからPCのIPアドレスと取得するファームウェアのファイル名を指定してやります。

TFTPのファイル転送に5分くらいかかりましたが、転送が終わるとシリアルコンソール側で確認画面が表示され、そこでYESを選択すると、更新プロセスが走り、しばらくすると更新が完了しました。

2019年2月28日木曜日

ENEOSでんきでクレジットカードの決済が失敗した話

突然やってきた請求書

先日、サービス開始から利用しているENEOSでんき(の運営会社である、JXTGエネルギー)から、クレジットカードの決済が出来なかったので料金をコンビニなどで払って下さい、という手紙が来ました。

請求金額は32,000円あまり。

新手の振り込め詐欺かと思い、コールセンターに電話したところ、確かに自社で発行したものとのことでした。

 請求書が来たわけ

クレジットカード決済ができなかった理由を詳しく聞いてみると、

・私が支払用に登録したクレジットカードの有効期限が切れている。
・30,000円未満の決済では、クレジットカードの有効期限は確認されないので、今までは料金の決済が出来ていた。
・今回の請求は30,000円を超えていたため、有効期限のチェックで引っかかり、決済ができなかった。

との回答を頂きました。

足りなかった回避策

そんなこともあるのかなーと思いましたが、クレジットカードの有効期限についてはクレジットカード情報の一部として登録している為、定期的にチェックして有効期限が切れた場合にお客さまに通知をすることも出来ます。

そのような取り組みをしていないのか確認したところ、2018/04からクレジットカードの有効期限が直近で切れるお客さまに手紙でお知らせしているとのことでした。
但し、それ以前に有効期限が切れたお客さまについては、ご連絡ができていないとのこと。

私が登録していたクレジットカードの有効期限は2017/05だったので、まさに嵌まるケースだったというわけです。

一方で、JXTGエネルギーがクレジット会社の加盟店になっていれば、カード会社とシステム連携してカードの更新の際に新しい有効期限を知ることが可能です。
(Amazonとかヨドバシ.comとかに登録したクレジットカードの有効期限がいつのまにか更新されているのも、この仕組みによります。)

但し、私が使っていたクレジットカード(セゾンカード)については、加盟店になっておらず、クレジットカードの有効期限は自動的に更新されないとのことでした。

ご参考までに、ENEOSでんきの支払いで利用できるクレジットカードのうち、
ANAカード
ビューカード
TS CUBICカード
レクサスカード
エポスカード
MIカード
 については加盟店になっているそうで、クレジットカードの有効期限は自動的に更新されるとのことです。(2019/02末時点)

不満が募ったリカバリー方法

今回クレジットカード決済失敗した分については、クレジットカードの情報を再登録して、再度クレジットカードで引き落としてもらうようお願いしたのですが、どうしても送った振込票で支払ってくれととのことで、渋々ATMで現金をおろしてコンビニの窓口で払いました。

有効期限が切れたカードの情報をそのままにしていた私も悪いのですが、それを更新する試みをせずに古い情報で決済し続けるのもどうかなと思います。

正直なところ、不手際の責任を一方的に転嫁されたような気がして、あまり気持ちは良くなかったです…

改善のご提案

文句はこれぐらいにしますが、今回のケースでは、2018/04に新しい運用を始めた際に、既に有効期限が切れているクレジットカード情報も抽出して、合わせてお知らせすればよかったのではないかと思います。

あと、クレジットカード決済が失敗した際には、メール等で周知し、「○○日までにクレジットカード情報を登録し直していただければ、再度クレジットカードで決済します」みたいな運用を作っていただければ、コンビニ払いも不要で、不満も出ないのではないかと思います。

加えて、有効期限が自動更新されるクレジットカードのバリエーションがまだまだ足りない気がします。
銀行系や流通系のカードとか全然網羅できてないですし。

お客さまセンターのご担当者の方も仰っていましたが、他のお客さまからもクレームを頂いていて、お客さまによっては解約されてしまうとのこと。
このままの状態にしておくのは良くないと思います。

また、ハガキでお知らせしても見ない人は多いと思うので、是非ともメールでの通知とクレジットカードでの再引き落としの機能を作って頂きたいです。

上記のご要望については、お客さまセンターのご担当者様にはお電話でお伝えしましたが、こういう声はなかなか会社内で上がりにくいんですよね。
もしこのページをご覧の方に、ENEOSでんきのサービス担当者様がいらっしゃいましたら、ご検討のほど宜しくお願いします。


今回の問題については、他山の石として、私自身がサービスやシステムを企画・設計する際の教訓としたいと思います。



【備考】

裏取りのために、セゾンカード(の提供元であるクレティセゾン)にも照会しましたが、
・今回、決済できなかった理由はクレジットカードの有効期限の誤りが原因。
・有効期限が変更になった場合には、原則として利用者が契約している各社に対して変更の届け出をするよう、お願いしている。
・契約がある会社に対しては、クレジットカードの有効期限を自動更新する仕組みを提供している。
・但し、この仕組みを利用して登録済みクレジットカード情報の有効期限を自動更新するか否かは個々の会社の判断に委ねており、自動更新しないポリシーの会社もある。
との回答をいただきました。

後ろ2つについては、こちらから特に聞いていないのにご回答頂けたので、恐らくお客さまからのお問い合わせが多い事象なのではないかと思います。