Membuat Relasi Antar Tabel Pada MySQL

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

Pada pertemuan sebelumnya dibuat satu tabel (tabel barang) dengan MySQL yang dihubungkan dengan form berbasis web (php). Tentu saja setiap basis data akan memiliki lebih dari satu tabel, misalnya tabel yang lain seperti detilpenjualan, penjualan, atau juga suplier. Untuk mudahnya kita buat satu tabel baru yakni tabel detilpenjualan yang terhubung dengan tabel barang. Relasinya kira-kira sebagai berikut:

Membuat Tabel Suplier

Ada dua tabel master yaitu tabel barang dan tabel Suplier. Buat tabel suplier dengan script SQL berikut ini:

  • CREATE TABLE SUPLIER (
  • KdSuplier CHAR(10) NOT NULL,
  • NamaSuplier VARCHAR(20) NOT NULL,
  • Alamat VARCHAR(25) NOT NULL,
  • Kontak CHAR(10),
  • PRIMARY KEY (KdSuplier)
  • );

Jalankan dengan mengklik simbol SQL pada phpmyadmin (http://localhost/phpmyadmin/). Atau bisa juga dengan create lewat menu di phpmyadmin. Masukan satu buah record, misalnya:

  • INSERT INTO SUPLIER (KdSuplier, NamaSuplier, Alamat, Kontak) VALUES
  • (‘S001′,’Rahmadya’,’Bekasi’,’3332211′),
  • (‘S002′,’Ujang’,’Jakarta’,’123456′);

Pastikan kode SQL ketika dijalankan berhasil.

Membuat Tabel Penjualan

Tabel penjualan membutuhkan field-field: KdPenjualan, KdSuplier, dan Total. Sehingga memerlukan Foreign Key KdSuplier yang berasal dari tabel Suplier. Berikut kode SQL-nya:

  • CREATE TABLE PENJUALAN (
  • KdPenjualan INT AUTO_INCREMENT NOT NULL,
  • KdSuplier CHAR(10) NOT NULL,
  • total DECIMAL(8,2) NOT NULL,
  • PRIMARY KEY (KdPenjualan),
  • FOREIGN KEY (KdSuplier) REFERENCES suplier(KdSuplier)
  • ON DELETE CASCADE
  • ON UPDATE CASCADE
  • );

Perhatikan frasa on delete cascade dan on update cascade pada foreign key KdSuplier. Di sini artinya jika kode suplier dihapus atau diedit maka tabel penjualan juga berubah. Tapi jika ingin tidak berubah tidak perlu memasukan frasa tersebut.

Membuat Tabel DetilPenjualan

Tabel ini bermaksud mengakomodir relasi many to many dimana transaksi melibatkan jumlah barang yang lebih dari satu. KdPenjualan dan KdBarang menjadi primary key (komposit). Berikut kode SQL untuk tabel barang dan tabel DetilPenjualan.

  • CREATE TABLE BARANG(
  • KdBarang VARCHAR(10),
  • NamaBarang VARCHAR(25),
  • Harga decimal,
  • PRIMARY KEY (KdBarang)
  • );

Dan untuk tabel DetilPenjualan:

  • CREATE TABLE DETILPENJUALAN (
  • KdPenjualan INT AUTO_INCREMENT NOT NULL,
  • KdBarang CHAR(10) NOT NULL,
  • FOREIGN KEY (KdBarang) REFERENCES barang (KdBarang),
  • PRIMARY KEY (KdPenjualan,KdBarang)
  • );

Perhatikan kode di atas dimana PRIMARY KEY ada dua yaitu KdPenjualan dan KdBarang. Silahkan tambahkan ON DELETE CASCADE atau ON UPDATE CASCADE. Selamat mencoba.

Tugas Kelompok itu Menyenangkan .. Lho

Setiap orang yang pernah kuliah pasti pernah merasakan yang namanya tugas kelompok. Tugas yang sangat tidak obyektif. Bagaimana tidak, usaha kerja keras yang dilakukan terkadang tidak berbanding lurus dengan hasil, alias “usaha dibohongi hasil” .. hehe. Salah satu sebab utamanya adalah tidak akur dengan rekan satu tim, apalagi banyak yang nebeng nama dan tidak ikut kerja. Bahkan tiap akhir semester ketika ada dosen yang meminta umpan balik, banyak yang menginginkan tidak ada tugas kelompok dan lebih baik tugas proyek perorangan saja.

My Team

Seperti kata spongebob, “tidak semua makhluk dikaruniai perilaku normal”, begitu juga rekan tim ketika saya kuliah dulu. Waktu itu tugas proyek big data sangat sulit dan tidak mungkin dikerjakan seorang diri tanpa bantuan teman kelompok. Ketika pemilihan anggota kelompok, saya tertarik dan memilih rekan dari pecahan Rusia (Uzbekistan), namanya Saba Bakiev. Tertarik karena dia mengulang mata kuliah tersebut, alias dulu tidak lulus. Manfaatnya adalah saya bisa mengetahui peta pertarungan.

“Jangan pakai software yang diusulkan dosen”, katanya. “Tahun lalu, dari empat tim, hanya satu yang bisa jalan”. Waduh, untung dikasih tahu. Akhirnya kami mencari software lain yang kami kuasai, jatuhlah pada C# dan Matlab. Alhasil, nilai A di tangan. Entah, tak tahu si rekan Rusia itu lulus atau tidak, yang jelas waktu ujian dia hanya mengerjakan beberapa menit lalu keluar duluan. Ternyata ketika saya pulang ujian, dia terlihat tanding sepakbola di lapangan kampus … pantas saja dia keluar duluan.

Tentu saja banyak biang kerok-biang kerok lain yang menjengkelkan. Tetapi jika kita bisa memahami rekan tim, banyak manfaat yang diperoleh. Di kelompok mata kuliah lainnya saya pernah menjadi jembatan penghubung antara rekan saya dari Nepal dan Pakistan, repot sekali.  Nyaris gagal proyeknya karena bagian coding SQL ngambek akibat ribut dengan seorang rekan di bagian perancangan sistem (yang katanya sombong kayak bos).

Itulah manfaat S3 dengan format perkuliahan di awal (tidak langsung riset), jadi ada cerita. Beberapa semester setelah wajib kuliah selesai (diakhiri proses kandidasi), dan masuk fase riset, saya jarang bertemu lagi dengan teman-teman karena asyik sendiri dengan tugas risetnya. Bertemu pun hanya ketika jadwal sidang kemajuan yang biasanya akhir-akhir semester (dengan berwajah kusut, atau sengaja dikusut-kusutin biar dosen kasihan).

Jaadi untuk yang sedang mendapat tugas kelompok, nikmati saja karena banyak kenangan indah yang didapat.

Normalisasi File

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

Basis data secara fisik dibuat dalam bentuk tabel-tabel. Tabel tersebut berasal dari analisis baik lewat Entity Relationship Diagram (ERD) maupun Diagram Alir Data (DAD). Beberapa kampus menerapkan ERD yang merupakan perancangan basis data secara konseptual dilanjutkan dengan mengkonversi ERD menjadi struktur penyimpanan logika (logical structured record). Caranya dengan menggunakan prosedur sebagai berikut:

  • Konversi multivalued menjadi satu tabel tambahan (tabel detail) dari relasi Many-to-Many
  • Konversi entity komposit menjadi tabel lookup baru
  • Konversi entitas lemah (weak entity) menjadi satu tabel baru

Sementara itu yang menggunakan DFD harus menjabarkan tabel yang ada setelah itu dilakukan proses normalisasi untuk menghindari anomali-anomali yang terjadi (insert, update, dan delete). Tetapi ERD pun tetap sebaiknya melakukan proses normalisasi file untuk memperkokoh hasil rancangan.

Format Normalisasi

Ada beragam format penulisan normalisasi file. Salah satu format yang cukup baik adalah format yang ditawarkan oleh Elmasri dkk dengan menggunakan bagan yang berisi judul tabel dan atribut-atributnya. Untuk atribut kunci ditandai dengan menggunakan garis bawah. Simbol panah menunjukan Functional Dependency (FD).

Beberapa kampus menggunakan format tabel seperti class diagram tanpa operation/method dengan nama tabel serta atributnya menyusun ke bawah. Foreign key akan mengarah panahnya ke relasi tabel yang dimaksud. Jika primary key ditandai dengan satu *, foreign key ditandai dengan **.

Kedua cara di atas memiliki kesulitan dalam penggambarannya (dengan visio ataupun insert shape pada MS Word). Namun ada cara lain yang tanpa bagan yaitu dengan menggunakan teks langsung. Formatnya adalah:

  • <nama_tabel> = @<primary_key> + <field_1> + <field_2> + … atau:
  • <nama_tabel>(<primary_key>,<field_1>,<field_2>, …)

Dari sisi pengetikan sepertinya lebih mudah walaupun butuh penjelasan dengan kata-kata untuk foreign key-nya. Berikut adalah contohnya.

Contoh Normalisasi

Dikenal biasanya ada tiga bentuk normalisasi unnormalized, 1st Normal Form, 2nd Normal Form, dan 3rd Normal Form. Ada BCNF dan Normal kelima tetapi sangat jarang dijumpai di lapangan. Misalkan ada bentuk di bawah ini, yaitu suatu struk transaksi penjualan. Bagaimana normalisasinya?

Unnormalized Form

Unnormalized Form (UNF) paling mudah membuatnya karena hanya mendata field-field yang ada saja. Untuk yang berulang/multi-valued dengan mengisi tanda kurung kurawal saja (bagian detil). Jadi UNF transaksi di atas kira-kira sebagai berikut:

  • Penjualan = KdPenjualan + KdPelanggan + namaPelanggan + Alamat + Kontak + Total + {KdBarang + nama +harga + Jumlah}

    Atau:

  • Penjualan (KdPenjualan, KdPelanggan, namaPelanggan, Alamat, Kontak, Total, {KdBarang, nama, harga, Jumlah})

Tentu saja untuk implementasi, UNF tidak bisa dibuat tabel, kecuali DBMS khusus berbasis object (atau XML).

First Normal Form

Bentuk 1st Normal Form (1NF) memiliki ciri tidak adanya redundansi dan multi-value. Dalam 1NF tidak ada field yang merupakan hasil kalkulasi (Calculated Field) yang tidak disimpan di basis data. Selain itu Candidate Key diperkenalkan di sini. Kunci kandidat diperoleh dengan meliha ketergantungan fungsional antara satu field dengan field lainnya, misalnya namaPelanggan, Alamat, dan Kontak dengan KdPelanggan dipilih KdPelanggan sebagai kunci kandidat.

Karena fokus 1st NF adalah menghilangkan multi-valued field (juga nested relation) maka kunci komposit dibentuk gabungan KdPenjualan dan KdBarang sehingga tidak ada multi-value pada barang yang dijual. Tabel penjualan di bawah ini sudah cukup menghindari multi-value pada suatu field.

  • Penjualan (KdPenjualan, KdBarang, nama, harga, Total, KdPelanggan, namaPelanggan, Alamat, Kontak)

Di sini Jumlah dihilangkan karena merupakan hasil kalkulasi dan tidak diinput ke basis data, sementara Total walaupun hasil kalkulasi tetapi tersimpan di basis data.

Relation should have no multivalued attributes or nested relations.”

Second Normal Form

Bentuk normal kedua (2NF) mengharuskan dalam satu tabel memiliki ketergantungan fungsional secara penuh (Fully Functional Dependency). Dengan kata lain pada bentuk 2NF tidak diperbolehkan satu field secara fungsional bergantung pada salah satu kunci komposit. Dalam contoh ini: nama dan harga barang bergantung ke KdBarang dan tidak ke KdPenjualan, Total ke KdPenjualan tapi tidak ke KdBarang. Oleh karena itu perlu dibentuk tabel baru untuk mengakomodir hal tersebut.

  • Penjualan = @KdPenjualan + KdPelanggan + namaPelanggan + Alamat + Kontak + Total
  • DetilPenjualan = @KdPenjualan + @KdBarang
  • Barang = @KdBarang + nama + harga

Perhatikan di sini tidak ada atribut (di tabel Penjualan) yang bergantung ke salah satu kunci komposit (terhadap KdPenjualan saja atau KdBarang saja).

For relations where primary key contains multiple attributes, no nonkey attribute should be functionally dependent on a part of the primary key.”

Third Normal Form

Biasanya transaksi sampai di normal ketiga yang mensyaratkan tidak boleh ada transitive dependency dimana satu field non-key bergantung dengan yang lain. Contohnya adalah namaPelanggan (juga alamat dan kontak) yang ternyata bergantung dengan KdPelanggan. Untuk mengingatnya, istilah “transitive” berasal dari kata transfer, yakni mentransfer dari primary key (KdPenjualan) ke namaPelanggan, Alamat, dan Kontak lewat KdPelanggan.

  • Pelanggan (KdPelanggan, namaPelanggan, Alamat, Kontak)
  • Penjualan (KdPenjualan, KdPelanggan, Total)
  • DetilPenjualan (KdPenjualan, KdBarang)
  • Barang (KdBarang, nama, harga)

Tampak seluruh field/atribut bergantung ke kunci masing-masing tabel. Aturan untuk 3NF adalah:

Relation should not have a nonkey attribute functionally determined by another nonkey attribute (or by a set of nonkey attributes). That is, there should be no transitive dependency of a non-key attribute on the primary key.”

Sekian, semoga bermanfaat.

Reference:

Elmasri, R & Navathe. “Fundamentals of Database”. USA: Pearson. 2004

Menggunakan VLOOKUP Pada Microsoft Excel

[komputer.1|manajemen|lab.software|pert.10]

VLOOKUP merupakan satu fungsi yang mirip dengan sistem basis data. Satu buah kunci (key) akan mengarahkan ke field (atribut) yang lain. Misalnya gambar di bawah jika suatu cell diisi dengan kode ADM maka kolom bagian akan mengisi dengan “administrasi”. Begitu juga dengan MAN dan PRS. Begitu pula untuk golongan A, B, dan C yang akan mengisi gaji pokok berdasarkan golongan tersebut.

Cara paling mudah adalah dengan menekan tombol “fx” di bagian fungsi MS Excel. Pertama-tama letakan di Cell yang akan diisi melalui proses vlookup.

Ketik di kolom “search” dengan kata kunci vlookup tekan enter (atau klik Go) maka akan ditemukan fungsi vlookup. Tekan Ok untuk lanjut mengisi parameter vlookup.

Ada tiga isian yang harus diisi range-nya: Lookup_value, Table_array, dan Col_index_num. Sebagiknya tidak diisi manual, melainkan dengan mengklik lewat mouse. Tekan simbol tabel di bagian kanan.

Untuk Lookup_value diisi dengan kolom dimana suatu kode/key akan dilihat referensinya, misalnya ADM, maka arahkan ke sebelah kiri Cell yang akan diisi lalu tekan klik kiri pada mouse.

Untuk Table_array diisi dengan matriks referensi (biasanya lebih dari satu kolom). Jangan lupa tekan F4 untuk memberikan simbol $ di baris maupun kolomnya.

Terakhir dan tidak kalah pentingnya, Col_index_num berisi kolom ke berapa. Dalam hal ini kolom 2 menunjukan referensi ADM yaitu Administrasi. Tekan OK dan pastikan berubah sesuai dengan referensi pada cel yang menjadi Lookup_value. Berikutnya tinggal mengkopi cel tersebut ke seluruh cell yang akan dicari nilai vlookupnya.

Update 22 Januari 2021

Berikut video penjelasannya:

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.

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”)