Archive for Programming

Software Engineering E-book

ini ebook ttg software engineering…silahkan di download

Software Engineering By RogerPressman

Advertisements

Leave a comment »

Step by Step Mastering Java Web (condong k JEE) mnrt versiku…

Prequities Material Topic :
1.Java Fundamental, basic topic to understand Java. recomended book is How To Program Java, Deitel
=> target : understand important fundamental like if-else, for, while, switch, data type, array, and many more.
2.HTML, basic language in web. many great book tutoring this topic…please search in flazx.com or google…
=> target : understand table and form
3.SQL, Structured Query Language, language to communicate with database server. for practice to understand this topic please using MySQL, because simpler than another database server. many great book tutoring this topic…please search in flazx.com or google…
=> terget : insert, update, delete, create
4.Java with JDBC, connectivity to access database. many great book tutoring this topic…please search in flazx.com or google…
target : can create simple console application with CRUD (Create, Read, Update, and Delete)
5.JSP, basic web programming, like PHP. recomended book is Core Web Programming, or many great book tutoring this topic…please search in flazx.com or google…
=> target : understand about HTTP request like method POST n GET, can create simple CRUD application with JSP
6.Servlet, basic for all java framework. recomended book is Core Web Programming, or many great book tutoring this topic…please search in flazx.com or google…
=> target : understand web mappng, n configuration with XML, create simple CRUD application with Servlet

Advance material topic :
1.Struts, one of simple Java Framework, recomended material is from original manual documentation when u download a struts package. but, many great book tutoring this topic…please search in flazx.com or google…
=> target : understand MVC and framework concept, understand configuration with XML, create simple CRUD application using JDBC with Struts
2.Hibernate, ORM (Object Relational Model), communicate with database server with Java Object. recomended book is Hibernate in Action, Manning.
=> target : understand ORM concept, create simple CRUD application using Hibernate collaborate with Struts
3.Seam or Spring. Java Framework, more complex than Struts. many great book tutoring this topic…please search in flazx.com or google…
=> target : understand annotation, Injection and Outjection, understand configuration with XML, create simple CRUD application using JPA/ hibernate with Spring or Seam.
4.Learn another JEE technologies like RMI, JMS, etc. recomended book is Java Tutorial from SUN.

saya sendiri masih newbie dan perlu banyak beljr, namun setidaknya hal2 inilah yg sy rasakan dlm pembelajaran sy k arah JEE. happy learning….

Comments (2) »

Belajar DP (Dynamic Programming) with C++ yukk…

Apa tuch DP? definisinya bisa liat di wikipedia, dsb.

dari wikipedia (English) : DP is In mathematics and computer science, dynamic programming is a method of solving problems exhibiting the properties of overlapping subproblems and optimal substructure (described below) that takes much less time than naive methods. Tapi yang pasti dalam algo ni kita harus mencari state dari masalah yang kita hadapi untuk menyelesaikan permasalahan tersebut.
DP tuch pendekatannya ada 2 jenis :
1.iteratif (bottom up)
2.rekursif (top down)

sebagai contoh, kita akan membuat algo DP utk fibonacci,
contoh fibonacci :
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946…
sebelumnya, bilangan fibonacci tuch secara matematika punya state sbb:
F(n) = F(n-1)+F(n-2) jika n>=2
F(n) = 0 jika n=0, atau F(0) = 0
F(n) = 1 jika n=1, atau F(1) = 1
so, F(2) = F(1) + F(0) = 0 + 1 = 1, F(3) = F(2) + F(1) = 1+1 = 2, dst

ada banyak cara membuat program fibonacci spt ini,
#include <stdio.h>
#define MAX 20 // kita mengeset nilai MAXnya yaitu 20
int memo[MAX]; // array untuk mnyimpan perhitungan sebelumnya
/* paling lambat (tanpa DP), karena ada perhitungan yang tidak dibutuhkan yang berulang*/
int Non_DP(int n) {
if (n==1 || n==2)
return 1;
else
return Non_DP(n-1) + Non_DP(n-2);
}
// top down DP
int DP_Top_Down(int n) {
// case dasar
if (n == 1 || n == 2)
return 1;
// jika tidak 0, maka akan menghasilkan nilai sebelumnya
if (memo[n] != 0)
return memo[n];
// selain itu, jika 0 maka lakukan sama dengan algo Non DP
memo[n] = DP_Top_Down(n-1) + DP_Top_Down(n-2);
return memo[n];
}
// DP, paling cepat, bottom up, menyimpan nilai sebelumnya di array
int DP_Bottom_Up(int n) {
memo[1] = memo[2] = 1; // value default untuk algo DP
// dari 3 ke n (kita sama2 tahu bahwa fib(1) and fib(2) = 1
for (int i=3; i<=n; i++)
memo[i] = memo[i-1] + memo[i-2];
return memo[n];
}

void main() {
int z;
// ini paling lambat (Non DP)
for (z=1; z<MAX; z++) printf(“%d-“,Non_DP(z));
printf(“\n\n”);
// ini lebih cepat dari yang pertama
for (z=0; z<MAX; z++) memo[z] = 0;
for (z=1; z<MAX; z++) printf(“%d-“,DP_Top_Down(z));
printf(“\n\n”);
/* secara normal algo ini paling cepat*/
for (z=0; z<MAX; z++) memo[z] = 0;
for (z=1; z<MAX; z++) printf(“%d-“,DP_Bottom_Up(z));
printf(“\n\n”);
}

explanation are :
1. utk algo non DP : ini paling lambat karena akan ada perhitungan yang berulang dihitung kembali, sebagai contoh dlm algo diatas adalah menampilkan bilangan fibonacci atau F(n) dari n=1 ke 19, utk F(3) dia akan langsung ketemu yaitu F(3) = F(2) + F(1) = 1 + 1=2, tapi utk n>3, maka akan ada perhitungan yang berulang yaitu sbg contoh : F(4) = F(3) + F(2), karena ini hanya algo fibonacci rekursif non DP, maka tidak ada penyimpanan terhadap perhitungan sebelumnya, yaitu F(3) tidak disimpan (dlm contoh algo DP, hasil disimpan di array), maka akan terjadi pengulangan perhitungan, yaitu : F(4) = (F(2) + F(1)) + F(2) = (1+1) + 1 = 2 + 1 = 3, coba lihat, prosesnya lebih banyak kan…karena algo NonDP ini akan menghitung lagi dari F(3), padahal pada proses sebelumnya sudah dihitung,
2. Top Down : (lanjut penjelasan dari algo Non DP) utk Top Down, perhitungan sebelumnya akan disimpan di array, yaitu saat F(3) sudah dihitung, maka hasilnya disimpan di array(contoh:Memo), jadi saat kita memanggil lagi F(3), tidak perlu dihitung lagi…yaitu dalam hal ini, utk pertama kali, array Memo di inisialisasi nilainya dengan 0, saat sudah dilakukan perhitungan maka dalam array tsb. tidak akan 0 lagi kan…F(3) = 2, maka Memo[3]=2 bukan 0, saat F(3) dipanggil lagi (misal saat F(4) = F(3)+F(2)), maka tidak perlu dihitung lagi cukup cek apakah Memo[n] adalah 0 atau tidak, jika bukan 0, maka pakai saja nilai yang ada d dalam array Memo, jadi secara otomatis saat F(4) = F(3) + F(2), akan langsung terhitung yaitu F(4) = 2+1 = 3, tidak perlu lagi dipecah (penghitungan ulang terhadap F(3)) atau F(4) = (1+1) + 1.
3. Bottom Up : pendekatan iteratif, why always the fastest? silahkan analizis sendiri :D, ini model generate value, pertama diberi inisialisasi awal bahwa Memo[1] = Memo[2] = 1, (dari rumus F(1) = 1, dan F(2) = 1), dan mulailah mengconstruct valuenya mulai dari n=3 ke n yang diinginkan yaitu dengan Memo[n] = Memo[n-1] + Memo[n-2]; saat n=3, maka Memo[3] = Memo[2] + Memo[1] (karena Memo[1] = Memo[2] = 1) maka Memo[3] = 1 +1 = 2, utk Memo[4] = Memo[3]+Memo[2] = 2 + 1 = 3, (lho koq langsung ketahuan nilai dari Memo[3]? karena pada algo ini langsung bermain ke arraynya / memoization), ya inilah yang menyebabkan algo ini paling cepat, tidak perlu me-rekursif ke bawah (Top Down / dari n yang diinginkan ke n=1 || n=2), karena sudah disimpan, dan polanya akan menghitung / men-construct value dari bawah ke atas (Bottom up).
GImana? bingung yach? atau puzziingg….yach kalo kata dosen Q, puzing karena berpikir itu baik, asalkan ga’ berpikir yg negatif lho..
Why we must learn this algorithms,because almost of problems in this world is like DP 😀 kita harus tahu state solusinya terlebih dahulu dalam problem tersebut,sebelum solve !! saat kamu mendapat statenya, maka you’ve got AC!! yeach AC!! go..go..AC!! semisal dari problem fibonacci, kita harus tahu state dari fibonacci, yaitu fibonacci memiliki state
F(n)=F(n-1)+F(n-2), if n>=2 atau dalam algo yg kubuat tuch F(n)=F(n-1)+F(n-2), if n>=3, karena n=0 biasanya jarang disebut…hehe..met learn…n keep share knowledge, because knowledge is power!!

Comments (6) »

PHP Tutorial (Part 2 : HelloWorld)

Program Hello World yang ditulis menggunakan PHP adalah sebagai berikut:

//hello.php
<?php
    echo "<b>Hello World</b><br/>" ;
    echo "<b>Halo Dunia</b>" ;
?>

simpanlah script PHP ini dengan nama hello.php dan taruhlah ke dalam folder htdocs (jika anda menggunakan XAMPP / Apache2Triad) atau www (jika anda menggunakan WAMPP) dan jalankan service apache-nya, lalu jalankan browser anda dan akseslah ke URL : http://localhost/hello.php

Maka, akan tampil di browser anda tulisan sbb:

Hello World

Halo Dunia

Jika tulisan ini tampil, maka saya ucapkan selamat!!! program PHP pertama anda telah berhasil… selamat mencoba…dan sampai jumpa di tutorial saya berikutnya… 😀

Big Thing started from small Thing”

Leave a comment »

PHP Tutorial (Part 1 : Introduction)

Apa itu PHP?
PHP tuch salah satu script pemrograman yang bersifat server side.
kalo menurut wikipedia “PHP adalah bahasa pemrograman script yang paling banyak dipakai saat ini. PHP banyak dipakai untuk memrogram situs web dinamis, walaupun tidak tertutup kemungkinan digunakan untuk pemakaian lain.”

Contoh terkenal dari aplikasi PHP adalah phpBB dan MediaWiki (software di belakang Wikipedia). PHP juga dapat dilihat sebagai pilihan lain dari ASP.NET/C#/VB.NET Microsoft, ColdFusion Macromedia, JSP/Java Sun Microsystems, dan CGI/Perl. Contoh aplikasi lain yang lebih kompleks berupa CMS yang dibangun menggunakan PHP adalah Mambo, Joomla!, Postnuke, Xaraya, dan lain-lain. Dan yang anda lihat ini (WordPress maksudnya) adalah hasil dari script PHP.

Sejarah PHP

PHP pertama kali dibuat oleh Rasmus Lerdorf pada tahun 1995. Pada waktu itu PHP masih bernama FI (Form Interpreted), yang wujudnya berupa sekumpulan script yang digunakan untuk mengolah data form dari web.

Selanjutnya Rasmus merilis kode sumber tersebut untuk umum dan menamakannya PHP/FI, kependekan dari Hypertext Preprocessing’/Form Interpreter. Dengan perilisan kode sumber ini menjadi open source, maka banyak programmer yang tertarik untuk ikut mengembangkan PHP.

Pada November 1997, dirilis PHP/FI 2.0. Pada rilis ini interpreter PHP sudah diimplementasikan dalam program C. Dalam rilis ini disertakan juga modul-modul ekstensi yang meningkatkan kemampuan PHP/FI secara signifikan.

Pada tahun 1997, sebuah perusahaan bernama Zend menulis ulang interpreter PHP menjadi lebih bersih, lebih baik, dan lebih cepat. Kemudian pada Juni 1998, perusahaan tersebut merilis interpreter baru untuk PHP dan meresmikan rilis tersebut sebagai PHP 3.0.

Pada pertengahan tahun 1999, Zend merilis interpreter PHP baru dan rilis tersebut dikenal dengan PHP 4.0. PHP 4.0 adalah versi PHP yang paling banyak dipakai pada awal abad ke-21. Versi ini banyak dipakai disebabkan kemampuannya untuk membangun aplikasi web kompleks tetapi tetap memiliki kecepatan dan stabilitas yang tinggi.

Pada Juni 2004, Zend merilis PHP 5.0. Dalam versi ini, inti dari interpreter PHP mengalami perubahan besar. Versi ini juga memasukkan model pemrograman berorientasi objek ke dalam PHP untuk menjawab perkembangan bahasa pemrograman ke arah paradigma berorientasi objek.

Kelebihan PHP dari bahasa pemrograman lain

* Bahasa pemrograman PHP adalah sebuah bahasa script yang tidak melakukan sebuah kompilasi dalam penggunaanya.
* Web Server yang mendukung PHP dapat ditemukan dimana – mana dari mulai apache, IIS, Lighttpd, hingga Xitami dengan configurasi yang relatif mudah.
* Dalam sisi pengembangan lebih mudah, karena banyaknya milis – milis dan developer yang siap membantu dalam pengembangan.
* Dalam sisi pemahamanan, PHP adalah bahasa scripting yang paling mudah karena memiliki referensi yang banyak.
* PHP adalah bahasa open source yang dapat digunakan di berbagai mesin (Linux, Unix, Macintosh, Windows) dan dapat dijalankan secara runtime melalui console serta juga dapat menjalankan perintah-perintah system.

tapi, pengalaman gue…kelebihan PHP tuch..:

  • bahasa pemrograman web (server side) yang paling simple dan mudah dipelajari, dibanding JSP..hehe..terutama jika kamu sudah pernah belajar C / C++, untuk belajar PHP tidak akan memakan waktu lama
  • cukup ringan memakan resourcenya dibanding Java (servlet dan JSP)
  • paling banyak support-nya, entah itu dari dokumentasi, komunitas, proyek-proyek(project IT kecil2an 😀 ), maupun hostingannya…dll

dan, kekurangannya menurut gw adalah lebih menyulitkan dibanding Java (lho…??? kok bisa??) terutama saat mendevelop aplikasi…cobalah anda mendevelop aplikasi semisal shopping cart menggunakan PHP dan JBOSS Seam (dengan conversation context-nya),,, anda akan menyadari betapa cape’nya develop menggunakan PHP… dan masih kalah aman dibanding Java (JEE based) 😀

artikel ini disadur dari wikipedia Indonesia…. 🙂 daripada nulis kebanyakan lebih baik nyadur (soalnya tentang sejarah, dll bout PHP sich..)

Leave a comment »

Beberapa E-book materi persiapan untuk ACM ICPC

Comments (5) »

Sort with STL (Part 2 : Sorting structs / objects)

Pada artikel pertama, kita telah sedikit mengenal cara pemakaian sort di STL, sekarang kita akan belajar bagaimana mensorting structs atau objects. Semisal, kita telah membuat object “Nilai_siswa” (dengan struct) sbb:

struct Nilai_siswa{

int NIM;

int nilai;

int peringkat_kelas;

};

kalau seperti ini kondisinya, kita tidak bisa secara langsung menggunakan fungsi sort pada STL. Kita perlu membuat fungsi komparasi dengan menggunakan salah satu variabel dari struct Nilai_siswa sebagai patokan untuk melakukan sorting. Jika tidak, akan menjadi rancu, tidak ada acuan pembanding antara object yang satu dengan yang lainnya. Semisal ada 2 buah Nilai_siswa, sbb:

Nilai_siswa A,B;

A.peringkat_kelas = 5;

A.nilai = 30;

B.peringkat_kelas = 9;

B.nilai = 90;

jika tidak dibuat fungsi komparasi yang menjelaskan tentang hubungan perbandingan nilai diantara 2 objek yang bertipe sama (dalam kasus ini Nilai_siswa sebagai tipe datanya), maka fungsi sort tidak akan bisa dipakai, karena apa yang jadi acuan pembanding antara kedua Nilai_siswa tadi, apakah peringkat_kelas -nya atau nilai -nya?

Semisal, kita menjadikan variabel nilai sebagai acuan perbandingan. Maka, implementasinya adalah sebagai berikut :

//fungsi komparasi atau acuan pembanding

bool operator < (const Nilai_siswa &x, const Nilai_siswa &y){

return x.nilai < y.nilai; //ini adalah acuan pembanding dari dua objek Nilai_siswa

}

Pada contoh diatas jika : A < B , maka sebenarnya kita sedang membandingkan A.nilai < B.nilai

So, jika kita sudah membuat fungsi komparasi seperti diatas, kita dapat menggunakan fungsi sort pada STL.

#include<algorithm>

#include<iostream>

using namespace std;

struct Nilai_siswa{

int NIM;

int nilai;

int peringkat_kelas;

};

bool operator < (const Nilai_siswa &x, const Nilai_siswa &y){

return x.nilai < y.nilai; //ini adalah acuan pembanding dari dua objek Nilai_siswa

}

int main(void){

int n;

n=3;

Nilai_siswa A[n];

A[0].peringkat_kelas = 5;

A[0].nilai = 30;

A[1].peringkat_kelas = 9;

A[1].nilai = 90;

A[2].peringkat_kelas = 7;

A[2].nilai = 23;

sort(A,A+n);

for(int i=0;i<n;i++) cout<<A[i].peringkat_kelas<<” “; //hasilnya 7 5 9

cout<<endl;

for(int i=0;i<n;i++) cout<<A[i].nilai<<” “; //hasilnya 23 30 90

}

atau ada cara lain, yaitu :

gantilah code berikut :

bool operator < (const Nilai_siswa &x, const Nilai_siswa &y){

return x.nilai < y.nilai; //ini adalah acuan pembanding dari dua objek Nilai_siswa

}

dengan :

bool compare(const Nilai_siswa &x, const Nilai_siswa &y) {
return x.nilai < y.nilai; /* tanda < berarti X < Y = X.nilai < Y.nilai (sorting secara ascending), tanda > berarti X < Y = X.nilai > Y.nilai (sorting secara descending) */
}

Lalu, ganti juga code berikut :

sort(A,A+n);

dengan :

sort(A,A+n, compare);

sekali lagi….Selamat mencoba 🙂

Comments (3) »