Basis Data di Matlab

Tahun 2000 merupakan tahun perkenalan saya dengan Matlab. Dosen pengajar pengenalan pengaturan (dulu namanya mekanisme servo dan kontrol) rencananya akan memberikan seminar khusus di kampus. Sayangnya ternyata acara itu karena satu lain hal di-cancel. Rencananya saya akan menggunakan software itu untuk tugas akhir saya dalam mensimulasikan sistem suspensi. Apa boleh buat, terpaksa belajar sendiri.

Setelah membuka-buka Matlab ternyata banyak fasilitas-fasilitas menarik yang bisa diexplore, apalagi waktu itu Matlab 6 sudah muncul. Versi ini jauh lebih menarik dibanding Matlab 5, versi sebelumnya. Dari kedokteran, sains, bahkan ekonomi pun bisa memanfaatkan Matlab, walaupun orang informatika waktu itu kurang menyukai karena “terlalu mudah” atau “hanya mengandalkan toolbox” dibanding dengan bahasa c++, visual basic, pascal (sekarang Delphi) yang lebih laris dipasaran dan banyak dipakai pengembang. Efeknya, buku-buku terbitan Matlab waktu itu masih amat langka, ditambah lagi waktu itu internet masih barang mahal dibanding sekarang. Tapi bagi pengembang metode (bukan terapan) Matlab sangat menarik karena dengan cepat bisa mengeksekusi metode-metode rumit buatannya, karena kelamaan jika terlalu berfokus ke coding. Salah satu kelemahan Matlab sehingga dijauhi pengembang waktu itu adalah sulit diterapkan ke sistem basis data (DBMS). Sempat membuka sampel penggunaan basis data ternyata basis data yang digunakan tersimpan dalam format “mat” khusus Matlab, tidak dengan Access, MySql, dan sejenisnya. Untuk menghubungkannya harus mengkonversi dari DBMS tersebut ke Excel atau “dat” file agar bisa dimanipulasi Matlab.

Dengan Matlab saya banyak menerima dana hibah penelitian dari DIKTI untuk mengutak-atik Soft Computing dengan metode-metode terbarunya baik penerapan atau memodifikasi metode tersebut. Dari Jaringan Syaraf Tiruan hingga Algoritma genetika sudah saya gunakan, hingga akhirnya saya dipaksa melibatkan DBMS karena data yang besar (big data) dengan ukuran dua giga byte ke atas. Apalagi jika data yang akan dimanipulasi real time yang harus berubah-ubah terus. Untungnya Matlab 7 sudah memberikan fasilitas menghubungkan Matlab dengan basis data, waktu itu saya menggunakan ruby on rail sebagai interface yang menampilkan hasil manipulasi genetic algorithms ke web lewat PostgreSQL

Karena banyak yang menanyakan cara menghubungkan Matlab dengan DBMS, plus pemrograman visualnya (GUI) akhirnya saya tulis ke dalam buku yang baru terbit Februari 2016 kemarin.

Entah sudah tersedia di toko-toko buku terdekat atau belum saat ini. Kebanyakan pembeli menggunakan situs online dari penerbit informatika, link-nya berikut ini. Ada beberapa contoh kasus seperti enkripsi sederhana terhadap database, pengolahan citra digital (digital image processing) dan clustering dengan Fuzzy C-Mean. Kali ini saya menambahkan dengan CD. DBMS yang saya gunakan adalah Microsoft Access sebagai perwakilan aplikasi desktop dan MySQL sebagai perwakilan aplikasi berbasis Web dengan ODBC sebagai jembatan penghubung dari Matlab ke DBMS lewat windows.

Untuk membuat buku yang sempurna mungkin membutuhkan waktu yang cukup panjang, sementara para mahasiswa yang sedang menyelesaikan tugas akhir/skripsi/tesis dikejar waktu, ada baiknya buku yang ringkas dan sesuai kebutuhan tersedia di pasaran. Semoga bermanfaat, Amiin.

Iklan

How to Draw a Diagram using Draw IO?

Draw IO is a free web-based tool for drawing a model such as Entity Relation Diagram (E-R Diagram), Flow chart, Data Flow Diagram (DVD), Unified Modeling Language (UML), etc. You can access it at www.draw.io in start using it without installation. Immediately you will be asked the location for saving the xml file, for example you use your harddrive, so yo have to choose Device.

And please click the “create a new diagram” or “open existing diagram” if you want to open a xml file of your diagram that have drawn before. Before drawing, this application will ask you to create the name of your diagram.

And let your creativity flows, and for exercise, try to draw E-R diagram like this.

Save your figure by clicking the menu save and if you want to capture for your document (word, power point, etc) you have to download it into image, xml, and other file support. So far, I like to download as GIF than JPEG or others. Because it give a good resolution that you can see below. Ok .. good luck.

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.