AnacondaがPowershellでうまく起動しないときの対策

これまでAnacondaがPowershellではうまく起動しないと思っていて、Anaconda Powershell Promptをわざわざ起動していた。 ところが、Anaconda がやっと PowerShell に公式対応した - Qiitaを参考にconda init powershellするとPowerShell の Profileを書き換えて、Powershell起動時にcondaの環境も起動してくれる。

余談

いったんは上記で対応したのだが、若干の気持ち悪さはある(起動時間も気になる)。 anacondaは楽ではあるのだが…素のpythonをインストールして、pipしたほうがいいのかもしれない…

WindowsのVSCodeからGitにSSH接続しようとして失敗するときの暫定対策

自分用の雑なメモ

症状

  • WindowsVScodeからGitにSSH接続しようとする(=pushやpullをしようとする)とSSH接続エラーになる
    • エラーの内容はPermission denied (publickey)
    • sshキーのパスフレーズを入力していないので当然だが、入力することができない
  • git bash からのpushやpullは問題ない

暫定対策

以下の環境変数を定義する*1

DISPLAY=needs-to-be-defined
SSH_ASKPASS=/mingw64/libexec/git-core/git-askpass

暫定対策

環境変数SSH_ASKPASSを使って、SSHキーのパスフレーズ入力にgit同梱のaskpassプログラムを指定している。これにより、パスフレーズ入力が必要になるとaskpassプログラムを起動し、その中ででパスフレーズ入力してVSCodeに渡せるようになる。

これでいいんだっけ?

  • そもそもVSCodeの中で完結することも可能だった気がする。
  • 毎回パスフレーズ入力するのも面倒
    • ただ、とりあえず暫定的にうごくようになっただけでもまし。

参考

*1:git-gui--askpassでもよい

自分向けのリンク集(プロジェクト運営周り)

PMBOKをみろ、というむきもあると思うが、もう少しライトでもいいよね。というリンク集。

随時更新

Vue.jsで書いたソースコードをGitHubにPushすると、自動でNetlifyにDeployされる世の中

久々に少し週末に時間の余裕ができた。以前から気にはなっていたNetlifyを試してみるかと思った。

以前、お試しで書いていたVue.jsのソースコードGitHubにPushして、Netlify側でポチポチやるだけで、すぐに自動でBuildが走って、Deployされる。 普段のExcelと格闘しているお仕事を考えると別世界感がすごい。ちょっとでもいいから勉強を日々つづけないといけない。

その他雑記

余談

GitHub Pagesも試そうかと思ったが、あれはどちらかというとOSSのドキュメントをホストするためのサービスで、自分で書いたページのホスティングには向かないような気がした。※リポジトリにビルド結果を突っ込むというのは、なんというか気持ち悪い。

PowershellでExcelファイルの印刷ページ数を取得する

Excelファイルを印刷したときのページ数を複数のファイルについて調べる必要があった。*1 手動でやるのはつらいのでPowershellで実装するやり方を調べた。

以下のようにCOM経由でExcelにアクセスしたあと、各ワークシートの印刷設定(PageSetup)から、ページ枚数(Pages.Count)を取得できるので、それを合算してファイル毎のページ数を求めることができた。 残念ながら、Workbook単位でページ数の情報は持っていないようだ。

# 初期化
$excel = New-Object -ComObject Excel.Application
$excel.Visible = $false
$excel.DisplayAlerts = $false

# 対象のファイルパス
$ExcelPath="C:\hoge.xlsx"

# ページ数の取得と出力
$book = $excel.Workbooks.Open($ExcelPath)
$book.WorkSheets | ForEach-Object { $_.PageSetup.Pages.Count } | Measure-Object -sum 

# 後処理
[void][System.Runtime.Interopservices.Marshal]::ReleaseComObject($book)
[void]$excel.Quit()
[void][System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel)

もう少し使いやすくfunctionにするなりすれば、十分使えるだろう。

参考

*1:そもそもページ数管理でいいのか、とか、Excelを資料印刷に使うのか、とか言いたいことはたくさんあるけれど、ひとまず置いておく

PythonとPILでPNG画像をグレースケールにする

PythonとPILでPNG画像をグレースケールにしたときのメモ

Pythonスクリプト

以下のページのほぼコピー。ガンマ補正は不要なので割愛。 Python でグレースケール(grayscale)化 - Qiita

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# 画像のグレースケール変換(透過PNG)

from PIL import Image
import sys

_, infile, outfile = sys.argv

img = Image.open(infile)
img_gray = img.convert("LA")  # グレースケール変換(透過pngを対象とするためアルファチャンネルも扱う)
img_gray.save(outfile)

使い方(Powershellから呼び出す)

# png画像だけが格納されたディレクトリの中身の画像それぞれをグレースケールにした画像を生成し、同じディレクトリに「元の名前+_grey.png」で保存する
Set-Variable dir hogehoge
ls $dir | %{python .\grayscaler.py $_.FullName ($dir + "/" + $_.BaseName + "_gray.png")}