Membuat Objek dengan PHP

Biasanya materi pemrograman berorientasi objek (PBO) menggunakan Java. Namun saat ini sebagian besar bahasa pemrograman memiliki kemampuan membuat program berorientasi objek, salah satunya adalah PHP. Walaupun tren bahasa ini menurun di dunia, kalah dengan Python, tetapi di Indonesia masih banyak digunakan.

Untuk basis data, penggunaan basis data khusus Objek masih sedikit yang berminat mengingat basis data relasional sudah digunakan sejak lama. Namun dapat diatasi dengan penggunaan konsep Object Relational Data Base Management System (ORDBMS). Kalau basis data objek menyimpan objek mobil misalnya, ORDBMS menyimpan mobil dalam bentuk roda, mesin, sasis dan elemen lainnya.

Class

Salah satu syarat wajib PBO adalah adanya class. Fungsinya membuat sebuah objek sejenis sebagai templatenya, berisi atribut dan method atau operation. Berikut ini contoh diagram kelas untuk kelas barang.

Tiap class juga memiliki sebuah method yang bernama constructor yang fungsinya membangkitkan sebuah objek. Berikut ini class Barang dalam bahasa PHP. Note: karena bahasa PHP, jangan lupa mengawali dengan tag: <?php

Potongan kode di atas menunjukan fungsi constructor yang menginisiasi database relational. Di bagian bawahnya ada method insert yang berfungsi memasukan data barang, di bawahnya update dan seterusnya, sering disebut dengan istilah Create, Read, Update, dan Delete (CRUD). Sebelumnya siapkan saja database MySql.

Objek

Jika kelas yang diibaratkan template sudah ada, sebuah objek dapat dibentuk. Jadi prinsipnya ketika ingin mengakses CRUD, aplikasi tidak langsung terhubung ke database, melainkan membentuk objek terlebih dahulu.

Pertama-tama impor kelas yang dibutuhkan dengan include ‘Barang.php’; yang sesuaikan dengan letak/path-nya. Sebaiknya dibuatkan dalam satu folder khusus, misalnya classes. Perhatikan bagaimana membuat sebuah objek barang. Standar-nya nama objek diawali huruf kecil, sementara nama kelas huruf besar. Di sini $ merupakan standar bahasa PHP sebagai variabel.

$barang = new Barang();

Ketika sudah terbentuk objek dari kelasnya (class Barang) maka kita dapat mengakses method yang dimiliki misalnya read, di sini contohnya membaca id_barang=1, yang jika dijalankan aplikasinya tampak seperti gambar di bawah. Sekian, mudah-mudahan tertarik dengan sistem berorientasi objek.

Iklan

Tag Cloud dengan HTML

Tag cloud atau awan tag adalah representasi visual dari kata-kata kunci atau tag yang paling umum digunakan dalam suatu dokumen atau set dokumen. Tag cloud biasanya terdiri dari sekelompok kata-kata yang ditampilkan dalam ukuran yang berbeda-beda, dengan ukuran yang lebih besar menunjukkan bahwa kata-kata tersebut lebih sering muncul dalam dokumen atau set dokumen yang dianalisis. Tag cloud digunakan untuk membantu pengguna memperoleh pemahaman yang lebih cepat tentang topik atau konten dokumen yang dianalisis.

Berikut ini kita coba membuat tagcloud dari scrapping www.newsapi.org yang merupakan platform penyedia layanan berita berbasis web (lihat pos terdahulu). Layanan ini menyediakan akses ke ribuan artikel berita dari berbagai sumber terpercaya di seluruh dunia. NewsAPI.org adalah salah satu layanan terbaik untuk pengembang dan pembuat aplikasi yang ingin mengintegrasikan berita ke dalam aplikasi mereka. Berikut ini adalah contoh akses API:

https://newsapi.org/v2/top-headlines?country=id&apiKey=APIKEY

Untuk mendapatkan API Key dari NewsAPI.org, ikuti langkah-langkah berikut:

  • Kunjungi situs web NewsAPI.org di https://newsapi.org/.
  • Klik tombol “Get API Key” di sudut kanan atas halaman web.
  • Isi formulir pendaftaran yang tersedia dengan alamat email Anda dan kata sandi yang aman, kemudian klik “Get Started”.
  • Verifikasi alamat email Anda dengan mengklik tautan yang dikirimkan ke email Anda.
  • Login ke akun NewsAPI.org yang baru saja Anda buat.
  • Setelah login, klik “Dashboard” untuk melihat API Key Anda.
  • Salin API Key yang ditampilkan dan gunakan dalam permintaan API Anda.

Perlu diingat bahwa NewsAPI.org menyediakan berbagai paket layanan dengan harga yang berbeda-beda. Paket gratis memiliki batasan permintaan API per hari, sedangkan pada paket berbayar, batasan permintaan dan fitur yang lebih banyak tersedia. Pastikan untuk memilih paket yang sesuai dengan kebutuhan Anda. Berikut ini terapannya untuk membuat Tagcloud.

<!DOCTYPE html>
<html>
<head>
<title>Tag Cloud dari Scraping NewsAPI</title>
</head>
<body>
<h1>Tag Cloud dari Scraping NewsAPI</h1>
<?php
$apiUrl = “https://newsapi.org/v2/top-headlines?country=id&apiKey=API KEY“; // Ubah kode “id” menjadi kode negara yang ingin Anda scrap beritanya
$response = file_get_contents($apiUrl); // Ambil data dari NewsAPI dalam format JSON
$newsData = json_decode($response); // Ubah data JSON menjadi objek PHP
$tags = array(); // Buat array kosong untuk menyimpan tag yang diambil dari berita
foreach ($newsData->articles as $article) { // Loop setiap artikel dalam objek berita
$title = strtolower($article->title); // Ambil judul artikel dan ubah ke huruf kecil
$words = explode(” “, $title); // Pisahkan kata-kata dalam judul artikel ke dalam array
foreach ($words as $word) { // Loop setiap kata dalam array
if (strlen($word) > 3) { // Jika kata lebih panjang dari 3 karakter
array_push($tags, $word); // Tambahkan kata ke dalam array tag
}
}
}
$tagCounts = array_count_values($tags); // Hitung frekuensi kemunculan setiap tag
arsort($tagCounts); // Urutkan tag berdasarkan frekuensi kemunculan dari yang paling banyak
foreach ($tagCounts as $tag => $count) { // Loop setiap tag dan frekuensi kemunculannya
$tagSize = 15 + ($count * 4); // Tentukan ukuran tag berdasarkan frekuensi kemunculan
echo “<a href=’#’ style=’font-size: ” . $tagSize . “px;’>$tag</a> “; // Tampilkan tag dalam elemen anchor dengan ukuran yang ditentukan
}
?>
</body>
</html>
Tampilannya kira-kira seperti ini. Tampak Piala Dunia Indonesia U-20 memiliki frekuensi yang tertinggi di antara kata-kata lainnya. Selamat mencoba.

Mengelola File CSV untuk Training Web-Python dengan PHP

Beberapa sampel prediksi dengan neural networks (NNs) biasanya menggunakan dataset yang tersedia pada library yang digunakan, misalnya Sklearn. Namun dalam implementasinya dataset harus disediakan terlebih dahulu, misalnya dengan file Comma Separated Valud (CSV). Oleh karena itu keterampilan mengelola data sendiri tersebut sangat diperlukan. Postingan ini mengilustrasikan bagaimana mengelolanya.

Mengunduh Dataset

Untuk yang sedang mengerjakan proyek akhir biasanya mengambil data sendiri lewat survey. Untuk latihan bisa akses link berikut: iris.csv. Setelah itu ekstrak file archive tersebut. Tempatkan di folder dimana aplikasi akan dibuat.

Mempersiapkan Interace Untuk Training

Data iris memiliki empat input dan tiga kelas output: setosa, versicolor, dan virginica. Untuk mudahnya, bertanya saja kepada ChatGPT dengan kata kunci sebagai berikut:

create html code to upload csv file and use php to open python for neural network training and save trained h5

Berikutnya akan disediakan 1 index.html untuk interface utama, 1 file upload.php untuk, 1 file train.py untuk mentrainingnya Hasil tersimpan dalam format H5. Perhatikan, karena label/target masih string maka perlu dikonversi menjadi number. Untuk jelasnya silahkan lihat video berikut ini:

 

 

Install Apache-2 dan PHP-MyAdmin di Ubuntu

Mahasiswa sebaiknya memahami Ubuntu, karena sebagian besar server menggunakan Ubuntu. Nah, untuk belajar, bisa juga dengan Ubuntu desktop karena fungsi-fungsi terminalnya mirip, namun lebih mudah utk newbie karena bisa baca pdf, transfer file dengan cara drag dan lain-lain.

Jalankan VMWare Workstation dan Ubuntu. Masuk ke terminal untuk menjalankan instruksi-instruksi yang dibutuhkan. Tekan simbol 9 titik di pojok kiri bawah, lalu cari Terminal >_.

A. INSTAL APACHE 2

Setelah terminal muncul di layar. Lakukan langkah-langkah berikut untuk instalasi Apache2:

1. Masuk ke root dengan mengetik:

sudo su

Masukan password root Ubuntu kta. Perhatikan simbol # yang menggantikan $ pertanda kita sudah masuk ke root.

2. Lakukan update dengan mengetik:

apt update

Tunggu beberapa saat hingga selesai.

3. Install Apache 2 dengan mengetik:

apt install apache2

Saat kita diminta konfirmasi apakah lanjut (karena akan mengambil memory harddisk), tekan y dilanjutkan dengan ENTER.

4. Selamat, Apache2 telah berhasil diinstall, pastikan dengan mengetik:

apache2 -version


B. SETING FIREWALL APACHE2

Agar webserver Apache dapat diakses dari luar, Firewall perlu diseting dengan langkah sebagai berikut:

1. Untuk mengetahui apa saja aplikasi yang aktif Firewall-nya ketik: ufw app list. Selanjutnya ijinkan Apache diakses dari luar dengan mengetik:

ufw allow apache2

Cek dengan mengetik: ufw status, dan pastikan Status: inactive.

2. Restart Apache2 dengan mengetik:

systemctl restart apache2

Untuk melihat status Apache2, ketik:

Systemctl status apache2

Pastikan Apache aktif dengan melihat tulisan ‘active (running)’.

NOTE: tiap selesai melihat status, untuk kembali ke prompt tekan Ctrl+C dilanjutkan menekan ENTER.


3. Berikutnya kita akan menguji apakah Apache2 yang telah kita instal dapat diakses dari device lain. Ketahui terlebih dahulu ip address-nya dengan mengetik:

ip a

Baca ip address-nya, misalnya untuk data berikut ip-nya: 192.168.72.128.


4. Selanjutnya buka device lain, misalnya Windows yang menjadi HOST VMWare. Buka browser dan ketik alamat ip-nya, misal 192.168.72.128. Pastikan muncul tampilan sebagai berikut.


Jika tampil dan terlihat tulisan ‘It works’, selamat kita berhasil menginstal Apache2. Jika tidak muncul pastikan kembali alamat ip addressnya apakah sudah sesuai.

C. INSTALL PHP

1. Web server yang sudah kita instal dan seting, perlu disiapkan bahasa pemrogramannya, antara lain php. Ketik terlebih dahulu untuk update:

apt update

2. Instal php dengan mengetik:

apt install php

Tekan y ketika diminta konfirmasi. Tunggu sesaat hingga proses instalasi selesai. Jika sudah cek dengan mengetik:

php -v

Pastikan versi php muncul di terminal.

3. Berikutnya menginstal library dari paket php dengan mengetik:

apt install libapache2-mod-php

Kembali restart apache2

systemctl restart apache2

D. INSTALL MYSQL

1. Seperti biasa, update:

apt update

2. Instal MySQL dengan mengetik:

apt install mysql-server

Tekan y ketika kita diminta konfirmasi karena dibutuhkan 200 Mb untuk MySQL Server yang akan dipasang.

3. Cek status MySQL dengan mengetik:

systemctl status mysql

E. INSTALL PHPMYADMIN

1. Update terlebih dahulu:

apt update

2. Instal Phpmyadmin dengan mengetik:

apt install phpmyadmin php-mbstring php-zip php-gd php-json php-curl

3. Gunakan SPASI dan TAB untuk menceklis [ ] apache2 dan menekan <Ok>.


  1. Tnggu beberapa saat hingga muncul Package configuration. Pilih <Yes>.
  2. Ketik password untuk pypmyadmin, misal: P4ssword!

F. MENGAMANKAN MYSQL

1. Set dulu passwore ‘root’@’localhost’. Ketik mysql untuk masuk ke MySQL Gunakan kode berikut untuk memberi password root: P4ssword!

ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘P4ssword!’;

2. Keluar dari MySQL dengan mengetik: exit. Untuk membuat MySQL secure, ketik:

mysql_secure_installation

3. Tekan y ketika diminta konfirmasi. Lalu pilih level password policy yang diinginkan, misalnya STRONG.

4. Jika ingin mengganti password, tekan y.

5. Tekan y hingga selesai (muncul pesan All Done).

6. Restart MySQL dengan mengetik: systemctl restart mysql dilanjutkan dengan mengecek status dengan mengetik: systemctl status mysql. Pastikan status: Active (Running).

7. Akses phpmyadmin dengan browser dari device lain. Pastikan berjalan dengan baik.


Berikut ini beberapa catatan ketika ada kendala instalasi Phpmyadmin.

1. Jika terkendala dengan instalasi, set dahulu policy ke low, masuk ke MySQL

mysql -u root -p

2. masukan password, misal di sini: P4ssword! Terkadang instalasi bermasalah karena password yang kurang ‘strong’. Turunkan security menjadi LOW dahulu:

SET GLOBAL validate_password.policy = 0;

3. Uninstall komponen validasi password:

UNINSTALL COMPONENT ‘file://component_validate_password’;

4. Setelah instal Phpmyadmin lanjutkan dengan instal validasi:

INSTALL COMPONENT ‘file://component_validate_password’;

5. Set validasi password menjadi STRONG:

SET GLOBAL validate_password.policy = STRONG;

6. Cek sekurity:

SHOW VARIABLES LIKE ‘validate_password%’;

7. Pastikan sekurity STRONG.

Menginstall Composer Untuk Aplikasi-Aplikasi Framework PHP

Postingan yang lalu membahas menjalankan aplikasi yang telah dibuat dengan framework Laravel. Diperlukan aplikasi Composer yaitu sebuah tool dependency manager untuk bahasa pemrograman PHP. Dengan menggunakan Composer, kita dapat mengelola dan mengatur dependensi (library atau package) yang diperlukan oleh sebuah proyek PHP.

Secara lebih spesifik, Composer memungkinkan kita untuk:

  • Menginstal dan mengupdate library atau package PHP dengan mudah.
  • Mengelola versi dari library atau package yang digunakan pada proyek kita.
  • Menyediakan autoload sehingga kita tidak perlu lagi melakukan require manual pada setiap file.

Silahkan buka situs resminya, lalu download Composer-Setup.exe. Setelah itu jalankan saja.

Pilih saja install for all users untuk mudahnya.

Di sini kita diminta mengarahkan letak file php.exe yang kita gunakan.

Untuk XAMPP biasanya terletak di folder XAMPP/php.exe. Atau jika ingin langsung ke arah file bisa menggunakan Config pada XAMPP Control Panel yang akan mengarahkan ke folder apache.

Atau bisa juga dengan searching langsung saja. Pilih saja file php.exe hasil pencarian.

Proses selanjutnya adalah instalasi. Jika tidak punya Proxy, lewatkan saja dengan menekan tombol Next.

Sebelumnya, jika kita ingin menambah Path bisa dengan men-ceklis pada pilihan path. Tampak seperti gambar di bawah informasi letak php, versinya, serta lokasi Path. Jika sudah yakin, tekan saja Install untuk melanjutkan proses instalasi.

Jika sudah, tunggu hingga selesai. Selamat, kita telah berhasil menginstall composer. Untuk penggunaannya silahkan lihat post yang lalu untuk menjalankan aplikasi Laravel.

Run Python di Apache

Postingan yang lalu membahas bagaimana menjalankan python di web dengan framework terkenal python, yaitu flask. Ada kemungkinan python akan menggeser php di masa yang akan datang mengingat tren python yang terus meningkat mengalahkan php. Saat ini apache masih menjadi andalan untuk web server php. Oleh karena itu perlu mengintegrasikan python dengan server favorit tersebut.

XAMPP sebagai software yang banyak dipakai untuk menjalankan php dengan databasenya (mysql atau mariadb) dapat diintegrasikan dengan python. Berikut ini tekniknya untuk yang berbasis windows.

Pada dasarnya ada dua hal yang harus dilakukan:

  • Set httpd.conf
  • Menambah header di file python (*.py)

Untuk yang linux agak sedikit rumit mengingat adanya hak akses khusus ke folder-folder linux, misal ubuntu. Silahkan dicoba.

Rest API Sederhana – Read Database dengan GET

Saat ini kebanyakan aplikasi Web menggunakan metode mengakses dengan Application Programming Interface (API). Metode ini berisi web service yang menyediakan fasilitas mengakses data lewat protokol HTTP: GET, PUT, POSH, dan DELETE. Lewat protokol http, yang akan mengakses tidak perlu menggunakan bahasa pemrograman yang mengakses data, misal lewat SELECT pada akses standar SQL.

Dengan API maka data di database serves dapat diakses oleh aplikasi lain yang berbeda platform dan bahasa dengan Web server, misal mengakses lewat aplikasi Android/IOS atau lewat front-end VuJS, React-JS, dan sejenisnya. Jadi API laksana tombol yang dapat diakses oleh aplikasi lain. Berikut ilustrasi penggunaannya, dengan GET yang berfungsi me-read database. Tentu saja dalam implementasinya dibutuhkan token untuk membatasi siapa saja yang bisa mengakses API tersebut.

Software Testing

Salah satu aspek penting dalam software engineering adalah pengujian perangkat lunak. Fungsinya adalah mengetahui apakah aplikasi yang dibuat sesuai dengan kebutuhan (requirements) atau tidak. Ada beragam jenis pengujian, salah satunya adalah vulnerability test. Tes yang masuk kategori black box ini terkadang disebut penetration test karena bertujuan mengetahui apakah aplikasi tersebut memiliki tingkat keamanan yang baik. Biasanya untuk aplikasi-aplikasi berbasis web (web-based).

Banyak software-softaware yang bisa digunakan, salah satu yang gratis adalah OWASP ZAP yang bersifat online tanpa perlu menginstal terlebih dahulu. Silahkan lihat tata cara berikut ini.

Software Tester, Software Quality Assurance, dan sejenisnya banyak dibutuhkan dalam project pengembangan perangkat lunak. Kompetensi ini sudah ada dalam skema Badan Nasional Sertifikasi Profesi (BNSP) di Indonesia.

Pseudocode

Bahasa pemrograman sangat beragam dari yang sulit seperti bahasa rakitan hingga yang paling mudah dengan bantuan Integrated Development Environment (IDE) yang interaktif. Hanya dengan drag and drop mouse, sebuah aplikasi terbentuk. Karena tiap programmer memiliki bahasa pemrograman sendiri, terkadang untuk berkomunikasi membutuhkan bahasa universal tentang sebuah algoritma. Di sinilah peran pseudocode, dimana sebuah alur algoritma dibuat dalam bahasa umum yang dimengerti manusia.

Dalam perjalanannya, pseudocode memiliki kompromi antara bahasa yang mudah dimengerti manusia dengan yang mudah diimplementasikan programmer. Cornel University menawarkan saran dalam pembuatan pseudocode sebagai berikut.

  • Dibuat menyerupai bahasa manusia dan kode program.
  • Hindari detil yang tidak perlu.
  • Jangan menulis yang sudah jelas.
  • Gunakan beberapa sintax program yang lebih ringkas dari bahasa, misal struktur if-then-else.
  • Perhatikan konteks-nya. Terkadang “use quicksort” pada pseudocode cukup jika audiens mengerti. Namun “quicksort” perlu dijabarkan pada kasus tertentu.
  • Jangan melupakan algoritma yang mendasari algoritma yg sedang dibuat pseudocodenya.
  • Seimbangkan antara pemahaman user dan programmer.

Buku-buku referensi internasional, terutama yang membahas metode-metode komputasi memiliki style terntentu dalam pembuatannya. Jurnal-jurnal ilmiah pun memiliki patokan-patokan dasar dalam pembuatan pseudocode. Ada yang merepresentasikan pseudocode dalam Figure/Gambar, ada pula yang menyamakan dengan naskah teks. Masing-masing ada kekurangan dan kelebihannya.

Thomas Cormen dalam buku Algoritma-nya kebanyakan merepresentasikan sebuah pseudocode dalam format fungsi dimana variabel input dimasukan dalam tanda kurung “()”. Selain itu, sebuah penomoran diberikan di tiap baris perintahnya.

Terkadang pembaca awam pun harus memahami seluk-beluk pemrograman, misalnya konsep rekursif yang unik dimana satu fungsi memanggil dirinya sendiri di dalam alur algoritmanya. Contoh sederhana adalah fungsi faktorial berikut.

Untuk lebih jelasnya silahkan simak video youtube berikut, yang masuk dalam materi kuliah logika dan algoritma.

Yuk Ikut Standar dalam Perancangan Sistem

Salah satu yang membuat jengkel mahasiswa ketika mengerjakan skripsi/tugas akhir adalah tidak adanya standar yang harus diikuti, terutama tema-tema perancangan sistem dan pemrograman. Tetapi saat ini sepertinya mulai berkurang karena era online sudah merambah ke semua lini. Sumber-sumber informasi mudah dijumpai lewat variasi-variasinya seperti dalam bentuk blog, video, ebook, milis, grup dan lain-lain. Akibat tidak adanya standar, sering dijumpai perdebatan yang tidak perlu ketika sidang skripsi. Bahkan ada yang curhat ketika seorang mahasiswa dibimbing oleh dua pembimbing berbeda yang tidak seia-sekata. Disuruh oleh pembimbing A merubah mengikuti petunjuknya tetapi oleh pembimbing B diminta hal sebaliknya.

Khusus analisis dan disain basis data sudah dibahas pada postingan sebelumnya, yakni mencari sumber informasi tentang rancangan yang sudah sering dibuat orang. Pola-pola disain pun sudah umum ditemui, kita tidak perlu menemukan ide baru kecuali jika rancangan yang ingin dibuat khusus dengan karakteristik tertentu.

Standar Pemodelan Sistem

Sejak dulu, standar yang digunakan dalam pendidikan adalah buku referensi. Ketika beragumen, sebuah buku dijadikan rujukan akan kebenaran sebuah konsep. Masalah muncul ketika sebuah buku dianggap “kurang tepat” oleh pihak tertentu. Untuk cara aman biasanya akademisi menggunakan buku berstandar internasional. Hanya saja buku-buku jenis tersebut sulit dipahami oleh mahasiswa-mahasiswa kita, terutama para milenial-milenial yang lebih suka hal-hal yang praktis. Mereka butuh contoh-contoh kasus yang khusus yang ada di negara kita. Mau tidak mau buku-buku panduan berbahasa Indonesia yang ringkas sangat dibutuhkan. Masalah muncul ketika buku tersebut agak “kurang standar” walaupun sangat mudah dipahami. Oleh karena itu sebaiknya mahasiswa diajarkan melihat bentuk-bentuk standar resmi, misalnya untuk pemrograman berorientasi objek dapat dijumpai pada situs UML berikut.

Memang tidak ada orang yang memiliki pengetahuan lengkap akan suatu topik tertentu. Namun di era online, kita harus memanfaatkan fasilitas online tersebut. Amat disayangkan banyak dijumpai di jurnal-jurnal nasional penulisan diagram UML yang tidak mengikuti standar yang ada, padahal rancangannya bagus, hanya presentasi saja yang tidak mengikut standar. Bahayanya adalah, artikel tersebut dijadikan sitasi dan referensi sehingga artikel yang lain pun menjadi tidak mengikuti standar.

Contoh Kasus

Salah satu diagram UML yang paling banyak dibuat adalah diagram kelas dan use case. Bahkan saking seringnya use case digunakan ada istilah use case-driven. UML.org menyediakan unduhan versi terbaru untuk melihat standar yang ada. Standar di sini merupakan kesepakatan dari Object Management Group (OMG) dengan vendor-vendor perangkat lunak seluruh dunia. Jadi, jika kita berpatokan dengan situs resminya, pegangan kita menjadi kuat, jauh lebih kuat dibandingkan hanya berpegang pada buku referensi.

Gambar di atas merupakan salah satu contoh yang dibahas dalam UML.org yang dijumpai ketika membahas use case di halaman 643. Saya sendiri baru tahu kalau ada multiplicity dalam use case yang biasanya dijumpai pada diagram kelas. Perhatikan kesederhanaan yang ditampilkan. Sesuai fungsinya, use case memang diperuntukan sebagai penjelasan “apa” yang dilakukan sistem, bukannya “bagaimana”. Jadi jika rancangan use case kita berupa alur “bagaimana”, sudah dipastikan tidak sesuai dengan fungsi utama use case. Use case menggambarkan kewajiban apa saja yang harus diselesaikan programmer pada program yang diusulkan.

Contoh di atas mengharuskan programmer membuat fungsi-fungsi (dikenal dengan istilah functional requirement) dalam diagram use case di atas antara lain withdraw, transfer, deposit, register ATM, dan Read Log. Bagaimana dengan login? Silahkan tambahkan tapi jangan sampai berubah menjadi alur proses mendaftar Deposito dari login, registrasi, dll yang ujung-ujungnya ribet dan use case tidak memiliki fungsi utamanya. Silahkan jelaskan dengan diagram UML lainnya jika ingin detil, misalnya sequence atau activity diagram. Mungkin kita memiliki bentuk yang sedikit berbeda, misalnya tanpa multiplicity 0..1, 0..*, dll, tapi format garis tanpa anak panah perlu menjadi perhatian mengapa tidak ada panah di sana.

Perhatikan contoh lain bagaimana merinci suatu aktivitas dengan activity diagram di atas. Bagaimana fork dan join diimplementasikan dalam diagram aktivitas sebaiknya tetap mengacu standar. Sekian, silahkan kunjungi situs standar UML tersebut, semoga bisa membantu melerai pertengkaran di meja sidang skripsi/tugas akhir.

Merancang Sistem dengan Cepat Lewat Pola Umum Yang Ada

Banyak mahasiswa kesulitan ketika merancang sistem saat merampungkan skripsi atau tugas akhirnya. Sebagian besar melihat rancangan senior-senior yang sudah menyelesaikan rancangan. Tetapi banyak juga rancangan yang menjadi rujukan kurang baik sehingga kesalahan akan merambat ke adik-adik kelasnya.

Untuk sistem berorientasi objek, banyak referensi yang menyediakan pola (pattern) sebuah sistem informasi. Manfaatnya adalah kita bisa menggunakan kembali rancangan yang pernah dibuat. Biaya pembuatan sistem pun menjadi murah, bahkan sepertinya tidak masuk akal dengan harga yang murah itu. Tetapi dengan menggunakan pola yang pernah ada, sepertinya masuk akal karena perancang sistem tinggal menggunakan saja. Beberapa vendor pembuat sistem membedakan bayaran ke tim perancang jika sistem yang dibuat hanya menggunakan pola yang ada. Sementara itu jika tim membangun pola baru, perusahaan pembuat software itu akan membayar lebih karena pola yang dibuat menjadi aset perusahaan.

Transaksi

Untuk file master (data nasabah, data barang, data mahasiswa, dan sejenisnya) sepertinya tidak ada masalah bagi perancang. Hal ini karena hanya melibatkan operasi create, read, update, dan delete (CRUD). Teknik bagaimana proses penyimpanan sudah standar tingga memakai saja tergantung jenis bahasa pemrograman yang digunakan. Nah, untuk transaksi berbeda karena melibatkan alur proses bisnis. Untuk yang standar digunakan seperti penjualan, pembelian, pendaftaran, dan yang sering dijumpai sepertinya tidak ada masalah. Tetapi untuk domain tertentu seperti kedokteran, data warehouse, dan sistem lain yang jarang dijumpai atau masih baru sangat sulit didapat. Untuk merancang dari nol pun sepertinya membutuhkan waktu yang lama. Memanfaatkan jasa konsultan pun membutuhkan kocek yang tidak murah.

Sumber Informasi Pola Disain Sistem

Banyak buku yang menyediakan pola sistem informasi, salah satu penulis yang rajin membuat pola sistem adalah Martin Fowler. Khususnya yang tertarik dengan sistem berorientasi objek. Namun salah satu informasi yang murah-meriah dan cukup baik polanya adalah link berikut ini.

Silahkan cari pola yang cocok dengan rancangan yang sedang kita buat. Selain transaksi tertentu seperti peminjaman, pembelian, penyewaan, dan lain-lain, pola tersebut untuk domain spesifik (business rule) tertentu seperti lembaga asuransi, hotel, farmasi, kedokteran, dan lain-lain sehingga bisa lebih akurat dibanding jika hanya mengandalkan jenis transaksinya. Berikut ini contoh untuk penyewaan apartemen.

Perhatikan, ternyata tersedia juga model logika (logical data model) selain model fisik/file (physical data model). Jadi untuk para mahasiswa jangan sampai berpusing-pusing ria merancang sesuatu yang sudah ada, apalagi jika hasilnya “nyeleneh”. Untuk DBMS bisa mengunakan produk yang banyak tersedia di pasaran, misalnya untuk kasus pembelian barang dengan database sederhana (Microsoft Access) berikut ini.

Menggunakan RDBMS untuk Pemrograman Berbasis Obyek

Di ruangan tampak buku-buku analisa disain yang lumayan tebal. Kebanyakan tentang analisa dan disain sistem berorientasi obyek. Buku yang ternyata milik rekan yang digunakan ketika ambil S2 belasan tahun yang lalu itu cukup menarik dan “wajib” dibaca oleh pemerhati mata kuliah analisa dan disain sistem informasi, khususnya yang tertarik dengan pemrograman berbasis obyek.

 

Ada satu bab yang menarik yaitu pembahasan mengenai penggunaan RDBMS ketika mengimplementasikan pemrograman berbasis obyek. Ivar Jacobson, pengarang buku berjudul “Object Oriented Software Engineering” sekaligus salah satu pencetus UML menyarankan beberapa teknik berikut ini.

  • Problem utama ketika menerapkan konsep obyek ke sistem basis data relasional adalah masalah impedansi. Di sini aplikasi berbasis obyek harus melekat dengan basis data. Padahal konsep RDBMS bebas platform aplikasi. Untuk itu perlu mengurangi kelekatannya dengan sedikit mengatur pentabelannya.
  • Konversikan atribut menjadi field atau kolom dalam tabel. Jika tidak cukup, buat satu tabel baru yang mengakomodasi atribut yang kompleks yang dimiliki oleh aplikasi berbasis obyek.
  • Instansiasi pada aplikasi berbasis obyek dikonversikan menjadi record atau baris pada tabel RDBMS.
  • Ketika dijumpai satu relasi [0..N], buat satu tabel baru dengan kunci diambil dari bagian yang bukan “many”. Kasus ini sering dijumpai ketika membuat tabel “detil pemesanan” ketika dijumpai jumlah pesanan yang lebih dari satu untuk satu orang pelanggan.
  • Kasus yang terberat adalah masalah inheritance dimana ada sedikit sudut pandang dalam mengkonversikan menjadi RDBMS. Dua pilihan yang mungkin diambil antara lain: 1) membuat kelas abstrak dalam satu tabel, dan 2) tidak membuat kelas abstrak. Masing-masing punya kelemahan dan kelebihan. Untuk kecepatan akses, pembuatan kelas abstrak menjadi tabel tersendiri (pilihan 1), mengakibatkan lambatnya proses ketika melakukan proses “join” pada instruksi SQL.

Memang dari sudut pandang pemrograman berbasis obyek, RDBMS terlihat sangat primitif karena membatasi kelas dalam tipe data tertentu, ditambah lagi tidak bisa menyimpan method/operasi dalam suatu tabel, dan mengandalkan aplikasi. Demikian, resensi singkat, semoga bermanfaat.

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.

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: