Algorithm, Codeigniter, Mathematic, PHP, Programming, SQL

Algoritma Fuzzifikasi Tsukamoto Untuk Prediksi Hasil Produksi Menggunakan 4 Aturan Prediksi

Algoritma FIS (Fuzzy Inference System) adalah salah satu algoritma yang digunakan untuk pengambilan keputusan. Contoh yang dibahas kali ini adalah mengenai penentuan nilai kinerja karyawan berdasarkan inputan yang ada.
Algoritma ini memiliki beberapa tipe teknik perhitungan yang digunakan, dan salah satu tipe yang digunakan adalah tipe yang ditemukan oleh Tsukamoto, oleh karena itu tipe ini dinamakan tipe Tsukamoto / Fuzzy Tsukamoto. Continue reading “Algoritma Fuzzifikasi Tsukamoto Untuk Prediksi Hasil Produksi Menggunakan 4 Aturan Prediksi”

Network Programming, Networking, Packet Tracer, Web Server

Simulasi Algoritma Open Shortest Path First (OSPF) Pada Jaringan Komputer

Open Shortest Path First (OSPF) adalah sebuah protokol routing otomatis (Dynamic Routing) yang mampu menjaga, mengatur dan mendistribusikan informasi routing antar network mengikuti setiap perubahan jaringan secara dinamis. Pada OSPF dikenal sebuah istilah Autonomus System (AS) yaitu sebuah gabungan dari beberapa jaringan yang sifatnya routing dan memiliki kesamaan metode serta policy pengaturan network, yang semuanya dapat dikendalikan oleh network administrator. Dan memang kebanyakan fitur ini diguakan untuk management dalam skala jaringan yang sangat besar. Oleh karena itu untuk mempermudah penambahan informasi routing dan meminimalisir kesalahan distribusi informasi routing, maka OSPF bisa menjadi sebuah solusi. Continue reading “Simulasi Algoritma Open Shortest Path First (OSPF) Pada Jaringan Komputer”

Database Replication, Linux, Networking, SQL, Ubuntu Server, Web Server

Membangun Two-Way Replikasi Database MySQL

KEBUTUHAN PERCOBAAN

  • Ubuntu Server 16.04.02 LTS
  • Database MySQL
  • Web Server Apache

Pada catatan sebelumnya https://sirojulmiftakh.wordpress.com/2017/03/17/membangun-one-way-replikasi-database-mysql/ telah dilakukan percobaan one-way replikasi database dimana setiap perubahan yang terjadi pada server master akan direplikasi menuju server slave namun tidak untuk proses sebaliknya. Pada percobaan ini dilakukan konfigurasi dua arah atau two-way agar setiap perubahan yang terjadi baik di server master maupun di server slave dapat saling tersinkronisasi agar data yang tersimpan pada kedua server adalah sama. Continue reading “Membangun Two-Way Replikasi Database MySQL”

Linux, Networking, Ubuntu Server, Web Server

Membangun One-Way Replikasi Database MySQL

Replikasi Database secara one-way menyediakan proses duplikasi data dari server utama menuju server cadangan. Sehingga setiap perubahan yang terjadi pada server utama akan terekam pada server cadangan namun tidak melakukan proses sebaliknya.

KEBUTUHAN PERCOBAAN

  • Ubuntu Server 16.04.02 LTS
  • Database MySQL
  • Web Server Apache

Continue reading “Membangun One-Way Replikasi Database MySQL”

Linux, Networking, Ubuntu Server, Web Server

Belajar Failover

Pengantar

Pada sebuah instalasi jaringan komputer, membutuhkan bantuan manusia untuk memanajemen jika pada suatu saat terjadi hal yang tidak diinginkan. Salah satu contoh masalah ketika layanan yang disediakan diharuskan selalu aktif dan seketika terputus jaringannya sehingga diharuskan untuk menyambungkannya ke jaringan lain sebagai jaringan cadangan. Teknis ini yang dinamakan dengan FAILOVER.

Pengertian Failover

Failover adalah penggunaan mekanisme penggunaan dua atau lebih jaringan internet atau jaringan komputer apabila salah satu koneksi terputus sehingga layanan lain diharapkan dapat membantu memberikan koneksi cadangan. Sistem yang mampu melakukan failover akan berusaha agar sistem selalu online serta diupayakan tidak terganggu jika terjadi kerusakan terhadap koneksi yang digunakan sebelumnya.

Bersambung …

Algorithm, Machine Learning, Programming, Python

Implementasi Sederhana Algoritma K-Nearest Neighbor Bahasa Pemrograman Python

Algoritma K-Nearest Neighbor merupakan metode klasifikasi yang mengelompokan data baru berdasarkan jarak data baru itu kebeberapa data/tetangga (neighbord) terdekat (Santoso, 2007) [1].

Klasifikasi adalah proses penemuan model (atau fungsi) yang menggambarkan dan membedakan kelas data atau konsep yang bertujuan agar bisa digunakan untuk memprediksi kelas dari objek yang label kelasnya tidak diketahui (Kamber, 2006).

Klasifikasi data terdiri dari 2 langkah proses. Pertama adalah learning (fase training), dimana algoritma klasifikasi dibuat untuk menganalisa data training lalu direpresentasikan dalam bentuk rule klasifikasi. Proses kedua adalah klasifikasi, dimana data tes digunakan untuk memperkirakan akurasi dari rule klasifikasi (Kamber, 2006).

Proses klasifikasi didasarkan pada empat komponen (Gorunescu, 2011):

  1. Kelas

    Variabel dependen yang berupa kategorikal yang merepresentasikan „label‟ yang terdapat pada objek. Contohnya: resiko penyakit jantung, resiko kredit, customer loyalty, jenis gempa.

  2. Predictor

    Variabel independen yang direpresentasikan oleh karakteristik (atribut) data. Contohnya: merokok, minum alkohol, tekanan darah, tabungan, aset, gaji.

  3. Training dataset

    Satu set data yang berisi nilai dari kedua komponen di atas yang digunakan untuk menentukan kelas yang cocok berdasarkan predictor.

  4. Testing dataset

    Berisi data baru yang akan diklasifikasikan oleh model yang telah dibuat dan akurasi klasifikasi dievaluasi.

LOAD DATASET


import csv
import random
import math
import operator

def loadDataset(filename, split, trainingSet=[] , testSet=[]):
with open(filename, 'rb') as csvfile:
lines = csv.reader(csvfile)
dataset = list(lines)
for x in range(len(dataset)-1):
for y in range(4):
dataset[x][y] = float(dataset[x][y])
if random.random() < split:
trainingSet.append(dataset[x])
else:
testSet.append(dataset[x])

def main():
# prepare data
trainingSet=[]
testSet=[]
split = 0.67
loadDataset('iris.data', split, trainingSet, testSet)
print 'Train set: ' + repr(len(trainingSet))
print 'Test set: ' + repr(len(testSet))

# generate predictions

main()

Ketika program diatas dieksekusi (docs: https://www.python.org/doc/) maka akan ditampilkan jumlah data set dan data train yang digunakan dari sekian jumlah data yang disiapkan.

MENCARI OBJEK TERDEKAT

Pada tahap ini, dilakukan perhitungan jarak terdekat dari setiap objek menggunakan Euclidean Distance [2]


import csv
import random
import math
import operator

def loadDataset(filename, split, trainingSet=[] , testSet=[]):
with open(filename, 'rb') as csvfile:
lines = csv.reader(csvfile)
dataset = list(lines)
for x in range(len(dataset)-1):
for y in range(4):
dataset[x][y] = float(dataset[x][y])
if random.random() < split:
trainingSet.append(dataset[x])
else:
testSet.append(dataset[x])

def euclideanDistance(instance1, instance2, length):
distance = 0
for x in range(length):
distance += pow((instance1[x] - instance2[x]), 2)
return math.sqrt(distance)

def getNeighbors(trainingSet, testInstance, k):
distances = []
length = len(testInstance)-1
for x in range(len(trainingSet)):
dist = euclideanDistance(testInstance, trainingSet[x], length)
distances.append((trainingSet[x], dist))
distances.sort(key=operator.itemgetter(1))
neighbors = []
for x in range(k):
neighbors.append(distances[x][0])
return neighbors

def main():
# prepare data
trainingSet=[]
testSet=[]
split = 0.67
loadDataset('iris.data', split, trainingSet, testSet)
print 'Train set: ' + repr(len(trainingSet))
print 'Test set: ' + repr(len(testSet))

# generate predictions
predictions=[]
k = 3
for x in range(len(testSet)):
neighbors = getNeighbors(trainingSet, testSet[x], k)
print(neighbors)

main()

MENGHITUNG AKURASI

import csv
import random
import math
import operator

def loadDataset(filename, split, trainingSet=[] , testSet=[]):
with open(filename, 'rb') as csvfile:
lines = csv.reader(csvfile)
dataset = list(lines)
for x in range(len(dataset)-1):
for y in range(4):
dataset[x][y] = float(dataset[x][y])
if random.random() < split:
trainingSet.append(dataset[x])
else:
testSet.append(dataset[x])

def euclideanDistance(instance1, instance2, length):
distance = 0
for x in range(length):
distance += pow((instance1[x] - instance2[x]), 2)
return math.sqrt(distance)

def getNeighbors(trainingSet, testInstance, k):
distances = []
length = len(testInstance)-1
for x in range(len(trainingSet)):
dist = euclideanDistance(testInstance, trainingSet[x], length)
distances.append((trainingSet[x], dist))
distances.sort(key=operator.itemgetter(1))
neighbors = []
for x in range(k):
neighbors.append(distances[x][0])
return neighbors

def getResponse(neighbors):
classVotes = {}
for x in range(len(neighbors)):
response = neighbors[x][-1]
if response in classVotes:
classVotes[response] += 1
else:
classVotes[response] = 1
sortedVotes = sorted(classVotes.iteritems(), key=operator.itemgetter(1), reverse=True)
return sortedVotes[0][0]

def getAccuracy(testSet, predictions):
correct = 0
for x in range(len(testSet)):
if testSet[x][-1] == predictions[x]:
correct += 1
return (correct/float(len(testSet))) * 100.0

def main():
# prepare data
trainingSet=[]
testSet=[]
split = 0.67
loadDataset('iris.data', split, trainingSet, testSet)
print 'Train set: ' + repr(len(trainingSet))
print 'Test set: ' + repr(len(testSet))

# generate predictions
predictions=[]
k = 3
for x in range(len(testSet)):
neighbors = getNeighbors(trainingSet, testSet[x], k)
result = getResponse(neighbors)
predictions.append(result)
print('RESULT: predicted=' + repr(result) + ', actual=' + repr(testSet[x][-1]))
accuracy = getAccuracy(testSet, predictions)
print 'PREDICT: ', accuracy

Referensi :

[1] http://jurnal.unpand.ac.id/index.php/NT/article/download/350/344

[2] https://blogs.itb.ac.id/anugraha/2014/09/10/teori-pengukuran-jarak/

Linux, Penetration Testing, PHP, Programming, SQL, SQL Injection, Web Server

Memanfaatkan Celah Keamanan SQL Injeksi Pada Aplikasi Web

Pada tulisan ini, saya mencoba melakukan pengujian celah keamanan suatu aplikasi web dengan memanfaatkan celah keamanan sql atau yang sering disebut dengan sql injection. Pada intinya, memanfaatkan kesalahan pada penulisan query pada aplikasi tersebut.

Salah satu contoh target yang diambil adalah situs yang diambil secara acak memanfaatkan google dork, langsung saja kita coba lakukan injeksi pada url aplikasi dengan menambahkan parameter seperti berikut : Continue reading “Memanfaatkan Celah Keamanan SQL Injeksi Pada Aplikasi Web”

Linux, Networking, Programming, Ubuntu Server

Exploitasi Hak Akses User Ubuntu 15.04

Exploitasi hak akses yang dimaksud ialah meningkatkan level akses user pada sistem operasi linux yang dalam artikel ini diuji coba pada sistem operasi Ubuntu 15.04-64 bit. Seseorang yang berhasil masuk ke dalam sistem linux atau iseng-iseng ingin memperoleh hak akses user sebagai root, administrator, atau superuser. Continue reading “Exploitasi Hak Akses User Ubuntu 15.04”

Programming

Instalasi dan Konfigurasi Composer Pada Sistem Operasi OSX Sierra

Composer adalah dependency manager khusus PHP yang memiliki fungsionalitas seperti Gem (Ruby) atau Maven (Java). Anda bisa menginstall suatu library melalui composer dan composer akan secara otomatis menginstall library lain yang dibutuhkan, tanpa perlu mendownload satu persatu. Continue reading “Instalasi dan Konfigurasi Composer Pada Sistem Operasi OSX Sierra”