content:
Saya punya hobi memprogram benda apa saja dengan bahasa apa saja. Pertama saya contohkan dulu benda-benda yang saya program, lalu saya akan berusaha menjelaskan kenapa saya punya hobi ini, dan kenapa menyukai hobi ini.
Saya belajar memprogram otodidak waktu kelas 2 SMP dengan komputer Apple II/e dengan bahasa Basic. Waktu itu semuanya masih ngasal karena hanya belajar dari contoh source code. Waktu floppy disk-nya sudah error, saya tetap memprogram tiap hari, iseng membuat sesuatu, walau tidak bisa disimpan dan harus diketik lagi besoknya. Akhirnya berhenti memprogram benda itu setelah mati total.
Di SMU kelas 2 saya baru punya komputer lagi, kali ini IBM PC dengan Windows 95. Di PC tersebut saya memakai Pascal dan Assembly dan juga sudah mulai memprogram memakai Delphi. Saya mencoba berbagai macam hal di PC (pernah saya tuliskan di sini). Dari sini sudah terlihat kalau saya sangat random, dari mulai memprogram utility sampai game. Apapun yang saat itu menarik buat saya.
Waktu kuliah saya membawa PC saya ke Bandung, tapi kos saya dibobol maling dan PC saya dicuri. Akhirnya saya sering nongkong di lab sampai tutup. Lab waktu tingkat satu dulu sangat memprihatinkan, cuma 486 DX (lebih rendah specnya dari PC pentium saya yang hilang), jadi di situ saya kembali mendalami memprogram mode teks.
Device non PC pertama yang saya program adalah Palm OS. Selanjutnya banyak device sejenis PDA/Smartphone yang saya program. Saya sempat membuat puzzle di PalmOS dan beberapa app kecil lain. Berikutnya adalah Symbian Bible yang sempat dipakai jutaan orang di masa kejayaan Symbian OS (menggunakan C++). Saya juga membuat Bible Plus untuk OS Blackberry (versi BBOS ditulis memakai Java dan versi BB10 di tulis dalam C++ menggunakan Qt).
Saya juga memprogram game console saya. Saya memporting dua aplikasi ke Wii, yaitu WiiApple dan Hatari (keduanya menggunakan C di platform PowerPC). Saya membuat aplikasi dadu di Nintendo DS ketika dadu anak saya hilang (menggunakan C di platform ARM).
Sebelum ada Apple Watch, Pebble, dan berbagai jam pintar Android, saya sudah memprogram jam EZ430-Chronos untuk menampilkan OTP (ini memakai C, prosessornya MSP430). Setelah punya jam pintar Android, saya juga membuat versi untuk Android (menggunakan Java).
Program yang saya buat kadang khusus cuma untuk mainan anak saya. Misalnya benda ini adalah Arduino dengan Joystick yang akan mengubah arah panah (dan jika ditekan tengahnya akan mengubah menjadi ikon lain).
Ini dipakai di tempat tidur busnya:
Sekedar lampu sirene untuk mobil-mobilan anak saya (menggunakan C di ATTiny13):
Memprogram kereta mainanya (menggunakan C):
Atau mainan berbasis RFID untuk Jonathan yang bisa dilihat di sini (berbasis Python).
Di mobil, saya memasang display yang terhubung dengan raspberry pi. Karena tidak menemukan media player yang mudah dipakai anak saya, maka saya membuat player sendiri yang dikendalikan dengan Joystick NES (ini menggunakan Python+PyGame).
Kadang saya hanya membuat program kecil yang dipakai sendiri. Misalnya ini untuk belajar ESP8266 (menggunakan bahasa Lua).
Saya juga tidak keberatan memakai berbagai bahasa. Misalnya untuk mainan Puzzle ini, saya memakai Haxe:
Kalkulator bisa diprogram dalam bahasa BASIC
Selain aplikasi yang sifatnya main-main, saya juga melakukan beberapa hal yang agak serius, seperti memporting kernel OS. Misalnya porting FreeBSD ke sebuah SoC ARM.
Di PC, saya memprogram dalam banyak bahasa: assembly, Pascal/Delphi, C, C++, PHP, Python, Lua, Ruby, Java, JavaScript dsb. Sebagian besar yang saya tulis pernah jadi produk atau dipakai di internal perusahaan.
Bagi saya memprogram dengan berbagai teknologi memiliki kepuasan tersendiri. Ketika sebuah program bisa berjalan bagi saya itu sudah merupakan hal yang ajaib. Meskipun saya tahu bagaimana komputer bekerja sampai level bit processing dan memahami teori turing completeness, tetap saja magic.
Beberapa pengalaman terasa lebih magic dibanding sebelumnya. Kali pertama memprogram socket, rasanya takjub dua buah program di dua komputer bisa berinteraksi, kali pertama memprogram skrip CGI (common gateway interface): wah bisa bikin situs yang dinamis, kali pertama memprogram LED yang bisa berkedip, menggerakkan motor, dan membaca sensor rasanya senang sekali sebuah program bisa berinteraksi langsung dengan dunia fisik.
Pengalaman programming juga membantu saya memahami banyak konsep matematika. Mengenal konsep fungsi di programming membuat saya lebih mudah memahami topik seperti komposisi fungsi. Belajar perkalian matriks ketika membuat game 3D lebih nyangkut di kepala saya daripada ketika belajar di kelas.
Banyak orang menggunakan berbagai alat musik untuk memainkan lagu tertentu. Sebenarnya lagunya sama saja, tapi ada kepuasan tersendiri mendengarkan musik menggunakan alat musik alternatif (misalnya ada yang memainkan Let It Go memakai Game Boy). Sama halnya dengan program: emulator Apple yang berjalan di PC sama saja dengan yang berjalan di Wii, tapi ada kepuasan tersendiri melihat program yang sama bisa berjalan di device yang berbeda. Dalam kasus emulator Apple, Wii bisa terhubung ke TV di ruang tamu dan bisa membangkitkan nostalgia dulu orang-orang memakai komputer Apple dengan monitor TV sebagai displaynya.
Kadang saya menganggap berbagai teknik yang sudah lama tak akan terpakai lagi, dan ternyata saya salah. Dulu waktu ingin membuat aplikasi berjalan di latar belakang di DOS, saya memakai mengintercept interrupt 1ch, supaya dipanggil 18.2 kali per detik. Waktu saya belajar Linux dan Windows dan kemampuan multiprocess dan multithreading, saya pikir: wah ini cara yang mudah dan enak. Tapi ketika berhadapan dengan browser: kembali ke single threading, dan beberapa hal perlu disimulasikan dengan timer. Saat ini support WebWorker sudah memungkinkan multi threading tapi tetap terbatas (contoh: akses DOM tidak bisa dari web worker, jadi processing DOM tetap harus single thread).
Meski sudah saya jelaskan, saya sadar bahwa banyak hobi yang sulit dimengerti oleh orang lain. Selalu ada counter argument kenapa hobi itu “aneh”, atau “nggak berguna”.
Contoh: hobi mendaki gunung. Penjelasannya kenapa seseorang bisa suka: mengenai perjalanannya (it’s all about the journey), mengenai udara segarnya, mengenai pemandangan indahnya. Contoh counter argument-nya: kan capek jalan naik gunung, saya baca naik gunung itu bahaya (udah banyak orang yang meninggal gara-gara tersesat), nanti cari toilet di mana? pemandangannya kan bisa dicari di Google, di taman juga udaranya segar. Saya ambil pake tour aja yang di antar bus ke puncak gunung yang lain, sama aja kan? terus kenapa harus naik gunung yang lain? bukannya pemandangannya mirip-mirip aja?
Mungkin bagi orang awam berbagai kamera sama saja, lensa yang mahal versus mahal banget tidak terlihat bedanya. Dan masih banyak lagi hal-hal lain yang cuma bisa diapresiasi pemilik hobi.
Hanya karena saya suka memprogram berbagai device tidak membuat saya jadi jago/pintar memprogram, hanya membuka pikiran saya lebih luas. Sama seperti orang yang hobi naik gunung tidak membuat orang tersebut jadi ahli, walaupun mungkin dia lebih sehat dari aktivitas mendaki dibanding yang diam saja di rumah. Dari hobi saya, saya tahu sedikit lebih banyak dari mereka yang tidak punya hobi programming.
Tulisan ini cuma sekedar sharing hobi aneh saya karena saya masih jarang ketemu orang yang senang memprogram apa saja. Siapa tahu bisa menarik orang lain untuk hobi yang sama.
This entry was posted in umum on February 27, 2018 by admin.
Mengapa memakai bahasa pemrograman tertentu?
Leave a reply
Mengapa seseorang memilih suatu bahasa tertentu untuk menyelesaikan suatu masalah atau membuat aplikasi tertentu? Ternyata jawabannya bisa banyak. Kebanyakan pilihan intinya adalah keterpaksaan dan terakhir baru faktor kenyamanan.
Keterpaksaan pertama dari non teknis, misalnya dari permintaan atasan atau permintaan client. Hal ini sering kali tidak bisa ditawar lagi, terutama jika sudah melibatkan kontrak legal. Paksaan ini sering menghasilkan kode yang aneh atau tidak menggunakan fitur yang tepat dari sebuah bahasa, karena programmer dipaksa menggunakan bahasa lain, dan karena harus buru-buru mereka akan menggunakan gaya bahasa X di bahasa Y.
Sebuah teknologi tertentu kadang hanya bisa diprogram dengan satu bahasa. Misalnya dulu ponsel cuma bisa diprogram dengan Java (J2ME) jadi ya terpaksa harus memakai bahasa Java. Microcontroller tertentu perlu memakai assembly karena ukuran ROMnya sangat kecil dan tidak ada compiler C yang bisa menghasilkan kode sekecil itu.
Sekarang ini jumlah memori dan kecepatan berbagai device sudah sangat tinggi, sehingga memungkinkan interpreter berjalan di platform apa saja. Ini memberi kebebasan memilih bahasa. Contohnya: dulu microcontroller CPU dan RAMnya sangat kecil sehingga tidak cukup untuk menjalankan interpreter Python. Sekarang sudah banyak microcontroller yang bisa menjalankan MicroPython.
Bahasa tertentu dipilih karena masalah kinerja (performance). Meskipun Python bisa berjalan di microcontroller, tapi kecepatannya jauh lebih lambat dibandingkan C/C++ (karena interpreted). Faktor kecepatan ini sangat terasa untuk keperluan tertentu, misalnya untuk membuat animasi lampu yang jumlahnya banyak. Di dalam konteks lain juga sama: bahasa tertentu dipilih karena masalah performance.
Berbagai bahasa memiliki tingkat strictness yang berbeda, dan mulai masalah sintaks sampai tipe data. Sebagian bahasa memungkinkan kecerobohan yang sulit dilakukan di bahasa lain. Contoh sederhana, dalam JavaScript kita bisa membuat kode seperti ini dan akan berjalan, walau hasilnya mungkin tidak seperti yang diharapkan.
Tipe a adalah Number dan b adalah String, tapi keduanya bisa dioperasikan
Pemula Ruby yang beralih dari bahasa tertentu (misalnya C) mungkin akan bingung dengan sifat Ruby di mana 0 dianggap true. Alasannya: 0 adalah object yang valid, dan nilainya dianggap true.
Untuk bahasa yang sangat dinamik, dibutuhkan banyak test case untuk banyak hal sederhana, sedangkan di bahasa yang tipenya dicek oleh compiler, jumlah test bisa dikurangi. Ada bahasa yang lebih strict lagi, misalnya bahasa ADA yang sempat jadi bahasa wajib oleh Department of Defense Amerika. Secara umum: bahasa tertentu mengurangi kesalahan programmer (baik dari syntax, dari compiler), sehingga bahasa tersebut dipilih untuk tujuan tertentu.
Beberapa masalah mudah diselesaikan menggunakan library yang sudah ada. Ketersediaan library ini menjadi alasan kenapa memilih sebuah bahasa. Misalnya sudah ada library OpenCV (Open computer vision) untuk memproses video secara realtime (misalnya face recognition). OpenCV ditulis dalam C++ dan ada banyak binding sehingga fungsi-fungsi C++ ini bisa diakses dari bahasa lain (misalnya Python, Java, C#, NodeJS) tapi tidak semua binding ini sempurna, dan sebagian ketinggalan versinya. Misalnya saat tulisan ini dibuat, binding OpenCV untuk JavaScript/NodeJS versi 3 belum ada.
Jika tidak ada batasan keterpaksaan, maka alasan berikutnya adalah kenyamanan. Beberapa aplikasi bisa ditulis dalam bahasa apapun karena tidak tidak keterpaksaan tertentu. Dalam kasus seperti ini, orang bisa memilih bahasa sesuai dengan familiaritas dengan bahasa tersebut. Sebagian programmer yang menguasai banyak bahasa akan memilih bahasa yang ternyaman (dan kalau bisa yang terbaik) untuk menyelesaikan suatu masalah.
Jangan heran kalau dalam sebagian masalah, C bisa lebih nyaman dari Java atau bahasa lain. Contoh kecil: sering kali dalam memprogram hardware kita membutuhkan array of bytes (misalnya Protocol Data Unit pada NFC). Inisialisasi array of byte di Java jika nilainya kurang dari 127 bisa dilakukan seperit ini:
byte b [] = new byte[] {1, 127};
Tapi jika nilainya lebih dari 127 tiba-tiba kodenya tidak bisa dicompile:
byte b [] = new byte[] {1, 128};
Dengan error:
incompatible types: possible lossy conversion from int to byte
Cara yang benar adalah dengan menggunakan casting ke byte:
byte b [] = new byte[] {1, (byte)128};
Sedangkan di C, dengan tipe uint8_t (dari header stdint.h) kita tidak perlu memperdulikan hal kecil seperti itu. C juga mendukung bit fields yang bisa membuat manipulasi bit tidak diperlukan (karena dilakukan oleh compiler).
Di sisi lain: membuat aplikasi web lebih sulit dilakukan dengan C. Bereksperimen dengan bilangan integer yang besar (ratusan digit, misalnya untuk operasi RSA) jauh lebih mudah dilakukan di Python dibandingkan Javascript (big integer sudah built in di Python).
Perlu dicatat bahwa bahasa pemrograman yang populer juga masih terus berkembang. Dulu untuk melakukan iterasi list di Java butuh kode yang cukup panjang, tapi kemudian syntax for ditambahkan yang memudahkan ini. Ini hanyalah syntactic sugar alias pemanis saja, di dalamnya implementasinya masih sama. Sebagian bahasa memiliki sintaks yang sudah manis dari sejak dirancang sehingga kadang seseorang lebih memilih bahasa lain.
Kadang tool yang tersedia untuk sebuah bahasa juga menjadi faktor penting dalam memilih sebuah bahasa. Tools ini bisa berupa: compiler, debugger, IDE, dll. Compiler yang lambat bisa membuat frustrasi, jika debugger tidak tersedia akan membuat development lebih lama, IDE yang jelek bisa memperlama coding (apalagi jika sering error/hang) tapi IDE yang bagus bisa mempercepat coding.
Semoga sekarang cukup jelas kenapa ada banyak bahasa, kenapa seseorang perlu mempelajari banyak bahasa, dan kenapa bahasa tertentu dipilih untuk menyelesaikan masalah tertentu.
This entry was posted in bahasa, umum on February 11, 2018 by admin.
Bug, Debugging, dan Debugger
1 Reply
Baru saja ada seseorang yang bertanya kepada saya mengenai cara mendebug program buatannya. Sebentar saya merasa heran: masak nggak bisa pake debugger? lalu ketika saya mencoba mengingat-ingat, di sebagian besar buku dan kuliah mahasiswa tidak diajarkan mengenai bug yang umum, cara mencari bug, dan cara menggunakan debugger itu sendiri.
Kemampuan mencari bug di program sendiri ini juga menjadi dasar untuk mencari bug security. Kalo kita bisa menemukan kesalahan yang kita buat sendiri, akan lebih mudah untuk mencari kesalahan di program orang lain.
Bug
Bug adalah segala macam cacat dalam program. Bisa saja cacatnya hanya berupa tampilan yang sedikit salah, bisa crash, bisa berupa bug security (harusnya hanya bisa diakses user X, bisa diakses user Y), kadang bug tertentu tidak muncul sampai kasus ekstreem (misalnya jika jumlah user banyak maka akan out of memory karena ada memory leak).
Sumber bug bisa banyak, dari mulai salah design, salah implementasi, salah konfigurasi, dsb. Sebagai programmer, bug yang akan saya bahas adalah dari sisi implementasi (coding). Biasanya seorang programmer akan belajar sedikit demi sedkit jenis bug dari pengalaman. Semakin banyak coding, semakin banyak salah, semakin banyak belajar.
Beberapa jenis bug sangat umum di semua bahasa (kesalahan logika, kesalahan aritmatika, dsb), tapi bug tertentu hanya muncul di bahasa tertentu atau jika menggunakan framework tertentu. Jadi pengalaman coding tetap merupakan guru yang utama.
Contoh bug yang sederhana adalah lupa menginisialisasi atau mereset variabel. Biasanya jika program berjalan benar pertama kali, lalu ketika diulangi tidak benar hasilnya (dan benar lagi ketika aplikasi direstart) maka penyebabnya adalah lupa mereset variabel.
Contoh lain adalah menggunakan try catch secara malas, misalnya dengan membungkus seluruh fungsi dalam satu try except. Dengan cara ini, maka tidak jelas apa sumber error di sesungguhnya.
Contoh bug yang spesifik terhadap bahasa adalah bug manajemen memori di C. Kesalahan mengakses memori di C sangat mudah terjadi dan biasanya akan menyebabkan crash.
Source Control
Jangan heran juga kalau kadang bug baru muncul karena hal sepele, misalnya source code berubah karena keyboard tersenggol. Msalnya sebuah konstanta 1000 terdelete angka nol terakhirnya (atau bertambah satu), atau tanda “lebih besar sama dengan” terhapus menjadi lebih besar saja. Di sini penggunakan version control (yang populer saat ini: Git) sangat berguna, Anda bisa mereview segala perubahan pada source code.
Source control juga memungkinkan kita melihat sejarah perubahan secara keseluruhan. Bagi security researcher, ini sering menjadi ladang untuk mencari bug baru di software open source. Jika ada yang menambahkan fungsionalitas baru, maka kemungkinan ada bug baru yang muncul.
Unit Testing
Mencari dan membetulkan bug itu susah (baik bug sendiri maupun orang lain), jadi hal pertama yang perlu dicoba adalah: menghindari bug. Hal yang paling dasar adalah: kita perlu memecah program kita menjadi unit yang kecil (unit di sini berupa fungsi/kelas/method) dan menguji tiap bagian kecil tersebut. Istilahnya untuk ini adalah unit testing. Kita bisa menggunakan library tertentu untuk unit testing, atau panggil saja fungsi yang akan ditest.
Saya akan mengasumsikan Anda minimal sudah bisa membuat aplikasi yang bisa dicompile dan bisa dijalankan. Jika Anda masih salah syntax, salah opsi untuk mengcompile, dsb, sebaiknya ada mulai lagi dari nol dan mulai perlahan.
Dengan memecah program menjadi unit kecil dan mengujinya satu persatu, maka kesalahan umumnya bisa dilokalisasi: fungsi X ini masih salah. Pertanyaan berikutnya adalah: apa salahnya?
Asersi
Saat ini kebanyakan bahasa memiliki fitur assert. Fitur ini memungkinkan kita melakukan pengecekan ekstra (yang biasanya tidak akan dilakukan di versi produksi). Assert ini biasanya digunakan untuk menyatakan kondisi yang pasti harus benar, karena jika tidak benar maka titik program berikutnya akan error fatal.
Ini adalah contohnya:
assert(index >= 0);
val = values[index];
Jika index kurang dari 0, maka ada sesuatu kesalahan fatal di program kita (mungkin kesalahan logika, mungkin ada hal yang lupa ditangani). Jika asersi diaktifkan biasanya program akan berhenti dengan “Assertion error”.
Di berbagai bahasa assert ini bisa diaktifkan/nonaktifkan dengan opsi tertentu. Jadi dalam versi rilis kita bisa membuang berbagai pengecekan asersi ini.
Pesan dari Compiler dan Linter
Sebelum melihat jauh ke mana-mana, coba lihat dulu apakah ada warning dari compiler Anda. Contohnya untuk potongan kode C ini:
 int i;
 printf("i = %d\n", i);
Compiler memberitahu:
warning: ‘i’ is used uninitialized in this function [-Wuninitialized]
Bacalah pesan error dan warning dengan teliti. Di situ dijelaskan bahwa variabel i tidak diinisialisasi. Di C, variabel lokal nilainya tidak bisa diprediksi jika tidak diinisialisasi.
Selain compiler, biasanya ada program yang namanya linter untuk sebuah bahasa yang bisa memberi peringatan jika ada sesuatu yang dianggap tidak standar atau aneh. Anda bisa melihat daftar lengkap software semacam ini di Wikipedia. Sebagian software ini mudah sekali diinstall, dan sebagian lagi terlalu rumit, tapi beberapa IDE sudah memiliki linter built in. Saran saya: jika Anda masih belajar dan tools linter tersedia, pakailah dan perhatikan outputnya, jika terlalu sulit mensetupnya ya sudah lupakan saja untuk saat ini.
Print debugging
Lalu berikutnya cara paling primitif dalam debugging adalah dengan menuliskan nilai saat ini menggunakan: “print” “echo”, “printf” atau sejenisnya.
Contoh sederhana, misalnya kita punya conditional di Python seperti ini (melakukan regular expression matching):
if (re.search(PATTERN, x)): # do something
Lalu bagian aksi tidak pernah dieksekusi, atau cuma dieksekusi beberapa kali. Apakah Anda yakin patternnya benar? Coba print sebelumnya, jangan-jangan regexnya masih salah untuk input tertentu:
print "Input ", x, "Match result ", re.search(PATTERN, x)
Tentunya tidak semua aplikasi bisa punya layar yang menampilkan teks itu (contohnya Game, atau aplikasi grafik lain). Biasanya cara yang lebih baik adalah menggunakan library untuk logging yang saat ini sudah built in di banyak bahasa (misalnya ada modul logger di Python, java.util.logging di Java, dsb). Output logging bisa dikonfigurasi sedetail apa, dan outputnya ke mana (ke file, ke terminal, ke jaringan, dsb).
Logging tidak hanya untuk proses development. Banyak aplikasi menyediakan fungsi logging untuk mencatat berbagai hal yang berhubungan dengan aplikasi untuk mendebug jika ada masalah ketika dijalankan. Contohnya aplikasi bisa menampilkan di lognya: “berusaha melakukan koneksi database ke server XX port YY dengan username ZZ”, yang bisa diikuti dengan “Koneksi berhasil”, atau “Koneksi Gagal, pesan error: invalid username or password”.
Debugger
Debugger adalah tools untuk mencari bug. Di kebanyakan IDE (Integrated Development Environment), tools ini sudah built in dan mudah dipakai. Ada juga debugger stand alone, tapi biasanya ini lebih sulit bagi pemula.
Untuk menggunakan debugger pertama kita perlu mengeset breakpoint, yaitu titik berhenti sementara (break). Ketika kita mengklik “debug” maka debugger akan mulai menjalankan program sampai titik itu. Di beberapa bahasa, jika kita tidak mengeset breakpoint, maka program dihentikan sementara di titik awal.
Debugger paling dasar sekalipun akan memiliki fungsi untuk menampilkan nilai variabel saat ini. Dengan menggunakan ini kita biasanya tidak perlu mencetak dengan printf, tapi untuk mencetak objek yang kompleks, kadang tetap saja keluaran print masih lebih baik.
Fungsi debugger berikutnya adalah melakukan single stepping, artinya kita bisa menelusuri langkah demi langkah program. Contohnya jika kita memiliki source sederhana
diskon = 0.1

harga = 10000

harga = harga - (diskon * harga)
Kita bisa melakukan single step dan melihat nilai diskon dan harga di setiap langkah.
Jika kita memanggil fungsi lain, maka kita memiliki dua opsi, masuk ke dalam fungsi itu (istilahnya biasanya “step into”) atau memanggil fungsi itu, lalu segera meneruskan ke baris berikutnya (kita tidak peduli atau tidak ingin mendebug fungsi itu, istilah ini “step over”).
Jika fungsi yang akan kita cek sangat jauh atau hanya dipanggil di kondisi tertentu maka kita bisa menggunakan breakpoint. Biasanya di berbagai IDE ini bisa dilakukan dengan mengklik di samping nomor baris, dan akan muncul bulatan merah. Jika kita menekan tombol “continue”, maka program akan dijalankan dan akan dihentikan sementara di titik breakpoint tersebut.
Ada juga yang namanya “conditional breakpoint”. Artinya kita akan berhenti hanya pada kondisi tertentu. Misalnya kita ingin berhenti dalam loop setelah i > 100, karena di titik itu ada data yang aneh, maka kita bisa menambahkan kondiri “i>100”
Beberapa debugger memiliki fungsi yang menakjubkan, misalnya GDB mendukung reverse execution dan Visual Studio mendukung “Edit and Continue”. Untuk perubahan kecil, kita bisa mengubah program kita tanpa menghentikan debugger.
Di beberapa environment mensetup debugging tidak mudah, tapi ketika sudah terinstall ini akan sangat berguna sekali.
Debugger level Assembly
Untuk program biasa, Anda biasanya tidak akan pernah butuh mendebug sampai level ini, tapi jika Anda membuat eksploit atau berusaha mengeksploit binary, Anda perlu tahu ini (saya pernah membuat pengantar mengenai buffer overflow jika Anda tertarik).
Debugger di level assembly sebenarnya tidak berbeda jauh dari level source code. Jika kita punya source codenya, bahkan kita bisa melihat keduanya berdampingan. Di level assembly kita bisa menelusuri tiap instruksi dan juga melihat nilai register. Dengan melihat nilai register beserta flagsnya Anda bisa belajar banyak mengenai assembly.
Tools lain
Kadang debugger saja tidak cukup, tools analisis runtime seperti strace, ltrace, valgrind dsb akan berguna membantu menemukan bug terutama di kode native. Topik mengenai tools sudah pernah saya bahas sebelumnya.
Logika
Tools apapun tidak akan bisa membantu jika kita tidak punya logika yang baik. Dasar dari debugging adalah mencari kesalahan program, lalu membetulkannya agar berjalan sesuai harapan. Jadi di tahap paling awal, Anda sendiri harus tahu harapannya apa yang terjadi di setiap langkah.
Contohnya jika Anda mendebug algoritma mencari nilai maksimum, Anda perlu mengerti dulu seperti apa seharusnya algoritmanya dan apakah ketika dijalankan sudah sesuai harapan. Dalam kasus ini, di langkah pertama seharusnya nilai maksimum adalah elemen pertama, di langkah kedua, jika nilainya lebih besar maka elemen ini yang jadi elemen maksimum (dan jika tidak, maka elemen pertama yang tetap menjadi maksimum), dan seterusnya untuk elemen berikutnya.
Penutup
Sebenarnya bisa panjang sekali bahasan mengenai bug software, artikel ini hanya sekedar perkenalan. Anda sebaiknya mendalami berbagai tools supaya lebih produktif dalam bekerja, dari mulai tools source control, editor, debugger, linter, build system (Makefile, CMake, Ant, Maven, atau apapun), maupun tools lainnya.
Untuk Anda yang baru belajar memprogram: jika Anda menggunakan IDE, sesekali tekanlah tombol debug (atau menu debug) dan cobalah bereksperimen menggunakan fungsi dasar seperti step into, step over, dsb. Ini akan sangat membantu Anda dalam belajar pemrograman.
This entry was posted in teknis, umum on July 13, 2016 by admin.
Masuk Dunia Software Development
3 Replies
Banyak orang yang ingin memasuki dunia software development, dan bertanya ke saya: saya perlu belajar bahasa/teknologi yang mana saat ini? Ada yang sudah kerja di IT lalu ingin masuk software development (ada yang di departemen IT, ada yang jaga warnet, dsb). Ada juga anak SMU yang nanya bahasa dan teknologi apa yang perlu dipelajari duluan, dsb. Di sini saya akan berusaha membahas pendekatan pembelajaran yang mungkin, dan sekilas teknologi yang ada saat ini dan kelemahan/kelebihannya dari sudut pandang pemula.
Hal pertama yang perlu Anda pikirkan adalah: apa motivasi Anda? ada yang karena ingin uang lebih karena membuat aplikasi bisa menghasilkan uang banyak, atau Anda ingin sekedar berkontribusi untuk opensource (yang dasar motivasinya juga banyak). Motivasi ini biasanya akan menentukan jalan apa yang bisa dipilih untuk menjadi developer.
Saya dan teman-teman saya dari tempat kuliah (informatika ITB) memiliki kelebihan karena dipandang “pintar”, dan pasti bisa belajar teknologi apapun (dan biasanya memang begitu karena sudah diajari dasar berbagai macam hal ketika kuliah). Dari tempat kami pertama bekerja, ada yang mendalami dan menjadi ahli di bidang yang spesifik (misalnya telekomunikasi, atau enterprise development), ada juga yang bosan dan berpindah bidang. Jadi bagi kami tidak ada kewajiban untuk memilih apakah perlu belajar Java dulu atau PHP dulu, lalu mencari kerja yang sesuai. Untuk kebanyakan orang lain, tentunya pendekatan tersebut biasanya tidak berlaku, tapi ada beberapa pendekatan lain yang mungkin.
Inti dari pendekatan untuk masuk dunia sofware development adalah membuat sofware. Tentunya sulit mencari kerja tanpa pengalaman. Jadi bagaimana mencari pengalaman tanpa bekerja di sebuah software house atau menerima proyek sebagai freelancer?
Pendekatan pertama yang saya lihat adalah melalui dunia opensource. Salah satu orang terkenal adalah Con Kolivas, seorang ahli anastesi, yang tidak punya background computer science, tapi sangat tertarik pada linux dan menjadi developer kernel Linux. Tentunya kecerdasan dan dedikasi orang tersebut luar biasa, tapi tidak perlu kontribusi ke proyek yang sangat high profile untuk bisa masuk melalui dunia opensource. Cara yang paling sederhana adalah dengan membuat plugin untuk berbagai proyek open source, seperti misalnya wordpress, joomla, dan berbagai software lain. Membuat plugin tidak melibatkan proyek utama, jadi mudah dilakukan. Jika sudah cukup confident, Anda juga bisa mengirimkan patch/pull request untuk proyek utama.
Pendekatan berikutnya adalah membuat app sendiri untuk dipublish melalui dunia app store. Ketika masih demam app store, banyak orang nekat terjun membeli buku atau mengambil kursus untuk memprogram iOS atau Android. Sebagian dari mereka sangat berhasil dan menjadi jutawan (dalam USD), dan sebagian gagal. Tapi pendekatan ini bisa berhasil karena: kita bisa membuat aplikasi yang kita mau, tidak dibatasi waktu, dan ada targetnya (menjual app).
Jika Anda ingin membuat aplikasi web, maka pendekatan di atas bisa diganti dengan membuat web app sendiri. Terserah Anda jenis web yang ingin Anda buat seperti apa. Anda juga bisa mencari teman yang bisnis online dan mencoba membantu membuatkan web app untuk teman tersebut.
Pendekatan lainnya, yang menurut saya agak berisiko adalah dengan nekat belajar teknologi tertentu saja, dan berusaha mencari pekerjaan yang berhubungan dengan teknologi tersebut. Anda bisa meyakinkan orang bahwa Anda mengenal teknologi tertentu dan mengambil proyek freelance sesuai teknologi tersebut, atau berusaha mengambil sertifikasi khusus teknologi tertentu (misalnya Java atau .NET) dan berusaha langsung mencari kerja dengan menggunakan sertifikasi itu.
Anda bisa melihat di posisi Anda saat ini apa yang bisa Anda gali untuk memulai. Mungkin Anda masih SMU jadi tahu apa kebutuhan anak-anak SMU dan bisa membuat app yang sesuai. Mungkin Anda bekerja di perusahaan tertentu dan bisa melihat app apa yang bisa dikembangkan untuk perusahaan jenis itu.
Memilih teknologi yang dipelajari adalah hal yang sulit: teknologi berkembang sangat cepat meski dasarnya masih sama. Saya ambil contoh teknologi Java. Teknologi ini ada sejak pertengahan 1990an, dan masih ada dan dipakai sampai sekarang. Tapi teknologi Java (meliputi bahasa, API, runtime environment) sudah berubah banyak. Berbagai fitur bahasa Java ditambahkan setiap kali versi major baru dirillis. Berbagai framework dan tools muncul dan dan mati bergantian. Untuk mengcompile saja ada beberapa pendekatan (manual, ant, maven, gradle), ada berbagai framework sisi server yang selalu silih berganti (struts, spring, grails, dan puluhan lain yang tidak saya ingat), belum lagi berbagai library yang perlu dikuasai, misalnya library apa untuk membuat PDF, library apa untuk memproses gambar, dan berbagai library lain. Belajar bahasa Java saja tidak cukup untuk membuat kebanyakan aplikasi real world, kita tetap perlu belajar framework, library, dan tools yang spesifik untuk aplikasi tersebut.
Penjelasan di atas hanya untuk memberi gambaran bahwa belajar bahasa saja tidak cukup, itu hanya awalnya saja. Hal yang penting ketika mempelajari sebuah bahasa adalah benar-benar memahami fitur-fiturnya, supaya tidak bingung ketika fitur itu dipakai di framework atau library tertentu.
Sekarang saya akan bahas beberapa teknologi dasar yang menurut saya perlu diketahui, lalu berikutnya berbagai teknologi yang bisa Anda pilih, sesuai dengan keadaan Anda.
Teknologi dasar pertama adalah SQL. Ini bisa dipelajari terpisah dari bahasa manapun. Semua aplikasi butuh penyimpanan, dan meskipun teknologi NoSQL mulai banyak dipakai, tapi SQL masih digunakan di mana-mana. Aplikasi server memakai berbagai DBMS (Misalnya SQL Server, MySql, Posgres), aplikasi mobile memakai SQLite, bahkan aplikasi browser bisa memakai WebSQL (saat ini disupport oleh Chrome, Safari, Opera).
Teknologi berikutnya adalah HTML/CSS dan JavaScript. HTML dan CSS dasar diperlukan karena banyak sekali user interface dibuat berdasarkan HTML/CSS. Aplikasi web tentunya memakai teknologi itu, tapi banyak app di desktop dan app store juga memakai HTML/CSS untuk user interfacenya. Mengenal javascript juga akan sangat berguna untuk membuat web yang interaktif, dan bahkan sekarang JavaScript juga bisa dipakai memprogram sisi server dengan NodeJS. Salah satu hal praktis yang bisa dibuat dengan HTML/CSS/JS adalah dengan membuat extension untuk browser (contoh extension browser yang terkenal adalah AdBlock).
Jangan lupa pelajari berbagai tools yang ada, terutama command line yang bisa dipanggil program lain. Ini akan sangat berguna untuk mengurangi pekerjaan memprogram. Anda bisa menulis beberapa ribu baris untuk meresize berbagai format gambar, tapi Anda bisa lebih gampang memanggil program imagemagick dari dalam program Anda untuk melakukannya dengan satu baris saja.
Setelah itu Anda bisa memilih salah satu teknologi utama yang ingin Anda kuasai. Misalnya Anda bisa mendalami teknologi .NET (bisa melalui berbagai bahasa .NET misalnya C# atau Visual Basic .NET). Teknologi .NET saat ini cukup banyak dipakai di berbagai perusahaan besar. Teknologi ini sangat Microsoft centric, walau sekarang mulai dibuka sourcenya agar disupport di platform lain. Dari pengamatan saya, untuk teknologi Web tidak banyak perusahaan menengah atau kecil yang memakai .NET. Jika Anda memprogram aplikasi desktop untuk Windows, maka .NET merupakan pilihan yang bagus. Teknologi .NET bisa juga dipakai untuk memprogram mobile, terutama Windows Phone. Ada juga tools tambahan yang memungkinkan kita membuat program .NET yang jalan di Android ataupun iOS, tapi saya lebih menyarankan Anda memakai Java untuk Android dan Objective C atau Swift untuk iOS.
Alternatif teknologi .NET adalah Java. Java bisa dipakai untuk memprogram aplikasi desktop, mobile (Android), dan Web (Java 2 EE dengan berbagai teknologi dan framework yang ada). Cukup banyak juga enterprise yang memakai Java, apalagi karena Java ini bisa dideploy di berbagai OS, termasuk Linux (yang biaya lisensinya gratis). Dari pengamatan saya: bebereapa perusahaan besar memakai lebih dari satu teknologi (misalnya Java dan .NET sekaligus), karena mereka tidak ingin ditekan oleh vendor tertentu (kalau vendor berusaha menjual harga mahal, maka bisa bilang: saya switch aja deh ke teknologi yang satu lagi).
Anda bahkan bisa menjadikan HTML/JS/CSS menjadi teknologi utama Anda karena sekarang semua jenis aplikasi bisa diprogram dengan HTML/JS. Anda bisa membuat mobile app dengan Phonegap/Cordova, bisa membuat web app dengan menggunakan nodejs di sisi server.
Di sisi open source, ada berbagai alternatif. Yang saya maksud dengan open source di sini adalah open source yang tidak didukung perusahaan besar (Java dan .NET sekarang sudah open source juga). Teknologi PHP masih dipakai diberbagai perusahaan besar (misalnya facebook), tapi sekarang sebagian besar sudah diprogram menggunakan framework tertentu (Larave, CodeIgniter, Nette, dan ratusan framework lain), tidak seperti dulu di mana orang memprogram langsung PHP prosedural tanpa framework.
Meski di luar negeri sudah sangat populer, sepanjang pengetahuan saya penggunaan teknologi Python, Ruby dan lain-lain masih kurang di Indonesia. Mungkin karena tidak ada vendor tertentu yang berusaha menjual produk ke perusahaan (tidak seperti Java atau .NET) sehingga ini masih kurang populer. Jika Anda mau mengambil berbagai pekerjaan freelance dari luar negeri.
Jika Anda spesifik ingin membuat aplikasi iOS, maka sebaiknya Anda belajar Objective C atau Swift. Bahasa Swift lebih sederhana, tapi masih sangat berkembang (terutama sepanjang tahun lalu). Bahasa Swift ini cukup sederhana, tapi sangat Apple centric, dan ilmunya tidak berlaku untuk platform lain.
Selagi belajar teknologi tersebut, Anda sebaiknya belajar berbagai macam hal yang berhubungan dengan development, misalnya versioning (sekarang yang populer menggunakan Git), testing (tergantung teknologi apa yang Anda pakai), deployment (misalnya dengan docker), tools untuk setup development (misalnya dengan Vagrant), IDE (tergantung bahasa yang ingin dipakai). Teknologi-teknologi ini adalah pelengkap yang penting dipelajari, dan lebih mudah dipelajari sambil praktik.
Pertanyaan berikutnya adalah bagaimana cara belajarnya? Anda bisa membeli buku lalu membacanya (silakan dibandingkan sendiri, karena buku yang dianggap bagus oleh satu orang dianggap jelek oleh orang lain), Anda juga bisa mengambil kursus online baik di Coursera, EDX, Udemy, maupun yang lain. Jika Anda suka pendekatan video, banyak sekali tutorial gratis di youtube.
Setelah yakin dengan kemampuan Anda, Anda juga bisa mengambil berbagai sertifikasi. Saya sendiri tidak pernah mengambil sertifikasi pemrograman, jadi kurang tahu bagaimana pandangan perusahaan terhadap berbagai sertifikasi yang ada.
Keahlian yang paling dibutuhkan dalam memprogram adalah mencari jawaban atas error yang ditemui. Keahlian Anda mencari dengan Google akan sangat berguna. Situs stack overflow juga akan sangat membantu dalam menjawab berbagai pertanyaan Anda. Satu hal yang penting adalah: pahami berbagai istilah yang ada, ini akan sangat memudahkan ketika Anda mencari sesuatu menggunakan search engine.
Selamat memasuki dunia development software.
This entry was posted in umum on July 19, 2015 by admin.
Programming dan Penetration Testing
2 Replies
Pentest adalah kegiatan menyerang sistem komputer untuk mencari kelemahan security, atau dari Wikipedia:
A penetration test, or the short form pentest, is an attack on a computer system with the intention of finding security weaknesses, potentially gaining access to it, its functionality and data.
Pentesting dilakukan atas permintaan client, jadi bukan hacking ke sembarang website. Contoh sederhana pentesting seperti ini: coba jebol website perusahaan kami, apakah ada bug securitinya? atau: coba pergi ke lobi atau tempat parkir perusahaan kami, apakah ada WIFI terbuka, apakah dari situ bisa masuk ke sistem internal perusahaan kami?. Kami punya app mobile, apakah bisa “dijebol” (misalnya apakah kita bisa membuat request ke server supaya memberikan data user lain).
Karena ini blog mengenai programming, saya tidak akan membahas banyak mengenai pentesting, hanya ingin menunjukkan betapa keahlian programming bisa sangat berguna untuk pentesting. Dari contoh yang saya sebutkan di atas, scope dari pentesting bisa sangat banyak, mulai dari yang on site: datang dan mengecek kabel, wireless network, dsb, sampai ke level network dan aplikasi (baik web, desktop, mobile). Saya hanya ingin membahas aspek programming, untuk mendorong peminat bidang security agar mau belajar programming.
Perkiraan saya mungkin sekitar 70% pekerjaan pentesting bisa dilakukan dengan tools yang sudah tersedia, baik yang open source maupun komersial, tanpa butuh keahlian scripting ataupun programming. Sisanya bakal butuh programming. Bahkan saya yakin 100% beberapa jenis bug tidak bisa ditemukan tanpa keahlian programming.
Kemampuan programming minimal yang dibutuhkan adalah bisa mengcompile atau menjalankan program dalam berbagai bahasa. Kadang di sebuah server tidak tersedia tool tertentu, jadi kita perlu mengcompile dari source karena OS di server itu sudah terlalu lama (misalnya masih banyak yang memakai RHEL 4). Jika tidak tahu bagaimana menjalankan sesuatu, maka sudah game over di titik ini. Pernah saya baca di blog pak Budi Rahardjo mengenai kompetisi CDC (Cyber Defense Competition):
Salah satu soal yang disampaikan adalah men-decode data base64 yang kemudian menjadi skrip Python, yang tinggal dijalankan. Lucunya ada banyak yang gak tahu Python. ha ha ha. Mereka kebingungan menjalankannya. Padahal tinggal “python namaskrip.py”. Mereka tidak perlu tahu bahasanya. hi hi hi. Ada yang pura-pura tahu dan me-rename menjadi bahasa C, menambahkan “#include ” dibagian awalnya, kemudian mencoba compile. Ya gak bakalan jalanlah. he he he.
Kejadian semacam di atas itu yang mendorong saya menulis tulisan seperti ini.
Keahlian lain adalah mencari program atau menulis program kecil dalam bahasa tertentu yang kadang tidak terlalu umum atau sudah kuno. Contoh: jika sebuah web server bisa menerima upload file, dan web server itu hanya bisa menjalankan ASP versi klasik, ya kita harus bisa mencari shell dalam ASP Classic (bukan ASP.NET). Berbeda dengan software development biasa di mana kita bisa memilih bahasa pemrograman atau teknologi yang ingin kita pakai, di sini kita dipaksa mengikuti apa yang tersetup di server.
Jika beruntung, sudah ada orang yang menuliskan program standar (web shell) yang memiliki fungsi seperti “file manager/file upload” (untuk mengupload tool tambahan), “shell” (untuk mengeksekusi command apapun di sisi server), dan “database shell” (untuk mengirimkan query apapun ke database). Jika tidak beruntung, atau ada batasan tertentu di server, mungkin kita perlu membuat tool baru. Contoh sederhana: jika server membatasi upload hanya 100 KB saja, sementara binary nmap yang ingin diupload (plus librarnya) besarnya beberapa megabyte, maka kita perlu membuat program kecil untuk mengupload parsial lalu menggabungkan hasil uploadnya.
Keahlian membaca kode dalam berbagai bahasa juga diperlukan. Dalam beberapa kasus, kita bisa mendapatkan akses ke source code aplikasi web (karena bug, karena salah konfigurasi, karena lupa ikut mengupload direktori “.git”, dsb). Setelah punya source code, kita bisa menemukan bug tambahan dengan membaca kodenya. Sebagai pentester, tentunya Anda tidak akan bilang: wah ternyata dia pake Python, saya nggak tau cara ngehack aplikasi web dengan Python.
Dengan membaca source code, hal paling minimal adalah mengerti di mana file konfigurasi supaya bisa mengekstrasi user/password database, berikutnya adalah mencari bug-bug tambahan seperti SQL Injection, hidden functionality, dsb.
Dengan maraknya OS Mobile, sekarang pentesting juga masuk ke ranah mobile. Di sini ilmu reverse engineering sangat diperlukan. Untuk OS Android, reverse engineering bisa dilakukan dengan decompiler yang bisa mengembalikan kode Java ke bentuk semula (kecuali sudah diobfuscate), jadi kembali keahlian membaca kode diperlukan.
Setelah mengetahui kodenya, biasanya kita perlu melakukan fuzzing request, alias mencoba-coba berbagai kemungkinan request. Untuk aplikasi berbasis HTTP, kita masih bisa memakai proxy (misalnya ZAP) dan mengubah-ubah request untuk tahu reaksi server (bagaimana jika nilaiya negatif, bagaimana jika nama file mengandung “../”, dsb). Tapi untuk aplikasi yang memakai protokol khusus via SSL, kita perlu memahami, lalu mengimplementasikan ulang client sendiri yang bisa melakukan fuzzing.
Pengetahuan mengenai best practice dalam sebuah bahasa juga diperlukan dalam membuat aplikasi yang aman. Contoh: untuk menghasilkan bilangan random untuk kriptografi di Java gunakan SecureRandom (jangan Random). Di Android untuk melakukan koneksi SSL menggunakan socket, jangan gunakan SSLFactory tapi gunakan SSLCertificateSocketFactory, dsb. Pekerjaan pentester cukup mudah di sini, hanya menyarankan saja, dan programmer yang akan mengimplementasikan saran tersebut.
Saya sudah banyak menemukan bug yang memerlukan banyak coding. Ada bug yang terkait dengan penyimpanan password (terenkripsi) yang disimpan lokal di device yang seharusnya aman, tapi ternyata saya bisa membuat tool yang cukup optimal untuk bisa mengcrack dalam 1 jam karena banyak hal kecil yang lupa dilakukan oleh programmer (lupa menginisialisasi IV, memakai EBC). Saya pernah menemukan bug fatal yang berhubungan dengan menggunakan algoritma hashing yang tidak aman (tidak memakai Cryptographic Hash Function). Dengan tools yang tersedia saja, tanpa pengetahuan programming (dan kriptografi), kedua bug itu tidak akan bisa ditemukan.
Jadi saran saya: untuk mereka yang tertarik di bidang security, pelajari juga bagian programmingnya. Ini saya masih bicara level pentesting yang kebutuhkan programmingnya masih minimal. Di bagian lagin security, keahlian programming lebih dibutuhkan lagi, misalnya membuat exploit butuh pemahaman yang lebih mendalam tentang sistem dan low level programming.
Dalam full security audit, selain pentesting kadang client menginginkan juga review kode mereka, jadi kita perlu bisa membaca, menjalankan, dan memberi saran yang berkaitan dengan security.
Buat saya sendiri sebagai programmer, saya jadi rajin membaca mengenai best security practice untuk berbagai bahasa dan framework. Jika ada yang bertanya: buat apa sih belajar bahasa X atau teknologi Y, saya bisa bilang: mungkin suatu saat ada sistem yang memakai teknologi itu yang perlu saya test.
This entry was posted in bahasa, security, umum on May 14, 2015 by admin.
Menjual Aplikasi di Appstore
1 Reply
Dulu waktu saya masih kuliah, menjual aplikasi tidaklah semudah sekarang. Waktu saya kuliah, pemrograman mobile masih cukup baru. Menjual aplikasi baik desktop maupun mobile juga tidak mudah (sekarang berbagai metode pembayaran sudah tersedia). Biasanya yang saya kerjakan adalah mencari proyek.
Saya punya saran bagi mahasiswa yang saat ini masih kuliah: cobalah membuat aplikasi, minimal satu dan menjualnya di sebuah application store. Mengapa saya menyarankan orang menjual aplikasi di sana? Tujuan utamanya adalah untuk belajar. Menurut saya ada banyak sekali yang bisa dipelajari dari menjual aplikasi di app store. Pelajaran ini bukan cuma dari sisi programming, tapi keseluruhan software development lifecycle.
Catatan: Biasanya orang-orang mengasosiasikan “App Store” dengan apple, dalam konteks artikel ini “App Store” adalah sembarang application store (misalnya Apple App Store, Nokia OVI, BlackBerry Appworld, Google Play, dsb).
Sejak “demam app store” banyak orang (termasuk non programmer) yang belajar memprogram dan berusaha membuat aplikasi yang laris agar menjadi jutawan. Memang mungkin menjadi jutawan dengan menjual aplikasi, tapi saran saya: jangan jadikan itu tolok ukur kesuksesan. Anda bisa tetap sukses belajar meskipun tidak menjadi jutawan dari appstore.
Apa saja yang bisa dipelajari dari menjual aplikasi di app store? pertama dari sisi programming: Anda belajar bagaimana memoles dan mempaketkan aplikasi supaya bisa dijual. Anda akan belajar membuat aplikasi yang layak pakai oleh end user. Kadang untuk proyek tertentu (misalnya proyek pemerintah), aplikasi yang dibuat asal jadi, asal memenuhi spesifikasi.
Ketika Anda punya pengguna, Anda akan belajar bagaimana berinteraksi dengan pengguna. Anda akan menghadapi bug report, feature request, pujian, dan juga cacian. Bahkan jika Anda membuat game yang amat bagus sekalipun, bisa ada yang protes dan memberi review 1 bintang karena mereka “stuck di level 5”. Jika aplikasi Anda cukup kompleks, akan ada bug yang hanya muncul di user tertentu, dan Anda belajar mendebug bersama pengguna aplikasi Anda.
Setelah ada perbaikan, Anda akan bisa merilis update software Anda (meluncurkan versi baru). Setelah Anda merilis beberapa versi, Anda akan sadar perlunya memakai versioning system. Bagi Anda yang belum memakai versioning system (Git, CVS, dsb), maka ini saat yang baik untuk belajar.
Setelah merilis aplikasi, jangan berhenti dan menunggu. Belajarlah mempromosikannya. Pertama: buatlah website untuk aplikasi Anda, bisa berupa halaman blog, atau mungkin Facebook page. Anda perlu belajar membuat teks dan screenshot yang menarik dan bahkan mungkin perlu membuat video. Setelah itu promosikan di media sosial seperti Twitter dan Facebook. Hubungi juga situs-situs komunitas dan mailing list komunitas. Anda akan belajar bagaimana mengirim email mempromosikan produk Anda.
Di titik ini Anda bisa mengetahui apakah Anda tertarik pada marketing atau tidak. Anda mungkin akan bereksperimen dengan harga yang berbeda, bereksperimen menggunakan iklan, menggunakan in app purchase, dan sebagainya. Jika Anda membuat aplikasi bagus, memasarkan dengan baik, dan beruntung, Anda bisa mendapatkan pendapatan lumayan dari app store ini dari mulai sekedar puluhan ribu rupiah sampai puluhan juta tiap bulannya.
Saya menambahkan kata “beruntung” karena kadang memang butuh keberuntungan supaya aplikasi sukses di pasaran. Kata “beruntung” juga sebagai penghibur bahwa kadang-kadang aplikasi yang sudah sangat bagus dan dipasarkan dengan mati-matian masih bisa gagal di appstore. Sedangkan aplikasi sangat sederhana kadang bisa sangat sukses. Jadi kadang bukan kesalahan pembuat aplikasi dan bukan kesalahan marketing. Bisa saja di saat yang bersamaan, ada aplikasi serupa yang sedang dipasarkan perusahaan yang lebih besar.
Tergantung app store mana yang Anda pilih, Anda mungkin harus menandatangani perjanjian tertentu. Anda akan belajar mengenai revenue sharing, pajak, sistem pembayaran, dsb. Anda akan belajar bahwa ada app store yang harganya sama di seluruh dunia (misalnya harga aplikasi 0.99 USD akan sama di manapun juga di dunia), tapi ada juga yang memvariasikan harga tergantung wilayah pembeli (misalnya: di Nokia Ovi Store harga 0.99 EURO di Eropa bisa menjadi 0.3 USD di India).
Sebagai perbandingan: mencari proyek software itu gampang-gampang susah, baik dari proses mencari, mengerjakan, sampai mengejar pembayarannya. Appstore itu sangat gampang: Anda bisa masuk ke app store dengan gratis (misal Blackberry), sekali bayar (25 USD untuk Google Play), atau per tahun (99 USD/tahun, Apple AppStore). Anda bisa langsung menjual app dengan mudah, tidak ada yang memburu deadline, pembayaran juga langsung masuk rekening (tidak perlu menagih).
Selain mendapatkan pengalaman, Andaikan tidak ada yang membeli aplikasi Anda, Anda tetap memiliki portfolio. Sudah banyak sekali penawaran pekerjaan dan proyek yang saya terima karena ada orang yang melihat aplikasi yang saya buat. Ini cukup wajar. Misalnya ada seseorang yang ingin membuat aplikasi resep masakan, mereka akan mencari orang yang sudah pernah membuat aplikasi sejenis itu.
Saya sendiri kurang sukses secara langsung dari appstore, tapi cukup banyak mendapat tawaran proyek karena aplikasi yang saya pajang di appstore. Walau demikian, secara langsung dari appstore ada pendapatan ekstra belasan sampai puluhan dollar sebulan yang cukup untuk membayar hosting, atau kadang-kadang membeli satu dua barang online untuk dioprek. Dapet 5 USD? cukup buat beli Arduino atau makan siang yang enak, 35 USD? bisa beli Raspberry Pi, atau duitnya bisa juga dipinjamkan jika tidak tau ingin diapakan.
This entry was posted in umum on February 13, 2015 by admin.
Mengajarkan pemrograman pada anak-anak
1 Reply
Anak saya yang sekarang ini usianya 4 tahun sudah mulai saya ajari memprogram dengan tutorial dari code.org. Mulanya anak saya iseng meminjam laptop saya, dan dia bermain-main, katanya dia sedang “mrogram”, jadi ternyata dia mau “play pretend” jadi programmer. Karena code.org menyediakan pelajaran untuk usia 4+, saya perkenalkan dia pada situs tersebut, dan dia sangat menyukainya.
Mungkin sebagian dari Anda bertanya-tanya: ngapain sih anak-anak diajari programming? Apa gunanya? kenapa nggak diajarin nanti aja? Nanti jadi orang yang lebih dekat dengan mesin daripada manusia lain?
Sejak 2 tahun yang lalu, saya sudah membeli dan membaca buku Seymour Papert, yang berjudul, Mindstorms: Children, Computers, And Powerful Ideas. Sebenarnya saya ingin menuliskan review yang panjang mengenai bukunya, tapi sudah ada orang lain yang menuliskannya dengan cukup detail. Jadi akan saya ceritakan secara singkat saja.
Buku ini ditulis tahun 1980 dan direvisi tahun 1993. Buku ini ditulis oleh pionir AI, yang pernah bekerja sama bertahun-tahun dengan Jean Piaget, seorang psikolog dan filosofer yang terkenal karena studi epistemologi pada anak-anak (epistemologi = teori mengenai pengetahuan). Jadi buku ini dituliskan oleh orang yang benar-benar mengerti ilmu perkembangan anak, dan yang benar-benar mengerti mesin.
Belajar memprogram adalah belajar membuat instruksi yang logis dan terperinci, jadi ini melatih logika anak. Ketika belajar membuat program, kita akan membuat kesalahan, di sini kita akan belajar debugging. Ketika belajar memprogram, seseorang tidak belajar mengenai “benar”, dan “salah”, tapi “apakah ini bisa diperbaiki?”, dan “bagaimana cara memperbaikinya?”.
Ilmu pemrograman sangat dekat dengan ilmu matematika, tapi dari sisi praktis. Bahasa pemrograman Logo yang dirancang oleh Seymour Papert merupakan salah satu contoh pendekatan pengajaran matematika melalui program.
Ilmu yang dipelajari dalam pemrograman bisa diaplikasikan dalam hidup sehari-hari . Di buku Mindstorm, contoh yang diberikan adalah juggling. Keahlian yang sepertinya sulit ini ternyata bisa dipelajari langkah-langkahnya secara detail, dan jika kita membuat kesalahan, bisa didebug. Tentunya ini tidak cuma berlaku untuk juggling, segala macam aktivitas dan proses bisa dipecah menjadi langkah-langkah sederhana, dan bisa didebug.
Mengenai ketakutan bahwa anak-anak akan lebih dekat pada mesin: menurut saya ketakutan ini tidak terlalu beralasan. Sejauh ini saya melihat bahwa orang-orang komputer di berbagai komunitas yang saya temui (komunitas network, programming, dan security), semuanya memiliki banyak teman. Saat ini, anak sayapun lebih suka bermain dengan orang daripada dengan mesin.
Menurut saya, orang-orang yang kurang bisa bersosialisasi adalah karena orang itu introvert, jadi tidak peduli bidangnya komputer atau bukan. Orang introvert mungkin lebih banyak yang tertarik pada dunia komputer karena lebih nyaman bagi mereka berada di depan komputer. Jadi bukan komputer yang membuat orang menjadi introvert, tapi orang introvert yang lebih tertarik pada dunia komputer.
Tentunya mengajarkan pemrograman pada anak adalah keputusan orang tua, dan juga tergantung pada kemampuan dan kesukaan anak. Sebagai orang tua yang mengerti komputer (dan berusaha banyak membaca mengenai perkembangan anak), saya merasa bahwa pelajaran pemrograman ini berharga, dan anak saya merasa ini adalah hal yang menyenangkan.
Saya bukan orang tua yang ingin memaksa anaknya mengikuti jejak saya. Saya akan sangat senang jika anak saya mengambil bidang lain (misalnya kedokteran), tapi bisa menggabungkannya dengan ilmu pemrograman. Tapi jika dia mengambil jalan lain yang tidak ada hubungannya dengan pemrograman pun, saya tidak keberatan.
Perlu dicatat, bahwa logika dan pemrograman hanya salah satu dari banyak hal yang saya ajarkan pada anak saya. Saya tutup dengan quote dari Seymour Papert:
“I FEEL VERY DEEPLY COMMITTED TO THE IDEA that, although rationality isn’t everything, and passion and interests and faith of various sorts count as much–nevertheless, rationality is a force for the good, and the more people that are capable of rational, critical thinking–the better the world will be; the more that have access to knowledge about the rest of the world–the better the world will be.”
–Seymour Papert, Mathematician, Computer Scientist, Educator – 2007 Interview – One Laptop Per Child
This entry was posted in umum on January 7, 2015 by admin.
Untuk mereka yang putus asa mau jadi programmer
Leave a reply
Sudah beberapa kali saya temukan di berbagai forum dan mailing list, orang-orang yang bertanya: kenapa program saya ini tidak jalan, dan kemudian mereka mempaste source code mereka. Biasanya saya akan menemukan kesalahan-kesalahan super fatal, mulai dari:
Salah syntax
Salah besar-kecil huruf di bahasa yang case sensitive (misalnya C)
Salah logika
Saya bisa memahami bahwa orang-orang ini mungkin:
Salah memilih jurusan Informatika/Ilmu komputer, atau
Terpaksa mengambil kuliah pemrograman karena ini mata kuliah wajib meski jurusannya tidak langsung berhubungan dengan pemrograman
Untuk orang-orang dalam kategori pertama: sudah saatnya Anda memperbaiki cara belajar Anda, atau segeralah pindah jurusan. Jika Anda kesulitan mencari kerja karena Anda tidak bisa memprogram, itu murni kesalahan Anda.
Untuk orang-orang dalam kategori kedua, saya akan berusaha memberikan panduan amat sangat dasar mengenai cara belajar memprogram, supaya setidaknya Anda bisa lulus kuliahnya. Orang-orang yang punya bakat memprogram tidak perlu belajar dengan cara ini.
Pertama: cobalah mengetik ulang banyak program, mengcompile dan menjalankannya. Kalau perlu, cobalah mengetik satu bagian demi satu bagian, lalu compile. Nanti Anda akan dapat feeling mengenai: nama-nama fungsi, pentingnya besar kecil huruf, dan hal-hal kecil lainnya.
Ketika program sudah jalan, cobalah “merusak” programnya. Perhatikan apa pesan errornya ketika salah nama variabel, ketika kurang tanda kurung, dsb, jadi ketika ada error serupa, Anda tahu sebabnya apa.
Ketika membuat program baru, jangan langsung mengetikkan semua program sampai selesai, lalu baru dicompile. Misalnya untuk membuat stack dalam C, cobalah buat dulu bagian typedef, bagian inisialisasi stack, dan bagian main. Coba compile, ketika sudah benar, coba tambahkan “push” lalu compile, coba tambahkan “print” untuk mencetak isi stack, compile, test apakah sudah jalan atau belum. Coba tambahkan “pop”, compile dan lihat hasilnya sudah benar belum, dst.
Intinya adalah: memprogram perlu dilakukan selangkah demi selangkah. Jika Anda berusaha mengetik semuanya, baru dicompile, maka Anda akan bingung sendiri.
Selanjutnya cobalah mencari video tentang cara memakai debugger. Ini akan sangat membantu Anda mengetahui jalannya sebuah program, Anda akan tahu bagaimana nilai variabel berubah, dan Anda akan tahu di mana program Anda crash (biasanya jika Anda membuat program dalam bahasa C, akan crash). Dengan menggunakan tools yang modern seperti XCode atau Visual Studio, Anda bisa mulai menggunakan debugger dengan sangat mudah (dengan satu klik atau dua saja).
Jika Anda mau melakukan hal-hal tersebut, semoga Anda bisa lolos mata kuliah pemrograman dan mungkin bisa menemukan jalan Anda sebagai programmer.
Catatan: Lihat juga link “Kurikulum Pemrograman” dan “Cara Belajar Algoritma”
This entry was posted in umum on November 30, 2014 by admin.
Single Board Computer dan Single Board Microcontroller
3 Replies
Belajar embedded system merupakan cara yang baik untuk lebih mengenal arsitektur komputer. Di PC/Tablet/Smartphone, ada begitu banyak “layer” yang mempersulit pemahaman kita tentang hardware, tapi di embedded system, kita bisa langsung berinteraksi dengan hardware, bahkan tanpa menggunakan sistem operasi sama sekali.
Saat ini ada dua jalur populer untuk belajar embedded system: menggunakan single board computer (misalnya: Raspberry Pi, BeagleBoard, BeagleBone Black, Cubie Board, RadXa, dsb), atau menggunakan single board microcontroller (misalnya: berbagai versi Arduino, Parallax Propeller, LaunchPad MSP430, dsb). Singkatan SBC untuk single board computer sudah lazim digunakan, tapi single board microcontroller biasanya tidak disingkat, tapi supaya artikel ini ringkas, akan saya singkat saja sebagai SBM.
Perlu diperhatikan bahwa saya menekankan pada kata populer, Anda tidak harus menggunakan SBM atau SBC untuk belajar embedded system, tapi keduanya akan membuat proses belajar menjadi lebih mudah.
Banyak pemula merasa bingung memilih dan membedakan fungsi keduanya. Jika Anda melihat berbagai proyek elektronik di Internet, sepertinya fungsi dan kemampuan keduanya hampir sama. Untuk lebih jelasnya, saya akan membahas keduanya.
Continue reading →
This entry was posted in hardware, umum on March 3, 2014 by admin.
Safari Books Online + Review Buku
Leave a reply
Saya sekedar mau sharing layanan Safari Books Online (ini saya nggak dibayar, nggak dapet referal atau apapun). Layanan ini semacam perpustakaan di mana kita bisa meminjam buku selama menjadi member.
Paket termurahnya 9.99 USD/bulan, kita mendapatkan 5 slot buku yang bisa kita baca penuh. Setelah memasukkan sebuah buku ke dalam sebuah slot, bukunya hanya bisa dikeluarkan 30 hari kemudian. Kita bisa membaca bukunya offline menggunakan aplikasi yang mereka sediakan (untuk iOS/Android/BlackBerry). Mereka juga menyediakan trial 15 hari (tapi kita harus memberikan nomor kartu kredit).
Bagi sebagian orang, layanan ini tidak cocok, karena mereka ingin terus memiliki satu buku untuk dibaca ulang, tapi bagi saya yang jarang membaca ulang sebuah buku (kalau ada bagian penting, bisa saya copy paste), layanan ini sangat cocok.
Kenapa saya mau sharing hal tersebut? Harga sebuah buku asli sangat mahal, bahkan versi ebooknya sekalipun. Contohnya buku SDN: Software Defined Network harganya 47.99 (menurut kurs saat ini: lebih dari 500 ribu rupiah). Buku tersebut bisa dibaca sebagai satu slot dalam pakt 9.99 USD per bulan. Saya ingin hidup legal, tapi juga belum mampu membeli segala sesuatu yang saya inginkan.
Saya sedikit menyesal, kenapa tidak menemukan layanan ini dari dulu. Saya pernah mencicipi akses ke layanan ini ketika jadi member ACM, tapi jumlah buku yang ada sangat sedikit (beberapa ratus buku saja), dan waktu itu belum bisa offline. Beberapa buku yang sudah saya baca (sudah saya beli) ternyata ada di sini. Jadi sekalian di posting ini saya ceritakan beberapa buku yang menarik (yang saya miliki dan sudah saya baca) yang bisa ditemukan di Safari Books Online:
The Tangled Web oleh Michal Zalewski. Buku yang sangat bagus yang membahas semua aspek security Web, dari mulai protokol HTTP sampai semua aspek browser. Bacaan wajib untuk orang yang berkecimpung di dunia web. Buku ini bukan untuk orang yang benar-benar pemula, dibutuhkan pengetahuan dasar mengenai protokol HTTP, tentang HTML, dan juga tentang JavaScript.
Stealing the Network: The Complete Series Collector’s Edition Sebenarnya ini tadinya 3 buku novel yang dijadikan satu. Saya baru selesai membaca bagian pertama dan setengah bagian kedua. Buku ini bagus karena menjelaskan masalah security dalam bentuk cerita yang menarik. Di bagian pertama (buku pertama), ceritanya terpisah (seperti kumpulan cerpen), di buku selanjutnya, ceritanya memiliki hubungan.
CODE Buku ini membahas hal yang amat dasar sekali, bagaimana informasi diproses dari mulai manipulasi bit. Buku ini berbeda dari semua buku pengenalan komputer yang lain, caranya bercerita sangat menarik, penjelasannya sangat sederhana. Buku ini sangat cocok untuk pemula.
Sebenarnya saya tidak menemukan hal yang baru di sini (karena saya sudah mengerti semuanya), tapi saya membacanya sampai habis karena saya mengagumi caranya bercerita. Suatu hari saya ingin bisa menjelaskan ke anak saya seperti ini.
App Empire: Make Money, Have a Life, and Let Technology Work for You Buku ini menjelaskan mengenai bagaimana mendapatkan uang yang banyak dari aplikasi mobile. Banyak triknya yang tidak berlaku lagi (dan menurut saya mengesalkan bagi pengguna aplikasi), tapi buku ini memberikan pencerahan pada saya mengenai berbagai trend di dunia mobile. Buku ini banyak menjual mimpi, tapi mungkin bisa memotivasi Anda untuk mempertimbangkan dunia mobile.
Don’t Make Me Think!: A Common Sense Approach to Web Usability, Second Edition Selain mengenai teknik pemrograman, saya juga suka membaca buku mengenai usability. Buku ini cukup ringkas dan menjelaskan dengan baik berbagai aspek usabilitas dalam web, walaupun masih kurang membahas teknologi terbaru (buku ini tahun 2005). Sebagian besar hal yang dijelaskan sangat obvious, tapi Anda akan menyadari betapa banyaknya website yang tidak memperhatikan usabilitas.
Coders at Work: Reflections on the Craft of Programming. Buku ini isinya kumpulan cerita dan pandangan hidup banyak programmer. Di sini kita bisa melihat bahwa para programmer hebat memiliki pandangan hidup yang berbeda dalam memandang masalah pemrograman. Tidak ada kebenaran absolut dalam hal pemrograman, tidak ada gaya yang paling benar. Anda bisa melihat review yang lebih lengkap yang sudah pernah saya tuliskan sebelumnya di situs ini.
Meski koleksi bukunya sangat banyak, ada juga buku-buku yang tidak ada di sana. Kali lain akan saya tuliskan buku-buku menarik yang tidak saya temui di sana.


content:
Kini mobil bukan hanya berfungsi sebagai salah satu alat transportasi. Melainkan juga menjadi salah satu gaya hidup. Bahkan menurut survei yang ada, mobil biasa dijadikan sebagai salah satu simbol kesuksesan. Cara untuk bisa mendapatkan mobil sesuai dengan keinginan kita sekarang ini juga sudah semakin mudah. Salah satunya yaitu dengan adanya fasilitas kredit mobil. Namun masih banyak masyarakat lebih memilih membeli mobil baru dengan harga cash. Namun sudah tahukah anda bahwa di Jogja ini sudah semakin banyak dealer mobil yang bisa kita temui. Salah satu dealer tersebut adalah dealer mobil.
mobilio jogja
Ada banyak sekali dealer mobil yang ada di Jogja yang bisa anda pilih. Mengapa harus Honda?. Sebab Honda memang sudah terkenal dengan hasil produksinya yang sangat berkualitas bahwa memiliki banyak varian. Salah satu jenis mobil keluarga yang sangat digandrungi saat ini yaitu mobil Honda Mobilio Jogja. Karena ada banyak sekali keunggulan dari mobil Honda yang satu ini. Selain memiliki kapasitas penumpang lebih banyak. Anda juga perlu mengetahui bahwa kita sekarang sudah bisa mendapatkan jenis mobil sesuai dengan keinginan kita. Bahkan dengan harga yang lebih terjangkau. Karena sekarang ini juga sudah semakin banyak dealer yang memberikan promo Honda Mobilio Jogja. Sehingga kita bisa mendapatkan mobil Mobilio Jogja sesuai dengan keinginan kita bahkan dengan harga promo Honda Mobilio Jogja.
Kelebihan Membeli Mobilio Jogja Baru Daripada Mobilio Jogja Bekas
Bagi anda yang masih bingung ingin membeli mobil baru atau membeli mobil bekas. Tidak seharusnya anda merasa pusing memikirkan hal tersebut. Sebab membeli mobil baru ini merupakan salah satu keputusan yang tepat untuk diambil. Tentu untuk bisa memutuskan membeli mobil baru, anda pastinya perlu memastikan terlebih dahulu kepada diri anda sendiri bahwa anda benar-benar ingin membeli mobil baru. Karena perlu anda ketahui bahwa sekarang ini sudah semakin banyak dealer mobil Honda yang bisa anda pertimbangkan. Bahkan anda juga tidak perlu khawatir dengan harga mobil Mobilio yang ditawarkan
. Karena anda bisa mendapatkan mobil Mobilio tersebut dengan harga terjangkau dengan cara mendatangi berbagai dealer mobil Honda yang memberikan promo Honda Mobilio Jogja. Karena biasanya pada akhir tahun maupun awal tahun. Setiap dealer mobil Honda Mobilio Jogja ini akan mengadakan promo Honda Mobilio Jogja secara besar-besar. Namun dalam memilih dealer yang melakukan promo Honda Mobilio Jogja. Anda juga perlu memperhatikan apakah dealer yang anda pilih tersebut berpengalaman dan terpercaya ataukah tidak.
Karena tidak semua dealer Mobilio Jogja yang ada tersebut berpengalaman dan juga terpercaya. Namun sudah tahukah anda bahwa membeli mobil Honda baru akan lebih menguntungkan kita dibandingkan dengan membeli mobil bekas. Sudah tahukah anda apa saja keuntungan yang bisa anda dapatkan. Karena perlu anda ketahui bahwa semua orang pastinya juga ingin mendapatkan mobil sesuai dengan keinginan dan kebutuhan bukan. Maka dari itu akan lebih baik jika anda juga lebih selektif dalam memilih dealer mobil yang akan anda pilih. Berikut ini ada beberapa kelebihan membeli mobil baru, seperti:
Puas Akan Jaminan Kualitas Mobil
Siapapun orangnya, jika memiliki mobil baru dan itu sesuai dengan apa yang diinginkan. Pastinya rasanya akan lebih menyenangkan. Sebab segala sesuatu yang baru itu akan mempengaruhi psikologis seseorang untuk merasa lebih senang dan juga puas dengan apa yang dimilikinya. Hal tersebut juga dikarenakan kita mengetahui secara persis mengenai kualitas dari mobil tersebut. Karena memang belum pernah digunakan. Sehingga tidak akan ada kerusakan akibat suatu kejadian pada mobil yang akan dibeli tersebut. Maka akan lebih baik jika anda membeli mobil baru yang sudah tentu membuat kita akan lebih puas. Hal tersebut disebabkan karena jaminan kualitas sudah pasti.
Ada Fasilitas Service Gratis
Apabila anda membeli mobil baru, maka sudah dipastikan anda akan mendapatkan berbagai fasilitas servis gratis untuk beberapa kali layanan hingga sampai dengan batas waktu tertentu. Anda juga bisa menanyakan secara langsung secara detail mengenai fasilitas service gratis yang diberikan ini kepada pihak dealer mobil resmi Honda tersebut. Service mobil baru ini biasanya terdiri dari penggantian oli dan juga berbagai service mesin ringan. Pastinya anda akan merasa lebih untung bukan.
Ada garansi Pada Mobil Baru
Kelebihan lain dari membeli mobil Honda baru yaitu adanya garansi yang diberikan oleh produsen. Tentunya hal ini juga sangat menguntungkan bagi anda. Karena dengan membeli mobil baru anda bisa mendapatkan jaminan berupa garansi mesin, garansi bodi mesin, garansi suku cadang dan juga adanya service yang gratis.
Premi Asuransi Lebih Murah
Ada hal yang perlu anda ketahui dalam membeli mobil Honda baru ini. Bahwa premi untuk asuransi mobil baru pastinya akan lebih murah dibandingkan dengan mobil bekas atau mobil lama. Sebab kemungkinan terjadinya kerusakan pada mobil Honda baru ini sangatlah kecil terjadi. Untuk itu, pihak asuransi pastinya berani memberikan premi yang murah.
Demikian beberapa keuntungan yang bisa anda dapatkan jika anda membeli mobil dengan keadaan baru. Namun hal tersebut juga perlu anda pertimbangkan dengan kemampuan anda saat ini. Karena seperti yang sudah anda ketahui bahwa harga dari mobil pastinya juga tidak sedikit. Sehingga kita juga perlu mempersiapkan anggaran sesuai dengan jenis mobil yang akan anda beli nantinya. Dealer mobil Honda yang mampu menawarkan promo Honda Mobilio Jogja memang sudah semakin banyak. Namun sudah tahukah dealer mana yang benar-benar bisa anda percaya dan bisa anda pertimbangkan sekarang juga. Karena perlu anda ketahui bahwa tidak semua dealer yang ada saat ini berpengalaman dan juga terpercaya. Sehingga anda juga perlu lebih selektif dalam menghadapi berbagai penawaran dealer Honda mengenai promo Honda Mobilio Jogja ini. Namun kali ini kami juga akan memberikan anda rekomendasi mengenai dealer terbaik dan juga terpercaya. Pastinya mampu melayani konsumen dengan baik. Bahkan anda bisa mendapatkan berbagai penawaran menarik mengenai promo Honda Mobilio Jogja ini.
Ingin Mendapatkan Dealer Mobilio Jogja Dengan Promo Honda Mobilio Jogja Terbaik
Semua orang pastinya ingin memiliki mobil sesuai dengan keinginan dan kebutuhannya bukan. Nah, mulai dari sekarang anda tidak perlu bingung dan merasa kesulitan lagi dalam memilih dealer mobil Honda yang sudah semakin banyak tersebar di kota Jogja. Karena kami akan merekomendasikan satu dealer terbaik dan juga terpercaya yang bisa anda pertimbangkan sekarang juga. Mampu menyediakan berbagai jenis Mobilio Jogja sesuai dengan keinginan anda. Bahkan anda juga bisa mendapatkan penawaran menarik mengenai promo Honda Mobilio di dealer kami. Dealer yang kami rekomendasikan kali ini benar-benar pengalaman dan juga terpercaya.
Dealer yang kami maksud yaitu dealer Honda Anugerah Sejahtera. Berbagai mobil Honda bisa anda temui di dealer kami. Ada banyak sekali penawaran menarik yang bisa anda dapatkan jika anda membeli mobil Mobilio Jogja di dealer Honda Anugerah Sejahtera sekarang juga. Selain anda bisa mendapatkan harga promo Honda Mobilio terbaik. Anda juga bisa mendapatkan pelayanan yang sangat memuaskan. Sehingga anda tidak perlu khawatir jika anda ingin membeli mobil Mobilio Jogja di dealer kami. Karena ada banyak sekali penawaran menarik lainnya yang bisa anda dapatkan dengan mudah di dealer kami. Perlu anda ketahui juga bahwa hanya di dealer Honda Anugerah Sejahtera inilah semua keinginan anda bisa anda dapatkan.
Karena kami menyediakan berbagai jenis mobil Honda Mobilio di Jogja keinginan anda. Bahkan bukan hanya Mobilio saja yang mampu kami sediakan. Karena dealer Honda Anugerah Sejahtera ini merupakan salah satu dealer resmi Honda terbaik dan terpercaya di Jogja. Jadi tunggu apalagi segera saja hubungi customer service kami sekarang juga. Jika tidak anda juga bisa mengunjungi website kami di www.Dealermobilhondajogja.com sekarang juga.

warc-identified-content-language: ind,eng

warc-type: conversion

content-type: text/plain

label: id


content:
Cara Cari Uang Cepat dalam 1 Hari dengan Menjadi Penyanyi/Seniman. Mungkin anda pernah dengar orang mengatakan hal seperti ini 'Tenang, returnnya cuma beda sedikit, Cuma sekitar 1-2% saja kok, nggak usah khawatir'. Atau ada yang mengatakan cara mendapatkan uang dengan cepat tanpa bekerja seperti ini 'Biayanya tidak banyak hanya sekitar 1% saja'. Di zaman serba instan ini menuntut semual hal berjalan dengan cepat tanpa memperdulikan proses yang harus dilalui, tak terkecuali dengan cara menghasilkan uang. Untungnya bagi kita, sudah terbukti ada bisnis-bisnis yang bisa dijadikan cara cepat dapat uang yang harus Anda pertimbangkan. Bisnis-bisnis tersebut adalah sebagai berikut.
Hal ini dapat menjadi bahan pertimbangan Anda nantinya saat ingin melakukan pengajuan jangka waktu angsuran. Usahakan Anda mengajukan jangka waktu yang lebih cepat. Jika Anda memiliki tumpukan utang yang kelihatannya tidak akan habis, jangan menyerah!
Usaha yang menyenangkan (dapat diawali dari hobi) Anda. Karena rumah tinggal sendiri menjadi salah satu kebutuhan dasar manusia yakni untuk beristirahat, berlindung dari cuaca dan lain sebagainya. Hal ini bisa lebih terjamin jika kita punya rumah milik sendiri.
Hal ini tentu bisa menjadi peluang bisnis yang cukup bagus bagi ibu rumah tangga. Selain itu, jika Anda memang memiliki kemampuan dan waktu untuk merawat tanaman bisa juga mencoba bisnis tanaman herbal yang bisa digunakan untuk keperluan rumah tangga.
Selain mengetahui strategi atau cara investasi saham, investor juga harus memiliki tujuan keuangan agar investasi yang dijalankan memiliki tujuan investasi yang jelas. Anda dapat menentukan tujuan investasi Anda dari sekarang dan menghitungnya dengan menggunakan Aplikasi Finansialku. Selamat berinvestasi! Selanjutnya, mintalah dokumen perusahaan cara mendapatkan uang dengan cepat tanpa bekerja dan dibaca baik-baik baik penawaran maupun informasi investasinya. Biasanya, dokumen ini berisi aspek bisnis seperti model investasi, profil perusahaan, kondisi finansial perusahaan, hingga orang-orang yang mendirikan dan menjalankan perusahaan tersebut.
Di era teknologi seperti saat ini, kebiasaan membaca buku tidak hanya dalam bentuk buku fisik saja. Melainkan sudah banyak orang membaca buku lewat e-book..
Profesi sebagai penerjemah online bekerja sebagai seorang freelancer yang tidak memiliki penghasilan tetap selayaknya seorang karyawan perusahaan. Meski demikian penghasilan seorang penerjemah online tidak bisa dibilang kecil, lho. Seperti diketahui pekerja freelancer termasuk penerjemah online biasanya berkerja jika ada proyek saja. Biasanya penerjemah online dibayar sesuai sistem kesepakatan yang telah ditentukan. Ada yang dibayar per halaman, ada yang dibayar per jam dan ada pula yang dibayar per bulan. Biasanya untuk yang dibayar per bulan sudah terlebih dahulu menandatangani kontrak kerja untuk beberapa lama. Yang perlu anda kuasai di perdagangan mata uang asing ini adalah kapan tepatnya anda mengambil posisi untuk mendapatkan keuntungan secara terus menerus.
Dikutip dari cara mendapatkan uang dengan cepat tanpa bekerja Entrepreneur, Jumat (17/1/2020), meski banyak peluang mencari uang secara online, namun Anda tetap membutuhkan kedisiplinan.
Cukup dengan mengunduh dari aplikasi produk Julo keuangan ke ponsel Anda, Isi data pribadi kurang dari 5 menit, serta menunggu proses verifikasi yang cepat, Anda bisa langsung mendapatkan dana tunai dengan cepat dalam dalam waktu kurang dari 28 jam setelah verifikasi pinjaman dilakukan.
Kurma yang dari kulkas biasanya memiliki tekstur yang lebih keras dan kaku. Cara lain yang diterapkan oleh Tasya ketika menjalani hubungan LDR yaitu berusaha mencari kesibukan. Dengan banyaknya aktivitas positif yang dijalani sehari-hari dapat meminimalisir rasa rindu akan kehadiran pasangan.
Dapat Uang Hari Ini
Posting sebelumnya & berikutnya
5 alasan anda tidak pernah jadi jutawan
Aplikasi penghasil uang for pc
Tinggalkan Balasan Batalkan balasan
Alamat email Anda tidak akan dipublikasikan. Bidang yang harus diisi ditandai *
Komentar
Nama *
Surel *
Situs web
Simpan nama, email, dan situs web saya di browser ini untuk lain kali Anda berkomentar.
Anda Mungkin Menyukainya
Cara mendapat uang banyak
04 September
10 cara mendapatkan uang cepat via internet
08 November
Gimana cara dapat duit banyak
27 Disember
Kiriman Terbaru
Memulai usaha kecil
Dapat uang 5 juta
Cara beli bitcoin mudah untuk pemula
Bisnis online terpercaya dan gratis
Cara dapat uang dari internet dalam sehari
Meminjam uang bank
Cara dapatkan uang 5 juta dalam sehari
Karakteristik pengusaha sukses
Apa saja jenis-jenis investasi saham
Cara unik dapatkan uang saat butuh uang cepat
Categories
Ide Bisnis TerbaruCari Uang CepatInvestasi OnlineBisnis Mlm OnlineBisnis Tanpa ModalJika Ingin KayaAnda Bisa KayaIde Bisnis KreatifDapat Uang OnlineInvestasi BitcoinBisnis CepatCari Uang Di InternetKiat SuksesUsaha OnlineDapat Uang Hari IniDapat Uang Cepat OnlineDapat Uang FreeMuda Dan SuksesSolusi Finansial Peta Situs

label: en


content:
KOMPAS.com - Ada tiga risiko dan keuntungan investasi reksa dana online hal utama yang harus diperhatikan dalam berinvestasi agar target uang yang dikumpulkan bisa tercapai. Awalnya, kamu berpikir bahwa akhirnya, kamu bisa bersantai dan melakukan apapun yang kamu mau tapi kamu salah besar! Karena saat kamu memiliki sebuah bisnis, kamu akan meluangkan banyak waktu dan pikiran agar bisnismu bisa berkembang dengan stabil. Siap-siap untuk sibuk yah!
Kalau para pekerja tetap saja bisa melakukan cara-cara berikut ini, tentu kamu yang masih berkuliah, belum bekerja, maupun ibu rumah tangga, tentu dapat juga menghasilkan uang cepat melalui internet ini, lho! Caranya cukup mudah kok untuk mendapatkan uang cepat dari internet. Siapkan diri, waktu, kuota dan juga perangkat yang ingin kamu gunakan ya, entah smartphone maupun laptop. Sekarang, kita masuk ke bagaimana cara yang dapat kamu lakukan untuk mendapatkan uang cepat bermodalkan kuota dan perangkat seperti smartphone atau laptop, yuk! Hadir ke sesi mesyuarat tanpa perlu meninggalkan tapak kediaman dengan Zoom. Bob Sadino berkali-kali mengkritik sistem pendidikan mainstream yang hanya mengajarkan teori-teori yang tidak aplikatif. Hal itu juga menurutnya yang menjadi penyebab kenapa di dunia banyak pengangguran, sebab orang-orang hanya diberi teori-teori, bukan diasah kreatifitasnya untuk bertahan hidup dalam kesulitan. Bob Sadino berkata bahwa dunia nyata tidak sama dengan teori di sekolah. Maka dari itu, jika mau sukses di dunia nyata, belajarlah di dunia nyata. Ibarat mau berenang, ya belajar di kolam renang, bukan belajar teori di dalam kelas.
Ada berbagai macam pelajaran yang siswa butuhkan seperti bahasa Inggris, matematika, ilmu alam dan beberapa lainnya. Menurut Allegri, faktor yang menjadi kunci sukses Juve selama ini risiko dan keuntungan investasi reksa dana online adalah rasa rendah hati yang ditanamkan pada semua pemainnya.
Menurut teori medan (Field Theori) yang berasal dari Kurt Leewin menyatakan bahwa dalam situasi belajar siswa berada dalam suatu medan atau tantangan psikologis, dalam situasi tersebut siswa belajar menghadapi suatu tujuan yang ingin dicapai namun selalu menghadapi hambatan. Salah satu hambatan tersebut adalah mempelajari bahan materi belajar dan siswa merasa tertantang untuk menghadapi tantangan tersebut dengan mempelajari bahan materi belajar.
Oleh karena itu membaca prospektus adalah hal yang wajib dan mutlak bagi Anda. Adapun daftar rincian dari biaya yang akan dibutuhkan untuk pengobatan tersebut ialah sebagai berikut. Saya juga punya lah teman-teman yang notabene orang kaya. Dan saya akui risiko dan keuntungan investasi reksa dana online ada beberapa hal yang mereka tidak bisa melakukannya, beda sama kita-kita ini.
Penggunaan istilah ini sebenarnya merujuk pada perusahaan rintisan dan juga masih belum lama beroperasi, atau bisa juga diartikan sebagai bisnis yang baru berkembang. Berikut ini ada 4 tips yang bisa diterapkan untuk membangun pertahanan bisnis jualan online anda dalam menghadapi datangnya pesaing yang semakin luas dan berat. Setelah transaksi pertama berhasil, transaksi berikutnya Anda bisa melakukan settlement atau pembayaran kewajiban dalam waktu 2 hari sejak transaksi.
Ditambah konsultasi risiko dan keuntungan investasi reksa dana online gratis langsung dengan para pakar digital marketing didalamnya.
Kubahagia… Kau telah terlahir di dunia. Dan kau ada… di antara milyaran manusia, dan kubisa dengan radarku menemukanmu. Maudy Ayunda, Perahu Kertas.
Tren forex harian, bulanan anda bisa ikuti untuk melihat trend yang sedang trjadi, jika trend pasar forex naik mungkin open posisi buy mungkin lebih baik dari pada melawan trend. Namun jika bisnis kecil maka bisa menjadi masalah besar. Menggunakan sistem online memungkinkan Anda tidak perlu mempekerjakan karyawan. Anda bisa menanganinya sendiri dengan mudah. Anda bisa melayani, mengirim barang dan menerima pemesanan secara online.
Ada dua cara yang dapat dijadikan patokan dalam menentukan titik cut loss sebuah saham, yaitu berdasarkan harga beli dan berdasarkan titik support. Titik support sendiri merupakan tingkat atau area harga yang diyakini sebagai titik terendah. Apabila berdasarkan harga beli kamu sudah menetapkan batas cut loss sejak awal sebesar 5% atau 7% seperti yang dicontohkan tadi, cara ini dianggap kurang fleksibel karena tidak mempertimbangkan prospek pergerakan harga saham ke depannya.
Aplikasi penghasil uang instan
Meminimalisir resiko kehilangan uang
Artikel & Edukasi – Ada banyak jenis-jenis instrumen investasi yang ada di pasar. Untuk memilih investasi yang paling cocok bagi Anda, Anda harus mengenal karakter masing-masing instrumen itu.
Gimana, sudah siap menghasilkan banyak uang dari Facebook? Selamat mencoba cara dapat uang dari Facebook tadi ya! Diantaranya yang menurut Saya nggak boleh adalah ikut pesugihan. Secara umum ada 2 macam pesugihan yakni pesugihan putih dan pesugihan hitam. Pesugihan putih adalah ritual pesugihan yang sesuai dengan syariat Islam sedangkan pesugihan hitam adalah pesugihan yang sumbernya bukan dari agama Islam atau yang masih dianggap ragu-ragu kebenarannya menurut agama. Tidak sembarang orang bisa membuka tabungan ini. Setidaknya harus ada bukti berupa risiko dan keuntungan investasi reksa dana online surat dari penyalur TKI atau lembaga Pemerintah yang menyatakan bahwa pemegang rekening adalah memang tenaga kerja Indonesia yang akan bekerja di luar negeri. Setoran awalnya terbilang kecil, yaitu sebesar Rp10.000. Jenis tabungan ini adalah wujud nyata kepedulian BRI pada tenaga kerja Indonesia agar mempunyai sarana untuk menabung atau menyimpan hasil jerih payahnya selama bekerja di negara lain.
Kedua, kamu harus menyukai matematika terutama aljabar linear tetapi tidak harus menguasai karena ada beberapa area programming yang tidak menggunakan matematika. Jangan khawatir, karena manurut cerita programmer sukses matematika di dunia programming tidak sesulit yang kamu bayangkan. Kemudian pikirkan risiko dan keuntungan investasi reksa dana online cara mencairkan emas tersebut. Apakah akan dijual secara berkala? Misalnya emas yang berhasil Anda kumpulkan berat totalnya 1 kg dalam bentuk batangan 5 dan 10 gram. Apakah dalam satu bulan Anda menjual emas batangan 5 gram? Atau Anda akan menjual semuanya. Tentu Anda harus berhati-hati, jangan sampai Anda tergiur untuk menghabiskan semua simpanan emas Anda. “Secara umum, keempat tim pengembang ventilator adalah Tim Jogja, Tim ITS, Tim UI, dan Tim ITB yang sedang dalam proses uji fungsi dan uji klinis, serta penjajakan kerja sama industri untuk melakukan produksi skala besar,” terangnya.
Ide Bisnis Terbaru
Posting sebelumnya & berikutnya
Panduan sukses untuk pemula
Beberapa pengusahan sukses yang dulunya miskin
Tinggalkan Balasan Batalkan balasan
Alamat email Anda tidak akan dipublikasikan. Bidang yang harus diisi ditandai *
Komentar
Nama *
Surel *
Situs web
Simpan nama, email, dan situs web saya di browser ini untuk lain kali Anda berkomentar.
Anda Mungkin Menyukainya
Cara dapatkan uang dari adsense
03 Mei
Cara mendapatkan uang dengan paypal
09 Jun
Kisah sukses mahasiswa jadi pengusaha yang inspiratif
03 Mac
Kiriman Terbaru
5 cara mendapatkan uang dari youtube yang bisa anda coba
Berbagai ide peluang usaha makanan
Investasi online
Tokoh kesuksesan stripe
Cara melunasi hutang keluarga
Cara mendapatkan uang secara cepat
Bagaimana cara mendapatkan uang banyak dengan cepat
Hasilkan uang dengan berburu aplikasi cash back
Cara mencari uang lewat internet tanpa modal
Jenis bisnis rumahan
Categories
Ide Bisnis TerbaruCari Uang CepatInvestasi OnlineBisnis Mlm OnlineBisnis Tanpa ModalJika Ingin KayaAnda Bisa KayaIde Bisnis KreatifDapat Uang OnlineInvestasi BitcoinBisnis CepatCari Uang Di InternetKiat SuksesUsaha OnlineDapat Uang Hari IniDapat Uang Cepat OnlineDapat Uang FreeMuda Dan SuksesSolusi Finansial Peta Situs

warc-identified-content-language: ind


content: Artikel KesehatanSemua hal yang berhubungan dengan informasi kesehatan mulai dari informasi terbaru dunia kesehatan, tips kesehatan, hingga saran-saran untuk menuju hidup lebih sehat.


content:
Kehamilan merupakan hasil dari suatu proses komplek yang terdiri dari. Akibatnya: Gigi mengalami karis akar yaitu lubang kecil dan karang gigi yang menyerang akar gigi, leher gigi lalu menyebar keseluruh bagian cara mengatasi ejakulasi dini kaskus gigi. Gigi jadi merasa nyeri dan membuat jaringan otot kepala tegang. Berikut ini adalah kandungan dari QnC Jelly Gamat Untuk tuba falopi tersumbat.
Banyak cara memperbesar dan panjang penis tetapi alangkah bahaya jika memakai suntik silikon. Alternatif tepat adalah anda mengkonsumsi Obat Penirum Asli. Hal ini karena cacing mengandung unsusr asam arakidonat, yaitu yang bisa mempercepat pertumbuhan sel-sel baru. Jamur akan tumbuh berkembang dengan baik di suhu yang lembab dan hangat. Di mana lagi kalau bukan di lipatan-lipatan kulit, di balik celana dalam, dan di kulit yang kotor? Ketika buah zakar gatal, hal itu bisa menjadi salah satu penyebab bahwa testis Anda terserang jamur. Jamur yang biasa hinggap di testis berjenis Trichophyton rubrum, biasanya menyerang selangkangan, testis, paha bagian dalam, dan anus. cara mudah mengobati gatal di kemaluan secara tradisional ampuh.
Info & Order - Telp/SMS» 082225553636 Whatsapp» 0822 2152 7779 - Buka 24 Jam - cara mengatasi ejakulasi dini kaskus Kirim ke Seluruh Indonesia & Luar Negeri. Phuceng dapat dikonsumsi dengan 2 cara. Pertama: bisa diminum secara langsung, atau Kedua: bisa dicampur dengan segelas air putih hangat.
Agar hasil dari senam ini menjadi lebih optimal, lakukanlah senam ini ketika Anda juga melakukan rutinitas harian. Contohnya, saat Anda menggosok gigi, Anda juga bisa melakukannya sambil melakukan senam kegel.
Setelah konsumsi pertama pria akan meraskan kondisi fisik yang berbeda, lebih berenergi dan dorongan seksual nya lebih kuat, erkesi spontran dapat tercapai secara cepat dengan cara meningkatkan aliran darah di area penis. Seorang pria, sebut saja Sam, cara mengatasi ejakulasi dini kaskus sebelumnya tidak pernah memiliki masalah dengan ukuran penisnya. Namun setelah dia mengakhiri hubungan yang dibina selama 16 tahun, dia ingin melakukan sesuatu untuk meningkatkan harga dirinya, yakni membesarkan penis. Untuk anda yang ingin menggunakan racikan bawang putih, siapkan terlebih dahulu bahan-bahan dibawah ini.
20. Melancarkan Buang Air Besar, Melancarkan Persalinan, Serta Mengendurkan Persendian Dan Otot-Otot Yang Kaku Daun kemangi direbus lalu diminum. “Uwwhh, ywdah keluarin aja ryo…” dia pun ngarahin Kontol gue ke wc biar peju gue nnti langsung ke buang ke lubang wc tanpa berceceran di lantai. Lihat juga produk kami lainnya untuk menghemat ongkos kirim.Terima Kasih:).
Merasa bingung mengapa istri Anda tampaknya sulit sekali mencapai orgasme? Apakah ada yang salah dengan cara Anda atau justru ada gangguan pada organ kewanitaan istri Anda? Sebelum Anda mulai cara mengatasi ejakulasi dini kaskus berpikir negatif, ada baiknya bila Anda mempelajari 10 pengetahuan dasar tentang orgasme wanita di bawah ini terlebih dahulu.
Jangan tergiur dan langsung beli dengan harga Ramuan Herbal Obat Impoten yang ditampilkan sangat murah. Telitilah mulai dari foto Ramuan Herbal Obat Impoten, deskripsi, penjual yang akan dijabarkan dibawah ini.
4 BOTOL Obat Forex Herbal Asli Harga Rp. 2.000.000,- Bonus 2 Botol.
Cara mengatasi ejakulasi dini kaskus
Membesarkan mr p dengan odol
Latihan kegel. Latihan kegel bagus untuk menjaga aliran darah di daerah prostat dan organ urogenital.
Mereka telah membuktikan sendiri khasiat nyata yang dimiliki oleh QnC Jelly Gamat ini.
Wabak pertama ini kelihatan ketara dan serius berbanding wabak seterusnya. Hilangkan hal itu dari kamus Anda. Tidak semua orang bisa menjadi contoh teladan yang dikagumi semua orang, namun semua orang dapat memiliki pikiran yang besar. Pikiran yang besar dapat meredam rasa sakit dan kesedihan seseorang; dapat mengompensasi kekurangan Anda; memungkinkan Anda untuk melanjutkan perjalanan hidup tanpa rasa takut dan membantu menyadari bahwa pikiran Anda sendiri dapat melampaui gedung pencakar langit dan gunung tertinggi!
Langkah paling tepat dan cepat untuk mengobati ejakulasi dini dengan menggunakan metode pengobatan. seperti yang kami sampaikan di atas beberapa bahan alami bisa memberikan kemampuan menjadikan anda lebih tahan lama. Beberapa Obat Alami Yang Berbahan herbal anda bisa memilih beberapa yang kami tawarkan, Seperti. Anda dapat juga membeli Helbeh Kadal Mesir terbaik dan teliti dalam memilih Helbeh Kadal Mesir asli / palsu. Namun guna mendapatkan barang berkualitas tanpa takut tertipu, Anda bisa menerapkan beberapa tips berbelanja online Helbeh Kadal Mesir paling bagus yang aman dan tepat. L-arginine adalah asam amino yang meningkatkan kadar cara mengatasi ejakulasi dini kaskus pijat ejakulasi dini Jakarta oksida nitrat dalam tubuh. Oksida nitrat merupakanmolekul dalam tubuh yang dapat membantu meningkatkan aliran darah dan juga membantu mempertahankan ereksi. Penyebab susah hamil ke empat ini adalah penyebab susah hamil yang paling sering pada pasangan-pasangan mudah. Jika orang tua dulu banyak mengatakan pamali kalau baru menikah sudah melakukan KB untuk menunda memiliki keturunan karena takut rahimnya kering mungkin ada benarnya juga. Karena memang prosuksi sel telur pada wanita akan berkurang sejalan dengan bertambahnya usia.
Gunakan mulut untuk mengulum, hisap puting nya dan tangan untuk meraba klitorisnya dengan lembut supaya memberikan efek ganda kenikmatan seksual yang dia rasakan. alat pembesar penis alami. Zat fosfor dalam bawang putih efektif untuk melawan bakteri dan kuman dalam telinga. Tanyakan kepada herbalis di kota anda, untuk menggunakan bahan alami ini sebagai pembersih telinga anda. Biasanya, cukup disumbatkan pada lubang telinga. Hati – hati jangan sampai masuk ke dalam telinga.


content:
PT Harapan Mitra Sejati (PT HMS) didirikan pada tahun 2013 dengan tujuan menjadi pemain penting dalam bidang penyediaan material konstruksi untuk pasar domestik Indonesia.
Memadukan pelayanan terbaik dengan produk berkualitas tinggi, pada saat ini PT HMS telah mendukung berbagai proyek konstruksi di Jakarta dan sekitarnya.


content:
Blastula adalah bidang sel berongga yang terbentuk setelah tahap morula. Seperti morula, ini juga merupakan bagian dari tahap awal perkembangan embrionik. Ini terdiri dari sel atau blastomer yang membentuk lapisan luar dari rongga berisi cairan. Sel-sel lapisan luar ini disebut blastoderm dan rongga yang diisi cairan disebut blastocoel. Blastula berasal dari kata Yunani “blastos” yang berarti kecambah. Tahap morula berkembang menjadi blastula melalui proses yang disebut blastulasi.
Blastula pada mamalia disebut blastokista. Blastokista terdiri dari embrioblas dan trofoblas. Embrioblas memunculkan berbagai struktur janin sedangkan trofoblas memunculkan jaringan embrionik ekstra. Blastula adalah tahap penting dalam embriogenesis yang menimbulkan gastrula dengan proses yang disebut gastrulasi.


content: WordPress adalah CMS paling populer sekaligus paling banyak digunakan. Tampilannya yang mudah dan tidak rumit membuat banyak orang memilih menggunakan WordPress. WordPress menyediakan layanan untuk blog gratis dan berbayar. Selain itu Anda juga bisa membuat […]


content: Megamendung – Senin, (23/09/2019) peserta didik Dikbangspes Polri dan Diklat PPNS melaksanakan Apel bersama, bertindak sebagai Irup Kadiklat Reserse Brigjen Pol Drs. Alex Sampe, S.H., M.H. Dalam arahan apel tersebut Kadiklat menyampaikan beberapa Hal diantaranya revisi UU KPK, tujuannya supaya prosedur penegakan hukum sesuai aturan yang ada dan sesuai dengan tujuan hukum yakni keadilan, kepastian dan kemanfaatan hukum. Selanjutnya dalam revisi UU KPK nanti akan ada badan pengawas. Badan pengawas ini adalah orang-orang yang dipilih sehingga penegakan hukum itu bukan balas dendam tapi hukuman untuk efek jera patuh terhadap peraturan.


content:
Pulau Lombok, rasanya sudah tak asing lagi saat pertama kali mendengar nama pulau yang satu ini. Keindahan alamnya yang mempesona mulai dari pantai yang dibalut dengan hamparan pasir putih serta air laut yang jernih. Pulau ini sangat cocok untuk kamu yang ingin berlibur bersama anak – anak dan keluarga. Nah, dibawah ini ada beberapa lokasi […]
October 13th, 2018 at 10:00am by septiani
Beberapa Tempat di Jogja Ini Bisa Dijadikan Sebagai Tempat Wisata Malam Loh!
Hampir setiap akhir pekan atau liburan, Kota Gudeg ini selalu dipadati oleh wisatawan mulai dari anak – anak, remaja hingga orang dewasa. Namun, sebenarnya ada satu daya tarik yang membuat para wisatawan sangat suka berkunjung ke Kota Pelajar ini karena destinasi wisatanya yang cukup lengkap. Bisa dibilang Jogja memiliki destinasi wisata yang cukup lengkap dan […]
October 11th, 2018 at 10:00am by septiani
Yuk Rencanakan Liburan Akhir Pekan Kamu dengan Berkunjung ke Kawasan Puncak
Destinasi wisata di Kota Bogor yang tak pernah sepi pengunjung adalah Kawasan Puncak Bogor. Lokasinya yang dekat dengan Jakarta, Tangerang, Depok, dan sekitarnya membuat kawasan ini selalu ramai dikunjungi wisatawan saat akhir pekan atau hari libur tiba. Berbagai destinasi wisata alam bisa kamu temukan disini, lumayan untuk menghilangkan penat dan stress setelah sepekan beraktivitas di kantor. […]
October 10th, 2018 at 10:00am by septiani
Ingin Berfoto dengan Latar Belakang Hamparan Bunga yang Instagenic? Kesini Aja Yuk!
Kota Jogja selain terkenal dengan adat budaya yang amat kental, juga dikenal sebagai kota dengan beragam tempat wisata cantik nan indah di Indonesia. Berbagai destinasi wisata nya seperti wisata alam, wisata kuliner, wisata hiburan, wisata belanja, dan lain sebagainya yang bisa dikunjungi.
October 9th, 2018 at 10:00am by septiani
Spot Selfie Kekinian di Bukit Cendana Yogyakarta
Jogja yang terkenal dengan wisata sejarahnya ternyata banyak banyak sekali tempat wisata yang bisa membuatmu betah berada disana mulai dari wisata alam, wisata pantai, waterpark, wisata kuliner hingga berbagai tempat untuk nongkrong pun ada. Apalagi saat ini Jogja memiliki beberapa tempat wisata baru yang wajib banget untuk di eksplore keindahan alamnya. Dari semua tempat wisata […]
October 7th, 2018 at 10:00am by septiani
Meskipun Belum Banyak yang Mengetahui Lokasinya, Namun Pantai Ini Menyuguhkan Panorama Keindahan yang Mempesona
Kupang merupakan Ibukota dari Provinsi Nusa Tenggara Timur (NTT). Beragam lokasi eksotis dapat ditemukan saat berada di Kupang walau memang sejumlah tempat belum mendapat pengelolaan yang baik dan belum begitu banyak terjamah. Bisa dikatakan, Kupang adalah surganya para pecinta wisata pantai karena dari puluhan kilometer garis pantai yang membentang di wilayah Ibukota NTT ini Kupang menyuguhkan berbagai […]
October 6th, 2018 at 10:00am by septiani
Manfaat yang Dapat Diperoleh dari Situs Wisata Online
Kemajuan pelayanan berbasis internet memudahkan traveler untuk menemukan lokasi yang pas sesuai keinginan. Ada banyak sekali situs online yang menyajikan informasi mengenai persiapan liburan, termasuk lokasi wisata yang memang terbaik dari yang terbaik. Informasi yang terus diupdate oleh mereka yang juga gemar traveling membuat suguhan informasi di situs wisata tersebut memang sesuai.
October 4th, 2018 at 10:00am by septiani
Meskipun Lokasinya Berada di Luar Negeri, 4 Taman Cantik Ini Bisa Kamu Kunjungi Saat Liburan Loh!
Berlibur dengan berkunjung ke sebuah kebun yang di dalam nya berisi tanaman hias yang cantik – cantik dan dapat menyejukkan mata bisa menjadi salah satu alternatif liburan kamu bersama keluarga atau pasangan. Nah, berikut ada empat kebun cantik di dunia yang bisa kamu kunjungi untuk liburan kali ini atau liburan akhir tahun. Bahkan saking cantik nya, kebun […]
October 3rd, 2018 at 10:00am by septiani
Lokasi Wisata Seru di Bandung yang Bertemakan Alam
Wisata alam Indonesia tak hanya berada di Pulau Jawa dan Bali saja namun juga tersebar dari Sabang hingga Merauke. Jika selama ini kamu beranggapan bahwa Bali adalah pulau terindah di Indonesia karena keindahan pantainya, bisa jadi kamu salah. Karena ternyata di daerah – daerah lain masih banyak lokasi wisata yang patut untuk kamu jelajahi seperti […]
October 2nd, 2018 at 10:00am by septiani
Tempat Nongkrong Asyik di Malang dengan Pemandangan Indah Nan Romantis
Berbagai macam obyek wisata kuliner bisa kamu temukan di Malang Raya mulai dari cafe – cafe yang memiliki desain unik hingga cafe yang memiliki konsep indoor maupun outdoor. Tak hanya rumah saja yang bisa menciptakan nuansa alam pada bangunan namun cafe – cafe di Malang pun dibikin sedemikian rupa.

annotation: short_sentences header footer


content: Pengumuman Penerimaan Mahasiswa Baru Program Studi Ilmu Komunikasi Fakultas Administrasi Bisnis dan Ilmu Komunikasi - Unika Atma Jaya


content: Download lagu قسطاس secara gratis di stafaband. Detail قسطاس MP3 dapat kamu nikmati dengan cara klik link download dibawah dengan mudah tanpa adanya iklan yang mengganggu.

warc-identified-content-language: ara,ind,eng