Today I Learned
Catatan singkat dan praktis dari tim OOZOU: pelajaran cepat dari pekerjaan engineering dan desain sehari-hari.
Menjalankan Claude Code Sepenuhnya Otonom dengan Alias YOLO
Flag --dangerously-skip-permissions memungkinkan Claude Code menjalankan perintah dan mengedit file tanpa prompt konfirmasi. Mengetiknya setiap kali cepat membuat bosan.
Menjalankan Perintah di GPU Nvidia Dedicated pada GNU/Linux (misalnya ollama)
Untuk memastikan sebuah perintah (CLI) memakai GPU NVIDIA Anda di GNU/Linux, Anda dapat memakai environment variable \\NV\PRIME\RENDER\OFFLOAD=1 dan \\GLX\VENDOR\LIBRARY\NAME=nvidiasebelum perintah Anda.
Menggunakan Pundit Policy untuk Mengelola Permitted Parameter, Default dan Per Action
Untuk mengelola permitted params, Anda dapat menambahkan permitted\attributes dan permitted\attributes\for\#{action} di policy Anda, misalnya:
Menggunakan `requestSubmit` untuk Submit Form dengan Turbo
Turbo mendengarkan event submit pada form. Oleh karena itu, selalu gunakan requestSubmit untuk men-submit form menggunakan JS.
Mengabaikan Bundled Gems untuk Rubocop dan ESLint di GitHub Actions
Proyek Rails sering menginstal gem ke direktori vendor di GitHub Actions agar gem tersebut dapat di-cache untuk eksekusi berikutnya.
Menambahkan Drop Shadow ala macOS pada Tangkapan Layar "Parsial" atau Gambar Berbingkai Polos
Secara default, suka atau tidak, kombinasi tombol macOS untuk menangkap layar aplikasi penuh (⇧- ⌘- 5) akan menambahkan bayangan halus di sekitar gambar yang Anda simpan. Ini dapat membuatnya tampak lebih menarik saat…
Membuat Layar Monokrom Menggunakan Layer Overlay yang Ditutupi Efek Fill Hue
Membuat layar monokrom menggunakan layer overlay yang ditutupi efek fill hue
Tahan ⌥option Sambil Klik & Seret di Input Field untuk Mengatur Ukuran
Tahan ⌥option sambil klik & seret di sepanjang input field untuk mengatur ukuran
git check-ignore
Perintah ini memungkinkan Anda men-debug apakah suatu file/path di-ignore dan, dengan flag -v, juga menampilkan pola exclude yang cocok (Docs).
Mengizinkan Paste Blok Ruby Multibaris di Pry Saat Menggunakan Notasi Titik di Awal
Sekarang kami sering menggunakan notasi titik di awal baris, misalnya:
Rails 6, Ruby 3, Bootstrap 5, dan Hotwire
Melengkapi blogpost dari Bootrails dengan Hotwire: Semua hal baru yang keren (saat TIL ini ditulis):
Mengubah Objek Teks Menjadi Title Case di Figma
Anda dapat mengatur properti Text box agar semua teks otomatis diubah menjadi Title Case (beserta format huruf umum lainnya)
Mengurangi Ukuran Slug Heroku
Pertama, instal plugin Heroku Repo:
Menjalankan Perintah Incognito/Privat di Bash dan Zsh
Cukup tambahkan spasi sebelum perintah dan perintah tersebut tidak akan disimpan ke ~/.bash\_history. Contoh: qrencode -o out.png "Some secret text"
Mengonversi SVG ke PNG
Di MacOS, instal inkscape (dengan brew) dan gunakan seperti ini:
Perilaku CMD+Click di Figma
Menahan ⌘CMD sambil Klik Kiri di Designer mode akan memilih layer terdalam di dalam frame/group tersebut, sedangkan melakukannya di inspector/developer mode akan memilih objek/frame/group terluar…
Cache-Control di Rails
Untuk mengaktifkan pengaturan header cache-control pada aset statis dan menggunakan CDN di Heroku:
Upgrade Database Postgres dengan Homebrew
Untuk melakukan upgrade postgres, Anda dapat menjalankan
Memperbaiki Input di Rails Console Heroku
Jika Anda menempelkan banyak baris ke rails console di Heroku (atau di tempat lain), Anda mungkin mengalami masalah baris-baris yang "bercampur" satu sama lain.
Heredoc tanpa Interpolasi
Terkadang Anda ingin menggunakan Heredoc di Ruby tanpa interpolasi ('#{....}'). Anda dapat melakukannya dengan menambahkan tanda kutip tunggal di sekitar kata kunci Anda:
ID Unik untuk DOM di Rails
Rails memiliki banyak view helper yang hebat, salah satunya adalah dom\id:*
Menambahkan Tipe Baru ke Attributes API Rails 5
Attributes API di Rails 5 memungkinkan kita membuat form object dengan sangat mudah.
Tambahkan Spacer ke Dock macOS untuk Membuat Grup Aplikasi
Buka term (atau aplikasi sejenis) lalu tempelkan perintah satu baris berikut:
Menyalin dengan Amazon AWS S3 CLI sambil Mengatur Izin
Buka term (atau yang setara) lalu tempelkan perintah berikut:
Membersihkan Docker secara Brutal
Jika Anda mendapatkan error No Space left di Docker, inilah solusi brute force-nya:
Melampirkan File ke ActiveStorage tanpa HTTP
Jika Anda ingin melampirkan file yang dibuat di disk atau diunduh dari URL yang dikirimkan pengguna, Anda dapat melakukannya seperti ini.
Hashtable Tingkat Menengah yang Terbentuk Otomatis di Ruby
Semua hashtable tingkat menengah akan dibuat secara otomatis
Mencadangkan File dengan Nama yang Sama + Prefiks
CATATAN: Sebenarnya Anda dapat menggunakan !#:1 di setiap perintah karena itu adalah argumen terakhir yang diberikan ke sebuah perintah.
Alias Bash dan Keajaibannya
Saya punya file terpisah di folder pengguna saya bernama ~/.aliases untuk menyimpan semua alias bash saya. Saya sering memakai alias dan rutin menambahkan yang baru, jadi saya membuat fungsi bash untuk menambahkan alias baru…
Menghitung Anagram di Elixir
Contohnya:
Mengganti Versi Ruby untuk Satu Perintah dengan rbenv
Anda dapat mengganti versi Ruby sementara dengan rbenv local
Mengubah Nama Sistem di macOS
Dari term (atau yang setara), salin dan tempelkan:
Ubah Go to Definition di VS Code menjadi Cmd+Click
Cukup buka file JSON pengaturan pengguna Anda dan gunakan opsi ini:
Memeriksa Ketersediaan Barang IKEA
Jika Anda sedang menunggu stok barang IKEA kembali tersedia, berikut solusi praktis agar Anda selalu mendapat informasi secara otomatis. Panduan ini menjelaskan cara memakai shell script untuk memeriksa ketersediaan stok IKEA dan…
Memeriksa Apakah Sebuah Perintah Tersedia dengan Shell Script
Memeriksa apakah sebuah perintah tersedia dengan shell script
Mengelola Tab di Chrome
Terkadang saya ingin kembali ke halaman terakhir yang saya lihat sambil tetap membiarkan halaman saat ini terbuka. Anda dapat melakukannya dengan sangat mudah menggunakan pintasan
Membersihkan Formula Usang di brew
Gunakan brew cleanup untuk mendapatkan kembali sebagian ruang penyimpanan!
Membuat Hash dari Enumerable (Rails 6.0)
Method baru yang memungkinkan Anda membuat Hash dari Enumerable:
Membuat Migration yang Idempoten
Saat menulis migration yang destruktif, gunakan if\exists: true ketika Anda menghapus tabel, dan periksa keberadaan tabel ketika Anda ingin menambah atau menghapus kolom…
Membuat Perintah Git Anda Sendiri (Alias)
Pernah ingin mempersingkat perintah git? Anda tentu bisa menggunakan alias shell, tetapi Anda harus selalu menyertakan konteks agar tidak lupa arti setiap alias. Namun, Anda juga dapat mendefinisikan perintah…
Menghapus Branch yang Sudah Di-merge di Git
Anda dapat menambahkan lebih banyak branch ke daftar aman di egrep -v 'master|develop|foo|bar'
Menghapus Branch git yang Sudah Di-merge
Perintah git praktis untuk menghapus semua branch git lokal yang sudah di-merge git branch --merged | egrep -v "(^\\|master|dev)" | xargs git branch -d*
Destructuring Assignment di JS
Contoh sederhana javascript const [a, b, ...c] = [10, 20, 100,200] // a= 10, b=20, c=[100,200] const { first, second } = { first: 1, second: 2 } // first = 1, second = 2
Membandingkan File Lokal dengan Versi Remote di Git
Cukup jalankan perintah di bawah ini untuk mendapatkan diff terhadap versi remote
Menemukan Branch Berdasarkan Commit
c198bb715 Make default expired description logic pretty `
Force Push Commit Sebelumnya ke Repo
Jika Anda sudah push kode dan ingin melakukan force push ke commit sebelumnya, Anda dapat melakukannya dengan shell git push origin +commit\sha^:branch\name
Mendapatkan Nama Branch Git Saat Ini
Mendapatkan nama branch git saat ini
Mendapatkan Kata Sandi Wi-Fi yang Sedang Anda Gunakan
password: "!forHackers" `
Menelusuri Riwayat Git Sebuah File (GUI)
Menelusuri riwayat Git sebuah file (GUI)
Cara Membuat Elemen HTML beserta Atributnya dalam Satu Baris di JavaScript
Saat mengerjakan proyek JavaScript, membuat elemen HTML secara dinamis adalah hal yang umum. Secara tradisional, Anda mungkin memakai beberapa baris kode untuk membuat elemen dan mengatur beberapa atribut…
Cara Menemukan God Object di Proyek Anda (Rails)
Buka root proyek Anda dan cd ke app/models (tentu saja menggunakan CLI), lalu jalankan wc -lw \ | sort -u*
Cara Keluar dari Vim
1. Instal Vim versi terbaru 2. Buka sebuah file di Vim 3. ⌘-Q dan tutup terminal 4. Buka kembali terminal
Cara Benar-Benar!! Keluar dari vim
Di terminal
Cara Menyimpan File dengan sudo di VIM
Cara menyimpan file dengan sudo di VIM
Form HTML yang Mengirim ke Action Lain
Sudah lama saya tahu bahwa Anda dapat mengirim nilai melalui tombol submit, sehingga Anda bisa melacak tombol mana yang digunakan untuk mengirim form, misalnya:
Jika Anda Ingin Menimpa Urutan yang Sudah Diatur Sebelumnya
Jika Anda ingin menimpa urutan yang sudah diatur sebelumnya (bahkan melalui default\_scope), gunakan reorder() sebagai gantinya.
Meningkatkan Performa Bundler
Tingkatkan performa bundler Anda dengan menjalankan task bundler secara bersamaan dalam beberapa job:
Menghentikan Rails yang Macet
Saya ingin menghentikan rails yang berjalan di port tertentu. (Laptop saya menjalankan beberapa server rails.)
Menghentikan Sesi SSH yang Tidak Merespons
Sesekali sesi SSH bisa berhenti merespons. Ini cukup sering terjadi jika saya membuat laptop masuk mode sleep. Daripada menutup tab, Anda dapat menggunakan SSH Escape Characters untuk menghentikan sesi tersebut
Membatasi Asosiasi has_many
Membatasi asosiasi has_many
Menampilkan Struktur Direktori kecuali Satu atau Beberapa Direktori
Pernah ingin menampilkan struktur direktori saat ini kecuali satu atau dua direktori?
Menampilkan Daftar Nama Model Anda
CATATAN: RUBYOPT=-W0 menekan peringatan sehingga output tidak terlalu ramai saat menjalankan perintah rails.
Membuat PR dari Command Line Menggunakan hub
instal hub terlebih dahulu dengan brew: brew install hub lalu gunakan perintah sederhana, seperti contoh di bawah ini: hub pull-request -m "best pr ever" -b oozou:develop -h feature/awesome-improvements
Shortcut Slack yang Paling Sering Saya Gunakan
⌘-K (atau T) untuk membuka channel switcher (saya berpindah channel hanya dengan shortcut ini dan mengatur Slack saya agar menyembunyikan semua channel yang tidak memiliki pesan baru)
Relasi optional + RSpec dengan shoulda-matchers
User 1 - 0..1 Laptop
Fungsi Postgres & Query Non-sargable
Menggunakan fungsi postgres di dalam klausa where dapat membuat query menjadi non-sargable.
UPDATE Join di PostgreSQL
Query ini menunjukkan cara menggunakan sintaks UPDATE join di PostgreSQL untuk memperbarui data dalam sebuah tabel berdasarkan nilai di tabel lain. Contohnya:
Memindahkan Baris ke Atas dan ke Bawah dengan Cepat di Mode Vim Apa Pun
Saya sering memindahkan baris di vim, jadi saya membuat mapping untuk mempermudahnya. Mapping ini memakai ⌘-j untuk memindahkan ke bawah dan ⌘-k untuk memindahkan ke atas. Berfungsi di mode normal, insert, dan visual. vim nnoremap <D-j> :m…
Menghapus Bundler Bawaan Ruby 2.6
Membuat aplikasi Rails 6 dengan Ruby 2.6+ saat Anda sudah menginstal bundler v2 akan menghasilkan binstub yang tidak dapat digunakan. Jika Anda melihat error You must use Bundler 2 or greater with this lockfile. Anda dapat menghapus…
Menghapus Commit yang Tidak Diinginkan dari Branch Anda
Menghapus commit yang tidak diinginkan dari branch Anda
Mengganti Nama File di VIM
Berikut fungsi praktis yang saya gunakan untuk mengganti nama file di VIM (juga berfungsi di MacVIM dan Neovim)
Mereset Sequence Tabel Postgres setelah DELETE
Saat menghapus record terbaru dari sebuah tabel, Anda dapat mereset penghitung sequence-nya jika kesinambungan field auto-increment penting bagi Anda. Perhatikan tindakan pada tabel berikut, users:
Memulihkan File yang Terhapus di Git
Memulihkan file yang terhapus di Git
Menjalankan Rubocop pada Branch Anda Saat Ini
Menjalankan rubocop pada branch Anda saat ini
Menjalankan Rubocop sebelum Commit
Git hook sangat ampuh untuk mengotomatiskan tugas dan menegakkan standar penulisan kode di repository Git. Salah satu penggunaan umum Git hook adalah menjalankan test otomatis dan alat analisis kode sebelum…
Menjalankan Perintah yang Sama pada Input yang Berbeda
Jika Anda harus menjalankan perintah yang sama berulang kali pada satu atau beberapa input yang berbeda.
Menggabungkan Scope dengan or di Rails
scope :human, -> { user.or(author) } scope :terminator, -> { admin.or(robot) } `
Melihat File yang Terhapus di Commit Sebelumnya [git]
Melihat file yang terhapus di commit sebelumnya [git]
Mengirim Pesan ke Slack Menggunakan cURL
Slack memungkinkan Anda mengirim pesan melalui layanan Webhooks
Shallow Clone Repo Lama
Jika Anda tidak memerlukan riwayat git lengkap dari repo yang akan Anda kerjakan, Anda dapat menentukan clone depth agar hanya meng-clone x revisi dari repo tersebut.
Menampilkan TODO dan Catatan Lainnya di Aplikasi Rails Anda
Tahukah Anda bahwa Anda dapat menampilkan semua TODO/OPTIMIZE/FIXME di aplikasi Rails Anda dengan rails notes?
Arsitektur Flux Sederhana dengan Vue.js
Untuk aplikasi kecil yang hanya memerlukan pola state management sederhana, saya selalu menggunakan satu komponen untuk menyimpan state aplikasi, yaitu sebuah container. Container ini berfungsi sebagai single source of truth yang menjadi acuan aplikasi…
Menyembunyikan Warning rspec
$ RUBYOPT=W0 bundle exec rspec spec/ ...
Menandai Log Rails dengan Informasi yang Berguna
Baru saja belajar tentang tagged logging di rails. Tahukah Anda bahwa Anda dapat menandai log dengan menggunakan
Menggunakan Huruf Kapital di Mapping VIM
CATATAN: @joe ini menyelesaikan masalah Anda :D
Menggunakan FFmpeg dan Apple Script untuk Mengompres Video
Buat aplikasi tempat Anda dapat drag-and-drop video untuk mengompresnya secara signifikan:
Menggunakan `host` untuk Mendapatkan Informasi Lebih Lanjut tentang Domain
Anda mungkin menggunakan dig untuk mencari record A/CNAME/MX dan lainnya dari sebuah domain di server DNS. Namun, jika Anda hanya ingin gambaran singkat, gunakan host:
Gunakan minItems/maxItems di JSON Schema Koleksi
Agar JSON schema koleksi Anda lebih andal, gunakan minItems dan maxItems sehingga Anda dapat memercayai API Anda.
Menggunakan Neovim sebagai git difftool
Cukup tempelkan ini ke ~/.gitconfig Anda
Menggunakan Fitur Alias di Git
Git memungkinkan Anda membuat alias secara internal melalui config. Config global Anda seharusnya berada di ~/.gitconfig
Memantau Status CI di Github
Jika Anda sudah memasang hub dari Github, Anda dapat melihat ci-status branch Anda saat ini seperti ini:
Anda Dapat Menggunakan FactoryBot untuk Model Non-ActiveRecord
Anda dapat menggunakan method initialize\with* dari FactoryBot untuk menginisialisasi objek dengan cara apa pun yang Anda inginkan, sehingga Anda bisa membuat factory untuk objek apa pun sesuka hati
Fungsi Zsh untuk Menampilkan Pohon File
Saat menjelajahi direktori di command line, sering kali berguna untuk melihat struktur direktori dan subdirektori dalam format "pohon". Meskipun ada banyak alat yang tersedia, seperti…
Punya proyek yang ingin diwujudkan?
Kami ingin mendengar apa yang sedang Anda bangun.