Dekripsi file GPG tanpa diminta password

Q: Saya mengenkrip suatu dokumen dengan GPG. Pas didekrip (gpg -d), kok tiba-tiba file terdekrip begitu saja, tanpa diminta password?

A: Karena password masih ter-cache. Solusinya:

gpgconf reload gpg-agent

Maka password akan terhapus dari cache. Selanjutnya coba dekrip lagi. Pasti password akan diminta

Cara Share Direktori di Windows dengan Arch Linux di VirtualBox

Laptop saya menggunakan OS Win 7 64 Professional. Kadangkala saya iseng menjalankan Arch Linux di VirtualBox. Nah, saya ingin ada direktori di Windows yg bisa terakses juga di Arch Linux. Bagaimana caranya? Gampang. Nggak perlu install Samba :mrgreen:

  1. Jalankan Arch Linux di VirtualBox. Pilih Devices -> Install Guest Additions.
  2. Mount berkas installer:  sudo mount /dev/scd0 /media/cdrom
  3. Install paket linux-headers dan xorg: sudo pacman -S linux-headers xorg (kedua paket ini HARUS terinstall lebih dahulu, karena jika tidak akan menyebabkan error).
  4. Jalankan installer Guest Additions: sudo sh /media/cdrom/VBoxLinuxAdditions-x86.run
  5. Jalankan perintah: sudo modprobe -a vboxguest vboxsf vboxvideo
  6. Edit berkas /etc/rc.conf, tambahkan vboxguest vboxsf vboxvideo di bagian MODULES.
  7. Masukkan user anda dalam grup vboxsf: sudo usermod -a -G vboxsf anta40
  8. Tentukan direktori di Windows yang ingin anda akses, misal C:\works. Dari menu Devices -> Shared Folders -> tambahkan C:\works disini. Jangan lupa set Auto-mount dan Make Permanent.
  9. Reboot Arch Linux. Selanjutnya folder tersebut berada di /media/sf_works. Sekarang saya sudah bisa membuat/mengcopy/menghapus file disini, dan hasilnya bisa langsung terlihat di Windows.

Mencari Selisih Angka Pada Bahasa C

Iseng2 ngaskus, nemu trit [TANYA] Function mencari selisih angka pada bahasa C.

Saya coba Googling dulu, siapa tau ANSI C menyediakan fungsi semacam itu (fungsi untuk mencari selisih angka). Coba2 cari di sini dan situ, eh gak ada. Wah gawat ternyata beneran gak ada. Ya sudah, berarti harus dibuat solusi dalam assembly, karena C tidak menyediakan fitur built-in.

Ini solusinya (pake GCC, kalo mau diadaptasi ke compiler lain, silahkan ubah bagian assembly-nya).

#include <stdio.h>

int cariSelisih(int, int);

int main(){
	printf("%d\n", cariSelisih(99, 1));
	printf("%d\n", cariSelisih(5, 0));
	printf("%d\n", cariSelisih(39, 17));
	printf("%d\n", cariSelisih(2, -5));
	return 0;
}

int cariSelisih(int aa, int bb) {
	asm
	(
		"subl %1, %0"
		: "=r"(aa)
		: "m"(bb), "0"(aa)
	);

	return aa;
}

Tidak sulit bukan? Assembly saves your day…

Yet another “Hello World” in C

Pada eksperimen berikut ini, compiler yang saya pakai adalah MS Visual C++ 2008.

Tipikal program “Hello World” di C kira-kira adalah sebagai berikut (asumsikan nama file hello.c) :

#include <stdio.h>

int main(){
    printf("Hello World");
    return 0;
}

Compile :

cl hello.c

Jadilah suatu executable berukuran 48 KB. Kalau menurut anda 48 KB masih terlalu besar, anda bisa menghindari penggunaan C runtime, dan code diatas menjadi sebagai berikut :

#include <windows.h>

void main(){
    DWORD chars;
    HANDLE stdout = GetStdHandle(STD_OUTPUT_HANDLE);
    WriteConsoleA(stdout,"Hello World",11,&chars,0);
    ExitProcess(0);
}

Compile :

cl /c hello.c
link /nodefaultlib /entry:main hello.obj kernel32.lib

Hasilnya ? Executable berukuran 2.5 KB. Yay !! Kalau ditulis ulang dengan 100% assembly, kayanya bisa lebih compact lagi. He he entahlah gimana …

Pentingkah optimasi semacam ini ? Saya pikir tidak. Harddisk bergiga-giga sudah relatif murah.

Lebih baik mengoptimasi algoritma yang digunakan untuk meningkatkan efisiensi.

Tapi kalau anda membuat sesuatu, katakanlah virus atau demoscene, optimasi ukuran diatas memang diperlukan. Dan adakalanya membuat program sekecil-kecilnya adalah guilty pleasure di kalangan programmer.

Yah, mau diapain lagi ? :mrgreen:

Cara mengcompile kernel Linux

Biar gak lupa, taro di blog ah. Sorry kalo gak up to date, soalnya saya tulisan ini saya buat tahun 2007, pas ngerjain Buku Kunyuk :mrgreen:

Beberapa tahapan dalam kompilasi kernel:

Mendownload kernel. Ada banyak situs di internet tempat mendownload kernel. Tapi ada baiknya jika anda mengunjungi situs resminya, yaitu “kernel.org”. Anda bisa melihat beraneka versi kernel dan patchnya disana.Format penamaan kernel Linux adalah linux-X.YY.ZZ.tar.gz atau linux-X.YY.ZZ.tar.bz2, dimana: X = major number; Y = minor number; ZZ = revision number. Contoh: linux-2.6.20. Angka 2 adalah major number (angka 2 ini jarang berubah dan baru berubah jika sudah terjadi perubahan besar) Angka 6 adalah minor number (karena 6 adalah bilangan genap, berarti kernel ini versi stabil) Angka 20 menunjukkan nomor revisi.

Mengekstrak kernel. Source code kernel Anda yang lama bisa dilihat di direktori /usr/src/linux. Supaya source code kernel sebelumnya tidak hilang, ekstraklah kernel yang baru di direktori yang berbeda, misal /usr/src/linux-2.6.20 (tentunya sesuaikan angka-angka tersebut dengan versi kernel yang anda pakai).

Buat symbolic link.
ln -s linux-2.6.20 linux

Konfigurasi kernel. Sebelum proses kompilasi, anda memiliki 2 pilihan, yaitu membuat konfigurasi baru, atau menggunakan konfigurasi kernel sebelumnya. Jika anda ingin membuat konfigurasi baru, maka jalankan perintah: make xconfig (atau make menuconfig). Pada tahap ini, anda mengkonfigurasi kernel sesuai dengan hardware yang ada di komputer anda. Isinya antara lain mengatur jenis prosesor, memory, networking, USB, dsb. Dengan ini, kernel bisa bekerja optimal pada hardware yang ada Setelah berkas configurasi (.config) terbentuk, anda bisa memulai proses kompilasi. Sedangkan jika anda ingin menggunakan konfigurasi kernel yang lama, anda bisa mengcopy berkas .config dari direktori kernel yang lama ke direktori kernel yang baru, lalu menjalankan perintah: make oldconfig

Kompilasi. Jalankan perintah “make bzImage”. Proses kompilasi kernel bisa memakan waktu cukup lama, dan sangat mungkin terjadi kesalahan disitu. Jika ada kesalahan, coba lakukan lagi konfigurasi kernel. Setelah itu, coba lakukan kompilasi lagi. Jika sukses, terbentuk berkas bzImage di/usr/src/linux-2.6.20/arch/i386/boot. Copy ke direktori /boot dengan perintah:
cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.20

Selanjutnya, kompilasi modul. Jalankan perintah:
make modules

diikuti oleh :
make modules_install

Terbentuk berkas System.map. Copylah ke /boot dengan perintah:
cp System.map /boot/System.map-2.6.20

Supaya kernel yang baru bisa digunakan, ubahlah konfigurasi bootloader anda supaya ia mengetahui dimana kernel yang baru berada. Misal jika anda menggunakan Lilo, modifikasi berkas lilo.conf (ada di /etc), atau jika anda menggunakan grub, modifikasi berkas menu.lst (ada di /boot/grub). Khusus jika anda menggunakan lilo, jalankan perintah lilo. Setelah itu, reboot komputer anda.

Sumber asli

Membuka sejumlah file sekaligus di gvim

Pada kebanyakan teks editor, SciTE misalnya, jika anda sudah membuka suatu file dan membuka file lain, maka file itu akan muncul di tab baru, seperti berikut ini.

Nah, bagaimana melakukan hal yang serupa di gvim ? Setidaknya ada 2 cara untuk melakukan hal ini.

  1. Jika gvim belum jalan, jalankan gvim -p <nama file ke-1> <nama file ke-2> … <nama file ke-N>
  2. Jika gvim sudah jalan, pastikan anda berada dalam command mode dan bukan editing mode merespon (tekan Esc lalu Shift+: , jika muncul tanda : diujung bawah gvim, berarti gvim sudah berada dalam editing mode). Lalu ketik :tabnew <nama file>. Perhatikan bawa argumen :tabnew adalah satu file saja dan bukan banyak file. Jadi jika anda ingin membuka beberapa file sekaligus, tentu saja anda harus memanggil :tabnew sebanyak jumlah file tersebut.