pslaboが試したことの記録

はてなダイヤリーからはてなブログに引っ越してきました

この日記は現在実行中の減量記録を含む個人的なメモとして始めましたが、最近はコンピュータやガジェット、ハック、セキュリティネタのほうがメインになっております。

はてなダイヤリー時代はカテゴリ分けが適当だったのですが、これはそのうち直します。


調査中:VMware Fusion で仮想マシンのマウス位置がずれる

以前からmacOS上のVMware Fusion仮想マシンのマウス位置がずれる問題が出ていて、未だに解決できずにいます。

症状

マウスが表示される位置でクリックやドラッグが操作できず、表示位置より右下の箇所が操作対象になる。

類似の事例をあまり見つけられていないのですが、こちらの記事の内容は、私の環境で起きている状況と同じだと思います。

tech.virtualtech.jp

ずれる条件

自分の環境でMacbook proRetinaディスプレイVMware Fusionを表示すると必ずズレる。

これも前述の記事と同じ。

とりあえずの回避策

QuickResRetinaディスプレイの解像度をHiDPIではなくStandardから選択するとズレが解消する。要するにRetinaディスプレイRetinaの表示をさせなければよい、という解決策です。

たとえばこんなふうに操作します。

f:id:pslabo:20200416101431p:plain

ただし、これは根本的な解決策ではないので、正しく問題解決させたいのだけど、方法が全くわからない。

あるいは、QuickResを使わずに画面解像度をStandardにできる方法、特にコマンドラインから変更する方法があればよいのですが、それもちょっとよくわからない。

秒数を 時:分:秒 のフォーマットに変換するbashスクリプト

とある処理プログラムの所要時間が秒単位で出力されるように実装されていて、しかしその処理時間は数十分に及ぶこともあるため、実際の処理時間が直感的に分かりづらいという状況がありました。そこで秒数を入力したら時:分:秒 のフォーマットで出力するスクリプトを用意することにしました。

といっても、ゼロから書くのは面倒なので、こちらのスクリプトを参考にしつつ、echo で出力している箇所を printf に置き換えてみました。もとのスクリプトは時、分、秒の数値をそのまま出力していますので、0:1:3 のように一桁の数値が交じると見づらかったのですが、printf で %02d にフォーマットすることで見やすくなりました。

qiita.com

#!/bin/bash
#
# original from https://qiita.com/hryshtk/items/fc46b2e2d8c13016e0d4
#

if [ $# -eq 2 ]; then
    start_time=$1
    end_time=$2
elif [ $# -eq 1 ]; then
    start_time=0
    end_time=$1
fi

diff=$((end_time - start_time))
let day="$diff / 86400"
let diff="$diff % 86400"
let hour="$diff / 3600"
let diff="$diff % 3600"
let minute="$diff / 60"
let second="$diff % 60"
printf "%dday %02d:%02d:%02d\n" ${day} ${hour} ${minute} ${second}

NHKプラスに関連するサーバを軽く探る

NHKプラスの試験配信が今日から始まったので、関係しそうなサーバをかるく探ってみます。

ちなみに、NHKプラスへの申し込み後に送付されるメールが届くまでの遅延時間は、3/1 18時の時点では、およそ40分くらいありました。そのうち短くなると思いますが、すぐにはメールが届かないものと思ってのんびり構えているのが良い様です。

NHKプラス公式サイト

https://plus.nhk.jp/plus.nhk.jp

nslookup してみると、IPアドレスAkamaiでした。いまどきの大規模サービスがCDNを使うのは普通のことですから、特に違和感なし。

$ nslookup plus.nhk.jp
Server:     192.168.1.128
Address:    192.168.1.128#53

Non-authoritative answer:
plus.nhk.jp canonical name = plus.nhk.jp.edgekey.net.
plus.nhk.jp.edgekey.net canonical name = e____.dsca.akamaiedge.net.
Name:   e____.dsca.akamaiedge.net
Address: 23.___.___.___

NHKプラスログインページ

NHKプラスのログイン処理はこちらのサーバで行われている様です。 https://login.auth.nhkid.jp:login.auth.nhkid.jp:

こちらもAkamaiかなあと思って調べてみましたが、IPアドレスが全く違う。

$ nslookup login.auth.nhkid.jp
Server:     192.168.1.128
Address:    192.168.1.128#53

Non-authoritative answer:
Name:   login.auth.nhkid.jp
Address: 202.247.104.97

IPアドレスwhoisを引いてみたら、NECのIBARAKI-DCという情報が返されるけど、本当に茨城にあるかどうかはアテににならない。とりあえずNECに割り当てられたIPアドレスで運用していることだけはわかります。

ちなみに、NHKプラスの申し込み後に送信されるメールのメールサーバのIPアドレスも、こちらのレンジに含まれていました。

$ whois 202.247.104.97
% IANA WHOIS server
% for more information on IANA, visit http://www.iana.org
% This query returned 1 object

refer:        whois.apnic.net 

inetnum:      202.0.0.0 - 202.255.255.255
organisation: APNIC
status:       ALLOCATED

(略)

inetnum:        202.247.104.0 - 202.247.104.255
netname:        IBARAKI-DC
descr:          NEC / Service Deliverly Division
country:        JP
admin-c:        JP00020390
tech-c:         JP00020390
remarks:        This information has been partially mirrored by APNIC from
remarks:        JPNIC. To obtain more specific information, please use the
remarks:        JPNIC WHOIS Gateway at
remarks:        http://www.nic.ad.jp/en/db/whois/en-gateway.html or
remarks:        whois.nic.ad.jp for WHOIS client. (The WHOIS client
remarks:        defaults to Japanese output, use the /e switch for English
remarks:        output)
last-modified:  2017-10-27T23:38:06Z
source:         JPNIC

% This query was served by the APNIC Whois Service version 1.88.15-47 (WHOIS-JP3)

ビデオストリームの配信サーバ

ビデオ再生中は live-cdn1-origin1.hsk.nhk.jp というサーバと通信していました。こちらはnslookupするとIIJのエッジサーバへのCNAMEが設定されているようでした。

$ nslookup live-cdn1-origin1.hsk.nhk.jp
Server:     192.168.1.128
Address:    192.168.1.128#53

Non-authoritative answer:
live-cdn1-origin1.hsk.nhk.jp    canonical name = nhk-edge00.kedge.iijcdn.jp.
Name:   nhk-edge00.kedge.iijcdn.jp
Address: 202.232.224.7
Name:   nhk-edge00.kedge.iijcdn.jp
Address: 202.232.224.1

OpenWRT 19.07.1 にアップデートする

OpenWRT 19.07.1 が2020/1/30にリリースされていたのに気づいていなかったのでアップデートすることにします。

openwrt.org

時期的に krook 対応のアップデートは含まれていないと思うので、コレについては今後のアップデート待ち。

ここから自分のデバイス向けのsysupgradeイメージを入手して、Web UIなどからアップデートするだけです。 openwrt.org

アップデート後はパッケージ構成がデフォルトの状態に戻ってしまうので、最低限、日本語UIにするためにluci-i18n-base-jaを追加します。

opkg install luci-i18n-base-ja

また、opkg list-upgradableでリストアップされたパッケージを必要に応じてopkg upgrade [パッケージ名] でアップグレードすればアップデートは完了。

タッチパネル不良のiPad Proを修理に出した件のその後の話

先日、タッチパネル不良のiPad Proを修理に出そうとしたら、修理対応はできず、交換用製品との交換になるという話を書いた。

pslabo.hatenablog.com

その件のその後の話があるのでまとめておく。

2020/2/19 交換用の製品が店舗に入荷との連絡あり

単なる連絡なので特にコメントすることはないけれど、1週間以内に店舗を再訪する必要がありました。 1週間以内に店舗訪問できない場合は訪問可能な日を連絡する必要があるそうです。

2020/2/22 店舗で交換用製品を受け取る

故障機は店舗での交換に先立ってバックアップと初期化を実施しておきました。 また店舗での交換時には、あらためてその場で初期化を実施し、完全に綺麗な状態であることがわかるようにしました。

店舗での受け取り時には交換用製品の動作を簡単にテストして問題がないことを確認しました。(タッチパネルが正しく反応することや、Apple Pencilで描けること)

iPad ProはCellularモデルだったので、Apple Storeのスタッフが故障機からSIMカードを外してくれましたが、ただそれだけ。 紛失するのがいやなので交換用製品に自分で装着しようとしたところで、スタッフが代わりにそれを行なってくれましたが、硬い机の上で中途半端に保護用の布を広げて作業されていて、せっかくの綺麗な状態の交換用製品に傷が入りそうな感じがして、ちょっとだけ嫌な感じ。これは正直、スタッフの当たり外れの問題なのだけど、もうちょっとちゃんとしてほしい気がした。

2020/2/22 バックアップから復元して様子をみる

バックアップデータが原因でタッチパネル不良の問題が再発することが懸念されますが、いったんバックアップから復元して様子を見ることにしました。

ちなみに交換用製品にバックアップを戻す前に、OSを13.3.1にアップデートする必要がありました。 故障した本体はiPadOS 13.3.1にアップデート済みでしたが、交換用製品はiPadOS 13.3でした。

2020/2/22 SIMロック解除の手続きを行う

交換前のiPad ProはSIMロック解除を実施していたので、交換後のiPad Proも同様にSIMロック解除しておくことにします。

手元のiPad Proはドコモ版なので、こちらの手順でSIMロック解除の手続きを完了させました。

pslabo.hatenablog.com

ブラウザ上で選択した文字列をSalesforceで検索するブックマークレット

先日、こういう設定をChromeに行いまして、その場でキーワードを入力して検索する分にはこれで十分に役に立っているのですが、たとえば Gmailで表示中のメールに含まれる顧客情報をSalesforceで検索するのに、いちいちコピーして検索するのが面倒だなあと思い始めました。

pslabo.hatenablog.com

そこで、ブラウザで選択した文字列を検索できるプックマークレットを作ろうと考えました。

しかしゼロからフルスクラッチで作るのも微妙に面倒なので、似たようなブックマークレットを探して改変することにします。

似たようなものとして既にありそうな事例は、選択した文字列でGoogle検索する、という方法だと思いまして調べてみると、それなりに実装例が見つかります。それを参考にしながら以下のように実装したら目的通りに動いたので、これをブックマークに登録して使うことにします。

javascript:(function(){
    var q = window.getSelection ? window.getSelection().toString() : document.selection.createRange().text;
    if ( q.length > 0 ) {
        var g = '[Salesforceの検索リンク]' + q;
        window.open(g);
    }
})();

動作確認はChromeだけで行ってます。IEその他での動作は確認していません。

参考にしたコードはこちら。

www.suzushin7.jp

ブラウザを起動時からプライベートモードで利用する設定

Webアプリケーションの挙動をテストするときに、コンテンツのキャッシュやCookieがないキレイな状態から始めたい場合があります。しかしブラウザを起動時からプライベートモードやシークレットモードで動かす方法はブラウザごとに違うので整理してみました。

ブラウザ 設定方法
Firefox privatebrowsing.autostastをtrueに設定する
Chrome 起動時オプションに --incognito を指定する
Safari 環境設定の"一般"より"Safariの起動時"の設定を"新規プライベートウィンドウ"に設定する
Internet Explorer コマンドラインパラメータに -privateをつけて起動する
Edge (EdgeHTML) コマンドラインパラメータに -private をつけて起動する
Edge (Chronium) コマンドラインパラメータに--inprivateをつけて起動する

こうしてみると、Firefoxの設定を変えてテスト専用のブラウザとして運用するのが自分には向いているように思いました。マルチプラットフォームで利用できるし、デフォルトでプライベートモードで起動する設定が作れる点がよいと思います。

ただ、ChromeInternet Explorer, Edgeもコマンドラインパラメータに足すだけなので、プライベートモード用のショートカットを作っておけば使い分けは難しくありません。

Safariは開発専用のmacOSを用意できるならアリだけど、そうではないならちょっと微妙かもしれないと感じています。