techlog.kishiro.comtechlog.kishiro.com2020年1月12日日曜日phantomjsからchromiumのheadlessモードへ引っ越す今まで、livedoorブログやfc2ブログなどの定期監視にphantomjsを使っていました。本来ならwgetが使えればよいのですが、最近のブログサービスはjavascriptバリバリで、javascriptを解さないUAでは意味のあるHTMLソースを取得できません。そんな中、FreeBSDのjail環境上で比較的軽量に動くphantomjsは大変重宝していました。phantomjsはすでにプロジェクトが終了しているので、そのうち代替のソリューションに乗り換えなければ、とは思っていました。しているうちに、phantomjsがFreeBSDのportsから削除されました、容赦なく。update/upgradeしたら削除されてしまいました、マジか。phantomjsが打ち切られた理由の一つに、chromeにheadlessモードが追加されたことがあるようです。chromeは、FreeBSD向けにはビルド済みバイナリは提供されていませんが、chromeのコミュニティ版であるchromiumならばpkg形式で提供されています。いうことで、chromiumのheadless機能を使ってphantomjsの代替にしたいと思います。google検索をかけると、seleniumやWebDriverに関して書かれた記事がたくさん引っかかるのですが、私が欲しいのは「javascriptを解するwget」ですので、chromiumだけでjavascript実行後のHTMLソースを取得してみたいと思います。chromiumの導入から。chromiumこれでchromiumがインストールされます。インストールに伴い、chromium以外にも依存関係のあるライブラリ群も導入されます。まっさらなjail環境にインストールすると、ライブラリ等含め、1GB程度のディスクスペースが必要なようです。インストールが済んだら、以下のようにしてheadlessモードで動作するか確認します。./result.htmlこれでchromiumが持つDOMのデータをHTML形式で取得できます。Xの設定とか色々いるのかと思いきや、普通にコマンドラインで動きますね。確かにphantomjsの開発意義が失われてしまう感じかも。chromeはブラウザを終了させてもプロセスが残ることがあり、上記のようなコマンドをシェルスクリプトで連続して呼び出した場合、残ったプロセスによりchromeがうまく起動しない場合があります。いうことで、chromiumのheadlessモードでphantomjsの代替はできそうです、よかった。家ではXubuntuを使っているのですが、最近ログインした後に、システムプログラムの問題がみつかりましたというダイアログが表示されるようになりました。調べて見ると、「/var/crush」にcoreがダンプされていると、この表示が出るようです。/var/crash/*でcoreファイルを削除して再起動、これでダイアログが出なくなりました。これで様子をみてみることにします。」と表示されるzipファイルを開く仕事でMacを使っているのですが、たまに取引先から送られてくるzipファイルが開けないことがあります。」と表示されて展開できない。sequence」のエラーメッセージが表示されて展開されない。調べてみると、アーカイブ内のファイルの名前に日本語(Shift-JIS)が使われていると発生するようです。google先生に聞いてみましたが、同じ問題に遭遇している方はいるみたいで、unzipの代わりにdittoを使うと良いみたいですね。https://github.com/CocoaPods/CocoaPods/issues/7711こんな感じで、zipアーカイブを展開できます。無事に展開そうで、開けました。自宅サーバをjail環境を含めて11.3-RELEASEへアップグレード自宅サーバをFreeBSDで運用しているのですが、忙しさにかまけてアップグレードを怠っていたので、三連休を利用してOSをアップグレードしました。11.2-RELEASEから11.3-RELEASEへ、jail環境も含めてアップグレードします。jailer(ホスト環境)から。installreboot続いて、prisoner(ゲスト環境)を更新します。jexecでprisonerにダイブしてから作業するのかと思いきや、jailer側から更新可能なのですね。installここまででカーネルの更新がされるので(prisonerなのでいらないけど)、続いてベースシステムを更新します。install終わったら、以下のようにしてprisonerを再起動させます。restertjexecでprisoner環境にダイブし、freebsd-versionで更新後のバージョンが表示されればOKです。BS-G2008MR。これを設定して使えるようにすべく、まずはファームウェアのアップデートからはじめてみます。必要なものは以下の3つです。PC・インターリンク(クロス)ケーブル・UTPケーブルPCのシリアルポートとはストレートではなく、インターリンク(クロス)ケーブルで接続します。Term(SSHに対応している新しい方)を使います。Termのデフォルトのままでよく、特に弄る必要はありませんでした。シリアルコンソールからは、ID/パスワードは「admin」「」でログイン可能です。設定方法はメニュー形式で、このあたりはコンシューマ向けの製品をたくさん手がけているBUFFALOならではな感じがします。BS-G2008GRのファームウェアのアップデートでは、PCの方にTFTPサーバを動かし、BS-G2008MRからUTPケーブルでPCの方にファームウェアを取りに行く仕組みのようです。BS-G2008MRのIPアドレスは、デフォルトで192.168.1.254が割り当てられているようなので、PC側も同じく192.168.1.?を割り当てます。TFTPを使いました。TFTPサーバのルートディレクトリにファームウェアを配置し、BS-G2008MRのシリアルコンソールからPCのIPアドレスと取得するファームウェアのファイル名を指定してやります。TFTPのファイル転送に5分くらいかかりましたが、転送が終わるとシリアルコンソール側で確認画面が表示され、そこでYESを選択すると、更新プロセスが走り、しばらくすると更新が完了しました。先日、サービス開始から利用しているENEOSでんき(の運営会社である、JXTGエネルギー)から、クレジットカードの決済が出来なかったので料金をコンビニなどで払って下さい、という手紙が来ました。請求金額は32,000円あまり。新手の振り込め詐欺かと思い、コールセンターに電話したところ、確かに自社で発行したものとのことでした。・私が支払用に登録したクレジットカードの有効期限が切れている。・30,000円未満の決済では、クレジットカードの有効期限は確認されないので、今までは料金の決済が出来ていた。・今回の請求は30,000円を超えていたため、有効期限のチェックで引っかかり、決済ができなかった。足りなかった回避策そんなこともあるのかなーと思いましたが、クレジットカードの有効期限についてはクレジットカード情報の一部として登録している為、定期的にチェックして有効期限が切れた場合にお客さまに通知をすることも出来ます。そのような取り組みをしていないのか確認したところ、2018/04からクレジットカードの有効期限が直近で切れるお客さまに手紙でお知らせしているとのことでした。それ以前に有効期限が切れたお客さまについては、ご連絡ができていないとのこと。私が登録していたクレジットカードの有効期限は2017/05だったので、まさに嵌まるケースだったというわけです。一方で、JXTGエネルギーがクレジット会社の加盟店になっていれば、カード会社とシステム連携してカードの更新の際に新しい有効期限を知ることが可能です。(Amazonとかヨドバシ.comとかに登録したクレジットカードの有効期限がいつのまにか更新されているのも、この仕組みによります。)但し、私が使っていたクレジットカード(セゾンカード)については、加盟店になっておらず、クレジットカードの有効期限は自動的に更新されないとのことでした。CUBICカードレクサスカードエポスカードMIカードについては加盟店になっているそうで、クレジットカードの有効期限は自動的に更新されるとのことです。今回クレジットカード決済失敗した分については、クレジットカードの情報を再登録して、再度クレジットカードで引き落としてもらうようお願いしたのですが、どうしても送った振込票で支払ってくれととのことで、渋々ATMで現金をおろしてコンビニの窓口で払いました。有効期限が切れたカードの情報をそのままにしていた私も悪いのですが、それを更新する試みをせずに古い情報で決済し続けるのもどうかなと思います。文句はこれぐらいにしますが、今回のケースでは、2018/04に新しい運用を始めた際に、既に有効期限が切れているクレジットカード情報も抽出して、合わせてお知らせすればよかったのではないかと思います。あと、クレジットカード決済が失敗した際には、メール等で周知し、「○○日までにクレジットカード情報を登録し直していただければ、再度クレジットカードで決済します」みたいな運用を作っていただければ、コンビニ払いも不要で、不満も出ないのではないかと思います。加えて、有効期限が自動更新されるクレジットカードのバリエーションがまだまだ足りない気がします。銀行系や流通系のカードとか全然網羅できてないですし。お客さまセンターのご担当者の方も仰っていましたが、他のお客さまからもクレームを頂いていて、お客さまによっては解約されてしまうとのこと。このままの状態にしておくのは良くないと思います。ハガキでお知らせしても見ない人は多いと思うので、是非ともメールでの通知とクレジットカードでの再引き落としの機能を作って頂きたいです。上記のご要望については、お客さまセンターのご担当者様にはお電話でお伝えしましたが、こういう声はなかなか会社内で上がりにくいんですよね。このページをご覧の方に、ENEOSでんきのサービス担当者様がいらっしゃいましたら、ご検討のほど宜しくお願いします。今回の問題については、他山の石として、私自身がサービスやシステムを企画・設計する際の教訓としたいと思います。・今回、決済できなかった理由はクレジットカードの有効期限の誤りが原因。・有効期限が変更になった場合には、原則として利用者が契約している各社に対して変更の届け出をするよう、お願いしている。・契約がある会社に対しては、クレジットカードの有効期限を自動更新する仕組みを提供している。・但し、この仕組みを利用して登録済みクレジットカード情報の有効期限を自動更新するか否かは個々の会社の判断に委ねており、自動更新しないポリシーの会社もある。回答をいただきました。後ろ2つについては、こちらから特に聞いていないのにご回答頂けたので、恐らくお客さまからのお問い合わせが多い事象なのではないかと思います。共有2019年1月15日火曜日Nexus5XをLineageOS導入済みの状態から工場出荷状態に戻すLineageOSをインストールして使っているNexus5Xですが、どういう理由か、LineageOSのアップデートが適用できなくなってしまいました。アップデートのダウンロードはできて、インストールも選択できるのですが、TWRPの画面で「zipのシグネチャが違う」と言われてエラーになります。何が原因かわからないのですが、色々試行錯誤するよりは、また一からLineageOSを導入したほうが早そうなので、そのようにしたいと思います。試してみたいと思います。やり方は、こんな感じです。Devicesから最新のファクトリーイメージをダウンロードします。2019/01/15現在の最新のイメージは「bullhead-opm7.181205.001-factory-5f189d84.zip」でした。このzipファイルの中にあるradio-bullhead-m8994f-2.6.42.5.03.imgbootloader-bullhead-bhz32c.imgと、更にその中にある、「image-bullhead-opm7.181205.001.zip」の中の、boot.imgrecovery.imgsystem.imgvendor.imgの合計6ファイルを取り出します。次に、本体の電源を切った後、音量小ボタンを押した状態で電源ボタンを押し、fastbootモードに入ったら、以下のようにしてそれぞれのイメージを焼きこんで行きます。system.imgすべてのファイルの焼き込みが完了したら、以下のようにしてシステムを再起動させます。スプラッシュ画面が続きます。端末の使用状況によっては、うまく起動できない旨のエラーメッセージが表示される場合があります。エラーメッセージに続いて、工場出荷状態に戻すかの選択肢が出てくるので、YESを選択してください。再起動後、また数分間起動のスプラッシュ画面が続き、うまく行けば、初期設定の画面が表示されます。