BAB 2 LANDASAN TEORI
2.1
Linux
2.1.1
Sejarah Linux Menurut Peter Norton dan Arthur Griffith (1999, p2) Linux adalah sebuah operating sistem (OS) turunan dari UNIX, yang merupakan implementasi independent dari standard IEEE untuk OS yang bernama POSIX (Portable Operating Sistem Interface). OS adalah perangkat lunak (software) yang mengatur koordinasi kerja antar semua perlengkapan perangkat keras (hardware) dalam sebuah computer. Linux memiliki kemampuan yang berbasis ke standard POSIX meliputi true-multitasking, virtual memory, dan multiuser. Linux seperti layaknya OS UNIX lainnya, mendukung banyak software mulai dari TEX, X Window, GNU C/C++ sampai ke TCP/IP. Di Suoen Tasavalta, Republik Finlandia, seorang mahasiswa bernama Linus Torvalds mengikuti mata kuliah Unix dan bahasa pemprograman C. Saat itu Linus menggunakan sistem operasi mini berbasiskan Unix bernama Minix. Dia merasa bahwa Minix mempunyai banyak kelemahan, dan Ia berkeyakinan mampu untuk membuat lebih baik dari itu. Di usia 23, dia mulai mengotak-atik kernel Minix dan menjalankannya di mesin Intel x86. Linux dulunya adalah proyek hobi yang dikerjakan oleh Linus Torvalds yang memperoleh inspirasi dari minix. Minix adalah sistem UNIX kecil yang dikembangkan
6 -
oleh Andrew S. Tanenbaum, seorang professor yang menggeluti peneletian masalah Operating System dari Vrije Universiteit, Belanda. Linux pertama kali dibuat oleh linus Touvalds di Universitas Helsinki, Finlandia. Kemudian Linux dikembangkan lagi dengan bantuan dari banyak programmer dan hacker UNIX diseluruh dunia. Linux bisa diperoleh dari distribusi-distribusi yang umum digunakan, misalnya RedHat, Mandrake, Debian, Slackware, Caldera, Stampede Linux, TurboLinux dan lain-lain. Kernel yang digunakan adalah sama-sama Linux kernel, sedangkan perbedaanya hanyalah paket-paket aplikasi yang disertakan, sistem penyusunan direktori, init style, dan lain-lain. Kalau ditanya mana yang lebih baik, pada hakikatnya semua sama baiknya, tergantung kesenangan dan kebiasaan dalam penggunaan Linux. Tidak akan pernah ada habisnya memperdebatkan kelebihan dan kelemahan masing-masing dari distribusi ini. Linux versi 0.01 dikerjakan sekitar bulan Agustus 1991. kemudian pada bulan Oktober 1991 tanggal 5, Linus mengumumkan versi resmi Linux, yaitu 0.02 yang hanya dapat menjalankan bash (GNU Bourne Again Shell) dan gcc (GNU C Compiler). Sekarang Linux adalah sistem UNIX yang lengkap, bisa digunakan untuk jaringan (networking), pengembangan software, dan bahkan untuk keperluan sehari-hari. Linux sekarang merupakan alternatif operating system yang jauh lebih murah jika dibandingkan dengan operating system komersial, dengan kemampuan yang setara atau bahkan lebih. Linux bukan lagi suatu operating system turunan Unix yang textbased, tapi sudah berubah menjadi OS yang memiliki GUI yang lebih indah dan fleksibel dari pada Microsoft Windows. Linux disebarkan secara luas dengan bebas di bawah lisensi GNU General Public License (GPL), yang berarti juga source code Linux tersedia dan membuat Linux sangat 7 -
spesial. Linux masih dikembangkan oleh kelompok-kelompok tanpa dibayar, yang banyak dijumpai di internet, tukar-menukar kode, melaporkan bug, dan membenahi segala masalah yang ada. Setiap orang yang tertarik bisa bergabung dalam proyek pengembangan linux. Linux menggunakan logo gambar penguin karena ada cerita menarik yang menyebabkan linus menggunakan penguin sebagai logo sistem operasi Linux-nya. Saat itu sedang berjalan-jalan bersama Andrew Tridgell di sebuah taman. Tiba-tiba linus dipatok penguin dan semenjak itu ia mengalami demam selama berhari-hari. Linus berfikir karakter seperti ini cocok untuk mewakili Linux. Dia ingin pemakainya menjadi demam alias tergila-gila untuk menggunakan dan mengutak-atik Linux.
Gambar 2.1. Logo Linux (Tux) 2.1.2
Stabilitas Linux Stabilitas pada sistem linux sangat stabil. Jika dikonfigurasikan dengan benar, sistem linux akan hidup terus hingga hardwarenya tidak memadai (rusak) atau tidak ada tegangan listrik atau seseorang mematikan sistem. Umur hidup sistem yang berkelanjutan hingga ratusan hari atau lebih merupakan hal yang telah biasa. Berbeda dengan sistem operasi lain yang stabilitasnya membutuhkan reboot atau install ulang supaya sistem dapat berjalan lancar. 8 -
Salah satu hal yang mendasari stabilitas ini adalah penomoran versi dari shared libraries. Kebanyakan aplikasi operating sistem (OS) lain menginstal versi-versi baru dari Dynamic Link Libraries (dll) yang pada umumnya mengakibatkan aplikasi lain yang meminta versi lain dari Dynamic Link Libraries (dll) tersebut tidak berfungsi dengan semestinya. Lain halnya dengan shared libraries pada linux yang mencantumkan versi pada nama filenya sehingga memungkinkan untuk menginstal versi barunya tanpa merusak ketergantungan program lain. Linux mewarisi tradisi Unix dengan mendukung adanya file permissions (ijin file), yang dapat mencegah pengubahan atau penghapusan file tanpa ijin dari pemiliknya karena itu virus pada dasarnya tidak dikenal didunia linux. Masalah keamanan yang menyangkut operating sistem itu sendiri biasanya diumumkan beberapa jam saja setelah ditemukan, diikuti dengan bugfix, workaround, advisory, dan sebagainya. Misalnya waktu ditemukan bug dihardware itu sendiri (processor Pentium dengan bug Fo Of) workaround sudah tersedia untuk download beberapa saat setelah diumumkan adanya bug tersebut. 2.1.3
Distribusi Linux Ketika orang baru berkenalan dengan Linux, biasanya akan mengalami kesulitan dalam hal pemilihan distribusi apa yang akan digunakan. Walaupun sebenarnya secara garis besar distribusi Linux sama (Menggunakan ’kernel’ Linux), perbedaannya hanya pada paket program, program instalasi, organisasi direktori dan file, program aplikasi dan tool utilitas tambahan. Dibawah ini adalah beberapa distribusi yang ada di dunia linux.
Caldera OpenLinux 9 -
Debian Linux
Linux Pro
Red Hat Linux
Trans-Ameritech Linuxware
Slackware
S.u.S.E
LinuxGT
Linux Mandrake
Turbo Linux
Distribusi linux yang disebutkan diatas hanya sebagian besar dari distribusidistribusi Linux yang ada diseluruh dunia, karena sifat dari linux yang open-source maka Linux akan lebih dapat berkembang dan akan banyak distribusi-distribusi yang beragam bermunculan untuk kepentingan-kepentingan yang ada dan sesuai dengan kebutuhan.
2.2
Embedded Linux Dengan keunggulan-keunggulan linux tersebut maka linux akan dapat lebih berkembang dari pada sistem operasi lain karena sifatnya yang open-source dapat membuat para programmer untuk lebih leluasa dalam hal pengembangan sistem tersebut maupun sistem aplikasinya. Sekarang sistem operasi tidak hanya digunakan pada sistemsistem yang resource-nya besar namun digunakan juga pada alat yang resource-nya lebih kecil karena untuk menunjang kestabilan dan lebih aplikatif dari sistem tersebut. Sistem yang digunakan tersebut adalah embedded system artinya suatu sistem yang 10 -
mempunyai perangkat keras computer dengan software yang telah terintegrasi (terpasang didalamnya). Embedded linux adalah salah satu dari embedded sistem tersebut, menurut situs wikipedia.org embedded linux yaitu sebuah alat (perangkat keras) yang terintegrasi dengan sebuah sistem operasi berbasiskan kernel linux yang sekarang ini telah didapati pada telepon seluler, PDA (personal digital assistant), media player, dan perangkat elektronik lainnya. Para produsen produk tersebut akan membuat program aplikasi sesuai dengan tujuan dan fungsi produk tersebut diatas kernel linux. Pengembangan program aplikasi yang menggunakan embedded linux ini tentu tidak ada batasnya para pengembang akan leluasa untuk mengutak-atik kernel yang berikan oleh linux tersebut secara open source. Keuntungan dalam menggunakan linux adalah dengan diberikannya source code yang dapat diubah sesuai dengan tujuan dan dapat didistribusikan lagi tanpa ada bayaran royalty (license) kepada siapa pun dan dengan kejaminan sistem operasi ini sudah stabil.
2.3
Qt Menurut situs wikipedia.org Qt adalah toolkit untuk pengembangan aplikasi grafis yang bersifat lintas-platform. Qt dikenal sebagai pondasi penyusun KDE, sebuah lingkungan grafis yang populer di Linux. Qt disusun dengan bahasa C++ dan dapat digunakan di platform Unix, Windows, dan Mac OS X. Qt menyediakan dukungan terhadap internasionalisasi, akses ke basis data, XML, dan penanganan berkas.
11 -
2.3.1
Sejarah singkat Qt Kerangka kerja Qt pertama kali dapat dipublikasikan pada bulan Mei tahun 1995. Qt pertama kali dikembangkan oleh Haavard Nord (CEO dari Trolltech) dan Eirik Chambe-Eng (presiden dari Trolltech). Haavard dan Eirik bertemu di Norwegian Institute of Technology di Trondheim, dimana mereka berdua lulus dengan gelar master dibidang computer science. Pada tahun 1991, Haavard mulai menulis pengelompokan yang nantinya berkembang menjadi Qt, berkolaborasi dengan Eirik pada bagian desain. Pada tahun berikutnya, Eirik mendapatkan ide untuk ”signal dan slots” sederhana tetapi merupakan paradigma pemrograman GUI yang kuat dimana hal ini sekarang dicakupi oleh beberapa toolkit lainnya. Haarvard mengambil idenya dan membuat sebuah implementasi hand-coded. Tahun 1993, Haarvard dan Eirik telah mengembangkan kernel grafis Qt yang pertama dan dapat diimplementasikan kepada widget mereka. Diakhir tahun, Haarvard menyarankan agar mereka membuat bisnis bersama untuk membangun ”Kerangka kerja C++ GUI terbaik didunia”
Pada tahun 1994 diawali tidak sesuai harapan karena dua programmer muda yang ingin masuk kepada sebuah pasar yang sudah terbentuk dengan tidak adanya pelanggan, sebuah produk yang tidak selesai, dan tidak adanya uang. Untungnya, diantara kedua istri mereka mendukung suaminya selama dua tahun untuk mengembangkan produk dan akhirnya mulai mendatangkan penghasilan.
Huruf ‘Q’ dipilih menjadi awalan kata karena huruf tersebut terlihat indah. Huruf ‘t’ ditambahkan dari kata “toolkit”, diinspirasikan oleh Xt, yang berarti X Toolkit.
12 -
Perusahaannya dibuat pada tanggal 4 Maret 1994, awalnya bernama Quasar Technologies, lalu menjadi Troll Tech dan saat ini bernama Trolltech.
Pada April 1995, Metis sebuah perusahaan dari norwegia memberikan mereka kontrak untuk mengembangkan perangkat lunak yang berbasiskan Qt. Seiring berjalannya waktu, menyewa Arnt Gulbrandsen selama enam tahun berada di Trolltech menemukan dan mengimplementasikan sebuah sistem dokumentasi yang sangat baik sebagai kontribusi kepada kode Qt.
Pada bulan Mei tahun 1995, Qt 0.90 dikeluarkan di sunsite.unc.edu. Enam hari kemudian, peluncurannya diumumkan pada comp.os.linux.annouce. Hal ini merupakan pertama kalinya peluncuran Qt diumumkan. Qt dapat digunakan pada pengembangan di Windows dan UNIX, menawarkan API yang sama pada kedua platform tersebut. Qt dapat tersedia dibawah dua lisensi pada hari pertama : sebuah lisensi komersial telah diminta untuk pengembangan komersial, dan edisi perangkat lunak gratis tersedia untuk pengembangan open source.
Pada bulan Maret tahun 1996, European Space Agency menjadi pelanggan Qt yang kedua, dengan membeli sepuluh lisensi komersial. Eirik dan Haavard menyewa pengembang lainnya. Qt 0.97 diluncurkan pada akhir bulan Mei, dan pada tanggal 24 September 1996, Qt 1.0 keluar. Diakhir tahun, Qt telah mencapai versi 1.1 dengan memiliki delapan pelanggan dan masing-masing pelanggan berada pada negara yang berbeda dengan membawa 18 lisensi. Pada tahun ini juga dapat dilihat bahwa ditemukannya projek KDE, dipimpin oleh Matthias Ettrich. Qt 1.2 telah diluncurkan dibulan April tahun 1997. keputusan Matthias Ettrich untuk menggunakan Qt untuk 13 -
menbangun KDE telah membantu Qt untuk menjadi standar de facto untuk pengembangan C++ GUI pada Linux. Qt 1.3 telah diluncurkan pada September 1997.
Matthias bergabung ke Trolltech pada tahun 1998, dan peluncuran seri terakhir Qt 1, 1.40, dibuat pada bulan September pada tahun yang sama. Qt 2.0 diluncurkan pada bulan Juni tahun 1999, Qt 2 telah mempunyai lisensi open source yang baru, yaitu Q Public License (QPL), dimana menuruti kepada Open Source Definition. Pada bulan Agustus 1999, Qt memenangkan penghargaan LinuxWorld sebagai library/tool terbaik. Sekitar tahun itu, Trolltech Pty Ltd (Australia) telah didirikan.
Trolltech meluncurkan Qtopia Core (yang kemudian disebut Qt/Embedded) pada tahun 2000. Qtopia Core didesain untuk dijalankan didalam perangkat embedded linux dan menyediakan sistem window sendiri seperti bobot yang ringan diganti untuk X11. Qt/X11 dan Qtopia Core sekarang menawarkan penggunaan yang luas untuk GNU GPL yang sama baiknya dengan lisensi yang komersial. Pada akhir tahun 2000, Trolltech mendirikan Trolltech Inc.(USA) dan telah meluncurkan versi pertama dari Qtopia, sebuah platform aplikasi untuk telepon seluler dan PDA. Qtopia Core memenangkan penghargaan LinuxWorld sebagai solusi Embbeded Linux terbaik pada tahun 2001 dan 2002, dan Qtopia Phone mendapatkan penghargaan serupa pada tahun 2004.
Qt 3.0 diluncurkan pada tahun 2001. Pada saat ini Qt tersedia pada Windows, Mac OS X, dan Linux. Qt 3 menawarakan 42 kelas baru dan kode yang lebih dari 500.000 baris. Qt 3 memiliki perbedaan utama yang lebih maju dari Qt 2, mendukung perbaikan Unicode, perbaikan widget dan tampilan text baru yang lebih lengkap, dan
14 -
regular ekspresi kelas seperti Perl. Qt 3 memenangkan penghargaan dari Jolt Productivity Award dengan Software Development Times pada tahun 2002.
Pada musim panas tahun 2005, Qt 4 dirilis. Dengan lebih dari 500 kelas dan lebih dari 9000 fungsi, Qt 4 lebih besar dan lebih kaya daripada versi sebelumnya. Qt 4 adalah edisi Qt pertama yang tersedia untuk pengembangan komersial dan open source pada semua platform yang mendukungnya. Pada tahun yang sama, Trolltech membuka kantor perwakilan di Beijing untuk melayani pelanggan di China dan kawasan dengan pelayanan penjualan, pelatihan, dan dukungan teknik dari Qtopia.
Sejak Trolltech lahir, popularitas dari Qt bertumbuh terus dan berlanjut hingga tumbuh sampai saat ini. Kesuksesan ini adalah refleksi dari kualitas Qt dan Qt yang sangat dinikmati ketika digunakan. Pada akhir decade ini, Qt menjadi produk yang digunakan oleh ribuan pelanggan dan pengembang di seluruh dunia.
2.3.2
Install Qt pada platform Embedded Linux (Qt/Embedded) Dalam penginstalan Qt pada embedded linux memerlukan beberapa tahapan, namun jika seseorang yang sudah biasa menggunakan linux mungkin sudah tidak asing lagi dengan tahapan-tahapan tersebut. Adapun tahapan-tahapannya antara lain : 1. Unpack archive.
cd
gunzip qt-embedded-commercial-VERSION.tar.gz
# uncompress the
archive
tar xf qt-embedded-commercial-VERSION.tar
15 -
# unpack it
Ganti VERSION dengan nomor versi Qt/Embedded yang digunakan. Diasumsikan archive diinstall sebagai ~/qt-embedded-commercial-VERSION. 2. Compile library dan examples Qt/Embedded.
cd ~/qt-embedded-commercial-VERSION
export QTDIR=~/qt-embedded-commercial-VERSION
./configure
make
3. Enable frame buffer support.
Untuk Matrox G100/G200/G400, gunakan driver matrox frame buffer.
Untuk NVidia TNT, gunakan driver nvidia frame buffer.
Untuk Mach64 dan kebanyakan kartu lainnya, gunakan driver vesafb.
4. Ubah permissions.
2.3.3
Diperlukan write access ke framebuffer device /dev/fb0.
Diperlukan read acces ke device mouse.
Konsep Signal dan Slot Signal dan Slot digunakan untuk komunikasi diantara 2 obyek. Fitur signal/slot merupakan fitur utama dari Qt yang membedakannya dari toolkit-toolkit lainnya. Pada pemrograman GUI, terkadang menginginkan perubahan pada satu widget untuk diketahui oleh widget-widget lainnya. Atau lebih umumnya, menginginkan obyek yang mana saja untuk dapat berkomunikasi dengan obyek yang lainnya. Pada toolkit yang lebih lama, komunikasi seperti ini dicapai dengan menggunakan teknik callback. Teknik callback menggunakan sebuah pointer callback ke suatu fungsi. Misalkan ingin suatu fungsi untuk menotifikasi adanya perubahan yang 16 -
terjadi, fungsi itu diberikan pointer callback ke fungsi yang ingin dinotifikasi. Fungsi yang diberikan pointer callback ini kemudian akan memanggil callback pada saat yang tepat (jika terjadi perubahan). Teknik callback memiliki dua buah kelemahan, yang pertama adalah tidak selalu fungsi yang diberikan pointer callback akan memanggil callback dengan argumen yang tepat. Kelemahan yang kedua adalah kuatnya ketergantungan fungsi yang ingin dibuat memberikan notifikasi dengan fungsi yang ingin dibuat mendapat notifikasi.
Gambar 2.2. Diagram dari hubungan beberapa signal dan slot
Pada Qt, alternatif untuk penggunaan teknik callback adalah signal dan slot. Signal akan dipancarkan pada saat suatu perubahan/kejadian terjadi. Widget-widget pada Qt memiliki beberapa signal yang sudah ditetapkan, tetapi dapat membuat signal sesuai dengan keperluan. Sedangkan slot merupakan sebuah fungsi yang dipanggil untuk 17 -
merespon terhadap suatu signal tertentu. Widget-widget pada Qt memiliki beberapa slot yang sudah ditetapkan, tetapi pada umumnya slot ditetapkan sendiri untuk dapat merespon terhadap signal yang dibutuhkan. Mekanisme signal dan slot membuatnya dapat mengatasi kelemahan pertama dari teknik callback, tanda pengenal pada signal harus sama dengan tanda pengenal pada slot. Hal ini akan menyebabkan compiler dapat mendeteksi kesalahan tipe pasangan yang terjadi. Signal dan slot juga dapat mengatasi kelemahan kedua dari teknik callback, sebuah class yang memancarkan signal tidak mengetahui maupun peduli slot mana yang menerima signal tersebut. Mekanisme signal dan slot Qt memastikan bahwa pada saat menghubungkan suatu signal dengan slot, slot akan dipanggil dengan parameter dari signal pada saat yang tepat. Signal dan slot dapat menggunakan berapa saja jumlah argumen dari tipe apa saja. Semua class yang merupakan turunan dari QObject atau salah satu dari subclassnya (seperti QWidget) dapat memiliki signal dan slot. Signal dipancarkan oleh suatu obyek saat obyek itu melakukan perubahan yang mungkin menarik atau dapat digunakan oleh obyek lainnya. Hanya inilah yang dilakukan suatu obyek untuk berkomunikasi. Obyek itu tidak mengetahui maupun peduli ada atau tidak yang menerima signal yang dipancarkan.
Gambar 2.3. Contoh dari hubungan signal dan slot 18 -
Slot dapat digunakan untuk menerima suatu signal, tetapi slot juga merupakan fungsi yang normal. Seperti signal yang tidak mengetahui apakah ada yang menerima signal yang dipancarkan, slot juga tidak mengetahui apakah ada signal yang terhubungan dengannya. Hal ini memastikan bahwa komponen yang benar-benar independen dapat dibuat menggunakan Qt. Suatu signal dapat dihubungkan dengan berapa saja slot yang dibutuhkan, dan suatu slot dapat dihubungkan dengan berapa saja signal yang dibutuhkan. Suatu signal bahkan dapat dihubungkan secara langsung dengan signal lainnya (hal ini akan menyebabkan signal yang kedua untuk memancar tepat pada saat signal yang pertama memancar). Bersama, signal dan slot membentuk suatu mekanisme pemrograman komponen yang kuat. 2.3.4
Konsep Widget Pada pemrograman komputer, widget adalah elemen interface yang berinteraksi secara langsung dengan pengguna, seperti window dan textbox. Terkadang widget dikategorikan sebagai obyek virtual, untuk membedakannya dengan obyek pada dunia nyata. Misalnya, tombol virtual yang dapat diklik menggunakan mouse, lawan tombol fisik yang dapat ditekan menggunakan jari. Pada umumnya widget dipaketkan secara bersamaan dengan widget toolkit, yang digunakan oleh programmer untuk membuat suatu Graphical User Interface (GUI). Contoh-contoh widget pada Qt :
19 -
Gambar 2.4. Beberapa contoh widget dengan Qt
Contoh compile sederhana menggunakan Qt ”Hello Qt” : 1 #include 2 #include 3 int main(int argc, char *argv[]) 4{ 5
QApplication app(argc, argv);
6
QLabel *label = new QLabel("Hello Qt!");
7
label->show();
8
return app.exec();
9}
Tampilan yang dihasilkan :
20 -
Gambar 2.5. Tampilan compile ”Hello Qt”
Baris pertama dan kedua memasukkan definisi dari Qapplication dan Qlabel kelas. Untuk setiap kelas Qt, terdapat sebuah header file dengan nama yang sama dengan kelas yang berisi definisi dari kelas tersebut.
Baris kelima membuat sebuah objek Qapplication untuk mengelola sumber aplikasi. Pembangunan Qapplication meminta argc dan argy karena Qt mendukung banyak argumen command-line dari yang dimilikinya.
Baris keenam membuat sebuah widget QLabel yang menampilkan “Hello Qt!”. Didalam terminology Qt dan UNIX, sebuah widget merupakan sebuah elemen visual didalam user-interface. Buttons, menus, scroll bars dan frames merupakan contoh-contoh dari widget. Widget dapat berisi dengan widget-widget lainnya; sebagai contoh, sebuah aplikasi window sebuah widget yang biasanya berisi sebuah QMenuBars, sebuah QStatusBar dan beberapa widget lainnya. Sebagian besar aplikasi menggunakan sebuah QMainWindow atau sebuah QDialog seperti aplikasi window, tetapi Qt sangat fleksibel dimana widget apapun bisa menjadi sebuah window. Pada contoh ini, widget QLabel adalah aplikasi window.
Baris ketujuh membuat nyata label. Widget biasanya dibuat tersembunyi, jadi dapat merubahnya sebelum ditampilkan.
Baris kedelapan mengawasi lewatnya aplikasi kepada Qt. Pada titik ini, programnya berjalan. Hal ini adalah suatu jenis dari mode stand-by dimana program menunggu aksi dari user seperti mouse yang tekan dan menekan 21 -
keyboard. Aksi dari user menghasilkan kejadian dimana program dapat merespon, biasanya dengan mengeksekusi satu atau lebih fungsi. Sebagai contoh, ketika user menekan sebuah widget, menekan mouse, dan melepas mouse. 2.3.5
QtopiaCore Menurut trolltech.com Qtopia core adalah aplikasi framework yang memimpin dalam bidang device satu fungsi yang dijalankan oleh embedded Linux. Qtopia core menyediakan
lingkungan
development
yang
luas
dan
sudah
terbukti,
yang
memungkinkan pengembang untuk membuat device dengan aplikasi yang sesuai dengan kebutuhan pasar secara efisien. Qtopia core, sebelumnya Qt/Embedded, mewarisi kemampuan dan keuntungan dari Qt4. Produk trolltech tetap berada selangkah didepan teknologi saat itu, yang membebaskan pengguna untuk dapat fokus pada inovasi-inovasi front-end yang menambah nilai suatu produk, daripada harus mempelajari dan mengembangkan infrastruktur perangkat lunak itu sendiri. Dengan API-nya yang handal, kaya akan isi, dan memiliki dokumentasi yang lengkap, Qtopia Core menawarkan kebebasan untuk berkarya dan berinovasi. Pengembang device dan aplikasi dapat dengan efisien membedakan produk mereka dari produk-produk lainnya dengan mengontrol pengalaman yang didapat si pengguna saat menggunakan produk mereka. Qtopia core tidak hanya memiliki kebutuhan hardware yang minimal dan dapat berjalan dengan performa yang tetap pada hampir seluruh set-up embedded Linux, tetapi juga dapat dengan mudah dimodifikasi agar mendapat keuntungan dari akselesari hardware yang spesifik.
22 -
2.3.6
Cross Compiling
Menurut wikipedia.org Cross compiler adalah compiler yang dapat membuat executable code untuk platform lain selain platform tempat compiler tersebut dijalankan. Cross compiler pada umumnya digunakan untuk membuat hasil compile untuk sistem embedded atau sistem multi platform. Cross compiler adalah sebuah alat yang harus digunakan untuk sebuah platform dimana pada platform tersebut tidak efisien atau tidak memungkinkan untuk dilakukan compiling, seperti microcontroller yang berjalan menggunakan memori yang sangat minim sebagai suatu pilihan desain. Sudah menjadi umum alat ini digunakan sebagai sarana paravirtualization, dimana satu sistem dapat mempunyai lebih dari satu platform yang bekerja dibawahnya. Fungsi fundamental dari cross compiler adalah untuk memisahkan antara lingkungan pengembangan dari lingkungan pengguna. Hal ini berguna dalam beberapa situasi sebagai berikut : •
Komputer Embedded dimana suatu device memiliki sumber daya yang sangat terbatas. Sebagai contoh, sebuah microwave oven akan mempunyai sebuah komputer yang sangat kecil untuk membaca input dari touchpad dan sensor pintu, menyediakan output ke tampilan digital dan speaker, dan untuk mengontrol mekanisme saat memanaskan makanan. Komputer ini akan tidak dapat menjalankan suatu compiler, suatu file system, atau suatu lingkungan pengembangan. Karena debugging dan pengetesan kemungkinan juga akan memerlukan sumber daya yang lebih besar dari yang tersedia pada sistem embedded tersebut, proses cross-compiling dapat lebih memungkinkan pembenaran dan mengurangi resiko dibandingkan jika compiling dilakukan pada sistem embedded tersebut. 23 -
•
Compiling untuk beberapa mesin secara bersamaan. Sebagai contoh, suatu perusahaan dapat menginginkan untuk dapat menjalankan beberapa versi dari Operating System yang berbeda-beda atau untuk dapat menjalankan beberapa jenis Operating System yang berbeda. Dengan menggunakan cross compiler, satu lingkungan pengembangan dapat dibuat untuk dapat meng-compile untuk setiap target tersebut.
•
Compiling pada server farm. Seperti compiling untuk beberapa mesin, pengembangan yang kompleks yang membutuhkan beberapa operasi compile dapat dijalankan melalui mesin mana saja yang dapat digunakan, tidak terpengaruh oleh merek ataupun versi dari Operating System yang dipakai.
•
Proses bootstrapping ke platform baru. Saat mengembangkan perangkat lunak untuk sebuah platform, atau sebuah emulator dari platform yang akan dibuat, digunakan cross compiler untuk meng-compile alat-alat yang akan digunakan pada platform baru tersebut, seperti Operating System dan compiler sendiri untuk platform baru tersebut.
2.4
OGG Vorbis Menurut wikipedia.org Ogg adalah suatu standar terbuka yang berisi format data multimedia digital, dengan tidak dibatasi oleh hak paten software dan didesain untuk efisiensi streaming dan manipulasi. Ogg dikelola oleh Xiph, Org Foundation. Ogg Vorbis menandingi MP3 dengan menghasilkan kualitas suara yang lebih tinggi pada
24 -
bitrate yang sama, disamping itu ukuran file dari Ogg lebih kecil dibandingkan dengan MP3. Ogg sekarang ini banyak diramalkan sebagai pengganti alternative MP3 dimasa depan karena kelebihan-kelebihan yang dimilikinya dibandingkan dengan MP3, antara lain karena sifatnya yang open source dan bebas paten. Ogg Vorbis ini sendiri sebenarnya terdiri dari dua kata yaitu Ogg dan vorbis. Ogg adalah nama format kontainer dari Xiph.org untuk audio, video, dan metadata. Sedangkan vorbis adalah nama sebuah skema kompresi audio khusus yang didesain untuk dimasukkan ke dalam Ogg. OGG Vorbis adalah coder transformasi hybrid waktu/frekuensi. Ogg sendiri merupakan format kompresi audio asimetris yang dikembangkan oleh Xiph.org. Data audio pada umumnya di-encode menggunakan encoder Vorbis, yang dipaket menjadi bit-stream format Ogg dan selanjutnya dipindahkan kedalam decoder. Seperti MP3 (dan coder transformasi lainnya yang sering digunakan), input audio pertama-tama dianalisa untuk mendeteksi perubahan kuat dan breaks in alami, dan kemudian encoder akan menggunakan informasi ini untuk memecah-mecah audio yang masuk menjadi beberapa blok dengan ukuran yang berbeda-beda. Encoding dan decoding dari Ogg Vorbis dapat diklasifikasikan ke dalam 6 tahapan antara lain: 1. Tahapan pertama disebut tahap Analysis, yaitu Encoder Vorbis mengambil data audio yang asli menjadi segmen singkat yang saling overlap, tetapi saling berdampingan dan kemudian menganalisa data audio tersebut untuk mencari representasi kecil yang optimal.
25 -
2. Tahap kedua disebut tahap Coding, yaitu data audio di-encode menjadi representasi data yang jauh lebih kecil seperti yang sudah ditetapkan pada tahapan sebelumnya. 3. Tahap ketiga disebut tahap Streaming, yaitu paket-paket data audio yang masih asli ini akan dipaket menjadi stream. 4. Tahap keempat disebut tahap Decomposition, yaitu decoder akan mengambil secara sekuensial dari paket data audio yang asli dari dalam streaming. 5. Tahap kelima disebut tahap Decoding, yaitu Decoder akan mencoba untuk merekonstruksi representasi sinyal suara dari paket-paket ini. 6. Tahap keenam disebut tahap Synthesis, yaitu sinyal audio akan digenerasi ulang dari representasi hasil decoding. Tahapan-tahapan ini ditunjukkan pada diagram dibawah ini:
Gambar 2.6. Proses streaming Ogg vorbis
Pada saat proses kompresi, jika decoder kehilangan informasi pada domain frekuensi, noise yang dihasilkan akan menyebar pada seluruh domain waktu. Jika terjadi 26 -
lonjakan yang kuat, lama kelamaan lonjakan ini akan dimuluskan oleh kuantisasi frekuensi, jadi semakin besar blok yang ada, akan semakin kuat kedengaranya. Oleh sebab itu, pada tahapan Analysis, data audio harus dipecah menjadi blok yang overlap, blok-blok ini dibagi dalam 2 ukuran, short (256 sampel) atau long (2048 sampel). Pada umumnya long window akan digunakan, kecuali pada saat terjadi perubahan suara yang terlalu drastic atau eksplosif, karena short window dapat mencegah menyebarnya artifact yang bersifat sementara yang ada kemungkinan dapat dihasilkan oleh MDCT pada saat menggunakan long window.
Pada tahapan Coding, informasi yang diterima dari proses masking psychoacoustics akan digunakan untuk menghasilkan spectral envelope dari sinyal dan floor function. Penyambungan Channel dan generasi residue akan dilakukan kemudian. Representasi kecil dari data audio (floor dan residue) akan di-encode menggunakan Vector Quantization (VQ) untuk membentuk paket Vorbis yang pada saat kemudian, bersama dengan codebook VQ, akan dipaket kedalam bit-stream Ogg. Paket audio pada akhirnya akan diintegrasikan kedalam page bit-stream Ogg dan kemudian, page ini (pada saat sudah penuh oleh paket) akan dipindahkan keluar dari stream.
Decoding merupakan proses yang lebih langsung menuju tujuan dan lebih simple dari proses encoding. Decoder melakukan hal yang sebaliknya, tanpa melalui analisa masking. Decoder akan mengambil rangkaian paket dari bit-stream Ogg, mengambil floor, residue, dan melakukan pemutusan sambungan Channel. Frame time-audio akan dikembalikan melalui proses inverse MDCT. Setiap frame dibuat untuk saling menyambung untuk membentuk output sinyal audio.
27 -
2.5
Database Database adalah kumpulan data yang secara logika saling berhubungan dan
digunakan secara bersama-sama dan didalamnya terdapat penjelasan mengenai data tersebut serta di desain untuk kebutuhan informasi didalam suatu organisasi (Connolly, 2002 p14). Database adalah kumpulan dari item data yang saling berhubungan satu dengan yang lainnya yang diorganisasikan berdasarkan sebuah skema atau struktur tertentu, tersimpan di hardware komputer dan dengan software untuk melakukan manipulasi untuk kegunaan tertentu (Irmansyah, 2003). Alasan diperlukannya database adalah salah satu komponen penting dalam sistem informasi yang merupakan dasar dalam menyediakan informasi, menentukan kualitas informasi yang akurat, tepat pada waktunya dan relevan, Informasi dapat dikatakan bernilai bila manfaatnya lebih efektif dibandingkan dengan biaya dalam mendapatkannya, mengurangi duplikasi data (data redudancy), hubungan data dapat ditingkatkan (data reliability), dan dapat mengurangi pemborosan tempat simpanan luar.
Gambar 2.7. Jenjang data
Keterangan dari gambar diatas adalah : 28 -
Characters : merupakan bagian data yang terkecil, dapat berupa karakter numerik, huruf ataupun karakter-karakter khusus (special characters) yang membentuk suatu item data / field.
Field : merepresentasikan suatu atribut dari record yang menunjukkan suatu item dari data, seperti misalnya nama, alamat dan lain sebagainya. Kumpulan dari field membentuk suatu record. o field name: harus diberi nama untuk membedakan field yang satu dengan lainnya o field representation: tipe field (karakter, teks, tanggal, angka, dan sebagainya), lebar field (ruang maksimum yang dapat diisi dengan karakter-karakter data). o field value: isi dari field untuk masing-masing record.
Record : Kumpulan dari field membentuk suatu record. Record menggambarkan suatu unit data individu yang tertentu. Kumpulan dari record membentuk suatu file. Misalnya file personalia, tiap-tiap record dapat mewakili data tiap-tiap karyawan.
File : File terdiri dari record-record yang menggambarkan satu kesatuan data yang sejenis. Misalnya file mata pelajaran berisi data tentang semua mata pelajaran yang ada.
Database : Kumpulan dari file / tabel membentuk suatu database
Suatu database mempunyai relasi terhadap data yang satu dengan yang lain atau juga Relational Database Management System (RDBMS). RDMS merupakan sekumpulan data yang disimpan sedemikian rupa sehingga mudah diambil informasinya 29 -
bagi pengguna, dan data tersebut saling berhubungan. RDBMS merupakan suatu paket perangkat lunak yang kompleks digunakan untuk memanipulasi database. Ada tiga prinsip dalam RDBMS :
Data definition Mendefinisikan jenis data yang akan dibuat (dapat berupa angka atau huruf), cara relasi data, validasi data dan lainnya.
Data Manipulation Data yang telah dibuat dan didefinisikan tersebut akan dilakukan beberapa pengerjaan, seperti menyaring data, melakukan proses query, dan sebagainya.
Data Control Bagian ini berkenaan dengan cara mengendalikan data, seperti siapa saja yang bisa melihat isi data, bagaimana data bisa digunakan oleh banyak user, dan sebagainya.
Semua operasi input dan output yang berhubungan dengan database harus menggunakan DBMS. Bila pemakai akan mengakses database, DBMS menyediakan penghubung (interface) antara pemakai dengan database. Hubungan pemakai dengan database dapat dilakukan dengan dua cara : 1. Secara interaktif menggunakan bahasa pertanyaan (query language). 2. Dengan menggunakan program aplikasi.
30 -
Gambar 2.8. Hubungan pemakai dengan database
2.6
SQL SQL (structured query language) adalah bahasa standar untuk sistem manajemen database relasional. Statement SQL digunakan untuk melakukan tugas-tugas seperti melakukan update terhadap database, atau mengambil data dari sebuah database. Beberapa program database relasional yang menggunakan bahasa SQL adalah MySQL, Oracle, Sybase, Microsoft SQL Server, Access, Ingres, dan lain-lain. Walaupun sebagian besar sistem database tersebut menggunakan bahasa SQL, namun sebagian besar juga memiliki ekstensi khusus yang hanya bisa digunakan di sistem masing-masing. Namun demikian, perintah standar SQL seperti "Select", "Insert", "Update", "Delete", "Create", dan "Drop" dapat digunakan untuk melakukan hampir semua hal yang perlu dilakukan terhadap sebuah database.
2.6.1
MySQL Menurut Betha Sidik (2005, p1) MySQL merupakan sistem manajemen database (Database Management System - DBMS) yang sangat populer dikalangan pemrograman web, terutama dilingkungan Linux dengan menggunakan script PHP dan Perl. MySQL 31 -
merupakan software manajemen database yang open source dan memiliki kelebihan yaitu kemudahan dalam penggunaan, cepat secara kinerja query, dan mencukupi untuk kebutuhan database perusahaan skala menengah kecil. Untuk query pada bahasa MySQL yaitu ADD, DROP, CREATE, INSERT, SELECT, UPDATE, REPLACE, DELETE. Antar muka untuk aplikasi database MySQL dapat menggunakan bahasa pemrograman umum seperti bahasa pemrograman Java, C/C++, MS Visual Basic, atau pun Borland Delphi, hasil akhir dari model aplikasi yang dihasilkan adalah aplikasi client/server. Jenis-jenis pengembangan terhadap program MySQL yaitu : 1. MySQL AB MySQL AB mengembangkan, memasarkan, dan mendukung server database MySQL, mulai tahun 1995 disebarkan melalui internet. MySQL AB berlokasi di Upsalla Swedia, sebelumnya bernama TcX Datakonsult AB. Perangkat lunak server MySQL(tm) pertama dibuat oleh Michael “Monty” Widenius dan kawan-kawannya, mulai tahun 1994. Monty sekarang bertindak sebagai CTO(Chief Technical Officer) dan pemegang terbesar saham dari MySQL AB. 2. MySQL dan Open Source MySQL telah didistribusikan dengan lisensi open source GPL mulai versi 3.23, pada juni 2000. Lisensi open source memungkinkan MySQL untuk didistribusikan dan digunakan oleh siapa saja yang berminat tanpa harus membeli lisensi tersebut. 3. MySQL/InnoDB dan MySQL/BDB Merupakan feature tambahan yang memungkinkan MySQL mempunyai kemampuan menerapkan dan menangani transaksi database manajemen yang besar dengan 32 -
menggunakan table dengan format InnoDB atau BDB. InnoDB Memungkinkan MySQL mempunyai kemampuan untuk penanganan tabel transaksi database secara aman (transaction-safe, komplian ACID), seperti commit, rollback, dan kemampuan untuk melakukan recovery apabila terjadi ‘crash’. InnoDB memungkinkan proses penguncian baris (row level locking) dan menyediakan Oracle-style yang konsisten untuk pembacaaan ‘non-locking’ pada SELECT. Kemampuan ini meningkatkan kinerja multiuser dan konkurensi. Inno DB disertakan pada distribusi MySQL sejak versi 3.23.34a dan diaktivasi pada binary MySQL-Max. InnoDB ditulis dan dikembangkan oleh Heikki Turri dari tahun 1994-2001. Tabel BDB disertakan sejak pada distribusi source MySQL versi 3.23.34 dan diaktivasi dalam binary MySQLMax. BDB merupakan sistem database embedded, yang memungkinkan ukuran database mencapai 256 TB.
2.7
TPC-57 ARM Processor
Gambar 2.9. TPC-57
TPC-57 adalah sebuah hardware komputer embedded sistem yang dapat digunakan untuk mengembangkan menjadi komputer yang fungsinya dapat ditentukan sesuai dengan keinginan. Dengan memiliki input/output yang cukup, dan biaya yang
33 -
cukup rendah. Dalam TPC-57 terdapat didalamnya sebuah modul CPU dari ARM 9 prosessor (Techsol’s SA2410).
Gambar 2.10. Modul Techsol’s SA2410
TPC-57 memiliki spesifikasi sebagai berikut :
Layar QVGA (320x240) berwarna STN 5.7" LCD Panel dengan CFL Backlight dan tambahan Touch-panel
Low-power 10-BaseT Ethernet interface
GPIO untuk tombol tekan, dan lain-lain.
2 x RS-232 serial interfaces pada DE-9 konektor
1 x RS-485 serial interface pada terminal strip
2 x ultra-efficient SMPS feeding 5-volts untuk logic dan display, dan 12-volts untuk back-light inverter
16-bit Audio Out (untuk output suara) dengan kualitas tinggi
4 channels dari 4-20 mA Analog Sensor Inputs
Dan digital inputs and outputs, pre-configured untuk drive opto-couplers (dengan LED drive power)
Terdapat low-power Real-Time Clock dengan backup batere
34 -
Terdapat sebuah 4-pin Header for external I2C devices, dengan +5-volt Power dan Ground
2.8
Slot memori untuk MMC dan SD card
2 USB konektor
Tambahan untuk USB Device (Gadget) port (USB-B connector)
Back-light inverter power dari 12-volt switching power supply
Kabel Back-light dan display.
Bitbake Bitbake merupakan sebuah tools sederhana untuk mengeksekusi perintah, dimana bitbake menyimpan resep-resep untuk mengkompilasi program yang dibutuhkan untuk alat embedded system. Bitbake diciptakan dan diinspirasikan dari Portage, yang merupakan paket system manajemen yang digunakan oleh distro Linux Gentoo, dan juga digunakan sebagai basis dari proyek OpenEmbedded. Bitbake digunakan sebagai alat untuk mengotomatisasi proses kompilasi. Contoh : bitbake program Mysql agar dapat digunakan di alat embedded seperti TPC57.
2.8.1. Eksekusi perintah dengan file tunggal .bb
Mengeksekusi perintah untuk file tunggal merupakan cara yang relatif sederhana. Dengan menentukan file yang dimasalahkan,
dan bitbake menguraikannya dan
mengeksekusi perintah yang ditetapkan (atau “build” yang merupakan perintah defaultnya).
35 -
Perintah “clean”:
$ bitbake -b mysql_1.0.bb -c clean
Perintah “build” :
$ bitbake -b mysql_1.0.bb
2.8.2 Eksekusi perintah dengan paket file .bb $ bitbake mysql $ bitbake mysql-1.0 $ bitbake mysql -1.0-r0 $ bitbake -c clean mysql $ bitbake virtual/whatever $ bitbake -c clean virtual/whatever
2.9
NFS NFS adalah sebuah protocol system file jaringan yang dikembangkan oleh Sun Microsystems pada tahun 1984, dimana mengizinkan sebuah user pada sebuah computer client untuk mengakses file-file menggunakan jaringan semudah seperti perlengkapan jaringan yang di attach ke local disks. NFS umumnya menggunakan protokol Remote Procedure Call (RPC) yang berjalan di atas UDP dan membuka port UDP dengan port number 2049 untuk komunikasi antara client dan server di dalam jaringan. Client NFS selanjutnya akan mengimpor sistem berkas remote dari server NFS, sementara server NFS mengekspor sistem berkas lokal kepada client. 36 -
Mesin-mesin yang menjalankan perangkat lunak NFS client dapat saling berhubungan dengan perangkat lunak NFS server untuk melakukan perintah operasi tertentu dengan menggunakan request RPC. Adapun operasi-operasi yang didukung oleh NFS adalah sebagai berikut:
a. Mencari berkas di dalam direktori. b. Membaca kumpulan direktori. c. Memanipulasi link dan direktori. d. Mengakses atribut berkas. e. Membaca dan menulis berkas.
Perlu diketahui bahwa server NFS bersifat stateless , yang artinya setiap request harus mengandung argumen yang penuh dan jelas sebab server NFS tidak menyimpan sejarah informasi request . Data yang dimodifikasi harus di commit ke server sebelum hasilnya di kembalikan ke client . NFS protokol tidak menyediakan mekanisme concurrency-control.
2.10
Barcode Reader Barcode merupakan suatu teknologi identifikasi secara otomatis. Hal ini mempersilahkan data dikumpulkan scara akurat dan cepat. Sebuah Barcode simbol terdiri dari suatu seri bar dan spasi yang parallel dan saling bersebelahan. Suatu pola kelebaran bar dan spasi yang telah ditentukan sebelumnya digunakan untuk menkodekan data yang diinginkan ke dalam simbol. Untuk membaca informasi yang terdapat pada
37 -
suatu Barcode simbol, sebuah alat scanning, seperti light pen, dijalankan sepanjang simbol dari satu sisi ke sisi lainnya. Pada saat alat scanning dijalankan sepanjang simbol, pola kelebaran dari bar dan spasi Barcode dianalisa oleh decoder Barcode, dan kode data yang terdapat pada Barcode yang berupa kode dapat dikembalikan menjadi data yang asli. Barcode CCD scanner lebih cepat dan lebih mudah untuk digunakan dari pada light pen scanner. Pengguna cukup menahan CCD scanner diatas kode Barcode dan menekan tombol pemicu (trigger) pada alat CCD scanner. CCD scanner biasanya dapat membaca kode Barcode dengan jarak kira-kira 1,5 inci.
Gambar 2.11. Light pen scanner
Gambar 2.12. Pembacaan pada light pen scanner
Gambar 2.13. Gambar 2.7. CCD Scanner
38 -
2.10.1 “Simbology” Kode Barcode
Barcode adalah seperti versi tercetak dari kode Morse. Pola bar dan spasi yang berbeda digunakan untuk merepresentasikan karakter yang berbeda. Set dari pola-pola ini yang telah dikelompokkan bersama akan membentuk apa yang dinamakan “simbology” dari kode Barcode. Terdapat bermacam-macam tipe simbology dari kode Barcode yang memiliki karakteristik dan fitur nya masing-masing. Kebanyakan simbology didesain untuk memenuhi kebutuhan aplikasi atau industri tertentu. Sebagai contoh, simbology UPC didesain untuk mengidentifikasi produk retail dan produk pasar, dan simbology PostNET didesain untuk menkodekan Kode Pos untuk Kantor Pos U.S.
Contoh dari simbology yang umum digunakan adalah :
a. Code 39
Gambar 2.14. Barcode Code 39
Code 39 adalah simbology yang digunakan untuk menkodekan karakter-karakter sebagai
berikut:
1234567890ABCDEFGHIJKLMNOPQ
RSTUVWXYZ-.
*$/+%. Code 39 adalah simbology yang paling umum digunakan di luar bidang retail dan digunakan secara luas pada bidang-bidang medis, militer, dan manufakturing.
39 -
b. UPC-A, UPC-E dan UPC Suplemental.
Gambar 2.15. Barcode UPC-A, UPC-E dan UPC Suplemental
UPC-A adalah simbology 12 digit numerik yang digunakan pada bidang retail. Simbol pada UPC-A terdiri dari 11 digit data dan 1 digit cek. UPC-E adalah simbology 7 digit yang biasa digunakan pada item bidang retail kecil.
c. EAN-8/EAN-13, BookLan dan EAN Suplemental.
Gambar 2.16. Barcode EAN-8/EAN-13, BookLan dan EAN Suplemental
EAN atau sistem European Article Numbering (atau JAN di Jepang), adalah versi Eropa dari UPC. Itu digunakan
d. CODABAR.
Gambar 2.17. Barcode CODABAR
CodaBar adalah simbology yang digunakan untuk menkodekan karakter-karakter sebagai berikut : 0123456789-$:/.+ABCD. CodaBar biasa digunakan pada
40 -
perpustakaan, bank darah, dan bisnis pengiriman barang. Klasifikasi simbology Barcode berdasarkan kapasitas data, sebagai berikut:
Tabel 2.1. Klasifikasi simbology Barcode
41 -