Written on 07.16 by Muharrom, Muhammad Aji
Oke, mungkin melihat judulnya anda merasa aneh atau ngakak, tidak apa-apa. Memang sekarang saya lagi iseng :P. Jadi sesuai judul saya akan menulis cara menanak nasi, siapa tau berguna bagi mereka yang mungkin belum pernah menanak nasi dan ingin belajar( seperti saya yang baru belajar menanak nasi pas lebaran --" )
Ada 2 cara menanak nasi :
Pertama, dengan rice cooker. Yup, untunglah kita sekarang sudah hidup di jaman modern, hidup dikelilingi teknologi canggih yang sungguh membantu.
Kalau dengan rice cooker caranya mudah sekali, pertama cuci berasnya. Lalu, letakkan beras di tempat beras rice cooker, dan tambahkan air dengan volume 2-3 kali volume beras. Misalnya berasnya 1 gelas kecil ya airnya 2/3 gelas, ini tergantung selera tentunya mau nasi agak keras atau yang lunak. I prefer the second one :). Setelah itu tutup rice cookernya, colokin listriknya, dan nyalain deh (tombolnya diset ke arah bawah). Oke tinggal tunggu beberapa saat, JADI DEH!
Cara kedua, lebih ekstrim, cara tradisional. Kebayang nggak sih gimana jaman dulu waktu belum ada listrik orang-orang masak nasinya gimana? Beh beneran ribet, harus pakai api yang bikin sendiri + alat kukus. Untuk cara detailnya mohon maaf saya belum tau karena saya sendiri nggak bisa. :) Kalo sempat saya usahakan tulis deh, tunggu ya... ^^
Oke sekian post kali ini. See ya!
Written on 21.05 by Muharrom, Muhammad Aji
Beberapa hari ini saya terserang sakit, namun itu memberi saya kesempatan untuk belajar lebih dalam tentang C++. Dalam pengalaman saya beberapa hari ini, saya mendapat beberapa catatan tentang reference c++. Ini dia..
Reference dalam c++ seperti nama lain dari suatu objek/variabel. Reference mungkin agak ribet (terutama bagi saya), namun tetap berguna dan harus dipelajari. Deklarasinya mudah, yaitu:
* type& nama_variabel(variabel_yg_ditunjuk);
Menurut pemahaman saya, reference itu tidak bisa diinisialisasi dengan operator=, saat program berjalan, melainkan nilainya harus diinisialisasi saat dideklarasikan, seperti telah tertera di atas. Contohnya:
* int k; int &r(k);
Sintaks tersebut akan mendeklarasikan variabel bilangan bulat k, dan reference r yang menunjuk ke k. Karena hal inilah, reference jadi kurang praktis, tidak seperti pointer yang bisa digunakan utk menunjuk ke mana-mana(namanya juga pointer,penunjuk), dan akibatnya saya menganggapnya ribet. Tapi, reference sangat berguna ketika kita berbicara soal fungsi. Pada c++, dengan reference kita bisa melakukan sesuatu yang namanya _pass by reference_, dengan sintaks:
* functype nama_fungsi( type& var1, type& var2,..);
Jika kita melakukan _pass by reference_, maka jika mengubah variabel yang digunakan sebagai parameter, maka nilai sebenarnya dari variabel tersebut akan berubah, tidak hanya lokal dalam fungsi tersebut. Tentu kita sudah akrab dengan istilah _pass by reference_ ini, dan di bahasa pemrograman lain pun pasti ada cara melakukan ini. Istilahnya, variabel asli dan variabel dalam fungsi menunjuk ke alamat memori yang sama. Hal ini memudahkan kita karena dalam bahasa C, untuk tujuan ini harus digunakan pointer.
Selain itu kita juga bisa menggunakan _reference to pointer_ sebagai parameter fungsi yang kita buat. Tujuannya sama, agar pointer dalam fungsi dan di luar fungsi keduanya berubah. Sintaksnya:
* type*& nama_variabel;
Bisa juga ditulis
* type * &nama_variabel;
atau semacamnya. Gunanya misalnya dalam fungsi kita ingin mengalokasikan memori baru untuk pointer yang kita jadikan parameter(yang sebelumnya tidak punya alamat memori), kita harus menggunakan reference to pointer atau pointer to pointer( yang lebih ribet ). Kalo tidak menggunakan salah satu dari keduanya, di luar fungsi pointer bakal tetep nunjuk ke alamat lama yang ditunjuknya, bukan alamat baru yang udah dialokasikan tadi. Untuk lebih mudah dalam mencapai tujuan ini, disarankan memakai _reference to pointer_.
Namun, meski terdapat _reference to pointer_, tidak ada yang namanya _pointer to reference_, karena pointer 'kan menunjuk ke alamat tertentu, sedangkan alamat reference kan sama dengan alamat variabel yang diwakilinya, jadi kalo pointer ke reference ya sama aja pointer ke variabel aslinya.
Selain itu sepertinya kita tidak dapat mendeklarasikan _array of references_ (pernah dicoba dan compile error), dan kalo dipikir-pikir repot juga ya bikin array of references, kan harus diinisialisasi satu-satu pas dideklarasiin. Untuk lebih baik mending pake pointer/array of pointers deh. Deklarasi array of pointers sangat mudah, yaitu dengan sintaks ini:
* type *nama_variabel[];
Perlu diingat, saat kita menggunakan _array_ sebagai _parameter_ sebuah fungsi, array itu secara otomatis menggunakan _pass by reference_. Karena pada dasarnya array itu adalah pointer, yang menunjuk ke lokasi memori tertentu yang sudah dialokasikan, serta tidak bisa digunakan untuk menunjuk ke alamat memori yang lain. Sintaks pembuatan fungsi dgn array sbg parameter adalah biasa:
* functype fungsi(type array[]);
Sintaks tersebut bisa juga ditulis
* functype fungsi(type * array);
Dan jika terdapat sebuah array a dengan 10 elemen misalnya, pemanggilan
* fungsi(a);
pada kedua fungsi tersebut, di dalam keduanya variabel lokal array perlakuannya sama. Perhatikan bahwa sintaks
* a[0]
ekuivalen dengan
* *a
dan sintaks
* a[i]
ekuivalen dengan
* *(a+i)
Namun hati-hati jika belum mengalokasikan memori untuk sebuah pointer, maka *(a+i) maupun a[i] pada pointer *a yg belum punya memori yg dialokasikan untuknya tentu menghasilkan error.
Satu catatan tambahan, untuk struktur atau kelas tertentu, misal p adalah pointer ke objek struct/class, maka sintaks berikut:
*(1) p->member
*(2) (*p).member
adalah ekuivalen, dan akan mengembalikan nilai dari "member" yang merupakan anggota objek yang ditunjuk oleh p.
sedangkan sintaks ini
*(3) *p.member
akan memberikan hasil berbeda, yaitu akan mengembalikan nilai dari variabel yang ditunjuk oleh pointer "member", yg mana "member" dianggap anggota objek p. Jadi jangan salah, utamakan pake p->member!
Written on 21.44 by Muharrom, Muhammad Aji
Sebagai manusia bisa, kita adalah tempatnya salah dan lupa.Mungkin ada kalanya kita lupa pada password, bahkan username komputer kita sendiri(pun demikian dengan saya). Jika Anda menggunakan OS ubuntu, dan lupa pada username/password-nya, sangat mudah untuk mengubahnya. Mau tahu caranya? Inidia:
- Masuk ke boot menu, caranya, waktu booting teken shift/esc
- Pilih menu recovery mode
- Tunggu sebentar, lalu setelah muncul pilihan-pilihan, pilih root- Drop to root shell prompt
- Ketik passwd username
*username diganti username yang ingin anda ubah
- Ketik dua kali password yang Anda inginkan
- Ketik shutdown -r now
- Selamat menikmati password baru Anda!
*jika Anda juga lupa username, Anda bisa mengetikkan perintah
ls /home (el-es), lalu akan ditampilkan daftar username.
Oke sekian dulu, insya allah screenshot menyusul
Written on 22.53 by Muharrom, Muhammad Aji
Pada e-book dalam format PDF yang sering kita dapat di internet, banyak yang berbentuk majalah. Meski berbentuk majalah, namun biasanya e-book tersebut dibagikan dalam bentuk per halaman, sehingga kadangkala gambar besar di majalah yang membutuhkan 2 halaman terpotong. Lantas, bagaimana jika kita ingin melihat gambar itu dengan jelas, serta melihat dokumen dalam "bentuk aslinya"?
Ada cara mudah yang bisa digunakan. Caranya menggunakan program
Multivalent, sebuah program dengan
command-line interface yang ditulis dalam bahasa Java (bukan Jawa ya,
Java). Karena ia adalah sebuah program CLI, maka tidak ada tampilan cantik di sana. Yang ada kita harus mengetik perintah-perintah yang telah ditentukan untuk menggunakannya. Cara penggunaannya untuk menggabungkan dua halaman menjadi satu sebagai berikut :
- Download Multivalent20060102.jar dari sini. Jangan download versi terbaru, karena malah error
- Agar lebih mudah, rename file menjadi "multivalent.jar", lalu pindahkan ke direktori C:\
- Pindahkan juga file yang ingin digabungkan ke direktori ini
- Buka command prompt/cmd dengan Windows -> Run, lalu ketik "cmd" dan tekan Enter.
- Ketik cd \ (perintah untuk pindah ke direktori C:\)
- Ketik "java -cp multivalent.jar tool.pdf.Impose -dim 2x1 -layout 1,2 -verbose -page 1-end -paper 15.75x10.51in NamaFile.pdf" tanpa tanda kutip. Tekan enter
- Tunggu proses "konversi" selesai. File hasil akan disimpan di NamaFile-up.pdf
Penjelasan lengkap tentang perintah-perintah ini dapat dilihat di
http://multivalent.sourceforge.net/Tools/pdf/Impose.html dan
http://multivalent.sourceforge.net/Tools/HowToRun.html. Mungkin Anda harus merubah parameter -page dan -paper karena mungkin setiap e-book berbeda ukuran dan halaman-halamannya (terdapat halaman kover dsb.)
Saran saya, untuk ukuran kertas yang tepat adalah (2 kali lebar kertas yang sebenarnya) X (tinggi kertas yang sebenarnya). [2*RealWidthXRealHeight]. Cara mengetahui ukuran kertas yang sebenarnya dapat anda lihat di
sini. Sedangkan untuk halaman-halaman yang akan digabungkan Anda bisa mencoba-coba sendiri (trial & error).
Oke, sekian dari saya, selamat mencoba, dan sampai jumpa di tulisan saya berikutnya!
Screenshot contoh hasil :
 |
Before |
 |
After |
Sumber : pengalaman pribadi :D
Written on 22.17 by Muharrom, Muhammad Aji
Di zaman internet yang modern ini, kita sering mendapatkan sumber-sumber informasi dari internet. Kadangkala, sumber tersebut kita dapat dalam bentuk e-book dengan format PDF. File PDF pun sebenanrnya punya ukuran kertasyang pas. Jika Anda ingin tahu pada ukuran kertas berapa file itu dibuat, beginilah caranya :
I. Dengan Adobe / Acrobat Reader
Dengan Adobe Reader, cara untuk tahu ukuran kertas sangat simpel. Cukup buka file itu,
klik kanan -> pilih
Document Properties. Jendela "Document Properties" akan muncul. Pada tab Description, dapat Anda lihat "
Page Size" di bagian bawah. Berikut SS-nya :
Sangat mudah, bukan? Kalau begitu, selamat mencoba!
Written on 15.57 by Muharrom, Muhammad Aji
Yap, selalu backup program Anda dalam bentuk compressed, JANGAN dalam bentuk EXECUTABLE. Tentu, ini hanya untuk para Windowser,, Hal ini berdasarkan pengalaman pribadi saya. Ceritanya, beberapa hari yang lalu, saya pinjem komputer temen di sekolah. Nah, terus saya download patch game kesayangan, patch PB di sana. :D
Karena kebetulan bawa flashdisk, saya kopi deh file patch itu ke flashdisk saya. Nah, petaka muncul dari situ.
Sesampainya di rumah, saya tancepin deh FD di PC, terus patch-in PointBlank. Nah terus, I noticed something unusual there. File setup program-program yang banyak terdapat di flashdisk saya udah gak karuan, filenya jadi kotak-kotak aneh gitu logonya. Terus, saya coba buka. Tiba-tiba, Norton360(versi trial) saya berontak! Ternyata, semua file executable yang ada di FD saya itu TERINFEKSI VIRUS W32.virut!!!
Nah, makanya, saya menyarankan, sangat menyarankan untuk mem-backup program-program Anda dalam bentuk compressed seperti ZIP atau RAR. Karena file executable itu rawan terinfeksi, seperti pengalaman saya ini. Untungnya, setup yang bentuknya compressed tidak ikut terinfeksi. Jadi, saya sarankan sekali lagi, simpanlah dalam bentuk compressed! Waspadalah! Waspadalah!
Okelah, sekian dulu. Sampai jumpa lagi!!! :)
*komennya ya :malu: