powershellのタブ補完をBashみたいにする

以下を実行

この設定を保持するには、C:\Users\[User]\Documents\WindowsPowerShell\profile.ps1 に書く。

ソース:https://stackoverflow.com/a/37715242

正規表現の先読みと後読み

すごく難しい。

肯定先読み

以下のパターンを考える。

以下の文字列はマッチしない

参照:https://regex101.com/r/ii0Brz/1

アルゴリズム

  • 123まではヒットしないのでスルー
  • Aがヒット
  • Bがヒット
  • Bがヒットした時点で、検索開始位置はBになる、これがCとヒットしないのでマッチしない。

このパターンはPositive Lookaheadと呼ばれる。日本語だと肯定先読み。意味としてはPositiveならそのまま進めるくらいの意味だと思う。

Bがヒットした時点で(?=)はパターンから消えて、パターンACが文字列BC456から検索されるといってもいい。

肯定後読み

同様にパターンA(?<=B)CABC456にマッチしない。参照:https://regex101.com/r/tEyPG2/1

アルゴリズム

  • Aがヒット
  • Bがヒット
  • Bがヒットした時点で、パターンのA、文字列のCから検索されてマッチしない。

別の言い方でまとめ直し

パターン A(?=B) は、
Aの次にBが来るもののA

パターン A(?=B)C は、
Aの次にBが来るもののA、の次にCが来るもの
よって絶対マッチしない。

パターン (?<=B)C は、
Cの前にBが来るもののC

パターン A(?<=B)C は、
Aの次に、Cの前にBが来るもののC
よって絶対マッチしない。

C++メモリが確保できないときの処理 Windows

メモリが確保できないときのデフォルトの処理

malloc

NULLを返す

new

std::bad_alloc例外を投げる。

_set_new_handler

_set_new_handlerを使うと、newでメモリが確保できなかったとき呼ばれる関数(ハンドラ)を指定できる。この関数はガーベージコレクションとして使われることが想定されていて、0以外を戻すと再度メモリ確保が試みされて失敗すればまたハンドラが呼ばれる。0を返すと失敗で、std::bad_alloc例外が投げられる。

上記ソースでは試していないが、_set_new_mode(1)を呼べば、mallocのときでも同様の処理ができるようだ。

ソースコード

git rev-parse

gitのrev-parseコマンドは外部的な表現のコマンドを内部的な表現に変換する。例えばHEADなどをSHA1のハッシュ文字列に変換する。

git rev-parse –abbrev-ref=strict HEAD