Pages

Subscribe:

Saturday, October 04, 2008

Bikin Mail Serv Simple yg Bagus

Bikin mail serv mungkin emang bukan hal yang baru. Tapi ada 1 software yg lumayan bagus buat bikin MTA. Yaitu Communigate.



Dengan interface grafis a la web (kayak yahoo, gmail dll) aplikasi ini mudah bgt buat dijalanin.

Langkah2 nya :

Langkah pertama yaitu dimulai dari menyiapkan PC yang akan digunakan, untuk selanjutnya diberi sistem operasi. Selanjutnya yaitu proses instalasi RedHat Linux 9.0. (instal sendiri ajah ya!)

Kalo udah jadi, donlot software yg mo diinstall. Cari di http://www.stalker.com
Donlot paket dgn extensi rpm, ato tar.gz nya.

Lakukan instalasi aplikasi mail server. Ketikkan perintah sebagai berikut :

$ rpm –ivh CGatePro-Linux.i386.rpm
$ /etc/rc.d/init.d/CommuniGate start

Trus buka lewat browser, ketik IP dengan port 8010, ex http://192.168.11.17:8010 (port 8010 digunakan untuk postmaster ato owner nya )

Klik pada Account, masukkan username dan password. Lihat petunjuk pada file konfigurasi dengan perintah :

$cat /var/CommuniGate/Accounts/postmaster.macnt/account.settings

Defaultnya adalah seperti ini :

{
ExternalINBOX = NO;
Password = 8417;
UseAppPassword = YES;
}

Abis tu, masuk ke Domain Settings dan pada Auto Sign Up Ganti parameter dengan Yes dan Update.

Trus ketik IP dengan port 8100 pada browser, ex http://192.168.11.17:8100 ( 8100 adalah port untuk user ato pengguna email )

Klik pada Sign Up untuk mendaftarkan account user. Lalu isikan informasi sesuai keinginan pada tiap kolom

Setelah itu klik pada Sign Up dan kita akan kembali pada jendela awal. Masukkan nama user sesuai informasi pada waktu pendaftaran. Setelah itu kita akan masuk pada account kita.

Selanjutnya, coba fasilitas lain yang diberikan oleh CommuniGate yaitu mailing list atau yang lebih sering disebut millist. Pertama, masuk ke alamat postmaster pada http://192.168.11.17:8010 kemudian masuk pada Account dan pilih salah satu user yang akan menjadi moderator millist tersebut.

Pada kolom Mailing List ketikkan nama group yang akan dibuat lalu klik Create List. Setelah itu lihat setting grup melalui Settings – List. Edit setting sesuai keinginan dengan cara melilih grup. Klik pada nama grup untuk mengedit pengaturannya

Tip tmpfs buat /tmp

TMPFS adalah sistem file khusus Linux yang jalan di memory, dan kalau penuh otomatis ditaruh ke swap. Kalau anda pakai tmpfs untuk menggantikan /tmp, sistem anda bisa lebih kencang.

Untuk pakai tmpfs, komputer anda sebaiknya punya:
  • Memory yang lumayan, paling tidak 128 MB.
  • Swap filenya dibesarkan, kalau biasanya cuma 2xRAM, sekarang 3xRAM lah.
Kalau itu ada, berikutnya periksa apakah kernel anda sudah punya tmpfs. Caranya begini:
tux:$ cat /proc/filesystems
nodev rootfs
nodev bdev
nodev proc
nodev sockfs
nodev tmpfs *** INI DIA !!!!
nodev shm
nodev pipefs
ext3
ext2
nodev ramfs
umsdos
msdos
vfat
iso9660
nodev nfs
reiserfs
nodev devpts
~
Kalau itu tidak ada, Cilaka. Musti kompile ulang kernel.

Selanjutnya, tinggal edit /etc/fstab, tambah satu baris berikut:

## Mount tmpfs sebagai /tmp, MAXSIZE=128MB
none /tmp tmpfs size=128M 0 0
Kemudian buat security, kita harus yakinkan bahwa sticky bit di-set. Jadi .... edit file /etc/rc.d/rc.local (lain distro rc.local tempatnya lain), tambah baris:
## Atur mode /tmp
chmod 1777 /tmp
Met nyoba. Tapi sebelum repot periksa dulu. Beberapa distro, termasuk Vector Linux 5.x, sudah menyediakan trik ini.

Kompile Kernel 2.6.x dan NVIDIA

KERNEL COMPILATION
1. Get the linux-2.6.14.2.tar.bz2 from www.kernel.org
2. cd /usr/src
3. tar -xjf /home/download/linux-2.6.14.2.tar.bz2
4. rm linux
5. ln -sf linux-2.6.14.2 linux
6. cp /boot/config .config (from VL 5.1 or Slack 10.2 kernel 2.6 config !!!)
7. make menuconfig
8. I especially turned these ON
- processor features : preemptive scheduling ON
- enable different security model ON
- Default Linux ON
9. make
10. make modules_install
11. cp arch/i386/boot/bzImage /boot/vmlinuz-sata-2.6.14.2
12. cp System.map /boot/System.map-sata-2.6.14.2
13. cp /boot/System.map-sata-2.6.14.2
14. cd /boot
15. rm vmlinuz System.map
16. ln -s vmlinuz-sata-2.6.14.2 vmlinuz
16. ln -s System.map-2.6.14.2 System.map
17. vliloconf
18. reboot

NVIDIA COMPILATION
(After successfull kernel 2.6.14.2 rebooting)

1. Download NVIDIA driver from http://www.nvnews.net/vbulletin/showthread.php?t=54863
2. Download NVIDIA patches (four items at this time of writing)
http://www.nvnews.net/vbulletin/showthread.php?t=56150

3. sh /path/to/NVIDIA-Linux-x86_64-1.0-7676-pkg2.run --extract-only
4. cd NVIDIA-Linux-x86_64-1.0-7676-pkg2
5. Apply the patches (all of them one by one)
patch -p0 < /path/to/NVIDIA_kernel-1.0-7676-1361053.diff.txt

6 ./nvidia-installer -n

Good luck.

PS.
Asal tahu saja, seminggu lebih browsing Internet sana-sini sampai berhasil !!!

TroubleShooting TCP/IP

Misalkan komputer Linux anda mestinya tersambung ke network, tapi kok tidak jalan. Bagaimana mencari tahu salahnya, sekaligus membetulkan ? Level: Wannabee

Pertama, bayangkan bahwa kalau anda kirim paket network, urut-urutan jalannya adalah sebagai berikut:
  1. Aplikasi
  2. Protocol TCP/IP
  3. Driver Kernal
  4. Card network
  5. Kabel network
  6. Komputer lain (gateway)
  7. Internet
Secara singkat, algoritma trouble shooting adalah sbb:
  1. TEST DEVICE. Kalau benar loncat ke TEST TCP/IP. Kalau salah SET DEVICE lalu coba lagi. Kalau masih salah juga, periksa CARD dan DRIVER kernel Linux anda.
  2. TEST TCP/IP. Kalau benar loncat ke TEST PING, kalau salah ke SET TCP/IP lalu coba lagi.
  3. TEST PING-GATEWAY. Kalau benar loncat ke TEST PING, kalau salah PERIKSA KABEL.
  4. TEST PING-INTERNET. Kalau benar ya sudah, selesai. Kalau salah, set routing lalu coba lagi. Kalau masih salah juga, tamat riwayat dah. Sambungan Internet anda pasti sedang putus.
Sekarang detailnya. Untuk trouble shooting kita pakai CLI (command line interface) saja. Jadi luncurkan terminal dan su jadi root, atau login di console sebagai root.

TEST DEVICE

Pertama, coba test device network anda memang sudah ada. Caranya ...

root@engrob4:# cat /proc/net/dev
Inter-| Receive | Transmit
face | (dipotong biar tidak kepanjangan)
lo: 83505 .............
eth0: 650720962 ........
Yang penting di sini, lihat kalau sudah ada baris eth0:. Kalau ada, artinya device eth0 anda sudah UP. Silahkan lanjut ke TEST TCP/IP. Kalau belum, siap-siap kerja berat :)

Agar device eth0 UP, Linux anda mesti memuat driver yang sesuai dengan network card anda. Biasanya, hal ini otomatis di autodetect oleh distro anda. Di Vector Linux, coba:

root:# vlautosetup
Kalau tidak bisa autodetect, cilaka deh. Coba cara manual, edit file /etc/modules.conf. Anda mesti tambah baris seperti ini:
## Untuk ethernet card Intel Express 100
alias eth0 e100
## Ini buat NE200 compatible
# alias eth0 ne2k-pci
## Ini buat realtek
# alias eth0 8139too
Secara teknis, baris itu memberi tahu untuk memuat driver yang tepat bagi device eth0. Jadi ... ya anda mesti tahu benar apa tipe network card anda, dan apa driver yang diperlukan. Driver yang disediakan kernal anda bisa dilihat di
## ganti versi sesuai kernel anda
root:# ls /lib/modules/2.4.26/kernel/drivers/net/
Duh, sorry kalau terlalu low level. Habis mau bagaimana lagi. Jadi ... berdoa saja supaya autodetect-nya jalan ;-)

Usaha terakhir, anda bisa coba ganti network card (barangkali rusak) atau kompile ulang kernal (barangkali driver belum ada).

TEST PROTOCOL

Ok, asumsi device sudah UP. Mari test apakah protokol TCP/IP anda sudah jalan

root:# ifconfig
eth0 Link encap:Ethernet HWaddr 00:A0:C9:5F:1E:DF
inet addr:10.0.0.100 Bcast:10.0.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1963997 errors:0 dropped:0 overruns:0 frame:0
TX packets:1883860 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:650565316 (620.4 Mb) TX bytes:645290505 (615.3 Mb)
Interrupt:5 Base address:0xd800 Memory:e0100000-e0100038

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:756 errors:0 dropped:0 overruns:0 frame:0
TX packets:756 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:83505 (81.5 Kb) TX bytes:83505 (81.5 Kb)

Lihat kalau eth0 sudah ada dan benar IP-nya. Kalau iya, anda bisa langsung loncat ke TEST PING.

Kalau belum seperti itu, anda perlu set ulang TCP/IP. Di Slackware atau Vector Linux, jalankan 'netconfig', atau edit file /etc/rc.d/rc.inet1. Distro lain pasti ada juga menunya, coba dicari. Kalau nggak ketemu, ini cara klasik.

## ganti 10.0.0.100 dan 255.255.255.0 sesuai network anda
root:# ifconfig eth0 10.0.0.100 netmask 255.255.255.0 up

## Coba test lagi
root:# ifconfig eth0
Mestinya network anda akan jalan. Kalau sampai nggak jalan, kernel anda tidak support TCP/IP. Rasanya nggak mungkin deh.

TEST PING GATEWAY

Sampai tahap ini, network internal di komputer anda sudah beres. Kita akan coba koneksi keluarnya. Untuk itu anda harus tahu alamat IP gateway di network anda.

## ganti 10.0.0.254 dengan alamat gateway anda
root:# ping -c 3 10.0.0.254
PING 10.0.0.254 (84) bytes of data.
64 bytes from 10.0.0.254: icmp_seq=1 ttl=255 time=4.61 ms
64 bytes from 10.0.0.254: icmp_seq=2 ttl=255 time=1.10 ms
64 bytes from 10.0.0.254: icmp_seq=3 ttl=255 time=1.05 ms

--- 110.0.0.254 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2023ms
rtt min/avg/max/mdev = 1.051/2.255/4.614/1.668 ms
Kalau keluarannya seperti di atas, lega. Itu artinya koneksi keluar beres. Kalau sampai timeout tidak ada balasan, coba periksa kabel dan hub ethernet anda. Atau barangkali juga si gateway-nya sedang down.

TEST PING INTERNET

Nah, sekarang coba ping salah satu komputer di Internet. Biasanya, yang aman buat di-ping adalah DNS server si ISP (Internet service provider).

## Ganti 123.123.123.123 dengan alamat IP Internet yang anda tahu
root:# ping 123.123.123.123
Kalau tidak terbalas, coba lihat tabel routing. Mestinya mirip-mirip seperti ini
root:# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 10.0.0.254 0.0.0.0 UG 0 0 0 eth0
Perhatikan baris terakhir, destination 0.0.0.0 artinya ke semua network, dan kolom gateway-nya harus seauai dengan IP gateway anda. Konfigurator seperti netconfig mestinya sudah men-set ini buat anda. Kalau belum, coba pakai cara manual:
root:# route add default gw 10.0.0.254
Kalau default gateway sudah betul tapi ping internet masih belum bisa juga, ada beberapa kemungkinan: komputer anda di blok oleh si-gateway, setting firewall digateway salah, koneksi gateway ke ISP putus, dll. Buat tahu putusnya dimana, coba
root:# traceroute 123.123.123.123
Tapi biar sudah tahu, biasanya anda tidak bisa berbuat apa-apa, selain menunggu koneksi pulih kembali.

Segitu dulu. Kesempatan depan kita bahas trouble shooting DNS.

DHCP Server Pakai DNSMasq

DHCP server adalah layanan yang memberikan alamat IP otomatis kepada komputer-komputer client pada suatu LAN. Layanan DHCP ini kini makin penting dengan makin maraknya jaringan wireless. Untungnya, hal ini mudah disetup pakai dnsmasq.

Bayangkan kita punya sebuah LAN dengan banyak komputer. Setiap komputer tentunya perlu alamat IP yang unik. Dengan cara manual, kita harus berikan alamat IP ini secara statik ke masing-masing komputer. kalau komputernya ada 100 atau lebih, pegel juga kan ;-)

Nah di sinilah perlunya DHCP (Dynamic Host Control Protocol). Secara umum, konfigurasi DHCP adalah sebagai berikut:

                   
[dhcp server]--------{LAN}--------[client (banyak sekali)]

Cara kerja sistem ini adalah:
  1. pada suatu LAN, cukup ada SATU DHCP server. DHCP server ini diset untuk membagikan alamat IP dengan rentang tertentu, misal 192.168.0.100 - 192.168.0.199.
  2. Ada banyak komputer client. Setiap komputer diset agar TCP/IP nya memakai mode AUTO.
  3. Saat komputer client dihidupkan, dia akan menyebarkan permintaan alamat IP.
  4. Si DHCP server akan menangkap permintaan ini, lalu memberikan nomor IP unik dalam rentang yang telah ditentukan. Bersamaan dengan itu, juga dapat diberikan informasi lain seperti netmask, alamat dns server, maupun gateway.
  5. Si client bisa men-set TCP/IP-nya sesuai informasi yang diberikan dan mulai bekerja.
  6. Alamat IP ini hanya pinjaman. Setelah selang waktu yang ditentukan, DHCP server akan menagihnya kembali agar dapat dipinjamkan ke client lain. Jadi si client harus memperbaharui pinjamannya (leasing) secara berkala.
Sementara itu ada hal tak kalah penting yang harus dilakukan. Saat DHCP server meminjamkan nomor IP, nama domain yang bersangkutan harus disinkronkan agar akses ke nama domain tak salah alamat. Jelas bahwa hal ini erat kaitannya dengan DNS server. Karena DNSMASQ adalah sekaligus dns server, hal ini akan otomatis terjadi. Tidak demikian halnya jika kita memakai paket terpisah, misalnya bind + dhcpd.

DHCP SERVER SEDERHANA

Kini mari kita coba setup dnsmasq untuk konfigurasi sebagai berikut

[client]---{LAN}---[gateway (dnsmasq)]---{INTERNET}----[provider (dns server)]

Dalam hal ini, dnsmasq bertindak sebagai dhcp server sekaligus dns server. Misalkan saja LAN ini memiliki data sebagai berikut:
  • Nomor IP : 192.168.0.1 - 192.168.0.254
  • Netmask : 255.255.255.0
  • Gateway : 192.168.0.254
  • DNS server : 192.168.0.254
Kemudian alamat IP yang tersedia kita alokasikan sebagai berikut:
  • Untuk client dengan IP statik : 192.168.0.1 - 192.168.0.127
  • Untuk client dengan IP dinamik : 192.168.0.128 - 192.168.0.191
  • Untuk server eksternal : 192.168.0.192 - 192.168.0.223
  • Untuk server internal : 192.168.0.224 - 192.168.0.254
Oh ya, sekedar tips. Pembagian tersebut diatur demikian rupa menurut rentang kepangkatan angka binari (128 + 64 + 64) sehingga nantinya enak kalau kita pasang firewall.

Nah, kini kita bisa mulai mengkonfigurasi dnsmasq:

  1. Konfigurasi dnsmasq sebagai dnsserver (lihat artikel sebelumnya).
  2. Untuk mengaktifkannya sebagai dhcp server, astaga, ternyata mudah sekali. Cukup edit /etc/dnsmasq.conf pada bagian-bagian berikut:
    # Set the domain for dnsmasq. this is optional, but if it is set, it
    # does the following things.
    # 1) Allows DHCP hosts to have fully qualified domain names, as long
    # as the domain part matches this setting.
    # 2) Sets the "domain" DHCP option thereby potentially setting the
    # domain of all systems configured by DHCP
    # 3) Provides the domain part for "expand-hosts"
    domain=kampus.lan

    # Uncomment this to enable the integrated DHCP server, you need
    # to supply the range of addresses available for lease and optionally
    # a lease time. If you have more than one network, you will need to
    # repeat this for each network on which you want to supply DHCP
    # service.
    dhcp-range=192.168.0.128,192.168.0.191,12h

    # Send options to hosts which ask for a DHCP lease.
    # See RFC 2132 for details of available options.
    # Note that all the common settings, such as netmask and
    # broadcast address, DNS server and default route, are given
    # sane defaults by dnsmasq. You very likely will not need any
    # any dhcp-options. If you use Windows clients and Samba, there
    # are some options which are recommended, they are detailed at the
    # end of this section.
    # For reference, the common options are:
    # subnet mask - 1
    # default router - 3
    # DNS server - 6
    # broadcast address - 28
    dhcp-option=1,255.255.255.0
    dhcp-option=3,192.168.0.254
    dhcp-option=6,192.168.0.254
    dhcp-option=28,192.168.0.255

    # The DHCP server needs somewhere on disk to keep its lease database.
    # This defaults to a sane location, but if you want to change it, use
    # the line below.
    dhcp-leasefile=/var/run/dnsmasq/dnsmasq.leases

  3. Jangan lupa menyediakan tempat untuk lease file
    # mkdir -p /var/run/dnsmasq
    # touch /var/run/dnsmasq/dnsmasq.leases
Silahkan start atau restart dnsmasq. Kini tinggal set client (Linux maupun Windows) agar memakai IP dinamik (auto). Jika semuanya berjalan benar, maka saat diaktifkan client akan mendapat salah satu alamat IP antara 192.168.0.128 s/d 192.168.0.191, demikian pula setting netmask, gateway dan dns server yang sesuai.

DHCP SERVER LEBIH JAUH

Ada beberapa setting di dnsmasq.conf untuk fitur-fitur lebih kompleks, misalkan saja:

  • Atur agar client dengan nama domain tertentu selalu mendapat IP khusus
    # Give the machine which says it's name is "dosen01" IP address
    # 192.168.0.130 and an infinite lease
    dhcp-host=dosen01,192.168.0.130,infinite
    Agar hal ini bisa bekerja, pastikan tiap client memiliki nama yang benar. Di Linux, set /etc/HOSTNAME. Sementara itu di Windows, isikan nama domain pada setting TCP/IP.
  • Atur agar client tertentu mendapat IP yang sesuai dengan nama domain di /etc/hosts
    # Enable the address given for "lab01" in /etc/hosts
    # to be given to a machine presenting the name "lab01" when
    # it asks for a DHCP lease.
    dhcp-host=lab01
    Hal ini memungkinkan sinkronisasi otomatis dengan dns server.
  • Atur agar client dengan MAC address tertentu selalu mendapat IP khusus
    # Always allocate the host with ethernet address 11:22:33:44:55:66
    # The IP address 192.168.0.129
    dhcp-host=11:22:33:44:55:66,192.168.0.129
    Untuk yang satu ini, anda perlu mendata semua MAC address client. Untuk mengetahui MAC address sebuah Linux client, panggil saja ifconfig. Sementara di Windows client gunakan ipconfig.
  • Blok komputer yang anda tahu suka nakal
    # Never offer DHCP service to a machine whose ethernet
    # address is 11:22:33:44:55:66
    dhcp-host=11:22:33:44:55:66,ignore
Sekian dulu soal dnsmasq. Silahkan coba, ditanggung beres dalam 30 menit tanpa pusing teori DNS+DHCP yang biasanya harus dibaca dulu kalau mau setting BIND atau DHCPD :)

Pembuatan test case pada test driven development

Test driven development adalah metodologi terbaru dalam pengembangan perangkat lunak. Berbeda dengan metodologi lain yang berbasiskan develop then test, metodologi ini mewajibkan pembuatan kasus-kasus pengujian terlebih dahulu sebelum membuat applikasi.

Langkah umumnya adalah :
1. buat class baru
2. buat class pengujinya
3. buat skeleton class baru
4. buat skeleton class penguji
5. kompilasi
6. jalankan di di nunit
7. jika ada kesalahan perbaiki kode class baru dan class penguji dan lakukan langkah 5 dan 6 lagi

Alasan-alasan yang menyebakan metodologi ini dikembangkan adalah :
• pengujian belakangan sering tidak lengkap
• sulit menguji ketika applikasi sudah komplek
• sulit menguji ketika sudah ada user interface (data entri lambat dan tidak reuse)
• manajemen test case sulit dilakukan kecuali pada tataran dimana perusahaan software sudah besar
• metodologi lain menghasilkan code yang kurang self explainatory (menjelaskan dirinya)

Kesulitan utama dalam pembuatan dalam metodologi ini adalah penciptaan kelengkapan kasus pengujian. Ada beberapa teknik yang akan penulis bagikan sebagai hasil uji coba penulis sejauh ini antara lain refactoring, boundary testing dan cylomatic testing. Semua jenis testing ini adalah white box testing. Inti ketiga testing di atas adalah membandingkan hasil yang diperolah dari method yang kita buat dan hasil kalkulasi yang dilakukan manual. Semuanya akan penulis jelaskan di bagian bawah artikel ini nanti.

Pembangkitan kasus uji pada prinsipnya mengacu pada operasi-operasi yang ada dalam sebuah method yang akan diuji. Secara garis besar operasi elementer dalam sebuah method meliputi :
• kalkulasi
• perulangan
• analisa kasus

Jadi sebagai bagian dari kelengkapan artikel akan dibuat beberapa contoh yang berdasarkan 3 operasi elementer di atas. Sebagai contoh akan dibuat beberapa method.

Refactoring adalah teknik memodifikasi source code. Teknik ini sebenarnya mungkin agak salah kaprah untuk dipakai sebagai bagian dari metodologi ini, karena tujuan refactoring adalah memperbaiki struktur internal source code agar mudah dipahami dan dibaca. Namun penulis merasa teknik ini adalah teknik pengujian parsial yang sangat membantu. Sebagai contoh lihatlah evolusi method penguji bentuk air pada suhu tertentu di bawah ini
Versi 1
Function bentukair(pIntSuhu as integer) as string
Return “padat”
End function

Maka test casenya
• Bentukair(10) akan bernilai benar jika menghasilkan string padat

Versi 2
Function bentukair(pIntSuhu as integer) as string
If pIntSuhu<=0 then
Return “padat”
Else if pIntSuhu>=1 and pIntSuhu<=100 then
Return “Cair”
End if
End function

Maka test casenya
• bentukair(0)) akan bernilai benar jika menghasilkan string “padat”
• bentukair(10)) akan bernilai benar jika menghasilkan string “cair”

Versi 3
Function bentukair(pIntSuhu as integer) as string
If pIntSuhu<=0 then
Return “padat”
Else if pIntSuhu>=1 and pIntSuhu<=100 then
Return “cair”
Else
Return “gas”
End if
End function

Maka test casenya
• bentukair(0)) akan bernilai benar jika menghasilkan string “padat”
• bentukair(10)) akan bernilai benar jika menghasilkan string “cair”
• bentukair(101)) akan bernilai benar jika menghasilkan string “padat”



Boundary testing adalah teknik membangkitkan nilai-nilai test dengan cara menguji nilai-nilai batas yang ada di dalam analisa kasus yang digunakan. Sebagai contoh lihat method penguji bentuk air pada suhu tertentu di bawah ini

Function bentukair(pIntSuhu as integer) as string

If pIntSuhu<=0 then
Return “padat”
Else if pIntSuhu>=1 and pIntSuhu<=100 then
Return “cair”
Else
Return “gas”
End if

End function

Contoh ini akan menghasilkan beberapa kasus uji yaitu :
• bentukair(-1) akan bernilai benar jika menghasilkan string “padat”
• bentukair(0) akan bernilai benar jika menghasilkan string “padat”
• bentukair(1) akan bernilai benar jika menghasilkan string “cair”
• bentukair(2) akan bernilai benar jika menghasilkan string “cair”
• bentukair(99) akan bernilai benar jika menghasilkan string “cair”
• bentukair(100) akan bernilai benar jika menghasilkan string “cair”
• bentukair(101) akan bernilai benar jika menghasilkan string “gas”
Test case di atas diperoleh dari pengurangan dan penambahan angka 1 terhadap nilai nilai yang dijadikan analisa kasus.
If pIntSuhu<=0 menghasilkan -1, 0 dan 1
If pIntSuhu >=1 and pIntSuhu<=100 menghasilkan 1,2,99,100, 101.
Jika angka 1 tidak memadai gunakan 0.1,0.01,0.001 dan seterusnya bergantung pada tipe data (integer atau real)


Cyclomatic testing adalah sebuah testing untuk menguji semua jalur eksekusi yang ada di sebuah program dengan jalan membangkitkan semua test case yang mungkin. Kembali ke contoh penentu suhu air di atas. Kita dapat menambahkan variable lain untuk memperumit kondisi diatas katakanlah x yang berupa integer berisi nilai 1,2,3,4,5,6

Function bentukair(pIntSuhu as integer, x as integer) as string

If pIntSuhu<=0 then
If x= 1 then
Return “padat1”
Else if x=2 then
Return “padat2”
Else
Return “invalid”
End if
Else if pIntSuhu>=1 and pIntSuhu<=100 then
If x=3 then
Return “cair3”
Else x= 4 then
Return “cair4”
Else
Return “invalid”
End if
Else
If x=5 then
Return “gas5”
Else if x= 6 then
Return “gas6”
Else
Return “invalid”
End if

End function

Karena fungsi di atas merupakan pengembangan dari fungsi bentukair sebelumya maka kita dapat menggunakan testcase dari bentuk air sebelumnya menjadi bagian dari test case fungsi sekarang. Berikut ini adalah daftarnya
• bentukair(-1,0) akan bernilai benar jika menghasilkan string “invalid”
• bentukair(-1,1) akan bernilai benar jika menghasilkan string “padat1”
• bentukair(-1,2) akan bernilai benar jika menghasilkan string “padat2”
• bentukair(-1,3) akan bernilai benar jika menghasilkan string “invalid”
• bentukair(0,0) akan bernilai benar jika menghasilkan string “invalid”
• bentukair(0,1) akan bernilai benar jika menghasilkan string “padat1”
• bentukair(0,2) akan bernilai benar jika menghasilkan string “padat2”
• bentukair(0,3) akan bernilai benar jika menghasilkan string “invalid”
• bentukair(1,2) akan bernilai benar jika menghasilkan string “invalid”
• bentukair(1,3) akan bernilai benar jika menghasilkan string “cair3”
• bentukair(1,4) akan bernilai benar jika menghasilkan string “cair4”
• bentukair(1,5) akan bernilai benar jika menghasilkan string “invalid”
• bentukair(2,2) akan bernilai benar jika menghasilkan string “invalid”
• bentukair(2,3) akan bernilai benar jika menghasilkan string “cair3”
• bentukair(2,4) akan bernilai benar jika menghasilkan string “cair4”
• bentukair(2,5) akan bernilai benar jika menghasilkan string “invalid”
• bentukair(99,2) akan bernilai benar jika menghasilkan string “invalid”
• bentukair(99,3) akan bernilai benar jika menghasilkan string “cair3”
• bentukair(99,4) akan bernilai benar jika menghasilkan string “cair4”
• bentukair(99,5) akan bernilai benar jika menghasilkan string “invalid”
• bentukair(100,2) akan bernilai benar jika menghasilkan string “invalid”
• bentukair(100,3) akan bernilai benar jika menghasilkan string “cair3”
• bentukair(100,4) akan bernilai benar jika menghasilkan string “cair4”
• bentukair(100,5) akan bernilai benar jika menghasilkan string “invalid”
• bentukair(101,4) akan bernilai benar jika menghasilkan string “invalid”
• bentukair(101,5) akan bernilai benar jika menghasilkan string “gas5”
• bentukair(101,6) akan bernilai benar jika menghasilkan string “gas6”
• bentukair(101,7) akan bernilai benar jika menghasilkan string “invalid”

Untuk operasi elementer kalkulasi sebenarnya cukup sulit dilakukan karena begitu banyaknya data uji yang dapat dibuat. Sebagai contoh lihat fungsi tambah1 dibawah ini

Function tambah1(pint as integer) as integer
Return pint+1
End function

Kelihatannya mudah. Tetapi untuk menjamin sistem ini benar maka data ujinya bisa dari – tak hingga sampai + tak hingga. Sangat banyak. Jadi kita hanya bisa berharap saja.

Untuk operasi elementer perulangan maka dapat digunakan metode yang sama analisa kasus. Sebagai contoh akan dibuat sebuah fungsi yang menentukan apakah sebuah elemen bernilai x ada di dalam sebuah array. Array dinamakan mObjData dan tipe elemennya adalah integer

Function IsExist(x as integer) as boolean
Dim dBolKetemu as boolean =false
Dim I as integer
For i= 0 to mObjData.length-1 do
If x=mObjData[i] then
dBolKetemu=true
exit for
end if
End for
Return dBolKetemu
End function

Maka untuk menguji fungsi diatas adalah
• mObjData kosong tidak memiliki elemen apapun. Akan bernilai benar jika menghasilkan false
• mObjData berisi beberapa buah elemen dan x tidak ada di dalamnya. Akan bernilai benar jika menghasilkan false
• mObjData berisi beberapa buah elemen dan x ada di elemen pertama. Akan bernilai benar jika menghasilkan true
• mObjData berisi beberapa buah elemen dan x ada di elemen terakhir. Akan bernilai benar jika menghasilkan true

jadi pada perulangan yang harus di test adalah jika :
• loop tidak dimasuki sama sekali
• loop dimasuki 1 kali
• loop dimasuki sebanyak n kali

Semoga bermanfaat.

Membuat Linux Boot dalam 5 Detik

Dengan instalasi default, Fedora membutuhkan sekitar 45 detik untuk mulai dari nol hingga menampilkan halaman login GDM, waktu boot Ubuntu juga hanya dua detik lebih cepat. Di konferensi Linux Plumbers, Arjan van de Ven (pencipta PowerTOP) dan Auke Kok dari Intel mendemonstrasikan dua distro Linux yang telah dioptimisasi hanya membutuhkan waktu 5 detik untuk boot. Demonstrasi ini diperlihatkan dengan sistem operasi Fedora dan Moblin yang telah dioptimisasi menggunakan Eee PC dengan SSD. Sebagian cara optimisasi yang diperlihatkan dua Arjan dan Auke sudah dipakai oleh beberapa distro dan akan dikemas ke dalam kernel Linux dalam waktu dekat ini.

Dalam beberapa bulan belakangan ini kita telah melihat bagaimana para pengembang menyadari tentang pentingnya desain yang baik dalam mempercepat kinerja perangkat lunak, mulai dari pengembangan situs, browser, sistem operasi dan kini kecepatan boot yang menjadi sorotan utama di konferensi pengembang Linux yang berlangsung bulan lalu.

Definisi Selesai Boot

Bagaimana mereka menghasilkan terobosan baru ini? Pertama, Arjan mengatakan definisi "selesai boot adalah saat CPU dan hard disk (HD) tidak bekerja lagi," dan ini berarti tidak menampilkan desktop saat masih memulai berbagai aplikasi di balik layar (seperti yang dilakukan Microsoft, itulah sebabnya mengapa saat pertama kali login Anda harus menunggu selama beberapa saat sebelum dapat mulai menggunakan PC).

Waktu "selesai boot" tidak termasuk mendapatkan koneksi jaringan (DHCP), akan tetapi sudah mengikutkan waktu yang dibutuhkan untuk memulai NetworkManager. Sebuah sistem dengan HD akan membutuhkan waktuyang lebih lama untuk boot, tetapi Arjan mengatakan ia telah mencoba menggunakan konfigurasi yang sama di ThinkPad dan mendapatkan waktu boot 10 detik, tetap merupakan kemajuan yang sangat besar.

Konfigurasi Kurang Optimal

Menggunakan aplikasi Bootchart, kita dapat melihat jalannya proses boot Linux (Fedora) seperti yang diperlihatkan grafik di bawah ini:

Bootchart Fedora
Fedora banyak melakukan hal-hal yang tidak berguna:
  • Menghabiskan satu detik penuh untuk memeriksa loopback
  • Menghabiskan dua detik untuk memulai sendmail — "semua orang terpaksa memulai program ini hanya karena ada seseorang di luar sana yang membutuhkan sebuah mail server," ujar Arjan
  • Menghabiskan lima detik untuk memulai "settroubleshootd," aplikasi troubleshooting untuk konfigurasi SELinux
  • X Window System memulai C preprocessor dan compiler saat boot
Begitu juga dengan Ubuntu:
  • Menghabiskan 12 detik untuk "modprobe" yang akhirnya mengaktifkan semua modul yang ada
  • Menghabiskan 2,5 detik untuk memulai aplikasi yang mengaktifkan driver restricted yang tidak dibutuhkan di konfigurasi bawaan Ubuntu
  • Menghabiskan 2,5 detik untuk menampilkan gambar background di GDM
Kedua distribusi di atas menggunakan splash screen, dan Arjan maupun Auke setuju bahwa mereka "ingin bahwa proses boot selesai sebelum splash screen ditampilkan. Waktu yang dihabiskan banyak distro untuk membuat splash screen bahkan jauh lebih banyak dibandingkan waktu yang dibutuhkan Arjan untuk membuat proses boot yang cepat.

Optimisasi Kernel

Langkah pertama untuk mencapai target boot dalam 5 detik adalah mengalokasikan jatah waktu boot:
  1. Kernel diberikan jatah 1 detik untuk mengaktifkan semua modul yang dibutuhkan
  2. Early boot diberikan jatah 1 detik, sudah termasuk skrip init dan background task
  3. X diberikan jatah 1 detik
  4. Desktop environment diberikan jatah 2 detik


Jatah boot
Kernel harus dibangun tanpa "initrd" yang menghabiskan setengah detik walaupun tidak diisi apapun. Semua modul yang dibutuhkan saat boot harus dikemas ke dalam kernel. Cukup logis mengingat "95% laptop yang ada dapat ditangani hanya dengan beberapa modul," kata Arjan.

Beberapa modifikasi kernel memungkinkan inisialisasi beberapa komponen secara bersamaan. Contohnya kernel yang telah dimodifikasi Arjan mengaktifkan Advanced Host Controller Interface (AHCI untuk media penyimpanan) bersamaan dengan Universal Host Controller Interface (UHCI untuk USB). Arjan mengatakan bahwa mereka "kemungkinan besar dapat menyelesaikan boot kernel hanya dalam setengah detik tetapi kita berhenti mengoptimisasi-nya setelah berhasil mencapai target satu detik," tetapi waktu ini seharusnya berkurang menjadi setengah detik di versi 2.6.28 karena AHCI yang sudah diperbaharui.

Kernel selesai boot dalam 1 detik


Satu lagi perubahan di kernel adalah sebuah patch untuk mendukung "readahead."

Readahead dan Init

Fedora menggunakan "Upstart" menggantikan "init" yang biasanya merupakan program userspace pertama yang diaktifkan. Akan tetapi kedua pengembang ini kembali menggunakan "init" untuk memulai tiga kelompok aplikasi secara bersamaan:
  1. Proses "sReadahead" untuk membaca untuk menyimpan isi HD ke dalam memori
  2. Memeriksa filesystem, D-Bus, X kemudian desktop
  3. Hardware Abstraction Layer (HAL), "udev" dan komponen jaringan
Konfigurasi ini memaksimalkan penggunaan CPU. Sebagai contoh, saat dimulai X selalu menunda aktivasi selama setengah detik untuk mencari mode video yang tepat, dan waktu luang ini digunakan HAL untuk melakukan tugas-tugas yang CPU intensif. Utilisasi HD dan CPU selalu maksimal saat boot karena bantuan "sReadahead" yang menyimpan semua konten dari HD ke cache. sReadahead berbasiskan Fedora Readahead, akan tetapi untungnya patch untuk kernel Linux akan dibuat dalam waktu dekat ini sehingga hasil karya Arjan dan Auke akan dapta dinikmati oleh semua pengguna Linux.

Grafik akhir boot dalam 5 detik


Kesimpulannya, Arjan mengatakan bahwa pernyataan "membuat proses boot lebih cepat" adalah target yang salah. Target yang benar adalah "membuat boot cepat" dan jangan membuat semua pengguna menunggu hanya karena segelintir pengguna menggunakan filesystem atau aplikasi tertentu seperti "sendmail" di laptop mereka. Hanya beberapa hari setelah itu, Kyle McMartin mengumumkan bahwa baik Fedora maupun Ubuntu telah memperbaiki beberapa hal di proses boot mereka.

AMD vs Intel

Tidak bisa dipungkiri, persaingan pasar prosesor akhir-akhir kian memanas dengan dua kubu sebagai pemain utama persaingan, yaitu Intel yang telah lama mendominasi pasar dan AMD yang baru-baru ini banyak meluncurkan produk yang unjuk kerjanya cukup mengancam dominasi Intel.

---

Tanpa memihak pada Intel maupun AMD, dan membiarkan Anda mengerti sebagai konsumen, persaingan keras kedua perusahaan ini untuk mendominasi pasar dari musim ke musim berikutnya tidak selalu membuat produk dari perusahaan yang satu menjadi lebih baik dari produk perusahaan yang lain, begitu pula sebaliknya.

Sebenarnya akan lebih baik jika mempunyai pilihan ketiga, namun sayangnya semua teknologi terbaik dari Transmeta masih diperdebatkan keabsahan HAKI-nya. Masih saja tentang proses penghematan energi yang dianggap lebih penting pada setiap perbandingan unjuk kerja dari hari ke hari.

Seperti yang kita ketahui sekarang, Intel mendominasi pasar prosesor, baik dari segi harga, unjuk kerja, dan tentu saja dari segi kepastian mutu. Tentu saja pendapat ini timbul tanpa memperhitungkan AMD didalamnya.

Selama ini AMD telah lambat dalam menangani 'kekakuan' dalam pengembangan teknologinya, melesetnya tanggal peluncuran mungkin telah mengakibatkan AMD mati langkah dalam menghadapi pesaingnya, dan apapun hasilnya itu telah membuat AMD berhutang $5 Milyar kepada ATI di permulaan tahun ini.

Chipset AMD 690G adalah salah satu contoh sukses yang terkenal, dan jika Intel telah mengajarkan kita segalanya, semua itu menyamaratakan jalan dominasi chipset di pasar PC. AMD tidak tertidur dalam perputaran roda teknologi prosesor. Mungkin banyak terlambat, tetapi tidak mati. Saat ini AMD telah menyiapkan sebuah prosesor tangguh yang dijuluki ‘K10’, dan sebuah prosesor perbaikan dari 'Barcelona'. Tidak banyak yang tahu tentang unjuk kerja prosesor desktop AMD yang akan datang (K10 Phenom X2 dan X4) saat ini, namun kita harus mencari tahu dengan cepat apakah ‘Agena’ dan ’Kuma’ ini akan dapat membuat Intel merugi.

Ketika banyak produk AMD yang sukses belakangan ini, maka akan banyak rekannya yang mengikuti jejaknya, sedangkan Intel menjamin bahwa kesuksesan prosesor Core 2 Duo akan menjadi rancangan sempurna bagi sebuah chipset masa depan. Seperti yang mereka katakan, “Inilah yang namanya chipset”.

Prosesor Intel Core 2 Duo adalah prosesor yang sangat efesien, nilai dengan TDP (Thermal Design Power) hanya kurang lebih setengah dari yang digunakan seri Pentium 4/D, dan dalam test pemakaian nyata menunjukkan bahwa sistem komputer yang mempergunakan Intel Core 2 Duo memang menghemat banyak tenaga.

Itu semua memang baik, hal ini sangat mengangkat Intel bukan karena selisih beberapa point kecepatannya, namun karena Core 2 Duo memang lebih cepat dan harganya yang sangat kompetitif. Mungkin nilai dari sebuah prosesor masih seringkali tidak kita perhatikan selama ini. Yang perlu diingat adalah walaupun Extreme Edition dari Intel masih dihargai sangat tinggi, namun masih dipandang sangat pantas untuk inovasi CPU desktop. Bandingkan dengan prosesor AMD yang dengan harga yang relatif sama, Intel tetap masih berada di atasnya.

< style="margin-bottom: 0in" align="justify">Jadi sebagaimana telah dibahas di atas, sebenarnya kapankan waktu yang tepat untuk AMD ataupun Intel? Intel masih memenangkan babak ini. Intinya bahwa manuver Intel masih melebihi AMD, juga seluruh generasi prosesor ganda yang ada. Unjuk kerja Core 2 Duo memang sangat memuaskan, itulah sebabnya banyak yang merekomendasikannya.

Namun sebelum menutup pembicaraan ini, ada satu hal lagi yang harus diingat. Sepanjang perbandingan kita berdasarkan pada kesetiaan pada merk dan uji unjuk kerja saja, maka tidak akan ada banyak pilihan dari teknologi yang terbaru dan terbaik. Yang terpenting saat ini adalah jika komputer yang Anda pakai sekarang telah mampu memenuhi semua kebutuhan komputasi Anda, maka Anda tidak perlu lagi repot memilih antara Intel dan AMD.('dna)

Tip dan Trik Menghindari Virus Menyerang HandPhone Anda

Anda pengguna smartphone atau hp yang canggih dengan fitur lengkap, semisal handphone dengan fasilitas Os Java atau Symbian atau Windows mobile? Anda pernah mengalami handphone anda terkena virus yang menyebabkan hp anda error atau nge-hang atau data-data penting anda hilang! Berikut ini ada beberapa tips yang dapat anda terapkan untuk menghindari agar handphone anda terhindar dari serangan virus.

1. Pastikan Bluetooth dalam Kondisi Hidden Mode

Jika ponsel Anda dilengkapi Bluetooth, pastikan fitur ini berada dalam kondisi hidden mode atau invisible untuk mencegah perangkat Bluetooth orang lain mendeteksi perangkat Anda kecuali memang Anda menghendakinya. Selain itu, matikan Bluetooth jika tidak terpakai. Langkah ini akan cukup melindungi ponsel dari serangan virus yang menyebar melalui Bluetooth.

2. Hati-hati Saat Menerima Kiriman Asing

Ketika menerima aplikasi yang dikirim via Bluetooth atau membuka attachment MMS, berhati-hatilah dari kemungkinan adanya program jahat. Pastikan kiriman itu berasal dari sumber terpercaya. Bahkan jikalaupun kiriman itu berasal dari teman, lebih baik Anda tak membukanya dan menghapusnya jika terdapat konten yang tidak familiar.

3. Download dari Sumber Terpercaya

Pastikan juga selalu men-download konten dari sumber resmi yang terpercaya sehingga ancaman virus bisa tereliminir. Namun hati-hatilah karena bisa jadi kaum kriminal mampu mengkreasi sumber download yang kelihatan terpercaya meskipun sejatinya adalah gudang virus.

4. Pakai Anti Virus

Beberapa software khusus telah ditawarkan untuk menjaga ponsel Anda dari ancaman virus. Pakailah jika Anda merasa memerlukannya.

5. Hubungi Produsen Ponsel Anda

Jika Anda menduga ponsel Anda telah terinfeksi virus, segera kontak produsen ponsel Anda untuk mengambil langkah yang tepat dalam menghindari kerusakan.

" CiNtaKu tLah uSai "

Ku berjalan diantara semaknya dunia
Skilas ku lihat drimu diujung sana
Ku hampiri dan ku sapa
Namun kau tak sendiri,kau bersmanya

Hancur hatiku saat itu
Ternyata sia2 penantianku
Kni kau tak akan ku miliki
Skalipun ku letih menanti

Dngan hati menangis
Ku tu2p crita cinta ini
Jika kau memintaku kembali
Anggaplah ku tlah mati..!!!

iSI HATI INI

malam mendung tanpa bintang
bagaikan hati tanpa kasih
setetes embun yg jatuh meresap ke tanah
bagai cinta yg terungkap namun tanpa ada balas

walau telah berulang kali rasa cinta ini ku ungkapkan padamu
namun mungkin kau hanya menganggapnya sebagai candaan yg lalu kau lupakan

andaikan mimpi yg semalam ku alami itu sama dengan mimpi yg kau alami
akan kah kau mengerti apa yg kurasakan ini

sejak pertama ku malihatmu
mengapa wajahmu begitu cepat ku ingat dan mengapa wajahmu slalu ada dalam khayalku

keinginan hati ini untuk memilikimu adalah mimpi yg harus ku ubah menjadi kenyataan

akankah aku berhasil...??
semoga tuhan berkehendak dan membuat mimpiku menjadi kenyataan

dengan beberapa ini ku ungkapkan smua isi hatiku padamu
dan dengan beberapa kalimat ini semoga kau dapat mengerti apa yang ada dalam hatiku ini.