Postingan

Install Swoole Ext PHP di Fedora

sudo dnf install php-devel git clone https://github.com/swoole/swoole-src.git cd swoole-src phpize ./configure make sudo make install

Disable connectivity check fedora

  Buka /usr/lib/NetworkManager/conf.d/20-connectivity-fedora.conf dan set menjadi enabled=false

Mengatasi GPG error, signatures could't be verified saat apt update ubuntu

Gambar
Semisal Anda menjumpai error seperti di bawah ini saat apt update: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY EB3E94ADBE1229CF Reading package lists... Done                                                    W: GPG error: https://packages.microsoft.com/ubuntu/20.04/prod focal InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY EB3E94ADBE1229CF Untuk mengatasinya, maka jalankan command berikut ini: sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys EB3E94ADBE1229CF Ganti EB3E94ADBE1229CF dengan public key yang bermasalah.

Batch Script mencetak tanggal dengan format YYYY-MM-DD

echo %date:~10,4%-%date:~4,2%-%date:~4,2%

Batch Script untuk mengcopy file terbaru

Misalkan kita memiliki dua buah folder, yaitu folder Asal untuk diperiksa file yang terbaru, dan folder Tujuan untuk tempat menyimpan file terbaru yang berhasil ditemukan. Dan juga spesifik untuk mencari file *.txt yang terbaru. Buatlah script <namascript>.bat dengan isi sebagai berikut: @echo off set dirname="Asal" set copytodir="Tujuan" set newest="" pushd %dirname% for /f "tokens=*" %%a in ('dir /b /od *.txt') do set newest=%%a if %newest%=="" (echo "not found") else (copy %newest% ..\%copytodir%) popd

Batch Script untuk Hapus File Berdasarkan Modify Time

Misalkan kita memiliki folder bernama target , dan akan menghapus file di dalamnya yang modify timenya 30 hari. Buat file hapus.bat dengan notepad. Lalu buat script seperti ini: @echo off set dirname="target" cls Forfiles /p %dirname% /s /d -30 /c "cmd /c del @file" Jalankan script tersebut dengan cmd, atau bisa juga ditaruh di task scheduler.

Membuat script untuk backup semua database MariaDB dan MySQL

Buat sebuah user di MariaDB atau MySQL yang berfungsi untuk melakukan backup. Misalkan user bernama: backup. Buatlah user ini mengunakan user root. create user backup identified by 'ganti_dengan_password_yang_diinginkan'; GRANT SELECT, SHOW DATABASES, SHOW VIEW, LOCK TABLES on *.* to backup; flush privileges; Kemudian buatlah sebuah file misalkan kita beri nama mysqluser.cnf . Isi dengan username dan password yang sudah kita buat tadi. [client] user = backup password = ganti_dengan_password_yang_diinginkan Lalu set permission menjadi read-write untuk owner saja, dengan command: chmod 0600 mysqluser.cnf Lalu buat directory untuk menyimpan file backup. Misalkan kita beri nama folder tersebut mariadb . Untuk membuat directory bisa dengan dengan command: mkdir mariadb Terakhir, kita buat scriptnya. Pada contoh di sini kita akan backup data mingguan, jadi format filename yang digunakan adalah: <Nama_Database>_<Tahun>_week_<Minggu_ke-_dalam_tahun> ...

Tidak bisa delete ke Trash di Ubuntu

Jika saat Anda delete file di Nautilus mengalami: Cannot move file to trash, do you want to delete immediately? maka itu karena tidak bisa menulis ke folder .Trash-<uid> , maka cara yang bisa dilakukan adalah, buat folder tersebut di mount path file tersebut berada. Misalkan uid Anda adalah 1000. Cara mendapatkan uid dengan ketik pada terminal:  id -u <username> , contoh usernamenya yudha, maka ketik: id -u yudha maka yang muncul 1000. ini adalah uid. Kita lanjutkan, semisalh mount point partition adalah di /media/mount1. Maka buat folder .Trash-1000 di sana. Kemudian ubah ownernya menjadi yudha:yudha. sudo mkdir /media/mount1/.Trash-1000  sudo chown yudha:yudha .Trash-1000 Sekarang ketika delete file lagi maka akan dipindah ke Trash.

Resolve DNS OpenVPN Ubuntu

Tambahkan script ini di nama-file .ovpn : #auth-nocache script-security 2 up /etc/openvpn/update-resolv-conf down /etc/openvpn/update-resolv-conf

Deploy QT Windows (*.dll yang dibutuhkan)

Taruh ini di bagian bawah *.pro win32 {     TARGET_CUSTOM_EXT = .exe     DEPLOY_COMMAND = windeployqt     CONFIG( debug, debug|release ) {         # debug         DEPLOY_TARGET = $$shell_quote($$shell_path($${OUT_PWD}/debug/$${TARGET}$${TARGET_CUSTOM_EXT}))     } else {         # release         DEPLOY_TARGET = $$shell_quote($$shell_path($${OUT_PWD}/release/$${TARGET}$${TARGET_CUSTOM_EXT}))     }     # Uncomment the following line to help debug the deploy command when running qmake     #warning($${DEPLOY_COMMAND} $${DEPLOY_TARGET})     QMAKE_POST_LINK = $${DEPLOY_COMMAND} $${DEPLOY_TARGET} }

Double Icon di Unity Launcher Ubuntu

Bagi pengguna Ubuntu mungkin pernah membuat custom launcher (atau klik kanan pada icon di launcher kemudian lock to launcher) tetapi ketika diklik lagi, iconnya menjadi double (muncul satu icon baru). Misalnya aplikasi dari flatpak. Cara mengatasinya cukup mudah. Pertama-tama buka terminal , kemudian ketik: xprop WM_CLASS nanti akan muncul kursor, lalu klik pada jendela aplikasi yang mau ditaruh di launcher. Contoh hasil yg muncul setelah diklik: WM_CLASS(STRING) = "gimp-2.10", "Gimp-2.10" Kemudian langkah berikutnya, (sebelumnya aplikasinya harus sudah dilock to launcher) buka file ~/.local/share/applications/nama_app.desktop (dicari sesuai nama aplikasi, jika tidak tahu yg mana bisa dibuka satu-persatu). Lalu tambahkan baris berikut: StartupWMClass=Gimp-2.10 atau StartupWMClass=gimp-2.10 Contoh lengkapnya: [Desktop Entry] Comment= Terminal=false Name=GNU Image Manipulation Image Exec=flatpak run org.gimp.GIMP Type=Application Icon=/home/user...

Smooth scrolling di iOS

body { - webkit - overflow - scrolling : touch ; }

Resize or Reduce LVM Ubuntu

Hari ini saya coba-coba resize volume LVM di Ubuntu lewat gparted. Ternyata tidak bisa, meskipun lewat live CD. Akhirnya saya coba-coba lihat di internet langkah-langkahnya. Dan ternyata berakhir dengan kegagalan! Filesistemnya corrupt dan data saya hilang semua. Apa boleh buat. Haha. Tapi dari situ akhirnya saya belajar dan mencoba lagi. Saya install ulang lagi ubuntunya kemudian mencoba resize lagi lewat live cd. Dan kali ini berhasil. Langkah-langkahnya adalah sebagai berikut: Misalkan partisi LVM ada di /dev/sda3. Kita berniat untuk reduce volume root sebanyak 5G Mappingnya root ada di /dev/mapper/ubuntu--vg-root Maka yang perlu dilakukan adalah: sudo lvreduce -L -5G /dev/mapper/ubuntu--vg-root (yang perlu diperhatikan: ada tanda - di depan 5G, itu artinya pengurangan sebanyak 5G, tapi jika tidak diberi - maka artinya akan berkurang menjadi 5G)   Setelah berhasil, maka akan ada kekosongan space sebanyak 5G di /dev/sda3, tapi ini belum bisa diresize biarpun menggunakan ...

Checkout atau deploy ke website menggunakan git

Sebelum melakukan checkout atau deploy, maka pertama-tama kita buat dulu directory tempat website akan ditaruh. Misalkan kita taruh websitenya di /var/www/website_yudha: mkdir /var/www/website_yudha Kemudian di config git kita tambahkan worktree di git dir (misalkan di /var/git/yudha.git): git config --path core.worktree /var/www/website_yudha Konfigurasi sudah selesai. Jadi saat mau deploy, maka cukup kita lakukan checkout di git dir. cd /var/git/yudha.git git checkout -f

Docker tanpa sudo

Jika kita menjalankan docker tanpa sudo maka akan muncul error tentang socket. Untuk mengatasinya yaitu dengan memasukkan user ke dalam group docker. Misalkan nama user yudha , maka ketik di terminal: sudo usermod -a -G docker yudha Lalu Enter dan logout.

Setup FTP Server di Ubuntu dengan vsftpd dan xinetd

Pertama-tama install vfstpd dan xinetd sudo apt install vsftpd sudo apt install xinetd Kemudian buat konfigurasi file di /etc/xinted.d/vsftpd sudo nano /etc/xinetd.d/vsftpd Isinya: service ftp {         disable                 = no         socket_type             = stream         wait                    = no         user                    = root         server                  = /usr/sbin/vsftpd ...

Simple Linux Service

Buat file misalkan namanya coba. Buat di /etc/init.d/coba. Isinya: #! /bin/sh ### BEGIN INIT INFO # Provides:          coba # Required-Start: # Required-Stop: # Default-Start:     2 3 4 5 # Default-Stop:      0 1 6 # Short-Description: daemon to balance interrupts for SMP systems ### END INIT INFO # coba script # January 2017 # Yudha Rachmat Hidayat NAME=Coba DESC="Python Bottle Daemon" PIDFILE="/var/run/${NAME}.pid" LOGFILE="/var/log/${NAME}.log" # PHP binary path DAEMON="/usr/bin/python" # Path of your python script DAEMON_OPTS="/usr/share/bottle/http.py" START_OPTS="--start --background --make-pidfile --pidfile ${PIDFILE} --exec ${DAEMON} ${DAEMON_OPTS}" STOP_OPTS="--stop --pidfile ${PIDFILE}" test -x $DAEMON || exit 0 set -e case "$1" in start) echo -n "Starting ${DESC}: " start-stop-daemon $START_OPTS >> $LOGFILE echo "$NAME." ;; stop) echo -n "Stopping $DESC: " s...

Proxy pass pada location di nginx

location /gis/ { rewrite ^/gis(/.*)$ $1 break; proxy_pass http://127.0.0.1:8080/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_redirect off; }

Apache Multiple Domain CORS

Tambah ini di VirtualHost: <IfModule mod_headers.c>   SetEnvIfNoCase Origin "https?://(www\.)?(yudha\.web\.id|apabae\.com)(:\d+)?$" ACAO=$0   Header set Access-Control-Allow-Origin %{ACAO}e env=ACAO </IfModule> Contoh: <VirtualHost *:80>     ServerName api.yudha.id     DocumentRoot /var/www/html/api <IfModule mod_headers.c>       SetEnvIfNoCase Origin "https?://(www\.)?( yudha\.web\.id|apabae\.com )(:\d+)?$" ACAO=$0       Header set Access-Control-Allow-Origin %{ACAO}e env=ACAO   </IfModule> </VirtualHost> Catatan: Kadangkala module headers belum aktif, untuk mengaktifkan ketik di terminal: a2enmod headers

Connect SQL Server di Qt App

Pertama-tama buat project Qt (Biar mudah kita akan menggunakan Qt Console). Setelah project terbentuk, pertama-tama buka file .pro . Kita perlu mengubah dari: QT += core menjadi QT += core sql Kemudian buka file main.cpp menjadi: #include <QCoreApplication> #include <QtSql/QSqlDatabase> #include <QtDebug> #include <QtSql/QSqlError> int main( int argc, char *argv[]){ QCoreApplication a(argc, argv); QString dbHost = "localhost" ; // Nama Server QString dbUser = "sa" ; // Nama User QString dbPass = "" ; // Password jika ada QString dbName = "yudha" ; // Nama Database QSqlDatabase db = QSqlDatabase ::addDatabase( "QODBC3" ); db.setConnectOptions(); QString dsn = QString ( "DRIVER={SQL Server};SERVER=%1;DATABASE=%2;UID=%3;PWD=%4;" ) .arg(dbHost).arg(dbName).arg(dbUser).arg(dbPass); db.setDatab...