kekavigi.xyz

Kumpulan Kode Singkat

Ini adalah beberapa kode/perintah yang kadang saya gunakan, yang tidak cukup sering untuk bisa diingat, tetapi cukup penting untuk dilupakan.

Ditulis tanggal oleh A. Keyka Vigiliant. Revisi terakhir pada tanggal . Konten diterbitkan dibawah lisensi CC BY-SA 4.0.


Semua baris kode berikut valid, setidaknya di laptop saya, dan setidaknya terakhir saya mencobanya. Gunakan akal sehat Anda, dan mungkin setelah membaca hasil beberapa pencarian daring, sebelum menyalin-tempel kode-kode berikut.

Memasang Python dengan pengaturan khusus di pyenv

env \
  PYTHON_BUILD_CACHE_PATH="/var/home/user/temp/" \
  PYTHON_CFLAGS="-march=native -mtune=native" \
  PYTHON_CONFIGURE_OPTS="--disable-gil --enable-loadable-sqlite-extensions --enable-experimental-jit --enable-optimizations --with-lto --without-doc-strings" \
  PROFILE_TASK="-m test.regrtest --pgo -j0" \
pyenv install 3.13.5 -v

Mungkin perlu pasang clang, llvm, dan llvm-readobj yang bersesuaian agar kompilasi berhasil; beberapa package, contoh mpdecimal, mungkin diperlukan untuk versi Python terbaru. Info mendetail ada di pesan/log galat. Jangan lupa untuk letakkan keluaran dari perintah pyenv init di akhir ~/.bashrc. Pastikan di akhir proses, which python merujuk ke direktori .pyenv dan bukan /bin. Lihat referensi di Configure Python dan python-build ¶ Special environment variables . Untuk daftar opsi kompilasi SQLite, lihat Compile-time Options; Oh... dan entah apa penyebabnya, -DSQLITE_ENABLE_GEOPOLY gagal menyertakan modul geopoly.

SQLite dan apsw

Mengutip halaman dokumentasi apsw, "APSW lets you get the most out of the SQLite embedded relational database engine from Python, and the most out of Python from SQLite. APSW glues together the complete SQLite C API and Python’s C API, staying up to date with both SQLite and Python. …. Use APSW when you want to use SQLite fully, and have an improved developer experience."

Setelah clone repo SQLite ke direktori bernama sqlite3 (dan mungkin juga memilih branch yang diinginkan), isi setup.apsw sesuai kebutuhan, contohnya:

[build]
# tidak usah fetch lagi
omit = ICU
enable = DBPAGE_VTAB,DBSTAT_VTAB,EXPLAIN_COMMENTS,COLUMN_METADATA,PREUPDATE_HOOK,FTS3,FTS3_PARENTHESIS,FTS4,FTS5,GEOPOLY,SESSION,MATH_FUNCTIONS,RTREE,STAT4,UNLOCK_NOTIFY

lihat Compile-time Options SQLite untuk info lebih mendetail. Lalu jalankan

python setup.py build
python setup.py install

Pilihan build-ext mungkin lebih cocok untuk kustomisasi lebih lanjut. Jalankan python setup.py build --help (atau versi build-ext --help) untuk info lebih detail. Beberapa flag SQLITE_OMIT_* membuat proses instalasi gagal (mengapa?). Package bisa dibuang lewat pip. Executable sqlite3 juga bisa dibuat (mungkin dengan kemampuan debugging) untuk membantu (menguji) program proyek Anda.

Mengunduh torrent Wikipedia

  1. Cek download.kiwix.org/zim/wikipedia.
  2. Tambahkan .torrent di akhir URL untuk mendapatkan berkas torrent, dan bukan zim.

Tambahan: untuk melihat perkembangan pembaruan berkas-berkas zim, lihat Zimfarm.

Mensubset fon matematika untuk situs

  1. Pasang font-splitter.
  2. Unduh fon, sepertinya berkas otf lebih berpeluang berhasil: tidak ada masalah di kerning, jarak antar baris, dan/atau lain sebagainya.
  3. font-splitter -c 128 font.otf. Pada konfigurasi standar (nilai chunk sama dengan 256), semua glif di rentang Mathematical Alphanumeric Symbol akan dijadikan satu berkas fon yang besar. Nilai chunk 128 (atau lebih kecil) membagi glif-glif di rentang itu ke beberapa fon berukuran lebih kecil. Besar nilai chunk berbanding terbalik dengan banyak berkas fon.
  4. Gabung berkas CSS dan fon-fon yang didapat ke situs.

Mengunduh video dari URL berkas m3u8

ffmpeg -i "https://example.com/file.m3u8" -c copy downloaded.mp4
# atau
yt-dlp "https://example.com/file.m3u8" -o downloaded.mp4

Mengunduh video dari YouTube untuk pengarsipan

Terkadang saat mengerjakan tugas jurnalistik, seseorang perlu menyimpan salinan video YouTube sebagai (bukti) referensi untuk hasil pekerjaannya. Ini adalah contoh sederhana hal yang bisa dilakukan oleh yt-dlp. Kode juga dapat digunakan untuk mengunduh playlist. Beberapa argumen mungkin perlu ditambahkan saat ingin mengunduh: live streaming, seperti --concurrent-fragments; atau jenis video tertentu, seperti --write-subs.

https://www.youtube.com/watch?v=VideoID \
  --cookies-from-browser "Firefox" \
  -o "%(title)s - [%(id)s].%(ext)s" \
  -S "res:720p" \

  --ignore-errors \
  --add-metadata \
  --write-thumbnail \
  --write-description \

  --retries "infinite" \
  --fragment-retries "infinite" \
  --retry-sleep fragment:exp=1:20\
  --default-search "ytsearch"

Meng-host (direktori) video yang bisa di-stream

Ada beberapa program yang bisa melakukan ini, tapi saya pakai rclone. Penyebabnya, program ini juga saya pakai untuk pencadangan data, jadi tidak perlu unduh/pasang program baru. Detail lihat di dokumentasi rclone serve http. VFS Chunked Reading perlu diatur agar video tidak lag ketika di-seek; setidaknya itu yang saya lakukan untuk server berupa laptop, streaming menggunakan VLC di perangkat lain, dan keduanya berada di jaringan WiFi yang sama.

rclone serve http /path/to/video_dir/ --addr :8888 \
--verbose --no-checksum --no-modtime --read-only \
--vfs-read-chunk-size 4M --vfs-read-chunk-streams 16

Mengatur agar terminal otomatis menggunakan tmux

Modifikasi dari pertanyaan di Stackoverflow ini. Mungkin pernyataan kondisionalnya bisa diringkas, tapi terlalu meringkas bisa membuat Anda tidak disuguhi apapun saat login (benar-benar tidak ada apapun, perlu masuk lewat shell untuk memperbaikinya). Simpan di .bashrc:

if command -v tmux &> /dev/null && [ -n "$PS1" ] && [[ ! "$TERM" =~ screen ]] && [[ ! "$TERM" =~ tmux ]] && [ -z "$TMUX" ]; then
  tmux a -t default || exec tmux new -s default;
fi