Kamis, 28 Desember 2023

Tulisan Pertama Pada Penghujung Tahun 2023 : Sebuah Renungan & Resolusi

 Judulnya bombastis sekali. Padahal hanya ingin nulis hal biasa aja. Biar di deretan arsip muncul tahun 2023. Biar kelihatan seolah-olah aktif nulis dari tahun 2010 hingga 2023, padahal di tahun 2023 tidak sempat nulis di blog ini sama sekali. Sudah mungkin tulisan ini isinya hanya seperti ini saja. Terus terang saya bingung ingin menulis apa. Jika judulnya ada tentang renungan, mungkin yang perlu saya renungkan adalah kondisi kesehatan. Jadi teringat di podcastnya Raditya Dika, kita akan merasa tua jika ketika pup kita kecapekan. Nah itu yang sedang saya alami. Semoga tahun depan saya bisa menjaga pola makan, pola kerja dan pola istirahat agar seimbang dan kesehatan menjadi semakin baik. Setidaknya tidak merasa tua seperti yang dikatakan Radit.

Kamis, 03 Maret 2022

Cara Mengatasi Website Susah Ke-Index



Beberapa waktu yang lalu saya membuat website dengan domain fresh, yang mana umur domain adalah 0 dan tidak mempunyai backlink apapun. Sebelumnya saya build website dengan domain fresh indexnya lancar-lancar saja. Cukup submit google search console & submit sitemap, keesokan harinya sudah keindex. Namun hal lain terjadi dengan 2 domain saya. Sudah lebih dari seminggu submit search console dan submit sitemap, index tak kunjung datang juga. Hanya ada 1 index di google, itupun meta title & descriptionnya adalah meta title & description domain parking. Yang mana bukan hasil dari isi website saya.

Karena tak kunjung ngindex, akhirnya saya melakukan beberapa hal. Berikut rangkumannya:

FETCH URL 

Saya mencoba fetch beberapa url website saya dengan harapan bisa cepat index. Karena biasanya setelah di fetch, beberapa menit/jam atau paling lambat keesokan harinya sudah ngindex. Ternyata cara ini gagal juga, website tetap tidak mau ngindex.

PING SITEMAP

Semua sitemap yang ada saya ping manual. Kemudian saya tunggu beberapa hari, dan ternyata tidak ngindex juga. Kemudian saya coba ping otomatis menggunakan tool buatan om Yoyon Sugiono di tools.panduan.vip, setelah beberapa hari ternyata tidak ngindex juga.

IFTTT

Selanjutnya, karena website masih belum terindex, akhirnya saya coba koneksikan RSS website saya dengan beberapa platform social media menggunakan IFTTT. Cara ini biasa saya gunakan untuk membangun social signal website yang saya buat. Dengan IFTTT, kebutuhan posting di fanpage, twitter & beberapa sosial media bisa terakomodir hanya dengan menghubungkan RSS ke social media milik kita. Setelah beberapa hari ternyata cara ini tidak membuat website terindeks juga.

PASANG BACKLINK

Cara terakhir yang saya lakukan adalah membuat backlink ke website yang baru saya buat ini. Backlink berasal dari beberapa situs saya yang sudah memiliki pengunjung dan jatah crawl yang baik dari google. Ternyata cara ini ampuh, malamnya index website yang 1 tadi sudah berubah. Setidaknya meta title & description bukan lagi dari dari domain parking, tapi sudah sesuai dengan meta title & description yang saya buat. Keesokan harinya index saya cek lagi, ternyata sudah nambah jadi 25 biji. Alhamdulillah...
Saya tidak tahu dari ke 4 cara di atas, mana yang menyebabkan website bisa terindeks. Kalo asumsi saya adalah karena backlink yang saya pasang di website saya yang lain yang sudah ada pengunjungnya. Ini hanya asumsi saya, silahkan dibuktikan sendiri. Mungkin sudah berbeda jika Anda praktekkan sendiri. Selamat mencoba
 


Sabtu, 26 Februari 2022

Ketidak-efisien-an Caching Dalam Bentuk File

Dua tahun terakhir ini lagi sering membuat website menggunakan public dataset. Dimana public dataset tersebut berisi setidaknya ratusan ribu baris bahkan ada yang sampai 5jt baris data. Awalnya saya menggunakan sqlite sebagai media penyimpanan, karena data nya tidak relasional dan tidak ada aktifitas penambahan data, perubahan data atau pengurangan data. Hanya aktifitas select saja, tapi ternyata sqlite bukan lah database yang cocok untuk handling data dengan jumlah besar. Dari namanya saja sudah lite. Biasanya hanya dipakai pada aplikasi-aplikasi statis dengan cakupan data yang tidak banyak. 

Akhirnya saya berpindah lagi ke mysql. Ternyata lagi2 mysql butuh resource yang lumayan jika di dalamnya terdapat data dengan jumlah yang banyak dan request bersamaan. Memori yang digunakan cukup besar dan ketika pengunjung website sudah banyak / saat mesin pencari melakukan crawl pada situs yang saya buat, performanya jadi turun. Loading website jadi lambat, dan ini tidak bagus untuk SEO. Yang mana saat ini page speed adalah salah satu ranking factor di SERP.

Berangkat dari problem tersebut akhirnya saya menggunakan sphinx-search sebagai engine pelengkap mysql. Request data tidak lagi ke mysql, namun ke sphinx-search, dimana performa seleksi data menjadi lebih cepat dan penggunaan memori yang tidak lagi tinggi. Sangat stabil dengan jumlah data yang besar. Keunggulan yang luar biasa yang dimiliki sphinx adalah fitur full text search engine, dimana engine ini sangat cepat dibanding fitur full text search bawaan mysql. 

Tidak berhenti dari situ saja, karena data saya bersifat statis dan tidak ada penambahan. Saya mengkombinasikan sphinx search dengan caching file. Dimana setiap request akan di cache ke dalam file. Jadi jika kedepan ada request yang sama, tidak perlu akses lagi ke sphinx, tinggal panggil data yang tersimpan di dalam file. Dengan kombinasi optimasi ini, website lancar jaya tidak ada problem apapun. Sampai suatu ketika terjadi pembengkakan jumlah file cache. Ketika umur website semakin lama dan banyak request data, tentunya jumlah file cache juga semakin banyak. Akhirnya penggunaan disk juga meningkat.

Sebenarnya tidak masalah dengan ukuran data nya, karena sampai saat ini kapasitas hardisk server saya baru digunakan 30% saja. Masih ada sekitar 2TB yang kosong. Namun masalahnya adalah jumlah inodes ternyata yang dibatasi, sehingga tidak bisa create file lagi. Jadi banyak sekali error_log yang tersimpan yang melaporkan not enough disk space. Padahal space masih besar, ternyata inodes nya sudah full.

Karena hal itu, akhirnya banyak halaman web yang tidak bisa dibuka dan menampilkan pesan error 500. Tentunya sangat berdampak di perfoma google search console, terdapat banyak sekali laporan website error 500, yang mana jika tidak segera diatasi dapat menyebabkan ranking web drop. Karena bingung solusinya apa, akhirnya saya kosongkan saja folder cache untuk sementara waktu dan menghentikan aktifitas caching ke dalam bentuk file. Karena ternyata tidak efisien, saat ini hanya mengandalkan performa sphinx-search, semoga ke depan tidak ada problem dan bisa menemukan solusi caching yang tepat.


Rabu, 05 Januari 2022

BR89Q 4B9GB 9DPFD M2PY3 R3F83

Apa yang Anda fikirkan dengan judul postingan ini? Generasi sekarang mungkin tidak akan paham apa itu. Namun bagi kita generasi 2007 an yang belajar install windows XP pasti sangat familiar dengan kode di atas. Yah kod di atas adalah product key yang sering saya gunakan ketika install windows xp pada masa kejayaannya. Itu adalah product key yang diberikan dari guru TKJ saya yang sampe saat ini masih tertulis jelas dalam ingatan saya. Karena kode itu sering saya gunakan ketika install windows xp pada komputer low end jaman dulu, sebelum windows 7 datang dan pc low end mulai ditinggalkan. Sudah 15 tahun berlalu namun tidak akan pernah terlupakan. Terima kasih pak Supriono yang telah mengajari saya merakit komputer dan install windows xp.

Minggu, 22 Agustus 2021

Konversi SQLite3 ke MySQL

 Import dari CSV dalam ukuran besar ke mysql sering kali gagal. Gak tau kurang hoki atau gimana, udah coba pake shell atau tool desktop based lain sering gagalnya. Kalo data ukuran masih di MB mungkin bisa. Ini datanya GB an ukurannya. Jadi perlu sedikit akal untuk melakukannya. Nah dari CSV ku ubah dulu ke SQLite pake DB browser for SQLite yang bisa dicari di google, gratis. Import 2jt - 4jt row cepet banget. Nah dari SQLite ini baru ku ubah jadi SQL.

Muter muter ke google, ketemu library python yang sangat berfaedah. Bisa dicek di sini: https://pypi.org/project/sqlite3-to-mysql/

Tinggal install library itu dengan perintah:

pip install sqlite3-to-mysql

Tentunya pastikan udah ada python di komputer kamu ya, caranya cari di google bejibun banget. Setelah keinstall library tersebut, tinggal deh jalanin di command promt. Pastikan kamu udah masuk ke direktori dimana file sqlite mu berada ya:

sqlite3mysql -f sqlite.db -d dbname -u user -p -q 

Artinya:

sqlite3mysql : perintah dasarnya

-f sqlite.db : ubah sqlite.db dengan nama file sqlite mu

-d dbname :  ubah dengan nama database mysql mu

-u user : ubah dengan nama user mysql mu

-p : nanti keluar promt buat masukin pasword mu

-q : silent


Tekan enter dan masukin password mysqlmu, selesai.

Menambahkan ID Auto Increment pada Tabel MySQL yang Sudah Ada

Akhir-akhir ini lagi seneng-senengnya bikin website dari Big Data, sebenernya gak Big Big juga, tapi row nya minimal 500rb lah. Nah data tersebut biasanya kuperoleh dari situs yang emang share data nya buat penelitian atau grab dari website besar. Masalahnya umumnya data yang dishare publik biasanya berbentuk json, csv atau xml. Butuh sedikit skill buat ngubah jadi database biar bisa dibuat website. Bisa juga sih buat website langsung pake json, csv atau xml, tapi ribet dan kurang efisien. Mau gak mau harus convert ke sql. Untuk convert ke sql dari json, csv atau xml akan saya bahas di post lain ya. Di post ini mau fokus share nambahin id pada tabel sebuah database yang sudah ada. Karena dari sononya gak ada id nya, sedangkan saya butuh banget id, karena engine yang saya pake mewajibkannya.

Tanpa babibu, langsung aja ya ini syntax SQL nya, bisa di paste di tool sql query kesukaan kalian (phpmyadmin, adminer, workbench, heidisql) atau mau di paste di shell mysql langsung juga bisa.

ALTER TABLE table_name ADD id INT NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;

Keterangan:

ALTER TABLE : perintah untuk mengubah/memodifikasi struktur tabel mysql

table_name : ganti dengan nama tabel yang mau diubah

ADD : perintah menambahkan field

id : nama fieldnya, saya pake name id, bisa diganti sesuka kamu

INT : tipe data integer

NOT NULL : tidak boleh kosong

AUTO_INCREMENT : perintah yang digunakan untuk membuat 'id' jadi auto increment

PRIMARY KEY : untuk membuat id nya jadi primary key

FIRST : meletakkan field 'id' di urutan paling awal dari field lainnya yang sudah ada di dalam tabel

 


Gambar proses altering table nya

Senin, 10 Februari 2020

Cara Install PHP 7.3 di Centos 6

Tanpa fafifu, berikut cara install php 7.3 pada Centos 6. Postingan ini saya buat sebagai pengingat saya ketika lupa. Langsung paste saja syntax berikut di ssh.

wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
wget http://rpms.remirepo.net/enterprise/remi-release-6.rpm
rpm -Uvh remi-release-6.rpm epel-release-latest-6.noarch.rpm
yum install yum-utils -y
yum-config-manager --enable remi-php73
yum update -y
yum install php php-xml php-mbstring php-xmlrpc php-mcrypt php-cli php-gd php-curl php-mysql php-ldap php-zip php-fileinfo -y


Setelah itu, cek versi php nya dengan syntax berikut

php -v

Hasilnya harus seperti ini



Jika tidak seperti di atas, berarti belum berhasil. Coba lagi! Sekian.

Jumat, 10 Januari 2020

Mengembalikan Akses User 'root' MySQL yang Tidak Sengaja Terhapus

Kemarin (09/01/2020) merupakan hari yang lumayan apes. Pagi hari di awali dengan ketidaksengajaan menghapus folder dari sebuah domain, yang mana domain tersebut masih hidup dan mempunyai visitor yang lumayan. Ya, kemarin agendanya adalah bersih-bersih server. Saya skedulkan untuk menghapus folder-folder dari domain-domain yang deindex. Dilanjutkan dengan bersih-bersih database yang sudah tidak terpakai beserta user-nya. Namun sungguh na'as folder domain yang hidup ikut terhapus. Tidak berhenti di situ, fatalnya saya juga menghapus user root di MySQL saya. Kepala langsung pening, karena tidak bisa login dengan full privileges MySQL baik melalui SSH maupun melalui phpMyAdmin. Yang mana salah satu efeknya tidak bisa membuat dan menghapus database.

Nah, itu adalah dua ke-apesan kemarin yang terkait dengan server. Keapesan selanjutnya adalah hp saya, iphone 5s, yang baterainya drop, jadi mati total. Hal ini terjadi lantaran ulah saya ingin mengganti baterai sendiri beserta housing-nya. Baru saja kubelikan baterai baru, housing baru dan kabel cas baru. Namun semuanya kini sia-sia, percuma... HP yang sudah menemani selama 3 tahun harus kurelakan.

Namun, inti dari posting hari ini bukanlah tentang hp itu. Hari ini saya mau berbagi pengalaman saya mengembalikan akses root MySQL saya, karena ini merupakan hal paling vital yang harus saya solve dibanding hp saya. Berikut adalah spesifikasi perangkat lunak yang saya gunakan.

Sistem Operasi: Centos 6 64bit
MySQL versi 5.5.62

Berikut langkah-langkah ngembalikan akses root nya. Ini saya temukan setelah menjelajah di google.
1. Login ke SSH server kalian
2. Ketikkan perintah 'mysql_secure_installation' lalu enter


3. Tinggal atur ulang passwordnya, ketik 'Y' dst sampai selesai.
4. Sudah, kalian bisa kembali login dengan user root sesuai password yang kalian buat.

Rabu, 21 Agustus 2019

Sebuah Titik Pemberhentian Pertama


Malam itu hatiku benar-benar berdebar-debar seperti gendang yang ditabuh sekeras-kerasnya. Seperti ketika kita berada di depan sound system dengan volume 100%. Jantung seakan-akan berdenyut lebih cepat dari biasanya. Malam itu aku merasakan yang namanya gejolak hati yang luar biasa. Tubuh ini secara otomatis guling ke kanan dan ke kiri tanpa henti, seakan tidak ada posisi yang pas untuk tidur. Mata inipun yang biasanya menunjukkan cahaya redupnya menjadi berbinar-binar, aku tak kuasa memadamkannya. Ya begitulah rasa yang tak bisa kudeskripsikan lagi, sesaat ketika mengirimkan 'draft pesan yang sudah kuketik dan kuhapus lagi, kemudian kuketik lagi' kepadamu.

Akhirnya kubiarkan mata ini terbuka hingga sang fajar menunjukkan cahayanya. Paginya aku merasakan sesuatu yang berbeda dalam tubuh ini. Biasanya jika semalaman tidak tidur, tubuh akan merasa lelah. Namun berbeda pada hari itu, aku tidak merasakan kelelahan sama sekali. Apa iya sebegitu dahsyatnya dampak dari malam itu, sehingga mampu memberikan nutrisi pada tubuh yang seharusnya sudah lelah?

Ahh,,,, hari itu adalah hari yang begitu luar biasa, dimana aku merasa lega. Seperti orang yang menjatuhkan tas carier ketika sampai di tempat istirahat yang pas saat mendaki sebuah gunung. Seperti orang yang meneguk air ketika berbuka puasa. Rasa lega yang mungkin tidak bisa dideskripsikan lagi. Benar-benar luar biasa.

Namun, meskipun hari itu aku merasa segar,tak bisa dipungkiri pikiran ini melayang kemana-mana. Menerka-nerka segala dampak yang akan terjadi setelah dua centang biru malam itu. Kebiasaan seorang coder yang otaknya dipenuhi if-else. Kemungkinan yang akan terjadi besok, lusa, minggu depan, bulan depan, tahun depan, bahkan 10 tahun yang akan datang pun sudah berada dalam angan-angan. Akibatnya hari itu kulalui dengan lamunan di sudut ruang kerja. Awalnya aku berada di depan komputer seperti biasanya, namun pikiranku tidak bisa fokus bekerja, sehingga aku beranjak ke bean-bag di pojokan dan merebahkan kepalaku di atasnya. Ku tutup pintu ruangan agar orang lain tak bisa melihat aku guling-guling aneh dan senyum-senyum sendiri di pojokan.

Hari demi hari berikutnya kulalui dengan pikiran, perasaan dan gelisah yang sama. Pikiran negatif dan positif bercampur aduk. Jika iya nanti seperti apa, jika tidak nanti nasibku bagaimana? Pertanyaan-pertanyaan itu selalu muncul dalam benak. Hingga akhirnya tiba pada hari itu.

Aku menyebut hari itu sebagai titik pemberhentian pertama, titik dimana aku memutuskan untuk berhenti melakukan pencarian. Jawaban yang kudapat pada tangal 20 Juni 2019 pukul 20:21 itu membuatku berhenti. Rasa syukur teramat dalam kupanjatkan kepadaNya yang menghadiahkan jawabah yang bisa membuatku cengar-cengir tanpa henti malam itu. Hal yang mungkin sudah lama tidak kurasakan.

Selasa, 30 April 2019

Selamat Datang 2019

Tahun 2018 telah berlalu. Dan Alhamdulillah ditutup dengan berhasilnya saya menyelesaikan pendidikan S2 saya. Setelah melewati seminar proposal, seminar hasil dan ujian tesis yang mengerikan, akhirnya saya bisa yudisium di akhir bulan Desember. Alhamdulillah target lulus di tahun 2018 tercapai, meski di penutup tahun 2018.


Awal tahun 2019 diawali dengan wisuda pada akhir bulan Januari. Karena fokus mengerjakan tesis, urusan bisnis kukesampingkan terlebih dahulu. Sehingga pendapatan menurun drastis. Detik-detik menjelang wisuda butuh dana tambahan untuk mendatangkan keluarga dan mengajak mereka keliling Jogja. Iseng - iseng cek email, ternyata domain yang kubeli september 2018 ada yang nawar. Dan Alhamdulillah setelah melalui proses negosiasi yang cukup panjang, akhirnya domainku terjual seharga $2500. Alhamdulillah 'ala kulli hal. Uang hasil jual domain mendarat tepat seminggu sebelum wisuda, sehingga saya tidak bingung lagi akan kebutuhan finansial selama mendatangkan keluarga ke Jogja.






Setelah wisuda, pada awal bulan Februari saya berkemas-kemas membawa barang yang bisa dibawa dari kos untuk pulang. Saat itu saya hanya membawa satu backpack dan satu tas jinjing ukuran sedang, al hasil hanya pakaian dan dokumen penting saja yang saya pulang. Kasur, lemari, meja, dan perabotan berat lainnya kuwariskan kepada teman dan penjaga kos disana. Karena tidak memungkinkan juga untuk saya bawa pulang.

Awal Februari merupakan awal saya mulai tinggal di Nganjuk, tidak bolak balik lagi ke Jogja untuk kuliah. Awal dimana saya menyandang gelar Magister Komputer. Awal dimana saya membawa beban besar di pundak saya untuk menjadi orang yang lebih bermanfaat. Sejak awal Februari saya memutuskan untuk istirahat dulu dari riwa-riwi ngalor-ngidul dan hanya ingin di rumah dulu. Tawaran mengajar di berbagai kampus masih belum saya tanggapi dengan serius. Saya ingin di rumah, dan menata lagi urusan bisnis yang sempat saya kesampingkan demi bisa LULUS pada tahun 2018. Saya berfikir sebelum menjadi dosen, urusan finansial saya harus sudah beres dari bisnis yang lain, agar saya tidak mengharapkan penghasilan lebih dari menjadi dosen. Saya berharap menjadi dosen bukan menjadi sebuah mata pencaharian melainkan sebagai kewajiban akademis saya untuk ikut andil dalam mencerdaskan kehidupan bangsa. Mengabdikan diri kepada masyarakat melalui dunia pendidikan.

Setelah fokus menata bisnis, dan memastikan urusan bisnis mulai berjalan sesuai rule nya. Saya mendapatkan informasi lowongan dosen di kota Nganjuk, tempat kelahiran dan tempat tinggal saya saat ini. Dalam hati berkata, "kok pas banget". Tanpa pikir panjang saya menulis surat lamaran dan mengirimkan lamaran saya. Selang beberapa hari saya di interview, dan hasilnya diterima. Sungguh besar karunia tuhan di awal tahun 2019 ini. Semoga saya benar-benar bisa menjadi dosen yang baik. Lokasi kampus yang dekat dari rumah dan pertimbangan agar selalu dekat dengan orang tua adalah alasan saya tanpa pikir panjang melamar di kampus tersebut. Selain itu, basis kampus tersebut juga pondok pesantren yang menurut saya adalah lingkungan yang bagus untuk saya.


Alhamdulillah di awal kuartal 2019 ini penghasilan juga mulai stabil, setelah sekian lama grafiknya mengalami penurunan. Harapan saya di tahun ini agar saya bisa tetap konsisten menjalankan bisnis saya dan memberdayakan semakin banyak orang sekitar. Selanjutnya saya ingin benar-benar menikmati menjadi dosen tanpa mengharapkan gaji darinya. Dan satu hal lagi, semoga saya segera dipertemukan jodoh di tahun ini dan menikah.

Ya inilah awal tahun 2019 yang penuh berkah, semoga kita semua selalu diberi kesehatan untuk menjalani tahun 2019 ini, menikmati dan mensyukuri segala nikmat yang dianugerahkan kepada kita. Melewati setiap cobaan yang mungkin akan kita hadapi sebentar lagi. Selamat menjalani tahun 2019 dengan penuh optimisme.