Menerapkan Revolusi Industri 4.0 dalam Keseharian

Seperti biasa ketika masuk kerja jam 8 –an, sepi, hanya staf tata usaha dan beberapa dosen yang ada jadwal mengajar. Postingan ini terinspirasi dari siaran radio dalam perjalanan ke kampus yang membahas bagaimana bisnis di era revolusi industri 4.0.

Kembali ke kisah sunyi-sepi-sendiri tadi. Memang ada mesin absen, tetapi fungsinya sebatas setor biometrik (wajah atau sidik jari). Nyaman juga sih, bisa luntang-lantung selepas absen, begitu juga ketika jam pulang. Jika patokannya Tri Darma, sepertinya rata-rata tidak bagus-bagus juga, jika sebagai pembandingnya adalah kampus seusia. Berarti ada sesuatu yang tidak beres kampus dalam mengelola. Mungkin salah satunya adalah ketertinggalan teknologi kampus dengan teknologi yang digunakan karyawannya.

Revolusi Industri 4.0

Komponen penting versi industri 4.0 adalah cyber phisical system, internet of things (IoT), dan bio-technology. Karena kampus juga termasuk institusi bisnis, khususnya jasa, maka mau tidak mau harus mengikuti era-nya jika tidak ingin tertinggal. Salah satu aspek khas “internet of things” perlu diterapkan dengan beberapa metode artificial intelegent-nya (AI). Jika dirasa fingerprint sekali masuk dan sekali keluar tidak memenuhi rasa keadilan, ganti saja dengan berbasis AI, entah bagaimana caranya. Saya teringat kakak saya yang banyak bisnisnya, salah satunya cuci mobil. Dia menggunakan prinsip bagi hasil terhadap tim pencuci. Saya mempertanyakan, apakah tidak khawatir dibohongi? Dia menjawab, “kan ada CCTV, kita bisa melihat berapa mobil yang dicuci, lihat live atau rekamannya”. Jadi kehadiran fisik seperti inspeksi mendadak dan sejenisnya sudah bukan era-nya lagi, biar sistem yang berbicara. Rapat-rapat yang menuntuk kehadiran fisik pun sepertinya tidak masuk kategori industri 4.0.

Kapten Stark

Penggemar film marvel pasti tahu Mr. Stark, sang Iron Man. Lihat bagaimana dia menerapkan IoT dengan cyber physical systemnya dimana mesin dan mesin berkomunikasi, bukan hanya orang dengan mesin. Bahkan Dr. Banner (Hulk) yang berprofesi dokter pun tampak lihai menggunakan IT di markas avengers, teknologi yang memang makin menjadi pegangan sehari-hari kita saat ini bukan hanya orang IT. Bahkan dalam satu episodenya, kapten Stark belajar astrofisika hanya dalam semalam. Maaf, jadi ngomongin film. Tapi gambaran di film tersebut cukup baik menggambarkan revolusi industri 4.0, terlepas dari keanehan-keanehan yang memang wajar dalam sebuah film.

Jiwa Kewirausahaan (Enterpreneurship)

Sehabis lulus studi terakhir, saya diundang ke kampus internasional berkat undangan dari teman yang mengenal orang-orang di kampus itu, dan karena memang banyak waktu luang jadi sering kesana-kemari, datanglah iseng-iseng ke kampus tersebut. Saya tercengang ketika salah satu ketua prodi menanyakan bisnis atau usaha apa yang saat ini dilakukan selain mengajar, di sesi wawancara. Sebuah pertanyaan “out of the box” yang jarang ditanya dalam sebuah wawancara menjadi seorang dosen. Dan kebetulan pula kampus existing diambil alih dan dapat pesangon, akhirnya kembali lagi di cerita bisnis kakak saya, uang tersebut dibuat usaha dengan penghasilan perbulannya yang hampir menyamai gaji pokok golongan III/a. Dengan memanfaatkan IoT, aspek geografis dapat teratasi dan masih bisa mengajar walau sambil berwirausaha.

Kembali ke dunia nyata dan terbangun dari lamunan, terlihat banyak tumpukan kardus yang sepertinya paket di ruang dosen. Ternyata banyak juga yang bisnis online. Tadinya saya fikir dosen bakal terdisrupsi, ternyata dosen malah mendisrupsi bidang-bidang lain, tentu saja jangan ke politik seperti dosen di sebuah univ di Bandung yang jadi tersangka karena ujaran kebencian di medsos.

Membuat Kelas Transaksi dengan Basis Data Objek

Mirip dengan tabel master dan tabel transaksi pada basis data relasional, pada pemrograman berorientasi objek membutuhkan juga tabel transaksi yang melibatkan lebih dari dua tabel. Sebagai contoh adalah mahasiswa yang mendaftarkan kelas yang diikutinya lewat kelas registrasi. Di sini kelas registrasi memerlukan kelas Mahasiswa dan kelas Kelas yang diikuti. Berikut kode untuk membuat kelas Kelas.

public class Kelas {
String kodemk;
String namamk;
int sks;
public Kelas(String kodemk, String namamk, int sks){
this.kodemk=kodemk;
this.namamk=namamk;
this.sks=sks;
}
public void display(){
System.out.println(“Kode MK: “+kodemk+”| Nama MK: “+namamk+” | Jlh SKS: “+sks+”SKS”);
}
}

Seperti biasa tiap kelas memiliki nama, atribut dan operasi. Karena hanya sebagai latihan, pada kelas ini tidak dimasukan kelas untuk operasi create, read, update and delete (CRUD). Hanya operasi display yang disertakan untuk memunculkan atribut-atribut kelas Kelas antara lain: kodemk, namamk, dan sks yang berturut-turut bertipe string, string, dan integer.

Dengan cara yang sama kita bisa membuat kelas Mahasiswa dengan atribut: nama, usia, dan jurusan. Tentu saja hanya sekedar contoh, karena biasany membutuhkan juga nomor pokok mahasiswa (NPM), alamat, ipk, dan lain-lain. Lanjut saja ke bagian penting, yaitu kelas Registrasi yang berfungsi mengakomodir Mahasiswa yang medaftarkan kelas mata kuliah tertentu. Berikut kode pada kelas Registrasi yang dibuat cepat dengan IDE Netbeans 8.

public class Registrasi {
private String noreg;
Mahasiswa m;
Kelas kls;
public Registrasi(String noreg, Mahasiswa m, Kelas kls){
this.noreg=noreg;
this.m=m;
this.kls=kls;
}
public void display(){
System.out.println(“No Reg: “+noreg);
kls.display();
m.display();
}
public void insertData() {
System.out.println(“* Insert data…”);
ObjectContainer db;
db = Db4oEmbedded.openFile(“<folder>/mahasiswadb.yap”);
try {
Registrasi reg = new Registrasi(noreg,m,kls);
db.store(reg);
System.out.println(“Stored “+reg);
}
finally {
db.close();
}
}
}

Kelas Registrasi ini memiliki atribut: noreg, m, dan kls yang merepresentasikan berturut-turut nomor registrasi, mahasiswa dan kelas. Ada operasi display() yang berisi display dari kelas yang terlibat (Mahasiswa dan Kelas). Satu kelas penting lainnya adalah insertData() yang menyimpan data objek registrasi ke basis data agar tersimpan secara permanen (persistence). Terakhir di kelas Main masukan kode contoh berikut.

public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Mahasiswa m = new Mahasiswa(“Rahmadya”,43,”Teknik Komputer”);
Kelas kls = new Kelas(“FIS-1″,”Fisika”,3);
Registrasi reg = new Registrasi(“01/mei/2019”,m,kls);
reg.display();
reg.insertData();
}
}

Pertama-tama objek mahasiswa dibentuk dengan atributnya lengkap. Demikian pula objek Kelas yang berisi kode kelas, nama kelas dan jumlah SKS. Terakhir objek registrasi yang berisi nomor registrasi beserta objek yang terlibat (diberi nama variabel m dan kls) dibentuk. Objek registrasi selain ditampilkan lewat operasi display() juga disimpan ke basis data lewat operasi insertData(). Jika dijalankan dengan menekan tombol segitiga hijau akan menghasilkan output di bawah ini.

Coba buka file basis data objek “mahasiswadb.yap” dengan notepad dan pastikan terisi objek yang baru saja disimpan lewat instruksi db.store(reg) di atas.

Postingan ini menggunakan Netbeans dengan Object Database Management System (ODBMS) DB4O yang masih jarang digunakan. Biasanya pengembang menggunakan kelas dan objek yang disimpan dalam Relational Database Management System (RDBMS). Silahkan searching ebook tentang DB4O yang banyak beredar di internet. Untuk buku sejenis yang berbahasa Indonesia saya masih mencoba menulis, semoga segera selesai

Problem CRUD pada Pemrograman Berorientasi Objek

Problem Create, Read, Update, dan Delete (CRUD) pada PBO dikenal dengan istilah impedance mismatch. Hal ini terjadi karena pemrograman terstruktur dengan karakternya yang menggunakan database relasional menggunakan prinsip pemisahan antara data dengan program. Sementara itu PBO dalam satu kelas memadukan data dan program. Dalam hal ini data berupa atribut, sementara programnya berupa method/operasi. Kontroversi kerap terjadi, biasanya untuk programmer-programmer yang biasanya menangani program-program nonobjek, yang menganjurkan CRUD terpisah dari kelas-nya (lihat di sini). Terutama yang sering menggunakan framework maupun bertipe service oriented architecture (SOA), cenderung memasukan CRUD ke layer service. Atau programmer yang menerapkan Object Relational Database Management System (ORDBMS).

Gambar berikut dikutip dari sumber materi PBO link ini. Tampak pada kelas Customer, kelas ini memiliki operasi bernama +add(name,phone) yang bertugas memasukan pelanggan baru. Operasi yang berada dalam sebuah kelas sebenarnya memperkuat konsep PBO yaitu encapsulation dimana kelas lain tidak bisa mengutak-atik kelas tertentu. Untuk menambah pelanggan, dalam kelas Customer harus lewat operasi +add pada kelas tersebut, tidak seperti database relasional yang menggunakan akses dari luar lewat injeksi SQL (insert into Customer).

Jadi sejatinya CRUD pada objek terletak di bagian operasi kelas yang bersangkutan, jika ingin prinsip encapsulation tetap dipegang. Hal ini bisa dijalankan untuk Object Database Management System (ODBMS) murni dengan basis data objek seperti DB4O (lihat pos yang lalu) atau tipe no-sql seperti MongoDB. Interface yang mengirimkan data yang harus diubah pada PBO hanya berupa pesan (message), misalnya pada diagram kelas di atas ingin menambah satu pelanggan baru maka interface yang biasanya form/frame memberikan pesan ke kelas Customer agar menjalankan operasi +add(name,phone) untuk menambah satu data pelanggan baru dengan name dan phone tertentu (dari isian form/frame). Mungkin pembaca tidak setuju, boleh saja, toh antara konsep PBO dengan terstruktur termasuk antara database relasional dan objek pun bisa dikombinasikan. Terkadang antara teori dengan aplikasi/penerapan perlu kompromi.

Quiz Dasar-Dasar Pemrograman Berorientasi Objek

Perhatikan gambar di bawah ini sebagai latihan mengetahui istilah-istilah dasar pemrograman berorientasi objek.

Diagram di atas dikenal dengan nama ….(1)…. diagram. Hubungan Person dengan Mahasiswa dikenal dengan istilah ….(2)…. . Sementara itu relasi Mahasiswa dengan Utama dikenal dengan istilah ….(3)…. Atribut dari kelas Person adalah ….(4)…. dan ….(5)…. Simbol “-” dikenal dengan istilah ….(6)…. Sementara “+” dikenal dengan istilah ….(7)…. Sebutkan atribut-atribut lengkap kelas Mahasiswa: ….(8)…. Sebutkan operasi-operasi yang bisa dijalankan oleh kelas Mahasiswa: ….(9)…. Utama tidak bisa digunakan untuk membentuk obyek dari kelasnya, dikenal dengan tipe kelas ….(10)…. Kelas Utama tidak bisa merubah nama, usia, dan jurusan dari sebuah obyek Mahasiswa tanpa melewati operasi setJurusan(), setNama(), dan setUsia(), dikenal dengan konsep ….(11)… n. Sebuah obyek Mahasiswa dapat dibentuk dengan bantuan operasi otomatis yang dikenal dengan nama ….(12)…r. Obyek tersebut hanya sementara di random access memory (RAM), dikenal dengan istilah i…(13)…. Maka perlu disimpan dalam sistem basis data, misalnya DB4O atau database relational lainnya, istilah penyimpanan permanen ini dalam PBO dikenal dengan nama p…(14)…n.

Jawaban: (1) class, (2) inheritance/pewarisan atau bisa juga generalisasi, (3) association/asosiasi, (4) nama, (5) usia, (6) private (7) public, (8) nama, usia, dan jurusan, (9) getNama(), setNama(), getUsia(), setUsia(), getJurusan(), setJurusan(), greetings(), bio(), insertData(), (10) abstract/abstrak, (11) encapsulation, (12) constructor, (13) instance/instan, (14) persistence.

Untuk lebih lengkapnya silahkan kunjungi situs-situs yang berisi tes-tes dasar pemrograman berorientasi objek berikut ini. Banyak kontroversi-kontroversi yang muncul di sisi praktisi, misalnya insertData() yang terpisah dari kelas Mahasiswa pada conoh di atas. Ada yang berpendapat terpisah (karena business logic) tetapi teori dasarnya object-oriented tidak memisahkan program dan data (prinsip impedansi/impedance).

Menganalisa Akun Twitter – Mendapatkan Keys & Token Twitter API

Twitter menyediakan API untuk mengunduh tweets seseorang. Walaupun yang tepat istilahnya “wrapper” bukan Application Programming Interface (API). Langkah pertama, tentu saja harus punya akun Twitter dulu. Berikut langkah-langkah yang perlu dilakukan.

Mendaftar Sebagai Developer

Pertama-tama masuk ke situs https://developer.twitter.com/ setelah login Twitter di browser, misalnya Mozilla. Atau langsung saja ke sini untuk membuat application baru: https://developer.twitter.com/en/apps. Tekan Create Account untuk membuat app baru.

Tiap saat sepertinya peraturan berubah-ubah. Ketika tulisan ini dibuat harus meng-apply akun sebagai developer.

Kemudian muncul pesan untuk verifikasi via nomor handphone. Tekan Add a valid phone number.

Setelah memasukan nomor ponsel yang sesuai, tunggu sms dari twitter untuk memasukan nomor verifikasi. Setelah meinginput nomor tersebut, maka phone number kita sudah terverifikasi. Tekan Continue. Berikutnya pilih perorangan atau organisasi app yang akan digunakan. Ada pertanyaan yang agak sulit mengenai mengapa membutuhkan API? Serta untuk apa dan metode apa yang digunakan nanti. Nah di sini kita diminta menjawab dengan gaya “mengarang bebas” karena diminta menulis jawaban lebih dari 300 kata. Akhiri dengan menekan Accept setelah membaca (kalau sempat) Term of Service.

Jangan lupa menceklis kotak di bagian bawan TOS. Selanjutnya diminta membuka email dari akun kita. Jika sudah ada pesan masuk dari Twitter, tekan konfirmasi.

Selesai sudah mendaftar sebagai developer yang menggunakan fasilitas Twitter. Pastikan akan masuk ke jendela developer https://developer.twitter.com/en/account/get-started.

Mendapatkan Twitter API Key

Setelah terdaftar sebagai developer berikutnya adalah membuat app. Di bagian dashboard tekan Apps dan jika tidak ada akan muncul tombol Create an App. Cukup banyak yang harus diisi, tetapi ikuti saja sampai selesai, terutama yang required harus diisi. Jika sudah maka terakhir konfirmasi kembali. Di sini beberapa kali ditolak karena nama aplikasi sudah ada yang punya, akhirnya setelah diganti, misalnya “kepo_movie”, baru lah bisa, hehe.

Keys and tokens inilah yang akan digunakan untuk aplikasi meneliti tweets dari sebuah akun twitter. Langkah selanjutnya adalah memilih aplikasi untuk analisa tweeter, misalnya Tweepy yang terkenal bagi programmer Python. Selamat mencoba, semoga peraturan Twitter masih seperti ketika tulisan ini dibuat.

Stopword Berbahasa Indonesia – via Sastrawi

Jika Natural Language Toolkit (NLTK) sudah diinstal, di dalamnya terdapat pula corpus yang berisi sampel data maupun kamus khusus, salah satunya adalah stopwords. Jalankan kode berikut ini dengan Python. Buka IDLE dan masukan instuksi berikut, simpan dan RUN.

import nltk
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize
stop_words=set(stopwords.words(“english”))
print(stop_words)

Seperti biasa kode program mengimpor NLTK. Selain itu pada corpus diimpor juga stopwords. Berikutnya mengimpor word_tokenize dari tokenize pada NLTK. Kode terakhir adalah menampilkan stop words dalam bahasa Inggris. Sayangnya ketika mengganti “english” dengan “indonesia”, tidak ditemukan stop words dalam bahasa Indonesia. Kalau begitu kita coba dengan bahasa Inggris. Berikut hasil runningnya:

Kata-kata tersebut adalah stopword, yaitu kata yang tidak menjadi fokus search engine karena terlalu sering muncul seperti saya, kamu, dia, tatkala, dan lain-lain. Hanya saja dari corpus (berkas) NLTK untuk bahasa Inggris saja hasil donlot via nltk.download() (lihat post terdahulu).

Sastrawi Sebagai Corpus Berbahasa Indonesia

Corpus sastrawi dapat dilihat pada link resminya berikut ini. Jalankan pip install Sastrawi pada command prompt. Tunggu beberapa saat karena mengunduh file-file pendukung yang cukup besar.

Untuk mengujinya, jalankan kode berikut ini via IDLE python.

from Sastrawi.StopWordRemover.StopWordRemoverFactory import StopWordRemoverFactory
stop_factory = StopWordRemoverFactory()
more_stopword = [‘dengan’, ‘ia’,’bahwa’,’oleh’]
data = stop_factory.get_stop_words()+more_stopword
stopword = stop_factory.create_stop_word_remover()
print(data)

Perhatikan “more_stopword” bisa digunakan untuk menambah stopword baru jika dirasa Sastrawi kurang stopword-nya dan perlu ditambah misalnya “dengan”, “ia”, “bahwa”, “oleh”, atau lainnya.

Perhatikan dalam bahasa Indonesia, stopword selain kata ganti adalah penunjuk, sapaan, dan sebagainya. Sekian, semoga bermanfaat.

Install Natural Language Toolkit (NLTK) Python

Salah satu keunggulan Python adalah menyediakan toolkit gratis. Salah satunya adalah Natural Language Toolkit yang disingkat NLTK. Selain di versi Linux, NLTK juga disertakan di versi Windows yang ketika tulisan ini dibuat ada pesan untuk menggunakan Python versi 32 bit, terpaksa install ulang karena pada postingan yang lalu menggunakan versi 64 bit. Salah satu yang tidak saya suka dari Python adalah simbolnya ular, menyeramkan, he he.

Instal Python 32 Bit

Jika menggunakan sistem operasi Windows silahkan kunjungi situs resmi ini, pilih “Download Windows x86 executable installer” yang berupa installer agar lebih enak. Setelah diunduh (sekitar 20-an Mb) jalankan hingga proses instalasi selesai, cukup mudah.

Instal NLTK

Jika Python sudah terinstal masuk ke command prompt. Searching saja di Windows 10 ketik cmd dan pilih jendela hitam command prompt. Ketik pip install nltk pada command prompt. Oiya, sebelumnya untuk menguji apakah Python sudah terinstal atau belum ketik: python –version. Pastikan muncul versi Python anda di bawahnya.

Tunggu beberapa saat hingga muncul pesan “Successfully installed nltk-3.4.1 six-1.12.0. Tetapi ada pesan lain pip versi 18.1 sebaiknya diupgrade menjadi versi 19.0.3.

Upagrade PIP NLTK

Untuk mengupgrade PIP ternyata mudah, ketik instruksi: python –m pip install – upgrade pip.

Tunggu beberapa saat hingga muncul pesan “Successfully installed pip-19.0.3. Apakah sudah selesai? Ternyata belum.

Download Paket Lengkap

Tentu saja harus mendownload paket lengkapnya. Untungnya bisa dengan lewat command prompt di atas. Ketik: python untuk masuk ke lembar kerja Python yang dicirikan simbool >>>. Selanjutnya ketik: import nltk. Fungsinya adalah mengimport NLTK yang sudah diinstal, untuk digunakan. Dengan memanggil jika akan digunakan saja bisa menghemat RAM dan tidak memberatkan komputer dibanding ketika Python dijalankan, semua fasilitas hidup. Lanjutkan dengan mengetik: nltk.download(). Perhatikan, jendela NLTK Downloader langsung muncul.

Jika ingin mengunduh lengkap silahkan tekan all packages yang besarnya hampir 2 Gb, jadi kalau miskin pulsa, sebaiknya cari Wifi cepat dan gratis, hehe. Progres mengunduh dapat dilihat di pojok kanan bawah jendela NLTK Downloader.

Hmm .. lama juga. Sabar ya, tunggu hingga selesai, jangan menduga-duga kalau komputernya “ngerjain” apalagi curang. Silahkan baca tatacara-nya di link resmi NLTK ini. Terkadang saat menginstall satu komponen hang atau gagal. Lebih baik instal ulang manual saja dengan mengklik ganda item tersebut, misalnya “twitter samples”. Selamat menginstal.

Menguji Hasil Instalasi NLTK

Saatnya menguji dengan salah satu fasilitas yaitu word_tokenize. Fungsi ini berguna untuk memecah satu kalimat menjadi beberapa token. Token di sini mirip dengan kata. Ketik: from nltk.tokenize import word_tokenize yang bermaksud memanggil fungsi tersebut dari NLTK. Buat satu contoh kalimat yang akan ditoken, cek apakah berhasil atau tidak. Jika berhasil berarti NLTK siap digunakan. Selamat menginstal.