Archive

Archive for the ‘Java’ Category

Bill Distribution ~ behind the scene


Siang ini saya ingin membagikan logika distribusi pecahan mata uang, logika ini mungkin sudah sering kita jumpai, seperti di Program Pecahan Mata Uang Rupiah, tetapi saya tetap ingin membagikannya sebagai contoh bahwa banyak jalan menuju Roma.

Berikut ini merupakan code dengan menggunakan CC4J:

    public static void main(String[] args) {
        double money = 3446578;
        HashMap<Integer, Integer> hashMap = CCFormat.bill(money);
        for (Integer bill : CCFormat.DICT_BILL) {
            if (hashMap.get(bill) != null) {
                System.out.println("Pecahan " + bill + " sebanyak " + hashMap.get(bill));
            }
        }
    }

Yang menghasilkan:

Pecahan 100000 sebanyak 34
Pecahan 20000 sebanyak 2
Pecahan 5000 sebanyak 1
Pecahan 1000 sebanyak 1
Pecahan 500 sebanyak 1

Read more…

Categories: Java Tags:

Roman Format ~ behind the scene


Hari ini di kantor saya mendapat suatu yang baru dan seru untuk dibagikan, yaitu bagaimana cara mengubah angka arab menjadi angka romawi. Hal pertama yang saya lakukan adalah googling, siapa tahu di Java sudah tersedia fungsinya. Belum lama berseluncur, saya menemukan blog yang berisi Program Konversi Bilangan Bulat / Desimal ke Romawi, setelah membaca isinya dapat disimpulkan bahwa belum tersedia fungsinya di Java. Akhirnya saya memutuskan untuk membuat fungsi sendiri.

Aturan penulisan romawi saya ambil dari wikipedia, yaitu sebagai berikut:

  • A number written in Arabic numerals can be broken into digits. For example, 1903 is composed of 1, 9, 0, and 3. To write the Roman numeral, each of the non-zero digits should be treated separately. In the above example, 1,000 = M, 900 = CM, and 3 = III. Therefore, 1903 = MCMIII.[6]
  • The symbols “I”, “X”, “C”, and “M” can be repeated three times in succession, but no more. (They may appear more than three times if they appear non-sequentially, such as XXXIX.) “D”, “L”, and “V” can never be repeated.[7][8]
  • “I” can be subtracted from “V” and “X” only. “X” can be subtracted from “L” and “C” only. “C” can be subtracted from “D” and “M” only. “V”, “L”, and “D” can never be subtracted[8]
  • Only one small-value symbol may be subtracted from any large-value symbol.[9]

Read more…

Categories: Java Tags:

Auto Import dan Auto Format


Auto Import dan Auto Format merupakan dua ilmu dasar yang wajib dimiliki oleh programmer:

  1. Auto Import: Merupakan skill untuk melakukan import class atau function dari luar class.
  2. Auto Format: Merupakan skill untuk merapikan code dengan cepat.

Berikut ini merupakan shortcut Auto Import dan Auto Format di berbagai stage:

Microsoft Visual Studio NetBeans MyEclipse
Auto Import CTRL+. Ctrl+Shift+I Ctrl+Shift+O
Auto Format Ctrl+E, D Alt+Shift+F Ctrl+Shift+F

Semoga membantu..

Compact Class Scrabble [Java Versus C#]


Berikut ini merupakan persamaan dan perbedaan dalam menggunakan CCHibernate:

  • Java meng-enkapsulasi attributenya dengan setter-getter, kita harus menggunakan set…(value) untuk memberikan value, dan get…() untuk mendapatkan nilai.
  • C# meng-enkapsulasi attributenya dengan setter-getter, kita cukup menggunakan persamaan sederhana untuk memberikan nilai, dan mendapatkan nilai.
    @Entity
    @Table(name = "language")
    public static class Language {

        @Id
        @GeneratedValue(strategy = javax.persistence.GenerationType.IDENTITY)
        private Long id;
        @Column(length = 32)
        private String name;

        public Long getId() {
            return id;
        }

        public void setId(Long id) {
            this.id = id;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }
    }
    [Class(Table = "language")]
    public class Language
    {
        [Id(Name = "id")]
        [Generator(1, Class = "native")]
        public virtual int id { get; set; }

        [Property(Length = 32)]
        public virtual String name { get; set; }
    }

Read more…

Categories: C#, Java Tags: , , ,

Highcharts, CC4J, ZK


Highcharts, CC4J, ZK:

  • Highcharts adalah interaktif JavaScript grafik untuk halaman Web Anda.
  • CC4J adalah Compact Class untuk bahasa Java.
  • ZK adalah framework Java terbuka untuk membangun web perusahaan yang menakjubkan dan aplikasi mobile.

Dalam membangun sebuah aplikasi web berbasis Java, seringkali kita menemukan kendala, di sisi Model kita dapat menggunakan Hibernate, sedangkan di sisi View kita dapat menggunakan ZK, sehingga pengerjaan aplikasi dari awal sampai akhir dapat dikerjakan sebagai berikut:

  • menggunakan Hibernate, untuk melakukan mapping entity ke database, dalam hal ini kita menggunakan CCHibernate.
  • menggunakan CCValidator dan CCTable, untuk mapping entity ke screen, dalam hal ini kita menggunakan CCValidatorZk dan CCTableZk, untuk mapping entity ke ZK.
  • merancang screen dengan menggunakan ZK.

Setelah aplikasi sudah 99% jadi, biasanya masalah baru akan timbul, yaitu ketika kita akan mempresentasikan data ke client, tentunya kita ingin menyuguhkan tampilan yang bagus dan interaktif, sehingga menarik minat client. Hal ini dikarenakan chart yang dihasilkan ZK relatif  ‘so-so’, dan memaksa kita untuk melirik alternatif lain, yaitu Highcharts, dimana chart yang dihaslikan relatif interaktif. Untuk mengimplementasikan Highcharts ke ZK salah satu caranya yaitu dengan menggunakan CCHighcharts dan CCHighchartsZk.

  • CCHighcharts adalah sebuah class yang setara dengan Highcharts, sehingga kita bisa memanipulasi atribute dengan cara Java, lalu meng-compile-nya menjadi JavaScript.
  • CCHighchartsZk adalah sebuah class yang mempermudah mengimplementasikan Highcharts ke ZK.

Read more…

Categories: Java, JavaScript Tags: , ,

Automatic reconnect from Hibernate to MySQL after MySQL closes the connection


Yesterday I spent the entire day getting the following amazing state-of-the-art not-ever-done-before feature to work:

  • Executing a SQL statement from my program

Because, as everyone knows, I don’t suffer from NIHS, I used standard object-relational mapping software Hibernate, with a standard programming language Java, using the standard web-application server Tomcat, and now I am using the standard “connection pooling” software C3P0 (which I didn’t know I needed to execute a SQL statement, see below..)

The program is, in fact, already completed, and is nearly deployed. On the test server it works fine and even on the (future) live server it worked fine. But the customer noticed that if one installed it one day, the next day it didn’t work. I’ve had such symptoms many times before, so I know immediately what was going on:

  • MySQL drops a connection after 8 hours (configurable)
  • The software is used during the day, but isn’t used during the night, therefore the connection times out in the night
  • Therefore in the morning, the program one installed the day before no longer works

Perhaps I exaggerated the simplicity above of what I was really trying to achieve. It should really be expressed as the following:

  • Executing a SQL statement from my program, even if a long time has passed since the last one was executed

But that amounts to the same thing in my opinion! It isn’t rocket science! (But in fact is, see below..)

Read more…

Categories: Java Tags: ,
%d bloggers like this: