misc
分類に困った小ネタ集です.
shell周りが多いと思います.
Warp ベータ版は日本語対応してない
解散
reference
CPU温度の監視(macOS)
sudo powermetrics -s smc | grep "CPU die temperature"
CPU die temperature: 78.96 C
reference
comment
旧version
最初は
sudo powermetrics | grep -e "CPU die temperature"
にしてたけどproc_pidpath ***** failed(0)
が出てきてウザかったので上記のcommandに変更.
awkできない
よくわかんないけど
sudo powermetrics -s smc | grep "CPU die temperature"| awk '{print $4}'
とかやって温度の数値だけ抜き出そうとしても何も出てこない.
最初のgrep
はできているのに...?
#これはいける
echo "CPU die temperature: 65.67 C"| awk '{print $4}'
65.67
Venture不可
3rd party appが必要っぽい
terminalの表示名を変更する
shell変数のPS1
を変更するとterminalで常に表示されているuser名とかcurrrent directoryとかが表示されているのが変更できる.
user名@PC名 current directory %
export PS1="%C "'%% '
こうすると
current directory %
こうなる.
reference
comment
zshで%
をescapeするには%%
.
プロンプトと言うらしい.
shellで小数の桁指定
(ba)shだとたぶんpythonとか使うのが一番簡単(なんだそれ)
python -c "print(f'{1.22/2:.2f}')"
0.61
zshならprintfでOK
printf "%.2f\n" $((1.22/2))
0.61
comment
bashの小数演算がめんどくさすぎる.
python version 3.6以上で使えるf-stringというのを用いている.
1.22/2
を.2f
で表示してくださいという意味になっている.
TODO
- formatの記法
- shell変数
${A}
を含む場合,Pythonのplace holderにつかう括弧と衝突するのでなんとかしないといけない
小数の割り算を計算をしてから整数に変換
echo "$A/$B" | bc -l | xargs printf "%.0f"
scale
がややこしいのでbc -l
にしてscale=20
になるようにしている
整数にするのは"%.0f"
が楽
画像とかの変換系
探せばすぐ出てくるけど探すのが面倒で...
pdf→png
brew install poppler
pdftoppm {input.pdf} {output.file} -png
{output.file}
は拡張子なし
dpiの変更
-r {value} # DPI (default: 150)
-rx {value} # 横方向のDPI (default: 150)
-ry {value} # 縦方向のDPI (default: 150)
他に使いそうなoption
-singlefile #単一page pdfを変換するときに指定すると出力されるfile名に番号がつかない
svg→png
inkscape -w 1024 -h 1024 input.svg -o output.png
Markdownでacuteとか
HTML用に特殊文字が用意されている.
acute
Poincaréとか
&{}acute;
で{}にalphabetが入る.
Poincaré
のように書く.
あるやつとないやつがある
é
みたいに番号で直接指定も可能
umlaut
Schrödingerとか
&{}uml;
で{}にaiueoyAIUEOY
が入る.
Schrödinger
のように書く.
double acute
ő
ø(空集合記号∅ではない)
o slashとかいうらしい.
Møllerとか
ø
ちなみに空集合記号∅は∅
reference
comment
番号の方はUnicodeで分かりやすい方はHTML用に用意されているものっぽい.
VESTAの使いかた
- 水素結合は
bond
からOH結合から消せる - 一部の原子だけ表示するには
boundary
から - abc軸を表す矢印は消せる
スライドデザイン系
レインボーカラーセットをやめろ
明朝体を使うな
黒を使うな
>
を1つだけ挿入する
空行を含めて全ての行頭にsed -i -e 's/^$/> &/' -e 's/^\([^>]\)/> \1/' your_file.text
Hermite行列の指数函数がunitaryになるとき係数は純虚数
Hermite行列
このとき
まず, Herimite行列はunitary行列で対角化可能なので,
この表式を用いると
となる.
次に,
となる.
最後に
となることに注意すると
となる.
そのためには
これは
これらの記号を含むpasswordの生成
pwgen 12 -cnysB1 -N1000| grep -E '^[a-zA-Z0-9\-\.\@\+\$\#\!\/\_]{12}$'
homebrewでinstallしたときにPATHを解決しない場合がありcompile時にinclude/link optionを指定する必要がある場合がある.
- brewの用語でkeg-onlyという
- 例えば, LAPACK/BLASをinstallしたときにAccelerate frameworkと衝突しないようにするために発生する
-
brew info openblas
とかやると見れる
OpenBLAS
LDFLAGS: -L/opt/homebrew/opt/openblas/lib
CPPFLAGS: -I/opt/homebrew/opt/openblas/include
- 渡すべきPATHは環境によって異なる可能性があるためPATHは適宜書き直す必要がある.
- とにかくhomebrewの下にある
openblas/lib
とopenblas/include
の場所を渡せば良い.
For pkg-config to find openblas you may need to set:
export PKG_CONFIG_PATH="/opt/homebrew/opt/openblas/lib/pkgconfig"
LAPACK
export LDFLAGS="-L/opt/homebrew/opt/lapack/lib"
export CPPFLAGS="-I/opt/homebrew/opt/lapack/include"
For pkg-config to find lapack you may need to set:
export PKG_CONFIG_PATH="/opt/homebrew/opt/lapack/lib/pkgconfig"
OpenMP
libomp is keg-only, which means it was not symlinked into /opt/homebrew,
because it can override GCC headers and result in broken builds.
For compilers to find libomp you may need to set:
export LDFLAGS="-L/opt/homebrew/opt/libomp/lib"
export CPPFLAGS="-I/opt/homebrew/opt/libomp/include"
LLVM Clang
If you need to have llvm first in your PATH, run:
echo 'export PATH="/usr/local/opt/llvm/bin:$PATH"' >> ~/.zshrc
For compilers to find llvm you may need to set:
export LDFLAGS="-L/usr/local/opt/llvm/lib"
export CPPFLAGS="-I/usr/local/opt/llvm/include"
Modules
To activate modules, add the following at the end of your .zshrc:
source /opt/homebrew/opt/modules/init/zsh
You will also need to restart your terminal for this change to take effect.
brewで入るHPC用soft
以下全てbrew install hoge
の形
# build
cmake
gcc # GNU C compiler
llvm # LLVM clang
ninja
# BLAS/LAPACK
lapack
openblas
scalapack
# MPI
open-mpi
mpich
# OpenMP
libomp
# Misc
juliaup # julia
rustup-init # rust
# package maneger
conan
spack
rootでMPI実行
Intel oneAPIの初期化
source /opt/intel/oneapi/setvars.sh
PostgreSQL
To start postgresql@14 now and restart at login:
brew services start postgresql@14
Or, if you don't want/need a background service you can just run:
/opt/homebrew/opt/postgresql@14/bin/postgres -D /opt/homebrew/var/postgresql@14
buildが終わったら通知する(macOS)
こういうやつ
BUILD_COMMAND && osascript -e 'display notification "Build finished" with title "Build"'
通知をoffにしていると表示されないのでその場合はpopup windowにする
こういうやつ
BUILD_COMMAND && osascript -e 'tell app "System Events" to display dialog "Build finished"'
shellの函数にしてみた
再帰的にtouch
find . -type f -exec touch {} +
Limaでx86_64 VM on M1 Mac
brew install lima
intel macで使っていたHomebrewをM1 macでそのまま使うと不具合が出る
自分はlimaのinstallでこけた.
おそらくx86_64 or AArch64がどうとかキレられたのはこれのせいな気がする
1. Homebrewをuninstallする
NONINTERACTIVE=1 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)"
2. Homebrewを再installする
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
最新のcommandは以下で確認
参考文献
スパコンにninjaを入れる
前提
- Git
- CMake
- sudo不可
やること
sudoなければsource build
build command
git clone https://github.com/ninja-build/ninja.git
cd ninja
cmake -Bbuild-cmake -DCMAKE_INSTALL_PREFIX=$HOME
cmake --build build-cmake
cmake --install ./build-cmake
補足
-
build-cmake
はbuild用のdirectory名なので変更して良い -
-DCMAKE_INSTALL_PREFIX=$HOME
は$HOME
(=loginしたときに最初にいるdirectory)にbinaryを置く設定.~/bin/ninja
のようにinstallされる. したがって$HOME
の部分は自分がinstallしたい場所に変更して良い.
参考文献
C++のecosystem
compiler
build
package manager
test
code整形
documentation
- Doxygen
- MKDocs
- ...
未整理...
- Valgrind
- Sanitizers
- gprof/gdb
- IDE?
クリップボードに何か処理してクリップボードにコピー
pbpaste | なんか処理する | pbcopy
ModuleNotFoundError
Rye: - Ryeで作成したvenv環境をkernelとしたJupyter Notebook環境(VScode)で
No module named pkg_resources
と表示され,追加しているはずのmoduleがimportできなかった. -
rye add setuptools
でsetuptools
を依存関係に追加したら解決した -
qiskit_ibm_provider
で発生
TensorFlowの互換性
- 旧:
tf.set_random_seed(0)
→新:tf.random.set_seed(0)
https://ameblo.jp/syota-cocoa2/entry-12724275193.html
Rye
便利そうな参考文献
Shell: 標準出力の最初のn行を飛ばす
tail -n +[n+1]
[n+1]
は実際は数値なので注意(e.g. 最初の1行を飛ばす:tail -n +2
)
known_hosts
にある鍵の消し方
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
とか出たときにknown_hosts
にある鍵を消さないといけない.一応手でも消せるが
ssh-keygen -R [host name or IP address]
で消せる.
uname -m
とarch
の違い (macOS)
$ uname -m
arm64
$ arch
arm64
$ uname -m
x86_64
$ arch
i386
Z shellで読み込まれるprofile/rc filleとその順番
各dotfileにechoを入れて検証(macOSで試しただけ)
zsh --login
)
login shell (.zshenv
→.zprofile
→.zshrc
zsh
)
非login shel l(.zshenv
→.zshrc
zsh --login --norcs
or zsh --norcs
--norcs
を付けるとlogin shellか非login shellかに関わらず何も読み込まれない
他に.zlogin
や.zlogout
などがあるが自分は使用していないのでパス.
水平に出力を連結~hcat的な: paste
- 引数はfile名
- 連番は
paste list-[1-3].dat
- 不連続あるいは非番号は
paste list-{24,56}.dat
fileから特定の列を最初の列に新しく追加して水平方向に連結
awk '{print $4}' list[1-4].dat | paste <(for i in $(seq -w 0.0 0.1 1.0); do echo "$i" ;done) - - - -
A0 posterをA4に分割して印刷する用のpdfを作成
brew install mupdf
mutool poster -x 4 -y 4 input.pdf output.pdf
便利そうなcommand line tool
- hgrep: Grep with human-friendly search results
- hyperfine: A command-line benchmarking tool
- pdfgrep: a commandline utility to search text in PDF files
- cheat: cheat allows you to create and view interactive cheatsheets on the command-line. It was designed to help remind *nix system administrators of options for commands that they use frequently, but not frequently enough to remember.
GitHub Copilot
fish移行memo
大体ここに書いてある
.zshrc
& .zprofile
→ ~/.config/fish/config.fish
source ~/.config/fish/config.fish
変数とexport
-
HOGE=fuga
→set HOGE fuga
-
export HOGE=fuga
→set -x HOGE fuga
https://natsukium.github.io/fish-docs-jp/tutorial/shell_variables.html
.venv
-
. venv/bin/activate
→source .venv/bin/activate.fish
https://qiita.com/kaito__/items/512b6de678d88c85aa7d
Homebrew
同じ
eval (/opt/homebrew/bin/brew shellenv)
算数は良さそう
Notion, Obsidian, Logseqの比較
Notion
- 良いところ
- みんな使ってる
- 悪いところ
- 重い
- localなmarkdown fileが生成されない(他のtoolはhoge.mdが作成される)
- 日本語の後に
$$
を入力して数式modeにしようとしても数式がrenderingされない($$
の前にspaceが必要)