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.

Algoritma Genetik dengan Toolbox Matlab

Salah satu hal yang tersulit dari algoritma genetik adalah menentukan persamaan tujuan (objective function). Baik buruk model yang kita buat tergantung dari persamaan tujuan ini. Sebagai contoh ingin menentukan letak terjauh dari beberapa titik tetapi tetap berada di sepanjang jalan tertentu, misalnya untuk menentukan letak optimal SPBU. Setelah kita merancang Sistem Informasi Geografis (SIG) berikutnya kita menentukan layer-layernya, yaitu layer raster data (peta) layer persamaan jalan, layer lokasi-lokasi vital yang harus sejauh mungkin dari SPBU, dan terakhir letak optimal SPBU. Berikut ini contoh penerapannya.

Pada Matlab, untuk membuat model algoritma genetik sangat mudah karena sudah disiapkan toolbox yang dapat dibuka lewat start – toolboxes – dan seterusnya. Cari optimasi toolbox, dan Anda pilih GA toolbox. Ada sedikit pemanggilan fungsi, pertama pada jendela toolbox GA Anda memanggil fungsi tujuan, sementara pada fungsi tujuan, Anda memanggil fungsi jalan. Fungsi jalan adalah persamaan matematis yang mewakili garis jalan, persamaan ini sangat sulit saya kerjakan, tetapi dengan merubah menjadi orde -1, sedikit lebih mudah, walaupun hasilnya jalan menjadi segmen patah-patah.

Selain untuk mencari letak optimal SPBU, GIS yang terbentuk bisa digunakan untuk menentukan letak optimal lainnya yaitu persawahan, perumahan, perkebunan, perkantoran, hingga mendeteksi sebaran penyakit. Tentu saja sekali lagi, persamaan tujuan menjadi penentu baik buruk hasil optimasi.

Mengaktifkan Save Mode Windows 8

Kemarin karena menginstall plugin untuk mempercantik tampilan windows bernama valentin pack yang ternyata untuk windows 7, ketika login, laptop istri saya hang dengan tampilan layar hitam dan mouse yang memang berubah menjadi gambar love. Untuk memperbaikinya tentu saja meng-uninstall aplikasi tersebut, tapi bagaimana? Ketika start windows langsung mengakitfkan plugin tersebut.

Salah satu caranya adalah dengan masuk ke save mode, kemudian menguninstallnya. Oke, langsung saja, untuk masuk ke pilihan Save Mode, windows 8 mengharuskan kita menekan Shift + F8. Beberapa kali ketika saya pandu istri saya terlambat menekan dan masuk ke menu login windows lagi, oleh karena itu harus diulang dengan restart. Jika berhasil (biasanya ada pesan waiting ..), maka Anda akan masuk ke menu sebagai berikut:

Pilih saja See andvanced repair options. Pilih yang tengah, troubleshoot.

Berikutnya akan muncul tampilan menu di bawah ini:

Untuk lanjut ke Save Mode, dapat anda tekan Windows Startup. Untuk kasus istri saya, cara termudah adalah masuk ke System Restore dan memilikih set point waktu yang lampau. Jika dijalankan akan meng-uninstall beberapa program yang diinstall setelah waktu set point. Satu kali istri saya gagal (ada pesan bahwa system restore tidak berhasil). Itu mungkin karena waktu setpoint yang dipilih terlalu lama. Akhirnya setelah memilih set point pada waktu yang tidak jauh dari saat ini, berhasil dan plugin yang terinstall dan menyebabkan windows 8 error berhasil di-uninstall. Ok, jika akan masuk ke Save Mode, pilih saja Windows Startup Settings. Pada beberapa versi windows sedikit berbeda, ada yang langsung restart, ada pula yang diminta setelah restart menekan tombol F1 – F9. Pilihan untuk save mode adalah F4. Jadi ketika restart, Anda harus siap-siap menekan save mode.

Restart, dan Anda siap masuk save mode.

Problem Error Controller Create di Rails 4 (ActiveModel::ForbiddenAttributesError)

Lagi asyik mengikuti tutorial pembuatan simple application di rails, tiba-tiba saat dirunning, ada masalah. Sudah saya teliti, tidak ada sintax yang error, hampir saja saya putus asa dan meninggalkan kerjaan saya. Untungnya saya iseng searching di google, dan ternyata ada yang bernasib sama dengan saya. Ternyata masalah muncul perbedaan kompatibilitas antara rails yang lama dengan yang terbaru. Berikut problema yang terjadi ketika melakukan proses penambahan record dengan controller method create. Jika script ini dijalankan:

def create

    @movie = Movie.new(params[:movie]) dst

Muncul error yang menunjuk pada baris kode tersebut. Ternyata solusinya berdasarkan yang saya searching adalah untuk rails 4 tidak bisa dengan menggunakan params seperti itu. Ganti dengan seperti ini:

@movie = Movie.new(movie_params)

Tetapi harus didefinisikan di bawah end method dengan baris seperti ini (bullets tidak ikut diketik):

  • private
    • def movie_params
    • params.require(:movie).permit(:title, :year)
    • end

Ketika dijalankan langsung, OK.

Rails on Windows .. Layak kah?

Ingin sekali saya mengembangkan Ruby on Rails (RoR) setelah saya selesai kuliah di sini karena karakternya yang cocok dengan materi yang sering saya ajar yaitu “Pemrograman Berorientasi Obyek”. Biasanya saya menggunakan Java sebagai bahasa untuk prakteknya, tetapi saya memiliki kesulitan ketika membuat koneksi antara kelas dengan sistem basis data yang berkarakter non obyek.

Berbeda dengan PHP yang sangat kompatibel dengan windows walaupun lebih cocok dengan linux, RoR sangat disarankan menggunakan linux. Tetapi untuk meningkatkan jumlah penggemar jenis bahasa baru ini mau tidak mau harus menggandeng windows mengingat jumlah pengguna windows yang masih menggurita di Indonesia. Berikut ini pengalaman saya menggunakan RoR yang berbasis windows.

Pertama-tama kita harus berkomunikasi dengan situs resmi RoR untuk memperoleh informasi dan software open source-nya. Untuk yang berplatform Windows kita dapat mengunduh dari: http://railsinstaller.org/en. Klik pada link download untuk Windows:

Jika Anda masih pemula, jangan khawatir dengan link-link di bawahnya karena dengan mengunduh Windows Ruby 1.9 Anda berarti mengunduh semua perlengkapan di bawahnya tersebut. Setelah di download, Anda tinggal mengekstrak dan menginstall dengan single click ala Microsoft, di mana untuk instalasi tinggal mengklik langsung jadi. Beda jika Anda menginstall lewat ubuntu misalnya. Anda harus menginstall apache dulu, menginstall postgresql atau mysql dulu, tetapi dengan download untuk windows, Anda tinggal menjalankan saja.

Saya sudah mencobanya, sedikit ada masalah ketika melakukan proses routing. Routing adalah proses yang mengarahkan suatu page ke arah tertentu. Misalnya Anda membuka situs http://rahmadya.com, maka Anda akan diarahkan ke mana oleh route aplikasi tersebut. Ternyata routing tidak berjalan, setelah saya selidiki ternyata Anda harus mengupgrade ke Rails versi terakhir (ketika saya buat tulisan ini masih berversi 4.0.0). Untuk apgrade, hubungi situs resmi rails yang menyediakan GEM. Gem adalah fasilitas rails seperti library di Windows. Situsnya: http://rubygems.org/gems/rails. Search saja di kolom searching, isi dengan kata kunci “rails”, maka Anda akan menjumpai rails versi terakhir. Ikuti cara downloadnya.

Ternyata ada rails terbaru versi 4.0.1. Untuk mengecek versi rails Anda, masuk ke command promt (Start – run – cmd), ketik saja ‘rails –v‘.

Ternyata versi rails saya masih 4.0.0. Anda tidak diharuskan mengupgrade, tetapi ada baiknya diupgrade untuk memperoleh hasil yang maksimal dari RoR. Untuk menginstallnya ada dua pilihan:

  1. Pada command windows ketik: ‘gem install rails’
  2. Pada Gemfile yang terletak di <folder_project>, tambahkan: ‘gem “rails”, “~> 4.0.1”

Tampak proses upgrade dari rails 4.0.0 ke rails 4.0.1. Berikutnya kita tinggal membuat aplikasi dengan rails, sangat mudah dan tidak membutuhkan banyak waktu.

Kuliah Lagi ..

Ketika SMA saya merupakan siswa yang lumayan, maksudnya lumayan bagus nilai mata pelajarannya. Bukan karena cerdas, tetapi karena serius dan belajar dengan tekun. Beda dengan teman-teman saya yang lain yang memang cerdas bawaan lahir, dengan belajar sedikit, langsung memahami. Sementara saya harus begadang semalaman untuk memahami suatu materi, apa boleh buat. Tidak apa, toh itu membuahkan hasil, hingga saya lulus UMPTN dan masuk di jurusan Teknik Mesin, jurusan yang sulit menurut saya. Buktinya saya butuh waktu enam tahun untuk memperoleh gelar sarjana teknik.

(Tak disangka yang saya salami itu, alumni AIT juga)

Ternyata wisuda merupakan kebahagiaan sesaat karena hampir setahun saya menganggur, ditolak ketika melamar di sana sini, maklum tidak jauh tahunnya dari krisis moneter waktu itu. Akhirnya karena kepepet, saya ditawari mengajar oleh sepupu saya di salah satu kampus di Jakarta. Jurusan yang saya ajar pun jauh dari jurusan saya ketika kuliah, yaitu jurusan Teknik Komputer. Terus terang, saya di sana bukan ngajar, tapi belajar, apa boleh buat. Dengan berbekal dengkul, saya bekerja dengan menaiki beberapa angkutan umum.

Karena tuntutan profesi, saya mencoba untuk kuliah S2 di UI, mengambil jurusan Teknik Mesin, seperti jurusan S1 saya, dan Alhamdulillah diterima. Tetapi ketika melihat uang kuliah sebesar 11 juta rupiah di awal, saya langsung berfikir, keluarga yang baru saja saya jalani, mau tidak mau harus berfikir ulang untuk mengeluarkan uang sebesar itu. Akhirnya saya lepas kuliah di UI dan uang tersebut kami gunakan untuk mengkredit rumah BTN. Sedih juga, tapi apa boleh buat, hidup itu pilihan.

Tetapi di saat bersamaan, di tempat saya mengajar dibuka kelas S2, dan saya walaupun tidak gratis mendapat potongan yang lumayan besar jika kuliah di sana. Akhirnya saya ambil kuliah tersebut dengan jurusan ilmu komputer (M.Kom). Dengan mudah saya jalani kuliah tersebut dan lulus tepat waktu (1,5 tahun). Ternyata dari studi tersebut saya memperoleh banyak manfaat, mulai dari banyaknya jam mengajar hingga saya memperolah sertifikasi dosen, dimana mensyaratkan strata 2 jika ingin mendapatinya. Dan satu hal yang terpenting adalah dengan gelar S2 itu saya diterima di kampus Asian Institute of Technology (AIT) thailand (www.ait.ac.th) pada jurusan Computer Science program Ph.D, tentu dengan beasiswa (BPPLN Dikti), karena tidak mungkin saya dan kampus saya membiayai uang kuliah yang hinggu lulus sekitar setengah milyar. Ternyata AIT merupakan kampus andalah beasiswa sejak lama, walaupun sempat terkena banjir, tetapi perlahan-lahan mulai bangkit dan peminatnya mulai bertambah.

Kampus tersebut dari sisi ranking memang tidak begitu menonjol, tetapi alumninya banyak tersebar di seluruh dunia, karena kampus itu masuk kategori kampus internasional, hampir semua mahasiswanya adalah penerima beasiswa (maklum uang kuliahnya hampir dua kali kampus terkenal seperti Mahidol dan lain-lain). Salah satu alumni dari Indonesia yaitu Prof. Joko Santoso, yang pernah menjadi rektor ITB dan UI, dan saat tulisan ini dibuat merupakan dirjen Pendidikan Tinggi (DIKTI). Dan beliau menjadi alumni kehormatan AIT, beserta putri raja Thailand dan beberapa alumni dari berbagai negara yang lain.

(Prof. Joko Santoso. Sumber: Wikipedia)

Selain itu, yang mengejutkan saya, mantan rektor UGM, yaitu Prof. Sudjarwadi, yang ketika saya wisuda bersalaman dengannya juga S2 di tempat saya saat ini mengambil S3.  Begitu pula, salah satu rekan kerja saya yang sekarang sudah dipanggil Allah sebulan yang lalu, Bpk Soedarmin, ternyata sempat beberapa bulan kursus di sana, dan banyak menceritakan kehidupan di sana. Sayang ketika beliau dipanggil saya tidak sempat ke rumahnya karena sudah berangkat ke Thailand, semoga damai di alam sana.

(Bersama Alm Soedarmin, ketika mengecek alat uji tekan beton di lab Sipil)

Sungguh hidup itu berputar-putar saja, tidak jauh dari yang pernah menghampiri kita walau sesaat. Tinggalah saya, alumni mesin yang sedang mengemban tugas berat menaklukan degree tertinggi Computer Science, semoga berhasil. Amiin.

Screen Record Free dengan Microsoft Expression 4

Sehubungan dengan presentasi penelitian yang harus dilaksanakan, mau tidak mau harus merekam running programnya dengan bentuk video layaknya youtube. Namun saya tidak memiliki software untuk merekam, kalaupun ada itu bajakan. Namun untungnya windows menggratiskan salah satu software untuk merekam aktivitas kita di sistem operasinya yaitu Microsoft Expression 4. Untuk mendownloadnya dapat Anda buka situs resminya: http://www.microsoft.com/expression/eng/

Tentu saja ketika download, windows Anda sebaiknya bukan windows bajakan, karena sama saja dengan lapor diri. Jika sudah selesai mendownload, Anda tinggal mengklik ganda file sumber, tinggal ikuti perintahnya. Oiya, ketika ditanyakan serial number, lewati saja, karena tidak apa-apa tanpa mengisi kode sumber. Karena free kita hanya diperbolehkan merekam selama 10 menit, tetapi tidak apa-apa, karena 10 menit lumayan lama menurut saya.

Selain merekam gambar, dengan menekan icon mic, kita dapat merekam suara juga, tentu saja harus tersedia mic (biasanya tiap laptop ada). Ketika tombol merah (record) ditekan, Anda diminta membuat range yang akan direkam pada layar monitor Anda. Setelah itu dengan sekali tekan tombol record lagi Anda siap merekam apapun yang terjadi di layar. Berikut ini contoh hasil rekam saya yang saya upload di Youtub. http://www.youtube.com/watch?v=XFTOnXSR3eg

Lika-liku Mencari Beasiswa

Tidak dapat dipungkiri, biaya pendidikan saat ini tidak bisa dibilang murah lagi. Ketika tahun 1995 dulu saya kuliah di UGM, SPP bersih masih Rp. 250 ribu saja, tak perduli fakultas teknik atau kedokteran. Tetapi saat ini dengan adanya jalur mandiri, biaya masuk untuk fakultas kedokteran gigi saja sudah hampir mencapai 200-an juta rupiah, sungguh biaya yang fantastis. Bagaimana dengan sekolah menengah? Ternyata tidak jauh berbeda. Masuk sekolah negeri malah lebih mahal dari pada sekolah swasta, tentu saja negeri yang memiliki standar internasional yang sering dikenal dengan istilah RSBI. Untung saja pengadaan program tersebut dianggap salah oleh Mahkamah konstitusi sehingga harus dihapus. Bagaimana dengan calon siswa atau mahasiswa yang pintar tetapi kurang mampu? Tentu saja salah satu andalannya adalah beasiswa. Bagaimana dengan kampus negeri yang tidak melewati jalur khusus dan ikut saringan masuk seperti sipenmaru, UMPTN, SNMPTN, atau apalah namanya yang berubah terus itu? Ternyata informasi yang saya baca dari surat kabar, ada keluhan dari beberapa calon mahasiswa yang tidak sanggup membayar uang masuk yang standar tetapi sebesar 5 jutaan. Akhirnya calon mahasiswa tersebut mengundurkan diri. Sungguh sangat disayangkan.

Sebenarnya pemerintah menyediakan beasiswa kepada para mahasiswa yang disalurkan melalui kampus masing-masing. Misalnya kampus tempat saya mengajar menyediakan beasiswa yang membebaskan biaya SPP selama setahun kepada mahasiswa yang layak menerima beasiswa. Ada dua jenis biasanya yaitu bagi yang tidak mampu dan bagi yang memiliki keunggulan dari sisi akademis. Bagaimana dengan mahasiswa yang tidak sanggup dari awal? Jangan khawatir, ada jenis beasiswa lain yaitu beasiswa Fullbright yang akan membebaskan mahasiswa dari membayar kuliah sejak awal. Beasiswa jenis ini ditujukan kepada lulusan SMA yang diundang oleh kampus kami untuk diwawancara. Untuk jurusan komputer sangat disayangkan dua calon penerima beasiswa fullbright mengundurkan diri karena diterima di Universitas Negeri Jakarta (UNJ) dan memilih untuk masuk UNJ walaupun tidak beasiswa.

Bagaimana dengan dosen dan karyawan? Jangan khawatir, ada jenis beasiswa lainnya yang siap menanti. Untuk karyawan ada beasiswa sebagai tenaga kependidikan. Sayang, beasiswa jenis ini ditujukan untuk karyawan di kampus negeri. Terpaksa beberapa karyawan di kampus kami (non dosen) kuliah dengan biaya mandiri. Dan bagi dosen, tentu saja harapan satu-satunya adalah beasiswa mengingat saat ini mengambil S2 dan S3 tidak murah lagi. Jangankan uang pribadi, kampus saja sangat keberatan untuk membiayai dosennya kuliah lagi. Apalagi saat ini tuntutan studi lanjut tidak dapat dihindarai, yakni dosen harus S2 dan jika ingin naik pangkat menjadi lektor kepala harus memiliki jenjang pendidikan S3.

Beasiswa Program Pascasarjana Dalam Negeri

Beasiswa ini adalah beasiswa andalan para dosen karena kampus yang dituju adalah kampus dalam negeri sehingga tidak mengganggu aktivitas mengarjar (asal kampus tujuan tidak terlalu jauh) dan keluarga. Beasiswa ini mudah didapat asalkan kita diterima di kampus tujuan dan syarat-syarat administrasi lain memenuhi, dengan syarat utama adalah Nomor Induk Dosen (NIDN).

Karena banyak yang menginginkan beasiswa dalam negeri maka kapasitasnya menjadi sangat terbatas. Apalagi ketika syarat S2 dan S3 terhadap dosen diterapkan oleh DIKTI. Untuk S2 sedikit lebih mudah karena memang kapasitasnya bisa ditingkatkan di kampus tujuan beasiswa. Tetapi untuk program S3 sangat sulit mengingat keterbatasan profesor pembimbing. Untuk ilmu komputer UI saja, antrian sudah panjang dimana tiap profesor sudah membawa calon kandidat doktor masing-masing. Jangan harap calon mahasiswa yang datang tiba-tiba bisa diterima menjadi calon mahasiswa S3. Dan salah satu yang terberat adalah ketika wawancara terkadang kita diminta menunjukan publikasi karya ilmiah kita di jurnal internasional.

Beasiswa Program Pascasarjana Luar Negeri

Untuk yang malas menembus kampus dalam negeri yang persaingannya ketat, ada baiknya mencoba mendaftar di luar negeri. Biasanya jika mendengar luar negeri para dosen langsung lemas mengingat syarat yang ketat, terutama kemampuan bahasa. Belum lagi masalah lainnya yaitu harus meninggalkan keluarga bagi yang sudah memiliki anak dan istri.

Untuk dosen sebenarnya dari ketika sebelum menjadi dosen harus sudah mempersiapkan sendiri kemampuan berbahasanya, terutama bahasa Inggris. Banyak kursus-kursus yang bertebaran yang membantu kita dari speaking, listening, reading, hingga writing. Sebaiknya memang kampus memberikan bantuan kursus, pelatihan, dan sejenisnya kepada dosennya agar siap untuk melanjutkan studi ke luar negeri. Oiya, selama tulisan ini dibuat, syarat Toefl yang berlaku adalah minimal 500 dan toefl ITP, bukan prediksi (yang harganya sekitar 200/300 ribu rupiah). Untuk kampus negeri sepertinya studi lanjut ke luar negeri menjadi satu keharusan, karena kualitas kampus di luar negeri berbeda dengan kampus dalam negeri terutama dari sisi publikasi karya ilmiah. Walaupun UI, UGM, ITB, dan kampus lapis atas memiliki rangking di atas beberapa kampus luar negeri. Tetapi tentu saja agak janggal jika dosen UI kuliah di UGM atau ITB. Berbeda jika dosen UI studi lanjut di MIT misalnya.

Bagaimana jika kemampuan berbahasa sudah terpenuhi? Langkah selanjutnya adalah mendaftar ke kampus luar negeri. Di sinilah seninya, karena tiap kampus berbeda baik dari sisi waktu pendaftaran maupun sistemnya. Tetapi kebanyakan kampus luar negeri, khususnya yang studi S3, harus mencari profesor yang siap menjadi supervisor / advisor kita. Terkadang mereka memberikan suatu tugas/pertanyaan yang harus kita jawab dan terkadang walaupun supervisor sudah ok, kita diharuskan berangkat ke sana untuk tes masuk. Untungnya beberapa kampus tidak mengharuskan kita ikut test ke kampus tujuan (ke luar negeri), tetapi hanya menyerahkan sertifikan GMAT/GRE yang mirip dengan Test Potensi Akademik (TPA). Bahkan beberapa kampus membebaskan test masuk jika memang kita sudah memiliki banyak tulisan di jurnal-jurnal bertaraf internasional, syukur-syukur terindeks di scopus, ieee, thomson, dan index internasional lainnya.

Jika kita sudah diterima dan dibuktikan dengan surat tanda terima (letter of acceptance) yang tanpa syarat, maka kita siap mendaftar beasiswa baik ke DIKTI maupun beasiswa lainnya, misalnya LPDP dari kementrian keuangan. LOA yang tanpa syarat, sering diistilahkan dengan, LOA unconditional, menjadi syarat mutlak, karena pemerintah akan memberikan bantuan beasiswa ke calon mahasiswa yang sudah pasti akan berangkat jika didanai. Jika masih ada satu syarat tertentu (di luar syarat keuangan) maka dikhawatirkan ketika pemerintah menyetujui pencairan beasiswa, calon mahasiswa itu ditolak kampus tujuan karena tidak memenuhi kondisi yang diminta oleh pemberi LOA. Mengapa demikian? Karena saya sendiri mengalami hal seperti ini, yaitu harus meminta lagi kampus tujuan LOA yang tanpa syarat. Biasanya akan diberikan ketika kita memunuhi syarat yang diminta.

Untuk beasiswa DIKTI, syarat terberat sebenarnya adalah wawancara. Karena ini merupakan penentu apakah kita disetujui atau tidak untuk diberi beasiswa. Karen sifatnya wawancara, maka aspek subjektif menjadi sangat menentukan. Saya termasuk korbannya. Sebagai dosen fakultas teknik, saya termasuk tipe yang sulit dalam berbicara. Dalam bahasa Indonesia saja masih sulit, apalagi bahasa Inggris. Walaupun IELTS saya 6.0 tetapi pada wawancara pertama, bahasa Inggris saya dianggap kurang. Akhirnya saya ikut wawancara ulang. Dan anehnya, ketika diwawancara oleh pewawancara yang lain, saya dinyatakan tidak ada masalah dengan bahasa Inggris saya. So, berdoalah semoga mendapat pewawancara yang baik. Dari sekitar 6 pewawancara ada beberapa yang kerap tidak meluluskan calaon penerima beasiswa. Saya masih ingat wajah-wajahnya, terkadang geram juga sih. Tetapi mereka sebenarnya menerima beban yang cukup berat dari negara. Untuk yang dosen swasta, bersiap-siaplah Anda bertarung dengan dosen-dosen negeri yang merupakan dosen pilihan. Tentu saja tidak perlu rendah diri bagi dosen-dosen swasta, santai saja.

Wawancara

Beberapa pertanyaan yang muncul dalam sesi wawancara kebanyakan tidak jauh berbeda antara satu calon dengan calon lainnya. Apalagi untuk pewawancara yang sama. Tetapi jika pewawancara yang berbeda tentu saja beda pertanyaannya. Ciri khas ketika wawancara adalah, ketika dua orang pewawancara mewawancarai kita, salah satunya adalah yang aktif dan seperinya penentu kelulusan. Tentu saja tidak bisa saya sebutkan di sini. Ada cerita lucu juga ketika calon dari makasar mendapat giliran dan ketika tahu bahwa sekarang giliran dia, dia enggan masuk (karena tahu yg mewawancara “killer”), sampai petugas administrasi memaksa dia masuk. Jika dia menolak berbahaya juga, karena saya berikutnya. Akhirnya saya dipanggil untuk wawancara di meja sebelahnya yang lebih lunak dan kabarnya banyak meluluskan. Ciri khas pewawancara yg masuk kategori “baik” adalah ketika menolak, walaupun tidak diumumkan saat itu, dia memberikan alasan yang kuat atas penolakannya. Alasannya pun logis dan kebanyakan diterima oleh calon yang diwawancarai, dimana setelah wawancara si calon akan berusaha memenuhi persyaratan yang kurang tersebut.

Berikut ini tips yang mungkin bisa jadi pegangan.

Pewawancara adalah manusia biasa, jadi jangan buat dia kesal, sebal, dan terlalu banyak mencari alasan. Ketika datang hormatilah dia sebagai orang yang diberi tanggung jawab oleh negara memilih calon penerima beasiswa yang jika ditotal untuk S3 berkisar antara setengah hingga dua millyar hingga lulus. Oiya, wawancara dengan bahasa Inggris, lebih sulit dari test Speaking IELTS karena di sini selain bahasa Inggris yang baik, harus juga sesuai dengan isinya. Sementara IELTS walaupun kita menjawab dengan bohong/ngarang, jika tata bahasa benar, tetap dianggap benar (hanya menguji bahasa bukan konten).

Khusus yang akan ambil S3, pasti akan ditanyakan tema/judul proposal disertasi dengan bukti email antara kita dengan supervisor. Bukan hanya sekedar supervisor kita setuju untuk membimbing kita melainkan juga komunikasi mengenai judul tersebut. Saya diserang di wilayah ini karena ketika calon supervisor setuju menurut saya sudah beres, tetapi ternyata harus berlanjut komunikasi tersebut mengenai tema proposal kita.

Untuk yang memiliki LOA masih condisional, saran saya adalah berdoa. Karena kalau kita lihat pengumuman hasil wawancara kebanyakan gagal yaitu LOA yang masih kondisional. Seharusnya kita memenuhi kondisi pada LOA, minimal tinggal masalah keuangan, karena DIKTI melihat jika syarat LOA masalah keuangan, DIKTI menganggap semua yg melamar beasiswa pasti minta ditanggung biaya kuliahnya (ditambah biaya hidup pula).

 Mungkin segini saja bagi-bagi ceritanya, jika masih belum jelas bisa email ke saya atau tulis komentar di bawah. Oiya, andalan beasiswa dikti saat ini yang saya tahu adalah DIKTI (untuk yg belum punya NIDN mendaftar di beasiswa unggulan, sedang yang sudah ada NIDN masuk ke BPPLN). Sementara LPDP (saya lupa situsnya, searching aja di GOOGLE) memiliki syarat usia yg ketat, yaitu 35 tahun, beda dengan BPPLN Dikti yang 45 tahun. Selamat mencoba, tidak ada salahnya, tidak ada suap menyuap untuk pendaftaran beasiswa.