DIR=$(cd $(dirname $0); pwd)
DIR=$(realpath $(dirname $0))
pwdを使用する場合は、実在しているディレクトリのみ。
realpathはオプション指定で実在している必要はない。
メモ雑書き
DIR=$(cd $(dirname $0); pwd)
DIR=$(realpath $(dirname $0))
pwdを使用する場合は、実在しているディレクトリのみ。
realpathはオプション指定で実在している必要はない。
現時点(2025/06)では設定ではできなくなくなってしまった。
検索したあとに表示されるurlに「&udm=14」を追加するとAI表示はなくなる。
検索したときに表示されるタブが「すべて」になっているとAI表示も行われてしまうため、これを「ウェッブ」とすることで表示がされなくなる。
アドオンも「&udm=14」で検索すると色々出てくるが、このぐらいならアドオンによるリスクを負わなくてもいいような気もする。
https://atmarkit.itmedia.co.jp/ait/articles/2411/15/news036.html
ANSIかUTF-8(BOM付き)のどちらか。
Unix系のではテキストファイルはUTF-8(BOM付き)は正しく処理されない。
Visual Studio CodeではテキストファイルはUTF8NoBOMで保存される。Ascii文字以外の文字が含まれると文字がPowerShellは正しく処理されない。
結論として、
PowerShellスクリプトでAscii文字以外を使用するには、UTF-8(BOM付き)にする必要がある。PowerShellスクリプトファイルはBOMがないファイルはANSIとして処理される。
https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_character_encoding?view=powershell-7.5
Write-Host 非推奨
Write-Verbose ユーザー側でVerbose パラメーターで出力を指定できる。
Write-Output 出力される。
https://learn.microsoft.com/ja-jp/powershell/utility-modules/psscriptanalyzer/rules/avoidusingwritehost?view=ps-modules
構文
-split <String>
-split (<String[]>)
<String> -split <Delimiter>[,<Max-substrings>[,"<Options>"]]
<String> -split {<ScriptBlock>} [,<Max-substrings>]
Max-substrings
PowerShell 7以降:マイナス指定で末尾から数えて処理される。
https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_split?view=powershell-7.5
| 関数 | 呼び出し元の参照 (thisは省略可能) | 戻り値 | 用途 |
|---|---|---|---|
| apply | this | 呼び出し元のインスタンス | プロパティ設定 |
| also | it | 呼び出し元のインスタンス | プロパティ設定 |
| let | it | ラムダの結果 | メソッドの実行 nullチェック |
| run | this | ラムダの結果 | メソッドの実行 |
| with | this | ラムダの結果 | メソッドの実行 |
[Kotlin]スコープ関数 apply,also,let,run,withの使い分け https://pouhon.net/kotlin-sfunction/1392/
初期化タイミングを変数を初めて使用する時に初期化する
lateinit、by lazy
プリミティブ型には使用できない。
varで宣言する必要がある。
必ずnon-nullとなる。
class MainActivity : AppCompatActivity() {
private lateinit var textView: TextView
override fun onCreate(saveInstanceState: Bundle?) {
super.onCreate(saveInstanceState)
textView = findViewById(R.id.text_view) // ここで初めて初期化される
}
// …
}
varで宣言するので、再代入には注意すること。
by lazy
型の制限はない。
valで宣言する必要がある。
nullable / nun-nullどちらでも可能
対象のプロパティが初めて呼び出されたときに初期化される。
初期化されたら必ず同じ値を返す。
class MainActivity : AppCompatActivity() {
private val userData: User? by lazy { fetchUserData() }
override fun onCreate(saveInstanceState: Bundle?) {
super.onCreate(saveInstanceState)
userData?.let { showUserData(it) } // ここで初めて初期化される
}
// …
}
ビューをlazyで初期化した場合、変更を加えても反映されない。
プロパティーにnullが入る可能性がある場合はlazyを使う必要がある。
by lazyは初期化処理を記述する必要があるので、記述上各メソッドの処理はスッキリさせることができる。
Qiita 【Android】lateinitとby lazyの使い分け【Kotlin】 https://qiita.com/u-dai/items/a31c5c2a7d5c7ed2cc47