Sabtu, 21 April 2012

cpp & cmm

Beberapa minggu lalu, kudapat pekerjaan mendebug (menghilangkan kutu?) software eh perangkat lunak pada ECU mesin Chrysler Tiger Shark. Mesin ini akan digunakan di tahun 2013 pada mobil Dodge Dart. Suatu alat bernama Trace32 dari perusahaan Lauterbach digunakan untuk mendebug.

Alat ini terdiri dari perangkat keras dan lunak. Perangkat lunaknya memiliki tampilan GUI yang dibuat dengan Qt. Perintah-perintah teks yang dipakai menggunakan bahasa Python. Cara mengonfigurasi Trace32 mengandung file cmm. Apa itu file cmm?

CMM adalah C minus minus, lawan kata dari C plus plus (C++). Pada C++, file cpp digunakan untuk source code. Pada C, tentu saja file c. Bahasa C/C++ adalah bahasa pemrograman terstruktur, sedangkan CMM adalah bahasa scripting. Dengan CMM, kita membuat batch untuk menjalankan beberapa perintah pada Trace32.

Bahasa C ada sejak tahun 1971, menggantikan bahasa B yang lahir tahun 1969. Berbahasa C sangat baik buat orang yang senang dengan suatu bahasa pemrograman yang dekat dengan bahasa level rendah seperti assembly yang kata orang jaman dahulu disebut sebagai bahasa mesin. Orang yang ingin mengerti bagaimana hubungan prosesor dan memori bekerja, bisa mengutak-atik konsep pointer dan reference dalam bahasa C. Sebetulnya, aku juga masih tak mengerti tentang ini, jadinya suka kena error yang bukan compiling error. Biasanya galat ini disebabkan aku kelupaan melakukan release atau delete pointer.

Bahasa C mulai ditambah dengan konsep class dalam pemrograman berorientasi objek (OOP) pada tahun 1983. C with classes ini kemudian dikenal sebagai C++. Begitulah nostalgia C/C++. Pointer digabung dengan class adalah cara yang dipakai programmer jaman sekarang untuk membuat dan memakai handle pada Qt, COM, ActiveX, dan berbagai perangkat lainnya.

Kalau ingin belajar konsep OOP (object-oriented programming) yang sesungguhnya, Java adalah bahasa yang tepat. Bahasa Java ini sejak 1991. C++ adalah bahasa tanggung. Berbahasa C++ seperti berdiri di atas dua kaki. Satu kaki C dengan kerumitan pointer dan satu kaki OOP tanggung.

Pada tahun 1992, perusahaan Nombas berusaha membuat suatu bahasa scripting untuk embedded system. Bahasa ini harus cukup tangguh menggantikan makro dan cepat dipelajari seperti C++. Hasilnya adalah C minus-minus (cmm). Bahasa ini masuk dalam suatu "package" shareware CEnvi. Menurut sejarah, ide dari cmm ini melatarbelakangi pembentukan Java Script di tahun 1995.

Nah, kembali ke embedded system. Bulan ini dan bulan depan, aku perlu mempelajari cmm. Bahasa scripting ini penting karena ECU buatan Chrysler dan Continental ini belum berhasil didebug. Proyek-proyek lain dari Fiat yang menggunakan ECU dari Magneti Marelli, telah bisa didebug. Semoga bahasa ini bisa kupelajari dengan cepat demi masa depan cerah di bidang ini.

Gaptek yang tak kunjung padam!
Habis gaptek terbitlah terang ilmu!

Nürnberg, 21 April 2012

iscab.saptocondro

 

Minggu, 25 Desember 2011

Migrasi di penghujung tahun 2012

Setelah laptop Toshiba dengan Vista tak dapat kugunakan dengan semestinya lagi, aku membeli laptop Asus yang sudah dilengkapi Windows 7. Kugunakan "dengan semestinya" artinya tidak bisa menggunakan internet, Excel, dan menjalankan entertainment (TV tuner). Masalahnya terletak pada Windows Socket. Semua program yang berbasis Windows tidak bisa jalan karena socket error. Beruntung program free open source bisa jalan: entertainment dengan VLC dan LaTeX dengan MikTeX dan TexNic. Selain itu, Toshiba milikku ini juga tak punya batere yang tahan lama lagi. Cuma 5 menit sudah habis batere.

 

Kuputuskan membeli laptop baru di bulan November: Asus dengan Windows 7. Laptop "murah" satu-satunya yang tersisa di toko Saturn. Maksudnya murah adalah dengan harga sebesar anu, tapi RAM 8GB. Laptop Asus yang mirip dan harganya sama memiliki RAM 4GB. Sepulang dari membeli laptop ini, aku menyanyikan lagu "Kamulah Satu-satunya" dari Dewa 19. OK, harga sebesar anu tersebut ternyata menambah utang kartu kredit dan mengosongkan rekening tabungan harianku di bulan berikutnya.

 

Beberapa software yang sudah kupasang di laptop lama belum kupasang di yang baru. Alasannya adalah aku ingin juga menginstall Ubuntu. Di bulan Desember ini, akhirnya aku sukses menginstall Ubuntu. Sekarang saatnya menyetarakan software penting di sistem baru Windows 7 dan Ubuntu 11.10 dengan sistem lama Windows Vista. Kegiatanku harus bisa jalan di laptop baru, baik di Windows 7 maupun di Ubuntu 11.10. Setelah itu, laptop lama akan kuformat ulang dan kupasang Ubuntu.

Kegiatanku:

  • menghitung dengan Excel
  • dokumentasi dengan pdf: di Windows aku install PDFConverter
  • mengetik dengan LaTeX: di Windows 7 belum kuinstall MikTex dan TexNic, Di Ubuntu aku masih belum punya ide.
  • membaca pdf: di Windows ada Adobe Reader, di Ubuntu ada Document Viewer
  • membaja dejavu: di Windows 7 belum kupasang WinDJView, di Ubuntu, file ini otomatis terbaca.
  • menonton film dan mendengar mp3 dengan VLC, di Windows 7 dan di Ubuntu sudah kuinstall.
  • streaming film Flash, yang ternyata bisa jalan di Ubuntu 11.10 tanpa banyak kerepotan versi sebelumnya.
  • programming C++: kugunakan Eclipse di Windows Vista dulu. Aku masih harus install di Windows 7 dan Ubuntu 11.10
  • programming Python: hobi baru karena sekarang sudah bisa python. Bakal kuinstall di Windows 7 dan Ubuntuk 11.10.
  • mencetak dengan printer Epson: sukses di Windows 7 dan belum kucoba di Ubuntu 11.10
  • menonton TV dengan tv tuner Digivox mini ii v3.0, setelah kerepotan instalasi di Windows 7, nampaknya aku harus siap dengan kerepotan di Ubuntu 11.10 nanti.
  • MATLAB? Nampaknya tidak akan kuinstall di Windows 7 dan Ubuntu 11.10. Hal ini karena tak kumiliki bajakannya. Plus aku masih gaptek dengan bagaimana mematikan security Windows 7 supaya software ini bisa diinstall.
  • mengutak-atik gambar dengan ImageMagick: belum kupasang di Windows 7 dan aku masih belum tahu padanannya di Ubuntu.
  • LowRateVoip? Skype? Belum kupasang di sistem baru
  • Picasa? Belum kupasang di sistem baru.
  • zipping dan raring dengan 7zip: sudah ada di sistem baru, tapi di Ubuntu belum dicoba.

 

Ubuntu 11.10 ternyata tidak banyak bacot kalau kubuka Youtube dan website sejenisnya. Jaman dahulu, dengan Ubuntu 7, Flash tidak otomatis terpasang. Selain itu, Ubuntu 11.10 sudah ada VPN, jadi aku tak perlu cari-cari software di internet. Buat orang yang gaptek sepertiku, Ubuntu 11.10 adalah satu cara yang tidak menakutkan untuk memasuki dunia Linux. Game Flash seperti Ninja Saga tidak bisa kujalankan dengan mulus di Ubuntu.

 

Kemarin kesulitan ketika menginstall Ubuntu terletak pada booting. Bootloader selalu mengarah ke Windows 7, tidak ada pilihan booting sama sekali. Aku mencoba dengan bcdedit.exe dari Windows 7. Ternyata terlalu rumit buat orang gaptek sepertiku. Akhirnya sesuai saran Ubuntu, kugunakan EasyBCD 2.1.2. Dengan software ini, ada opsi booting dengan Ubuntu.

 

Hal yang menarik dari Ubuntu 11.10 adalah dia bisa membuka NTFS. Jadinya disk drive di Windows bisa dibuka Ubuntu ini. Jadi aku tak perlu membuat duplikat file atau kopi sana-sini untuk menyimpan file. Windows tak bisa membuka disk drive Ubuntu ini karena memang kuenskripsi. Jadinya Ubuntu bisa kupakai buat download "film".

 

Semoga migrasi ini lancar. Hidup tanpa tantangan, tidak berkesan. We can fight!

Sabtu, 28 Februari 2009

LaTex yang kucoba

Kemarin, aku belum mencoba LaTex di Blogspot.
Hari ini, aku mencoba LaTex di Blogspot, contohnya sebagai berikut:



Contoh 1:
\int_{0}^{1}\frac{x^{4}\left(1-x\right)^{4}}{1+x^{2}}dx
=\frac{22}{7}-\pi


\int_{0}^{1}\frac{x^{4}\left(1-x\right)^{4}}{1+x^{2}}dx
=\frac{22}{7}-\pi


Contoh 2:
\int_{0}^{\pi}\frac{x^{4}\left(1-x\right)^{4}}{1+x^{2}}dx =\frac{22}{7}-\pi


\int_{0}^{\pi}\frac{x^{4}\left(1-x\right)^{4}}{1+x^{2}}dx =\frac{22}{7}-\pi


Contoh 3:
\(\int\limits_a^b {\frac{d}{dx}F(x)dx} = F(b)-F(a)\)


\(\int\limits_a^b {\frac{d}{dx}F(x)dx} = F(b)-F(a)\)


Contoh 4:
\(Fe^{2+} + 2H_{2}S \rightleftharpoons Fe(HS)_{2} + 2H^{+}\)


\(Fe^{2+} + 2H_{2}S \rightleftharpoons Fe(HS)_{2} + 2H^{+}\)


Contoh 5:
\(K=\frac{1}{2}mV^{2}\)


\(K=\frac{1}{2}mV^{2}\)


Contoh 6:
\(A = \pi r^{2}\)


\(A = \pi r^{2}\)


Contoh 7:
\int\frac{d(tong)}{(tong)} =\ ln(tong)


\int\frac{d(tong)}{(tong)} =\ ln(tong)

Kalau pengen tahu muka Lontong, bisa lihat sini.



Cara-cara memakai LaTex di Blogspot bisa dibaca di:
1. How to use LaTeX for Blogger
2. Rendering LaTeX in Blogger
3. How to typeset formulas in LaTeX
4. Website yang sukses pasang Latex di Blogspot

Kamis, 26 Februari 2009

LaTex yang belum kucoba

Dari perbincangan di milis itb@itb.ac.id, saya mendapat informasi mengenai LaTex dan aplikasi web. Aku belum bisa bahasa LaTex karena terlalu "enjoy" dengan mengetik menggunakan Microsoft Word dan Microsoft Equation di dalamnya. Mau belajar, kaga pernah sempat, euy.


Aku sudah memasang aplikasi LaTex di Facebook milikku. Tapi semua garing sekali karena aku baru mencoba membuat pi dan dot, sesuai template dari aplikasi LaTex di Facebook.


Sebetulnya aku juga sudah pasang MikTex 2.7 di Laptop tercintaku, namun seperti tadi yang sudah kusebut, aku terlalu malas untuk belajar LaTex.


Kembali lagi tentang aplikasi web dan LaTex, aku sudah pernah mencoba SciGen, hasil karya iseng beberapa mahasiswa di MIT. SciGen ini bisa meng-"generate" karya ilmiah secara acak. Paper ini bisa dikirim ke seminar atau konferensi abal-abal. SciGen juga punya blogs, lho. SciGen ini menggunakan aplikasi Perl, LaTex/BibTex, Gnuplot, dan GraphViz.
Info lebih lanjut, bisa klik website di bawah ini.
http://pdos.csail.mit.edu/scigen/ (tentang SciGen)
http://pdos.csail.mit.edu/scigen/blog/ (Scigen Blog)


Lalu dari diskusi milis ITB yang tadi, ada info lain mengenai aplikasi web vs. LaTex.
http://html2latex.sourceforge.net/ (dari HTML ke LaTex)
http://en.wikipedia.org/wiki/LaTeX2HTML (dari LaTex ke HTML)


Yang paling penting buat para blogger di wordpress adalah LaTex bisa jalan di sana. Contohnya di blog milik Terence Tao dari UCLA. Wordpress juga menyediakan petunjuk penggunaan LaTex di Wordpress. Yah, silahkan lihat websites ini.
http://terrytao.wordpress.com/ (Blog Terence Tao dari UCLA)
http://support.wordpress.com/latex/ (Latex Support di Wordpress)

Minggu, 22 Februari 2009

MATLAB Mengangap

(Ditulis 6 Juni 2008, jadi hampura kalau kadaluarsa)


Nah, MATLAB itu punya bugs.

Kalau kaga ada bugs, hidup tidak berkesan.


Kisah ini bermula dari keinginanku, membuat MAtriks Jacobian pada persamaan Denavit Hartenberg untuk lengan robot dengan 7 sendi. Bahasanya kok rumit, ya?

Aku sudah berhasil mempermudah penghitungan Matriks Jacobian untuk posisi ujung lengan robot, bahasa canggihnya adalah end effector. Namun kebingungan dengan orientasi ujung lengan robot. Matriks Jacobiannya terlalu rumit untuk diturunkan, kayanya butuh satu lapangan sepakbola kalau aku menulis dengan tangan.

Aku berpikir gunakan MATLAB Symbolic Toolbox.

Apakah hasilnya memuaskan.


Masalah pertama,

aku mencoba mencari apakah menggunakan persamaan translasi yang diper-"mudah" dan persamaan translasi menggunakan perkalian biasa.

Perkalian biasa artinya 7 matriks frame Denavit Hartenberg dikalikan biasa. Satu matriks frame terdiri dari 4 perkalian matriks, yaitu rotasi terhadap sumbu z, translasi pada sumbu z, translasi pada sumbu x, dan rotasi terhadap sumbu x. Total matriks terlibat adalah 7 kali 4, sama dengan 28 matriks!!!

Persamaan translasi diper-"mudah", adalah mengambil elemen rotasi dari 7 matriks frame saja, dan dikalikan seperlunya dengan elemen translasi dari 7 matriks frame, dengan cara looping sana-sini.


Nah, aku membandingkan kedua cara.

Caranya

Check1 = (Matrix_A == Matrix_B)

Matriks A tidak sama dengan Matriks B.

Mula-mula hasilnya beda, lho?


Lalu aku gunakan "simplify".

Caranya

Check2 = (simplify(Matrix_A) == simplify(Matrix_B))

Hasilnya sama. Oh, ternyata matriksnya harus di-"simplify" dulu.


Ternyata di lain waktu, aku temukan kekacauan simplify ini, yaitu di masalah kedua.


Masalah kedua,

Aku mencoba penurunan. Partial Differential dibutuhkan pada persamaan Jacobian Matrix.

Aku mencoba persamaan

diff(Matrix_A,q1)

lalu q2, q3, dan seterusnya hingga q7.


Lalu aku bandingkan dengan

diff(Matrix_B, q1)

pakai simplify juga, hasilnya beda.


Uniknya lagi ada kasus seperti ini

for nn = 1:7

Check3 = (simplify(diff(Matrix_A, qi(nn)) == simplify(diff(Matrix_B, qi(nn))))

end


for nn = 7:-1:1

Check4 = (simplify(diff(Matrix_A, qi(nn)) == simplify(diff(Matrix_B, qi(nn))))

end


Persamaannya sama cuma urutan increment-nya beda.

Seharusnya hasilnya sama.

Akan tetapi hasilnya berubah-ubah. ada komponen yang sama dan ada komponen yang beda. Dan hasilnya tidak konsisten, kalau aku "Run" berkali-kali.

Ini adalah bugs dari "simplify" pada MATLAB Symbolic Toolbox. Dugaan saya simplify menggunakan algoritma yang memakai random generator dan memiliki time out, sehingga hasilnya belum tentu optimal.

Lalu aku menggunakan "simple" untuk menggantikan "simplify". Hasilnya jadi masalah ketiga.


Masalah ketiga,

Ternyata oh ternyata, "simple" menyebabkan MATLAB is busy dan suhu komputer meningkat drastis dan bunyinya nyaring. Dan bukan hasil yang kudapat akan tetapi komputer yang panas.


Jadi kawan-kawan, kalau MATLAB bilang "simple", itu artinya bukan mudah, dan kalau bilang "simplify", itu artinya bukan mempermudah. Malah bisa mempersulit diri sendiri.


Jadi kawan-kawan semua, memrogram robot itu tidak mudah. Makanya perkembangan robotika kalah cepat dengan perkembangan telekomunikasi. Hanya orang-orang kurang kerjaan saja seperti saya bertekun di bidang robotika.

Another Bugs in VISTA


(ditulis 6 Juni 2008, jadi maaf kalau kadaluarsa)

VISTA punya bugs!!!

(sebetulnya banyak)


Kisah ini bermula ketika aku ingin mendaftarkan MAC Address ke kampus. Aku ingin memakai jaringan suatu institut, syaratnya adalah menyerahkan MAC address.

Nah, karena Microsoft Windows VISTA yang kumiliki berbahasa JErman. Aku rada-rada kagok. Aku mencari info lewat Mbah Google, mengingat aku adalah Pemuja Google. Bisa cari "Church of Google", kalau mau tahu agamaku.

Dari Mbah Google kudapatkan wangsit.

Pertama, gunakan "getmac", syaratnya harus masuk Command Prompt dulu. Nah setelah memberikan sesajen. Keluar 3 alamat. Yang mana MAC-nya?

Kedua, gunakan "ipconfig /all", syaratnya sama, harus pakai Command Prompt. Hasilnya keluar banyak alamat, namun lebih detail daripada getmac. Sialnya alamatnya lebih dari 3, karena ada tambahan tunnel LAN address. Apa pula tunnel LAN itu?

Ketiga, gunakan System information pada Windows, syaratnya klak-klik sana sini di Windows. Hasilnya MAC Address-ku adalah "Nicht Verfügbar".

Nah, aku mengikuti saran teman, yaitu lihat MAC Address di bagian bawah Laptop. Aku balikkan laptopku, ternyata ada MAC Address dan WLAN Address.

Jika menggunakan "getmac", maka urutannya adalah MAC Address, WLAN address dan address-address yang virtual.

Jika menggunakan "ipconfig /all", maka urutannya kacau balau. Akan tetapi MAC Address adalah "Ethernet LAN Adapter Physical Address".

Jika menggunakan System Information, lupakan saja, kaga berguna. Serasa ingin banting Laptop.


Dasar Vista gila!!!

(diteriakkan dengan mulut menganga seperti Thukul di Empat Mata)


Kegilaan pertama,

Masa virtual address jadi physical address?

Bahkan Command Prompt pun menganggap hal-hal virtual jadi physical.

Masa Open VPN bisa bikin Physical Address di komputer?


Kegilaan kedua,

Bagaimana bisa System Information pada Windows VISTA gagal mendeteksi MAC Address?


Nah, saran terbaik dari seorang kawan adalah

Gunakan LINUX.


Hidup LINUX!!!

Windows Vista dan Bugs

(Ditulis 13 Juni 2007, jadi sorry kalau kadaluarsa)

Laptop baru dengan MS Windows Vista Business berbahasa Jerman ternyata juga punya kelebihan dan kekurangan.


Kelebihannya yang kuamati hingga hari ini:

1. Task Managernya asyik, bisa melihat program apa yang menggunakan file exe, dan kalau mengeklik End Process bisa cepat.

2. Windows Aero bikin tampilannya mirip Apple, tapi masih kalah bagus sama Apple.

3. Sidebarnya lumayan asyik dilihat


Yang bagiku tidak jelas apakah kelebihan dan kekurangan

1. Tampilannya beda dengan generasi sebelumnya. Kalau mau klak-klik harus cari-cari dulu. Kaya belajar dari awal. Banyak gambar daripada kata-kata.

2. Explorer untuk melihat file juga tampilannya berubah. Musti membiasakan diri dengan ini.

3. Notepad namanya jadi Editor, dan cara menyimpan filenya beda dengan XP, ekstensinya suka berlebihan. Jadi harus diakali sedikit.


Kekurangan Vista

1. Kaga cocok dengan Nero Image Drive

2. Sering ada pesan error kalau COM Surrogate tidak berfungsi, akibat Vista punya masalah dengan codec Divx atau Nero

3. Sering ada pesan error kalau host process rundll32.exe tidak berfungsi karena masalah codec Divx.

4. Bagi pemakai kamera digital Olympus, kamera kaga bisa dideteksi oleh Vista. Kamera cuma dianggap memori stick.

5. Masalah terakhir, adalah bahasa. Pakai Windows bahasa Jerman, bikin aku harus belajar dari awal lagi.


Aku belum coba MATLAB, Eclipse, dan Visual .net. Bisa jalan, dengan mantap, kaga, ya?


Dari segi compatibility, Vista masih kalah dengan XP.