Membuat AUTO_INCREMENT Di Mysql
AUTO_INCREMENT
memungkinkan kita untuk mendapatkan angka/nomor yang unik ketika sebuah record di insert
ke dalam table
. Angka/nomor hasil dari AUTO_INCREMENT
biasanya di pakai sebagai nilai dari primary key suatu table.
MySQL database telah menyediakan fitur ini. Kita tinggal menetapkan sebuah field sebagai AUTO_INCREMENT
, lalu mysql yang akan meng-handle untuk menggenerate nilai yang unik ketika sebuah record di insert
.
Anggap, kita ingin membuat table seperti di bawah ini di mysql.
Dan kita ingin, agar user_id nilai nya selalu unik ketika ada penambahan data user baru. Maka DDL yang di butuhkan sebagai berikut:
1 2 3 4 5 6 |
|
Coba jalankan script berikut untuk insert data ke table
1 2 3 4 |
|
Kita tidak perlu mendefinisikan nilai dari user_id, karena mysql secara otomatis akan melakukannya.
Berkenalan Dengan Spring-Batch
Spring batch adalah framework untuk melakukan proses batch, mengeksekusi serangkaian job
. Dimana job
terdiri dari banyak step
dan setiap step
terdiri dari proses READ-PROCESS-WRITE
atau SINGLE-OPERATION
(tasklet
).
Berikut beberapa istilah yang sering di gunakan di Spring Batch:
- Job – Menggambarkan suatu pekerjaan. Misal, membaca file DPK (Dana Pihak Ketiga), lalu menyimpannya ke dalam database. Setelah itu menampilkannya ke dalam laporan
Combined-Statement
. - Step – Sebuah job terdiri dari satu atau dua step. Dalam contoh di atas, misalnya:
- Step 1: Membaca File DPK & Meyimpan ke dalam database
- Step 2: Menampilkan data DPK ke dalam laporan
Combined-Statement
- JobInstance – Sebuah instance yang sedang berjalan dari sebuah
job
yang telah di tetapkan. Anggap,job
adalah sebuah class danjobinstance
adalah sebuah object dari classjob
. Contoh,job
membaca file DPK jalan setiap awal bulan, berarti kita memiliki 1 JobInstance setiap bulannya. 1job
yang berjalan sama dengan 1jobinstance
. - JobParameters – Parameter-parameter yang digunakan oleh
JobInstance
. Contoh, secara default, laporanCombined-Statement
yang di generate adalah untuk periode T-1, tapi kita ingin membuatnya lebih dinamis, jadi kita bisa generatekan laporan untuk periode T-N, jadi, kita mesti melemparkan nilaiN
ke dalamJobParameters
, dimanaJobParameters
nanti akan di lemparkan sebagai baris perintah argumen. - JobExecution – Setiap menjalankan
JobInstance
akan menghasilkanJobExecution
. Contoh, ketika job membaca file DPK gagal, lalu job di jalankan lagi dan berhasil. Maka kita akan memiliki 1JobInstance
dan memiliki 2JobExecution
, 1 yang berhasil & 1 lagi yang gagal. - StepExecution – Sama seperti
JobExecution
, tapi ini untuk menggambarkan hasil dariStep
. - JobRepository – Sebuah persistent store untuk menyimpan semua informasi meta-data
job
. Menyimpan informasiJobInstance
,JobExecution
danStepExecution
. Repositori dibutuhkan untuk mengetahui apakah sebelumnyajob
gagal atau tidak, jika gagal maka bisa di jalankan kembali. Secara default informasi ini di simpan di memory, tapi kita bisa setting untuk menyimpannya di database. - JobLauncher – Seperti namanya, object ini memungkinkan kita untuk memulai sebuah
job
. Ia menggunakanJobRepository
untuk mendapakanJobExecution
yang valid.
SINGLE-OPERATION
- TaskLet – Situasi dimana kita tidak memiliki input and pengolahan keluaran (
SINGLE-OPERATION
). Misalnya, kita ingin memanggil/menjalankan sebuah store procedure.
READ-PROCESS-WRITE
- ItemReader – Sebuah abstract class yang digunakan untuk menggambarkan sebuah object yang memungkinkan kita untuk membaca sebuah object yang ingin kita proses. Misal, kita ingin membaca file DPK, atau kita ingin membaca data dari database.
- ItemWritter – Sebuah abstract class yang digunakan untuk menulis hasil akhir dari proses batch. Misal, kita ingin meng-generate laporan
Combined-Statement
. - ItemProcessor – Sebuah abstract class yang digunakan untuk melakukan
business logic
dari data yang di hasilkan olehItemReader
sebelum di lemparkan keItemWritter
.
Dalam tulisan selanjutnya kita akan melihat contoh dari penggunaan masing-masing item tersebut.
Error ‘Unable to Open Logs’ Ketika Menjalankan Httpd
Hari ini ada masalah di production. Teman melakukan restart server production, tapi yg sialnya tidak ada yg tau kalau ada proxy/web server sebelum akses user di lanjutkan ke tomcat.
Proxy/web server yg kami gunakan adalah httpd. Tapi ketika di jalankan dengan menggunakan command
1
|
|
muncul error
1 2 3 |
|
Ritual pertama yg saya lakukan, check apakah port 80 lagi di pakai oleh service lain dengan menggunakan command
1
|
|
hasilnya
1 2 3 4 |
|
dari hasil diatas, ternyata port 80 lagi digunakan oleh httpd
. Ternyata httpd
dalam keadaan deadlock, walaupun sudah membuka port 80, tapi kita tetap tidak bisa akses.
Ok, ritual kedua, kita stop httpd dengan menjalankan command
1
|
|
hasilnya
1
|
|
mantap. ternyata httpd
benar2 dalam keadaan deadlock/hang. jalan satu2nya kita kill proses httpd
tersebut.
Untuk kill proses httpd, sebelumnya kita mesti tahu dulu prosess id nya, dengan menjalankan command
1
|
|
hasilnya
1 2 3 |
|
Bisa kita lihat, ada 3 prosess yang mengandung kata httpd. Sekarang jalankan command berikut untuk melakukan kill prosess tersebut
1 2 |
|
Lalu jalankan lagi command berikut
1
|
|
untuk menjalankan httpd kembali.
Rename Column Di Oracle
Sintaks untuk rename column di oracle sebagai berikut
1
|
|
anggap, kita memiliki table dengan struktur seperti ini
1 2 3 4 5 |
|
Lalu, kita ingin mengubah, nama kolum RATE
, menjadi VALUE
. Maka jalankan sintaks berikut
1
|
|
List File/Directory Dalam Bentuk Tree Di Crunchbang
Saya selalu melihat di video tutorial yg menggunakan *nix, mereka selalu list file/directory dalam bentuk seperti ini
setelah google, ternyata mereka menggunakan tree
.
Untuk menginstall tree
di crunchbang/debian, gunakan command berikut
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
Sencha Touch Hello World
Tulisan ini hanya sebagai pengingat saya, maklum sudah tua :D
Sebelum melakukan generate aplikasi yang pertama menggunakan Sencha Cmd, berikut yang mesti kita lakukan.
* Direktori project saya, biasanya saya letakkan di ~/PROJECT/SENCHA_TOUCH
* Direktori Sencha SDK saya ada di ~/TOOLS/sencha/touch-2.2.1
* Lalu buat direktori sesuai dengan nama projectnya, karena kita mau buat hello world, maka saya buat folder hello world di dalam folder tersebut
1 2 |
|
Generate Project
Untuk melakukan generate project, lakukan langkah-langkah berikut ini:
1) Masuk ke dalam direktori ~/TOOLS/sencha/touch-2.2.1
1
|
|
2) Lalu jalankan command berikut ini
1
|
|
maka akan muncul output
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
|
Running Project
Untuk menjalankan project menggunakan Sencha Cmd, lakukan langkah berikut:
1) masuk ke dalam directory project
1
|
|
2) lalu ketikkan
1
|
|
Lalu akan muncul output
1 2 3 4 5 6 7 8 9 10 11 |
|
Jika tidak memiliki emulator (android, iphone, dll), kita bisa gunakan google chrome. Jalankan google chrome, lalu masukkan url http://localhost:8000.
Done.
Install Sencha Touch SDK Dan Sencha Cmd
Tulisan ini hanya sebagai pengingat saya, maklum sudah tua :D
Sebelumnya, silahkan download Sencha Touch SDK dan Sencha Cmd. Untuk Sencha Cmd, saya download yang versi linux (SenchaCmd-3.1.2.342-linux-x64.run.zip
).
Install Sencha Touch SDK
Untuk meng-install Sencha Touch SDK, cukup hanya dengan melakukan extract file yang anda download.
Install Sencha Cmd
1) Extract file SenchaCmd-3.1.2.342-linux-x64.run.zip
2) Jalankan command berikut, untuk mengubah file menjadi executable
1
|
|
3) Jalankan command berikut, untuk memulai instalasi
1
|
|
4) Lalu akan muncul dialog Setup – Sencha Cmd. Klik Next.
5) Lalu akan muncul dialog License Agreement. Klik I accept the agreement, lalu klik Next.
6) Lalu akan muncul dialog Installation Directory. Pada Installation Directory biarkan terisi default, lalu klik Next.
7) Lalu akan muncul dialog Ready to Install. Klik Next.
8) Lalu akan muncul dialog Installing. Proses install sedang berjalan
9) Setelah proses install selesai, akan muncul dialog Completing the Sencha Cmd Setup Wizard. Klik Finish
10) Untuk menguji, apakah proses instal Sencha Cmd telah berhasil atau belum, buka terminal lalu jalankan command berikut
1
|
|
jika muncul output sebagai berikut, berarti proses instal telah berhasil
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
|
Mendapatkan Tanggal Awal Dan Akhir Bulan Di Oracle
Tulisan ini hanya sebagai pengingat saya, maklum sudah tua :D
Anggap, sekarang tanggal 15 oktober 2013. Untuk menambahkan/mengurangi bulan, kita bisa menggunakan sintaks
1
|
|
dimana:
date
adalah data tipe date yang di jadikan patokaninc
adalah total penambahan bulan, dalam positif. Contoh,select add_months(sysdate, 5) from dual
, akan menghasilkan tanggal sekarang + 5 bulan ,dec
adalah total pengurangan bulan, dalam negatif. Contohselect add_months(sysdate, -5) from dual
, akan menghasilkan tanggal sekarang – 5 bulan
Bulan Sebelumnya
Untuk mendapatkan tanggal awal & akhir untuk bulan september-2013, gunakan script berikut:
1 2 3 4 |
|
Untuk mendapatkan tanggal awal & akhir untuk bulan agustus-2013, gunakan script berikut:
1 2 3 4 |
|
Untuk mendapatkan tanggal awal & akhir untuk bulan juli-2013, gunakan script berikut:
1 2 3 4 |
|
Dan seterusnya
Bulan Sekarang
untuk mendapatkan tanggal awal & akhir untuk bulan oktober, gunakan script berikut:
1 2 3 4 |
|
Bulan Selanjutnya
Untuk mendapatkan tanggal awal & akhir untuk bulan november-2013, gunakan script berikut:
1 2 3 4 |
|
Untuk mendapatkan tanggal awal & akhir untuk bulan desember-2013, gunakan script berikut:
1 2 3 4 |
|
Untuk mendapatkan tanggal awal & akhir untuk bulan januari-2014, gunakan script berikut:
1 2 3 4 |
|
Dan seterusnya.