Membuat Report dengan MS Access

[basis.data|akuntansi|lab.software|pert.11]

Sambil membahas masalah normalisasi file, praktek basis data kali ini adalah membuat report pembelian dan penjualan. Sebagai informasi, pada pertemuan sebelumnya sudah dibahas pembuatan form pembelian yang melibatkan suplier, barang, dan detil pembelian. Atau lebih jelasnya dapat dilihat relasi antar tabel di bawah ini.

Mempersiapkan Report

Untuk membuat report baru tekan menu CREATE Report Wizard. Di sini menggunakan wizard agar lebih cepat dan mudah. Nanti jika akan dirubah, tinggal menekan Dezign View saja. Berikutnya masukan field-field yang akan muncul di report. Sebenarnya pilih saja sebanyak mungkin yang kira-kira dibutuhkan. Toh jika tidak dibutuhkan bisa dihapus dari report nantinya.

Di sini akan coba ditambahkan field-field pada tabel pembelian. Pastikan format sesuai dengan yang diinginkan sebagai berikut.

Lanjutkan dengan menekan Next> hingga report terbentuk. Berikutnya adalah menambahkan Total Pengeluaran terhadap seluruh pembelian yang telah dilakukan.

Membuat Total Pengeluaran

Sebelumnya masuk ke menu Report Design dengan mengklik kanan Report Penjualan dan memilih Design View.

Tambahkan satu Text Box untuk menampilkan total pengeluaran. Ganti teks dengan “Total Pengeluaran” setelah melebarkan bagian footer dengan mouse. Tekan bagian paling kanan Control Source pada property Data.

Masukan fungsi yang diperlukan, di sini menggunakan Sum yang artinya menjumlahkan suatu field (dalam hal ini Field Total). Tekan Ok untuk menguji report yang baru saja dibuat. Tampak total pengeluaran yang merupakan penjumlahan dari seluruh transaksi yang ada. Semoga bermanfaat, selamat mencoba.

NOTE: Di sini harga hanya contoh, tentu saja harga jual harus dibedakan dengan harga beli agar diperoleh keuntungan.

Iklan

Membuat Histogram

[komputer.1|manajemen|lab.sainstech|pert.9]

Histogram adalah grafik yang menunjukan hubungan data dengan frekuensi dalam inteval tertentu. Grafik ini penting untuk menunjukan sebaran nilai suatu data. Sehingga informasi dapat digali dari data tersebut. Misalkan kita memiliki data nilai sebagai berikut:

Berikutnya kita ingin melihat sebaran nilai tersebut dalam suatu interval:

Excel memiliki fasilitas “Data Analysis” yang dapat diakses di Menu Data (biasanya di sebelah kanan atas).

Excel akan mengeluarkan jendela Data Analysis. Pilih Histogram dilanjutkan dengan memilih range data.

Pilih range data nilai di atas serta bagian bin range data yang berisi data interval di atas.

Setelah ditek OK maka akan tampak Sheet baru yang menunjukan data tersebut.

Membuat Sebuah Interpreter dengan Lex and Yacc

[t.kompilasi|t.informatika|s.103|pert.10]

Jika pada pertemuan yang lalu dibahas bagaimana cara membuat kompiler yang berisi persamaan matematis dengan satu variabel keluaran, misal variabel x maka pada pertemuan kali ini akan diilustrasikan bagaimana membuat interpreter (yang berisi eksekusi baris-perbaris). Saat ini interpreter paling banyak digunakan mengingat aplikasi berbasis web yang paling banyak digunakan, misalnya php yang menerapkan prinsip interpreter.

Tutorial Lex and Yacc

Software Lex and Yacc memanfaatkan fasilitas yang dimiliki bahasa pemrograman c++. Hasilnya adalah sebuah kompiler baru yang sesuai dengan keinginan programmer. Untuk tutorial dapat dilihat di situs resminya yang disertai juga dengan contoh kode program yang akan digunakan pada postingan kali ini.

File-File yang Dibutuhkan

Seperti biasa file berekstensi *.l dan *.y diperlukan. Masing-masing berfungsi sebagai lexical generator (lex) dan semantic (yacc). Untuk sampel (silahkan unduh di sini), dua file utama adalah calc3.l dan calc3.y diperlukan selain satu buah file header, calc3.h. Ada satu buah file tambahan untuk interpreter (calc3a.c) yang menjalankan satu listing kalang/loop “while” sementara dua lainnya (calc3b.c dan calc3g.c). Lakukan proses kompilasi dan build pada calc3.l dan calc3.y.

Bagaimana cara menggunakan calc3a.c yang berfungsi sebagai interpreter? Tidak ada penjelasan detil pada situs resminya, sementara saya mengkopi isi dari calc3a.c di bawah instruksi “Include …” dan diletakan di bagian bawah calc3.y sebelum mengkompilasi file tersebut (akan menghasilkan y.tab.c dan y.tab.h). Jalankan file exe hasil build lex+yacc hingga menghasilkan interpreter di bawah. Untuk yang compiler dan graph sepertinya butuh penjelasan yang lebih rinci lagi di postingan yang akan datang.

 

Membuat Form Input Data Barang

[basis.data|akuntansi|lab.software|pert.12]

Untuk membuat contoh FORM input Barang dengan aplikasi berbasis web, dalam hal ini PHP dan basis data MySQL dibutuhkan komponen-komponen sebagai berikut:

  • Basis data dengan tabel
  • Kode PHP untuk koneksi data (lihat post sebelumnya)
  • Kode PHP untuk tampilan awal
  • Kode PHP untuk input data

Di sini kode yang digunakan dibuat semudah mungkin dengan bentuk yang paling dasar agar mudah dipraktekan.

Membuat Basis Data dengan Tabel

Sebagai contoh kita buat satu database dengan satu contoh tabel, misalnya penjualan dengan tabel barang-nya. Pertama-tama buka http://localhost/phpmyadmin/ untuk mengakses basis data MySQL. Tentu saja dengan terlebih dahulu menghidupkan Apache Server. Buka SQL query dengan menekan tombol Edit di bagian atas.

Maka Anda akan masuk ke menu SQL yang siap diisi script di bawah ini:

  • create database penjualan;
  • use penjualan;
  • create table barang(
  • KdBarang varchar(10),
  • NamaBarang varchar(25),
  • Harga decimal,
  • Primary key (KdBarang)
  • );

Pastikan SQL berjalan dengan baik dengan indikasi “Your SQL query has been executed successfully” seperti gambar berikut:

Refresh phpmyadmin untuk memastikan apakah satu buah basis data dengan nama penjualan sudah muncul dengan tabel barang yang juga terbentuk.

Membuat Kode PHP Untuk Koneksi Data

Diperlukan satu buah fungsi new mysqli dengan parameter berupa server, user, password, dan basis data.

  • <?php
  • $conn=new mysqli(‘localhost’,’root’,”,’penjualan’) or die (“Tidak Berhasil”);
  • echo ‘Ok’;
  • ?>

Simpan dengan nama, misalnya koneksi.php yang akan dipanggil (dengan fungsi include) setiap akan mengakses basis data. Cek dengan menjalankan http://localhost/latihan/koneksi.php yang mana di laptop saya koneksi.php berada di folder latihan pada folder utama htdocs. Pastikan hanya muncul tulisan Ok yang berasal dari line 4 kode di atas tanpa ada warning (biasanya salah password atau kurang tutup kurung dan kesalahan syntax lainnya. Lagi-lagi, kode di atas dibuat seminim mungkin.

Membuat Kode PHP Untuk Tampilan Awal

Banyak teknik-teknik untuk membuat tampilan awal yang baik. Silahkan menggunakan aplikasi-aplikasi bantuan seperti Macromedia Dreamweaver, Microsoft Frontpage, dan lain-lain. Di sini kita gunakan yang paling dasar. Tapi tentu saja dengan tabel agar lebih rapi. Gunakan kode berikut yang disimpan dengan nama form.php.

Bentuk formnya kira-kira sebagai berikut dengan mengakses http://localhost/latihan/form.php.

Terakhir adalah membuat kode PHP agar data yang dimasukan pada form di atas masuk ke tabel barang di basis data penjualan.

Membuat Kode PHP Untuk Input Data

Isi dari kode input adalah menyiapkan variabel yang ditangkap dari form.php sebelumnya agar bisa dikirim ke tabel barang field-field yang harus diisi. Berikut kodenya:

Masukan data baru, misalnya kode, nama, dan harga berturut-turut B001, Oli, 150000. Tekan simpan dan pastikan indikator “Ok” muncul.

Buka http://localhost/phpmyadmin/ dan pastikan ada satu data baru di tabel barang. Sekian, selamat mencoba.

Munafik yang Baik

Judul yang aneh, mungkin pembaca tidak setuju. Mana ada munafik yang baik. Terlepas dari istilah munafik yang artinya “bermuka dua”, mungkin di sini istilah yang tepat adalah menutup bagian yang memang tidak seharusnya diumbar untuk dilihat, seperti layaknya pakaian yang kita kenakan.

Goal Oriented

Ketika saya bekerja di bank, di satu cabang ada dua divisi yaitu operasional dan marketing. Jika operasional cenderung ketat absen masuknya, alias pagi pulang sore, bagian marketing cenderung santai. Hal ini karena divisi tersebut memang berorientasi pada target, berbeda dengan divisi operasional yang memang melayani transaksi. Tidak ada konflik di antara mereka.

Bagaimana dengan dosen? Tentu saja salah satu bagiannya adalah operasional juga, khususnya pada sisi pengajaran. Harus tepat waktu, karena akan ditiru oleh mahasiswa jika kita malas. Tetapi bagaimana jika memang tidak ada jam mengajarnya? Sementara ada beban meneliti dan mengabdi yang memang berorientasi tujuan (goal oriented). Jadi jika tidak ada mengajar, tidak perlu datang kah?

Tidak Ada Salahnya Menghargai

Tadinya saya memiliki prinsip goal oriented, mungkin terbawa pekerjaan saya di IT waktu di bank dulu yang terkadang kerjanya tidak mengikuti aturan jam masuk-pulang. Bahkan sempat menginap di salah satu cabang di kranji ketika instalasi sever baru. Tapi ketika saya studi lanjut di Thailand, saya melihat dosen pembimbing saya yang memiliki karakter yang menarik untuk dipraktekan, yaitu menghargai.

Dosen pembimbing saya merupakan dosen super sibuk. Tetapi uniknya dia tidak pernah menunjukan sibuknya di hadapan siapapun. Ini mungkin sifat menutup-nutupi darinya yang saya lihat pertama. Walau sulit dihubungi untuk konsultasi, tetapi ketika konsultasi dia akan fokus berhadapan dengan kita, mematikan semua alat komunikasi/koneksi dengan pihak lain. Padahal feeling saya banyak di fikirannya yang harus dikerjakan. Tetapi sikapnya yang berpura-pura hanya fokus ke saya memang dapat diacungi jempol. Di sini dia menghargai mahasiswa.

Lain lagi cerita masalah administrasi. Ketika saya mengirim email perihal prosedur, maka dia akan menjawab 100% prosedural. Mungkin karena via email yang memang bisa dijadikan bukti. Tetapi ketika berbicara via lisan/ketemu, dia bisa fleksibel banget. Kali ini dia menghargai sistem yang ada, dalam artian institusi akan melihat jika dia sangat menghargai aturan di kampus. Walau perkiraan saya dia tidak setuju, tetapi karena menghargai akhirnya dia ikuti.

Memang saya setuju dengan dosen yang fokus ke tujuan (goal oriented), tetapi dengan hanya fokus ke hal tersebut jika datang dan pergi semaunya sepertinya terlihat tidak menghargai bagian operasional (TU, SDM, dll). Apa salahnya mengenakan “baju” terlihat datang rajin ke kampus, intinya sebenarnya adalah menghormati dan menghargai orang lain, lembaga, dan pemilik/yayasan. Bahkan untuk hal tertentu, seperti menggunakan fasilitas kantor, sebaiknya ijin terlebih dahulu ke divisi yang memiliki fasilitas itu, walaupun milik kampus, toh sekali lagi tidak ada salahnya menghargai orang … malah harus lah.

Koneksi Paling Mudah PHP ke Basis Data MySQL

[basis.data|akuntansi|lab.software|pert.10]

Ternyata untuk menghubungkan sebuah web-based application ke MySQL hanya membutuhkan empat langkah kode PHP. Namun tetap saja karena berupa script agak sedikit menyulitkan rekan-rekan non IT. Postingan kali ini sedikit berbagi bagaimana menghubungkan satu database ke PHP. Oleh karena itu buka basis data sembarang yang telah dibuat.

Membuat koneksi.php

File php yang dibuat misalnya bernama “koneksi.php” yang artinya script kode php untuk menghubungkan basis data dengan aplikasi web. Pertama-tama buka notepad/text editor untuk mengetik kode php. Ketik informasi bahwa bahasa yang digunakan adalah php dengan kode <?php dan di bagian akhir dengan kode ?>.

Berikutnya adalah $user = ‘root’; yang menginformasikan ke basis data tujuan nama user basis data, di sini contohnya adalah root. Sementara passwordnya dengan mengetik kode $pass = ‘ ‘; yang artinya tanpa dipassword. Simbol $ berarti sebuah variabel, dalam hal ini user dan pass. Berikutnya ketika basis data bisa masuk dibutuhkan nama basis data yang ada pada MySQL, misalnya beasiswa yang ada di MySQL saya. Kode yang digunakan $db = ‘beasiswa’;

Jika parameter (user, password dan nama database) sudah diisi, berikutnya adalah membuat kode koneksi baru dengan fungsi new mysqli. Karena ada dua kemungkinan (berhasil login atau tidak) maka dibutuhkan kode lainnya yaitu or die (“Tidak Berhasil Terkoneksi ke Database”); Listing lengkapnya adalah sebagai berikut:

  1. <?php
  2. $user=’root’;
  3. $pass=”;
  4. $db=’beasiswa’;
  5. $db=new mysqli(‘localhost’,$user,$pass,$db) or die (“Tidak Berhasil”);
  6. echo ‘Koneksi Berhasil’;
  7. ?>

Menguji Kode PHP

Letakan koneksi.php pada folder htdocs atau di folder lain asalkan induknya di folder tersebut. Kemudian buka browser dan masuk ke alamat http://127.0.0.1/koneksi.php. Baris keenam di kode atas hanya berfungsi memberi tahu jika koneksi berhasil.

Bagaimana jika koneksi tidak berhasil. Untuk contoh isi saja kode di baris ketiga dengan password asal. Maka browser akan memberitahukan pesan bahwa akses ditolak untuk user yang dimasukan. Sekian tips singkat ini, semoga bermanfaat.

Praktek Longest Common Subsequence (LCS) dengan C++ Online

[algoritma|t.informatika|r.408|pert.11]

Longest Common Subsequence (LCS) merupakan rentetan string dari dua string yang dibandingkan. Misalnya string1: a-b-d-a-c-e dan string2: b-a-b-c-e.

Di sini b-a-c-e merupakan LCS. String a tidak boleh dengan a pada string 1 karena berbenturan dengan koneksi b-b antara string 1 dan string 2. Salah satu metode yang efisien adalah dengan pemrograman dinamis dengan cara:

  • Membuat tabel
  • Mengekstrak LCS

Tabel berisi arah panah (kiri, atas, atau diagonal) disertai nilai tertentu yang gunanya untuk mengekstrak LCS.

Dari tabel diketahui LCS yang berwarna pink yaitu b-a-c-e.

Implementasi Dalam Bentuk Program

Banyak situs-situs ok yang menyediakan kode sumber untuk algoritma mencari LCS lewat pemrograman dinamis. Untungnya juga banyak situs-situs yang menyediakan compiler beberapa bahasa pemrograman, misalnya bahasa C++. Jadi tidak perlu khawatir jika di komputer tidak terinstal kompiler C++. Bahkan bisa dijalankan lewat handphone. Situs yang jalan untuk kode program sampel berikut adalah onlinegdb. Hapus semua lembar kerjanya (berisi contoh program mengeprint: “hello word”) copy dan paste kode berikut:

Program tersebut mencontohkan mencari LCS dari dua string AGGTAB dan GXTXAYB yang menghasilkan string LCS: GTAB. Tekan tombol RUN dan lihat hasilnya di bagian bawah jendela onlinegdb. Atau ganti dengan contoh di atas Char X[]=”ABDACE” dan Char Y[]=”BABCE” yang hasilnya berikut:

Untuk mengetahui prinsip kerja dasarnya dapat dilihat di video sederhana berikut. Sekian semoga bermanfaat.

Embed PDF di WordPress Via Google Docs

Tadinya bermaksud mengembed kode program di wordpress, tetapi ternyata berbayar alias upgrade ke paket bisnis yang 20-an dollar per bulan. Akhirnya coba dengan mengembed pdf saja ke wordpress yang gratis memanfaatkan Google Drive.

Menggunakan Google Drive

Google drive untuk praktisnya dibuka lewat Gmail dengan menekan simbol aplikasi lainnya dilanjutkan dengan menekan simbol Google Drive.

Cara paling mudah adalah mengupload PDF ke Google Drive seperti pada postingan yang lalu. Di sini kita coba dengan cara lain dengan memanfaatkan fasilitas Google Docs.

Google Docs

Tekan tombol “+” di Drive lalu new dan pilih Google Docs. Akan tampil seperti MS Word biasa dengan menu-menu untuk mengetik. Copas saja kode yang akan diinsert ke wordpress di situ.

Atur folder di Drive agar rapi dan mudah mencarinya. Sayangnya tidak ada fasilitas “save as” di Google Docs untuk mengkonversi menjadi file Pdf. Atau dengan fasilitas embed via word langsung seperti di Onedrive. Tapi ternyata dengan fasilitas PRINT ada pilihan Google Cloud Print menjadi PDF yang diletakan di drive, beres dah.

Lanjutkan dengan menekan tombol print untuk menghasilkan file pdf di Google Drive. Buka file tersebut dilanjutkan dengan meng-embedded seperti postingan terdahulu. Mungkin contoh embed-nya bisa dilihat di bawah ini.

Audit Keamanan Informasi

Dulu pernah diminta mengajar mata kuliah keamanan sistem informasi, dari dasar-dasar serangan siber, enkripsi, dan sejenisnya. Tetapi ketika beralih ke jurusan sistem informasi, ternyata ada yang namanya audit keamanan sistem informasi. Nah, ini di Indonesia sedang digodok aturannya oleh Badan Siber dan Sandi Nasional (BSSN). Dulu divisi kemanan transaksi elektronik di luar BSSN dibawah Indonesia Security Incident Response Team on Internet Infrastructure/Coordination Center (ID-SIRTII/CC) dan sekarang digabung dengan lembaga sandi negara menjadi BSSN, bahkan lembaga sandi negara ditunjuk sebagai pengatur lembaga baru tersebut.

Penilaian & Audit Keamanan Transaksi Perdagangan Berbasis Elektronik

Era disrupsi memiliki konsekuensi dari sisi transaksi yang mengharuskan dalam bentuk elektronik. Bahkan dari sisi audit jika ditemukan dua jenis bukti (elektronik dan paper) maka yang elektronik memiliki kekuatan yang lebih besar. Saat ini hampir sebagian besar transaksi keuangan bersifat elektronik. Jadi audit tentang transaksi ini mutlak diperlukan.

Kekurangan Auditor

Saat ini di Indonesia jumlah auditor hanya 300-an menurut asosiasi auditor sistem informasi di Indonesia (IASII) padahal kebutuhan di tanah air cukup tinggi. Sebagai informasi negara-negara tetangga seperti Thailand, Vietnam, dan Filipina sudah kelebihan auditor dan siap-siap masuk ke Indonesia untuk mensuplai kebutuhan auditor. India? Jangan ditanya, sudah sejak lama mereka masuk bahkan IASII kerap mem-briefing auditor-auditor India yang akan bertugas di Indonesia, waduh. Apalagi perjanjian-perjanjian seperti AFTAA, WTO, MEA, dan lain-lain kebanyakan sudah ditandatangani pemerintah.

Pembentukan Aturan

Memang aturan mudah dibentuk, tetapi jika tidak memandang dunia internasional, agak sulit di era globalisasi ini. Tampak wakil dari praktisi sepertinya keberatan jika auditor harus disertifikasi ulang oleh BSSN mengingat mereka sudah memiliki sertifikasi internasional. Jika aturan dibuat sendiri sertifikasinya, tetangga apalagi internasional akan menanyakan apa itu BSSN, maklum tidak mengenalnya. Bahkan dari asosiasi mempertanyakan mengapa e-KTP yang budgetnya trilyunan tidak diaudit keamanan informasinya, sementara nanti para pengusaha dengan budget yang sedikit diharuskan untuk diaudit keamanan transaksi online-nya. Sepertinya perlu dikomunikasikan dengan para praktisi sebelum aturannya dibuat, dan segera mengingat dunia startup, terutama bidang finansial (misal fintech, paytren, dll) sudah mulai merambah. Sekian sekilas info.

Berfikir Secara Komputasi (Computational Thinking)

Istilah berfikir secara komputasi (Computational Thinking) muncul sejak tahun 80-an, diperkenalkan oleh Saymor Papert, namun saat ini menjadi tren dengan pesatnya perkembangan IT. Singkat kata di sini cara berfikir fokus ke algoritma pemrograman. Tidak fokus khusus ke bahasa tertentu tetapi prinsip dasar pemrograman. Ketika berbagai negara di belahan dunia mulai memasukan kurikulum tentang Computational Thinking (CT), negara kita belum berani memasukan ke sekolah level dasar. Padahal misalnya di Singapura bahkan sudah mengklaim bahwa CT merupakan “national capability” alias kemampuan utama negara tersebut.

TIga-A dan Empat-C

Untuk menyelesaikan problem dengan CT diperlukan kemampuan dalam tiga hal yaitu Abstraction, Otomation, dan Analysis. Abstraksi adalah mengkonversi kondisi problem real menjadi bentuk padanannya secara sains. Otomatisasi berfokus ke penyelesaiannya sementara analisa gabungan dari eksekusi dan evaluasi. Sementara itu Empat C (four Cs) adalah hubungan Tiga-A itu dengan proses pembelajaran dengan empat komponen utama communication, critical thinking, collaboration, dan creativity. Google menawarkan konsep pendidikan dengan Exploring Computational Thinking (ECT) yang merupakan konsep penyelesaikan masalah secara kreatif dengan langkah-langkah yang teratur (dengan konsep algoritma) serta dengan melakukan breakdown
terhadap masalah yang kompleks. Biasanya problemnya melibatkan multi-disiplin dengan open-ended problem.

Kritik

Para ahli di bidang ilmu komputer sendiri masih ragu dengan gaya berfikir yang menurut mereka sempit. Dikhawatirkan melupakan aspek-aspek lainnya seperti sosial, etika, lingkungan dan dampak negatif dari teknologi yang dikembangkannya. Namun di era revolusi industri 4.0 ini cara berfikir ini bisa menjadi pelengkap cara berfikir yang dibutuhkan pada era ini (tahun 2020-an) antara lain:

  • Complex Problem Solving
  • Critical Thinking
  • Creativity
  • People Management
  • Coordinating with Others
  • Emotional Intelligent
  • Judgment and Decision Making
  • Service Orientation
  • Negotiation
  • Cognitive Fleksibility

Sebagai perbandingan dengan tahun 2015 adalah dapat dilihat pada link berikut.

Postingan ini sebenarnya persiapan menghadiri acara BBS (brown-beg session) yang rutin dilaksanakan di Universitas Indonesia (lab distance learning), jika dapat seat, yang temanya seperti judul di atas.

Fixing: “Warning: Single line Edit Controls can not have multi-line text”

[inf.retrieval|t.komputer|lab.soft|pert.8]

This problem appears when someone tries to send the result to edit text. The warning is shown in command window and the edit text in GUI is also disappeared. First we should understand that Matlab has two kinds of text format: string and cell. The cell cannot be presented, except you transpose it. But the edit text will show the text in column based. Only the string/char format can be presented in row based (see the picture below showing the string and cell).

Some text processing methods need conversion from string to cell. Therefore, the manipulation should be done in order to show the text in edit text. The algorithm are as follow:

  • Input: cell
  • Output: string in row
  • Use function char to convert cell into character
  • Transpose the characters
  • Use function sprintf to print the characters in row based

This simple method can be solve the warning above. As an impormation, some text manipulation need conversion from cell to char and vice versa, e.g. regexp (regular expression function). I hope this information is useful. This is an output when I stemmed to remove preffix (‘ber’) except when the root-word below 4 characters (e.g. “dua” from “berdua”)

Menyiapkan Data Citra Untuk Pelatihan JST

[peng.citra|t.komputer|lab.hardware|pert.9]

Berikut ini contoh menyiapkan data training dan target sebagai masukan proses pelatihan pada Jaringan Syaraf Tiruan (JST). Kasusnya mirip dengan postingan yang lalu, hanya saja di sini kita coba dengan gambar/citra sesungguhnya. Bagaimana membuat data training dengan GUI agar lebih mudah menyiapkan datanya? Selain itu tentu saja terhindar dari kesalahan manusiawi (human error) ketika meramu data-nya.

Membuat GUI Pemrosesan Citra

Secara sederhana dan praktis data dibuat dengan paint bawaan Windows. Misalnya sistem yang dibuat mampu menebak angka 0, 1, hingga 5 saja. Tiap angka digambar sebanyak lima kali, beri nama misalnya 1a, 1b, .. dan seterusnya.

JST memisahkan data dengan target. Jadi data latih dari 0 hingga 5 dengan masing-masing angka lima gambar harus disediakan. Totalnya adalah 6×5 atau 30 data latih, begitu juga targetnya. Misal kita buat GUI sebagai berikut.

Algoritma

Prinsip kerja sederhana dari data yang akan dilatih adalah dengan membuat hubungan satu-satu antara data latih dengan targetnya. Jadi satu record citra yang sudah diolah dikonversi menjadi vektor baris (satu baris terdiri dari beberapa kolom) dibuatkan targetnya dengan indeks baris yang sama.

Pem-Vektor-an

Input: Citra

Output: Vector Citra

  • Ambil citra
  • Jadikan hitam putih
  • Jadikan biner
  • Perkecil, misal 20%
  • Jadikan vektor

Kode di bawah ini salah satu contoh menyimpan hasil pemvektoran data citra.

  • [img,file]=uigetfile(‘*.jpg’)
  • image=imread(img)
  • % pemrosesan citra
  • % jadi hitam putih
  • image=rgb2gray(image)
  • % jadi biner
  • image=im2bw(image)
  • % perkecil 20%
  • [baris,kolom]=size(image) %cari ukuran
  • image=imresize(image,[round(baris*0.2) round(kolom*0.2)]);
  • imshow(image)
  • % cek ukuran yg baru
  • [baris,kolom]=size(image)
  • % jadi vektor
  • image=reshape(image,1,(baris*kolom),[])
  • handles.image=image;
  • guidata(hObject,handles)
  • [baris,kolom]=size(image)
  • simpan=img(1:2)
  • save(simpan,’image’)

Simpan Vektor Hasil Pemrosesan

Salah satu hal sepele tetapi merepotkan adalah menyimpan vektor hasilnya. Di sini fungsi simpan=img(1:2) akan menyimpan vektor dengan nama yang sama dengan gambar yang diambil, tetapi hanya depannya saja (satu sampai dua karakter) karena ekstensinya beda (*.mat).

Setelah citra diambil dan diolah menjadi vektor, selain ditampilkan hasil prosesnya (biner dan diperkecil 20%) pastikan di folder tersimpan file matlab dengan nama yang sama dengan nama citra awalnya (hanya ekstensinya yang berbeda). Tinggal nanti seluruh file hasil pemvektoran digabung menjadi satu data latih beserta satu buah data label/targetnya. Sekian, semoga bermanfaat.

Peer-to-Peer System vs Mediator

Generasi seusia saya pasti pernah mengalami dengar musik lewat kaset, CD, hingga DVD. Namun masih kah dengan cara yang sama saat ini? Masih, mungkin hanya hadiah album dari KFC atau siswa yang mengumpulkan laporan skripsi ke kampus. Mengapa hal ini terjadi? Jawabannya adalah ditemukannya konsep Peer-to-Peer di tahun 90-an.

Nasib Para Mediator

Mediator di sini adalah penghubung antara satu pihak dengan pihak lainnya, produsen dengan konsumen, penjual dengan pembeli, baik barang maupun jasa. Seperti contoh di atas, mediatornya adalah produsen musik waktu itu. Penyanyi kontrak dengan produser, kaset/CD dijual dan hasil dibagi antara produsen dengan penyanyi. Ketika era digital melanda, seorang pemilik bisa membagi file dengan orang lain dan ini dengan mudah dilakukan di era 2000-an ketika network kian murah dan kian cepat. Bahkan seorang penyanyi bisa langsung mengirimkan hasil karyanya ke pendengar langsung, tentu bukan dengan mediator produser melainkan sebuah teknologi peer-to-peer, sebagai contoh adalah NAPSTAR. Mungkin di musik agak kurang “smooth” karena ada unsur pembajakannya, walaupun sekedar berbagi pakai. Contoh lain adalah konsumen, misalnya ingin membeli komponen kendaraan, maka dengan mudah dapat dilakukan tanpa ke bengkel/toko sparepart melainkan langsung ke pabriknya dengan mediator yang baru yaitu sistem online.

Peer-to-Peer System

Sistem ini merupakan sistem terdistribusi dengan tiap node bisa berupa PC, laptop, HP dan lain-lain yang terhubung ke jaringan dengan menerima aturan-aturan yang ditetapkan bersama. Prinsip ini bisa menghubungkan produsen dengan konsumen langsung. Jadi banyak mediator yang tadinya sebagai penghubung mereka tidak digunakan lagi (bidang transportasi, keuangan, dan lain-lain). Juga dengan lembaga pendidikan?

Ketika putri saya kelas 6, saya memasukan ke bimbingan belajar ternama di Indonesia. Entah kenapa sebagian rekannya keluar karena orang tuanya tidak melihat adanya kemajuan. Anak teman saya juga ketika dikursuskan di bimbingan belajar yang lainnya malah keluar dengan sendirinya dan minta daftar ke situs yang menyediakan bimbingan belajar online, dan hasilnya pun oke. Jika tujuannya pemahaman atau transfer pengetahuan, hubungan langsung peserta didik dengan tutor bisa dilaksanakan tanpa mediator fisik (bimbingan belajar) yang terbatas ruang dan waktu.

Break sebentar nulisnya … abang driver online sudah tiba membawa jus pesanan. Lagi-lagi contoh aplikasi online yang menghubungkan produsen jus dengan konsumen.

Seberapa Mediator kah Anda?

Karena pertanyaan aneh, jadinya sulit dijawab. Ambil saja contoh toko-toko komputer di kawasan glodok yang menjadi perantara produsen laptop/hp sudah merasakannya (termasuk juga department store kabarnya). Beberapa bisa bertahan karena level mediatornya rendah, alias menyediakan juga servis, tukar tambah, dan lain-lain yang memang tidak terlalu melibatkan pihak produsen. Di sini toko itu sendiri yang menjadi produsen yang berjenis jasa (perbaikan). Bagaimana dengan kampus/sekolah dan Dosen/guru? Silahkan jawab sendiri dengan cara analisa seperti contoh di atas. Mahasiswa sudah jelas jadi konsumen (semoga industri jadi konsumen juga), siapakah produsennya, kampus/sekolah atau dosen/guru? Ataukah keduanya mediator dengan pihak lain (unknown) sebagai produsen? Wah. Ada baiknya lihat video Youtube siswa 12 tahun sebagai app developer tentang guru-guru di sekolahnya. (https://www.youtube.com/watch?v=Fkd9TWUtFm0). Sekian semoga menginspirasi.

Form Transaksi – Antara Teori dan Praktek di Lapangan

[s.basis.data|akuntansi|lab.soft|pert.9]

Diagram ERD di bawah ini menunjukan transaksi pembelian barang ke suplier dengan relasi many to many. Perlu diketahui bahwa ERD dalam perancangan basis data masuk dalam wilayah konsep. Banyak mahasiswa yang rancu dalam memahami perancangan dari sisi konsep dengan implementasinya berupa pentabelan (record structure).

Secara teori (lihat buku Elmasri tentang basis data) ERD di atas harus dimodifikasi untuk pentabelannya mengingat dalam satu record di tabel pembelian di atas tidak bisa memiliki lebih dari satu isian, alias multi-valued. Namun perkembangan terkini kabarnya basis data objek bisa mengakomodir hal tersebut. Namun untuk database relasional perlu tambahan tabel yang dibahas di postingan ini. Ada sedikit polemik antara teori dengan praktek.

Komposit Primary Key

Dengan database management system (DBMS) sederhana, misalnya access, ERD di atas secara teoritis dibentuk relasi berikut:

Bentuk Form transaksinya dengan Access kira-kira seperti di bawah ini:

Dalam tabel detil nanti ada dua isian yaitu 6 + b001 dan 6 + b002. Jika KdBarang diisi barang yang sama, misalnya b001 semua, maka sistem akan menolak karena dalam tabel detil pembelian ada dua record yang sama (6+b001 dua kali). Karena seharusnya 6 + b001 diisi satu kali dengan jumlah dua (jika masing-masing tadi berjumlah satu). Bentuk record detilnya sebagai berikut, perhatikan tidak ada kombinasi KdPembelian dan Kdbarang yang sama dalam tabel tersebut.

Menambah Primary Key Baru

Komposit primary key tidak mengijinkan redundansi (dobel) kombinasi primary key (kode pembelian + kode barang), alias dua kode barang diinput dua kali di sub-form (sisi detail). Jadi harus menambah jumlah barang yang sama tersebut, misalnya kode barang kecap tidak boleh diinput dua kali (masing-masing berjumlah satu), tetapi cukup sekali dan jumlahnya 2. Padahal praktek di lapangan, misalnya di supermarket-supermarket dengan scan barcode tentu saja asal scan tidak perlu mengetahui apakah barang yang sama sudah discan sebelumnya. Solusinya terkadang dengan menambahkan satu kunci baru. Kasihan kasirnya ketika kode barang yang sama sebelumnya telah terscan, yang baru mau diinput menolaknya.

Jadi dari pada kasir diminta mengumpulkan jumlah kode barang yang sama kemudian ditotal, kasir bisa langsung menscan barang yang sama tersebut berkali-kali. Tabel transaksinya kira-kira berikut ini:

Tentu saja dengan cara komposit primary key (KdPembelian+KdBarang) tanpa ID sistem akan menolak, tapi dengan cara ini barang yang sama akan diberikan ID yang berbeda. Tapi secara teori, primary key komposit dua kunci yang terlibat (KdPembelian dan KdBarang) masih tetap jadi dasar materi perkuliahan basis data. Sekian, semoga bermanfaat.

UPDATE: 28.12.2018

Ternyata metode dengan ID tambahan yang biasanya diimplementasikan di lapangan dikenal dengan istilah Surrogate Key.

Membuat Compiler Sendiri – Persamaan Matematis

[tek.kompilasi|t.inf|s.104|pert.9]

Pertemuan yang lalu telah disinggung membuat kompiler yang melakukan operasi perhitungan layaknya menggunakan kalkulator. Di sini dengan Lex and Yacc akan dicoba membuat kompiler yang bisa melakukan perhitungan seperti ini:

Yang belum mempunyai software lex and yacc silahkan klik di sini untuk mengunduhnya dengan ukuran sekitar 20-an Mb. Kebetulan software yang dishare berbasis Windows. Jika ingin yang linux, vendor juga menyediakan aplikasi lex and yacc berbasis linux seperti Ubuntu.

Prinsip Kerja

Generasi saya (kuliah 90-an) hanya mengenal disket dan belum mengenal punch card yang berisi kartu berlubang yang fungsinya sebagai instruksi ke komputer. Bayangkan jika kita diminta menghitung iterasi ratusan kali dengan kalkulator, tentu akan bentol jempol kita. Tapi dengan menginstruksikan agar komputer menghitung iterasi ratusan kali tersebut, sekali jalan langsung selesai. Jika dulu dengan kartu berlubang, saat ini instruksi berbasis teks yang diketik. Jadi komputer harus mampu melakukan scanning agar mengetahui instruksi tersebut sesuai dengan aturan sebelumnya atau tidak, baik dari sisi kata perkata atau logika yang berupa grammar. Jadi Lex and Yacc memiliki dua mesin:

  • Scanning kata per kata dengan mesin Lex (singkatan dari lexical generator), dan
  • Grammar check dengan mesin Yacc (singkatan dari yet another compilers compiler)

Makanya software tersebut dinamakan Lex and Yacc. Jika software sudah diinstal, silahkan pelajari dari situs resminya, yang juga dilengkapi dengan kode sumber untuk praktek kali ini.

Mengkompilasi File Lex

Ada dua file yang diperlukan untuk menghasilkan satu kompiler yaitu file lex (berekstensi *.l) dan yacc (berekstensi *.y). Silahkan masuk ke bab “Practice 2”. Kopi-kan saja ke Flex Windows (software Lex and Yacc versi windows) yang baru kita instal. Masuk ke menu Tools – Lex Compile. Lanjutkan dengan masuk ke menu yang sama: Tools – Lex Build. Maka akan dihasilkan satu file baru lex.yy.c yang merupakan hasil generate ke bahasa c.

Mengkompilasi File Yacc

Jika Lex bertanggung jawab mengecek kata/word yang terdaftar di bahasa pemrograman yang dirancang, Yacc bertanggung jawab terhadap grammatical-nya. Buat kode dengan nama yang sama dengan file Lex, hanya saja untuk Yacc harus berekstensi *.y. Lakukan proses yang sama dengan Lex di menu Tools – Yacc Compile dan dilanjutkan dengan membuild beserta Lex-nya lewat menu yang sama Tools – Lex+Yacc Build. Hasil dari proses kompilasi adalah dua buah file y.tab.c dan y.tab.h yang satu untuk header (di bahasa c dengan kode #include) yaitu y.tab.h dan satu lagi y.tab.c digunakan untuk build Lex+Yacc. Di bagian indikator bawah pastikan tidak ada masalah dan cek di file lokasi penyimpanan (di folder yang sama dengan lex dan yacc) apakah file berekstensi exe dengan nama yang sama dengan lex and yacc ada, misalnya yang saya gunakan calc2.exe.

Menjalankan Bahasa Pemrograman

Ada dua cara menjalankan bahasa pemrograman yang baru dibentuk yaitu dengan mengklik file calc2.exe atau nama lain yang Anda buat, atau dengan menekan Tools – Execute Exe Directly. Hasilnya akan memunculkan jendela di bawah ini, coba dengan melakukan operasi matematis tertentu dengan variabel. Selamat mencoba, semoga bermanfaat.

NOTE: Ada kesalahan di bagian yacc, tambahkan di bagian atas:

  • %{
  • #include <stdio.h>
  • void yyerror(char *);
  • int yylex(void);
  • int sym[26];
  • %}