WordPress Redirect

前回サイトの https 化を行った。
自動ジャンプするはずだけど Blog アクセスが全部 http だ、あれ?

「http://」から「https://」に自動転送させる方法 | ヘテムルブログ

WordPress は設定を変更しなきゃいけなかったのか!
早速サイトアドレス設定を https に変更。
でもアドレスを直打ちすると相変わらず http アクセスのまま。

常時SSL化後は必須!httpからhttpsへ自動転送する方法 | ビギナーズハイ

あぁ WordPress 用の index.php がある位置に置かないと駄目なのね。
って、デフォルト状態で既にあるんですけど初期から使っているからかな。
多分デフォルトに追記すればいいんだろう。
mod_rewrite.c ディレクティブ指定って実は必要無いみたいだけど一応書くか。

そんなこんなでサイトのトップページ用。

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

WordPress 用。

# BEGIN WordPress
# `BEGIN WordPress` から `END WordPress` までのディレクティブ (行) は
# 動的に生成され、WordPress フィルターによってのみ修正が可能です。
# これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /wp/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wp/index.php [L]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

# END WordPress

に書き換え、よし狙ったとおりにリダイレクトされるようだ。

サイトを全部 WordPress に変更すればこんなへましないんだろうけどさ。
我がサイトは筆者自身の覚書をまとめただけなんだよね。
Blog 以外はローカルで動かないと困るんです。

Shared SSL

共有SSL – レンタルサーバーはさくらインターネット
こんなのあったんだ。
これで筆者のページも https 化できるのか。
さっそくやってみよう。

コンパネにログイン。
[ドメイン設定] の [ドメイン/SSL設定] をクリック。
このドメイン名の所にある [変更] ボタンをクリック。
[SSLの利用をお選びください] の [共有SSLを利用する] を選択。
[送信] ボタン、で設定完了!

30 秒だけ一応待って https でアクセス。
アクセスできた、https 化完了!

http から https へ自動ジャンプさせたいな。
httpからhttpsにリダイレクトする方法と注意点について | キーワードファインダー

せっかくなのでいつかやろうと思っていたサイト名変更。
サイト名を Paepoi に。
ブログを Paepoi Blog に。
やっぱり統一したほうがいいよね。

追記

自サイトだけ変更したら Google AdSense が表示されなかった。
show_ads.js への URL も https に変更しないと弾かれるようです。

Fedora fwupd

先日から Fedora 31 のファームウエア更新が失敗する。
環境によるっぽいけど、アップデート通知を毎回適用しても変わらず。
これが再起動毎に通知されるのでウザい。

# fwupd @ 1.3.3 to 1.2.11
sudo dnf downgrade fwupd

で毎回元に戻している、けどいいかげんにメンドイ。
ASK ページは一応チェックしているんだけど。

Failed to Update – Discussions in English / on using Fedora – Ask Fedora

おっと動きがあったようだ。
tpm2-abrmd って何だ?

tpm2-abrmd command man page | ManKier

TPM2 のアクセス制御デーモンということみたい。
TPM については以下、もちろん検索で見つけただけ。

TPM2.0の活用方法 | ファナティックレポート

デーモンを削除しなくてもバイオスで無効にできるみたい。
と思ってやってみたけど変わらなかった、素直に削除しよう。

sudo dnf remove tpm2-abrmd && sudo dnf --refresh upgrade

やっとアップデートできた。
けどこのデーモンって必要あるのかな?
次の Fedora Upgrade 時は新規インストールすることにして様子見。

subprocess run Popen

そういえば最近このブログは subprocess.Popen を使っているけど。
subprocess.run で全部まかなえるようになったんじゃなかったっけ?
Popen を使う理由は何だろう。

subprocessでPythonからLinuxコマンド実行

あぁ戻り値を得ないならば非同期実行になるってことね。
しかしなんともなサンプルコードだ、多分 Windows なんだろうけど。
UNIX 系ならこんなに単純なサンプルコードにできる。

#!/usr/bin/env python3

import subprocess

subprocess.Popen(['sh', '-c', 'sleep 3; echo First'])
subprocess.Popen(['sh', '-c', 'echo Second'])

print('__done__')

__done__ が一番最初に表示されるね、なるほど。
ただし with as を使うと戻り値を使うのと同様になるので順番どおりになる。

#!/usr/bin/env python3

import subprocess

with subprocess.Popen(['sh', '-c', 'sleep 3; echo First']) as p:
    pass
with subprocess.Popen(['sh', '-c', 'echo Second']) as q:
    pass

print('__done__')

この特性を上手く利用すれば色々便利になりそう。

subprocess readline loop

sftp を subprocess で関連は色々詰まって全然進まない。
特に stdout.readline は検索すると同じ事で詰まっている人ばかり見つかるってどうよ。
そうです、readline でループすると値が戻らず止まってしまうんです。
俺だけじゃなかった!なんて安心してもしょーがないんですけど。

python – catching stdout in realtime from subprocess – Stack Overflow

上記で上手くいっている人と駄目な人がいるみたいだけーが。
exe ってことは Windows なら問題ないってことなのかも、知らんけど。

Pythonでサブプロセスと対話する – 西尾泰和のはてなダイアリー

上記でやっとなんとかなった。
サンプルコード、bash のエミュレーター。

#!/usr/bin/env python3

import sys, subprocess, os

with subprocess.Popen(['/bin/bash'], encoding='UTF-8', stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) as p:
    while True:
        try:
            s = input('test > ')
        except EOFError:
            # Ctrl+D
            break
        p.stdin.write(f'{s}\n')
        p.stdin.flush()
        if s == '':
            continue
        if s == 'exit':
            break
        r = os.read(p.stdout.fileno(), 1024)
        sys.stdout.write(r.decode())
        sys.stdout.flush()
        # not UNIX ?
        #for line in iter(p.stdout.readline, b''):
        #    print(line.rstrip())

print('__done__')

os.read はファイルオブジェクトに使わないでって書いているけど動くようだ。
os — 雑多なオペレーティングシステムインタフェース ? Python 3.8.0 ドキュメント
ls の出力が改行されてしまう理由は解らない。
subprocess ごときにこんなに苦戦するとは思わなかったぞ。