Red, Green, dan Blue (RGB) Pada Matlab

Representasi warna yang dikenal antara lain: i) Red, Green, Blue (RGB), ii) Cyan, Magenta, Yellow, Black (CMYK), iii) Hue, Saturation, Brightness (HSB), dan iv) CIE-XYZ. Di sini yang paling mudah dan terkenal adalah RGB. Postingan ini bermaksud menjelaskan secara mudah model warna RGB ini.

Sejarah

Kita mengenal TV berwarna yang mengkombinasikan tiap piksel dengan gabungan komposisi warna Red, Green, dan Blue. Jika seluruh warna R, G, dan B nol atau padam, maka dihasilkan warna hitam. Sebaliknya jika seluruhnya menyala maksimal, diperoleh warna putih.

Membuat Warna

Perhatikan warna Turqoise di bawah ini. Warna ini merupakan kombinasi warna Red, Green, dan Blue berturut-turut 64, 224, dan 208. Bagaimana merepresentasikannya dalam Matlab?

Baik, kita mulai saja dengan membuka Matlab versi 2008 ke atas (mungkin sebelumnya bisa, asalkan ada fungsi “imshow” dan “cat” pada matriks).

Format RGB pada Matlab

Matlab menggunakan format matriks tiga dimensi, berbeda dengan gray atau biner yang menggunakan satu matriks saja. Oke, misalnya kita buat piksel yang membentuk huruf ‘c’.

  • c=[1 1 1;1 0 0;1 1 1];
  • imshow(c,’InitialMagnification’,’fit’)

Disini “InitialMagnification” artinya memperbesar huruf c tersebut agar bisa dilihat jelas. Coba saja tanpa fungsi itu, pasti hanya berupa titik kecil saja.

Nah, di sini kita diminta merubah huruf c format biner tersebut menjadi warna turquoise pada gambar di atas sebelumnya. Caranya adalah dengan merubah satu matriks ‘c’ tersebut menjadi komposisi tiga matriks R, G, dan B berupa perbandingan dari 0 hingga 255.

Warna Red, Green, Blue

Di sini warna merah adalah 64 dari 255. Tuliskan di command window instruksi berikut.

  • r=c*64/255
  • r =
  • 0.2510 0.2510 0.2510
  • 0.2510 0 0
  • 0.2510 0.2510 0.2510

Dengan cara yang sama buat juga Green dan Blue.

  • g=c*224/255;
  • b=c*224/208;

Jika komposisi R, G, dan B sudah dibuat, berikutnya adalah meng-concatenate tiga matriks tersebut (r, g, dan b) menjadi satu.

  • image=cat(3,r,g,b);
  • imshow(image,’InitialMagnification’,’fit’)

Pastikan diperoleh huruf ‘c’ dengan warna turquoise seperti di bawah. Jika Anda bisa memanipulasi satu piksel maka Anda pasti bisa memanipulasi beragam citra menjadi warna-warna tertentu. Sekian, semoga bermanfaat.

AppSheet – Aplikasi Android Untuk Mengelola Data Excel

Mungkin banyak yang bertanya, apa maksud judul di atas? Apa hubungannya Excel dengan android? Tentu saja di sini Excel yang digunakan bukan Excel di laptop melainkan menggunakan cloud application bawaan Google, yaitu AppSheet. Sambil membaca postingan ini, ada baiknya anda menginstall aplikasi sebesar 13-an Mb tersebut di playstore. Oiya, karena berbasis Google, tentu saja lebih optimal menggunakan browser Google Chrome dibanding lainnya (Mozilla, Safari, IE, dll).

1. Siapkan file Excel

Untuk membuat aplikasi yang membaca secara interaktif data sheet, terlebih dahulu siapkan datanya, yaitu data yang dibuat di Microsoft Excel. Misalnya daftar nilai mahasiswa berikut ini:

2. Upload ke Google Drive

Berikutnya kita buka Google Drive. Cara termudah adalah dengan masuk ke akun email dilanjutkan dengan menekan tombol empat titik dilanjutkan dengan menekan simbol Drive.

Upload file excel tersebut lewat menu File – Open dan lanjutkan dengan mengupload file excel yang akan dibuat ke appview.

Buka via Google Sheet file tersebut, sehingga memunculkan sheet yang mirip Microsoft Excel. Perhatikan di sini Google Sheet berbeda dengan sekedar view sheet. Tampilah Google Sheet dapat dilihat di bawah ini.

Sepertinya butuh koneksi internet yang cepat untuk membuka Google Sheet ini. Jadi, harap bersabar.

3. Mengeset AppSheet

AppSheet merupakan Add on yang disediakan oleh Google Chrome. Oleh karena itu di browser harus ditambahkan terlebih dahulu. Add on ini gratis

Jika Add on sudah ditambahkan maka pada Google Sheet akan muncul Add on serta koneksi ke AppSheet Anda.

Kemudian kita tinggal masuk ke AppSheet dengan terlebih dulu menambahkan Add on yang ada.

Cari AppSheet dan klik ketika ditemukan. Lanjutkan dengan menginstal appview di Chrome Anda.

Jika sudah berhasil terinstal, di menu Add on akan muncul AppSheet. Jalankan dengan menekan di menu “launch”.

Di sebelah kanan akan muncul smartphone yang akan dihubungkan dengan data sheet kita. Tekan Go untuk melanjutkan proses pembuatan.

Pastikan data sudah bisa diakses via AppSheet dengan melihat di bagian kanan Chrome, tampak nama-nama yang ada di data sheet Anda.

4. Deploy Aplikasi

Terakhir tentu saja kita harus bisa mengeshare aplikasi agar bisa dijalankan via ponsel kita. Terlebih dahulu kita masuk ke Setting dan Properties di AppSheet.

Jika sudah dirasa OK, tinggal men-share aplikasi tersebut.

5. Testing

Berikutnya buka AppSheet di handphone Anda. Ketika diminta login via Google maka akan muncul satu aplikasi yang telah Anda buat. Ketika dibuka maka Anda bisa melihat dan mengedit aplikasi Excel yang sudah berupa Android App tersebut.

Ketika dishare, maka yang akan melihat otomatis diminta menginstal aplikasi AppSheet, instruksinya seperti ini. Sekian semoga berfaedah.

NOTE: untuk excel yang lebih dari satu sheet, ada instruksi untuk menambahkan sheet lainnya, karena secara default AppSheet hanya menampilkan satu sheet saja.

Imresize Citra dengan Matlab

Imresize merupakan fungsi dalam Matlab untuk memperkecil ukuran citra. Misal sebuah citra berukuran 100 x 100 dapat diperkecil menjadi 10 x 10. Gunanya adalah menurunkan resolusi agar dapat lebih cepat diproses. Perhatikan citra berikut (nama file “Huruf A.png”):

Citra bertipe JPG atau PNG harus dibaca di konsol Matlab. Gunakan fungsi imread untuk mengkonversi JPG menjadi matriks gambar.

  • x=imread(‘Huruf A.png’);
  • x2=rgb2gray(x);

Fungsi rgb2gray bermaksud merubah citra berwarna (red, green, dan blue) menjadi hitam putih. Berikutnya kita coba mereduksi matriksnya dengan fungsi imresize berikut ini:

  • x3=imresize(x2,.05)

Perhatikan x3 merudiksi x2 sebesar 5 persen. Jika dilihat gambarnya dengan fungsi imshow akan muncul citra yang sudah tereduksi ukurannya.

  • Imshow(x3,’InitialMagnification’,’fit’)

Citra hasil imresize dari sulit dimanipulasi. Misal dibagi dgn 255 tiap elemennya menjadi 1.

Tampak citra yang masih berbentuk gray. Untuk diolah dengan jaringan syaraf tiruan perlu dikonversi menjadi biner 1 dan 0 atau +1 dan -1. Untuk gambar yg normal bisa dengan im2bw, tetapi hasilnya akan 1 semua. Cari paling sederhana adalah membuat kode untuk merubah 255 menjadi -1 dan yang bukan 255 menjadi 1.

  • [row kol]=size(x3)
  • for i=1:row
  • for j=1:row
  • if x3(i,j)==max(max(x))
  • x3(i,j)=-1;
  • else
  • x3(i,j)=1;
  • end
  • end
  • end

Hasilnya matrix nol dan 1 yang harus dikalikan dengan 255 terlebih dahulu sebelum dimanipulasi dengan fungsi im2bw.

  • x4=x3*255;
  • x5=im2bw(x4);
  • x6=x5*2-1;
  • imshow(x6,’InitialMagnification’,’fit’)

Hasilnya adalah tampak pada gambar di bawah, berupa matriks hasil reduksi dari yang sebelah kanan. Dari ukuran matriks 190×193 menjadi matriks 10×10 yang lebih mudah dimanipulasi.

 

 

 

 

Merubah Foto Menjadi Citra Negatif dan Sebaliknya

Untuk yang pernah hidup di era 80-an, pasti mengenal foto yang dicetak dari negatif foto atau dikenal dengan nama klise. Nah, jika foto sudah jamuran atau rusak, bisa mereproduksi foto tersebut jika masih memiliki klise-nya. Gunakan scanner untuk memindai klise tersebut.

Fungsi untuk merubah citra menjadi negatif dan sebaliknya pada Matlab adalah imcomplement atau dengan persamaan 255-1-i, dengan “i” adalah imread dari citra berformat jpg, jpeg, atau png. Misal gambar berikut ini (silahkan unduh di sini).

Gunakan kode sederhana pada command window. Misal citra yang diunduh diberi nama “sample.jpg”.

  • a=imread(‘sample.jpg’);
  • b=255-1-a;
  • imshow(b)

Tampak hasil foto real dari negatif fotonya. Jika ingin menyimpan citra menjadi file gambar gunakan fungsi imwrite.

  • Imwrite(b,’hasil.jpg’)

Maka muncul satu file bernama “hasil.jpg” yang merupakan hasil pemrosesan citra file “sample.jpg” yang lalu.

Silahkan buat GUI supaya lebih mudah digunakan.

Cukup dengan kode berikut di tombol “Ambil File”, gambar yang siap cetak diberinama “konversi.jpg”:

  • x=uigetfile(‘*.jpg’);
  • a=imread(x);
  • b=imcomplement(a);
  • axes(handles.axes1);
  • imshow(a)
  • axes(handles.axes2);
  • imshow(b)
  • imwrite(b,’konversi.jpg’);

Menghitung Resiko (Risk)

mk.keamanan.jaringan.dan.sistem.informasi

Manajemen resiko dibutuhkan ketika suatu keputusan akan diambil dalam suatu organisasi. Dalam keamanan sistem informasi pun diperlukan analisa terhadap resiko yang mungkin terjadi ketika suatu sistem baru akan diterapkan. Resiko merupakan akumulasi perkalian antara seberapa besar konsekuensi terhadap seberapa seringnya terjadi.

Pada rumus di atas ada variabel m yang merupakan faktor-faktor resiko. Faktor-faktor ini harus dirumuskan oleh orang yang ingin menghitung skor resiko. Faktor resiko diperoleh lewat:

  • Sejarah
  • Analisa
  • Pengetahuan

Contoh Perhitungan

Misalnya ada kebijakan untuk merubah sistem akademik dari manual menjadi online. Bagaimana menghitung skor resikonya? Pertama-tama tentu merinci faktor-faktor resikonya. Tiap orang tentu saja berbeda-beda tergantung pengalamannya. Makin berpengalaman seseorang maka makin akurat perhitungan skor resikonya. Misalnya faktor resikonya antara lain:

  • Jadwal perkualiahan kacau di awal, sehingga mahasiswa banyak yang salah masuk kelas, bahkan bisa terjadi demonstrasi. Untuk faktor ini misalnya konsekuensi=4 dan frequency=4 dengan alasan sangat berdampak pada reputasi kampus. Sementara frekuensi besar mengingat kampus tersebut suka sekali demonstrasi.
  • Banyak dosen yang tidak bisa mengajar sesuai jadwal karena sistem bisa saja kesulitan mengaturnya. Konsekuensi=2 dan frekuensi=3. Dalam hal ini misalnya kampus dengan mudah mencari dosen pengganti dan tidak terlalu berdampak. Sementara frekuensi 3 karena kejadian tersebut jarang terjadi dan sudah biasa ditangani oleh pihak tata usaha.
  • Reputasi pembuat sistem dipertanyakan karena baru dua kali menangani sistem, itu pun tidak serumit yang akan diterapkan di kampus tersebut. Di sini konsekuensi=5 (maksimal) dan frekuensi juga 5 karena berdasarkan informasi kampus-kampus lain banyak yang harus disinkronkan antara sistem dengan pengembang, sehingga butuh pengembang yang berpengalaman.

Misalnya hanya tiga faktor saja yang dibahas, dengan skor dari 1 hingga maksimal 5. Maka total resikonya diperoleh dengan mengalikan konsekuensi dengan frekuensi di tiap-tiap faktor: 4×4 + 2×3 + 5×5 = 47 yang jika dirata-ratakan = 15,7. Perhatikan tabel di bawah ini, maka skor resiko masuk dalam kategori High Risk. Sekian, semoga bermanfaat.

Menjalankan MS Word di Ubuntu

Ada dua aplikasi terkenal yang mirip MS Word di Linux yaitu LibreOffice Writer dan satu lagi yang terkenal buatan Apache yaitu Open Office. Aplikasi yang digunakan untuk menjalankan MS Word di linux adalah PlayOnLinux. Aplikasi ini berupa mesin virtualisasi yang berupa wadah untuk proses instalasi MS Office di dalamnya. Silahkan lihat tatacara instalasinya di situs resmi ubuntu.

Tekan tombol Install pada PlayOnLinux dan pilih aplikasi yang berbasis Windows yang tersedia. Tentu saja siapkan juga software installernya. Sempat install MS Office 64 bit tetapi ternyata PlayOnLinux diperuntukan aplikasi berplatform 32bit. Akhirnya coba install Office 2010 32bit. Fasilitas-fasilitas unggul MS Word seperti Automatic Table of Contents, review, dan lain-lain dapat dijalankan di linux, sehingga mempermudah user yang sudah terbiasa dengan MS Word. Sayangnya ketika mencoba share to blog tidak berhasil teregister akun wordpressnya, entah mengapa. Ada baiknya menggunakan bawaan Linux seperti LibreOffice dan OpenOffice karena tentu saja lebih cepat, terutama jika sekedar mengetik. Selamat mencoba, siapa tahu berminat.

 

 

 

Perancangan Basis Data Buttom Up dengan Normalisasi

[basis.data|akuntansi|lab.software|per.15]

Dikenal dua pendekatan dalam merancang basis data yaitu top down dan buttom up. Top down biasanya dilakukan untuk sistem yang benar-benar baru, tidak pernah dilakukan transaksi sebelumnya walaupun secara manual. Atau jika ingin merombak sistem yang terdahulu yang tidak sesuai lagi dengan proses bisnis yang efisien. Sebagian besar e-commerce yang bermunculan saat ini (toko online maupun aplikasi taksi/ojek online) berbasis top down karena memang benar-benar baru.

Postingan ini khusus membahas metode buttom up yang lebih sederhana karena hanya mengkonversi transaksi manual menjadi terkomputerisasi juga online. Cara kerjanya menganalisa kebutuhan berdasarkan arsip-arsip manual yang ada misalnya nota penjualan, nota pembelian, dan laporan-laporan yang sebelumnya ada. Metode ini lebih sederhana dalam pengalihan sistem karena operator-operator tidak perlu belajar intensif karena proses yang ada tetap seperti sebelumnya, hanya mungkin perlu pelatihan penggunaan aplikasi sebagai pengganti sistem manual sebelumnya. Perhatikan sampel arsip nota penjualan di bawah ini. Bagaimana proses normalisasinya?

Ada beberapa jenis normalisasi tabel yaitu unnormalize (UNF), normal pertama (1NF), normal kedua (2NF), dan normal ketiga (3NF). Ada bentuk normal lainnya karena adanya konstrain terhadap relasi yang dimiliki misalnya Boyce-Code Normal Form (BCNF), normal keempat (4NF) dan kelima (5NF).

Unnormalize Form (UNF)

Bentuk normal ini gunanya untuk mendata calon-calon atribut suatu tabel. Adanya perulangan (redundancy) dan multivalue (satu field berisi lebih dari satu isian) diijinkan. Jadi contoh di atas bentuk UNF-nya adalah:

penjualan = no_nota + kode_kasir + nama_kasir + kode_customer + nama_customer + alamat + {kode + nama_barang + harga + jumlah} + total

Primary key diberi symbol “@”. Perhatikan adanya multivalue di atas yang diberi simbol “{ }”. Tugas berikutnya untuk normal pertama adalah membuat tabel tersebut dapat dibuat dalam satu tabel tanpa melanggar konsep basis data relational. Note: untuk basis data non-relational (berbasis objek) multivalue dapat diterapkan.

First Normal Form (1NF)

Penghilangan multivalue dapat dilakukan dengan cara membuat kunci komposit antara barang dengan penjualan. Kandidatnya adalah kode barang + no_nota sebagai primary key-nya.

Penjualan = @no_nota + @kode + kode_kasir + nama_kasir + kode_customer + nama_customer + alamat + nama_barang + harga + jumlah + total

Walaupun terdapat redundansi, misalnya no_nota yang sama tetapi karena primary key menggunakan gabungan no_nota dan kode barang maka selama gabungan keduanya unik, tidak melanggar prinsip primary key. Terkadang beberapa kunci kandidat bisa diidentifikasi untuk proses lebih lanjut, misalnya kode_customer dan kode_kasir.

Second Normal Form (2NF)

Untuk normal kedua, syarat mutlaknya selain 1NF adalah ketergantungan fungsional (functional dependency) antara satu atribut dengan atribut lainnya. Perhatikan bentuk 1NF sebelumnya, keluarkan (bentuk tabel baru) jika ada atribut yang tergantung dengan salah satu primary key (no_nota saja atau kode barang saja). Tercatat ada beberapa antara lain:

  1. nama_barang, harga dan jumlah tergantung kode
  2. kode_customer, nama_customer, alamat dan total, kode kasir dan nama kasir tergantung no_nota.

Nama, harga dan jumlah tergantung kode barang begitu juga yang terlibat transaksi penjualan (pelanggan dan kasir) tergantung nota penjualan. Karena kedua ketergantungan parsial di atas (partial dependency) hanya tergantung pada salah satu kunci komposit primary key, maka harus dihilangkan agar memenuhi syarat 2NF.

  1. barang = @kode + nama_barang + harga
  2. penjualan =@no_nota + kode_kasir + nama_kasir + kode_customer + nama_customer + alamat + total
  3. detilpenjualan = @no_nota + @kode + jumlah

Perhatikan tidak ada atribut yang tergantung secara parsial.

Third Normal Form (3NF)

Bentuk 2NF jika masih terdapat ketergantungan secara transitif antara satu atribut dengan atribut lainnya harus dinormalkan agar bisa menjadi normal ketiga. Perhatikan tabel penjualan yang memiliki beberapa atribut non-key ternyata antara satu atribut tergantung dengan atribut lainnya:

  1. nama_kasir tergantung kode_kasir
  2. nama_customer dan alamat tergantung kode_customer

Oleh karena itu perlu dibuat dua tabel baru. Tabel penjualan hanya menyertakan kunci tamu (foreign key) saja dengan simbol “#” di depannya.

  1. kasir = @kode_kasir + nama_kasir
  2. Pelanggan = @kode_customer + nama_customer + alamat
  3. barang = @kode + nama_barang + harga
  4. penjualan =@no_nota + #kode_kasir + #kode_customer + total
  5. detilpenjualan = @no_nota + @kode + jumlah

Jika tidak ada lagi ketergantungan transitif pada tiap-tiap atribut non-key maka proses normalisasi ketiga telah selesai. Biasanya sampai 3NF saja jika tidak ada konstrain/batasan-batasan ketat atribut tertentu, misalnya harga barang yang tergantung dari pelanggan tertentu, dan lain-lain. Semoga ujian akhir nanti lancar.