Dhafiq Sagara adalah orang bodoh yang tidak bisa apa-apa, tapi dia selalu berusaha untuk terus menjadi yang lebih baik. Rasa keingin-tahuannya sangat tinggi, selalu berusaha dan terus berusaha, trial dan error adalah prinsip belajarnya.

15 Jul 2011

How to use JCalendar in Netbeans

Kali ini kita akan membahas mengenai jCalendar, yang merupakan library yang dapat kita gunakan untuk menampilkan kalender pada aplikasi java desktop (J2SE).

Sebelum melangkah ke tahap percobaan, silahkan download user guide beserta sample source code yang disediakan oleh jCalendar berikut ini, jcalendar-1.3.3.zip.



  1. Oke langsung saja kita bukan editor java kebanggaan kita, yaitu netbeans.
  2. Ekstrak file jcalendar-1.3.3.zip yang sudah anda download pada link di atas.
  3. Klik kanan pada Pallete kemudian pilih Pallete Manager.





















  4. Kemudian pilih Add from JAR
  5. Pilih file jcalendar-1.3.3.jar kemudian tekan tombol Next
  6. Pilih semua komponen: JCalendar, JDateChooser, JDayChooser, JLocaleChooser, JMonthChooser, JSpinField, JYearChooser kemudian tekan tombol Next
  7. Pilih pada Swing Controls kemudian tekan Finish
  8. Terakhir tekan Close

Sekarang anda bisa menggunakan jCalendar pada Frame.
Spoiler for open Screenshot Contoh JCalendar:








13 Jul 2011

Desain Sertifikat Seminar Nasional Pendidikan Karakter

Desain Sertifikat ini merupakan desain sertifikat untuk peserta seminar nasional dengan topik pendidikan karakter yang diadakan oleh Lembaga Kebudayaan Universitas Muhammadiyah Malang.

Piagam ini didesain dengan kaya warna agar terlihat elegan dan dominan warna cerah.

Desain Logo AppGazebo

Desain logo AppGazebo. Silahkan download file projectnya dibuat menggunakan software AAA Logo dan dapat anda download disini appgazebo-logo.al8

Dan aplikasi AAA Logo dapat anda download disini AAA.Logo.2009.Business.Edition.v3.0.rar







Spoiler for Logo AppGazeboo:






Desain Logo Vigoonat

Desain logo Vigoonat ini dibuat menggunakan software AAA Logo. Dan file mentah dari AAA Logo dapat anda download disini Vigoonat-logo.al8
Dan anda bisa download aplikasinya disini AAA.Logo.2009.Business.Edition.v3.0.rar

Java Source Code Whitespace Insensitivity atau String Sanitizer

Proses Whitespace Insensitivity merupakan sejumlah teks yang mengandung huruf kapital dijadikan ignore case, dan pembuangan tanda baca, spasi, dan karakter-karakter yang tidak relevan lainnya (@, #, $, %, ^, &, *, dan lain-lain). Tipe karakter yang diseleksi yaitu karakter berupa digit (numerik) dan letter (teks string), kemudian pada tahap akhir dijadikan lower case yaitu mengubah seluruh karakter yang mengandung huruf menjadi huruf kecil semua.



Flowchart Whitespace Insensitivity:



Source code pembersihan karakter-karakter yang tidak relevan (whitespace insensitivity):
public class WhitespaceInsensitivity {
    public String stringSanitizer(String text) {
        StringBuffer sb = new StringBuffer();
        char[] chars = text.toCharArray();
        for (Character c : chars) {
            if (Character.isDigit(c) || Character.isLetter(c)) {
                sb.append(c);
            }
        }
        return text = sb.toString().toLowerCase();
    }

    public static void main(String[] args) {
        WhitespaceInsensitivity wi = new WhitespaceInsensitivity();
        String text = "dhafiq-san.blogspot.com merupakan blog yang berisi tentang teknologi informasi";
        System.out.println(wi.stringSanitizer(text));
    }
}


Dapat anda lihat, pada mulanya text:
dhafiq-san.blogspot.com merupakan blog yang berisi tentang teknologi informasi

menjadi

dhafiqsanblogspotcommerupakanblogyangberisitentangteknologiinformasi

Desain Logo Bitncode Software House

Sebuah desain yang kaya warna memang merupakan desain yang justru lebih mudah untuk diingat. Misalkan google, terdapat 4 warna yang dominan pada logo yaitu biru, merah, kuning, dan hijau. Justru lebih kaya warna dan sederhanalah yang dapat diterima banyak orang. Memang lebih baik membuat logo yang memang sederhana dan kaya warna agar lebih mudah untuk diingat oleh banyak orang. Karena tujuan dari pembuatan logo tentunya agar orang bisa suka dan mengingatnya.

Begitupula pada desain logo Bitncode software house ini juga memiliki 4 warna yang berbentuk segitiga yaitu merah, biru, kuning, hijau. Filosofi pada 4 warna tersebut karena pada software tersebut terdapat 4 divisi. Huruf B dan C dibentuk segitiga sebagai nama dari Bit n Code. Logo Bit n Code Software House dapat anda lihat pada gambar berikut ini:

Spoiler for Logo Bit n Code:













12 Jul 2011

Java Source Code Pada Metode Rolling Hash

Hashing adalah suatu cara untuk mentransformasi sebuah string menjadi suatu nilai yang unik dengan panjang tertentu (fixed-length) yang berfungsi sebagai penanda string tersebut. Fungsi untuk menghasilkan nilai ini disebut fungsi hash, sedangkan nilai yang dihasilkan disebut nilai hash.

Contoh sederhana hashing adalah:
Firdaus, Hari
Munir, Rinaldi
Rabin, Michael
Karp, Richard

Menjadi

7864 = Firdaus, Hari
9802 = Munir, Rinaldi
1990 = Rabin, Michael
8822 = Karp, Richard

Contoh di atas adalah penggunaan hashing dalam pencarian pada database. Apabila tidak di-hash, pencarian akan dilakukan karakter-per-karakter pada nama-nama yang panjangnya bervariasi dan ada 26 kemungkinan pada setiap karakter. Namun pencarian akan menjadi lebih efisien setelah di-hash karena kemungkinan setiap angka berbeda. Nilai hash pada umumnya digambarkan sebagai fingerprint yaitu string pendek yang terdiri atas huruf dan angka yang terlihat acak (data biner yang ditulis dalam heksadesimal).

Rolling hash merupakan fungsi yang digunakan untuk menghasilkan nilai hash dari rangkaian gram dalam algoritma winnowing. Fungsi hash H(c1...ck) didefinisikan sebagai berikut:
Rumus Rolling hash

Keterangan:
c : nilai ascii karakter
b : basis (bilangan prima)
k : banyak karakter

Keuntungan dari rolling hash adalah untuk nilai hash berikutnya H(c2...ck+1) dapat dilakukan dengan cara:
Rumus Penghitungan nilah hash berikutnya dengan rolling hash

Dengan begitu tidak perlu melakukan iterasi dari indeks pertama sampai terakhir untuk menghitung nilai hash untuk gram ke-2 sampai terakhir. Hal ini tentu dapat menghemat biaya komputasi saat menghitung nilai hash dari sebuah gram

Berikut flowchart rolling hash:



Berdasarkan rumus rolling hash di atas, berikut source code java untuk fungsi pada metode rolling hash:
public class HashGram {
    public Long rollingHash(String sub) {
        long hash_value = 0;
        int ascii;
        int prev_hash = 0;
        int basis = 3;
        int c_awal = 0;
        int length = sub.length() - 1;
        System.out.println("k = "+sub.length());
        System.out.println("b = "+basis);
        if (prev_hash == 0) {
            for (int i = 0; i <= length; i++) {
                ascii = sub.charAt(i);
                hash_value += (long) (ascii * Math.pow(basis, length - i));
                System.out.println("c ke-"+(i+1)+" adalah huruf '"+sub.charAt(i)+"' bernilai ASCII = "+ascii);
            }
        } else {
            hash_value = prev_hash - (long) (c_awal * Math.pow(basis, length));
            hash_value *= basis;
            hash_value += sub.charAt(length);
        }
        c_awal = sub.charAt(0);
        prev_hash = (int) hash_value;
        System.out.println("Nilai hash pada kata = '"+sub+"' = "+hash_value);
        return hash_value;
    }

    public static void main(String[] args) {
        HashGram hg = new HashGram();
        String text = "dhafiqsagara";
        hg.rollingHash(text);
    }
}


Berikut hasilnya:


RIM Segera Meluncurkan Playbook

Research in Motion (RIM) mulai memasarkan tablet Blackberry Playbook pada 16 Juli mendatang. Ada tiga varian tablet yang tersedia dengan memori 16, 32, dan 64 Gigabite.

Masing-masing Playbook dengan konektivitas Wi-Fi itu dibanderol dengan harga Rp 4,9 juta, Rp 5,9 juta, dan Rp 6,9 juta.

"Kami optimistis kehadiran tablet ini akan mendapatkan respon positif sebagaimana ponsel pintar BlackBerry meraih sukses di Indonesia, kata Hastings Singh, Director Distribution RIM untuk wilayah Asia Pasifik saat peluncuran BlackBerry Playbook di Ritz Carlton, Pasific Place, Jakarta, Kamis, 7 Juli 2011.

Tidak seperti tablet lain, Samsung Galaxy Tab, misalnya, yang menerapkan diskon pada pembelian pertama, Singh mengatakan RIM tidak menggunakan metode promosi seperti itu. "Kami hanya memasarkannya melalui distributor," katanya.

Ada tiga distributor perusahaan asal Kanada itu di Indonesia. Mereka adalah TAM, ComTech, dan Selular Shop. Selain itu, ada tiga operator selular yang turut memasarkan tablet ini, yaitu Telkomsel, Indosat, dan XL. RIM juga menyediakan pemesanan secara online melalui http://id.blackberry.com/playbook/wheretobuy.

RIM, kata Singh, hanya memastikan tablet yang dipasok cukup untuk memenuhi kebutuhan pasar tablet di Indonesia. Namun, dia menolak menyebutkan berapa target penjualannya. Yang jelas, kata dia, sejak diluncurkan pada April lalu, total BlackBerry Playbook yang sudah laris di wilayah Amerika Utara sebanyak 500 ribu unit.

BlackBerry Playbook hadir dengan layar seluas 7 inci dan menggunakan sistem operasi QNX yang mengedepankan kinerja multitasking. Tablet yang dibalut warna hitam ini menggunakan cip dual-core berkecepatan 1 GHz. Untuk konektivitas terdapat fitur Wi-Fi, bluetooth, port HDMI, dan microUSB.

Tablet tersebut dilengkapi GPS, accelerometer, gyroscope, magnetometer, stereo speaker dan microphone. Ada dua kamera yang dibenamkan di bagian depan dan belakang. Masing-masing memiliki resolusi 3 dan 5 megapiksel untuk mengambil gambar dan konferensi video. (tempo)

5 Jul 2011

Alasan Google Plus Lebih Baik Daripada Facebook


Dapatkah Google+ (Google Plus) mencuri pengguna dari Facebook? Ya. Ada beberapa alasan yang baik untuk beralih dari Facebook ke Google+, mulai dari penggunaan yang gampang hingga privasi data.

Pertanyaannya "Dapatkah Google+ mengalahkan Facebook?". Pertanyaan tersebut sebenarnya mungkin tak terlalu tepat. Ini bukan tentang satu situs melawan situs lainnya. Google+ lebih besar daripada itu. Alasan mengapa Google menyebutnya "Proyek Google+" ialah bahwa Google+ akan menjadi bagian sentral dari keseluruhan identitas Google. Itu akan membentuk kembali perusahaan tersebut.

Jadi pertanyaan yang lebih tepat adalah "dapatkah Google mengalahkan Facebook?" Jika ditempatkan seperti itu, kontes tersebut tampaknya jauh lebih seimbang.

Tentu saja Facebook memiliki awal yang besar, tapi ada beberapa alasan baik bagi orang untuk secara serius meninggalkan Facebook untuk Google+. Setidaknya ada 9 alasan, antara lain:

1. Integrasi dengan layanan Google

Porsi terbesar yang dimiliki Google untuk menarik orang menggunakan Google+ ialah integrasi. Artinya Google akan membangun fitur dan peralatan Google+ ke hampir semua layanan online-nya mulai dari pencarian dokumen hingga Video. Google+ sudah diintegrasikan ke hampir keseluruhan produk Google.

Ini memperkenankan Anda memonitor semua peristiwa Google+ (pesan, update, dan lain-lain) sewaktu membagi konten dengan teman tanpa meninggalkan layanan Google yang sedang Anda gunakan. Jutaan orang menggunakan layanan gratis Google (Gmail, Dokumen, Pencarian, dll.), dan dengan keterikatan layanan tersebut dengan Google+ mungkin akan mudah bagi seseorang meninggalkan Facebook.


2. Manajemen pertemanan yang lebih baik

Google benar bahwa konsep "lingkaran" atau Circle lebih sesuai dengan cara kita berteman di kehidupan nyata. Kita memiliki banyak jenis teman, dan kita berinteraksi dan berkomunikasi dengan mereka dalam berbagai cara yang berbeda. Fitur Grup Facebook memperkenankan anda membentuk grup khusus teman, tapi dibandingkan dengan yang dilakukan di Google+, itu nampaknya tidak praktis. Lagi pula, Fitur Grup Facebook masih baru (tambahan), sedangkan Circle merupakan landasan dari platform Google+.


3. Aplikasi mobile yang lebih baik

Jika Anda adalah pengguna Android, anda bisa tahu bahwa memperoleh konten dari telepon Anda ke platform sosial lebih gampang, lebih bersih, lebih banyak fungsi dengan aplikasi mobile Google+. Aplikasi tersebut memang sudah mantap, tapi Google akan tetap mencari dan mencari cara untuk membuat Android anda menjadi anggota tubuh dari platform sosial Google+ anda. Google berharap untuk menggunakan basis pengguna Android-nya yang besar sebagai suatu bagian melawan Facebook, yang aplikasi mobile-nya walau kelihatan cantik tapi sedikit kikuk untuk digunakan.


4. Lebih gampang menemukan hal untuk dibagi

Fitur Spark Google+ merupakan satu lagi hal penting yang membedakannya dari Facebook. Spark ialah di mana Google mengungkit mesin pencarinya untuk melakukan sesuatu yang tidak dapat dilakukan Facebook yaitu memberikan pengguna aliran informasi instan yang relevan untuk dibagi bersama teman. Lantaran Facebook tidak memiliki mesin pencari, penggunanya harus meninggalkan situs itu untuk mencari data yang dapat dibagi atau menunggu teman mereka membaginya dengan mereka. Pertanyaan "bagaimana saya mencari sesuatu untuk dibagi" secara langsung dijawab dengan Spark.


5. Anda dapat mengambil kembali data Anda

Facebook dikenal kurang handal menangani data pribadi. Misalnya Anda dipaksa untuk membuat bagian tertentu data pribadi anda tampil ke publik, dan sangat sulit untuk secara permanen menghapus profil Facebook Anda. Di lain pihak, Google membuatnya mungkin bagi Anda untuk mengambil semua data yang Anda tempatkan di Google+ lalu pergi. Hal ini dilakukan melalui perangkat Google+ yang disebut "Data Liberation". Dengan hanya beberapa klik anda dapat mengunduh data dari Picasa Web Albums anda, Profil Google, Google+ stream, Buzz dan kontak.


6. Melabel foto lebih baik

Ketika melihat foto di Google+ anda dapat melabel nama orang-orang di dalamnya mirip dengan di Facebook. Anda membuat persegi empat kecil di sekitar wajah mereka, kemudian mengetikkan nama mereka pada kotak di bawahnya atau memilih salah satu nama yang diterka Google+. Namun ada perbedaan besar di mana Google menangani aspek privasi dalam melabel foto. Ketika Anda melabel seseorang, akan ada catatan seperti ini "Menambahkan label ini akan memberitahukan orang yang anda labelkan. Mereka dapat foto dan album terkait". Di lain pihak, Facebook tidak melakukan usaha untuk memperingatkan orang bahwa mereka telah dilabel (mungkin saja dalam foto yang tidak baik) dan memberikan mereka kesempatan langsung untuk mengeluarkan (remove) label itu.

Google juga telah memutuskan untuk sedikit malu menggunakan perangkat lunak pengenalan wajah, yang sekarang digunakan Facebook untuk secara otomatis mengidentifikasi orang dalam foto yang diunggah ke album pengguna.


7. Fitur obrolan grup yang mantap

Google+ memiliki fitur yang mengalahkan Facebook dalam urusan obrolan. Gampang untuk membuat grup khusus obrolan vidio dengan menggunakan fitur Hangouts pada Google+, dan membuat grup khusus untuk mengobrol nampaknya merupakan sesuatu yang alami dan menyenangkan untuk dilakukan dalam jejaring sosial. Hal yang mirip juga dilakukan oleh aplikasi mobile Huddle yang membuat pengguna Android memulai obrolan teks grup. Facebook tidak menawarkan perangkat ini.


8. Membagi konten lebih aman

Anjuran privasi sudah lama meminta situs jejaring sosial untuk memperkenankan pengguna menentukan tingkat privasi setiap konten yang dibagi, daripada menggunakan daftar penyetelan awal yang menentukan semua konten yang dibagi. Google nampaknya mendengar permintaan itu, dan membangun kapabilitas tersebut ke dalam Google+. Sebagai contoh, jika saya membagikan artikel atau mengunggah gambar dari kamera, Google+ memberikan saya pilihan lingkaran teman mana yang ingin saya bagikan konten tersebut. itu merupakan keuntungan Google+.


9. Google lebih baik mengurusi data pribadi Anda

Menjalankan sebuah jejaring sosial, semuanya tentang tanggung jawab untuk mengurusi informasi pribadi pengguna. Facebook merupakan perusahaan muda yang bergerak cepat yang telah terbukti angkuh dalam pergerakannya, kurang begitu peduli kepada privasi data pengguna, dan mudah diakses orang lain. Di lain pihak, Google merupakan perusahaan yang jauh lebih matang yang terlihat jauh lebih terpercaya ketimbang Facebook. Sebagian besarnya, Google telah beroperasi berdasarkan slogannya "Jangan Menjadi Jahat". (Kompasianer: Oscar, PCWorld)

Java Look And Feel - Office2003


Beragam Look and Feel untuk java, salah satunya adalah Look and Feel Office 2003. Sebelum menggunakan look and feel ini, silahkan download OfficeLnFs_2.7.jar.

Setelah anda membuat frame dan memasangkan komponen-komponennya, pasangkan code pemanggilan Office2003LookAndFeel() pada main seperti berikut:
public static void main(String args[]) {
    try {
       UIManager.setLookAndFeel(new Office2003LookAndFeel());
    } catch (UnsupportedLookAndFeelException ex) {
       Logger.getLogger(Frame.class.getName()).log(Level.SEVERE, null, ex);
    }
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new Frame().setVisible(true);
        }
    });
}

Semoga bermanfaat

4 Jul 2011

Read Doc in Java

How to read doc file in java?

Pembacaan isi dokumen berformat file .doc ini dapat menggunakan library POI. Silahkan download library tersebut disini poi-3.7.zip. Atau anda juga bisa mengunjungi situs resminya di http://poi.apache.org/.

Library buatan apache tidak hanya digunakan untuk membaca doc saja, melainkan bisa untuk pembacaan file excel, powerpoint, xml. Tetapi pada artikel ini, saya hanya memberikan contoh source code untuk pembacaan dokumen berekstensi doc.

Source code read doc in java:
import java.io.*;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.extractor.WordExtractor;

public class ReadDocFile {
    public static void main(String[] args) {
        File file = null;
        WordExtractor extractor = null;
        try {
            file = new File("my.doc");
            FileInputStream fis = new FileInputStream(file.getAbsolutePath());
            HWPFDocument document = new HWPFDocument(fis);
            extractor = new WordExtractor(document);
            String[] fileData = extractor.getParagraphText();
            for (int i = 0; i < fileData.length; i++) {
                if (fileData[i] != null) {
                    System.out.println(fileData[i]);
                }
            }
        } catch (Exception exep) {
            exep.printStackTrace();
        } catch (NoClassDefFoundError ex){
            ex.printStackTrace();
        }
    }
}

3 Jul 2011

Desain Kartu Nama Vigoonat Software House


Screenshoot di atas merupakan desain kartu nama. Contoh desain kartu nama untuk perusahaan software developer bernama vigoonat. Desain sederhana yang terkesan elegan dengan 6 perpaduan warna: hitam, putih, kuning, biru, oranye, abu-abu. 

Silahkan download file .cdr (CorelDrawX4): kartu nama vigoonat.zip

Semoga dapat memberikan inspirasi untuk desain kartu nama anda.

Read PDF in Java

How to read document PDF in Java?
Pada artikel sebelumnya, telah dibuat bagaimana membaca file docx menggunakan java. Sekarang saya akan memberikan contoh source code untuk membaca file berformat pdf melalui java. Untuk membaca file berekstensi PDF memerlukan library, dan library yang digunakan adalah AspriseJavaPDF.



Read Docx in Java

How to read document docx in java??
Berikut source code bagaimanan membaca isi dokumen berekstensi docx pada java. Pada java, untuk membaca file berekstensi docx tidak memerlukan library khusus, teknik pembacaan dokumen docx ini dengan mengekstrak menggunakan zipEntry. Kemudian dari hasil ekstrakan tersebut disimpan pada file xml sebagai penyimpanan temporary, dan terakhir membaca file xml tesebut.



Berikut source code membaca file docx menggunakan java:
import java.io.ByteArrayInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class JavaReadDocx {
    public static void main(String[] args) throws IOException, ParserConfigurationException, SAXException {
        FileInputStream file = new FileInputStream("my.docx");

        ZipInputStream docXFile = new ZipInputStream(file);
        ZipEntry zipEntry;
        OutputStream out;
        String xml = "";
        while ((zipEntry = docXFile.getNextEntry()) != null) {
            if (zipEntry.toString().equals("word/document.xml")) {
                byte[] buffer = new byte[1024 * 4];
                long count = 0;
                int n = 0;
                long size = zipEntry.getSize();
                out = System.out;

                while (-1 != (n = docXFile.read(buffer)) && count < size) {
                    xml += new String(buffer, 0, n);
                    count += n;
                }
            }
        }
        InputStream is = new ByteArrayInputStream(xml.getBytes("UTF-8"));
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder parser = factory.newDocumentBuilder();

        Document document = parser.parse(is);

        NodeList sections = document.getElementsByTagName("w:t");
        String isidocx = "";
        for (int i = 0; i < sections.getLength(); i++) {
            isidocx += sections.item(i).getFirstChild().getNodeValue();
        }
        System.out.println(isidocx);
    }
}
Semoga bermanfaat