Wednesday, October 15, 2008

DHCP Server di Linux

f

Membuat DHCP cukup simple di linux Mandriva (Mandrake family)
keuntungan menggunakan DHCP tentu saja pada kepraktisan dan kemudahan administrasi jaringan.
bayangkan bilamana anda harus mengontrol jaringan yang lumayan besar, taruh saja misalnya ada 100 unit komputer di lingkungan kerja anda, dan anda harus setiap saat melakukan konfigurasi jaringan di tiap tiap komputer, he dijamin pegel pegel.

DHCP server solusinya, biarkan server yang melakukan konfigurasi jaringan, jika ada perubahan tinggal rubah settingan server, pasti yang lain ikut.

download paket rpm DHCP server dari cd installernya kalo punya. kalo tidak cari di rpmsource ingat sesuaikan dengan distro anda, rpm file memang mudah tapi agak repot kalo tidak punya cdnya. karena biasanya mempunyai ketergantungan (dependencies) dengan paket2 lain.

jangan takut, baca dan lakukan saja apa yang diminta kalo ada paket yang kurang.

# rpm -ivh dhcp-server-3.0.4-2mdv2007.0.i586.rpm

proses OK.
buka file konfigurasi dhcpd.conf biasanya ada samplenya tinggal lakukan perubahan sesuaikan dengan kondisi jaringan anda.

contoh :

ddns-update-style interim;
ignore client-updates;
ddns-updates on;
subnet 192.168.2.0 netmask 255.255.255.0 {
option routers 192.168.2.1;
option subnet-mask 255.255.255.0;
option domain-name "goldenproxy.org";
option ip-forwarding off;
option broadcast-address 192.168.2.255;
option domain-name-servers 202.134.1.10 , 202.134.0.155;
option nis-domain "goldenproxy.org";

range dynamic-bootp 192.168.2.20 192.168.2.50;
default-lease-time 28800;
max-lease-time 43200;

# we want the nameserver to appear at a fixed address
host ns {
next-server edp-dept2.goldenproxy.org;
hardware ethernet 00:02:44:35:4F:60;
fixed-address 192.168.2.50;
}
}

PENJELASAN berdasarkan baris
1 : dinamic dns update style ada 3 opsi off, interim, ad-hoc
2 : abaikan update dari client
3 : ddns update on
4 : subnet dan netmask dari lingkungan jaringan anda
5 : gateway bila dhcp ini ada pada pc router (gateway adalah eth yang menghubungkan dengan jaringan luar contoh internet)
6 : jelas
7 : domain name yang anda gunakan, biasanya hostname mesin dhcp server
8 : ipforward set ke off, jadi biarkan dhcp yang mengerjakan ipforward
9 : jelas
10 : dns provider internet bila ada (diatas adalah dns speedy telkom)
11 : jelas
12 : daftar range IP yang disewakan dhcp
13 : lamanya waktu ip disewa 8 jam 28800 sec (asumsi jam kerja), setelah itu boleh disewa oranglain
14 : maksimal waktu ip disewa per komputer, setelah itu akan direlease (renew)
15 : host ns, jika anda menginginkan komputer tertentu mendapatkan ip tetap daftarkan saja disini, cantumkan mac address dan ip yang diinginkan.

kalo sudah tinggal diaktifkan saja dhcpnya,

# /etc/rc.d/init.d/dhcdp start

coba setting computer client, arahkan dns server ke ip komputer yang diinstall dhcp tadi.

jrengg.... udah deh, semoga bermanfaat.

CMIIW







Monday, May 05, 2008

Download Management

Sekali lagi mari kita utak utik squid. Karena menurut saya ini adalah jalan pintas untuk belajar linux. Seringkali orang bingung, setelah berhasil install Linux, trus mau diapain ? Jawaban yang paling gampang dan langsung bisa diaplikasikan adalah, fungsikan sebagai proxy server.

Kali ini bahasan kita sampai pada download management. setelah sebelumnya berhasil install squid yang anda bisa baca disini
http://ediwe.blogspot.com/2006/08/konfigurasi-proxy-server-linux.html dan berhasil install lightsquid http://ediwe.blogspot.com/2008/04/install-lightsquid.html ataupun SquidGuard yang anda bisa baca disini http://ediwe.blogspot.com/2008/04/squidguard.html.

Mari Mulai dengan Download Management.

Download Management menurut terjemahan bebas versi saya adalah mengatur bandwidth untuk download pada jaringan dibawah proxy. Sayangnya, jika anda menginstall squid dari source anda harus menyertakan option -enable-delay-pools, tapi kalo install dari paket RPM biasanya sudah include (CMIIW)

Komponen bandwidth management adalah :

delay pools : disini didefinisikan jumlah pools yang akan diterapkan

delay_class : spesifikasi dari delay pools. delay class ini dibagi dalam 3 class berbeda,

class 1 untuk mendefinisikan maksimal bandwidth dalam satu LAN tidak mendetail

class 2 pada class ini terdapat 2 parameters, yang pertama untuk mendefinisikan jumlah bandwidth maksimal yang didapat ACL, yang kedua badwidth yang dipakai keseluruhan untuk semua ACL

class 3 ada 3 parameter disini, 1 & 2 sama dengan class 2 namun ada tambahan parameter yang ke 3 yaitu untuk menentukan badwidth maksimal yang didapat apabilai dalam ACL tersebut mendownload file2 tertentu yang sudah didefinisikan.

contoh :
delay_class 1 2 # pool 1 memakai clas tipe 2
delay_class 2 3 # pool 2 memakai clas tipe 3

delay_access Memberi batasan siapa saja yang boleh mempergunakan delay pools ini.Penting untuk diingat sebaiknya setelah menetukan batasan jangan lupa di akhiri dengan deny all.

delay_access 1 allow manajer
delay_access 1 deny all
delay_access 2 allow sales
delay_access 2 deny all

delay_parameters : Ini adalah bagian terpenting dari delay pools. delay parameter mempunyai format yang disesuaikan dengan tipe/class yang dipakai.Tapi disetiap tipe yang dipakai ada 1 format baku yaitu restore/max. restore menunjukkan maksimum kecepatan data yang dapat dilewatkan bila harga max sudah terlampaui, dalam satuan bytes/second. Max menunjukkan besar-nya file atau bucket yang dapat dilewatkan tanpa melalui proses delay dalam satuan bytes. Yang perlu diperhatikan dari satuan diatas adalah harga restore dimana kita sering menerima/menyewa/membeli bandwidth dari provider dalam satuan bits/second bukan bytes/second. Sedangkan satuan kecepatan pada saat mendonlot file adalah bytes/sec. Sedangkan satuan dari harga max sudah sesuai dengan kebiasaan sehari-hari, dimana kita memberi besaran bytes pada file-file.1 byte = 8 bit.

Contoh parameter ini adalah :

-1/-1 : berarti unlimited atau tidak dibatasi pada nilai restore/max
1000/64000 : harga restore sama dengan 8000 bits/sec atau 8 kbits/sec.

Yang artinya user akan mendapat donlot brustable selama file yang akan dibuka lebih kecil dari 64 kbytes, jadi kecepatan bisa diatas 8 kbit/sec.
Bila ternyata file yang dibuka melebihi 64 bytes, maka proses limitasi akan segera dimulai dengan membatasi kecepatan maksimal 8 kbits/s.

class 1
delay_parameters <#pool individual>

Contoh :
delay_parameters 1 1000/64000

Berarti semua network akan mendapat bandwidth yang sama di pool no 1.
Sebesar 1 kbytes/sec (8 kbits/sec), dengan burstable file 64 kb.

class 2
delay_parameters <#pool agregate individual>

Contoh :
delay_parameters 1 32000/32000 1000/64000

Berarti squid akan memakai bandwidth maksimum (32000*8) 256kbits dari semua bandwidth. Bila terdapat lebih dari 1 network class C, maka total yang dihabiskan tetap 256 kbit/sec dan tiap user akan mendapat bandwidth maksimum 1 kbytes/sec (8 kbits/sec), dengan burstable file 64 kb.

class 3
delay_parameters <#pool agregate network individual>

contoh :
delay_parameters 1 32000/32000 8000/8000 1000/64000

Berarti squid akan memakai bandwidth maksimum (32000*8) 256kbits dari semua bandwidth. Bila terdapat lebih dari 1 network class C, maka setiap network akan dipaksa maksimum sebesar (8000*8) 64 kbits/sec dan tiap user pada satu network akan mendapat bandwidth maksimum 1 kbytes/sec (8 kbits/sec), dengan burstable file 64 kb.

Contoh
dalam 1 network dengan penggunaan bandwidth total tidak dibatasi terdapat beberapa komputer dengan klasifikasi sebagai berikut :

admin, server dengan bandwidth unlimited
staff dengan bandwidth 1,5 kbytes/sec, bila file yang diakses melebihi 64Kbte
umum dengan bandwidth 1 kbytes/sec, bila file yang diakses melebihi 32 Kbyte

acl all src 0.0.0.0/0.0.0.0
acl admin src 192.168.1.250/255.255.255.255
acl server src 192.168.1.251/255.255.255.255
acl kantor src 192.168.1.0/255.255.255.0
acl staff src 192.168.1.1 192.168.1.111 192.168.1.2 192.168.1.4 192.168.1.71

delay_pools 3
delay_class 1 1
delay_parameters 1 -1/-1
delay_access 1 allow admin
delay_access 1 allow server
delay_access 1 deny all

delay_class 2 1
delay_parameters 2 1500/64000
delay_access 2 allow staf
delay_access 2 deny all
delay_class 3 1
delay_parameters 3 1000/32000
delay_access 3 allow umum
delay_access 3 deny all

Delay pools juga dapat digunakan untuk membatasi donlot file untuk extensi tertentu. Gunakan ACL url_regex untuk mengatasi hal ini. Contoh dibawah digunakan untuk membatasi donlot file multimedia hingga 1 kByte/sec.

acl multimedia url_regex -i \.mp3$ \.rm$ \.mpg$ \.mpeg$ \.avi$ \.dat$
delay_pools 1
delay_class 1 1
delay_parameters 1 1000/16000
delay_access 1 allow multimedia
delay_access 1 deny ALL

Beberapa bagian tulisan ini saya sadur dari link ini
http://malang.linux.or.id/?p=5 yang menurut saya lebih gampang difahami, he.. silahkan dibaca.

Udah, gitu aja...
Masih bingung ?.. coba praktekan aja deh.. He.. Semoga bermanfaat.

Wednesday, April 16, 2008

SquidGuard

wah, denger namanya saja udah menakutkan ya ?.. mirip body guard aja. emang bener sih.. squid guard emang mirip body guard untuk sang majikan yang dalam hal ini tentu saja squid.

Mungkin anda sudah cukup dengan acl (access control list) yang anda buat di squid.conf dengan menuliskan beberapa daftar situs yang dilarang diakses, tapi bayangkan bilamana user anda aktif mencari dan terus mencari situs-situs yang mengandung content porno dan tentu saja karena aktif mencari bisa jadi ketemu situs yang tidak ada dalam daftar anda.. atau tiap hari anda harus sibuk mencari dan mengupdate daftar situs yang anda block ?.. itu mah.. kurang kerjaan. Mari manfaatkan komunitas, sumber daya bersama.. jangan kawatir, masih banyak orang baik di dunia ini yang mau berbagi dengan kita.

Saya tidak perlu bicara instalasi squidGuard, sudah sangat banyak yang bicara, kalo masih ingin tahu silahkan kunjungi
http://www.squidguard.org/Doc/install.html , jadi kita langsung masuk konfigurasinya saja.

saya asumsikan squid dan squdGuard sudah terinstall, langkah yang harus anda lakukan adalah :


1. sisipkan konfigurasi untuk meredirect squidGuad pada squid.conf, seperti biasa gunakan editor kesukaan

[root@proxy ~]# vi /etc/squid/squid.conf
...
...
## Redirect Untuk Squid Guard
redirect_program /usr/bin/squidGuard #ini maksudnya panggil program squidGuard
redirect_children 10 #anak dari proses squidGuard sampe 10, biar proses cepet
...
...
2. setelah merubah squid.conf kita coba rubah konfigurasi squidGuard.cof

# CONFIGURATION DIRECTORIES, sesuaikan dengan direktori ditempat anda.
dbhome /usr/share/squidGuard-1.2.0/blacklists
logdir /var/log/squidGuard

# DESTINATION CLASSES:
dest adult
{
log adult
domainlist adult/domains
urllist adult/urls
}
dest porn
{
log porn
domainlist porn/domains
urllist porn/urls
}
# tulis lagi blok program seperti diatas sesuaikan dengan direktori yang akan diblok, sebanyak yang anda punya, saya hanya kasih contoh 2, biar hemat halaman ini :)

# ACLs
acl {
default {
pass !ads !adult !aggressive !audio-video !drugs !gambling !hacking !porn !proxy !warez !violence all
redirect 302:http://www.google.com
#maksudnya ini diredirect ke google, biar gak keliatan kasar "access denied"
}
}

3. sesuaikan potongan script ini dengan direktori anda
# Give location of squid and squidguard programs
SQUID=/usr/sbin/squid
SQUIDGUARD=/usr/bin/squidGuard

#BLACKDIR should be set to equal the dbhome path declaration
# in your squidguard.conf file
BLACKDIR=/usr/share/squidGuard-1.2.0/db
BLKDIRADLT=${BLACKDIR}/blacklists
PORN=${BLACKDIR}/blacklists/porn
ADULT=${BLACKDIR}/blacklists/adult
ADS=${BLACKDIR}/blacklists/ads

diatas adalah potongan script yang bisa anda download di http://www.maynidea.com/squidguard/getlists.html jalankan script tersebut, dan tunggu agar semua proses download selesai. Pengalaman saya waktu saya buka dengan vi di setiap akhir baris script terdapat character aneh (payung+M), dan ini tentu saja harus dihapus, karena akan dianggap salah oleh shell. hapus semua character aneh payung+M (jika Ada) disetiap akhir line. lebih simple kalau langsung dicopy paste dari web tersebut, gak perlu mengedit lagi.

4. pastikan configurasi squidGuard.conf mengarah ke direktori yang tepat, bila masih salah lakukan uji joba, lagi dan lagi sampai berhasil.

5. restart squid dengan
# service squid restart
atau
# /etc/rc.d/init.d/squid restart
atau yang lebih ekstrim
# killall squid
# killall squid
# squid&

saya lebih suka yang ketiga, lebih cepet keluarnya :)

6. jangan berharap setelah anda baca, anda salin langsung abrakadabra berjalan mulus, kemungkinan masih belum sesuai, banyak kasus kesalahan pada lokasi direktori squidGuard dan database yang mungkin berbeda, coba dan coba lagi. Yakin Usaha Sampai ...!!

7. sebagai tambahan, anda wajib mencantumkan daftar web web redirector / proxy sebagai domain yang harus anda block, karena jika masih dibuka, squid ataupun squidGuard tidak akan berfungsi, karena dengan situs redirector tersebut semua situs yang anda blok masih bisa diakses. contoh situs redirector adalah http://www.youhide.com/ http://www.surfola.com/ http://www.anonymize.net/ dan masih banyak lagi yang lainnya.

Semoga bermanfaat...

Friday, April 11, 2008

Install Lightsquid


Squid sudah terinstall, membaca waktu aksesnya pun sudah bisa, tinggal kita manfaatkan aplikasi tambahan untuk mempermudah kita monitoring proxy server kita, lihat gambar diatas.. tertarik membuatnya ? Siapkan segelas susu, jangan rokok ya ?.. merokok merugikan kesehatan (kata pemerintah)

Kita mulai instalasi lightsquid, sebelumnya apa itu lightsquid ? gampangnya lightsquid adalah proxy squid analiser berbasis web. mmm ya... gitulah

sebelumnya download dulu lightsquid disini terakhir saya lihat versi 1.7.1
http://optusnet.dl.sourceforge.net/sourceforge/lightsquid/lightsquid-1.7.1.tgz

Jangan lupa setelah itu download juga perl-GD, yang ini berfungsi agar lightsquid dapat menampilkan grafik, seperti di spreadsheet itu. Nah download disini nih...
ftp://fr.rpmfind.net/linux/Mandrake/2007.0/i586/media/main/release/perl-GD-2.35-1mdv2007.0.i586.rpm

setelah download semua langkah - langkah instalasinya sbb :
1. exstract paket lightsquid ke direktori kesukaan anda

[root@proxy ~]# tar -zxvf lightsquid-1.7.1.tgz

2. ganti direktori hasil ekstak dengan yang lebih mudah (optional)

(edit Baru) Jangan lupa letakkan direktori lightsquid pada direktory http server anda contoh di /var/www/html/

[root@proxy ~]# mv lightsquid-1.7.1/ lightsquid

3. masuk ke direktori lightsquid dan ubah agar semua script bisa di executable
[root@proxy ~]# cd lightsquid
[root@proxy ~]# chmod +x *.cgi
[root@proxy ~]# chmod +x *.pl

4. Install perl-GD yang tadi anda download, jika meminta paket libgd.

[root@proxy ~]# rpm -ivh perl-GD-2.35-1mdv2007.0.i586.rpm

5. masih di direktori lightsquid, ketikkan perintah

[root@proxy lightsquid]# perl check-setup.pl
LightSquid Config Checker, (c) 2005 Sergey Erokhin GNU GPL
LogPath : /var/log/squid

reportpath: /var/www/html/lightsquid/report
Lang : /var/www/html/lightsquid/lang/eng
Template : /var/www/html/lightsquid/tpl/base
Ip2Name : /var/www/html/lightsquid/ip2name/ip2name.simple
all check passed, now try access to cgi part in browser


ini artinya lightsquid siap digunakan, tapi jangan buru buru, ada sedikit tambahan yang harus anda ketikkan di httpd.conf. saya berasumsi bahwa komputer anda sudah terinstall apache web server dan sudah aktif, jika belum silahkan install dulu web servernya.

6. tambahkan sebuah direktory di dalam httpd.conf seperti ini, ini berasumsi direktori lightsquid berada pada /var/www/html/lightsquid Jika tidak sesuaikan dengan direktori instalasi lightsquid Anda. (FYI di blog ini gak bisa nulis tag directory gimana nih?)

(direktory) Ganti baris ini dengan tag directory
AllowOverride All
Options Indexes
#MultiViews +ExecCGI
Order allow,deny
Allow from all
DirectoryIndex index.cgi
(tutup directory) ganti baris ini dengan tutup directory


7. Masuk ke direktori lightsquid dan jalankan script lightparser.pl

[root@proxy ~]# perl lightparser.pl /var/log/squid/access.log

perlu diingat access.log adalah log squid, saya pernah mencoba dengan nama log selain access.log, sepertinya tidak berhasil, jadi saran saya log pada squid tetap menggunakan nama standard access.log (CMIIW).

8. Masuk ke direktori lightsquid/report jika ada file bernama delete.me hapus saja file tsb, kemudian lihat konfigurasi file lightsquid.conf

[root@proxy lightsquid]# vi lightsquid.cfg

$cfgpath ="/var/www/html/lightsquid";
$tplpath ="/var/www/html/lightsquid/tpl";
$langpath ="/var/www/html/lightsquid/lang";
$reportpath ="/var/www/html/lightsquid/report";
$logpath ="/var/log/squid";
$ip2namepath ="/var/www/html/lightsquid/ip2name";

ini sesuaikan dengan direktori tempat anda menyimpan lightsquid, dan harus cocok dengan configurasi pada httpd.conf, yang paling penting tentu saja $logpath ini diarahkan untuk log squid, jadi harus sama dengan tempat anda menyimpan log squid anda.

9. sampai langkah ini harusnya anda sudah bisa menikmati logsquid dalam mode web di alamat http://localhost/lightsquid/ (atau sesuaikan dengan alamat proxy anda misalnya http://proxy.briliantglass.co.id/lightsquid )

10. Konfigurasi lebih lanjut anda bisa memberikan nama pada IP yang terdaftar, sehingga informasinya akan lebih valid lagi dan lebih mudah dibaca, contoh konfigursi nama dan group adalah seperti ini :
Untuk nama user :

[root@proxy lightsquid]# vi realname.cfg
192.168.1.1 Administrator
192.168.1.2 Kacung
192.168.1.3 Kucing

untuk group :

[root@proxy lightsquid]# vi group.cfg
192.168.1.1 01 Administrator
192.168.1.2 02 Akuntansi

192.168.1.3 02 Akuntansi
maksudnya IP 192.168.1.1 nomer groupnya 01 nama groupnya Administrator, dsb

11. Setelah konfigurasi selesai jalankan sekali lagi lightparser.


12. Untuk menjalankan script lightparser.pl secara otomatis tambahkan di crontab

[root@proxy lightsquid]#crontab -e

*/15 * * * * /usr/sbin/runlightsquid today

artinya lightsquid akan direstart setiap 15 menit

13. Restart httpd
[root@proxy lightsquid]# /etc/rc.d/init.d/httpd restart

14. silahkan buka di web localhost anda, dan cermati apa saja yang dilakukan user anda, tegur bila menyimpang, dan lampirkan halaman web lightsquid sebagai bukti bahwa anda tidak mengada-ada, dan harusnya anda akan lihat tampilan seperti gambar diatas.

Semoga bermanfaat.. eits... minum dulu susunya, keburu dingin gak asyik...

Membaca Log Squid

Anda pasti pusing ketika melihat log squid yang muncul teks berjalan seperti ini

1207896305.565 1581 192.168.1.5 TCP_MISS/206 4158 GET http://au.download.windowsupdate.com/msdownload/update/v5/psf/windowsxp-kb928843-x86-enu_4af55d9085adf9f

Apa maksudnya ? mungkin kita bisa menebak nebak 192.168.1.5 itu adalah IP TCP_MISS artinya ambil dari internet http://au.download.windowsupdate.com/ pastinya alamat yang dituju. lalu apa artinya 1207896305.565 di baris paling depan. Itu adalah time unix, waktu dalam format unix. kita butuh script perl untuk menerjemahkannya kedalam waktu kita.

Ini cara membuat script perl tsb, saya senang menggunakan editor vi, jika anda punya yang lain, monggo:

[root@proxy ~]#vi konversi.pl

#! /usr/bin/perl -p
s/^\d+\.\d+/localtime $&/e;

simpan script ini di tempat yang mudah anda ingat, ubah permission menjadi executable

[root@proxy ~]#chmod +x konversi.pl

untuk menggunakannya ketikkan

[root@proxy ~]#tail -f /var/log/squid/access.log konversi.pl

perlu diingat, direktori diatas sesuaikan dengan direktori anda masing masing, maka akan muncul informasi sbb :

Fri Apr 11 13:54:11 2008 1148 192.168.1.30 TCP_MISS/304 294 GET http://mi.adinterax.com/customer/ogilvy/0/070607_87963_v1_728x90_super_brand.swf? - DIRECT/61.200.83.62 -

tentu saja informasi ini akan lebih bermanfaat jika dibandingkan sebelum dikonversi, dengan berubah menjadi Fri Apr 11 13:54:11 2008

Semoga bermanfaat, lain waktu kita instalasi lightsquid. lalu kita lihat manfaatnya

Friday, January 18, 2008

Konversi Bilangan Biner, Octal dan Heksa

Ada seorang teman namanya Joko yang memintaku untuk membuat kode konversi bilangan decimal ke biner oktal dan heksa.

Ini adalah hasilnya, semoga bermanfaat. Dibuat dengan VFP

Konversi Decimal ke Biner

cNil = VAL(Thisform.text1.Value) &&(isikan variable nilai desimal disini)
cHasil = ''
DO WHILE NOT cNil <= 0
cBiner = MOD(cNil,2)
cHasil = cHasil + ALLTRIM(STR(cBiner))
cNil = INT(cNil / 2)
ENDDO

&& disini hasil perhitungan disusun balik biar sesuai dengan kaidah biner

n = LEN(ALLTRIM(cHasil))
cBalik = ''
DO WHILE NOT n <= 0
cBalik = cBalik + SUBSTR(cHasil,n,1)
n = n - 1
ENDDO

Konversi Decimal ke Oktal

cNil = VAL(Thisform.text1.Value) && Masukkan nilai desimal di variable ini

cHasil = ''

DO WHILE NOT cNil <= 0
cBiner = MOD(cNil,8)
cHasil = cHasil + ALLTRIM(STR(cBiner))
cNil = INT(cNil / 8)
ENDDO

n = LEN(ALLTRIM(cHasil))
cBalik = ''
DO WHILE NOT n <= 0
cBalik = cBalik + SUBSTR(cHasil,n,1)
n = n - 1
ENDDO

Konversi desimal ke Heksa desimal

cNil = VAL(Thisform.text1.Value)
cHasil = ''
DO WHILE NOT cNil <= 0
cBiner = MOD(cNil,16)
DO CASE
CASE cBiner = 10
cBiner = 'A'
CASE cBiner = 11
cBiner = 'B'
CASE cBiner = 12
cBiner = 'C'
CASE cBiner = 13
cBiner = 'D'
CASE cBiner = 14
cBiner = 'E'
CASE cBiner = 15
cBiner = 'F'
OTHERWISE
cBiner = ALLTRIM(STR(cBiner))
ENDCASE
cHasil = cHasil + cBiner
cNil = INT(cNil / 16)
ENDDO
n = LEN(ALLTRIM(cHasil))
cBalik = ''
DO WHILE NOT n <= 0
cBalik = cBalik + SUBSTR(cHasil,n,1)
n = n - 1
ENDDO

Hasil disimpan dalam variable cBalik

Semoga bermanfaat.


Menghitung Umur

Beberapa waktu yang lalu saya berdiskusi dengan teman chatting di PTPN IX yang intinya membahas masalah bagaimana membuat script untuk menghitung umur seseorang diambil dari tanggal lahir sampai hari ini.

Inilah hasil dari diskusi itu, dibuat dengan Visual Foxpro, untuk bahasa yang lain silahkan sesuaikan sendiri.

***********************


* nTgl = variable tanggal lahir, ini bisa diambil langsung dari form, atau berupa parameter.
* silahkan tentukan sendiri


nDay = DAY(DATE()) - DAY(nTgl)
*****************
IF MONTH(DATE()) <= MONTH(nTgl)
  nThn = (YEAR(DATE())-YEAR(nTgl))-1
  nBln = MONTH(DATE())+12 - MONTH(nTgl)
ELSE 
  nThn = YEAR(DATE())-YEAR(nTgl)
      nBln = MONTH(DATE())-MONTH(nTgl)
ENDIF 
nDay = DAY(DATE()) - DAY(nTgl)
IF nDay < 0 
DO CASE 
CASE ALLTRIM(STR(MONTH(DATE())))$'1 3 5 7 8 10 12'
nDay = nDay + 31
CASE ALLTRIM(STR(MONTH(DATE())))$'4 6 9 11'
nDay = nDay + 30
CASE MONTH(DATE())=2 AND MOD(YEAR(DATE()),4)=0
nDay = nDay + 29
      OTHERWISE 
      nDay = nDay + 28
ENDCASE
nBln = nBln - 1
ENDIF
DO CASE 
CASE nBln < 0
nThn = nThn - 1
nBln = 0
CASE nBln = 12 
nThn = nThn + 1
nBln = 0
ENDCASE 

***********

* output dari program ini,
Semoga bermanfaat. Terimakasih mbak Tari atas diskusi ini.