====== tips ======
* [[.:dokuwiki|Dokuwiki]]
* [[.:clipstudiopaint:start| Clip Studio Paint]]
* [[.:blender:start|Blender]]
* [[.:python:start|Python]]
* [[.:cpp:start|C++]]
* [[.:fortran:start|Fortran]]
* [[.:atcoder:start|AtCoder]]
* [[.:vscode:start|Visual Studio Code]]
* [[.:powerpoint:start|PowerPoint]]
===== Illustrator =====
''~/ライブラリ/Application Support/Adobe/Adobe Illustrator 23/ja_JP/ ''
===== ファイル検索・ディレクトリ検索 =====
=== 名前で検索 ===
やり方は2通りあるっぽい?
* 名前一覧を出してから該当のものを抽出 ''find ~ | xargs grep ~''
* 該当する名前自体を検索 '' find ~ -name ~ ''
特徴
* findで指定するnameは正規表現ではない (bash的)
* findは基本的に下位ディレクトリすべてを検索する
* findでは隠しファイルもデフォルトで見える
^ 基本 ^^
| find <場所> ||
^ findオプション一覧 ^^
| ''-name'' | ファイル名・ディレクトリ名 |
| ''-exec'' | 該当ファイル・ディレクトリに対して処理 |
| ''-type'' | ファイルかディレクトリかに絞る |
^ やり方一覧 ^^
| 再帰的にディレクトリをカレントディレクトリ以下から検索 | ''find . -name 'site-packages' -type d'' |
=== 内容で検索(テキストファイル) ===
grep -rl hoge .
===== リポジトリ内コードの検索 =====
現在いるディレクトリ配下の全ファイルを再起探索して ''checkpoint'' という文字列のある行を列挙する.
find . -type f -name "*.py" -print | xargs grep 'checkpoint'
===== yaml =====
=== 空の辞書 ===
次のようにして空の辞書を作成できる.\\
''hoge: {}''
=== アンカー・エイリアスを使ったコピペ ===
pyyamlでもanchorとaliasがサポートされていて以下のようにして使える.
loader:
name: poseloader2
params: &batch_setting
batch_size: 4
shuffle: True
num_workers: 6
pin_memory: True
loss:
generator:
name: poseGANgen
params:
<<: *batch_setting
adversarial_loss: 1
nn_l1_vgg_loss: 0.01
loss.generatorは ''{'name': 'poseGANgen', 'params': {'batch_size': 4, 'shuffle': True, 'num_workers': 6, 'pin_memory': True, 'adversarial_loss': 1, 'nn_l1_vgg_loss': 0.01}}'' となる
extend(上書き)なども容易 [[https://tech-1natsu.hatenablog.com/entry/2018/12/16/004215|参考]]
変数一個だけコピペしたいときは以下のように
logger:
- name: end_train
params:
scale: iter
freq: &endi 250
- name: vis_val_data
params:
freq: 10
num_img: 10
end_iter: *endi
===== バックアップの管理 =====
* [[https://searchman.info/tips/2950.html]]
* 指定した日数以前のファイルを削除するようなコマンドがある
* 毎日バックアップ + 数十日経ったファイルの削除 がベスト?
===== CSS =====
==== セレクタ ====
^ 表すもの ^ prefix ^
| タグ名 | 何もなし |
| id | ''#'' |
| クラス | ''.'' |
* [[http://www.htmq.com/csskihon/005.shtml|CSS2セレクタ]]
* [[http://www.htmq.com/css3/|CSS3セレクタ]]
| 子孫 | 空白一つ開ける | |
| | タグ名.クラス | |
| | タグ名#ID | |
| 並列 | セレクタ, セレクタ | |
| 弟 | ''~'' | これより後のやつに適用\\ 例) ''.sectionedit2 .row8 ~ tr'' row8クラスのtrタグより後のtrタグに適用 |
FLOCSSという考え方でCSSを作成するべき.CSSの基礎的な考え方[[https://qiita.com/sueshin/items/c80151181d06649e2ff6]]
==== その他 ====
* ''visiblity:hidden''は要素の場所だけ確保して空白に.''display:none''は要素が存在しないかのようにレンダリング.
===== Windows =====
==== スクリーンショット ====
snipping toolというプログラムを起動してやると便利.
===== Makefile =====
* [[https://www.talkwithdevices.com/archives/49|Makefile内の変数について]]
* [[https://qiita.com/Shigets/items/27170827707e5136ee89|Makefile 変数]]
* [[https://pod.hatenablog.com/entry/2018/05/10/194204|foreach]]
* [[https://dev.classmethod.jp/etc/rename_massive_files/|一括リネームやコピーなど]] Makefileと合わせて使えば色々とできそう
=== 何もしない ===
hoge:
@:
===== cmake =====
''CMakeLists.txt'' の書き方.
===== VSCode =====
* [[https://qiita.com/bellota/items/c94b710a9c8fdf17ad2f|フォントの設定方法]]
* [[https://qiita.com/kaityo256/items/d39884c36bd5b35e6427|コピーを書式なしにする設定]]
=== バイナリエディタ ===
code --install-extension slevesque.vscode-hexdump
===== Vagrant =====
以下のコマンドを実行してインストール.virtualbox のインストール時はTUIが開く.
sudo apt install virtualbox virtualbox-ext-pack
sudo apt install vagrant
===== GPUドライバの確認 =====
通常のUbuntu(Desktop)なら ''ubuntu-drivers'' コマンドがプリインストールされていてドライバの確認が簡単.
=== 推奨されているドライバの確認 ===
ubuntu-drivers devices
=== Linux GUI の基礎 ===
ディスプレイマネージャはLinuxに共通なX Window Systemというシステムの上で動いてGUIを提供する.
Ubuntu18では16のLightDMではなくGDM(GNOME Display Maneger)なので''service gdm stop''で止める(?).
Ubuntu18.04では''Ctrl + Alt + F3''でCUIになるようである.
''apt-cache madison hogehoge''でどこからインストールされるものかがわかる.
これを使ってドライバがGraphics Drivers Teamであることを確認する.
''pkill Xorg''でX Window Systemを落とす.
=== メモ ===
ubuntu20.04サーバーから graphics-drivers-team のドライバを入れるのが難しくなった?
ubuntu公式にも nvidia-driver が配布されていてそっちが優先されていそう.
しかも入れたら Xorg まで付いてくるクソ.
apt-cache depends gdm3 : gdm3 が必要としている依存パッケージ一覧
apt-cache rdepends gdm3 : gdm3 を必要としている依存パッケージ一覧
===== bash =====
* [[https://qiita.com/caad1229/items/6d71d84933c8a87af0c4|Bashプロンプトにgitブランチ名を表示]]
* ''~/bash_profile'' : ログイン時実行
* ''~/bashrc'' : bash起動時実行
* ''~/.tmux.conf'' : tmux起動時の実行
=== if文で使えるファイル演算子 ===
* [[https://qiita.com/egawa_kun/items/196cd354c0d8e4e0fefc|Qiita]]
* ''-s'' や ''-f'' などのファイル判定について
===== tmux =====
* 各paneの高さを同じにするtmux select-layout even-vertical
* 別の端末から入ったときにサイズが合わないのを何とかする。 tmux a -d -t hoge
===== PDF操作 =====
PDF関係の処理に便利そうなソフトがいくつかある.
^ ソフト ^ インストール ^ メモ ^
| ImageMagick | ''sudo apt install imagemagick'' | ubuntu GUI版は初期設定で入っているっぽい |
| Inkscape | | |
| pdftk | | |
| pdfinfo | | |
=== jpg画像をpdf形式に (ImageMagick) ===
ImageMagickのconvertコマンドを使う.
ただし初期設定ではできないので ''/etc/ImageMagick-6/policy.xml'' を編集する必要がある.
...
...
を
...
...
に書き換える.
convert hoge.jpg hoge.pdf
で変換できるようになる.
=== 複数のjpgを複数ページpdfに変換 (ImageMagick) ===
メモリエラーとなることが多い.
キャッシュファイルの設定を変えるのが良い.
''/etc/ImageMagick-6/policy.yml''の以下の部分を
...
...
以下のように変える.
...
...
以下のように使う画像をすべて書いてPDFを作る。ワイルドカードで指定しても良い。
convert page1.jpg page2.jpg page3.jpg hoge.pdf
=== PDF を画像に変換 ===
pdftoppm -png hoge.pdf fuga
こうすると ''hoge.pdf'' が ''fuga-1.png'', ''fuga-2.png'' みたいな感じで全ページ PNG になる。
=== パスワード解除済みPDFを作成 ===
qpdf -password= -decrypt /path/to/secured.pdf out.pdf
=== (補足) OpenCV で jpg圧縮 ===
cv2.imwrite('hoge.jpg', img, [cv2.IMWRITE_JPEG_QUALITY, 75])
==== 論文用作業 ====
=== PDFのクロップ (Acrobat) ===
* https://helpx.adobe.com/jp/acrobat/using/crop-pdf-pages.html
* 第二ツールバーの「PDFを編集」->「ページをトリミング」
* ドラッグで範囲を選択、選択範囲内をダブルクリックで保存ウィンドウを開く
* ページ「すべて」を選択したら全部クロップできる
=== PDFテキストアウトライン化 (Acrobat) ===
* 第二ツールバー「印刷工程」->「プリフライト」->「フォントをアウトラインに変換」を選択
* 「解析してフィックスアップ」で保存
=== PDFの最適化 ===
* 第二ツールバー「PDFを最適化」
===== ffmpeg =====
=== インストール ===
ffmpegのインストールは面倒なので Docker を使うと良い.
docker run -v $PWD:/tmp/workdir jrottenberg/ffmpeg \
-i /tmp/workdir/hoge.mkv -vcodec libx264 -acodec aac /tmp/workdir/hoge.mp4
注意点としては現在のディレクトリを''/tmp''として渡すためinput/outputも''/tmp/''付きの絶対パスで指定するということである.
=== 音声選択 ===
''-map 0:a:1'' 入力の1番目の音声ソースを0番目の音声ソースにマップする.\\
つまり ''-map 出力インデックス:a:入力インデックス''
(ビデオの方も設定する必要がある?)\\
''-map 0:v'' とすると0番目が0番目にマッピングされる.
=== コーデック ===
オーディオ ''-acodec aac''
=== concat ===
ffmpeg -i audio.webm -i video.webm -c:v copy -c:a copy -map 0:a:0 -map 1:v:0 -strict -2 output.mp4
=== mac で再生したい場合 ===
quicktime player が yuv420p しか受け付けてくれない?ので
-pix_fmt yuv420p をつける.
or ''-vf format=yuv420p'' ?
字幕が入っている場合は ''-sn'' したほうが良い?
''-map_chapters -1'' も必要?
===== youtube-dl =====
=== インストール ===
conda 環境下で ''pip install youtube-dl'' するのが楽そう.
最近は、 ''yt-dlp'' の方が良いらしい。
=== ダウンロード ===
YouTube で動画URLの ''v=hogehoge'' の部分を見る.
以下のようにダウンロード.
youtube-dl -f bestvideo+bestaudio ID
映像部分と音声部分がバラバラにダウンロードされる.
音声がwebm になっていたら(opusコーデックだと思うので)再生するのが面倒.なので aac に変換.変換しなくていい場合は ''aac'' の部分を ''copy'' とすれば良い.
docker run --rm -v $PWD:/tmp/workdir jrottenberg/ffmpeg \
-i audio.webm -i video.mp4 -c:v copy -c:a aac -map 0:a:0 -map 1:v:0 -strict -2 output.mp4
2023/05/30) ''vp8'' コーデックが無いみたいなエラーが出たので、 ''-c:v copy'' を ''-c:v libx264'' にしてみると動いた。
ffmpegのある環境では以下で一気に動画にできる.
youtube-dl -f bestvideo+bestaudio --merge-output-format mp4 ID
===== リモートワーク =====
==== ssh ====
=== 複数ポートフォワーディング ===
以下のように ''-L'' のオプションを複数個書けば複数のポートを同時に送れる。
ssh -L 9000:localhost:9000 -L 9001:localhost:9001 hoge
=== autossh フリーズ対策 ===
autossh でポートフォワーディングをしているといつの間にかフリーズして
すべての ssh ができなくなることがある.
この場合は ssh-agent を再起動する必要がある.
''eval "$(ssh-agent -s)"'' して ''kill -9 PID'' するのが必要.
=== リモートマシンのネットワークでブラウザを使う ===
例として shiki という Host に ssh できて、 39393 というポートでネットワークを迂回するとする。
ssh -D 39393 shiki
使用中ポートでなければエラー無く動くはず。
手元のマシンの firefox で 設定 > 一般 > ネットワーク > 接続設定 > 手動でプロキシーを設定する\\
> SOCKSホスト : localhost ポート : 39393\\
とすると firefox でリモートのネットワーク内にある web サイトなどにアクセスできる。(X転送したfirefoxでやるみたいなことをしなくて良い。)
=== 通信速度の計測 ===
アップロード
dd if=/dev/zero bs=1M count=100 | ssh username@123.456.789 'dd of=/dev/null'
ダウンロード
ssh username@123.456.789 'dd if=/dev/zero bs=1M count=100' | dd of=/dev/null
=== scp での帯域制限 ===
scp をすると send disconnect で落ちることがある。転送速度の速さが制限されている可能性があるため、帯域制限をする必要がある。
以下は 20Mbit/sec 制限。
scp -l 20000 hoge.zip my_server:/path/to/dir/
===== overleaf =====
=== オンプレミス ===
docker run -it --rm sharelatex/sharelatex:2.5.0
===== メール =====
[[https://docker-mailserver.github.io/docker-mailserver/edge|docker-mailserver]] でやっていく。
* Gmail で転送をやろうとすると受け手側で OK しないといけない
* エイリアス設定するのが簡単か
postfix の部分直接いじればメーリングリストっぽく設定もできる\\
http://www.postfix.org/VIRTUAL_README.html#forwarding
===== zip =====
* deterministic な zip ファイルを作る [[https://zenn.dev/amane/articles/fc454d5e471ffc]]
=== コマンドオプション ===
zip -r new_file.zip want_to_freeze_dir/
===== 大きなファイルの分割 =====
===== exiftool を使った写真ファイルタイムスタンプ変更 =====
撮った写真をカメラから手元に転送してきたときに、
ファイルのタイムスタンプが撮影時刻ではなく転送時刻になってしまうことがある。
Linux で開いて変更してやるのが良い。
sudo exiftool "-FileModifyDate
mp4 に関しては
sudo exiftool "-FileModifyDate
=== タイムスタンプの足し算 ===
for f in *.MP4; do
DATE=$(exiftool -s3 -MediaCreateDate "$f")
FORMATTED=$(echo "$DATE" | sed 's/:/-/1; s/:/-/1')
echo "origin : $FORMATTED"
if [ -n "$DATE" ]; then
NEWDATE=$(date -d "$FORMATTED +1 month +1 day" +"%Y:%m:%d %H:%M:%S")
echo "Setting $f timestamp to $NEWDATE"
exiftool "-FileModifyDate=$NEWDATE" "$f"
else
echo "Skipping $f: no MediaCreateDate found"
fi
done
=== android のマウント ===
andoroid スマホをLinuxに直接マウントして操作する場合は
https://fishrimper.blogspot.com/2018/01/mtp.html
何があるか見る
jmtpfs -l
jmtpfs -device=1,22 test/
=== exfat のマウント ===
sudo apt install exfat-fuse exfat-utils
sudo mount -t exfat-fuse /dev/sdc1 /mnt/sdc1
===== bootstrap5 =====
texparalleltranslate リポジトリ参考
=== 大きさで表示されるものを切り替える ===
xs のときに縦、xl のときに横に表示するようなUIを作成したとき、
周辺部分の表示内容を変えたいときがある。
たとえば、縦のときは「↓」、横のときは「→」をUIに表示するときにこれが必要。
CSS を設定しておくだけで変えられて便利。
Bootstrap5 表示オプション
d-block : 基本状態が表示
d-none : 基本状態が非表示
d-XX-block : XX 以上で表示
d-XX-none : XX 以上で非表示
| xs | sm | md | lg | xl | xxl |
---------------------------------------------------
d-block | o | o | o | o | o | o |
d-block, d-md-none | o | o | x | x | x | x | (visible Less Than MD)
---------------------------------------------------
d-none | x | x | x | x | x | x |
d-none, d-md-block | x | x | o | o | o | o | (visible Greater Equal MD)
d-block や d-none は display を設定するもの。 d-block じゃなくて d-flex とかもありかも
つまり、 d-block だけのときは常に非表示だけど、d-blockとd-md-none を両方設定しておくと、サイズがxs,sm のときだけ表示、それ以上で非表示になる。
=== パネル切り替え ===
Bootstrap5 パネル切り替え
| 役割 | クラス | 初期表示 | 依存 | ID
----------------------------------------------------------------------------------------------------------------------------------------------------
- ul/ | (role=tablist) | .nav.nav-pills | | | |
- li/ | (role=presentation) | .nav-item | | | |
- a | (role=tab,data-gs-toggle=tab) | .nav-link | (aria-selected="true") .active | (href="#HOGE" aria-controls="HOGE") | HOGE-switch | 表示
- li/ | (role=presentation) | .nav-item | | | |
- a | (role=tab,data-gs-toggle=tab) | .nav-link | (aria-selected="false") | (href="#FUGA" aria-controls="FUGA") | FUGA-switch | 非表示
- parent/ | | .tab-content | | | |
- child | (role=tabpanel) | .tab-pane.fade | .show .active | (aria-labelledby="HOGE-switch") | HOGE | 表示
- child | (role=tabpanel) | .tab-pane.fade | | (aria-labelledby="FUGA-switch") | FUGA | 非表示