【Git】error: unknown option `initial-branch=main'
gitでエラーが出た;
% git init --initial-branch=main error: unknown option `initial-branch=main' usage: git init [-q | --quiet] [--bare] [--template=<template-directory>] [--shared[=<permissions>]] [<directory>] --template <template-directory> directory from which templates will be used --bare create a bare repository --shared[=<permissions>] specify that the git repository is to be shared amongst several users -q, --quiet be quiet --separate-git-dir <gitdir> separate git dir from working tree
--initial-branch
オプションをご存知でない!?
gitのバージョンが古いだけでした。
gitをアプデしましょう。
以上。
蛇足
エラー吐いたときのGitのバージョン;
% git --version git version 2.24.1
Gitは、どうやら、Homebrewでインスコしてた模様;
% where git /usr/local/bin/git <- Homebrew /usr/bin/git <- macOSランタイム? % ls -go /usr/local/bin/git lrwxr-xr-x 1 28 12 20 2019 /usr/local/bin/git@ -> ../Cellar/git/2.24.1/bin/git % ls -l /usr/bin/git -rwxr-xr-x 76 root wheel 167120 5 10 06:30 /usr/bin/git*
最新のバージョンを確認します。
まずはbrew update
でHomebrew(自身)を最新版にアプデします;
% brew update ... % brew -v Homebrew 3.5.4 Homebrew/homebrew-core (git revision 1abcad8993b; last commit 2022-07-09) Homebrew/homebrew-cask (git revision 0ec7c70cf3; last commit 2022-07-09)
Gitの最新安定版は2.37.0
のようです;
% brew outdated git git (2.24.1) < 2.37.0 % brew info git git: stable 2.37.0 (bottled), HEAD Distributed revision control system https://git-scm.com /usr/local/Cellar/git/2.24.1 (1,554 files, 45.5MB) * Poured from bottle on 2019-12-20 at 23:31:19 From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/git.rb License: GPL-2.0-only ==> Dependencies Required: gettext ✔, pcre2 ✘ ==> Options --HEAD Install HEAD version ==> Caveats The Tcl/Tk GUIs (e.g. gitk, git-gui) are now in the `git-gui` formula. Subversion interoperability (git-svn) is now in the `git-svn` formula. zsh completions and functions have been installed to: /usr/local/share/zsh/site-functions Emacs Lisp files have been installed to: /usr/local/share/emacs/site-lisp/git ==> Analytics install: 267,859 (30 days), 859,304 (90 days), 3,005,421 (365 days) install-on-request: 262,165 (30 days), 840,650 (90 days), 2,942,147 (365 days) build-error: 36 (30 days)
というわけで、Gitをアプデします;
% brew upgrade git
以上で、Gitをアプデできました;
% git --version git version 2.37.0
--initial-branch
オプションもちゃんと使えるようになっていました;
% git init --initial-branch=main Initialized empty Git repository in /Users/hoge/Desktop/test/.git/
めでたしめでたし
参考
【macOS Monterey】codeコマンドを使えるようにする(Visual Studio Code)
Visual Studio Code(以下vscode)をターミナル上から起動するためのcode
コマンドを使えるようにします。
※以下はズルいので無しです:
alias code='open -a "Visual Studio Code"'
Windowsだとvscodeをインストールするだけで、code
コマンドにも自動でパスが通るようです。
なので、以下はmacOS(特にMonterey)の人向け内容です。
環境
% sw_vers ProductName: macOS ProductVersion: 12.4 # Monterey BuildVersion: 21F79 % code -v 1.62.3 ccbaa2d27e38e5afa3e5c21c1c7bef4657064247 x64 % date 2022年 7月 4日 月曜日 06時44分03秒 JST
手順
まず、vscodeは事前にインストールしておいてください。
標準でcode
コマンドが使えないか確認(最新バージョンならできるかも):
% code ## -> 成功すればvscodeアプリが起動する
ダメだったら、コマンドが見つからないとエラーが出る:
% code zsh: command not found: code
vscodeを起動して、cmd + shift + P
で表示される窓にshell
と入力します。
表示されるサジェストから、code
コマンドをインストールします。
ターミナルを起動して、code
コマンドが使えればOK。
% code ## -> vscodeアプリが起動するハズ?
成功した人は以上、成功しなかった人は以下に続く。
pythonコマンドのパスが通ってない
私の環境では以下のようなエラーが出ました:
% code /usr/local/bin/code: line 6: python: command not found /usr/local/bin/code: line 10: ./MacOS/Electron: No such file or directory
python
コマンドが見つからないということですが、macでは標準でpython 2系がインストールされていたような?
と思いましたが、Montereyではpythonが削除されたようです。
なので、pythonをインストールしていない人はインストールします。
※覚えてない人はwhere
コマンドで探してみて下さい:
where python python2 python3
homebrewでインストールするなら:
brew install python@3.9
多分、/usr/local/Cellar/python@3.9/
以下に、pip
とかも含めてインストールされます。
また、おそらく、シンボリックリンク/usr/local/bin/python3
が作られるはずです。
% where python3 /usr/local/bin/python3 <- たぶんこれ /usr/bin/python3 <- こっちはXcodeでインスコされたやつ
リンク先はls -go
(ls -l
)で確認できる:
% ls -go /usr/local/bin/python3 lrwxr-xr-x 1 38 9 13 2021 /usr/local/bin/python3@ -> ../Cellar/python@3.9/3.9.7/bin/python3
以上でpythonのインストールは確認できたが、まだやることがある。
今、python3
コマンドで、インストールしたpythonを実行できる環境にあるが、code
コマンド実行に失敗したときを思い出すと、以下のようなエラーであった:
python: command not found
つまり、code
内で呼んでいるのは「python
」コマンド。
なので、python
コマンドでもインストールしたpythonが呼ばれるように、シンボリックリンクを作成する:
## ln -s リンク先 リンク元 ln -s ../Cellar/python@3.9/3.9.7/bin/python3 /usr/local/bin/python
第1引数で指定してるpythonの実行ファイル(あるいはシンボリックリンク)は、各自の環境に合わせて修正して下さい。
第2引数の方は、シンボリックリンクのファイルですが、ファイル名は必ずpython
とし、配置する場所はパスが通っているところであればどこでも良いです。
以上で、任意ディレクトリからpython
コマンドが利用できるので、code
コマンドも実行できるようになっているはずです。
% code ## -> 今度こそvscodeアプリが起動するハズ
codeコマンドの中身
vscodeのコマンドパレットからcode
コマンドをインストールすると、/usr/local/bin/code
に/Applications/Visual Studio Code.app/Contents/Resources/app/bin/code
のシンボリックリンクが作られるようです。
% ls -go /usr/local/bin/code lrwxr-xr-x 1 68 7 2 15:40 /usr/local/bin/code@ -> /Applications/Visual Studio Code.app/Contents/Resources/app/bin/code
そして、code
の実体はただのシェルスクリプトです。
中身は以下で全てです:
#!/usr/bin/env bash # # Copyright (c) Microsoft Corporation. All rights reserved. # Licensed under the MIT License. See License.txt in the project root for license information. function realpath() { python -c "import os,sys; print(os.path.realpath(sys.argv[1]))" "$0"; } CONTENTS="$(dirname "$(dirname "$(dirname "$(dirname "$(realpath "$0")")")")")" ELECTRON="$CONTENTS/MacOS/Electron" CLI="$CONTENTS/Resources/app/out/cli.js" ELECTRON_RUN_AS_NODE=1 "$ELECTRON" "$CLI" --ms-enable-electron-run-as-node "$@" exit $?
確かに、エラーメッセージ通り6行目でpython
コマンドを実行しています。
これが見つからなくてエラーが出ていました。
シンボリックリンクを作成する代わりに、code
ファイル自体を弄っても対応できますが、まあ前者にしておきましょう。
試行錯誤:エイリアスじゃダメ
そもそも、私の環境ではpython
コマンドが使えました!
というのも、python
という名前でエイリアスを作成していたんですよね:
alias python='/usr/local/bin/python3'
でも、これはzsh
用の設定ファイル~/.zshrc
にしか書いていませんでした。
code
で呼ばれるシェル(shebang)はbash
なので、bash
用の設定ファイル.bash_profile
にもエイリアスを追加してみましたが、それでもダメでした。
結局、よくわからないのですが、エイリアスじゃダメっぽいです。
実際、code
のファイル内に直接alias
コマンドを書いてみましたが、それでもcommand not found
でした。
というわけで、このあたりの仕様がエイリアスとシンボリックリンクの使い分け方になるのかなと思います。
余談:macとpython
昔はmacOSに標準でpython 2系がインストールされていて、python
コマンドが使えたはずです。
どうやらMontereyのバージョンからランタイムpythonが削除されたようです。
なので、これからは自分でインストールする必要があるようです。
おわりに
長くなりましたが以上です。
何でこんなに長いんでしょう。
参考
同様の内容の記事
macOS MontereyとランタイムPython
シェル
【nodebrew】Use of uninitialized value $a1 in numeric comparison (<=>) at ... の解消
nodebrew list
などを実行すると以下のように、頭になんかメッセージが出力される;
% nodebrew list Use of uninitialized value $a1 in numeric comparison (<=>) at /Users/<hoge>/.nodebrew/current/bin/nodebrew line 678. Use of uninitialized value $a1 in numeric comparison (<=>) at /Users/<hoge>/.nodebrew/current/bin/nodebrew line 678. .DS_Store v12.22.6 v15.9.0 v18.4.0 current: v18.4.0
<hoge>
は各自のユーザ名に置き換えてください。
これを解消するには、/Users/<hoge>/.nodebrew/node/
にある.DS_Store
を削除すればいい;
rm /Users/<hoge>/.nodebrew/node/.DS_Store
以上。以下蛇足。
環境
手順
nodebrew list
で.DS_Store
が表示されちゃってることから察するように、この存在が原因。
実際;
% ls -a /Users/<hoge>/.nodebrew/node/ ./ ../ .DS_Store v12.22.6/ v15.9.0/ v18.4.0/
いますね。なので、rm
コマンドなりで消してやれば良い;
rm /Users/<hoge>/.nodebrew/node/.DS_Store
これでもう出なくなりました;
% nodebrew list v12.22.6 v15.9.0 v18.4.0 current: v18.4.0
参考
Macユーザーはロジクール製品を買わないように
ロジクールのmx ergoというマウスを使っていますが、これのBluetooth接続によってMacのスリープ状態が自動的に解除されます。
Macをスリープ状態しなたいのなら、その度にロジクールマウスの電源を切るなどの対応をしないといけません。
夜中だろうがいつだろうが、勝手にMacのスリープ状態を解除し、モニターを点灯させます。
この現象が周知されてからもう半年ぐらい経ちますが、未だにロジクールマウスのソフトウェアアップデートによるバグ修正はありません。ソフトウェアアップデート自体は何度かありましたが、このバグを修正する気は無さそうです。
mx ergo 以外のロジクール製品でも同様の現象が確認されているようですが、ロジクールとしてはやはりこの問題に対応する気はなさそうです。
【Java】配列のclone()について
Javaにおいて、配列に対してclone()
というメソッドが使える。
clone()
メソッドは、配列を「コピー」してくれるのだが、モノによってはshallow copyにもdeep copyにもなりうる。
1次元配列の場合は、deep copyになる。
public class Main { public static void main(String[] args) { int[] a = {0, 1, 2}; int[] b = a.clone(); b[0] = 9; for (int n : a) { System.out.printf("%d ", n); } System.out.println(); for (int n : b) { System.out.printf("%d ", n); } } }
結果:
0 1 2 9 1 2
しかし、2次元配列の場合は、shallow copyになる。
public class Main { public static void main(String[] args) { int[][] c = {{1, 2}, {3, 4}}; int[][] d = c.clone(); d[0][0] = 9; for (int[] nn : c) { for (int n : nn){ System.out.printf("%d ", n); } System.out.println(); } System.out.println(); for (int[] nn : d) { for (int n : nn){ System.out.printf("%d ", n); } System.out.println(); } } }
結果:
9 2 3 4 9 2 3 4
2次元配列をdeep copyしたいなら、1次元ずつcloneする。
public class Main { public static void main(String[] args) { int[][] c = {{1, 2}, {3, 4}}; int[][] d = new int[c.length][c[0].length]; for (int i = 0; i < c.length; i++){ d[i] = c[i].clone(); } d[0][0] = 9; for (int[] nn : c) { for (int n : nn){ System.out.printf("%d ", n); } System.out.println(); } System.out.println(); for (int[] nn : d) { for (int n : nn){ System.out.printf("%d ", n); } System.out.println(); } } }
結果:
1 2 3 4 9 2 3 4
結局、clone()
メソッドを使ったところで、愚直なdeep copyよりforループが1つ少なくて済むだけという話。
愚直なdeep copy:
public class Main { public static void main(String[] args) { int[][] c = {{1, 2}, {3, 4}}; int[][] d = new int[c.length][c[0].length]; for (int i = 0; i < c.length; i++){ for (int j = 0; j < c.length; j++){ d[i][j] = c[i][j]; } } d[0][0] = 9; for (int[] nn : c) { for (int n : nn){ System.out.printf("%d ", n); } System.out.println(); } System.out.println(); for (int[] nn : d) { for (int n : nn){ System.out.printf("%d ", n); } System.out.println(); } } }
というわけで、この記事にはオチがないです。
以上。
参考
【IIS, APS.NET】aspxサイトが文字化けする【Windows10】
現象
Windows標準搭載のWebサーバーであるIISを起動し、ASP.NETで書かれたaspxファイルをブラウザで表示されると文字化けした。
aspxファイルの文字コードはUFT-8。
その場しのぎ
aspxファイルの文字コードを、UFT-8じゃなくてUTF-8 with BOMにする。
一応これで文字化けはしなくなるが...
解決(一応)
IISマネージャーを開いて、サイドバーから今作業している仮想ディレクトリ(とか)を選択。
「○○ホーム」が表示されたら、「.NET グローバリゼーション」というアイコンがあるので、ダブルクリックで開く。
「エンコード」の「ファイル」のところが、私の環境では(デフォルトでは?)shift_jis
になってたのでutf-8
にして、右側にある「適用」を押す。
そうしたら物理ディレクトリにweb.config
ファイルが生成される。
以上の作業の後、ブラウザでページを更新したら、文字化けが治った。
なぞ
文字化けが治った後、web.config
ファイルを削除したら、IIS上での設定の表示がshift_jis
に戻ったが、ブラウザでページを更新してももう文字化けの現象は再現できなかった。
意味がわからない。
上記手順と文字化けの因果関係は確かなものだと思うが、なにがなにやらわからん。
とりあえず、以上。
参考
固定IPの確認方法
「あなたの固定IPを教えてくれ」と言われたら、それは多分グローバルIPアドレスのことを聞かれているのだと思います。
グローバルIPアドレスはインターネットプロバイダから提供されるやつです。
グローバルIPアドレスは動的な場合もあるようですが、普通は固定IPです。
グローバルIPアドレスを確認するには、下記サイトへアクセスするのが最も簡単なようです:
JavaScriptでグローバルIPアドレスを取得して表示しているようです(ソースまでは確認していませんが)。
MacやWindowsの設定アプリやシステム情報からグローバルIPアドレスを確認する方法はわかりませんでした。
Macでいろいろと探しましたが、プライベートIPアドレスしか確認できませんでした。
以上です。
参考
固定IPと動的IPの解説が書かれています。
上のリンクもこのページから引っ張ってきました。