Install supervisor – the right way

The right way ini maksudnya mirip-mirip best practice lah.. Yakni dengan tidak menggunakan super user (sudo), caranya bagaimana? Cukup tambahkan parameter –user ke perintah pip Anda…

$ pip install supervisor –user

Instalasi terletak di direktori home Anda

~/.local/bin/

Bagaimana jika meng-install sebagai super user? Tidak ada masalah sih, bisa aja, namun Anda harus tahu bahwa instalasi pip menggunakan sudo tidak disarankan dari sisi keamanan sebuah sistem.

Advertisements

Mudah Mengelola Long-running Processes dengan supervisor

Anda memiliki banyak long-running process dalam satu mesin? Misal running beberapa aplikasi django? Gunakan supervisorctl kalau Anda tidak ingin repot. Setelah terpasang dan konfigurasi berjalan dengan baik, mengelola banyak aplikasi menjadi mudah, cukup dengan reread, stop, start…

reread

Perintah ini untuk membaca ulang isi dari supervisord.conf

update

Perintah ini untuk menambahkan proses baru kedalam supervisord

start/stop

Perintah ini untuk memulai/menghentikan sebuah proses

status

Perintah ini untuk melihat status dari masing-masing proses yang kita miliki.

Jangan Pernah Melakukan pip install Menggunakan Root / Super User

Terus caranya bagaimana? Cukup tambahkan parameter –user, misal saya ingin meng-install supervisor, tanpa sudo, besar kemungkinan hasilnya error permission denied, untuk itu, lakukan perintah berikut:

pip install supervisor --user

Jika Anda pengguna ubuntu, maka lokasi instalasi ada di

~/.local/bin

Untuk lebih memudahkan, Anda dapat membuat alias sederhana di .bashrc:

alias supervisord="/home/kholidfu/.local/bin/./supervisord"
alias supervisorctl="/home/kholidfu/.local/bin/./supervisorctl"

Selamat mencoba

Tentang Query Random

Sebenarnya tema optimasi ini tidak terbatas pada python/django aja sih, bisa bahasa apa pun. Kadangkala dalam sebuah project kita butuh untuk menampilkan data secara random, entah itu random user, random post maupun random-random lainnya. Jika data masih sedikit (< 50k rows) mungkin tidak terlalu masalah, namun akan menjadi masalah kalau data sudah di atas 50.000 baris dengan model relasi yang cukup kompleks. Bagaimana cara yang efisien?

Continue reading “Tentang Query Random”

Pencarian Full-Text di Django

Tambahkan baris berikut di settings.py, pada bagian INSTALLED_APPS

INSTALLED_APPS = [
 ...
 ...
 'django.contrib.postgres',
 ...
]

Kemudian ganti fungsi query yang biasanya menggunakan icontains dengan search, seperti dalam contoh berikut:

>>> Quote.objects.filter(quote_text__search='love')

Ini, contoh sederhana sih, query lebih lanjut silakan explore sesuai kebutuhan.

Manajemen Settings di Django untuk Workflow yang Efisien

Di era workflow yang serba menggunakan git, sangat tidak lucu jika harus melakukan seremonial git (git push dan git pull) hanya untuk meng-update DEBUG=True ke DEBUG=False di file settings.py. Sementara beberapa baris di file ini sering berubah sesuai dengan kebutuhan konfigurasi aplikasi.

Bagaimana solusinya? Ada banyak sebenarnya, mulai dari membuat file yaml, ini, env, namun yang paling mudah menurut saya adalah dengan membuat file local_settings.py pada direktori yang sama dengan direktori di mana file settings.py berada. Baris-baris kode di local_settings berfungsi untuk meng-override kode di settings.py. Untuk itu, tambahkan baris berikut di settings.py bagian PALING BAWAH:

Continue reading “Manajemen Settings di Django untuk Workflow yang Efisien”

Membuat Custom Filter di Django Admin

Secara default, django sudah menyertakan filter untuk field-field yang ada di Model, misal, kita punya field berikut:

is_published = models.BooleanField(default=True)

maka, secara otomatis, django admin akan membuat filter Is Published dengan nilai All, True, False.

Tergantung kebutuhan, kadang dibutuhkan juga custom filter, misal untuk menghitung berapa jumlah Image di masing-masing Post, di mana Post dan Image memiliki model relasi One-To-Many. Caranya adalah sebagai berikut:

Continue reading “Membuat Custom Filter di Django Admin”