api_key = '' service_name = '' import requests import json import pprint headers = { 'X-Api-Key': api_key, } r = requests.get(f"https://api.mackerelio.com/api/v0/services/{service_name}/metric-names", headers=headers, ) metric_names = json.loads(r.text)['names'] for metric_name in metric_names: print(metric_name)
Python: Git ブランチ名に .py が含まれると flake8 が誤作動する場合がある
- Git ブランチ名に
.py
が含まれる(例:fix/foo.py
) flake8
に--exclude
オプションを指定して実行する(例:flake8 --exclude venv .
)
という条件を満たすと、以下のようなエラーが発生することがある。
./.git/logs/refs/heads/foo.py:1:42: E999 SyntaxError: invalid syntax ./.git/logs/refs/heads/foo.py:1:80: E501 line too long (157 > 79 characters) ./.git/logs/refs/heads/foo.py:1:98: E225 missing whitespace around operator ./.git/logs/refs/heads/foo.py:1:114: E225 missing whitespace around operator ./.git/logs/refs/heads/foo.py:1:128: E225 missing whitespace around operator ./.git/logs/refs/heads/foo.py:2:80: E501 line too long (150 > 79 characters) ./.git/logs/refs/heads/foo.py:2:98: E225 missing whitespace around operator ./.git/logs/refs/heads/foo.py:2:114: E225 missing whitespace around operator ./.git/logs/refs/heads/foo.py:2:128: E225 missing whitespace around operator ./.git/logs/refs/remotes/origin/foo.py:1:42: E999 SyntaxError: invalid syntax ./.git/logs/refs/remotes/origin/foo.py:1:80: E501 line too long (146 > 79 characters) ./.git/logs/refs/remotes/origin/foo.py:1:98: E225 missing whitespace around operator ./.git/logs/refs/remotes/origin/foo.py:1:114: E225 missing whitespace around operator ./.git/logs/refs/remotes/origin/foo.py:1:128: E225 missing whitespace around operator ./.git/refs/heads/foo.py:1:2: E999 SyntaxError: leading zeros in decimal integer literals are not permitted; use an 0o prefix for octal integers ./.git/refs/remotes/origin/foo.py:1:1: F821 undefined name 'da7d6585eeac60722e04b10f612acb327e9cd72c'
これは、
--exclude
オプションを明示したことによってflake8
の--exclude
オプションの初期値がクリアされる(初期値には.git
が含まれる)flake8
が.git
以下をチェック対象にする.git
以下に Git が内部的に利用するファイルがあるが、ブランチ名に.py
が含まれるとそれらのファイルが Python スクリプトのように見えるflake8
が見かけ上 Python スクリプトっぽいファイルに syntax check を実施してエラーを出す
という仕組みで発生しているようだ。
対策としては、 --extend-exclude
オプションを利用する。
$ flake8 --extend-exclude venv .
グレース・オブ・モナコ 公妃の切り札
Microsoft Authenticator のバックアップの注意点
1. Azure AD アカウントは復元できない
なので、職場で Office365 (Azure AD) によるアカウント管理が導入されている場合、 Microsoft Authenticator アプリを再インストールしたりスマートフォンを初期化したりすると、自力で 2FA の再設定ができずアカウントから締め出されてしまう。
重要
保存されるのは、個人およびサードパーティのアカウントの資格情報のみです。
(snip)
個人用アカウントや職場または学校アカウントでプッシュ通知を使用する場合、情報を復旧する前に追加認証を提供する必要があることを示すアラートが画面に表示されます。 (snip) 個人用 Microsoft アカウントの場合、代替電子メールや電話番号と共にパスワードを入力して本人確認することができます。 職場または学校アカウントの場合は、アカウント プロバイダーから提供された QR コードをスキャンする必要があります。
他端末のブラウザのログインセッションが生きている間は、以下の手順に従い、自力で QR コードスキャンをして 2FA を再有効化することもできる(実際、一度はそれで有効化できた)。しかし、ログインセッションが切れてしまうと 2FA を要求されてしまうので、常に有効な方法ではない。
対策としては、 Microsoft Authenticator 以外の 2FA 手段を追加登録しておくこと。ベーシックな SMS 認証があれば十分だが、 Authy も追加してバックアップを有効化しておくと盤石。
2. バックアップを有効化した後で追加したアカウントはバックアップ対象外
そんなバカなと思ったが、そういうものらしい。
新しいアカウントを追加しても、バックアップが即座に自動的に実行されされることはありません。 これはつまり、放置しておくと最初に「クラウドのバックアップ」をオンにした以降に追加されたアカウントはバックアップされない、ということです。
対策としては、上記ページにあるように、バックアップをオフ(削除)→オン、という操作で最新のバックアップを再作成できるらしい。
まとめ
- 2FA app は Authy 一択
- 2FA app を過信しないこと。電話番号 (SMS) 認証を追加できる場合は追加すべき
- Microsoft Authenticator のバックアップ機能にはガッカリ