Beberapa waktu belakangan ini saya dibuat pusing dengan konfigurasi Proxy Server. Dari hasil kebingungan tersebut ada beberapa hal yang mesti dicatat sebelum melakukan instalasi dan konfigurasi Proxy server. Untuk yang sempat baca blog ini dan terdapat ada kekurangan atau bahkan kekeliruan mohon dikoreksi.. :) Masih newbie juga sih.
Langkah instalasi :
1. siapkan komputer dengan minimal 2 ethernet card. eth0 untuk koneksi ke jaringan public misalnya lewat ADSL, ASTINET dsb, eth1 untuk koneksi jaringan lokal anda. (192.168.1.0/24)
2. OS Linux ... tentu saja mutlak dibutuhkan, versi berapapun tidak masalah (ini kelebihan linux)
3. Install Linux tersebut dengan minimal paket yang dibutuhkan adalah Squid, Postfix dan beberapa paket server linux.
4. Setelah Terinstall dengan baik coba lihat konfigurasi squid anda, ini adalah contoh konfigurasi squid saya, Anda boleh copy paste disini :
# Edi Widodo PT. GOLDEN MANYARAN# KONFIGURASI DIBAWAH INI SUDAH ADA DI SQUID TINGGAL CONTOhttp_port 192.168.1.254:8080 transparent
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
cache_mem 16 MB
cache_swap_low 90
cache_swap_high 95
maximum_object_size 2000 KB
minimum_object_size 0 KB
maximum_object_size_in_memory 10 KB
cache_replacement_policy heap LFUDA
memory_replacement_policy heap GDS
Fauth_param basic children 5
auth_param basic realm
Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
cache_dir ufs /var/spool/squid 100 16 256
access_log /var/log/squid/access.log squid
# BUAT DAFTAR KONEKSI ANDA DISINI
acl all src 0.0.0.0/0.0.0.0
acl kabehbeh src 191.168.1.0/24
acl udanggoreng src 192.168.1.1-192.168.1.5
acl petiskangkung src 192.168.1.16-192.168.1.41
acl gembusrebus src 192.168.1.42-192.168.1.43
acl babyboy src 192.168.1.10
acl qutebebeh src 192.168.1.111
acl berli src 192.168.1.0/24
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
# BUAT WAKTU KONEKSI YANG INGIN ANDA ATUR DISINI
# INGAT WAKTU INI HARUS SESUAI DENGAN HARDWARE CLOCK (BIOS CLOCK)
acl isukisuk time MTWHF 07:45-18:30
acl awanawan time MTWHF 12:00-13:00
acl soresore time MTWHF 15:15-17:00
acl sedino time MTWHF 07:00-19:00
#MTWHF artinya MONDAY TUESDAY WEDNESDAY THURSDAY FRIDAY kalo sabtu tambah S SATURDAY
acl SSL_ports port 443 563
acl Safe_ports port 80 8080 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 10000 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
# TULIS KEBIJAKAN ANDA DISINI BISA FULL / JAM TERTENTU
http_access deny manager
http_access allow udanggoreng
http_access allow petiskangkung sedino
http_access allow gembusrebus soresore
http_access allow babyboy sedino
http_access allow qutebebeh
http_access allow manager localhost
visible_hostname proxy.co.id # SESUAIKAN DENGAN HOSTNAME ANDA
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access deny all
http_reply_access allow all
icp_access allow all
4. Konfigurasi Squid sudah diaktifkan, jangan lupa restart squid
# /etc/rc.c/init.d/squid restart (Saya Pake Mandrake, yang lain sesuaikan sendiri)
5. edit file /proc/sys/net/ipv4/ip_forward gunakan editor sesuai selera. ganti nilai 0 menjadi 1
atau bisa juga anda ketik lewat shell # echo 1 > /proc/sys/net/ipv4/ip_forward
6. Forward paket-paket yang menuju ke eth0 yang konek dengan public, jangan sampai salah penentuan eth nya, harus eth yang konek ke jaringan public yang melakkukan POSTROUTING
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
7. Jangan lupa konfigurasi ethernet addressnya yang eth1 dengan alamat lokal, yang eth0 dengan alamat public (kalo punya) kalo adsl gunakan alamat yang sesuai dengan modem adslnya. Buat konfigurasi ipaddress dengan editor biasa
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.1.254 # Sesuaikan dengan alamat jaringan anda
NETMASK=255.255.255.0
NETWORK=192.168.1.0
BROADCAST=192.168.1.255
ONBOOT=yes
buat juga untuk eth1 nya
# vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=static
IPADDR=192.168.0.2
NETMASK=255.255.255.0
NETWORK=192.168.0.0
BROADCAST=192.168.0.255
ONBOOT=yes
# Sesuaikan dengan alamat public anda atau dengan alamat ADSL anda
8. Ediit file /etc/resolve.conf
nameserver 202.134.0.155 # sesuaikan dengan dns provider anda , Ini telkom
10. sampai disini harusnya proxy anda sudah bisa koneksi ke internet. dan juga sudah bisa berfungsi sebagai proxy server.
11. Duduk dulu ,.. nikmati dulu internet koneksinya
12. Untuk membaca log squid gunakan,
# tail -f /var/log/squid/access.log
Semoga Membantu...
RISKI ONE STEEP BEYOND
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, math;
type
TForm1 = class(TForm)
Button1: TButton;
GroupBox1: TGroupBox;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Button2: TButton;
procedure FormShow(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
procedure bersihkan;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.bersihkan;
begin
edit1.Clear;
edit2.Clear;
edit3.Clear;
edit4.Clear;
edit5.Clear;
edit6.Clear;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
bersihkan;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
bersihkan;
edit1.SetFocus;
end;
procedure TForm1.Button1Click(Sender: TObject);
var s,c,t:Extended;
begin
if edit1.Text = '' then
begin
Application.MessageBox('Isi terlebih dahulu Mohon Ulang Kembali!','Peringatan !',MB_ICONWARNING);
edit1.SetFocus;
end
else if edit2.Text = '' then
begin
Application.MessageBox('Isi terlebih dahulu Mohon Ulang Kembali!','Peringatan !',MB_ICONWARNING);
edit2.SetFocus;
end
else if edit3.Text = '' then
begin
Application.MessageBox('Isi terlebih dahulu Mohon Ulang Kembali!','Peringatan !',MB_ICONWARNING);
edit3.SetFocus;
end
else if ((edit1.Text <> '') or (edit2.Text <> '') or (edit3.Text<> '')) then begin
s:= StrToFloat(Edit1.Text);
c:= StrToFloat(Edit2.Text);
t:= StrToFloat(Edit3.Text);
Edit4.Text:= FloatToStr(Sin(s));
Edit5.Text:= FloatToStr(Cos(c));
Edit6.Text:= FloatToStr(Tan(t));
end;
end;
end.
RISKI ONE STEEP BEYOND
· Runut-balik (backtracking)
adalah algoritma yang berbasis pada DFS untuk mencari solusi persoalan secara
lebih mangkus.
· Runut-balik, yang merupakan perbaikan dari algoritma brute-force, secara sistematis mencari
solusi persoalan di antara semua kemungkinan solusi yang ada.
· Dengan metode runut-balik, kita tidak perlu memeriksa
semua kemungkinan solusi yang ada. Hanya pencarian yang mengarah ke solusi saja
yang selalu dipertimbangkan. Akibatnya, waktu pencarian dapat dihemat.
· Runut-balik merupakan bentuk tipikal dari algoritma rekursif.
· Saat ini algoritma runut-balik banyak diterapkan untuk
program games (seperti permainan tic-tac-toe, menemukan jalan keluar
dalam sebuah labirin, catur, dll) dan masalah-masalah pada bidang kecerdasan buatan (artificial intelligence).
Properti Umum Metode Runut-balik
1. Solusi persoalan.
Solusi dinyatakan sebagai vektor dengan n-tuple:
X = (x1,
x2, …, xn), xi
Î himpunan berhingga Si .
Mungkin saja S1
= S2 = … = Sn.
Contoh: Si
= {0, 1},
xi
= 0 atau 1
2. Fungsi pembangkit nilai xk
Dinyatakan sebagai:
T(k)
T(k)
membangkitkan nilai untuk xk,
yang merupakan komponen vektor solusi.
3. Fungsi pembatas (pada beberapa persoalan fungsi ini
dinamakan fungsi kriteria)
Dinyatakan sebagai
B(x1, x2, …, xk)
Fungsi pembatas menentukan apakah (x1, x2, …, xk) mengarah ke solusi. Jika ya, maka
pembangkitan nilai untuk xk+1
dilanjutkan, tetapi jika tidak, maka (x1,
x2, …, xk) dibuang dan tidak
dipertimbangkan lagi dalam pencarian solusi.
Pengorganisasian Solusi
· Semua kemungkinan solusi dari persoalan disebut ruang solusi (solution space).
· Jika xi
Î Si, maka S1 ´ S2
´ … ´ Sn
disebut ruang solusi.
· Jumlah anggota di dalam ruang solusi adalah | S1| × | S2|
× … × | Sn
|.
· Tinjau persoalan Knapsack
0/1 untuk n = 3. Solusi persoalan
dinyatakan sebagai vektor (x1,
x2, x3) dengan xi
Î {0,1}. Ruang solusinya adalah
{0,1} ´ {0,1} ´ {0,1} = {(0, 0, 0), (0, 1, 0),
(0, 0, 1),
(1,
0, 0), (1, 1, 0), (1, 0, 1),
(0, 1, 1), (1, 1, 1)}.
· Pada persoalan Knapsack
0/1 dengan n = 3 terdapat 2n = 23 = 8
kemungkinan solusi, yaitu:
(0,
0, 0), (0, 1, 0), (0, 0, 1),
(1, 0, 0), (1, 1, 0), (1, 0, 1),
(0, 1, 1), dan (1, 1, 1).
· Penyelesaian secara exhaustive search adalah dengan menguji setiap kemungkinan solusi.
· Ruang solusi diorganisasikan ke dalam struktur pohon.
· Tiap simpul pohon menyatakan status (state) persoalan, sedangkan sisi
(cabang) dilabeli dengan nilai-nilai xi.
· Lintasan dari akar ke daun menyatakan solusi yang
mungkin.
· Seluruh lintasan dari akar ke daun membentuk ruang
solusi. Pengorganisasian pohon ruang solusi diacu sebagai pohon ruang status (state space tree).
· Tinjau kembali persoalan Knapsack 1/0 untuk n = 3.
Ruang solusinya
Gambar 7.1 Ruang solusi
untuk persoalan Knapsack 0/1 dengan n = 3
Prinsip
Pencarian Solusi dengan Metode Runut-balik
1. Solusi dicari dengan membentuk lintasan dari akar ke
daun. Aturan pembentukan yang dipakai adalah mengikuti aturan pencarian
mendalam (DFS). Simpul-simpul yang sudah dilahirkan dinamakan simpul hidup (live node). Simpul hidup yang sedang
diperluas dinamakan simpul-E (Expand-node).
2. Tiap kali simpul-E diperluas, lintasan yang dibangun
olehnya bertambah panjang. Jika lintasan yang sedang dibentuk tidak mengarah ke
solusi, maka simpul-E tersebut “dibunuh” sehingga menjadi simpul mati (dead node).
Fungsi yang digunakan untuk membunuh simpul-E adalah dengan menerapkan fungsi pembatas (bounding function). Simpul yang sudah mati tidak akan pernah
diperluas lagi.
3. Jika pembentukan lintasan berakhir dengan simpul mati,
maka proses pencarian diteruskan dengan
membangkitkan simpul anak yang lainnya. Bila tidak ada lagi simpul anak yang
dapat dibangkitkan, maka pencarian solusi dilanjutkan dengan melakukan
runut-balik ke simpul hidup terdekat (simpul orangtua). Selanjutnya simpul ini
menjadi simpul-E yang baru.
4. Pencarian dihentikan bila kita telah menemukan solusi
atau tidak ada lagi simpul hidup untuk runut-balik.
Tinjau
persoalan Knapsack 0/1 dengan
instansiasi:
n = 3
(w1,
w2, w3) = (35, 32, 25)
(p1,
p2, p3) = (40, 25, 50)
M
= 30
Solusi
dinyatakan sebagai X = (x1, x2, x3),
xi Î {0, 1}.
Fungsi
pembatas:
(a)
|
(b)
|
Gambar 7.2 (a) Pohon dinamis yang dibentuk selama pencarian
untuk persoalan Knapsack 0/1 dengan n = 3,
w = (35, 32, 25) dan p = (40, 25, 50)
(b) Penomoran ulang simpul-simpul sesuai urutan
pembangkitannya
Solusi optimumnya adalah X = (0, 0, 1) dan F = 50.
Skema Umum Algoritma Runut-Balik
(a) Versi rekursif
procedure
RunutBalikR(input k:integer)
{Mencari semua solusi persoalan dengan metode runut-balik;
skema rekursif
Masukan: k, yaitu
indeks komponen vektor solusi, x[k]
Keluaran: solusi x
= (x[1], x[2], …, x[n])
}
Algoritma:
for tiap x[k] yang belum dicoba
sedemikian sehingga
( x[k]¬T(k))
and B(x[1], x[2], ... ,x[k])= true do
if
(x[1], x[2], ... ,x[k]) adalah lintasan dari akar ke daun
then
CetakSolusi(x)
endif
RunutBalikR(k+1) {
tentukan nilai untuk x[k+1]}
endfor
|
Pemanggilan
prosedur pertama kali: RunutBalikR(1)
(b) Versi iteratif
procedure
RunutBalikI(input n:integer)
{Mencari semua solusi persoalan dengan metode runut-balik;
skema iteratif.
Masukan: n, yaitu
panjang vektor solusi
Keluaran: solusi x
= (x[1], x[2], …, x[n])
}
Delarasi:
k : integer
Algoritma:
k¬1
while k > 0 do
if (x[k] belum dicoba sedemikian
sehingga x[k]¬T(k))
and
(B(x[1], x[2], ... ,x[k])= true)
then
if (x[1],x[2],...,x[k])
adalah lintasan dari akar ke daun
then
CetakSolusi(x)
endif
k¬k+1 {indeks
anggota tupple berikutnya}
else {x[1], x[2], …, x[k] tidak
mengarah ke simpul solusi }
k¬k-1
{runut-balik
ke anggota tupple sebelumnya}
endif
endwhile
{ k =
0 }
|
Pemanggilan
prosedur pertama kali: RunutBalikI(n)
· Setiap simpul dalam pohon ruang status berasosiasi
dengan sebuah pemanggilan rekursif.
· Jika jumlah simpul dalam pohon ruang status adalah 2n atau n!, maka untuk kasus terburuk, algoritma runut-balik membutuhkan
waktu dalam O(p(n)2n) atau O(q(n)n!), dengan p(n) dan q(n)
adalah polinom derajat n yang
menyatakan waktu komputasi setiap simpul.
RISKI ONE STEEP BEYOND
·
Pertama
kali diperkenalkan oleh DH Lehmer
(1950), dirumuskan dalam suatu algortima oleh RJ Walker (1960), aplikasinya dikembangkan oleh Golomb dan Baumert.
·
Dasar
dari teknik Backtracking adalah searching.
·
Backtracking
merupakan salah satu algotritma yang didasarkan pada pencarian ruang solusi.
·
Pencarian
ruang solusi dalam algoritma backtracking menggunakan teknik pencarian Depth First Search (DFS).
·
Masalah-masalah
yang dapat diselesaikan dengan menggunakan algoritma Backtracking adalah :
Ø The 8-Queen Problem
Ø The 4-Queen Problem
Ø Sum of Subsets
Ø Graph Coloring
Ø Hamilton Cycles
Ø Knapsack Problem
Ø The Travelling Salesman Problem
Penyelesaian Sum of Subsets dengan
Menggunakan Algoritma Backtracking
Masalah
utama dari SUM of SUBSETS adalah jika terdapat n bilangan real dan ingin dihitung
semua kombinasi yang mungkin dari himpunan bilangan tersebut. Kombinasi yang
didinginkan adalahkombinasi yang jumlah seluruh elemen-elemennya sama dengan M
(tertentu).
Algoritma Sum of Subset
procedure
sumofsub(s,k,r)
global
integer M,n
global real
w(1:n)
real
r,s
integer k,j
x(k) = 1
if s + w(k)
= M then
print(x(j),j ß 1 to k)
else
if s + w(k) + w(k+1) ≤ M
then
call
sumofsub(s+w(k), k+1, r-w(k))
endif
endif
if s +
r-w(k) ≥ M and s + w(k+1) ≤ M then
x(k) ß 0
call sumofsub(s, k+1, r-w(k))
endif
end
sumofsub
Permasalahan :
Suatu
himpunan terdiri dari 6 bilangan yaitu {5, 10, 12, 13, 15, 18} yang disusun
secara tidak turun. Akan ditentukan himpunan-himpunan bagiannya yang jumlah
seluruh elemennya adalah 30
Penyelesaian :
n=6
W(1:6) =
{5,10,12,13,15,18}
M = 30
Diasumsikan bahwa w(1) ≤ M dan ∑ w(i) ≥ M
Dalam hal
ini w(1)= 5 ≤ 30 dan ∑ w(i) = 73 ≥ 30,
|
|
|
|
Diperoleh himpunan
penyelesaian :
A = {1,1,0,0,1} =
5+10+15=30
B = {1,0,1,1} =
5+12+13 = 30
C = {0,0,1,0,0} =
12+18 = 30
RISKI ONE STEEP BEYOND
Teka Teki Silang atau disingkat TTS adalah suatu permainan di mana kita harus mengisi ruang-ruang kosong (berbentuk kotak putih) dengan huruf-huruf yang membentuk sebuah kata berdasarkan petunjuk yang diberikan. Dalam permainan teka-teki silang terdapat papan permainan utama. Papan permainan sendiri terdiri atas kotak-kotak berwarna hitam dan putih.
Permainan ini memang cukup mudah untuk dimainkan, namun sayangnya untuk dapat membuat soal yang valid merupakan hal yang sulit. Perlu suatu program komputer untuk menyelesaikan permasalahan tersebut. Dalam pemecahan masalah, program komputer ini akan menggunakan algoritma backtracking (runut balik). Algoitma runut-balik (backtracking) akan mampu memberikan hasil apakah deretan-deretan kotak jawaban yang telah dibuat sudah cocok dengan deretan jawaban kata yang disediakan.
Algoritma backtracking merupakan algoritma pencarian yang berbasis pada DFS (Depth-First Search) atau pencarian mendalam dengan tujuan mencari solusi permasalahan secara lebih praktis. Mekanisme penyelesaian dengan menggunakan backtracking berprinsip pada metode rekursif.
Algoritma backtracking dalam permainan ini akan digunakan untuk mengisi kotak-kotak permainan yang sebelumnya telah dibuat. Kotak-kotak ini bisa direpresentasikan dengan struktur data matriks sehingga setiap kotak akan memiliki indeks. Indeks ini akan digunakan untuk melakukan pencarian kata yang cocok. Pada pengisian kata ke dalam kotak-kotak, pertama-tama program akan menentukan deretan kotak awal yang ngin diisi. Program akan menghitung jumlah kotak pada deretan kotak tersebut kemudian akan mencari kata di dalam database (yang terdiri atas kumpulan kata/jawaban) yang memiliki jumlah karakter sama dengan jumlah kotak tersebut.
Dalam pencarian data kata-kata mungkin akan terdapat beberapa kata yang cocok untuk dimasukkan kedalam satu deretan kotak, untuk itu program akan memilih kata yang berada lebih awal dalam database kata. Langkah selanjutnya, program akan mengidentifikasi indeks pada deretan kotak yang terhubung dengan deretan kotak lainnya. Program akan mencatat dimana letak hubungan antar deretan kotak tersebut kemudian mencatat indeks dan mengambil karakter yang terdapat di dalamnya untuk dibandingkan kembali dengan deretan kata yang ada di dalam database kata. Jika kata yang dimasukkan berikutnya cocok maka pencarian akan dilanjutkan, namun jika tidak terdapat kata yang cocok maka program akan mematikan kemungkinan jawaban berdasarkan pencarian tersebut dan program akan melakukan backtrack.
Backtrack dilakukan dengan cara program akan menghapus kata yang terakhir dimasukkan ke dalam deretan kotak, kemudian program akan mengganti kata tersebut dengan kata lain yang juga bisa diisikan ke dalam deretan kotak tersebut dan kemudian program akan melakukan pencarian ulang. Langkah-langkah diatas akan terus dilakukan secara rekursif, sampai program menemukan solusi dari permasalahan (seluruh kotak terisi) atau program tidak menemukan solusi (tidak ada kemungkinan jawaban yang valid).
Dalam permainan teka-teki silang ini, algoritma Backtracking sudah bisa memberikan jawaban yang pasti sehingga algoritma Backtracking ini bisa dimplementasikan. Selain itu algoritma Backtrack juga merupakan algoritma yang sederhana namun cukup praktis dibandingkan dengan algoritma brute force. Hal ini disebabkan karena pada prinsipnya, kita tidak perlu memeriksa semua kemungkinan solusi yang ada. Pencarian hanya mengarah pada solusi yang dipertimbangkan saja.
Meski demikian, algoritma backtracking masih memiliki kelemahan, yaitu hanya bisa diaplikasikan terbatas pada tipe permasalahan yang memiliki solusi yang dapat dicari secara sistematis dan bertahap. Terdapat masalah-masalah yang tidak bisa diselesaikan dengan menggunakan backtracking, misalnya menemukan suatu nilai yang diminta pada tabel yang tidak terurut. Namun ketika algoritma ini dapat diaplikasikan, backtracking dapat bekerja jauh lebih cepat dari brute force karena jumlah kandidat solusi yang dapat dibuang dengan backtracking cukup besar.
Langganan:
Postingan (Atom)