Membuat Program Sederhana Fuzzy

Sudah lama tidak menulis tentang soft computing, maklum kesibukan luar biasa karena kuliah. Kebetulan kali ini saya mengambil mata kuliah Artificial Intelligent and Neuro-Fuzzy. Materi ini membahas seluruh ilmu soft computing, dimulai dari syaraf tiruan, fuzzy, algoritma genetika, hingga turunannya seperti particle swarm, simulated annealing, dan lain-lain. Kali ini saya hanya akan meneruskan tulisan saya yang dulu dengan menambah satu contoh aplikasi, mengingat banyak yang membutuhkan.

Untuk menjalankan aplikasi ini, letakkan di folder kerja Anda (current directory) setelah diekstrak, kemudian jalankan dengan mengetik nama file *.m di command window. Untuk melihat dan mengutak-atik script dengan mengetik edit <nama file *.m> serta untuk melihat alur logika fuzzy dengan mengetik fuzzy <nama *.fis>. Selamat mencoba.

beasiswa

Menghidupkan Alarm Ketika Bateri Laptop Mau Habis

Terkadang kita ingin mengetahui baterai laptop yang kita gunakan mau habis karena kita tidak selalu di depan laptop, misalnya ketika sedang membaca sambil mendengarkan musik di laptop. Tentu saja menjengkelkan ketika tiba-tiba laptop hibernate karena baterai mencapai batas kritis. Banyak yang karena laptopnya masih baru dan sayang dengan baterainya, mengandalkan cara cabut pasang baterai laptop, walaupun ada yang mengatakan untuk baterai jaman sekarang jika sudah penuh, baterai akan berhenti mengisi secara otomatis. Tetapi tetap saja menurut saya baterai tetap jebol bukan karena dicas over tetapi karena kelemahan litium adalah suhu.

Pertama-tama kita setting terlebih dahulu sound di windows 7 kita. Arahkan mouse di desktop / screen, klik kanan dan pilih personalize.

Kemudian Anda akan masuk ke menu personalize. Di bagian bawah ada setting untuk sound. Klik sehingga muncul jendela setting untuk sound.

Jika sudah maka Anda tinggal menyiapkan nada dering yang akan muncul ketika baterai lemah dan atau kritis. File yang dipilih harus berekstensi *.wav. Gunakan software perubah jenis file suara, atau masuk ke situs ini untuk mudahnya: http://audio.online-convert.com/convert-to-wav.

Jangan lupa untuk menekan tombol “Apply” jika sudah di test dan mengeluarkan suara.

Untuk alarm ketika pengecasan mendekati 100% agar mencabut kabel power, bisa lihat postingan berikutnya. Selamat mencoba.

Awal yang Baru di Jurusan Information Management

Setelah kesulitan menghadapi perkuliahan ilmu komputer (computer science) semester yang lalu, dengan berat hati saya beralih ke manajemen informasi (information management) dengan materi kuliah seperti yang telah saya ambil ketika S2 yang lalu yaitu Information System Design and Management (ISDM) dan Decision Support Technology (DST) yang berturut-turut mirip System Analysis and Design dan Decision Support System (DSS). Sehingga saya tinggal memperdalam lagi karena tuntutan yang tinggi di Asian Institute of Technology (AIT) terutama untuk mahasiswa doktor harus minimal B+.

Satu lagi mata kuliah yang saya ambil adalah Artificial Intelligent and Neuro-Fuzzy, yang merupakan mata kuliah untuk jurusan Mechantronic di fakultas Industrial and Sistem Engineering (ISE). Walaupun saya sudah pernah belajar dan bahkan tesis saya dulu adalah tentang syaraf tiruan, tetapi materi yang diajarkan sangat matematis. Untungnya saya hanya tertinggal dua minggu, jadi dapat segera menyesuaikan diri dan ternyata isi dari kuliah adalah penjelasan matematis dari toolbox-toolbox yang saya sering gunakan di Matlab. Matematis yang terlibat hanya seputar aljabar dan matriks. Semoga saya bisa mengatasi mata kuliah ini karena mata kuliah ini andalan saya untuk disertasi nanti.

Dosen pengampunya adalah Dr. Manukid, alumni dari universitas tokyo Jepang. Teknik mengajarinya sangat sederhana dan cepat, jadi harus membaca terlebih dahulu sebelum mengikuti perkuliahannya.

Bhinneka Tunggal Ika … Kita Tentu Tidak Lupa

Ketika saya masih di sekolah dasar, di depan kelas selalu tergantung sebuah gambar burung dengan gagahnya melebarkan sayapnya. Waktu itu saya diperkenalkan dengan lambang nagara saya burung garuda pancasila. Dengan simbol sila-sila dalam perisai yang tergantung di lehernya, dan bulu-bulu yang melambangkan hari kemerdekaan, lambang itu terasa gagah menurutku. Yang unik adalah cakar di kaki yang menggenggam semboyan terkenal “Bhinneka Tunggal Ika”, yang merupakan selogan Mpu Tantular. Artinya adalah berbeda-beda tetapi tetap satu.

Tidak ada satupun siswa yang melecehkan, meledek, ataupun tidak setuju terhadap lambang negara Indonesia itu. Antara satu anak dengan anak yang lain tidak ada sama sekali perbedaan. Waktu itu saya tinggal di Jakarta Utara. Wilayah yang menurut saya cukup heterogen. Saya ingat salah seorang teman saya keturunan India, dengan agamanya yang Hindu. Saya kagum dengan kemampuannya bermain basket yang lincah, serta saya selalu kalah ketika pelajaran prakarya membuat patung dari tanah liat. Wilayah saya masuk kecamatan Tanjung Priok, wilayah dengan basis Islam yang fanatik. Mungkin pembaca pernah mendengar kasus tragedi priok tahun 80-an yang hingga tulisan ini dibuat masih menjadi misteri. Yang anehnya walaupun di basis Islam yang keras, toleransi tetap berjalan dengan baik. Anehnya, di wilayah saya yang hanya memiliki umat kristiani waktu itu yang kurang dari 10 orang, tetapi penduduknya mengijinkan dibuatnya gereja HKBP. Bayangkan jika saat ini proses pembangunannya, penduduk tidak bakal mengijinkan. Ternyata beda jaman, beda juga pemahamannya. Entah lebih baik atau lebih buruk, keputusan ada di tangan kita.

Sesekali saya bermain dengan rekan saya, namanya Johan Manto. Hemm .. sungguh di luar dugaan, saya masih mengingat namanya, ada di mana dia sekarang. Keluarganya adalah penganuh katolik yang taat. Sempat saya mampir ke rumahnya dan di ajak makan oleh ibunya yang baik hati. Sebelum makan mereka mengepalkan kedua tangannya, kemudia membaca doa sebelum makan ala nasrani. Tidak ada paksaan atau ajakan untuk beralih ke agama mereka, demikian pula saya tidak pernah mengajaknya ataupun mengatakan agama buruk, dan agama saya lebih baik. Walaupun tentu saja tiap pemeluk kepercayaan pasti beranggapan agama dan kepercayaannya lebih baik.

Saya ingat waktu itu wilayah kami merupakan wilayah konflik akibat banyaknya premanisme. Mungkin yang seumuran saya pernah mendengar adanya lagu berjudul preman yang dibawakan oleh Ikang Fawzi. Lagu yang cukup populer waktu itu memang menggambarkan kondisi sesungguhnya waktu itu. Namun dengan sikap keras era Suharto dengan kebijakan PETRUS-nya, banyak preman-preman yang jera dan alih profesi. Setelah preman tidak ada, saya merasakan udara sejuk yang tidak dapat saya jumpai hingga saat ini. Udara sejuk itu adalah rasa saling menghargai sesama manusia. Antara satu suku, agama, adat, dan lain sebagainya bisa langsung berbaur dan bergaul dengan baik. Yang saya bingung mengapa akhir-akhir ini sikap seperti itu seperti punah?

Masuk ke jenjang yang lebih tinggi, masih saya rasakan udara sejuk itu. Sepertinya di tempat lain sekitar kami juga demikian. Bulan puasa, dan hari raya idul fitri merupakan perayaan yang sungguh besar, benar-benar hari raya. Tidak ada kebahagian yang melebihi hari raya idul fitri dan bulan puasa ketika saya kecil. Beda dengan saat ini, dimana bulan puasa dan hari raya seperti sambil lalu saja. Entah mengapa, saya sendiri masih bingung. Islam yang kami anut waktu itu sangat berbeda dengan saat ini, mungkin waktu itu tidak ada internet, atau pun siaran tv langsung dari Mekkah. Tidak ada nuansa arab dalam pelajaran yang saya peroleh, semuanya murni dari alquran dan beberapa hadits, yang saya tidak tahu diriwayatkan oleh siapa. Walaupun beberapa kiyai tiap tahun pergi haji, tetap saja ketika kembali dan mengajar ngaji tidak 100% menggunakan atribut-atribut arab. Tetap saja mereka sama dengan penduduk yang lain, dengan sarung dan peci, cukup. Celana panjang biasa saja, tidak menggantung hingga 1/3 kaki, walaupun bagi saya tidak menjadi masalah. Jenggot pun tumbuh sekedarnya, tidak ada usaha untuk memanjangkannya dengan minyak penumbuh rambut atau sejenisnya. Sesekali pernah sebelum saya pindah ke Yogyakarta, ketika sedang bermain tenis, dua orang dengan jenggot panjang dan celana menggantung menghampiri saya dan teman saya, saya ingat namanya Laode Syainsyah. Untungnya ada facebook, saya jadi masih bisa berkomunikasi. “Anda beragama Islam?”, salah seorang bertanya ke kami, “Ya, bang”, jawab saya. Ayo ikut ke masjid, ambil sarung. Terus terang dengan wajah tegasnya saya ketakutan. Seorang mengikuti teman saya dan satu lagi mengikut saya ke rumah. Sampailah kami di masjid tempat saya mengaji. Ternyata mereka merupakan tamu yang akan menginap beberapa hari untuk dakwah. Tampak pula teman-teman saya yang lain yang ketangkep dan dipaksa ke masjid. Seperti biasa saya diberi tausyiah yang sedikit aneh. Dia mengatakan bahwa membunuh itu dosa kecil, sedangkan tidak shalat itu dosa besar. Saya yang berumur 12 tahun waktu itu secara logika menolak, tapi saya diam saja, dari pada benjol. Kemudian dia menerangkan sebuah surat pendek Aroaitallazi .. dst, yang tentu saja saya hafal. Tetapi anehnya dua ayat terakhir sepertinya dia lupa. Saya dan teman saya saling berpandangan dan ingin membenarkannya takut, akhirnya kami manggut-manggut saja seolah baru pertama kali mendengarnya. “Mau ke mana? Kata salah seorang yang jadi pemimpin rombongan itu kepada rekan saya yang mau keluar, “Mau ke toilet pa”, katanya dengan ketakutan, “ya, jangan lama-lama”. Lama saya perhatikan, dia tidak balik-balik. Kurang ajar, dalam hatiku, ternyata dia kabur. Si penceramah melihat saya yang sesekali melihat jam dinding, dan menegur saya, agar fokus. Tentu saja saya khawatir karena sebentar lagi saya harus masuk sekolah karena saya masuk siang ( smp kelas 1). Ketika shalat dzuhur dimulai, mohon maaf, saya harus kaburrrrrr.

Waktu terus berjalan dan saya SMA dan kuliah di Yogyakarta, tempat saya dilahirkan. Saya tinggal menumpang di rumah kakek nenek saya sebelum pindah kos karena letaknya yang jauh dari kampus. Sejak saat itulah mulai terasa perbedaan-perbedaan yang secara perlahan mengusik Bhinneka Tunggal Ika negara kita. Di kota gudeg, ternyata keberagaman lebih banyak lagi. Saya melihat sendiri rombongan anak muda dengan pakaian yang unik ala Bali yang akan bersembahyang. Bahkan di tempat kos saya ada satu area dengan tulisan Kundalini Yoga, yang mengajarkan meditasi ala Budha. Bahkan kakek tiri saya sendiri menganut ajaran apa saya tidak mengerti, katanya sih warisan dari majapahit. Tapi anehnya mereka tetap bisa berjalan seirama. Tetapi saya merasakan adanya suatu gerakan entah apa namanya yang secara perlahan-lahan ingin menyeragamkan segala sesuatu. Saya tidak berani menyebutkan itu aliran apa. Sungguh sesuatu yang menurut saya sangat berbahaya, karena sudah merasuki anak-anak muda terpelajar, bahkan yang kuliah di tempat saya, Universitas Gadjah Mada. Sempat selesai dari KKN, kami dan rekan sesama KKN ingin mengadakan pertemuan, seperti reuni kecil-kecilan. Ketika Maghrib, saya dan rekan saya, namanya Six Fatmanto, seorang yang taat beragama, saya lihat dari laporan KKN yang detil dan tidak berbohong seperti saya (walaupun menurut saya sih nyusahin diri sendiri aja), ketika akan pulang dihalangi oleh seorang mahasiswa muda, yang menurut saya ingin berdakwah. Tentu saja bagi saya baik, hanya saja caranya yang terkesan menggurui itu yang saya kurang suka. Bagaimana mungkin mahasiswa yang sebentar lagi wisuda diceramahi oleh mahasiswa baru, mengkritik saya yang menggunakan celana Jean, dan seterusnya. Ketika dia mengucapkan satu kalimat, “Terus terang saya tidak yakin apakah saya bisa masuk surga, semua itu kehendak Allah”, itulah saat yang tepat bagi saya, he he. “Baik ya dik, karena kita sama-sama tidak yakin bakal masuk surga, saya pamit dulu ya”. Kalimat saya di luar dugaannya, dia hanya terpaku ketika saya tinggalkan.

Saya tidak merasa cerdas, pintar, atau apapun sebutannya. Entah berapapun kapasitas otak kita, tidak seharusnya kita melupakan pesan Rasulullah, agar membaca. Bahkan malaikat jibril saja gemas dengan kekasih Allah ketika mengatakan tidak bisa membaca. Apalagi terhadap kita, bisa-bisa nanti kita jadi bulan-bulanan malaikan di alam nanti. Bacaanpun tidak pilih-pilih, baca saja semua, kita kan punya otak dan logika. Jangan sampai kita hanya boleh membaca aliran tertentu saja karena jika membaca aliran yang lain takut akan terpengaruh. Kalo kita baca A dan B dan menurut kita B lebih baik, ya tentu saja A harus instrospeksi dong. Jangan sampai kita memaksakan A dan melarang orang membaca B. Ada karikatur lucu:

Negeri Tetangga .. Thailand yang Unik

Berita kerusuhan di Thailand sudah tersebar hingga ke Indonesia. Tentu saja membuat cemas para orang tua yang anaknya sedang kuliah di sana, bekerja, dan sebagainya. Begitu juga keluarga dan sobat karib saya yang berada di Indonesia selalu menanyakan kondisi di sini, apakah seperti yang diberitakan di televisi?

(bbc.co.uk)

Sesungguhnya saya tidak begitu mengerti, tetapi karena banyak teman-teman kuliah saya yang orang Thailand, dan terkadang pengajar yang bukan orang asli sini kerap bertanya kepada mereka mengenai kondisi Thailand saat perkuliahan, saya sedikit banyak mengerti. Kondisi raja yang sudah berumur dan tidak begitu mencampuri lagi urusan pemerintahan, dan masalah-masalah lain yang berhubungan dengan sikap politik yang bagi partai oposisi menyimpang, menyulut pertentangan antara kubu kaos merah dengan kubu kaos kuning. Saya sendiri heran kenapa ada istilah warna seperti itu.

Ketika perdana menteri Thaksin jatuh dan melarikan diri, ternyata saat ini dikuasi pemerintahan dikuasai oleh Yingluck yang merupakan kerabatnya. Pemilu dimenangkan oleh Yingluck karena memang kebijakan Thaksin yang sejak dulu sangat mendukung pertanian. Mungkin sangat mirip dengan jaman Suharto dulu. Ketika Yingluck mengusulkan adanya undang-undang untuk pengampunan (mungkin ditujukan agar Thaksin dapat kembali ke Thailand dengan damai) muncullah protes keras dari kubu yang menjatuhkan Thaksin dulu. Saat ini terjadi dua demonstrasi antara kubu Yingluck (dari petani luar Bangkok) dan dari kubu oposisi (dari dalam kota Bangkok) yang jika sampai bertemu, sudah dapat dipastikan terjadi pertumpahan darah. Itu yang saya tangkap dari informasi sana sini. Saat tulisan ini dibuat, kerusuhan mereda karena Raja Bhumibol sedang ulang tahun yang ke-86.

(sindikasiberita.com)

Kondisi Geografis dan Budaya

Berbeda dengan Indonesia, Thailand sedikit unik. Seluruh sarana dan fasilitas terkonsentrasi ke ibu kota Bangkok. Tidak ada kota-kota besar seperti Bandung, Jogjakarta, Medan, dan kota besar lainnya selain Jakarta seperti di indonesia. Kebetulan saya sekolah di kampus yang terletak di pinggiran Bangkok. Dan memang saya merasakan ada kesenjangan antara kota dengan desa. Akan tetapi menurut saya bagus juga dari sisi budaya. Orang yang di luar Bangkok masih memiliki jiwa yang belum tercemar. Ketika menuju suatu Mall saya naik van (seperti angkot tetapi mewah, dengan AC dan kebersihan yang terjaga) dan yang membuat saya heran adalah ketika akan membayar, kita hanya meletakkan uang yang sudah tertentu harganya, kemudian nampan itu beredar di antara penumpang. Tidak ada kondektur, hanya seorang supir. Ketika semua selesai meletakkan uang untuk ongkos perjalanan ke nampan, sang supir pun sepertinya tidak menghitung lagi uang tersebut kurang atau tidak. Bayangkan jika ini diterapkan di Jakarta, uang yang beredar dijamin hilang.

Peran Raja

Saya pernah belajar geografi di sekolah, dan ketika mempelajari negara-negara ASEAN, saya sempat membaca negara Thailand, diman dipimpin oleh seorang raja dengan perdana menteri. Disebutkan juga Thailand merupakan satu-satunya negara yang tidak pernah dijajah. Di sini istilah dijajah berarti ditindas dan sumber daya alamnya dikuras habis oleh penjajah, sementara Jepang tidak bisa dibilang menjajah karena hanya menduduki untuk dijadikan basis pertempuran dengan sekutu, walaupun terkadang lebih kejam dari penjajah akibat kepepet dan harus menang dalam perang.

(Chiangmai-mail.com)

Salah satu hal yang ternyata menurut saya salah ketika mendapat pelajaran sejarah Thailand di sekolah adalah bahwa Thailand tidak dijajah karena memang kebetulan letaknya berbatasan antara jajahan Inggris di selatan dengan jajahan Perancis di utara. Masuk akal memang, tetapi ketika saya menelusuri situs-situs sejarah Thailand ternyata peran raja Chulalongkorn sangat penting ketika itu. Raja Chula merupakan raja yang disayangi oleh rakyatnya. Raja ini terkenal sebagai raja yang suka belajar dan berpetualang ke negara-negara lain. Dengan taktiknya silaturahmi ke negara-negara lain yang biasanya negara monarki juga, ketika Perancis dan Inggris akan menguasai Thailand, banyak bantuan dari sahabat-sahabat raja. Sesekali pernah Tsar rusia yang siap membantu jika diperlukan bantuan untuk menghadapi Perancis yang saat itu sudah menguasai Laos dan akan masuk ke Thailand. Jadi menurut saya alasan kenapa Thailand tidak dijajah karena letaknya yang berbatasan kurang tepat. Penjajah itu pintar, mengapa tidak dibagi dua saja Thailand? Biar sama-sama untung. Kalaupun memang sebagai negara pemisah, itu bisa saja taktik raja Chula yang cerdik. Toh, tetangganya, Kamboja, yang terletak di tengah-tengah juga jatuh ke tangan penjajah.

Pelajaran dari Negeri Gajah

Banyak hal-hal positif yang bisa diambil dari negeri ini dan diterapkan di tanah air. Thailand merupakan negara dengan mayoritas memeluk Budha dan menerapkan ajaran Darma setiap hari. Walaupun di kota masih kerap dijumpai pencurian, dan kejahatan lainnya, tetapi di desa-desa mereka masih mempercayai adanya hukum karma. Kadang saya malu dengan negara saya yang mengagung-agungkan Islam sebagai rahmatan lil alamin tetapi perilakunya jauh dari kemulian agama yang dia anut. Memang saya sendiri pun masih jauh dari sempurna. Tetapi jika menganggap diri kita lebih baik dari orang lain, bisa saja mendatangkan setan untuk menyelinap masuk lewat ajaran yang kita anut. Dengan memutar dalil-dalil bisa saja setan menyusup. Menghalalkan yang haram dengan alasan tertentu yang terkesan lebih urgen. Dengan adanya amalan-amalan tertentu yang menghapus dosa-dosa yang telah dibuat, menurut saya juga sangat memungkinkan syetan untuk menyelinap masuk. Masuk ke dalam relung-relung fikiran kita secara halus tanpa kita sadar. Dengan dalil-dalil tertentu, bisa saja saling membunuh karena merasa suatu ajaran menyimpang. Di sini, membunuh semut pun mereka enggan. Burung perkutut dan tekukur yang sering terdengar di sekitar kos tempat saya menginap bebas berkeliaran dan tidak ada yang berupaya untuk menangkapnya. Beda dengan kondisi di tanah air. Apapun yang bisa dijadikan uang, diambil tanpa pandang bulu, hutan yang kian gundul, pembakaran hutan untuk membuka lahan, pengeboran yang merusak lingkungan seperti di Lapindo, membuat malu jika didengar oleh anak cucu kita nanti, semoga. Ya, semoga anak cucu kita tidak memiliki pemikiran miring seperti pendahulunya.

(Perkutut liar)

Menurut saya, jakarta harus banyak belajar dari kota Bangkok. Kebersihan, jalur transportasi yang beragam, tata kota dan kedisiplinan warganya patut diacungi jempol. Budaya antri yang tinggi dengan kesabaran berkendara dapat dijumpai di mana-mana. Tidak seperti Jakarta yang penuh dengan klakson ketika macet, di Thailand walaupun macet, hampir tidak terdengar adanya suara klakson. Penyeberang jalan sangat dihormati. Ketika ada sebuah mobil akan keluar dan menuju jalan raya dan ada orang yang melintas, mereka cenderung menunggu pejalan kaki lewat. Jika dijumpai pejalan kaki yang berhenti karena melihat ada mobil yang akan keluar, dipastikan itu orang Indonesia (waktu itu saya J). Karena sudah kebiasaan sebagai orang Jakarta harus waspada, meleng sedikit ditabrak.

Keberhasilan dalam menanggulangi AIDS sungguh prestasi yang membanggakan. Bandingkan dengan negara kita yang saat ini secara mengejutkan katanya kita gagal mengatasi HIV/AIDS yang sudah berlangsung selama 7 tahun. Ketika pekan kondom yang kontroversial di tanah air berlangsung, justru Chiang Mai University Thailand melakukan riset dan mengatakan kondom tidak aman terhadap AIDS. Pori-pori kondom 400 kali lebih besar dibanding virus HIV itu sendiri. Kalaupun alasannya untuk penyakit kelamin jenis lain seperti sipilis yang berasal dari bakteri, toh penyakit itu sudah ada obatnya, beda dengan HIV/AIDS. (https://www.academia.edu/566646/RELIGIOUS_APPROACHES_TO_HIV_AIDS_PREVENTION_IN_THAILAND). Mungkin satu-satunya peran kondom adalah menghindari penderita HIV/AIDS melahirkan bayi yang HIV/AIDS juga karena kondom berfungsi sebagai alat KB. Jika saya perhatikan dengan iklan kondom untuk KB ketika saya sekolah tahun 90-an dulu (dengan selogan terkenal ya ya ya ..) justru lebih cerdas dan memahami benar fungsi kondom, dibanding saat ini yang memfungsikan kondom sebagai alat melawan HIV/AIDS dan justru membuat rasa aman bagi pelaku sex baik yang sudah mengetahui terjangkit HIV/AIDS maupun yang belum.

Untuk para pemimpin negeri ku, di tanganmu lah segala kebijakan bermula dan segala akibat (baik/buruk) akan kami tanggung bersama. Saya pun merasakan betapa berat bebanmu. Tapi jika engkau bergaul dan berdiskusi dengan orang yang tepat tanpa mementingkan kepentingan pribadi atau golongan, saya yakin Allah berada di sisi Anda.

Membuat Aplikasi Sederhana User Profile dengan Ruby on Rails

Tak terasa hampir tiga bulan saya kuliah Web Application and Engineering, dan kini saatnya penghakimannya, final exam. Soalnya lumayan sederhana, tetapi pertanyaan membutuhkan wawasan yang luas terhadap dunia web.

Soal: Anda diminta membuat sebuah welcome page sederhana yang harus login terlebih dahulu untuk masuk ke page tersebut dengan autentikasi devise (lihat tulisan sebelumnya). Setelah login Anda dapat melihat profil Anda dan bisa melakukan editing pada profile tersebut. Ada beberapa pertanyaan yang menurut saya levelnya masuk kategori expert, seperti melakukan checking dengan java baik dari sisi client maupun server, hingga integration test dan pengembangan ke arah RESTful. Oke, kita jawab dulu pertanyaan yang mudahnya. Kira-kira tampilan sederhananya seperti ini:

Jawab: Pertama-tama siapkan folder beserta databasenya (saya menggunakan database postgresql saat ujian dengan sistem operasi UBUNTU, tetapi untuk lebih sederhana, kita gunakan saja bawaan dari RoR yaitu SQLite3).

rails new final

Masuk ke folder final, untuk membuat aplikasi welcome page. Kita akan membuat tiga scaffold yaitu user, utama, dan tabel. Utama adalah page sederhana bertuliskan “Welcome” yang berisi link untuk melakukan setting profile.

Buat model user dengan atribut nama dan alamat.

rails g scaffold user nama panggilan

Kode di atas menghasilkan model user dengan atribut nama dan alamat, dan operasi diberikan oleh Scaffold (New, Show, Update, dan Delete). Bisa juga ditulis rails g scaffold user nama:string panggilan:string. Tetapi secara default, RoR akan memberikan struktur data string. Di sini sengaja tidak ditambahkan alamat karena di soal, alamat (address) disisipkan lewat mekanisme migrasi database.

Migrasikan menjadi tabel:

rake db:migrate

Arahkan folder ke project. Jalankan server.

rails server

Buka http://localhost:3000/users dan masukan satu data baru.

Buka kembali program Devise yang telah kita buat sebelumnya. Kita akan mengarahkan user ke menu utama ketika selesai login. Buat kontroller dengan nama utama.

rails g controller utama index

Di sini index merupakan method yang akan mengarahkan ke profil user tersebut, nama, email, alamat dan lain sebagainya. Tambahkan pada \app\config\routes.rb.

resources :tabel

tabel di sini maksudnya page profil yang bersangkutan. Buat juga lengkap dengan controller dan view

rails g controller tabel index

lakukan Migrasi

rake db:migrate

Berikutnya buka file \app\views\utama\index.html.erb dan isi dengan kode berikut (pahami maksudnya):

<h1>Welcome</h1>

<%= link_to ‘Lihat Profile-ku’, tabel_index_path %>

Sisipkan satu field baru (alamat) ke tabel users.

rails g migration add_alamat_to_users alamat:string

Migrasikan ke database:

rake db:migrate

Berikutnya pada file \app\views\tabel\index.html.erb tambahkan juga kode berikut:

<h1>USER PROFILE</h1>

<p>

<strong>Nama:</strong>

<%= current_user.nama %>

</p>

<p>

<strong>Email:</strong>

<%= current_user.email %>

</p>

<p>

<strong>Panggilan:</strong>

<%= current_user.panggilan %>

</p>

<p>

<strong>Alamat:</strong>

<%= current_user.alamat %>

</p>

<td><%= link_to ‘Edit’, edit_user_path(current_user) %></td>

Arahkan routes ke utama#index

root :to => ‘utama#index’

Sedikit ada yang diutak-atik pada \app\views\users\_form.html.erb karena kita menambahkan satu field baru yaitu alamat. Tambahkan satu field terakhir sebelum <action>:

<div class=”field”>

<%= f.label :alamat %><br>

<%= f.text_field :alamat %>

</div>

Agar field alamat yang baru dapat diakses, pada users_controller.erb tambahkan ‘:alamat’:

def user_params

params.require(:user).permit(:nama, :panggilan, :alamat)

end

Terakhir, setelah edit profile link ke lihat profile pada \app\views\users\show.html.erb:

<%= link_to ‘Kembali ke Profile’, tabel_index_path %>

Berikutnya adalah membuat sistem autentikasi terhadap user dengan devise. Pertama-tama sisipkan pada Gemfile

gem ‘devise’

Lakukan instalasi

bundle install

Install devise yang baru ditambahkan pada Gemfile

rails generate devise:install

Setelah terinstall anda bebas membuat devise terhadap model Anda. Misalnya, user:

rails generate devise User

Perhatikan routes.rb dan user.rb jika Anda ingin menelusuri sistem devise bawaan Gem ‘devise’. Migrasikan:

rake db:migrate

Sedikit kelemahan dari devise adalah, kita tidak bisa sign out. Oleh karena itu, sisipkan kode di bawah ini pada body di \app\views\layout\application.html.erb. Note: sisipkan, jangan di replace semua !

<p class=”notice”><%= notice %></p>

<p class=”alert”><%= alert %></p>

<% if flash[:error] %>

<div id=”error”>

<%= flash[:error] %>

</div>

<% end %>

<div id=”container”>

<div id=”user_status”>

<% if user_signed_in? %>

Welcome <%= current_user.email %>! Not you?

<%= link_to “Sign out”, destroy_user_session_path, :method => :delete %>

<% else %>

<%= link_to “Sign up”, new_user_registration_path %> or

<%= link_to “Sign in”, new_user_session_path %>.

<% end %>

</div>

Terakhir, tambahkan pada app\controllers\utama_controller.erb di bagian atas (juga pada users_controller agar terjaga dari aksi hacking):

before_filter :authenticate_user!

Agar ketika user akan melihat profil dirinya, harus login terlebih dahulu. Arahkan route ke menu utama:

Menambahkan View tanpa Scaffold pada Ruby on Rails

Sejauh ini kita masih mengandalkan alat bantu scaffold pada rails yang langsung menyediakan 7 method (CRUD) tanpa kita bersusah payah. Tetapi untuk pembelajaran ada kalanya kita harus memahami konsep dasar antara Model – View dan Controller.

Terkadang kita tidak bisa membuat scaffold, misalnya user yang telah disetting dengan cara devise untuk login ke suatu situs. Jika kita buat rails g scaffold, akan terjadi bentrok. Oleh karena itu untuk melihat user-user yang aktif kita harus membuat view secara manual. Buka kembali project membuat autentikasi dengan devise.

Masuk ke folder project, buat satu controller baru dengan satu metode yaitu index, untuk melihat user-user yang terdaftar di sistem. Sebelumnya daftarkan beberapa user ke sistem anda. Bagi yang baru membaca tulisan ini ada baiknya mencoba tulisan saya sebelumnya tentang autentikasi dengan devise.

rails g controller list index

Tampak Anda telah berhasil membuat suatu view dengan index.html.erb yang siap dibuat kode programnya. Serta satu kontroler dengan nama list_controller.rb. Pertama-tama buka file list_controller.rb. Tambahkan secara sederhana pada metode index

@user = User.all

Dan pada \app\views\list\index.html.erb sisipkan kode ini:

<% @user %>

<% for user in @user %>

<%=user.id%> . <%= user.email %></br>

<% end %>

Coba akses ke http://localhost:3000/list. Anda harus menampilkan user-user yang terdaftar di situs yang baru saja Anda buat. Selamat mencoba.

Tambahan, jika ada error, tambahkan pada routes.rb dengan:

resources :list

Devise untuk Autentikasi pada Ruby on Rails

Buat project baru

rails new devis

Buat satu model berisi daftar kerjaan

rails g scaffold todo name description

migrasikan ke dalam database

rake db:migrate

Arahkan route ke todos#index, agar ketika dijalankan langsung ke alamat tersebut:

root :to => ‘todos#index’

Tambahkan pada Gemfile:

gem ‘devise’

Save file tersebut, lakukan bundle install seperti biasa ketika selesai melakukan editing Gemfile

bundle install

Install devise yang baru ditambahkan pada Gemfile

rails generate devise:install

Setelah terinstall anda bebas membuat devise terhadap model Anda. Misalnya, user:

rails generate devise User

Perhatikan routes.rb dan user.rb jika Anda ingin menelusuri sistem devise bawaan Gem ‘devise’. Migrasikan:

rake db:migrate

Sedikit kelemahan dari devise adalah, kita tidak bisa sign out. Oleh karena itu, sisipkan kode di bawah ini pada body di \app\views\layout\application.html.erb. Note: sisipkan, jangan di replace semua !

<p class=”notice”><%= notice %></p>

<p class=”alert”><%= alert %></p>

<% if flash[:error] %>

<div id=”error”>

<%= flash[:error] %>

</div>

<% end %>

<div id=”container”>

<div id=”user_status”>

<% if user_signed_in? %>

Welcome <%= current_user.email %>! Not you?

<%= link_to “Sign out”, destroy_user_session_path, :method => :delete %>

<% else %>

<%= link_to “Sign up”, new_user_registration_path %> or

<%= link_to “Sign in”, new_user_session_path %>.

<% end %>

</div>

Terakhir, tambahkan pada app\controllers\todos_controller.erb di bagian atas:

before_filter :authenticate_user!

Jalankan server dan anda akan diminta password untuk masuk ke page daftar kerjaan (todo):

rails s

Membuat Relasi Tiga Objek di Ruby on Rails

Postingan yang lalu kita telah berhasil membuat relasi sederhana antara dua tabel (one-to-many). Sekarang kita akan mencoba relasi antara tiga tabel. Buat project baru, misalnya parkir. Kita akan merelasikan tiga tabel yaitu user, mobil, dan todo. Todo adalah daftar pekerjaan yang dimiliki tiap user, begitu juga dengan mobil. Berikut diagram ERD-nya (dibuat dengan aplikasi www.draw.io)

rails new parkir

Buat model user dengan atribut nama dan alamat.

rails g scaffold user nama alamat

Kode di atas menghasilkan model user dengan atribut nama dan alamat, dan operasi diberikan oleh Scaffold (New, Show, Update, dan Delete). Bisa juga ditulis rails g scaffold user nama:string alamat:string. Tetapi secara default, RoR akan memberikan struktur data string.

rails g scaffold mobil user:belongs_to merek no_seri

Kode di atas akan menghasilkan model mobil dengan atribut merek dan no_seri dengan operasi langsung diberikan oleh scaffold. Migrasikan menjadi tabel:

rails g scaffold todo user:belongs_to name description

Kode di atas akan menghasilkan model mobil dengan atribut name dan description dengan operasi langsung diberikan oleh scaffold. Migrasikan menjadi tabel:

rake db:migrate

Buka file \models\user.rb. Tambahkan:

has_many :mobils

has_many :todos

Sedangkan pada file\models\mobil.rb, tambahkan:

belongs_to :user

Karena pada saat generate scaffold mobil kita sudah menambahkan user:belongs_to, maka tidak perlu menambah relasi di atas. Sekarang kita akan menghubungkan antara mobil dengan user, dimana pada tabel mobil memiliki foreign key user_id. User_id berada di tabel Users yang diberikan secara otomatis oleh RoR selain nama dan alamat.

Seperti biasa selalu migrasikan ke tabel dengan instruksi rake. Buka command prompt baru khusus untuk menjalankan server. Arahkan folder ke project.

rails server

Buka http://localhost:3000/users dan masukan satu data baru. Jalankan dan ketika menekan tombol show, kita akan menambahkan mobil milik user yang bersangkutan. Maka pada metode show, kita harus memanggil variabel mobil. Pada \controller\user_controller.rb tambahkan pada metode show (def show):

@mobil = Mobil.new(user_id: @user.id)

@todo = Todo.new(user_id: @user.id)

Artinya kita akan menambahkan mobil baru berdasarkan user_id dari pemilikinya yang saat ini sedang tampil. Jika tidak diisi, ketika akan menambahkan mobil pada users#show, akan muncul eror di form_for (cannot contain nil .. dst). Secara default, show pada daftar user tidak menyertakan data mobil, oleh karena itu sisipi kode pada \view\user\show.html.erb:

<% unless @user.mobils.empty? %>

<% end %><div id=”mobils”>

<% unless @user.mobils.empty? %>

<%= render @user.mobils %>

<% end %>

</div>

 

<h3>Add a Car:</h3>

 

<%= render partial: ‘mobils/form’ %>

Letakkan kode di atas sebelum link_to. Di sini render partial: bemaksud menyisipi form menambahkan mobil baru pada form menampilkan (show) user.

Buat satu file baru di \views\mobils\ dengan nama _mobil.html.erb. Isi dengan kode berikut:

<div class=”mobil” data-time=”<%= mobil.created_at.to_i %>”>

<strong><%= mobil.merek %></strong>

<em>on <%= mobil.created_at.strftime(‘%b %d, %Y at %I:%M %p’) %></em>

<%= simple_format mobil.no_seri %>

</div>

Buat satu file baru di \views\todos\ dengan nama _todo.html.erb. Isi dengan kode berikut:

<div class=”todo” data-time=”<%= todo.created_at.to_i %>”>

<strong><%= todo.name %></strong>

<em>on <%= todo.created_at.strftime(‘%b %d, %Y at %I:%M %p’) %></em>

<%= simple_format todo.description %>

</div>

File _mobil.html.erb merupakan file template untuk render @user.mobil. Jika tidak ada ini maka akan ada pesan “Missing Templat Users#show”. Jalankan Server, Anda harus menghasilkan aplikasi sederhana yang menambah user disertai dengan kendaraannya. Utak-atik views untuk menghasilkan tampilan yang bagus (lihat teknik membuat css dan sejenisnya untuk membuat user interface yang baik). Aplikasi ini sangat sederhana tetapi dapat berfungsi dengan baik.

Coba masukan satu user dengan satu mobil dan kerjaan. Pastikan berjalan dengan baik. Setelah itu klik show user yang bersangkutan untuk melihat daftar pekerjaan dan mobil yang dimilikinya.

Membuat Blog dengan Ruby on Rails + PDF Generation “PRAWN”

Introduction:

Lanjutan dari tulisan sebelumnya (membuat blog dengan rails), coba kita akan membuat tampilan pdf dari suatu postingan. Jika Anda belum membuat aplikasi blog, ada baiknya membuat terlebih dahulu dengan cara seperti tutorial sebelumnya (membuat blog). Perhatikan gambar berikut, tampak kop dan logo yang akan muncul setiap suatu postingan akan ditampilkan dalam format Printable Document File (pdf).

Sebaiknya Anda install terlebih dahulu Gem untuk Prawn.

gem install prawn

Insert pada Gemfile :

gem "prawn", "~> 0.12.0"

gem “prawnto”, “~> 0.1.1”

Jangan lupa menginstal gem:

bundle install

Tambahkan pada app\controllers\ articles_controller.erb kode berikut ini:

prawnto :prawn => { :top_margin => 75, :left_margin =>55, :right_margin =>100}

Buat satu file baru pada app\views\articles\ show.pdf.prawn. Insert file prawn itu dengan kode berikut ini (Letakkan file gambar di app\assets\images\logo.jpg):

pdf.image “#{Rails.root}/app/assets/images/logo.jpg”, :scale => 0.2, :position => 180

pdf.text “\n”    

pdf.text ” AT 70.12: Web Application Engineering” ,:style => :bold

pdf.text ” Asian Institute of Technology”

pdf.text ” Handout: #{@article.name}”

pdf.text ” ____________________________________________________________________”

pdf.text ” \n”

pdf.text ” #{@article.name}”, :size =>18, :style => :bold, :align => :center

pdf.text ”

#{@article.content},”,:columns => 2, :width => pdf.bounds.width,:style => :italic, :align => :justify

Actually you can type on http://localhost:3000/products.pdf to show show.pdf.prawn for each posting, you can add a link at show.html.erb with:

<%= link_to ‘Printable Version’, article_path(@article, :format => ‘pdf’) %>

  1. Run the server:

rails server

Open http://localhost:3000/products. You must see pdf document on your browser when clicking the “printable version” links.

Yukk .. Membuat Aplikasi Blog dengan Ruby on Rails

Introduction:

Aplikasi blog maksudnya kita akan membuat sistem yang menyediakan sarana bagi user untuk membuat suatu tulisan (content) dan user itu maupun yang lain dapat memberikan komentar (comment) terhadap tulisan tertentu. Jadi prinsipnya kita akan menyediakan dua model yaitu model content dan model comment. Model di sini merupakan objek yang akan diterjemahkan ke database yaitu tabel contents dan tabel comments. Sedikit ribet memang di rails, terutama konvensi ketika model single (content) ditranslasikan ke tabel menjadi plural/jamak (contents). Kita menggunakan relasi one-to-many dimana satu content memiliki lebih dari satu comment, sementara itu comment harus dimiliki (has_belongs) oleh suatu content.

Tutorial:

Arahkan ke direktori dimana aplikasi rails kita akan kita letakkan. Buat program baru, misalnya kita beri nama blog.

rails new blog

Artinya kita akan membuat suatu project dengan nama blog. Jika Anda menggunakan database postgresql tambahkan –d postgressql di sebelah kanan blog. Pindahkan folder pada command prompt Anda ke folder blog yang baru saja terbentuk (cd blog). Buat model content dengan atribut name dan content.

rails g scaffold article name content:text

Kode di atas menghasilkan model article dengan atribut name dan content, dan operasi diberikan oleh Scaffold (New, Show, Update, dan Delete). Bisa juga ditulis rails g scaffold article name:string content:text. Tetapi secara default, RoR akan memberikan struktur data string.

rails g scaffold comment article:belongs_to name content

Kode di atas akan menghasilkan model comment dengan atribut name dan content dengan operasi langsung diberikan oleh scaffold. Migrasikan menjadi tabel:

rake db:migrate

Buka file \models\article.rb. Tambahkan:

has_many :comments

Sedangkan pada file\models\comment.rb, tambahkan:

Belongs_to :content

Karena pada saat generate scaffold comment kita sudah menambahkan content:belongs_to, maka tidak perlu menambah relasi di atas. Migrasikan model anda ke database.

rails server

Buka http://localhost:3000/articles dan masukan satu data baru. Jalankan dan ketika menekan tombol show, kita akan menambahkan comment milik content yang bersangkutan. Maka pada metode show, kita harus memanggil variabel comment. Pada \controller\contents_controller.rb tambahkan pada metode show (def show):

@comment = Comment.new(article_id: @article.id)

Artinya kita akan menambahkan comment baru berdasarkan content_id dari pemilikinya yang saat ini sedang tampil. Jika tidak diisi, ketika akan menambahkan comment pada contents#show, akan muncul eror di form_for (cannot contain nil .. dst). Secara default, show pada daftar content tidak menyertakan data comment, oleh karena itu SISIPI (pada line 12) kode pada \view\articles\show.html.erb:

<% unless @article.comments.empty? %>

<h3><%= pluralize(@article.comments.size, ‘Comment’) %></h3>

<% end %>

 

<div id=”comments”>

<% unless @article.comments.empty? %>

<%= render @article.comments %>

<% end %>

</div>

 

<h3>Add a comment:</h3>

 

<%= render partial: ‘comments/form’ %>

Letakkan kode di atas sebelum link_to. Di sini render partial: bemaksud menyisipi form menambahkan comment baru pada form menampilkan (show) content.

Buat satu file baru di \views\comments\ dengan nama _comment.html.erb. Isi dengan kode berikut:

<div class=”comment” data-time=”<%= comment.created_at.to_i %>”>

<strong><%= comment.name %></strong>

<em>on <%= comment.created_at.strftime(‘%b %d, %Y at %I:%M %p’) %></em>

<%= simple_format comment.content %>

</div>

File _comment.html.erb merupakan file template untuk render @content.comment. Jika tidak ada ini maka akan ada pesan “Missing Templat Contents#show“. Anda harus menghasilkan aplikasi sederhana yang menambah content articles dengan komentarnya. Untuk membuat tampilan yang indah, Anda harus sedikit mengatur layout html dan css aplikas yang baru saja Anda buat.

Praktek Dunia Kerja vs Teori di Kampus

Beberapa ilmu berasal dari teori, tetapi beberapa juga berasal dari praktek berupa uji coba. Bahkan ada ilmuwan terkenal yang jago dalam uji coba di laboratorium tetapi lemah dalam analisa matematis misalnya Faraday (walaupun masih belum jelas karena sikapnya yang praktis dan rendah hati serta anti popularitas). Berbeda dengan Albert Einstein yang benar-benar matematis. Dari pada berdebat lebih baik ambil jalan pintas, gunakan dua-duanya.

Saya ingat waktu pertama kali bekerja sebagai tenaga pengajar di suatu institusi komputer. Mengajar adalah pekerjaan pertama saya karena waktu itu jamannya krisis (awal tahun 2000) dan sulit mencari kerja. Suatu kali saya menguji sidang tugas akhir seorang siswa, temanya tentang jaringan komputer. Kami beradu argumentasi tentang pewarnaan pada kabel utp cat 5. Dia menyatakan bahwa warna pada kabel berpengaruh, dan saya tidak setuju dengannya, dia tidak bisa membuktikannya. Beberapa tahun kemudian saya diterima bekerja di salah satu bank berskala nasional di Jakarta. Di salah satu cabangnya di daerah asem reges saya menemukan jawaban mengenai pewarnaan pada kabel. Kejadiannya adalah ketika bank tersebut mengontrak suatu perusahaan jasa cabling. Dia memasang kabel jaringan tanpa memperhatikan warna, asalkan tetap straight dan ditest dengan tester ok, tiap pin terhubung dengan baik. Tetapi apa yang terjadi? Waktu itu tidak ada masalah sesungguhnya ketika PC masih menggunakan IBM Pentium III. Kebetulan ada project pergantian PC dan ketika dipasang dengan PC HP Pentium 4, walaupun sudah disetting IP Address dengan benar tetap tidak terhubung. Kebetulan pihak vendor pemasang kabel masih ada waktu itu. Dia tetap ngotot bahwa saya yang salah mensetting IP address. Akhirnya saya buktikan dengan memasang satu kabel sesuai standard warna, ternyata PC baru tersebut berjalan normal (reply ketika di ‘ping’). Sementara ketika saya colok dengan kabel buatannya tidak berjalan. Dan saya jelaskan juga bahwa kabel buatannya memang bisa berjalan dengan PC lama tapi tidak dengan PC baru. Akhirnya mereka melakukan crimping ulang seluruh kabel yang dia pasang, sebab kalau sampai laporan ke pihak manajemen, vendor tersebut tidak akan dipercaya lagi. Sampai tulisan ini dibuat, saya tidak mau melaporkan hal tersebut ke pihak manajemen karena saya khawatir berdosa karena mematikan rejeki perusahaan orang beserta dengan karyawan-karyawannya. Yang penting mereka sadar atas kekeliruannya.

Beberapa teori yang saya pelajari, sangat membantu ketika mempraktekannya secara langsung di dunia kerja. Jika ada yang beranggapan bahwa kuliah IT tidak ada gunanya, kalah dengan kursusan, jangan salahkan kalau anda terhukum atas pandangan Anda, apalagi sampai membuat blog dan mempublish dan banyak yang percaya dengan anggapan keliru Anda. Sama saja Anda melarang menanam padi, lebih baik beli saja karena lebih murah, dari pada menanam sendiri lebih mahal dan buang-buang waktu. Anda akan tergantung. Alangkah baiknya jika kita kirim ahli pertanian ke negara yang memiliki pengalaman bercocok tanam, agar ilmunya bisa ditularkan ke petani kita sehingga hasil produksinya lebih baik dan harganya terjangkau. Begitu pula ketika Anda beranggapan kursusan lebih baik, karena memiliki ketrampilan, sertifikat profesional dan sejenisnya, dan tidak ada gunanya perguruan tinggi memiliki jurusan IT, Anda akan tergantung. Alangkah baiknya kita kirim orang untuk belajar ke tempat lain yang memiliki pengalaman mengutak-atik, merekayasa, dan mengembangkan IT, agar ketika selesai belajar dapat menularkan ilmunya sehingga bisa membuat basis IT yang independen dan bebas platform.

Beberapa bidang sangat sulit disentuh oleh dunia praktek seperti manajemen, penjadwalan, organisasi, leadership karena untuk mempraktekannya Anda harus masuk ke wilayah tersebut. Sementara untuk bekerja sebagai pimpinan, pengambil keputusan, divisi manajerial, jarang perusahaan yang menerima karyawan tanpa pengalaman kerja (kecuali jika Anda masuk lewat jalur ‘khusus’). Karena saya tidak pernah memperoleh teori di bidang itu, saya pernah sekali hampir dipecat karena lalai melakukan manajemen di salah satu cabang di Pulogadung, padahal cabang itu merupakan kantor kas dengan transaksi harian hampir menyentuh angka milyaran. Bayangkan, bagaimana mungkin tiga jenis backup (kaset, harddisk, pc backup) tidak ada yang berfungsi ketika server down. Sungguh amat berharga karena kurangnya teori mengakibatkan kehilangan hampir 60 juta rupiah waktu itu (kurs 1 dollar masih seputar rp 5000-an). Tetapi tetap saja, pengalaman adalah guru yang amat berharga. Lantaran itu pulalah Bill Gate enggan memecat karyawannya yang membuat kerugian besar akibat salah disain. Termasuk saya, tidak jadi dipecat karena jika saya dipecat selain mereka kehilangan 60 juta rupiah, juga kehilangan karyawan yang memiliki memiliki pengalaman seharga itu. Tentu saja beda kalo hilangnya 60 juta itu karena dikorupsi (kalo dipertahankan bisa korupsi lebih hebat lagi).

Kesimpulannya, antara teori dan praktek saling mendukung. Mengapa Anda mengharuskan seorang IT mengerti pemrograman bahasa tertentu? Padahal algoritma itu yang terpenting. Tahukah Anda? mahasiswa doktoral antara tahun 1960 – 1970 kebanyakan menghasilkan sebuah bahasa pemrograman. Cukuplah sadari dengan rendah hati jika kita hanya bisa membuat program enterprise, hanya bisa mengelola jaringan, hanya bisa mengamankan suatu sistem, hanya memiliki tiga atau lebih sertifikat IT, hanya bisa membuat pusat training IT berskala internasional, hanya bisa membangun kampus IT world class. Jangan sampai menyombongkan diri lantaran memiliki pengalaman kerja sebagai pelayan IT cukong-cukong, meretas situs2 orang, menyepam google/orang lain sambil menjajakan online obat kuat.

Membuat GUI di Matlab dengan tombol Load *.MAT

File mat merupakan file hasil olah Matlab sebelumnya (image processing, jaringan syaraf tiruan, dan lain-lain). Biasanya hasil oleh ini disimpan dalam file dengan instruksi save <nama_file> dan diberikan ekstensi oleh matlan mat.

Pertama-tama persiapkan satu folder untuk program yang akan kita buat. File mat harus diletakkan pada folder kerja tersebut (pada matlab diberi istilah current directory). Buat suatu GUI baru dengan nama misalnya ambil_file.

guide

Anda akan melihat pilihan mau buat GUI kosong, GUI yg pernah dibuat, atau sudah bertemplate. Pilih saja yang Blank GUI (Default). Drug toolbox command button berlambang “OK” ke arah lembar kerja GUI. Secara default akan diberi nama Push Button.

Untuk mengedit Push Button, klik ganda tombol itu hingga memunculkan properties. Ganti Push Button dengan isian pada String: Ambil File. Dan nama variabel (pada Matlab diberi nama Tag) isi dengan nama ambil. Tag ini akan menampilkan fungsi ambil di file m matlab.

Simpan GUI anda dan beri nama, misalnya ambil. Matlab akan menciptakan dua file yaitu ambil.fig dan ambil.m fungsinya berturut-turut sebagai GUI dan sebagai script. Secara ajaib, Matlab akan memberikan kode yang siap kita isi di sana. Dengan cara yang sama, buat seperti di bawah ini:

Edit text di sebelah kanan biarkan saja, tidak perlu di utak-atik supaya cepat, dan nama Tag (variabel)-nya edit1. Maksudnya adalah menampilkan nama file yang diambil. Masukan listing seperti berikut ini:

  • [x,y] = uigetfile(‘*.mat’, ‘Mengambil Data’);
  • set(handles.edit1,‘String’,x);
  • y=load(x)
  • net=y.network1

Uigetfile akan mengambil jendela get file dengan ekstensi yang akan ditampilkan *.mat. Pada jendela akan muncul nama jendela ‘Mengambil Data‘. Saya mengambil data saya bernama jst.mat, hasil training JST yang lalu. Instruksi y=load(x) akan mengambil variabel x ke workspace dan net=y.network1 mengambil variabel di y yang isinya hanya jst saya (network1). Jika Anda lihat di command window akan muncul y dan net saya, tentu saja jika Anda tidak memiliki file jst.mat milik saya tidak akan muncul networknya (coba buat sendiri). Silahkan cek apakah file tersebut muncul di sebelah kanan tombol Ambil File (Edit Text).

Sekarang kita coba menyimpan data yang kita barusan ambil (atau mungkin data hasil oleh GUI jika ada). Misal kita akan merename. Isi pada fungsi simpan (awas jangan salah kamar) di m-file pada simpan_Callback.

  • y=load(‘jst.mat’)
  • [nm_file] = uiputfile(‘*.mat’,‘Menyimpan File’);
  • data_file = [nm_file];
  • save(data_file);

Jalankan, Anda akan menampilkan jendela simpan. Bisa Anda tambahkan message jika file telah tersimpan. Di sini kita coba menyimpan y hasil dari loading suatu file (‘jst.mat‘). Dan akan menyimpannya menjadi file lain, misalnya jst2.mat.

Contoh di atas hanya mencoba GUI saja, karena tidak ada yang diolah di sini. Anda bisa menyisipkan fungsi-fungsi ini pada sistem yang anda rancang. Dari pengolahan gambar hingga fungsi-fungsi berat seperti Algoritma Genetik yang saya buat untuk mencari lokasi SPBU yang optimal di Bekasi.

Sublime Text 2 untuk Editing Rails

Go directily to http://www.sublimetext.com/2. Choose your operating system where this app will be installed.

After downloading, you shoud run setup :

Follow the installation instruction:

Click Next until Finish. You should find this look. There is no time limit to evaluate this application, so buy it if you feel good for you.

Membuat Relasi Antar Kelas Sederhana dengan Ruby on Rails

 

Kita akan membuat dua kelas yaitu user dan mobil yang menghubungkan data user dengan mobil yang dimilikinya. Untuk yang baru pertama kali, sebaiknya lihat postingan sebelumnya, di mana menulis kode rails, cara instalasi, membuat program sederhana, dan lain-lain. Mudah-mudahan Anda juga berhasil membentuk apliksi sederhana seperti di bawah ini.

Ok, tiap user memiliki bisa lebih dari satu mobil, dan tiap mobil memiliki data pemiliknya.

rails new parkir

Artinya kita akan membuat suatu project dengan nama parkir. Jika Anda menggunakan database postgresql tambahkan –d postgressql di sebelah kanan parkir. Pindahkan folder pada command prompt Anda ke folder parkir yang baru saja terbentuk.

cd parkir

Buat model user dengan atribut nama dan alamat.

rails g scaffold user nama alamat

Kode di atas menghasilkan model user dengan atribut nama dan alamat, dan operasi diberikan oleh Scaffold (New, Show, Update, dan Delete). Bisa juga ditulis rails g scaffold user nama:string alamat:string. Tetapi secara default, RoR akan memberikan struktur data string.

rails g scaffold mobil user:belongs_to merek no_seri

Kode di atas akan menghasilkan model mobil dengan atribut merek dan no_seri dengan operasi langsung diberikan oleh scaffold. Migrasikan menjadi tabel:

rake db:migrate

Buka file \models\user.rb. Tambahkan:

has_many :mobils

Sedangkan pada file\models\mobil.rb, tambahkan:

belongs_to :user

Karena pada saat generate scaffold mobil kita sudah menambahkan user:belongs_to, maka tidak perlu menambah relasi di atas. Sekarang kita akan menghubungkan antara mobil dengan user, dimana pada tabel mobil memiliki foreign key user_id. User_id berada di tabel Users yang diberikan secara otomatis oleh RoR selain nama dan alamat.


Seperti biasa selalu migrasikan ke tabel dengan instruksi rake. Buka command prompt baru khusus untuk menjalankan server. Arahkan folder ke project.

rails server

Buka http://localhost:3000/users dan masukan satu data baru. Jalankan dan ketika menekan tombol show, kita akan menambahkan mobil milik user yang bersangkutan. Maka pada metode show, kita harus memanggil variabel mobil. Pada \controller\user_controller.rb tambahkan pada metode show (def show):

@mobil = Mobil.new(user_id: @user.id)

Artinya kita akan menambahkan mobil baru berdasarkan user_id dari pemilikinya yang saat ini sedang tampil. Jika tidak diisi, ketika akan menambahkan mobil pada users#show, akan muncul eror di form_for (cannot contain nil .. dst). Secara default, show pada daftar user tidak menyertakan data mobil, oleh karena itu sisipi kode pada \view\user\show.html.erb:

<% unless @user.mobils.empty? %>

<h3><%= pluralize(@user.mobils.size, Mobil) %></h3>

<% end %><div id=”mobils”>

<% unless @user.mobils.empty? %>

<%= render @user.mobils %>

<% end %>

</div>

 

<h3>Add a Car:</h3>

 

<%= render partial: ‘mobils/form’ %>

Letakkan kode di atas sebelum link_to. Di sini render partial: bemaksud menyisipi form menambahkan mobil baru pada form menampilkan (show) user.

Buat satu file baru di \views\mobils\ dengan nama _mobil.html.erb. Isi dengan kode berikut:

<div class=”mobil” data-time=”<%= mobil.created_at.to_i %>”>

<strong><%= mobil.merek %></strong>

<em>on <%= mobil.created_at.strftime(‘%b %d, %Y at %I:%M %p’) %></em>

<%= simple_format mobil.no_seri %>

</div>

File _mobil.html.erb merupakan file template untuk render @user.mobil. Jika tidak ada ini maka akan ada pesan “Missing Templat Users#show”. Jalankan Server, Anda harus menghasilkan aplikasi sederhana yang menambah user disertai dengan kendaraannya.

Coba masukan satu user dengan satu mobil. Pastikan berjalan dengan baik.

Setelah ditambahkan Mobil, ketika suatu user dilihat, akan tampak daftar mobil yang dimilikinya (has_many :mobils). Yang sedikit janggal adalah konsep jamak dan singuler pada RoR, yakni jamak mobil menjadi mobils.