Kamis, April 08, 2021

Tombol Power Smartphone



Salah satu hal yang menjadi kebutuhan saya adalah mengurangi kebutuhan akan tombol power. Sering kali tombol power ketika ditekan tidak dapat menampilkan response yang cepat sehingga tombol power ditekan berulangkali. Akhirnya tombol power rusak dan beli smartphone yang laen yang lebih mahal.

Alternative solusi yang diambil:

  1. Kombinasi WaveUp dan Lock. WaveUp digunakan untuk menghidupkan layar pada kondisi smartphone sedang sleep. Lock digunakan untuk mengubah status smartphone menjadi sleep. Alternatif ini relative hemat battery. Namun sayang, WaveUp kadang tidak berjalan dengan normal setelah beberapa kali iterasi wake dan sleep.
  2. Kombinasi AlwaysOn dan Lock. Alternatif ini membuat smartphone tidak sleep secara total. Setelah memasuki status lock, AlwayOn akan menayangkan tampilan yang bisa di-customize dimana bila di-double-tap akan muncul lock pattern atau password. Alternatif ini cukup efektif namun membutuhkan resource battery lebih dari biasa.
  3. Kombinasi Screensaver dan Any Cut. Setting > Display > Sleep > 15 seconds. Setting > Display > Screensaver > Clock. Any Cut digunakan untuk membuat widget yang bila ditekan akan langsung menjalankan screensaver.

Aplikasi yang saya sebutkan dalam alternatif di atas adalah aplikasi open source yang dapat yang tersedia gratis lewat aplikasi F-Droid. Hal ini dilakukan dengan asumsi aplikasi yang berbayar tidak membutuhkan saya untuk mempromosikan product mereka.

Saat ini alternatif ketiga sedang saya coba. Hasil yang diharapkan adalah tidak lagi menggunakan tombol power kecuali memang tidak ada alternatif lain dan hemat resource battery.

Senin, September 21, 2020

VBoxNetDHCP.exe - The exception Integer Overflow

Symptoms

Pesan kesalahan ini muncul ketika menjalankan virtualbox guest vm yang memiliki konfigurasi network "NAT Network"

 

Cause

Unknown

Solution

Coba tekan tombol "Generate new random MAC address" disebelah text box MAC Address pada konfigurasi bagian Network


Jumat, Juli 17, 2020

Fatal error: zlib inflate error: incorrect header check

Applies To
lftp 4.8.1

Symptoms
$ lftp site 
lftp site:~> ls
ls: Fatal error: zlib inflate error: incorrect header check

Cause

lftp mengakses FTP Server menggunakan "Mode Z" yang melakukan kompresi terhadap data yang di-transfer. "Mode Z" in ada dalam draft https://tools.ietf.org/html/draft-preston-ftpext-deflate-03 namun belum ada standarisasi.

Solutions

Disable "Mode Z"

Edit berkas ~/.lftprc
set ftp:use-mode-z no

Senin, April 20, 2020

Iptables Port 2222

Sudah beberapa hari, saya heran dengan firewall di salah satu mesin. Awal-nya saya mau configure untuk nambah port 2222 untuk akses service SSH. Sudah ditambah ke iptables namun port baru ini entah kenapa tidak mau diakses dari luar mesin. Tanpa panjang lebar, ternyata issue-nya sebagai berikut:
$ sudo iptables -n -L INPUT --line-numbers
Chain INPUT (policy ACCEPT)
num  target prot opt source    destination
1    ACCEPT all  --  0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
2    ACCEPT icmp --  0.0.0.0/0 0.0.0.0/0
3    ACCEPT all  --  0.0.0.0/0 0.0.0.0/0
4    ACCEPT tcp  --  0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
5    REJECT all  --  0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
6    ACCEPT tcp  --  0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:2222
Bisa dilihat di atas, konfigurasi port 2222 berada setelah baris 5 yang berisi REJECT. Seharusnya yang REJECT ditaruh di yang paling akhir. Langkah perbaikan sebagai berikut:

Hapus baris 6
$ sudo iptables -D INPUT 6
$ sudo iptables -n -L INPUT --line-numbers
Chain INPUT (policy ACCEPT)
num  target prot opt source destination
1 ACCEPT all  --  0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
2 ACCEPT icmp --  0.0.0.0/0 0.0.0.0/0
3 ACCEPT all  --  0.0.0.0/0 0.0.0.0/0
4 ACCEPT tcp  --  0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
5 REJECT all  --  0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Insert rule port 2222 di baris 5
$ sudo iptables -I INPUT 5 -i eth0 -p tcp --dport 2222 -m state --state NEW,ESTABLISHED -j ACCEPT
$ sudo iptables -n -L INPUT --line-numbers
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT all  -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
3 ACCEPT all  -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT tcp  -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
5 ACCEPT tcp  -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:2222 state NEW,ESTABLISHED
6 REJECT all  -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Done

Selasa, Desember 24, 2019

IN SELECT plus EXISTS

Environment
  1. MySQL 5.7.27
  2. Centos 6.10
mysql> DELETE FROM CSV_DATA
WHERE FILE_ID IN ( SELECT FILE_ID FROM CSV_FILE WHERE FILE_STATUS = 7)
LIMIT 100000

129 sec
Nampak-nya seluruh row akan di-scan dan nilai FILE_ID pada setiap setiap row akan dibandingkan dengan hasil dari IN SELECT .
mysql> DELETE FROM CSV_DATA
WHERE EXISTS ( SELECT FILE_ID FROM CSV_FILE WHERE FILE_STATUS = 7 )
  AND FILE_ID IN ( SELECT FILE_ID FROM CSV_FILE WHERE FILE_STATUS = 7 )
LIMIT 100000

0 sec
Nilai dari EXIST akan di-evaluate dan bila row tidak ditemukan maka perbandingan selanjutkan tidak di-evaluate.

Dalam case ini, LIMIT digunakan untuk mempersingkat waktu locking terhadap table CSV_DATA. Statement JOIN tidak dapat digunakan karena tidak compatible dengan LIMIT .

Senin, Desember 23, 2019

Windows 7 Port Forwarding

List port forwarding configuration
netsh interface portproxy show v4tov4
Append port forwading
netsh interface portproxy add v4tov4 listenport=80 connectaddress=<realIpAddress> connectport=80
Remove port forwarding
netsh interface portproxy delete v4tov4 listenport=80

Sabtu, Desember 21, 2019

Remove MySQL root password

Environment

  1. Operation System: Ubuntu 18.04.3 LTS
  2. MySQL Server: 5.7.28

Use on your own risk !

$ sudo service mysql stop
$ sudo rm -rf /var/lib/mysql
$ sudo rm -rf /var/run/mysqld
$ sudo mkdir /var/run/mysqld
$ sudo chown -R mysql:mysql /var/run/mysqld
$ sudo /usr/lib/mysqld_safe --user=mysql --initialize-insecure
$ sudo service mysql start

Minggu, November 10, 2019

Online Resize Logical Volume

Logical Volume dapat di-resize secara online dengan perintah sebagai berikut. Perintah tersebut sukses dilaksanakan pada saat proses read-write terjadi pada logical volume. Hanya disarankan untuk proses resize ke ukuran yang lebih besar.

$ sudo lvextend -L 50G /dev/mapper/vg1-db1

Size of logical volume vg1/db1
changed from 20.00 GiB (5120 extents) to 50.00 GiB (12800 extents).
Logical volume db1 successfully resized.

$ sudo resize2fs /dev/mapper/vg1-db1

resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/mapper/vg1-db1 is mounted on /volume/db1;
on-line resizing required
old desc_blocks = 2, new_desc_blocks = 4

Performing an on-line resize of /dev/mapper/vg1-db1 to 13107200 (4k) blocks.
The filesystem on /dev/mapper/vg1-db1 is now 13107200 blocks long.

Selasa, Oktober 01, 2019

Rpmbuild : File not found

Command line lengkap rpmbuild , sebagai berikut:
$ rpmbuild -ba Package.spec
Content dari Package.spec yang error ..
...
%prep
%setup -q
%build
%install
touch $RPM_BUILD_ROOT/opt/package-1.0.0
%files
/opt/package-1.0.0
<EOF>
Pesan error ..
RPM build errors: File not found: /opt/package-1.0.0
Debug dengan strace ..
$ strace rpmbuild -ba Package.spec
Hasil dari strace ..
write(1, "Processing files: package-1.0.0"..., 44) = 44
lstat64(".. package-1.0.0-1.i386/opt/package-1.0.0\r"
  , 0xbf89db80) = -1 ENOENT (No such file or directory)
write(2, "error: ", 7error: )                  = 7
write(2, "File not found: rpmbuild/"..., 93 
  File not found: 
  rpmbuild/BUILDROOT/package-1.0.0-1.i386/opt/package-1.0.0
  ) = 93
Dari output strace di atas terlihat jelas terdapat karakter \r setelah alamat file. Dan berikut content dari Package.spec yang okay, yaitu tanpa line ending setelah alamat file ..
...
%prep
%setup -q
%build
%install
touch $RPM_BUILD_ROOT/opt/package-1.0.0
%files
/opt/package-1.0.0<EOF>

Jumat, September 27, 2019

Inode: No space left on device

Pesan "No space left on device" sering kali terjadi karena tidak ada ruang cukup pada partisi.

$ df -Ph /media/cm21
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg1-cm21  9.8G  1.6G  7.7G  17% /media/cm21

Namun kali ini, masih banyak ruang tersisa sebagaimana output perintah df di atas. Setelah cari jawaban di internet, ternyata sumber masalah-nya adalah tidak ada lagi INode yang tersedia.

$ df -Pi /media/cm21
Filesystem           Inodes  IUsed IFree IUse% Mounted on
/dev/mapper/vg1-cm21 655360 655360     0  100% /media/cm21

Disk cm21 digunakan untuk menyimpan log dan output dari background proses dan secara periodik log dan output dihapus berdasarkan prioritas background proses. Log dan output disimpan paling lama 7 hari. Log dan output disimpan dalam dua folder yang berbeda. Ketika issue terjadi folder log berisi 326.103 file dan folder output berisi 326.104 file. Disk cm21 memiliki jumlah file yang besar namun memiliki jumlah byte per file yang kecil.

Menurut Tanenbaum, Andrew S. Modern Operating Systems (3rd ed.). p. 279. sebagaimana informasi yang didapatkan dari https://en.wikipedia.org/wiki/Inode:

The inode (index node) is a data structure in a Unix-style file system that describes a file-system object such as a file or a directory. Each inode stores the attributes and disk block location(s) of the object's data.

Rekapitulasi informasi jumlah byte dan inode, sebagai berikut:

Size GB Used GB Inode Size Inode Used Inode Free
    9.8     1.6     655360     655360          0

Perintah yang dieksekusi untuk benchmark ukuran Inode Size, sebagai berikut:

$ export N=16
$ sudo lvcreate -L 10G -n cm21 vg1
$ sudo mkfs.ext4 -N $(( 2**$N-1 )) /dev/vg1/cm21
$ sudo e2fsck /dev/vg1/cm21
$ sudo mkdir -p /media/cm21
$ sudo mount /dev/vg1/cm21 /media/cm21
$ df -Ph /dev/vg1/cm21
$ df -Pi /dev/vg1/cm21
$ sudo umount /dev/vg1/cm21
$ sudo rmdir /media/cm21
$ sudo lvremove -y /dev/vg1/cm21

Hasil benchmark untuk partisi 10G, sebagai berikut:

N Size GB Used MB Inode Size
16     9.9      23     6,6560
20     9.7      23   104,9600
21     9.4      23   209,7920
22     8.9      44   419,4303
23     7.9      49   838,8608
24     5.9      53 1,677,7216

Saat ini cm21 memiliki konfigurasi Inode sejumlah 1,677,7216 dengan alokasi logical volume 10G dan disk size 5.9G. Karena berdasarkan data terakhir kebutuhan cm21 sebanyak 1.6G.

Senin, April 15, 2019

Yum Cache

Pada saat mengunakan perintah yum seringkali berjalan cukup lama. Hal ini karena by default perintah yum berusaha untuk mendapatkan informasi yang terbaru. Hal ini berbeda dengan apt yang by default menggunakan cache.

Perintah yum menggunakan cache bila dieksekusi dengan option -C. Selain itu ada beberapa perintah terkait lain, antara lain:

  1. repoquery --cache
  2. yumdownloader --cacheonly

Untuk membuat cache, gunakan yum makecache.

Sabtu, Juli 14, 2018

Huge directory size of oradiag_user

Read sqlnet.log inside home directory to make sure that we dealing with the same problem.

Directory does not exist for read/write [/usr/lib/oracle/11.2/client64/lib/log]


Solution

$ sudo mkdir -p /usr/lib/oracle/11.2/client64/lib/log/diag/clients

$ sudo chmod 777 /usr/lib/oracle/11.2/client64/lib/log/diag/clients


Now, you can savely remove oradiag directory. And i already check , directory /usr/lib/oracle/11.2/client64/lib/log/diag/clients has no files in it.

Selasa, Juli 03, 2018

Is JWT necessary over HTTPS communication ?

Taken from : Is JWT necessary over HTTPS communication ?

Quotes:

"JWT is mainly an authentication system and .. but JWT does not increase the security level of HTTPS." pedrofb
"In short, we use JWT to validate our API calls it is nothing to do with HTTP or HTTPS" Vicky
In conclusion:

JWT dapat digunakan sebagai penyimpanan session data di mana session data tidak di simpan di server. Pada mekanisme cookie, browser dan application server bertukar session id sedangkan session data disimpan oleh application server dalam media penyimpanan file, memory, database atau lainnya. JWT dapat mencegah informasi session data diakses oleh pihak lain yang memiliki hak akses ke media penyimpanan session data pada application server.

JWT tidak mengamankan seluruh data yang kirim antar application server dan browser.

Jadi, bilamana terdapat issue terhadap hak akses ke media penyimpanan session data pada application server, JWT dapat digunakan sebagai salah satu alternatif solusi yang valid.

Jumat, Juni 01, 2018

Konfigurasi VirtualBox untuk VM Guest dengan Static Ip Address

Pada VM Guest dengan static ip-address, VM Guest tidak memerlukan DHCP Server. Tanpa konfigurasi network, VM Guest hanya dapat diakses via GUI di VirtualBox. Konfigurasi Host-Only menyebabkan VM Guest dapat diakses hanya via VM Host , ini banyak membantu dalam hal tools yang kita gunakan telah tersedia di VM Host.

Form untuk mengubah konfigurasi dapat diakses via navigasi : File / Preferences / Network


Kamis, Mei 31, 2018

Konversi Harddisk dari Virtualbox ke VMWare

Pada VMWare 5.5 nampak nya tidak kompatible dengan VirtualBox 4.3. Kompatibilitas yang dimaksud adalah hardware version (HWVersion) dari harddisk. Di sini akan dijelaskan bagaimana melakukan konversi harddisk yang di-develop menggunakan VirtualBox untuk di-deploy ke VMWare. Konversi appliance (OVA / OVF) belum dilakukan karena keterbatasan waktu dan terdapat kemungkinan hardware lain-nya yang tidak compatible.

Konversi dilakukan dengan menggunakan Qemu 2.12.0, Centos 7 masih menggunakan versi Qemu yang lama sehingga instalasi dilakukan dengan cara melakukan compile source code.

$ qemu-img convert firefox.vmdk firefox.qcow2

$ qemu-img convert -o compat6=off,hwversion=9 firefox.qcow2 firefox-hw9.vmdk


Rabu, Mei 23, 2018

Konfigurasi VM Guest dengan Static Ip Address


Konfigurasi Host-only networks


Virtualbox / File / Preferences / Network / Host-only networks

IPv4 Address: 192.168.50.254
IPv4 Network Mask: 255.255.255.0

Konfigurasi Network Interfaces


/etc/network/intefaces

auto eth0
iface eth0 inet static
address 192.168.50.1
netmask 255.255.255.0
gateway 192.168.50.254

Konfigurasi udev

By default, ubuntu menggunakan udev pada saat booting untuk registrasi network card baru. Konfigurasi network dengan ip static bisa dengan mendefinisikan mac address di konfigurasi udev dalam hal konfigurasi mac address dapat ditentukan. Alternatif lain adalah menghapus file konfigurasi udev sehingga konfigurasi network interface eth0 akan selalu diterapkan pada network card pertama yang dideteksi oleh kernel.

sudo rm /etc/udev/rules.d/70-persistent-net.rules

Selasa, Februari 13, 2018