Kembali ke Zenwalk
Buat yang belum tahu, Zenwalk adalah distro linux yang diturunkan dari Slackware. Pada awalnya malah masih memakai nama Minislack. Aku sendiri pertama kali pake Zenwalk sekitar 2,5 tahun yang lalu, kalau gak salah versi 2 (atau 3).
Tapi semenjak ganti kompie dengan Aspire 4520 dengan amat sangat terpaksa harus ganti distro. Begitu aku beli ini notebook ternyata gak ada satu pun distro berbasis Slackware yang jalan (selalu hang saat booting), dan ternyata kebanyakan distro linux memang bermasalah dengan notebook ini (masalah dengan ACPI). Setelah coba2 bermacam-macam distro (Slackware, Zenwalk 4.6, Ubuntu, OpenSuse, Dreamlinux) akhirnya diputuskan menggunakan OpenSuse 10.3 karena distro ini yang paling sedikit bermasalah. Cuman ini distro agak susah oprekannya. Kalau lagi butuh software dan kebetulan ada di repositori memang enak, tinggal buka Yast dan langsung install. Kalau ternyata gak ada paket yang buat OpenSuse (atau yang paling parah malah gak ada binary-nya sama sekali) itu yang bikin ribet. Untuk bisa compile source dari instalasi OpenSuse standar, cukup merepotkan. Banyak paket2 yang harus diinstall (compiler, header library, tools development, dll). Sementar kabanyakan software yang aku butuhkan tidak tersedia di repositori OpenSuse. Dan akhirnya OpenSuse sangat jarang dipakai, lebih banyak pake Windows.
Dan akhirnya 3 hari yang lalu tiba2 muncul pikiran iseng buat nyoba Zenwalk 5.0. Zenwalk 5.0 sendiri sudah keluar beberapa minggu yang lalu.
Perjuangan dimulai dengan mencoba memanggil instaler Zenwalk dari Grub. Gara2nya waktu pingin install Zenwalk, gak punya cd kosong
dan udah jam 11 malem lagi. Setelah beberapa kali mencoba memasukkan parameter isolinux yang ada di file iso Zenwalk dan menyesuaikan dengan parameter Grub, akhirnya berhasil juga masuk ke instaler Zenwalk. Aku sendiri kurang tahu perubahan apa yang ada di kernel Zenwalk 5.0 dari versi sebelumnya yang menyebabkan kernel bisa booting dengan lancar. Mungkin gara2 kernel Zenwalk 5.0 yang menggunakan irq-balance.
Setelah proses instalasi selesai, perjuangan dilanjutkan. Secara umum ini notebook punya 3 masalah dengan linux. Pertama VGA. Penyelesaiannya gampang, tinggal download driver dari nVidia. Untungnya Zenwalk sudah menyertakan file2 heder hernel yang dibutuhkan untuk meng-compile driver dari nVidia.
Masalah kedua sound card. Biasanya soundcard terdeteksi tapi gak ada suara. Tinggal tambah parameter
options snd-hda-intel model=acer
di /etc/modprobe.d/sound sebenarnya, tapi kok tetap gak jalan. Setelah beberapa kali restart, baru ketahuan kalau alsa driver bawaan Zenwalk 5.0 masih versi 1.0.14. Setelah ganti dengan alsa driver 1.0.15 (terbaru 1.0.16) akhirnya soundcard bisa bersuara kembali.
Masalah ketiga adalah wifi. Biasanya cukup pake ndiswrapper dan install acer-acpi dah jalan. Yang jadi masalah acer-acpi butuh dukungan module LED yang ternyata didak diaktifkan di kernel Zenwalk 5.0 dan terpaksalah compile ulang kernel
. Itupun kadang2 masih bermasalah. Entar aku coba update acer-acpi terbaru dan kalau masih tetep bermasalah ya terpaksa oprek script booting.
Dan sekarang notebook-ku bersatu kembali dengan Zenwalk…
[Screenshoot menyusul]
(Tolong) != (Tolong!)
Entah aku yang udah lama gak dapet pelajaran bahasa (sehingga gak tau kalo ada perubahan) atau ada yang salah dengan orang2. Dulu di sekolahan, waktu pelajaran bahasa Indonesia, kalau gak salah diajarkan bahwa untuk memberikan penekanan maksud sebuah kalimat bisa digunakan tanda baca. Contohnya tanda “?” digunakan untuk menyatakan kalimat tanya, dan tanda “!” untuk menyatakan kalimat seru atau perintah.
Terus apa hubungannya dengan judul postingan ini? Begini ceritanya. Beberapa kali di sejumlah forum diskusi dan termasuk blog ini, aku menemukan kejanggalan dalam penggunaan tanda “!”. Contoh pada kalimat di salah satu komentar di blog ini :
“Tolong bagi-bagi ilmu tentang pemrograman pada mikrokontrol donk!!!!!”
Kata “tolong” seharusnya menyatakan permintaan. Tapi tanda “!” (lima kali lagi) dalam kalimat tersebut menyatakan perintah. Terus yang bener, maksud penulis sebenarnya apa? Minta tolong atau memerintahkan aku untuk menolong dia? Kalaupun tanda “!” menyatakan kalimat seru, juga gak tepat kalau dipertemukan dengan kata “tolong”, kecuali seperti pada contoh kalimat
Tolong, ada maling!
3 September 2006
Udah gak punya cewek, duit tinggal Rp. 11.500, gak ada kerjaan (yang profitable) lagi
.
Semoga bulan depan lebih baik dari bulan ini dan tahun depan jauh lebih baik dari tahun ini. AMIN.
Belajar Mikrokontroler
Ini pesenannya Cicit. Tapi belum selesai. Entar tak update lagi.
Persiapan
Yang harus disiapkan sebelum mulai belajar antara lain :
- Buka atau referensi atau tutorial yang menurut Anda mudah untuk dipelajari.
Jika mememungkinkan cari lebih dari satu (sebagai pembanding), tetapi tidak lebih dari 3 (capek bacanya). Dan jika memungkinkan cari satu buku yang lebih banyak bersifat teknis dan satu buka yang lebih cenderung ke aplikasi praktis. - Datasheet.
- Application note (optional).
Datasheet kadang2 tidak memberikan cukup informasi untuk aplikasi praktis dari fasilitas-dasiltas yang ada di mikrokontroler. - Emulator.
Emulator berguna untuk mempelajari instruksi mikrokontroler tanpa harus menuliskan program ke mikrokontroler. Emulator juga memungkinkan memonitor nilai-nilai dalam register, memory, dan IO dalam mikrokontroler. - Development board.
Development board diperlukan untuk mencoba aplikasi pada hardware yang sesungguhnya. Umumnya development board berisi mikrokontroler, writer (atau eprom emulator jika mikrokontroler tidak memiliki memory program internal), catu daya (optional), dan I/O sederhana (led, seven segment, saklar). Jangan menggunakan writer tersendiri yang terpisah dari rangkaian utama (yang berisi I/O) karena menyulitkan proses penulisan (chip mikrokontroler harus dilepas dari board rangkaian utama setiap kali penulisan), mengingat saat proses belajar akan sering sekali terjadi kesalahan penulisan program. Jika mikrokontroler memiliki ISP (In System Programming) gunakan fasilitas ini. Jika Anda memiliki dana berlebih (ratusan dolar), Anda bisa membeli ICE (In Circuit Emulator) yang memungkinkan melakukan proses debugging langsung pada hardware. - Kopi, teh, camilan.
Saat proses belajar, Anda butuh banyak makanan yang bergisi terutama jika Anda sama dengan penulis yang sedang dalam masa pertumbuhan.
Proses
- Pelajari arsitektur.
Tak kenal maka tak sayang. Kenali dulu arsitektur mikrokontroler yang ingin Anda pelajari (cukup kenali saja, gak perlu sampi sayang segala, apalagi sampai dibawa tidur atau ke kamar mandi). Secara garis besar yang harus Anda pelajari adalah register, akumulator (kalo ada), register status, mapping memori data, dan I/O. Khusus I/O untuk permulaan cukup Anda pelajari I/O paralel, I/O yang paling sederhana. Setelah Anda benar-benar mengenal arsitektur dasar mikrokontroler secara mendalam baru Anda pelajari I/O lainnya (UART, EEPROM, TIMER, dll). - Pelajari instruksi.
Kenali instruksi-instruksi yang dimiliki olah mikrokontroler, termasuk efeknya pada register status. - Coba contoh-contoh program di emulator.
Untuk lebih memudahkan mempelajari instruksi, cari contoh-contoh program dan jalankan di software emulator. Amati hasil eksekusi pada register, memory, dan I/O. - Coba di hardware.
Jika Anda sudah cukup menguasai arsitektur dan instruksi-instruksi yang ada dalam mikrokontroler, saatnya mencoba di hardware yang sesunggguhnya.
Jika Anda menemui kesulitan dalam proses belajar, cobalah mencari pemecahannya di literatur/ tutorial dari buku atau internet (google is your friend) terlebih dahulu. Bisanya pemecahan yang Anda temukan sendiri akan lebih mudah Anda pahami dan ingat. Jika memang Anda benar-benar tidak menemukan jalan keluar, barulah Anda tanyakan pada orang lain yang lebih mengerti. Dan tentunya orang yang Anda tanyai akan sangat menghargai jika Anda bawakan makanan atau Anda traktir makan siang.
PHP Template Engines
Ini dia template engines PHP yang sederhana, kecil, cepat, dan powerfull. Berbeda dengan kebanyakan template engines yang memproses template dengan parser yang ditulis dalam PHP, template ini memanfaatkan PHP itu sendiri sebagai template engines.
PHP sebagai templete engines ?
Ya, banyak yang tidak sadar bahwa PHP sendiri adalah sebuah template engines. Lihat contoh sederhana berikut ini :
File : index.php
<?php
$title = "Judul";
$nama = "Mono";
$include "template.tpl";
?>
File : template.tpl
<html>
<title><?=$title;?>
</tille>
<body>
Nama saya <?=$nama;?>
</body>
</html>
Template dan contoh lebih lanjut dapat dilihat di alamat ini. Cara ini lebih cepat karena engines yang digunakan adalah PHP, bukan engines yang ditulis dengan PHP. Powerfull karena dalam ‘template’, fungsi-fungsi PHP dapat dipanggil, bukan hanya operasi-operasi sederhana (IF,CASE,FOREACH,dll) sebagaimana ditemui pada template engines yang lain.
Kalau template ditulis dalam bahasa PHP juga, berarti designer web harus menguasai PHP dong?
Ya dan tidak. Designer web cukup menguasai operasi-operasi dasar dari PHP –misal: mencetak variable, seleksi kondisi, dan perulangan–. Operasi yang lebih rumit –misal: akses database,mengolah form,dll– adalah tugas programmer. Ingat, tujuan utama templete engines adalah memisahkan urusan logic dari representasi data, bukan memisahkan PHP dan HTML. Dan jika dicermati, sebagian besar template engines yang ada juga mengarah ke bahasa pemrograman tersendiri. Coba bandingkan template yang ditulis dengan Smarty
{include file="header.tpl"}
{if $bold_name}
Welcome, <b>{$name}</b>!
{else}
Welcome, {$name}!
{/if}
{include file="footer.tpl"}
dengan template yang ditulis dalam PHP
<?php include "header.tpl";?>
<?php if ($bold_name): ?>
Welcome, <b><?=$name;?></b>
<?php else: ?>
Welcome, <?=$name;?>
<?php endif; ?>
<?php include "footer.tpl"?>
Tidak jauh berbeda bukan ?
Assembler vs C
Beberapa dekade yang lalu untuk menulis program berbasis mikrokontroler hampir tidak ada alternatif lain selain assembler. Tetapi saat ini tersedia lebih banyak bahas pemrograman untuk mikrokontroler selain bahasa asembler. Yang umum digunakan adalah bahasa “C”. Kelebihan bahasa C (dan bahasa tingkat menengah dan tinggi yang lain) dibandingkan assembler antara lain :
- Fleksibel
Program yang ditulis dalam C lebih mudah diporting ke platform lain. - Mudah
Menulis kode program dalam bahasa C jauh lebih mudah karena detil-detil operasi seperti pengaturan stak, alokasi alamat memory dll, sudah ditangani oleh kompiler C. Programer lebih punya banyak waktu untuk menganalisa permasalahan dan mencari algoritma penyelesaian. Pengaturan operasi-operasi dasar oleh kompiler juga menghindarkan kesalahan alokasi register, alokasi memori, dll yang mungkin terjadi jika dilakukan secara manual seperti pada bahasa assembler. - Mudah dibaca
Kode yang ditulis dalam C lebih mudah dibaca alurnya. Kesalahan program (bug) lebih mudah dilacak. - Waktu pengembangan lebih singkat
Dampak dari 2 kemudahan diatas waktu untuk pengembangan program lebih singkat.
Tetapi tidak semua programer mau menggunakan bahasa C (dan memang tidak semua program dapat ditulis dalam bahasa C). Di luar keengganan beralih bahasa, alasan teknis yang sering dikemukakan adalah masalah efisiensi.
Memang kelemahan C adalah efisiensi yang lebih buruk daripada assembler. Operator C sendiri mirip dengan operasi assembler (tetapi dengan sintak yang lebih mudah dibaca, karenanya C dikategorikan sebagai bahasa tingkat menengah) sehingga efisiensi C tidak terlalu buruk jika dibandingkan dengan assembler. Seiring perkembangan waktu, kualitas kompiler untuk mikrokontroler juga semakin baik. Terlebih lagi banyak arsitektur mikrokontroler modern yang sengaja dirancang untuk mendukung bahasa tingkat tinggi, sehingga efisiensi kode yang dihasilkan semakin mendekati assembler, walaupun secara keseluruhan belum mampu menyamai efisiensi kode assembler. Sebagai contoh, kompiler ICC-AVR untuk mikrokontroler AVR, instruksi :
PORTA |= 0×01;
setelah dikompile menghasilkan assembler
SBI PORTA,0
Kebanyakan kompiler C juga mendukung penggunaan assembler untuk subrutin program yang membutuhkan efisiensi.
Tidak seperti program PC yang mampu menjalankan beberapa proses sekaligus (multitasking), kebanyakan program mikrokontroler hanya menjalankan satu fungsi dalam satu waktu, sehingga kelebihan resource yang ada tidak dimanfaatkan untuk proses yang lain. Dengan kata lain sebuah program assembler yang penghabiskan 60% waktu proses tidak memberikan perbedaan yang berarti dengan program C yang menghabiskan 80% waktu proses. Jadi, kecuali untuk program yang menguras habis resource mikrokontroler (memory program, memory data, atau waktu komputasi), bahasa C adalah pilihan yang baik. Dengan menggunakan C waktu pengembangan program dapat dipersingkat. Dan seringkali dalam pengerjaan sebuah project faktor kualitas, kompleksitas dan waktu pengembangan lebih ditekankan daripada efisiensi. Bahasa C adalah kompromi antara kemudahan dan kecepatan.
-
Archives
- February 2008 (2)
- September 2006 (1)
- February 2006 (2)
- January 2006 (1)
-
Categories
-
RSS
Entries RSS
Comments RSS