pipでアップデートを半自動的に行う方法。

結論から先に書きますが、全然半自動にすらなっていません。試してみたことのメモです。

Python 2/3でいくつかのモジュールをPyPiからインストールして使用していますが、モジュールがアップデートされたときにはキャッチアップしたいときがあります。ところが現状 pip ではアップデートがあるモジュールを自動で検索して全部を一括してアップデートできません。

pipに一括アップデートがない理由のひとつは、モジュールの依存関係にあるようです。
あるモジュールAが、たとえばモジュールBのバージョン 1.0 に依存しているとします。モジュールAはバージョンアップしていませんが、モジュールBが2.0にバージョンアップしました。ところがモジュールBのAPIが変わってしまい、モジュールAはモジュールB 2.0では動作できなくなりました。
というようなことが現実に起こり得るため、盲目的な一括アップデートは推奨されていません。

また、検索してみるといくつかヒットして、いずれも "pip list" で一覧を取得して、総当たり的にすべてのモジュールに "pip install -U" をしかけるという形のようです。同様のことが、Unix系の環境では pipdate というユーティリティで行えます。これは pipdate / pipdate3 というスクリプトと、pipdateモジュールを提供していますが、スクリプトの方は以下のようになっていました。

pipdate3:
pip3 freeze --local | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip3 install -U

同様に依存関係には無頓着にアップデートしてしまうようです。

依存関係をチェックするためには、pipdeptree があります。

自分の環境で pipdeptree を使ってみたらコンフリクトの警告が出ました。

$ pipdeptree
Warning!!! Possibly conflicting dependencies found:
* neovim-remote==2.0.10
 - neovim [required: >=0.2.3, installed: ?]

これは、neovim-remote が neovim-python に依存しているのに、neovim-pythonからpynvimへ。で触れたように neovim-python が廃止されたから、でしょう。

ということで neovim-remote をアップデートします。
$ pip install -U neovim-remote
Collecting neovim-remote
  Downloading https://files.pythonhosted.org/packages/23/55/89b7528c43771e63b0b035b78dd8a05de29cc8c7a9bcf1b1b155df095a6f/neovim-remote-2.1.3.tar.gz
Requirement already satisfied, skipping upgrade: pynvim in c:\apps\python37\lib\site-packages (from neovim-remote) (0.3.1)
Requirement already satisfied, skipping upgrade: psutil in c:\apps\python37\lib\site-packages (from neovim-remote) (5.4.6)
Requirement already satisfied, skipping upgrade: setuptools in c:\apps\python37\lib\site-packages (from neovim-remote) (39.0.1)
Requirement already satisfied, skipping upgrade: msgpack>=0.5.0 in c:\apps\python37\lib\site-packages (from pynvim->neovim-remote) (0.5.6)
Requirement already satisfied, skipping upgrade: greenlet in c:\apps\python37\lib\site-packages (from pynvim->neovim-remote) (0.4.13)
Installing collected packages: neovim-remote
  Found existing installation: neovim-remote 2.0.10
    Uninstalling neovim-remote-2.0.10:
      Successfully uninstalled neovim-remote-2.0.10
  Running setup.py install for neovim-remote ... done
Successfully installed neovim-remote-2.1.3

$ pipdeptree --packages neovim-remote
neovim-remote==2.1.3
  - psutil [required: Any, installed: 5.4.6]
  - pynvim [required: Any, installed: 0.3.1]
    - greenlet [required: Any, installed: 0.4.13]
    - msgpack [required: >=0.5.0, installed: 0.5.6]
  - setuptools [required: Any, installed: 39.0.1]
これで警告が消えました。

今回は簡単でしたが、一括アップデートしたい場合には、pipdeptreeで「バージョンがxx以下であること」という依存関係があるかどうかをチェックしてから行うほうが安全のようです。そういう目で見てみると、

flake8==3.5.0
  - mccabe [required: >=0.6.0,<0.7.0, installed: 0.6.1]
  - pycodestyle [required: >=2.0.0,<2.4.0, installed: 2.3.1]
  - pyflakes [required: >=1.5.0,<1.7.0, installed: 1.6.0]
requests==2.21.0
  - certifi [required: >=2017.4.17, installed: 2018.11.29]
  - chardet [required: >=3.0.2,<3.1.0, installed: 3.0.4]
  - idna [required: >=2.5,<2.9, installed: 2.8]
  - urllib3 [required: >=1.21.1,<1.25, installed: 1.24.1]
あたりは引っかかりそうです。 あとついでに、pip自身のバージョンが古いんですけどー、といわれた場合には、Windowsの場合は
python -m pip install -U pip
を、Linuxの場合は
pip install -U pip
すればいいです。
"-U" は "--upgrade" と同じ意味です。

Contact Form 7にreCapcha v3を導入する。

WordPressでサイトを運用していて、「お問い合わせページ」などを Contact Form 7で作成し、さらにスパム避けに reCAPCHA を使っているのですが、Contact Form 7がバージョンアップして reCAPCHA v3 への対応になりました。それに伴って、これまで [recapcha] と指定していた Contact Form 7 の問い合わせフォームのキーワードが無視されるようになりました。

reCAPCHA v3 のページには、Fronend integrationとして設定例が載っていますが、Contact Form 7はreCAPCHA v3に対応しているのでこれは不要になります。正確には Contact Form 7 の「インテグレーション」メニューから reCAPCHA v3 をインストールすることで、自動的に Contact Form 7 が reCAPCHA v3 を利用するようになります。また、これまで使っていた問い合わせフォームの [recapcha] は単純に削除されます。

reCAPCHA v3はこれまでのような「ユーザにロボットでないことを入力させる」という動作がなくなります。同時に、これまで使っていた v2 の登録キーが使えなくなり、新たに v3キーを取得する必要があります。

登録方法は他に譲るとして、v3はどういう動作になるのかをドキュメントから簡単にまとめてみます。

reCAPCHA v3 は、これまで主流だった CAPCHA によるユーザ確認(難読化した文字を読み解いて入力させるとか、チェックボックスをチェックさせるとか)を廃止し、ユーザの "アクション" をもとにしてスコアを生成して送信します。より精度の高いスコアを生成するためには、サイトの複数のページに reCAPCHA v3 を埋め込んで動作させることが推奨されます。それによってユーザの動作を追跡し、SPAMボットかどうかを判定することが容易になります。reCAPCHA v3の動作の様子は、reCAPCHA管理コンソールで確認できます。

安全グラス。

PCでの作業や、細かい作業をするときにはメガネが必要なのですが、電動工具を使うときにも眼球へのダメージを防ぐために安全グラス、安全ゴーグルは必須です。

この時期ですとスポーツ用品店で、防曇(ぼうどん)仕様のスキーゴーグルなんかがよいかもしれませんが、オールシーズン通じてとなるとスキー用は夏場がちょっと…。それにバンドの部分が汗で大変なことになったりもしますし、水洗いも気軽にできるという点ではグラス型のほうが好みです。ただ、横までカバーしないものは粉塵に対しては防御力が薄いですし、グラス型でもサイドまで防護してくれるものが理想です。

自分ではメガネ対応の安全ゴーグルとして "Crews Yukon XL Z87+ Safety Glasses" というのを使っています。透明性も高く、メガネ越しでも歪みがほとんどないので結構気に入っていますが、これが防曇(antifog / defog)ではないので曇りやすいのと、ちょっと小傷がついてきたので磨けないかということで調べてみました。

素材はポリカ、ANSI Z87+の耐衝撃性とCSA Z94.3に適合しているということらしいです。'+'というのは余裕でクリアしているというアピールでしょうか。認証をとっているかどうかはよくわかりません。

ミドリ安全の保護メガネには、海外規格との比較というページがあります。ここでANSI Z87.1規格について出ていますが、屈折率とか非点収差度、耐衝撃性などがわかります。さすが、ミリタリー規格だけあってZ87は数値が厳しいです。

ミドリ安全では防曇・メガネ併用型でANSI規格も対応しているVS-302Fというものがあるようですね。ツルはナイロンでボディはポリカとのことです。
また、スキーゴーグルではスワンブランドの山本光学ではオーバーグラス SN-770というのもあるようです。こちらはANSIについては書かれていません。

さて、こうした安全グラスも工具箱などに放り込んでしまうとあっという間に傷だらけです。そうすると視界が悪くなってきますし、光が散乱して見づらくなってくるというのもありますので、できるだけ傷はつけたくないものです。それでもついてしまった傷は、材質がポリカですから、自動車のヘッドライト研磨と同様に処理できるはずです。

具体的には、ちょっと深めの傷があれば400番程度から、ちょっとした擦り傷程度なら1000番程度からの耐水ペーパーで水研ぎし、2000番、3000番、4000番あたりまで使って(3000番以降はお好みで)研磨してから、研磨剤で磨いてやるといいようです。

ペーパーだと指先の部分だけ強くあたってしまうため、スポンジ研磨材というものも有効なようです。3Mから、5083(#320~#600)、5084(#800~#1000)、5085(#1200~#1500)という感じで出ています。ただ結構お高いので、これなら安全グラスを買い替えてしまったほうが安そうです。

いずれにしても、自分にあった安全グラス・安全ゴーグルを一つは用意しておきたいものです。

Windows10の新しいSandbox。

Windows Sandbox is a new lightweight desktop environment tailored for safely running applications in isolation.

Windows10にSandbox機能が追加されるというお話。

Sandboxというのは本来のシステムとは隔離された環境のことで、たとえば疑わしいアプリケーションをSandboxで動かせば、万が一ということがあっても本来のシステムは影響を受けなくなります。

たとえばPythonであればvirtualenvがそれに当たります。

WindowsでSandboxを使いたい場合、今まではVirtualBoxなどの仮想環境を持ってきて、そこにWindows仮想PC環境を構築する方法が取られていました。このとき、その仮想マシンのスナップショットを保存しておけば、何かをインストールして問題が起こった場合でもロールバックできます。

Windows Sandboxは仮想マシンを使わなくてもSandboxを利用できる、というのが上記のリンクの内容です。

ただし利用するには条件があって、Windows 10 Pro または Enterpriseエディションであることが必要とのこと。さらにこの機能は今のところInsider build 18305以降でしか利用できないようです。またメモリを4GB(できれば8GB以上)、CPUコアを2つ以上(できれば4つ)あることが望ましいようです。

うちではProエディションですが、バージョンは1803でInsiderではありませんからまだ当面は使えそうにありません。

また仮想マシンとは異なり、あるアプリケーションをインストールした状態で停止することができません。Sandboxは毎回完全にクリーンな状態で起動するということで、たとえば日本語Windows10上で英語Windows10の開発環境を構築するというような目的の場合にはこれまで通り仮想マシンを使う必要があります。

Notepad++にPlugin Managerをインストールする。

エディタはPCを使うときになくてはならないものですが、うちでは秀丸、gVim、Notepad++、Neovim、Visual Studio Codeの5種類を目的に応じて使い分けています。さらにファイルの差分をみたいときにはWinMergeを使っています。
また、PICのプログラミングをするときにはMPLAB IDEを、C#やPythonを使うときにはVisual Studio 2017を使うときもあります。

ところで最近のNotepad++にはPlugin Managerがついていません。これは作者の方針で、Plugin ManagerがAdwareであり、広告を表示するのでバンドルしないことにした、ということです。同時に「広告を表示しない新しいPlugin Managerを開発中だ」ともありました。

反面、広告入りであれ従来のPlugin Managerは大変使いやすかったためにファンも多く、コミュニティでは再バンドルを求める声もずっと続いていて、ユーザが自分の判断で追加でインストールすることは可能です。

githubのbruderstein/nppPluginManagerにはコンパイル済みバイナリがリリースされているので、ここから適切なバージョンをダウンロードし、%ProgramFiles%\Notepad++ディレクトリ以下にコピーするだけで使用できるようになります。64bit版のNotepad++の場合にはx64を、それ以外はUNIを選択すればOKです。

一方、Notepad++ v.7.6からは新しいPlugins Adminが同梱されるようになりました。

Notepad++ v.7.5.xからv.7.6.xへは、これまでのupdaterではアップデートできないため、ユーザが明示的にv.7.6.xをダウンロードしてインストールする必要があります。現在のバージョンはv.7.6.1で64bit環境の場合には下の方にx64インストーラがあるのでこれを使います。もちろん32bit版でもまずいことはありませんが。


見て分かる通り、Plugins Adminにチェックが入っています。

インストール後に起動すると、プラグインメニューに「プラグイン管理」の項目があります。


見た目もこれまでのPlugin Managerに似ているため、違和感なく使えるでしょう。

ということでv7.5.xを使っている人はv.7.6.xにアップグレードを推奨です。

18%グレーの作り方。

写真ってなんでしょうか。

映像を記録するもの、なんですが、そこには2つのアプローチがあると思っています。1つは写実という観点。これは現実をできるだけそのまま写し取ることが目的です。カラー、白黒、セピアなど色彩にはいろいろありますが、いわゆる撮って出し。撮ったあともトリミングや露出補正などはしますが、基本的には被写体に忠実であることが求められます。もう一つが表現という観点。いわゆるアート、芸術です。たとえば夕焼けのオレンジを強調したり、モノクロ写真の一部だけをカラーにしてみたり、フィルターなどを使って加工してみたり。

フィルムカメラをやっていた頃は多彩な表現というのは難しく、フィルム、ライティング、現像方法、焼付、レンズフィルタなどで表現を創出していました。

一方、デジタルカメラでは受光素子は固定のため、一部のレンズフィルタなどを除いて後処理ですべてを決定していきます。そのときに基準となるのがカラーチェッカーです。

カラーチェッカーは色味の確認のためにスタジオなどでの撮影には必須です。照明などの条件を一緒にして撮影しておけば、のちの確認の際に使えます。もちろんフィルムカメラでも使用しますし、最終的な印刷の際にも色合わせで使用します。スタンダードなのはx-riteのColorChecker Classicです。


また、色見本的なカラーチェッカーとは別に、露出やホワイトバランスを決定するのに18%グレーというのがよく使われます。


これはx-riteのColorChecker Gray Scaleですが、中央のグレーが18%です。

WEB上には "18% gray card" で検索するとPDFなども見つけることができますが、ここでは自分のところで作ってみます。

いつも使っている Krita では印刷機能がないのと、どうもLab色空間の扱いに難がありそうなので GIMP2を使います。

  1. 「ファイル」→「新しい画像」で新規ファイルを作成します。サイズは自分の欲しいサイズにします。印刷して使う場合には、プリンタのdpiを調べて「詳細設定」で指定しておきます。
  2. 色の設定をします。HSVを選択し、Vを50にします。
  3. 塗りつぶしツールを選択して、ファイルを塗りつぶします。

これで希望のサイズのグレーカードができました。あとは真っ白い厚紙か、印刷可能なプラ板などに印刷すれば使えます。

自分の場合、ノートPCの液晶画面にどうも色むらがありそうなので背景として表示してチェックするのに使用しました。特におかしなところはなくてやれやれです。

UVレジン価格比較表。

UV硬化型レジン。ではパジコの製品を比べましたが、ここでは清原のものとの価格を比較します。()内はアマゾンの価格を引いてきています。

メーカー パジコ 清原
品名 太陽の雫 UVR500G
価格(25g) 1200円(1136) 1500円(857)
gあたり単価 48(45.44) 60(34.28)
価格(55g) 2900円(1663)
gあたり単価 52.73(30.24)
価格(100g) 3800円(2917)
gあたり単価 38(29.2)
価格(200g) 6800円(4205)
gあたり単価 34(21.03)
価格(500g) 15500円(10280) 19800円(13764)
gあたり単価 31(20.56) 39.6(27.53)

g単価だと、パジコの200g、500gがかなり安いですね。ただ、価格でいうなら2液のレジンのほうが安いです。

SWDなら3線でいいとはいうものの。

 安価で優秀なデバッグプローブはないかしら、と探したら、 Raspberry Pi Debug Probe というのがあったんですが、これは3線がにゅるんと出てるだけです。 もちろんSWDなら3線を繋げばいいのではありますが、汎用的に考えるなら5x2のリボンケーブルコネクタが欲し...