Muhammad Hafid

Muhammad Hafid

Belajar Python itu mudah, Belajar Framework Django, Belajar Python yuk, Belajar Pemrograman Dasar Python, Belajar Python Asik

Muhammad Hafid

Muhammad Hafid

Tugas kita itu adalah bukan untuk berhasil, tugas kita adalah untuk mencoba, karena di dalam mencoba itulah kita menemukan dan belajar membangun kesempatan untuk berhasil.

Solve Problem PostgreSQL SSL Off and no pg_hba.conf

Pernah mengalami error saat mengkoneksikan ke database postgresql ? Username, password dan hostnya sudah yakin benar tetapi masih belum bisa di koneksikan dan muncul pesan error yang artinya apabila di baca bahwa tidak ada akses untuk anda ke database postgresql.


Disini saya menggunakan postgresql versi 9.5 dan berjalan di OS Centos 7 dimana saya ingin mengkoneksikan aplikasi saya yang dibuat dengan menggunakan bahasa python dari local leptop saya ke database postgresql yang berada di server.

Disini kalian harus memperhatikan 2 file utama yaitu 
  • pg_hba.conf, path : var/lib/pgsql/[versipostgre]/data
  • postgresql.conf, path : var/lib/pgsql/[versipostgre]/data
Untuk settingan postgresql.conf kalian cari baris dibawah ini :
listen_addresses = 'localhost'
Ganti dengan : listen_addresses = '*' 

Setelah itu masuk kedalam file pg_hba.conf dan samakan settingannya seperti dibawah ini :
# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             0.0.0.0/0            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     postgres                                peer
#host    replication     postgres        127.0.0.1/32            ident
#host    replication     postgres        ::1/128                 ident
Setelah itu restart atau stop lalu start service postgresql kalian dengan cara mengetikan perintah dibawah ini :
service postgresql-9.5 stop
service postgresql-9.5 start 
Saya jamin, permasalahan ini sudah selesai.

Solve Problem Duplicate Key Value Violates Unique Constraint Django

Halo sahabat yang budiman, disini saya ingin menjelaskan mengenai permasalahan yang sering kali terjadi pasca migrasi server / migrasi db, disini saya menggunakan Django versi 1.11, sebenarnya tidak ada pengaruhnya mau menggunakan Django versi manapun, yang terpenting adalah menggunakan databas PostgrSQL, karena yang kerap kali terjadi ketika  Django berkolaborasi dengan postgresql.

Error terjadi apabila kita hendak melakukan migrate atau makemigrations, dan muncul pesan error seperti dibawah ini :
django.db.utils.IntegrityError: duplicate key value violates unique constraint "django_migrations_pkey"
DETAIL:  Key (id)=(27) already exists.

Kebetulan pada error log diatas, terjadi pada table  django_migrations, dan tidak menutup kemungkinan terjadi pada beberapa tabel.

Disini error berkata bahwa tidak boleh ada duplicate data yang dimasukan kedalam field id, karena bersifat unique, sedangkan id key 27 sudah tersedia, sebenarnya saya pribadi tidak terlalu penting untuk mengetahui id 27.

Jalan keluarnya adalah saya menggunakan PhpPgadmin untuk client akses postgresqlnya dan kalian ketikan seperti dibawah ini, dijalankan di sql editor atau bisa menggunakan console terminal:
SELECT setval('tablename_id_seq', (SELECT MAX(id) FROM tablename)+1)
Pada kasus error diatas saya samakan mengetikan perintah sqlnya adalah
 SELECT setval('django_migrations_id_seq', (SELECT MAX(id) FROM django_migrations)+1) 
Untuk setval bagian depan kalian tinggal tambahkan nama_tabel dengan dibelakangnya _id_seq karena memang sudah bawaan dari postgresqlnya. Sekarang kalian coba lakukan makemigrations dan migrate, saya jamin permasalahan terselesaikan. 

Solve Problem : Possible DNS Spoofing Detected Remote with SSH

Saya baru saja mengalami suatu permasalahan ketika hendak masuk ke server dengan menggunakan SSH. Disini saya menggunakan OS Linux mint. Muncul errornya seperti dibawah ini :


Kebetulan memang disini saya sering kali ssh ke beberapa IP tidak hanya 1 IP, kalian bisa perhatikan terdapat path
 ssh-keygen /home/mhafid/.ssh/known_host
Kalian masuk kedalam folder dengan nama .ssh, folder ini bersifat hidden, untuk menampilkan folder hidden tekan CTRL + H, kalian remove / hapus. Setelah itu kalian kembali ke terminal dan ketikan ini dengan akses root.
sudo ssh-keygen -f "/root/.ssh/known_hosts"
Nanti anda akan diberikan pertanyaan Enter passphrase (empty for no passphrase) kalian ketikan bebas mau di isi dengan apa, hanya saran lebih baik di isi dengan alamat email saja yang mudah di ingat atau hal lain, dikosongkan pun tidak masalah, hanya tekan enter, dan ketika konfirmasi tuliskan kembali passphrase nya dan apabila awalnya dikosongkan, pada saat konfirmasi dikosongkan.

Nanti akan ada konfirmasi keberhasilan membuat ssh :
Your identification has been saved in /root/.ssh/known_hosts.
Your public key has been saved in /root/.ssh/known_hosts.pub

Dan akan keluar SHA256 code. Sekarang kalian coba masuk ke ssh dan dijamin error pun sudah menghilang.


Update Versi Golang Kamu Yuk Tanpa Remove

Yup dulu waktu saya mencoba golang di tahun 2016 masih sangat baru, sekarang versinya sudah 1.12.1, sedangkan saya masih menggunakan versi 1.8.

Disini saya kebetulan ingin mengupgrade mini service yang pernah dibuat tahun-tahun lalu, dan ingin mengupgrade vesi golang menjadi versi terbaru yang pasti tanpa di remove dahulu golang source nya seperti pada tutorial lainnya.

Yuk masuk ke console, disini saya menggunakan CentOS ya, aslinya saya menggunakan Slackware. tapi sama saja kok masih kelurga Linux.
git clone https://github.com/udhos/update-golang
Setelah di clone, silahkan masuk ke diretory update-golang.
cd update-golang
Silahkan cari file yang bernama update-golang.sh, karena disini saya coba di centos saya menggunakan perintah sh untuk menjalankan script update-golang.sh
sh update-golang.sh
Diamkan hingga tiris beberapa saat, dan coba cek dengan menggunakan
go version

Selamat mencoba

Django Migrate Error Column Already Exists

Yay.... solve problem untuk permasalahan migrate di django yang mengindikasikan bahwa table already exists. Cara manual untuk memperbaiki error ini adalah membuang / menghapus nama tabel yang diperintahkan / yang di jadikan already exists.
Apa sih pesan error itu ?

Pesan error itu seperti seolah program django mendeteksi modul app yang di eksekusi / di migrate bahwa column dari sebuah tabel sudah terbentuk sebelum di migrate, padahal kenyataannya adalah sebelumnya memang sudah pernah terbentuk, jadi semestinya buat apa si sistem django mempermasalahkan hal tersebut, jikalau ada perubahan dalam atribute colum seharusnya hanya tinggal di replace atau di update.

Disini saya coba ikuti cara manual dengan menghapusnya nama column yang dikondisikan already exists, jika errornya hanya 1 atau 2 kali tidak masalah, tapi bagaimana setiap migrate berkali-kali gagal dan selalu muncul error tersebut ? cukup capek melakukan cara manual dengan penghapusan field, yang nantinya jika kita hapus akna terbentuk kembali.

Cara simple nya adalah, kalian harus membuka history dari migrate yang berada di folder dengan nama migrations, kalian ambil history yang terakhir, sebagai contoh punya saya filenya bernama 0003_auto_20190322_1459.py maka kalian ketikan perintah dibawah ini untuk melakukan pengecekan secara otomatis :
 python manage.py migrate crm 0003_auto_20190322_1459 --fake
Perhatikan pada perintah diatas, yang formatnya adalah
 python manage.py migrate namaapp namahistory --fake
Perhatikan bahwa tidak ada ".py" dibelakang sebelum --fake.
Ketika di eksekusi outputnya adalah
Operations to perform:
  Target specific migration: 0003_auto_20190322_1459, from crm
Running migrations:
  Applying crm.0002_auto_20190322_1355... FAKED
  Applying crm.0003_auto_20190322_1459... FAKED
Tidak ada error, tidak perlu capek melakukan manual.

Cara Melihat Hak Akses Grantt di MySQL Via Console

Hallo pecinta mysql, disini saya ingin memberikan tips bagaimana cara melihat user privilage / ip privilages remote database MySQL via Terminal, jika menggunakan PhpMyAdmin mungkin akan lebih mudah, disini saya kebetulan tidak menggunakan PhpMyAdmin.

Pertama kalian harus masuk ke server mysql kalian dengan menggunakan akses root. Apabila sudah masuk ketikan perintah dibawah ini untuk masuk kedalam akses database :
mysql -u usernamekalian -p passwordkalian
Jika sudah coba ketikan Show databases untuk melihat semua database yang ada :
SHOW DATABASES; 
Jika sudah coba kalian masuk ke database bawaan mysql yaitu mysql :
USE MYSQL;
Jika sudah masuk ke database mysql, kalian show table yang ada di database MySql tersebut dengan perintah :
SHOW TABLES;
Jika sudah terlihat semua daftar list table, kalian cari apakah ada table bernama user ? jika ada coba kalian ketikan perintah :
SELECT host, user, password FROM user;  
Semoga bermanfaat.

Disini saya menggunakan MariaDB dan CentOS.
 
 

Menghitung Jumlah Digit Sebuah Parameter di Python

Disini saya mempunyai sebuah studi kasus, dimana saya harus mencari jumlah digit baik itu format string atau integer yang didapat dari hasil query.

Misalkan saya mempunya parameter yang isinya sebagai berikut :
Company_code = 'WARTEG'
Lalu yang saya cari dan saya butuhkan adalah jumlah digit dari parameter tersebut adalah 6, darimana 6 ( W - A - R - T - E - G ) ada 6 kata.

Sedangkan untuk integer misalkan :
Amount = 2000
Maka yang di result adalah 4 karena ( 2 - 0 - 0 - 0) ada 4 digit angka.

Apabila anda ingin mendapatkan hasil dari jumlah digit tersebut, baik format isi parameternya string atau integer sekalipun, anda harus merubahnya ke format string, perhatikan dibawah ini :
jml_company_code = len(str(abs(Company_code)))
jml_amount = len(str(abs(Amount)))
Maka yang ditampilkan adalah 6 dan 4.

Disini saya mencobanya di dalam framework Django.

Port is Already in Use Django Port

Pesan ini sudah pasti kalian tau bukan, bahwa port yang kalian pakai sudah terpakai dan tidak bisa dipakai, mungkin kalian menjalankan port default Django di port 8000 dan pada saat mematikan hendak meRefresh Coding kalian menekan Ctrl+Z, seharusnya menekan Ctrl + C, jadi port tersebut di kill.

Lalu kalian masih kekeuh untuk menggunakan port default atau port lain ? jika mau menggunakan port lain, mudah saja hanya menjalankan manage.py nya ditambahkan ip:portbebas setelah runserver. Contoh :
python manage.py 192.168.0.11:9898
Ooo.. kalian masih mau kekeuh pakai port yang sebelumnya, caranya kill dulu port sebelumnya :
ps aux | grep -i manage

Keliatan kan untuk proses manage.py ?
Perhatikan 2 baris terbawah :
hafid   30177  0.0  0.4 129400 39640 pts/0    T    Mar13   0:00 python manage.py runserver
mhafid   30179  0.0  0.5 207192 43940 pts/0    Tl   Mar13   0:00 /home/mhafid/Workspace/artha/bin/python manage.py runserver
Konsen terhadap pid id 30177 dan 30179 ya.
kill -9 pidid
Sekarang kalian bisa menjalankan Django kalian dengan menggunakan port yang sebelumnya.
Back To Top