yuuho.wiki

カオスの欠片を集めて知恵の泉を作る

ユーザ用ツール

サイト用ツール


tips:start

tips

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(上書き)なども容易 参考

変数一個だけコピペしたいときは以下のように

logger:
    -   name: end_train
        params:
            scale: iter
            freq: &endi 250
    -   name: vis_val_data
        params:
            freq: 10
            num_img: 10
            end_iter: *endi

バックアップの管理

    • 指定した日数以前のファイルを削除するようなコマンドがある
    • 毎日バックアップ + 数十日経ったファイルの削除 がベスト?

CSS

セレクタ

表すもの prefix
タグ名 何もなし
id #
クラス .
子孫 空白一つ開ける
タグ名.クラス
タグ名#ID
並列 セレクタ, セレクタ
~ これより後のやつに適用
例) .sectionedit2 .row8 ~ tr row8クラスのtrタグより後のtrタグに適用

FLOCSSという考え方でCSSを作成するべき.CSSの基礎的な考え方https://qiita.com/sueshin/items/c80151181d06649e2ff6

その他

  • visiblity:hiddenは要素の場所だけ確保して空白に.display:noneは要素が存在しないかのようにレンダリング.

Windows

スクリーンショット

snipping toolというプログラムを起動してやると便利.

Makefile

何もしない

hoge:
	@:

cmake

CMakeLists.txt の書き方.

VSCode

バイナリエディタ

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

if文で使えるファイル演算子

    • -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 を編集する必要がある.

/etc/ImageMagick-6/policy.yml
...
<policy domain="coder" rights="none" pattern="PDF" />
...

/etc/ImageMagick-6/policy.yml
...
<policy domain="coder" rights="read|write" pattern="PDF" />
...

に書き換える.

convert hoge.jpg hoge.pdf

で変換できるようになる.

複数のjpgを複数ページpdfに変換 (ImageMagick)

メモリエラーとなることが多い. キャッシュファイルの設定を変えるのが良い.

/etc/ImageMagick-6/policy.ymlの以下の部分を

/etc/ImageMagick-6/policy.yml
...
<policy domain="resource" name="memory" value="256MiB"/>
<policy domain="resource" name="disk" value="1GiB"/>
...

以下のように変える.

/etc/ImageMagick-6/policy.yml
...
<policy domain="resource" name="memory" value="3GiB"/>
<policy domain="resource" name="disk" value="2GiB"/>
...

以下のように使う画像をすべて書いてPDFを作る。ワイルドカードで指定しても良い。

convert page1.jpg page2.jpg page3.jpg hoge.pdf

PDF を画像に変換

pdftoppm -png hoge.pdf fuga

こうすると hoge.pdffuga-1.png, fuga-2.png みたいな感じで全ページ PNG になる。

パスワード解除済みPDFを作成

qpdf -password=<your-password> -decrypt /path/to/secured.pdf out.pdf

(補足) OpenCV で jpg圧縮

cv2.imwrite('hoge.jpg', img, [cv2.IMWRITE_JPEG_QUALITY, 75])

論文用作業

PDFのクロップ (Acrobat)

  • 第二ツールバーの「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

メール

docker-mailserver でやっていく。

  • Gmail で転送をやろうとすると受け手側で OK しないといけない
  • エイリアス設定するのが簡単か

postfix の部分直接いじればメーリングリストっぽく設定もできる
http://www.postfix.org/VIRTUAL_README.html#forwarding

zip

コマンドオプション

zip -r new_file.zip want_to_freeze_dir/

大きなファイルの分割

exiftool を使った写真ファイルタイムスタンプ変更

撮った写真をカメラから手元に転送してきたときに、 ファイルのタイムスタンプが撮影時刻ではなく転送時刻になってしまうことがある。 Linux で開いて変更してやるのが良い。

sudo exiftool "-FileModifyDate<DateTimeOriginal" *.JPG

mp4 に関しては

sudo exiftool "-FileModifyDate<MediaCreateDate" video.mp4

タイムスタンプの足し算

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        | 非表示
tips/start.txt · 最終更新: 2025/09/01 06:05 by yuuho