2020年7月16日木曜日

gitで直前のコミットをなかったことにする

ソフトウェアのソースコード等のバージョン管理には
昔はsvnが多く使われていましたが、最近はgit一辺倒。
正直gitはローカルでの作業時のストレージにかかる負担が大きく、
小規模な運用では分散管理の意義が大きくなく、
ブランチの見通しが良くなく、リビジョンがハッシュ値で示される等
そんなに好きではないのですが、
まあsvnに比べて利点も多いわけで、
これだけ広まったのもわからないではありません。
まあLinux Kernelのソース管理に使われたという実績が
一番聞いているんでしょうけど。

ところでsvnではできなかったことの代表格、
直前のコミットをなかったことにすることがgitでは
$ git reset --hard HEAD^
で可能であることは結構助かります。
pullし忘れてpushしようとしたときの対処がやりやすいんですよね。
まあそれで更新したファイルを退避しておかないと
失われてしまうので気をつける必要はありますが。

2020年7月15日水曜日

sshの設定ファイル

いつの頃からかリモートやバーチャルマシンへのログインはssh、
ファイル転送はsftp、というのが世間の常識となりました。
ftpはanonymousで使うこともあるのでまだ見ることがありますが、
さすがにtelnetを使うなんてことはありませんね。
いや、組み込み機器相手ならありえるか。

さて、私はsshクライアントはWindowsでもcygwin上のものを使います。
sshやsftpにフルで引数を手打ちするのが常です。
というのも、ポート番号が特殊だったりするときちんと覚えていないと
世界のどこからでもそらでログインできなくなってしまうので。
とはいえ秘密鍵を持ち歩いているわけでもなく、
他人のちょっとだけ使うPCに自分の秘密鍵をコピーするのは躊躇しますし、
結局常に手打ちして記憶を活性化しておくのも無駄な努力です。
それよりはしょっちゅう打ち込む手間を省けた方がありがたい。

さて、sshには便利な機能があり、"~/.ssh/config"設定ファイルに
Host v
  HostName vps.example.com
  Port 10022
  User peach
  IdentityFile ~/.ssh/id_rsa_vps
なんて書いておくと
$ ssh v
だけでログインが可能になります。
$ ssh -p 10022 -i  ~/.ssh/id_rsa_vps peach@vps.example.com
と比べればかなりの省力化。お腹が減るのを防げるかも。
これがsftpともなれば、
$ sftp -o port=10022 -o identityfile=~/.ssh/id_rsa_vps peach@vps.example.com
$ sftp v
で済むんですから本当に楽。
って、さっき--help見て気がついたのですが、-oオプションを使わなくても
$ sftp -P 10022 -i ~/.ssh/id_rsa_vps peach@vps.example.com
でいいみたい。えっ、いつからそうなってたの?

2020年7月14日火曜日

小型軽量の折りたたみ椅子

犬の散歩の途中、犬が一定の場所から動かなくなることがよくあります。
草むらで何か探したり、穴を掘ったり、川で水浴びをしたり。
私が散歩させるのは週に1、2度なので基本的に好きにやらせてます。
ただ本人(本犬?)はいいんでしょうが待ってるこっちは立ちっぱなしで疲れます。
そこで購入したのは小型軽量の折りたたみ椅子
大きめのウエストポーチにも収まって携帯性はなかなかです。
接合する部品がゴムひものガイドで繋がっているので
組み立て時に迷うことはありません。
ただ撤収時は部品が固くはまってスコッと抜けないので手が3本欲しくなります。
まああんまり簡単に抜けるようだと強度面で心配ですが。
そしてしばらく使っていて組立時に大きな問題に直面しました。
X字に開く脚の部分が一方にしか開かないようになっており、
さくっと組み上がったはいいが開かないことが頻繁に。
こうなるとどうすればいいか考えながらなんとかすることになり、
時間と手間がかかります。
悪い商品ではないんですが両手を上げて便利という感じではありません。
あと重量相応に華奢なのであんまり体重をかけると壊れそうで…
耐荷重は一般人には実用に足るように設計されてはいるようですが。

2020年7月13日月曜日

Let's Encryptの証明書を手動で取得

トラブルによく遭遇するようになったLet's Encrypt。
前回は辛くもなんとかなりましたが、今回はどうにもならず。
仕方がないのでOSのアップグレードも考えることに。
何しろベースがUbuntu 14.04とすでに枯れ過ぎた環境なもので。
とはいえ決断すると面倒な作業が待ち受けてます。

Let's Encryptの証明書は自動取得が可能で便利なものの、
そもそも手動での更新はできないのかと
なんとなく公式ドキュメント眺めていると
「マニュアル・モード」の記述を発見!! なんだあるんじゃないか。
ということで説明を読みながらやってみることに。
まあ大して詳しくも書いてないので試行錯誤は覚悟の上。
しかしなんとか方法を編み出しました。

このマニュアル・モードですが、正式なウェブサーバーとは別の
適当なPCで証明書を取得して、後でウェブサーバーに設定する流れとなります。
途中でドメイン所有とウェブサーバ保有の確認のための作業が入ります。
ということで私が実際に行った作業について紹介します。

最初に適当なインターネットに繋がったLinux PCを用意。
私が使ったのはUbuntu 18.04入りのクライアントPCです。
まずは以下のコマンドでツールをインストール。
# apt install certbot
その後、証明書を取得したいドメイン名(FQDN)を指定して以下を実行。
# certbot certonly --manual -d <ドメイン名> --preferred-challenges http-01
対話式なので問に答えていけば途中まで進むのは簡単です。
なお初回のみメールアドレスを求められたりします。
進めていくと
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Create a file containing just this data:

<ファイルの内容>

And make it available on your web server at this URL:

http://<ドメイン名>/.well-known/acme-challenge/<ファイル名>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue
のようなメッセージが出ます。
ここで指定されたURLを開いたときに、指定されたファイルの内容が
返るよう正規ウェブサーバ側を設定します。
ウェブブラウザで正常に開けることを確認してから
[Enter]キーを押すと確認が行われ、完了すれば証明書が取得できます。
証明書は"/etc/letsencrypt/"ディレクトリ下にあり、
参照元の"/etc/letsencrypt/live/<ドメイン名>/"ディレクトリと
実体のある"/etc/letsencrypt/archive/<ドメイン名>/"ディレクトリの
ファイルを正規のウェブサーバに組み込んで立ち上げ直せば完了です。

なお初回実行時のやり取り全文を以下に載せておきます。
何かの参考になれば幸いです。
root@pc:~# certbot certonly --manual -d <ドメイン名> --preferred-challenges http-01
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator manual, Installer None
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): <メールアドレス>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: a

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: n
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for <ドメイン名>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NOTE: The IP of this machine will be publicly logged as having requested this
certificate. If you're running certbot in manual mode on a machine that is not
your server, please ensure you're okay with that.

Are you OK with your IP being logged?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: y

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Create a file containing just this data:

<ファイルの内容>

And make it available on your web server at this URL:

http://<ドメイン名>/.well-known/acme-challenge/<ファイル名>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue
Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/<ドメイン名>/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/<ドメイン名>/privkey.pem
   Your cert will expire on <日付>. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   "certbot renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

2020年7月9日木曜日

Me too, Me three

誰かが何か発言したときに他の誰かがその意見に同調する際
英語では"Me too"なんて言いますが、
さらに他の誰かが同調するときに"Me three"と言ったりすることがあります。
アメリカン・ジョークというか、鉄板のダジャレですね。
私自身自然な会話の中で一度だけ"Me three"と言ったことがありますが、
使える場面が広そうで、実はそうでもなかったりします。

先日米国ドラマのNCISのシーズン11あたりを字幕で見ていて
登場人物が"Me three"と言う場面に出くわしましたが、
他の人物は特に反応もなく、どうやらそれはごく普通に使われる
日常に溶け込んだダジャレでもないダジャレなんだと再認識しました。

目が悪くなってから字幕版ではなく吹替版を好んで見るようになりましたが、
たまには字幕版もいいのかもしれません。
新たな発見があるかも。

2020年7月8日水曜日

NCISに織り込まれるスポーツネタ

最近Amazon Prime Video でずっと見ているのが米国ドラマのNCIS
海軍関連の犯罪捜査をテーマにしています。
CSIに名前が似ているというどうでもいい理由で見始めましたが、
これがなかなか面白くって。
シーズン16までありますがまだ道半ばです。

さてこのNCIS、映画ネタが結構出てきますが、
スポーツネタもちょいちょいと。
先日シーズン10(エピソード19)を見ていてTim Tebowネタが。
TebowがNFLでブレイクしたのが2011年末あたりのはずで、
アメリカでの初回放送時期を調べると時期的には合致するかな。
劇中ではさらっとTim Tebowの名前が出るだけでしたが、
日本版作成者が果たしてTebowを知っていたのかどうか。
日本ではマイナーなNFLネタなんて分からないでしょうね。

米国ドラマではNFLネタはちょくちょく挟まれますし、
本人が出演するようなパターンも。
こういうのも楽しみの1つだったりします。
番組のストーリーよりこういうのが記憶に残るんですよね。

2020年7月7日火曜日

WebOS

もう3年以上使っているLGのテレビ43UH6100
これにはWebOSというPalm由来のマルチメディアOSが載っていて
YouTubeやらNetflixやらのアプリケーションが動作しています。
テレビ本体だけで色々できるのはとっても便利。
しかもちゃんとバージョンアップしてより使い勝手が良くなったりします。
ヘビーに使っているAmazonのPrime Videoアプリケーションも
最近アップデートされて10秒スキップができるようになり
激烈に使いやすくなりました。
何しろ寝落ちして同じ番組を何度も途中から見直すもので…

テレビの製品寿命は10年ぐらいだと思いますが、
その間にいろいろな都合で搭載しているアプリケーションが
使えなくなるのはよくあること。
だったら機能が豊富でないテレビを購入し、
単機能の別機器を接続して使用するのが最適とは思いますが、
機器やリモコンは少ないほうがいいのもまた事実。
自分のところでしっかりと長期的にサポートしてくれる
メーカーなら選んで損はありません。
残念ながら日本の家電メーカーって色々外に丸投げで
殆ど売り逃げということが多いですからね。