- 投稿日:
SSHが使えない悲劇に出会った時に。CentOS 7.7で確認。
パスワードは平文保存されるっぽいので、そこら辺は注意が必要。
- 認証情報をキャッシュする設定にする
git config --global credential.helper cache
- キャッシュのタイムアウトを1年くらいにしとく
git config --global credential.helper 'cache --timeout=31536000'
- 投稿日:
確認環境
Windows
あらかじめgpgのパスをPATHに通しておくと良い
参考値:C:\Program Files (x86)\GnuPG\bin
Env | Ver |
---|---|
Windows 10 Pro | Build 19042.804 |
git | 2.30.0.windows.1 |
VSCode | 1.53.2 |
Kleopatra | Gpg4win-3.1.15 |
Linux
Windows側からVSCodeのRemote - SSHで接続
Env | Ver |
---|---|
Ubuntu Desktop | 20.04.2 |
git | 2.25.1 |
gpg | 2.2.19 |
手順
Windows
- Kleopatoraを起動
- ファイル> New Pair Key
- 個人用のOpenPGP鍵ペアを生成
- 期限なし、パスフレーズは適当に
- Exportから
-----BEGIN PGP PUBLIC KEY BLOCK-----
の中身を全部GitHubのGPG keys/ Add new
に貼り付ける - 追加後にでてきた
Key ID
をgit config --global user.signingkey KeyID
としてcmd
に流す - 以下を流す(
gpg.program
はなくても動くが、あったほうが問題が起きない)
```bat
git config --global commit.gpgsign true
git config --global gpg.program "C:\Program Files (x86)\GnuPG\bin\gpg.exe"
``` - 管理者権限で
cmd
を起動し次のシンボリックリンクを作成mklink /D %USERPROFILE%.gnupg %AppData%\GnuPG
- VSCodeで適当なリポジトリを作成
- なんか適当にコミットする
- GitHubに投げる
- GitHubのコミット履歴にverified signatureがついてたら成功
Linux
- Windows側のKleopatoraから公開鍵と秘密鍵をエクスポートして持ってくる
gpg --import FooBarpublic.asc
で公開鍵をインポートgpg -k
でインポートされていることを確認し、下記XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
相当の部分をコピペ
pub rsa3072 2021-01-17 [SC]
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
uid [ 不明 ] Foo Bar <foobar@example.com>
sub rsa3072 2021-01-17 [E]
gpg --edit-key XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
trust
5
を選ぶquit
gpg -k
で信用度が[ 究極 ]
になっていることを確認gpg --import FooBarSECRET.asc
で秘密鍵をインポート- SSHで繋いでいる時でタイムアウトする場合、GUIプロンプトからの入力になっている可能性があるので、どうにかして入力
- XRDP経由なら
pkill gnome-session
を叩くと入れる
- Windowsの時と同様に次のコマンドを流す
git config --global user.signingkey KeyID
git config --global commit.gpgsign true
- VSCodeで適当なリポジトリを作成
- 何か適当にコミットする
- コミットがコケたらXRDPから入力する
- GitHubに投げる
- GitHubのコミット履歴にverified signatureがついてたら成功
CLIからやる場合でパスフレーズを何度も打ちたくないケース
以下の手順が参考になる
トラブルシュート
Key ID
を確認したい
以下のコマンドで確認可能
gpg --list-signatures
GPGキーを消したい
- 投稿日:
いつも使う時に忘れるので自分用の備忘録がてら。組み合わせることでGrep結果の集計とか、ある程度パターン化されているエクセル設計書の集計とかに使える
こんな地獄のような数式使わないに越したことはないと思うんですが、世の中それで済んだらExcelなんて要らないんですよね!
パターンで文字切り出し
A2
に<hoge>あいうえお</hoge>
みたいな文字があるとして
D2
に<hoge>
, E2
に</hoge>
があるとする場合、B2
辺りに以下の数式を入れると特定の文字列で囲まれた文字列を切り出せる
=MID(A2,FIND(D$2,A2)+LEN(D$2),(FIND(E$2,A2)-FIND(D$2,A2)-LEN(D$2)))
条件付き書式を複数列反映
D
列の値を条件として同一行複数列に書式設定するものとする
条件式で$D1="HOGE"
のように列名をロックした式を設定し、範囲をA:G
のようにすると、常にD
列を参照した状態で範囲的に設定できる
最初に出現する行位置の特定
=MATCH("hoge",A:A,0)
ワイルドカード
アスタリスクを生やす
=MATCH("*hoge",A:A,0)
セクション行のグルーピング
Grepとかで抜き出した結果をエクセルに貼り付けてグルーピングする時に使えるやつ
これを
Title |
---|
C:\Hoge\Foo\Src\Hoge001.txt |
100,1: aaaa |
101,1: bbb |
C:\Hoge\Foo\Src\Hoge002.txt |
10,1: aaaa |
11,1: bbb |
18,8: cccc |
... |
こうしたい
Title | Section |
---|---|
C:\Hoge\Foo\Src\Hoge001.txt | Hoge001 |
100,1: aaaa | Hoge001 |
101,1: bbb | Hoge001 |
C:\Hoge\Foo\Src\Hoge002.txt | Hoge002 |
10,1: aaaa | Hoge002 |
11,1: bbb | Hoge002 |
18,8: cccc | Hoge002 |
... | ... |
手法
Sectionを抜く列を作る
B2
だけは決め打ちで2
を入れておき、B3
以降に設定
=IF(ISERROR(FIND(E$2,A3)),B2,ROW())
Section名を抜く列を作る
C2
以降に設定、タイトル行ならD2
とE2
の値を元にA
列の内容を切り出し、タイトル行でなければB
列の値を行番号とし、C
列の行を当てに行くロジック
=IF(ISERROR(FIND(D$2,A2)),INDIRECT("C"&B2),MID(A2,FIND(D$2,A2)+LEN(D$2),(FIND(E$2,A2)-FIND(D$2,A2)-LEN(D$2))))
複数条件でのCOUNTIF
COUNTIF()
で複数条件を実現するには文字列結合した列を作る事があると思いますが、COUNTIFS()
ならその必要はない
=COUNTIFS(条件列1, 条件1, 条件列2, 条件2, ...)
便利関数メモ
よく使うやつ
IF()
,AND()
,OR()
,NOT()
- 条件分岐でよく使う
SUM()
- 集計用。
SUMIFS()
はあんま使ったことない
- 集計用。
COUNTIF()
,COUNTIFS()
- 条件付き集計
COUNT()
,COUNTA()
,COUNTBLANK()
- 個数カウント
VLOOKUP()
,MATCH()
- 検索用
ADDRESS()
,INDIRECT()
,INDEX()
MATCH()
結果からセルを当てる時に有用INDIRECT()
はシート名を書いておくとシート名の変更時に追従しやすい(その際シート名管理用のセルをどっかに作っておく)
FIND()
,LEN()
,MID()
- 文字列切り出しの鉄板
まれに使うやつ
DATEDIF()
- DATEの差分がINTで取れる便利な子