セブンイレブンアプリのログイン時のエラーについて

初回ログイン時、7iDとパスワードを入力したあと、

エラー
エラーが発生しました。カスタマーセンターにお問い合わせください。
OK

のポップアップ表示となった場合は、アプリをアンインストール/再インストールしてみると治る場合があるようです。

ROBOCOPYでディレクトリのタイムスタンプが維持できない時

ROBOCOPYのオプションには、ディレクトリに対するコピーフラグがあり、次のような感じになっています。

/DCOPY:コピーフラグ…ディレクトリにコピーする情報 (既定値は /DCOPY:DA)
(コピーフラグ: D= データ、A= 属性、T= タイムスタンプ)

なので、タイムスタンプを維持したいときは、/DCOPY:DTとか、/DCOPY:DATとかやると思います。

しかし、いくつかのOSバージョン(XPから10/2018まで)で試してみたところ、このオプション(フラグT)はWin8.xまたはWin2016以降でないと有効に働かないように見えます(他にも細かい不具合があり、8.1以降/2018以降でやっとまともになった感じです)。

ちなみに、大量のフォルダ/ファイルをコピーするときには、/MTで並列度を上げるよりも、

  • 管理者権限のDOS窓を複数開く
  • スレッド数はある程度抑える(様子を見ながら増減)
  • 各窓でマウントするNETBIOS名は変える(注※)

方が、トータルの速度は上がるようです。

注※(実効コピー速度を上げる方法)

例えば、10.0.0.1という共有サーバを

net use x: \\10.0.0.1\share1 ...
net use y: \\10.0.0.1\share2 ...

という形でマウントし、X:からY:へコピーをするよりも、C:\Windows\System32\drivers\hosts 内で

# 同じCIFS共有ドライブを複数のNETBIOS名で定義する
10.0.0.1   CIFSx
10.0.0.1   CIFSy

とし、

net use x: \\CIFSx\share1 ...
net use y: \\CIFSy\share2 ...
robocopy x: y: ...

とした方が、断然速いです。

このshare1からshare2へのコピーの並列度を上げる場合は、C:\Windows\System32\drivers\hosts 内で

10.0.0.1   CIFSx1
10.0.0.1   CIFSx2
10.0.0.1   CIFSx3
10.0.0.1   CIFSy1
10.0.0.1   CIFSy2
10.0.0.1   CIFSy3

のように定義し、

net use j: \\CIFSx1\share1 ...
net use k: \\CIFSx2\share1 ...
net use l: \\CIFSx3\share1 ...
net use m: \\CIFSy1\share2 ...
net use n: \\CIFSy2\share2 ...
net use o: \\CIFSy3\share2 ...

としてマウントしたあと、管理者権限のDOS窓を開いて

# 窓1で実行
robocopy j:\sub1 m:\sub1 ...
# 窓2で実行
robocopy k:\sub2 n:\sub2 ...
# 窓3で実行
robocopy l:\sub3 o:\sub3 ...

というようにした方が、速いです。

※窓の数や、各窓内の/MT:nの値は、実環境で何パターンかテストして決めて下さい。

WebサイトのSSL化の時には中間証明書にも気をつけてあげて下さい

サーバ証明書を導入するときに、『中間証明書』なる記述があった場合は、忘れずにインストールしてあげて下さい。

インシデント

ちょっと前から、AWS(Amazon Web Services)上でLambdaとCloudWatchを使った『0円なんちゃってサーバ監視』を走らせています。その子が発報したので気付いた事象。

某サイトでSSL証明書の設定に誤りが起きたらしく、

var req = https.request(option, function (response) {…};

でエラーが検出されるようになってしまいました。

うまく行っていないとどうなるのか

自サイトで中間証明書のインストールを忘れていても、ブラウザの種類や、ブラウザが当該CAの中間証明書をキャッシュしていたりする場合は、特にエラーなどは表示されず、何事も無く普通に表示されてしまいます。ここが怖い所ですね。

従って、ブラウザの種類や、ブラウザのキャッシュ状態によっては、証明書のチェーンが正常に繋がっていないので、怪しいサイトと判定されてしまいます。

SEO的にも不利になるかも。

ブラウザを通さないアクセスは、当然エラーとなります。

確認方法(お手軽方法)

手元にLinux/UNIXやWSLの環境がある場合は、

wget https://サーバURL/トップページのファイル名

でエラーが出ずにダウンロードが完了すれば、大丈夫です。

rewrite等の設定によっては、

wget https://サーバURL/

の場合もあるでしょう。

確認方法(こちらがお勧め)

GlobalSignさん提供の、Qualysのチェックツールが使えます。

https://www.ssllabs.com/ssltest/ に移動して、入力欄にURLを記入します。
気になる方は『Do not show the results on the boards』にチェックを入れます。
Submitボタンをクリックします。
色々チェックしますので、暫く待ちます。

中間証明書がチェーン中に存在する場合は、『Additional Certificates (if supplied)』での判定がされます。『Chain issues』が『None』となればOKです。

総合判定がAになるように頑張りましょう。

Evernoteプレミアムをお得に

普通に契約すると毎月数百円かかりますが、ソースネクストさんの次のパッケージを使うとお得になります(2016用と書いてありますが、現行版で利用出来ることを2019/05/02に確認しました)。

パッケージ内に封入されているリンクに飛んで、書かれているコードを投入後、その画面からログインし、チャージされたポイントを有効期限に充当して下さい。有効期限が、1パッケージあたり、1年、延びます。

在庫限りと思われますので、Evernoteを長く使う予定があるなら、買い溜めしてまとめてチャージしてしまっても良いかもです。

AWS EC2 ブラウザでコンソール

GCPはブラウザなコンソールがインスタンス画面に統合されていますが、AWSでは、ぱっと見、どこにいるかがわかりにくい感じです。Proxy超えでsshを使うのも面倒だったので、繋ぎ方を調べてみた自分用メモです。

IAMロールの作成

コンソールアクセスを行うためのIAMロールを作成します。

  1. AWSコンソールからIAMを選択します

  2. ダッシュボードから、『ロール』を選択します


  3. IAMロールの概要画面で『ロールの作成』をクリックします


  4. サービス対象として『EC2』をクリックします


  5. EC2→EC2と辿り、『次のステップ:アクセス権限』をクリックします


  6. ポリシーのフィルター欄に『AmazonEC2RoleforSSM』を入力し、フィルタされたポリシーにチェックを入れ、『次のステップ:タグ』をクリックします


  7. タグの追加画面で『次のステップ:確認』をクリックします


  8. 確認画面の『ロール名』欄にロール名を投入し、『ロールの作成』をクリックします


  9. IAMロールが作成されました


既存インスタンスへのIAMロールの割り当て

※IAMロール作成後にインスタンスを作成する場合は、この段落はスキップして下さい

  1. インスタンス一覧から対象インスタンスを選択し、『アクション』→『インスタンスの設定』→『IAMロールの割り当て』と進みます

    ※この時点では、インスタンスのプロパティのIAMロールはブランクです(上記画像下部)

  2. IAMロール欄の下向き▲をクリック、前段落で作成したロール名を選択し、『追加』をクリックします


  3. ロール割り当て完了画面となります


新規インスタンスへのIAMロールの割り当て

新規インスタンスへ前々項で作成したIAMロールを割り当てます。

  1. インスタンス作成時、インスタンスタイプを選択後に『次の手順:インスタンスの詳細の設定』をクリックします


  2. IAMロールとして、前々項で作成したIAMロール名を指定し、『確認と作成』または『次の手順』に進み、インスタンスの作成を行います


SSMエージェントのアップデート

SSMエージェントのアップデートを行います。

  1. AWS Systems Managerから、『ランコマンド』を選択します


  2. コマンドの実行画面で、『コマンドの実行』をクリックします


  3. 検索欄に『AWS-UpdateSSMAgent』と入力し、コマンドをフィルタリングします
    フィルタされた『AWS-UpdateSSMAgent』をラジオボタンで選択→ターゲットインスタンスをチェック→『実行』をクリックします


ブラウザコンソールの起動

  1. AWS Systems Managerから、『セッションマネージャー』を選択し、『セッションの開始』をクリックします


  2. 対象インスタンスをラジオボタンで選択し、『セッションの開始』をクリックします


  3. 次のようなかんじになります

Netatmoの値をMRTGで表示してみる

Netatmoのデータ(温度・湿度)をMRTGでグラフ化してみます。

必要な物

  • MRTGな環境(手元にサーバがない場合は、AWSやGCPの無償枠でw)
  • curlとjq
  • Netatmo Weather Station(←Amazonへのリンク)
  • Netatmoのアカウント

Client idとClient secretの取得

※取得済みの場合はこの手順はパスして結構です。

  1. まずはNetatmo公式にログインします
    https://auth.netatmo.com/en-us/access/login
  2. 次にNetatmo Connectに移動します
    https://dev.netatmo.com/myaccount/createanapp
  3. CREATE AN APPをクリックします
  4. NameにはNetatmoのログイン用メアドを入力します
  5. Descriptionには適当な説明を入力します
  6. Data Protection Officer nameには自分の名前を入力します
  7. Data Protection Officer emailにはNetatmoのログイン用メアドを入力します
  8. I accept Netatmo APIs Terms and Conditionsにチェックを入れて、SAVEをクリックします
  9. Client idClient secretが表示されるので、記録します

データ取得用スクリプトの作成

適当な場所に適当な名前で次の内容のスクリプトを置きます。

#!/bin/sh
export LANG=C
temp=/tmp/netatmo.$$
export LANG=C
token=`curl -X POST https://api.netatmo.com/oauth2/token -d "grant_type=password&client_id=[前項で取得したClient id]&client_secret=[前項で取得したClient secret]&username=[Netatmoログインメアド]&password=[Netatmoログインパスワード]" | jq -r '.access_token'`
curl -X GET "https://api.netatmo.com/api/getstationsdata?access_token=$token" | jq '.body.devices[0].modules[0].dashboard_data | .Temperature, .Humidity' > $temp
ibytes=`head -1 $temp | awk '{print $1*10}'`
obytes=`tail -1 $temp | awk '{print $1*10}'`
echo $ibytes
echo $obytes
echo 0
echo "Temp/Hum monitoring"
rm -f $temp
exit 0
  • 小数点1位なデータをMRTGで表示するため、値を10倍して取得しています
  • アクセストークンの有効期限は3時間です
    このため、この例では毎回取得しています
  • jqの出力からダブルクォーテーションマークを外すときは、-rオプションを付けます(上記スクリプト5行目)
  • jqで同時に複数の値を抽出するときは、親キーの後にパイプ文字を入れて、子キーをカンマで並べます(上記スクリプト6行目)

取得できるデータ

室内用デバイスについて
jqのパラメータ 内容
.body.devices[n-1] n番目のデバイス
一つしかない場合は0を指定
.body.devices[n-1].dashboard_data.Temperature 気温(℃)
.body.devices[n-1].dashboard_data.Humidity 湿度(%)
.body.devices[n-1].dashboard_data.CO2 CO2濃度(ppm)
.body.devices[n-1].dashboard_data.Noise 騒音(dB)
.body.devices[n-1].dashboard_data.Pressure 気圧(mb)

外部モジュールについて
jqのパラメータ 内容
.body.devices[n-1].modules[m-1] n番目のデバイスのm番目の外部モジュール
一つしかない場合はそれぞれ0を指定
.body.devices[n-1].modules[m-1].dashboard_data.Temperature 気温(℃)
.body.devices[n-1].modules[m-1].dashboard_data.Humidity 湿度(%)

mrtg.cfgの設定例

mrtg.cfgに次の内容を追加します。
先程のスクリプトは/root/netatmo.shという名前で保存しているものとします。
先程10倍で値を取得しているため、表示するときに0.1を掛けています。

Target[test_temp]: `/bin/sh /root/netatmo.sh`
MaxBytes[test_temp]: 1000
Options[test_temp]: growright,gauge,nopercent,noinfo,noo
Title[test_temp]: 某所の気温
ShortLegend[test_temp]: ℃
YLegend[test_temp]: Celsius
YTicsFactor[test_temp]: 0.1
Factor[test_temp]: 0.1
LegendI[test_temp]: 温度
LegendO[test_temp]:
PageTop[test_temp]: <h1>某所の気温</h1>

Target[test_hum]: `/bin/sh /root/netatmo.sh`
MaxBytes[test_hum]: 1000
Options[test_hum]: growright,gauge,nopercent,noinfo,noi
Title[test_hum]: 某所の湿度
ShortLegend[test_hum]: %
YLegend[test_hum]: %
YTicsFactor[test_hum]: 0.1
Factor[test_hum]: 0.1
LegendI[test_hum]:
LegendO[test_hum]: 湿度
PageTop[test_hum]: <h1>某所の湿度</h1>

出来上がりはこんな感じになります。

Echo Inputを買ってみました

一瞬気絶したあと、気付いたら手元にEcho Input(←Amazonへのリンク)が存在していました。

外部スピーカーには節電機能(オートパワーオフ)で使える物と使えない(時間が経つと切れてしまう)物があるようですが、手元にあった次のスピーカー(Anker SoundCore←Amazonへのリンク)はAUX直結でご機嫌に動いているようです。

Bluetooth搭載スピーカーは、(連続稼働させる場合)結構相性があるようなので、参考になればと思います。


Inputは小型薄型で場所を取らなくてよいですね。
相性のチャレンジをしたくない場合はdotでも良い感じもしますが、このコンパクトさは、素敵です(↓大きさ比較のために並べてみました)。

  

2019.05.05追記
純正ACアダプタ以外の物を使用して、音声出力にノイズが混じる場合は、ACアダプタを変更してみて下さい。ACアダプタから拾っている場合があります。