Subscribe

RSS Feed (xml)

Powered By

Skin Design:
Free Blogger Skins

Powered by Blogger

Kamis, 15 Desember 2011

Barcode project di Adempiere [versi Kantor ku]

Setelah dipromosikan, bos telepon (salah satu teman menyebut beliau begitu hehehe) melakukan gebrakan. Ingin menggunakan barcode untuk input barang di adempeire! Begitu mendengar berita itu, angan-angan melayang membayangkan aplikasi adempiere yang seperti itu di padukan dengan barcode. Efektifkah???
Sebagai "tukang parkir" ga ada hak bagi saya untuk menolak. Jadi ya kita jalanin aja permintaan si bos. Sekalian nambah jam terbang ngoprek Adempiere. Kali aja di bajak ke ladang yang lebih subur hehehe.

Setelah beberapa kali meeting (sebagai tukang parkir, saya cukup meeting 1x saja), akhirnya di rumuskan bagian mana yang akan di masukkan sistem barcode. Yaitu bagian 1. Input barang produksi (Material Receipt), dan 2 Bagian cek/loading barang untuk pengangkutan (cek shipment).

Dengan base Adempeire 342 maka solusi-solusinya adalah:

1. Barcode untuk Material Receipt

Pada Adempiere 342 sudah support penggunaan barcode. Sejatinya barcode scanner hanya tools untuk membaca barcode dan mengetikkan pada cursor saat itu. Maka kita tinggal set UPC/EAN dengan string barcode. 

UPC/EAN di input sesuai dengan kode barcode nya

Lookup product menggunakan empat kolom untuk searching, yaitu: Value, Name, SKU, dan UPC. 
Code lookup product. Terlihat menggunakan 4 field untuk searching
Dengan mengeset UPC maka tinggal cursor kita arahkan pada field product ketika input material receipt line, kemudian kita tembakkan scanner ke barcode, maka product akan terinput. Hal ini juga berlaku pada form-form lain yang menggunakan lookup Product seperti Order, dan Invoice.

2. Cek Input Loading
Nah sekarang modul cek barang waktu loading. Jadi ceritanya saat menaikkan barang ke truck, di cek menggunakan barcode scanner. Banyak model yang bisa digunakan, misalnya digunakan seperti ship/receipt confirmation. Namun saya putus kan membuat form baru dengan mencontoh form create line form pada saat membuat Material Receipt dari Invoice.
Tampilan Form baru Input Loading
Dalam form baru ini ada field Business Partner dan Locator. Proses input loading memang tidak berdasarkan nomor Shipment, namun berdasarkan Business Partner (Customer). Sedangkan locator hanya sebagai pelengkap karena secara default shipment hanya dilayani oleh satu gudang. Untuk keperluan ini diperlukan beberapa tambahan tabel yaitu: M_Loading dan M_LoadingLine. M_Loading akan berisi Business Partner, Locator, Nomor Loading digunakan sebagai nomor document transaksi loading, dan Tanggal Loading yaitu tanggal saat itu. Sedangkan M_LoadingLine berisi Qty loading, Product, dan ShpmentLine.
Kemudian pada tabel M_InOutLine ditambahkan field isBarcodeChecked untuk menyimpan status MInoutLine yang artinya line sudah terkirim semua dan BarcodeCheckedQty yang digunakan untuk menyimpan total qty yang telah terkirim.
Proses pada form ini pertama adalah mengisikan business partner kemudian locator dan nomor loading. Untuk semetara nomor loading diisikan sembarang. Kemudian masukkan qty barang yang akan di scan barcode dan enter, maka cursor akan aktif pada field barcode. Lakukan scan maka otomatis data masuk pada grid dibagian bawah. Setelah input pertama maka field business partner, locator, serta nomor loading akan readonly. Jadi maksudnya kita lakukan terus scan barcode sampai proses selesai. Setelah selesai tinggal tekan tombol dibawah yang akan menutup proses input pada nomor loading tersebut.

Selain itu diperlukan juga print format yang dapat menampilkan barcode dari produk-produk yang ada. Di adempiere 342 sudah support print barcode, namun ada "bug" nya, yaitu printnya terlalu besar. Tidak bisa dikecilkan via setting di printformat item. Setelah dicoba-coba akhirnya saya berhasil mengecilkan barcode yaitu dengan menset barwidth menjadi 1.
Update code agar ukuran barcode kecil.

Contoh hasil cetak barcode tipe code-128

Untuk mendapatkan file-file class baru serta SQL perubahan data bisa didownload dibawah ini:


Rabu, 05 Oktober 2011

Arisan Emas

Dua tahun sekali ada arisan keluarga. Arisannya itu menggunakan harga emas sebagai patokan. Namun saya belum tertarik untuk ikut arisan tersebut karena saya merasa ada yang salah dalam arisan ini. Karena dulu ketika ibu mertua mendapatkan arisan, harga emas masih murah, jauh sekali dengan harga emas sekarang. Jadi rasanya menjadi beban ketika membayar arisan. Logikanya dengan menggunakan nilai emas diharapkan nilai uang hasil arisan tidak akan termakan oleh inflasi. Karena arisan dilakukan setahun 2x dengan jumlah peserta puluhan, maka satu putaran arisan bisa memakan waktu puluhan tahun. Tentu jumlah uang arisan akan menyusut (untung orang yang mendapat pertama daripada yang mendapat terakhir).

Akhirnya saya tau apa yang salah pada sistem arisan emas ini. Yaitu tidak konsistennya penggunaan emas. Harusnya dalam arisan ini yang dibayarkan adalah emas, bukan uang rupiah. Namun susah juga kalau harus bayar 1 gr emas. Cara lain adalah, setelah mendapatkan arisan, harus langsung di belikan emas. Emas tersebut di simpan untuk membayar arisan sampai selesai (terkendala juga, apa harus menjual emas setiap arisan). Jika tidak dengan cara ini maka yang mendapatkan arisan di awal dianggap berhutang dengan bunga sebesar kenaikan harga emas. Sedang yang mendapatkan diakhir dianggap menabung dengan bunga kenaikan harga emas (menabung dengan emas/investasi emas). Beruntunglah yang mendapatkan arisan terakhir kali.

Jika nanti saya harus ikut, maka sistem arisan ini harus diubah. Bayar arisan dengan emas, maka dapatnya emas.


Sabtu, 01 Oktober 2011

Tools untuk memindah koordinat peta SHP

Seringkali saya mendapatkan peta yang koordinatnya tidak benar. Karena saya bukan benar-benar orang GIS maka saya bingung bagaimana cara memperbaiki peta tersebut. Browsing di internet juga tidak membantu karena saya sendiri tidak tau istilah apa untuk salah koordinat peta. Akhirnya saya coba riset dengan bantuan MapWindows. Ternyata peta yang salah itu memiliki Extend yang salah juga. Trus bagaimana kita mengganti Extend itu? Browsing-browsing lagi info extend ada pada header file SHP, namun saya belum tau apakah dengan mengubah langsung info extend di header dapat membuat peta benar? Browsing-browsing pun tidak ada tools untuk mengubah extend itu. Ketemu link forum Mapwindows sendiri mngenai membuat file SHP. Dari situ saya tau bawah extend akah otomatis sesuai koordinat point-point yang ada di shape. Nah saya ada ide, bagaimana kalau melakuan copy paste shape secara per-point! Ketika proses copy paste itu, point di ubah sesuai perhitungan tertentu, sehingga pada akhirnya point-point itu memiliki extend yang benar. Jadi secara garis besar, bagaimana mentransformasikan peta ber-extend salah, menjadi peta ber-extend benar.

Setelah saya coba hitung-hitungan di Excel, saya dapatkan rumus:
xbaru = extendBenar.XMin + ((xlama -extendSalah.Xmin) * rasioResizeX)
ybaru = extendBenar.YMin + ((ylama -extendSalah.Ymin) * rasioResizeY)

dimana:
rasioResizeX  = abs(extendBenar.XMax-extendBenar.XMin)/abs(extendSalah.XMax-extendSalah.XMin)
rasioResizeY  = abs(extendBenar.YMax-extendBenar.YMin)/abs(extendSalah.YMax-extendSalah.YMin)

Nah dari rumus ini saya buatlah tools (software):


Langkah-lagkahnya, pertama pilih peta yang akan di transformasi extendnya (dan tentu seluruh point-point nya)


Dapat kita lihat peta ini memilik xMax 327019,764 Peta itu kana saya cocok kan sesuai extend yang benar, maka saya perlu peta pembanding. Peta ini harus benar, karena nanti peta yang akan di transformasi akan mengikuti extend peta pembanding.

Pada peta pembanding terlihat koordinat nya (extend) telah benar. Maka kita pilih salah satu shape pada peta pembanding untuk dijadikan extend pembanding. Selain itu pada tools ini dapat pula kita gunakan langsung extend seluruh peta sebagai pembanding (berguna ketika peta pembanding adalah peta yang sama).

Setelah itu langsung kita jalankan proses nya dengan menekan tombol Proses!!!
Proses berlangsung sesuai jumlah point pada peta yang ditransformasi. Dalam kasus ini peta yang ditransformasi memiliki 1 (satu) shape dan pada shape tersebut memiliki 2186 point.
NB: Kadang kala muncul pesan error "Start Edit DBF". Baikan saja, saya sendiri tidak tau kenapa bisa seperti itu.


Peta yang telah diubah terlihat telah memiliki extend yang sama dengan extend tujuan. Nah ini tujuan tools ini. Membuat extend peta menjadi sesuai extend tujuan. Namun harap berhati-hati ketika akan mentransformasi peta yang memiliki exted tidak sama dengan pembandingnya, seperti ketika mentransformasikan peta jalan/sungai dengan pembandingnya adalah peta kabupaten/kota




Setelah peta ditampilkan di mapwindows 



Ini link untuk mendapatkan tools ini: http://www.4shared.com/file/XLk65UtI/File.html
Untuk menjalankan program ini diperlukan NetFramework 2.0 (program dibuat menggunakan VB.NET 2005) dan librari mapwindows (mapwingis active x) yang bisa didwonload di http://mapwingis.codeplex.com/releases/view/68791
 Selamat mencoba

Update bug fix untuk peta dengan multi part (peta dengan ada bagian yang bolong, atau shape yang terpisah)
http://www.4shared.com/file/sxhtMfFn/GantiBoundingBox.html?

Update lagi tanggal 15 oktober 2011, menambahkan fitur update multi map. Biasanya peta terdiri dari set peta, misal kecamatan,kabupaten, desa, jalan, sungai, dll. Satu set tersebut bisa di koreksi titik2 nya dengan acuan bounding box pada salah satu peta. Pada update ini ditambahkan fitur tersebut.
http://www.4shared.com/file/GQXkre-3/GantiBoundingBox-102.html

Sabtu, 24 September 2011

Sharp Ace (long) lokal pare

Pendahuluan
Sharp ace ini adalah senapan angin pertama ku. Dibeli via internet di pengrajin senapan angin pare kediri. Proses pembeliannya lumayan berliku. Pertama pesan adalah sharp ace ini, namun ternyata penjualnya bilang kalo ga ready stock. Oke lah saya ganti pesanan ke Sharp Innova lokal long lengkap + peredam dan telescope abal-abal. Setelah transfer dan barang dikirim, ternyata ga sampai-sampai di rumah. Di cek ternyata nyantol di kantor pos besar surabaya. Kebetulan lokasi rumah dekat dengan kantor pos, langsung aja ke kantor pos dan ternyata barang emang sudah datang. Jadi dengan berbaik hati saya ambil sendiri barang dari kantor pos.
Malamnya saya coba lihat senapan angin ku pertama ini. Ternyata grendelnya macet! Saya coba tanya-tanya kakak yang sudah punya duluan bagaimana cara mengeluarkan grendel. Katanya cukup di pencet maka grendel akan keluar. Wah berarti benar-benar masalah ini. Kepikirian untuk bawa ke tukang service, tapi karena kebetulan waktu mudik jadi sekalian aja datang ke tempat produksinya. Sampai sana ternyata emang macet. Karena merasa bersalah, penjualnya mempersilahkan saya memilih senapan angin lain sebagai pengganti. Kebetulan disitu ada sharp ace, dan saya dapat ganti itu tanpa perlu tambahan biaya karena seharusnya harga sharp ace lebih mahal. Jadilah sharp ace menjadi senapan angin ku pertama.

Review Sharp Ace Long Lokal

Bentuknya berbeda dengan sharp innova. Jika pada sharp innova box chamber nya plastik, serta bagian luar juga plastik, di sharp ace semua besi. Model triger juga beda, karena terbuat dari besi juga.
Lokasi seperti biasa "shooting range" pribadi di atap rumah. Kali ini ada 4 jenis target, yaitu kertas, ABC A3 (lingkaran hijau), koin Rp 500 (ditempelkan pada kertas), dan batu bata pada tembok tetangga (lingkaran merah). 


Untuk sharp ace lokal ini memang sedikit mebingungkan. Mungkin parameter juga lebih banyak. Dengan digunakannya telescope maka mungkin saja setting telescope atau telescope itu sendiri salah. Dibawah ini grouping pada target kertas.


 Terlihat sangat buruk groupingnya. Di foto tidak ada yang kena lingkaran hitam dan x, walau pada akhirnya dua tembakan terakhir sesi latihan mengenai lingkaran hitam. Untuk koin 500an sekali tembak sudah kena. Begitu pula target batre ABC.
Untuk power memang sharp ace lebih bagus daripada sharp innova. Dengan 4x pompa batre ABC yang tertembak seperti foto diatas. Jika sharp innova junior 7x pompa mimis hanya masuk setengah pada kayu di belakang triplek target, maka sharp ace ini mimis masuk sempurna.
Target bata di tembok tetangga memiliki jarak kira-kira 20m. Dari beberapa kali tembak (jarang saya menembak tembok tersebut, takut pantulan peluru yang membahayakan orang lain) kira-kira 80% mengenai bata yang saya target


Rabu, 14 September 2011

Mengkonfigurasi MRTG

Di sela mengurusi Adempiere ERP saya sempatkan untuk berusaha memasang MRTG pada beberapa server kantor. Penyebabnya adalah karena akhir-akhir ini sering kali ada masalah pada jaringan, dan sulit menemukan penyebabnya karena minimnya network monitoring yang ada. Sebelumnya sebenarnya sudah ada MRTG, namun sejak Admin Linux keluar, mrtg tersebut tidak aktif (dan tidak ada yang melihat).

Kemudian saya coba aktivkan lagi dengan mengaktivkan web servernya. Ternyata bisa, namun data yang masuk tidak benar. Hal ini terjadi kemungkinan karena device yang telah ganti. Jadi harus di re-configure. Karena benar-benar awam sekali, maka saya coba configure mrtg untuk server mail. Dengan bantuan berbagai situs di internet, saya coba lakukan cfgmaker



cfgmaker --global 'WorkDir: /var/www/html/mrtg' --global 'Options[_]: growright,bits' xxxxx@xxx.xxx.xxx.xxx --output emailserver.cfg



Ternyata hasilnya: 
SNMP Error:
no response received

Hal ini menandakan MRTG tidak dapat mengakses SNMP dari target. Untuk itu perlu di cek apakah service SNMP nya telah menyala pada target. Ternyata pada target servicenya mati. Untuk itu saya coba nyalakan dengan 
service snmpd start
ps ax |grep snmp
14985 ?        S      0:00 /usr/sbin/snmpd -s -l /dev/null -P /var/run/snmpd -a
netstat -pln | grep snmpd
tcp        0      0 0.0.0.0:199             0.0.0.0:*               LISTEN      14985/snmpd
udp        0      0 0.0.0.0:161             0.0.0.0:*                           14985/snmpd

Sekarang coba lagi melakukan proses cfgmaker ternyata tidak ada pesan error. Cek apakah ada file yang dihasilkannya (emailserver.cfg) 
Kemudian jalankan mrtg nya:
mrtg /etc/mrtg/emailserver.cfg
Cek di folder /var/www/html/mrtg, ternyata tidak ada file apa pun. Harusnya pada folder ini akan muncul beberapa file yang ber ekstensi png. Berarti tidak perhasil prosesnya.
Bersama pak Wahyu, kita coba mencari penyebabnya, kata pak wahyu kemungkinan itu masalah di snmp nya. Jadi MRTG tidak berhasil mendapatkan info dari SNMP target. 
Saya coba lakukan snmpwalk (tools untuk membaca info snmp)
snmpwalk -v 1 -c xxxxx xxx.xxx.xxx.xxx system
Ternyata ada hasilnya. Yang menandakan fungsi snmp pada target telah berjalan. Saya sampaikan ini ke pak Wahyu, beliau bilang ya mungkin fungsi yang dibutuhkan MRTG tidak berjalan. Kemungkinan pada setting snmpd.conf nya. Hal ini juga dapat dilihat di hasil file configurasinya, dimana file itu hanya berisi sampai baris dibawah ini, padahal pada file konfigurasi lama ada banyak baris lain.

EnableIPv6: no
WorkDir: /var/www/html/mrtg
Options[_]: growright,bits

######################################################################
# System: xxxxxxxx
# Description: xxxxxxxxxxxxx #1 SMP Thu Mar 13 17:45:54 EST 2003 i686
# Contact: MIS
# Location: Surabaya
######################################################################

 Karena saya buta masalah snmp maka saya ga bisa cari tau apa yang salah pada file setting snmp. Saya hanya coba cari di internet. Namun hasilnya masih nihil. Dikarenakan jam kantor telah usai, maka saya simpan dulu masalah ini sampai besok.
Esoknya (hari ini), saya coba lagi mencari tau apa yang salah dari configure MRTG kemarin. Kali ini saya coba fokus pada snmp. Baca-baca mengenai snmp tambah bingung 

Nah ketika mencoba cari-cari lagi tutorial install + config MRTG nemu blog ini:

Wah disitu dijelaskan mengenai setting pada snmpd.conf. Diperlukan penambahan item seperti dibawah ini:
com2sec public default public
group public v1 public
group public v2c public
group public usm public
view all included .1
access public “” any noauth exact all none none

So saya coba tambah itu. Kemudian restart service snmpd. 
Jalankan cfgmaker lagi. Cek file hasil config, hasil lengkap tidak seperti sebelumnya. 
Saya coba jalankan mrtg nya, ternyata berhasil!

Jangan lupa jalankan indexmaker untuk menggenarete index.hml
indexmaker --output=/var/www/html/mrtg/index.html /etc/mrtg/mrtg.cfg




Rabu, 07 September 2011

Membongkar Sharp Ace lokal (bagian belakang)

Kelanjutan dari posting: http://shindu-b-raditya.blogspot.com/2011/09/bongkar-sharp-ace-lokal.html

Bagian Belakang
Untuk membongkar bagian belakang maka:
2. Pertama adalah buka tutup tabung pompa bagian belakang (dilingkari merah). Ada dua mur kecil. Pada bagian ini mungkin penutup tabung pompa di ganjal dengan ring agar menekan tabung angin.

3. Buka mur pada bagian triger. Pada bagian triger ada 2 mur, salah beda ukuran, buka mur yang ukurannya paling besar (panah biru). Pada mur ini terdapat ring (lingkaran merah).  Ketika terbuka hati-hati karena ada per yang menahan part L (lingkaran hijau). Keluarkan bagian triger dari tabung pompa dengan mendorong pelan.



4b. Bagian bold adalah optional, Anda bisa ikut membuka bagian ini atau tidak. Untuk membuka bagian bold, lepaskan dulu penahan pengunci bold (lingkaran hijau) dengan membuka mur. Kemudian buka mur penahan (warna merah). Lokasi mur ini ada dalam, jadi untuk mencopotnya harus lewat tabung pompa. Lokasinya diatas bagian triger. Setelah terbuka, maka amankan per (lingkaran biru). Bagian bold memiliki satu o-ring karet yang berguna untuk menahan angin yang ditembakkan tidak keluar ke belakang blod.




5. Setelah bagian triger terlepas, kita mulai lepas bagian tabung angin. Bagian ini memiliki satu mur besar (lingkaran warna hijau) yang menancap di tabung pompa. Mur ini pula yang digunakan untuk mengikat popor. Untuk membukanya gunakan kunci pas (ukuran 12 rasanya). Setelah mur terbuka, dorong tabung angin dari depan. Jika bagian depan (lengan pompa) tidak di copot maka bisa digunakan untuk mendorong tabung pompa ke belakang dengan cara mempompa 1x. Jika bagian depan telah dilepas maka bisa mendorong dengan alat lain seperti pembersih laras.
Bagian tabung pompa memiliki beberapa part. Pertama adalah tabung pompa itu sendiri (lingkaran biru).  Bagian ini digunakan untuk menyimpan dan memanpatkan angin. Didalamnya terdapat karet penyumbat dan per nya (lingkaran kuning). Biasanya ini juga merupakan tempat aus. Ketika karet telah mati (keras) maka angin bisa keluar dari tabung angin. Karet ini di tahan oleh sebuah per yang diganjal oleh o-ring karet dan o-ring kuningan.
Untuk sementara saya belum bisa membuka bagian lain dari tabung angin. Rasanya untuk membuka bagian lain itu (bagian yang berwarna perak) sama seperti bagian tabung angin, hanya lebih kuat menguncinya dari pada di tabung angin. 

Bongkar Sharp Ace lokal

Berikut ini saya coba jabarkan langkah membongkar senapan angin Sharp Ace (lokal)

1. Copot popor dengan membuka satu-satunya baut besar di depan triger.

Ada dua pilihan dalam membongkar, yaitu membongkar bagian depan (pendorong angin) dan bagian belakang/tabung angin.

Bagian Depan
2. Buka pompa dulu sehingga terliahat hampri semua bagian pendorong angin.
3. Lepaskan pen penahan 2 buah.  Pen salah satunya menahan ujung lengan pompa. Sedangkan yang lain menahan penutup tabung pompa. Untuk melepasnya gunakan paku atau sesuatu seukuran lobang pen, kemudian di palu sampai pen keluar.


4. Setelah 2 pen lepas maka lepas pen yang mengikat lengan pompa dengan piston pompa. Karena lokasi piston pompa ada di dalam tabung pompa, maka untuk mencopot pen ini, gerakkan dulu pangkal piston (yang di lingkari merah) menuju lobang pada tabung pompa (lingkaran biru). Baru dari situ pen dapat di pukul dengan paku sampai keluar.


5. Setelah pen lepas, maka lengan pompa dan piston pompa akan lepas. Bagian piston pompa yang mungkin aus adalah bagian yang dilingkari biru. Bagian itu berupa karet yang berfungsi mendorong angin ke tabung angin. Jika bagian itu aus, bisa jadi ketika mempompa ga semua angin masuk ke tabung angin.






Sharp Innova Junior

Senapan angin (SenAng) ini model mini dari Sharp Innova. Dengan panjang laras kurang sekitar 30cm panjang keseluruhannya kurang lebih 40cm. Model memang benar-benar seperti sharp innova (lokal), namun beda pada kunci triger yang seperti model Sharp Ace.
Kekuatannya memang dibawah model seniornya. Namun untuk jarak 10m cukup ampuh dan akurat, serta mematikan bagi tikus (jika terkena pada area yang mematikan).

Mimis/Pellet dari KP series yang cocok untuk senang ini adalah model KP-10. Saya pernah coba KP-03 ternyata sering macet. Begitu pula ketika mencoba mimis jenis lain yang agak besar. Jadi kesimpulannya untuk mimis cari yang kecil seperti KP-10.

KP-10
Lokasi "latihan" ada di atap rumah. Ya gimana lagi, dengan kondisi lingkungan padat pasti tidak ada tempat yang cukup untuk testing senang. Jarak testing sekitar 10m. Target berupa kertas target hasil print.

Dikarenakan tidak menggunakan scope maka cukup sulit juga melihat target pada jarak 10m. 

Tampilan dari tempat bidik
Hasil testing. Grouping jelek karena banyak faktor, termasuk faktor "goyang dombret"
Mimis tak berbentuk
Dengan harga kurang dari 250 ribu maka tidak rugi lah membeli senang ini. Cocok untuk berburu tikus di area rumah.

Rabu, 17 Agustus 2011

Max Payne vs Max Payne



2008 lalu, dirilis film dengan judul Max Payne. Sebagai salah satu penggemar game yang sama (Max Payne) rasa penasaran saya untuk menontonnya cukup besar. Namun ternyata saya baru bisa menonton film itu pada tahun 2011 hehehe. Ga apa lah, lebih baik terlambat dari pada tidak sama sekali. Nah saya coba review film ini. Dari internet, ternyata banyak orang yang kecewa dengan film ini karena sangat banyak perbedaan dengan gamenya. Emang bener, film ini berbeda dengan gamenya dalam segi cerita, walau dasarnya sama, yaitu kisah polisi yang balas dendam.
Setelah nonton film max payne saya coba memainkan game ini lagi (max payne pertama). Hmm ternyata film Max Payne adalah gabungan dari max payne 1 dan 2, karena tokoh mona sax muncul banyak pada max payne 2. Secara cerita, film max pane cukup menarik, jika dipaksakan mengikuti persis cerita game malah menurut saya jadi tidak menarik. Terlalu Rambo banget. Nanti sepanjang film isinya hanya tembak-tembakan saja.
Selain itu karakter Max Payne lebih bagus terlihat di film. Pada game saya sedikit bingung dengan karakternya melalui tampilan komik. Terkesan cengengesan. Beda dengan di film, dimana karakternya terlihat sebagai polisi yang benar-benar marah dan ingin balas dendam.
Jadi akhir kata...film Max Payne cukup bagus lah :D

Rabu, 27 Juli 2011

[Update] Kenalan dengan Adempiere 360 LTS

Sudah lebih dari satu tahun kantor pake adempiere 342. Rasanya sudah saatnyau untuk update. Versi stabil terakhir adalah 360 (Laura). Ada beberapa fitur-fitur baru:
(diambil dari: http://www.adempiere.com/Release_360LTS)

Major Enhancements

  • Improved Manufacturing libero-MFG
  • Improve the visual layout of Info and InfoProduct task pane
  • Stabilization of replication
  • Translation
    • Improved German translations.
    • Swedish translations.
    • Improve Thai Language Pack
    • Translation statistics
  • Improve ADempiere Web Applications
  • Add more details to Organization
  • Documentation update
    • Better looking Help windows.
  • Replication: opening connections
  • Move Adempiere to Java 6
  • Production
    • BOM - Back to Product Window
    • Added new tab "Product Costs" to "Product" window
    • Price List Improvement:allow importing with ID's for PriceList and Version
  • Implementation of zoom to detail tab
  • Calculate Measure based on the script to PA
  • Dunning Stabilization
  • Reporting
    • Improved pdf rendering
    • Report - Storage per Product Improved
    • Added new Report Parameter: Organization
  • ChartOfAccount for Vietnam
  • Improved prcess on Create PO from RfQ
  • Improved borwser IE support
  • Zoom to child tab - Improved performance
  • Improved Credit Limit check (when Invoice BP is <> from Ship BP)
  • Adding weight to base type for tax
  • Fixed Assets Application Dictionary stabilization
  • InfoPanel performance enhancement
  • turn off alternate color row striping to improve rendering performance
  • use database paging and sorting for high volume table

Major Fixes

  • CreateFrom not calling info on zk
  • Initial Client Setup - Accounting schema - empty line
  • stop execution of event when save failed
  • Wrong name and description for DiscontinuedBy field
  • Fixed SQL script to add in Callouts to OrderLine Resource Assignment - thanks to iCyLand, Bangkok's help.
  • Fixed Tax Errors: a) Rate Parent window not working b) Handle the case when no Default Tax Rate is specified.
  • Error in context when Key field is found in different tabs.
  • Error in context when IsActive field is found in different
  • Guarantee backward compatibility with previous approach
  • Added method to get tab context variables without defaulting to window or login variable (required safety measure)
  • Some refactorings to improve reading and performance
  • Reactivate hidden tabs - and move back BOM & Formula window to manufacturing menu
  • Fix Perpetual Inventory window
  • Jasper Report in Process problem
  • Accounting Fact Summary
  • Wrong behavior of non-automatic commit VOSS Com
  • Model Validation Engine duplicate listeners
  • Database issues with Missing foreign keys and Tables without primary key

Prerequisites

  • Java 1.6
  • Oracle >= 10G or PostgresQL >= 8.2
  • To develop and integrate jasper reports use version 3.7.3

Setelah berhasil mendownload source code via svn, kemudian saya coba membukanya di eclipse. Tapi ternyata ada bebarapa error. Tapi saya bisa perbaiki karena baru ingat kalau ademepire 360 pake java 6. Setelah di ganti ke java 6 ternyata masih ada satu file yang error!
Tampilan error adempire 360 di eclipse
Error nya ada pada class CCachedRowSet, "Name clash: The method setTypeMap...has the same erasure as set TypeMap(Map)..."
Saya coba cari di internet, hanya beberapa yang menjelaskan. Salah satunya di situs compiere, dibilang bahwa itu karena masalah java version. Apa mungkin karena versi java saya yang salah? Saya cek ternyata memang benar java 6 (1.6) 
Java 6 !
Tidak mau ambil pusing, saya coba download java 6 terbaru (java 1.6.0-26) namun hasilnya tetap sama. Hmm apa mungkin ada cache yang nyantol? (Seperti kata mas wahyu). Maka saya coba rename java 5 sehingga tidak bisa diakses (jadi di komputer hanya ada java 6), ternyata tetap sama saja! Hmm apa ya?
Kemudian saya coba build dengan RUN_Build.sh, ternyata sukses! Berarti bukan masalah java yang terinstall.
Diskusi sama mas wahyu lagi, disarankan coba dibuka pake netbean. Hasilnya: sukses tanpa error seperti yang ada di eclipse! Berarti sekarang masalah ada pada eclipse! Saya putuskan download versi terakhir dari eclipse (3.7)
Di eclipse yang baru saya coba buat workspace baru dan import project Adempiere lagi. Hasilnya ternyata tetap error. Wah tambah pusing saya, apa kira-kira penyebabnya.
Iseng-iseng saya coba buat class baru pada project baru di eclipse yang mirip dengan class CCachedRowSet

public class test extends CachedRowSetImpl  implements CachedRowSet  {
        private static final long serialVersionUID = 1L;
        private test() throws SQLException
{
super ();
setSyncProvider("com.sun.rowset.providers.RIOptimisticProvider");
} // CCachedRowSet
}
Nah ternyata tidak ada pesan error! Berarti bukan karena masalah eclipsenya. Tapi masalah di project Adempeire. Akhirnya saya coba copy file-file setting project dari tempat mas Wahyu ke tempat saya. Sayang sekali tidak berhasil juga. Tetap ada error! Kemudian saya masukkan test.java itu ke dalam project Adempiere. Ternyata berhasil!! Wah kayaknya harus dipancing dulu baru bisa. Berarti hipotesa pak wahyu bener tuh. Ini pasti gara cache. Jadi masih ambil java 1.5 pada librarynya.

Tampilan setelah test.java di masukkan di project Adempiere. Error pada CCachedRowSet tidak muncul lagi!!



UPDATE

Ternyata masalah "Name clash: The method setTypeMap...has the same erasure as set TypeMap(Map)..." tidak hanya menyerang Adempire 360LTS. Setelah 360 LTS (dengan java 6 nya) sembuh, ternyata Adempiere 342-nya tertular juga. Padahal dengan java 5. Saya coba dengan cara diatas tidak bisa. Hanya saja ketika saya buat project baru dengan java 5, dan membuat class yang diturunkan dari CachedRowSetImpl dan implemen CachedRowSet hasilnya tidak ada error. Trus class itu saya copy ke Adepiere. Jadi error! Hmm, perbedaan project Adempiere dan project Test adalah pada library nya. Jika di Test hanya menggunakan default JRE, maka di Adempire menggunakan eksternal JAR juga. Maka semua eksternal JAR tersebut saya coba lihat satu-satu. Saya curiga ada class dari JRE standart yang ter-replace oleh eksternal JAR. Dan kecurigaan saya benar class javax.sql.RowSet ternyata di override oleh jbossall-client.jar

Class javax.sql.RowSet lain yang ada pada jbossall-client.jar
Nah untuk solusinya, tingal mensetting build path nya aja dan mengganti urutan library yang dipakai. 

Posisi urutan library. Terlihat JRE terletak dibawah jboss-j2ee. Maka menyebabkan RowSet yang diambil adalah dari jboss-j2ee.jar
Tampilan setelah urutan diganti. Tidak ada error lagi.

Selasa, 26 Juli 2011

Perempatan Jembatan Ngagel...

Q: Kenapa saya di klakson ketika di lampu merah perempatan ngagel (Jl Ngagel dan Jl Bung Tomo) padahal lampu masih merah?





A: Karena merah hanya untuk mengarah ke jalan Dinoyo, sedangkan ke arah Darmo Kali hijau. Nah Pada titik "B" ada TL lagi, jadi bagi yang ingin ke arah jalan Dinoyo selama kondisi diatas jembatan kosong, mereka bisa langsung menerabas TL di titik "A" untuk berhenti di TL "B". 

Walikota mustajab or ketabang kali

Hari ini muncul label baru untuk blog ini, yaitu "Oalah". Apa itu? Label Oalah adalah kumpulan tulisan pertanyaan dan jawaban. Jadi dalam hidup ini kadang ada suatu pertanyaan (Q) dalam hati yang jawabannya (A) baru tau setelah beberapa lama, bahkan bisa beberapa tahun kemudian. Untuk tulisan pertama, silahkan teruskan dibawah ini:


Q: Untuk menuju hotel Weta dari DPRD Kota surabaya kenapa banyak orang yang suka lewat jalan Ketabang Kali daripada jalan Walikota Mustajab?

 atau 

A: Karena di jalan Walikota Mustajab sering macet. Saya biasa lewat daerah situ pada malam hari (setelah pulang dari kampus), jadi saya sering lewat dalam kondisi jalanan lancar (kadang malah kosong). Makanya saya bertanya-tanya apa untungnya lewat jalan ketabang kali yang sempit dan lebih jauh. Jika lewat pada siang hari maka akan anda akan terjebak macet nya karena mobil-mobil yang parkir sepanjang jalan itu. Nah untuk jalan ketabang kali sebenarnya juga tidak bebas macet, malah bisa tambah macet kalau hari libur.

Selasa, 12 Juli 2011

Masalah remote desktop ubuntu

Setelah migrasi beberapa cabang dengan ubuntu, muncul masalah ketika melakukan remote dari pusat. Setelah memasukkan password, tidak juga masuk ke dalam pc client. Ternyata pada sisi client muncul dialog meminta password. Setelah di isi password baru bisa terbuka layar remotenya.

Tampilan di sisi client. Meminta password keyring

Ketika password keyring salah, maka akan muncul pesan autentifikasi salah.

Namun masalah tersebut tidak berlaku di semua client. Saya bingung, yang beda di mananya. Apakah ada kesalahan ketika menginstall? Nah baru hari ini saya kebetulan lagi cari informasi dari google masalah setting remote desktop, dan tidak sengaja menemukan thread yang membahas masalah password keyring. http://forums.opensuse.org/english/get-technical-help-here/applications/405832-gnome-remote-desktop-vino-asking-password.html Sebuah thread tahun 2009! Dari situ baru tau...ternyata penyebabnya adalah adanya opsi Auto Login pada beberapa pc yang saya install. Ketika pc di install dengan opsi auto login maka otomatis fungsi keyring akan teraktivasi.(fungsi menyimpan data banyak user/password menjadi satu password master) 
Memang saat menseting password remote desktop muncul dialog meminta password untuk keyring. Pada saat itu saya isi sama dengan password user. 
Jadi solusi untuk masalah ini ada tiga:

1. Mendisable auto login, dengan konsekuensi user harus masukkan password ketika login.
Untuk buka: System/Administration/Login Screen




















2. Mengosongkan password keyring. Dengan konsekuensi data password yang disimpan dapat dibaca orang lain.
Caranya: buka System/Preferences/Password and Encryption Keys. Kemudian pilih password untuk vino vnc.

3. Mengosongkan password remote desktop, dengan konsekuensi untuk meremote tidak perlu password.
Caranya: buka System/Preferences/Remote Desktop. Kemudian kosongkan passwordnya.

Nah silahkan pilih pakai cara yang mana.


Senin, 11 Juli 2011

Bug open office 3.2 versi Ubuntu 10.10

Ada bug yang lucu pada open Office 3.2 untuk Ubuntu 10.10
Tepatnya bug ini ada pada aplikasi calc. Muncul ketika anda ingin men-seting row/column to repeat. Column/row to repeat digunakan untuk menampilkan row/column pada setiap halaman print out.

Saat pertama coba ketika memasukkan row/column to repeat maka akan muncul pesan "Invalid sheet reference". Saya coba-coba tetap saja keluar error ga jelas itu.

Kemudian saya cari informasi dari google, ketemulah: http://user.services.openoffice.org/en/forum/viewtopic.php?f=9&t=18929
Disitu diberikan cara/trik untuk masalah ini. Dan caranya ga ada hubungannya sama sekali (buat user yg awam). Disebutkan caranya:
1. Select Tools/Options... from the menu
2. In the left tree navigate to OpenOffice.org Calc/Formula
3. Click on the Arrow right to "Calc A1" to see the list of possible grammars
and select "Calc A1" explicitely from the dropdown list (even if it was already
selected)
4. Press "OK" to save

Nah sekarang edit lagi dipilihan row to repeat. Maka pesan ga jelas tadi akan hilang.


Gambar pesan error diatas saya ambil dari forum open office. Disitu terlihat versi 3.1 padahal open office yang saya pakai versi 3.2. Berarti belum di betulin tuh ....



Jumat, 10 Juni 2011

MySQL lama waktu "stop slave"

Perusahaan membuka beberapa cabang baru. Maka diperlukan server baru untuk cabang beru tersebut. Seperti biasa install Adempeire server dan JasperServer termasuk replikasi mysqlnya. Namun ternyata salah satu cabang bermasalah dengan replikasi mysql. Waktu mau jalankan preintah stop slave, prosesnya terasa hang. Sangat lama tidak ada respon. Awalnya saya pikir hang, tapi diakhir-akhir waktu ternyata tidak hang, hanya sangat lama prosesnya. Memakan waktu 41 menit. Selain itu, proses stop service mySql pun memakan waktu yang lama.

Lama saya memikirkan apa yang terjadi di server itu? Padahal di server lain tidak masalah. Beberapa kali pun saya install ulang jasperserver beserta mysql nya. Tetapi tetap saja. Dugaan saya waktu itu adalah masalah koneksi. Saya coba ping dari dua arah (master dan slave) ternyata ok. (Dan ternyata ping tidak mewakili apakah master-slave bisa komunikasi). Saya coba melakukan trial & error untuk mencari penyebab masalah ini. Pertama saya istall ulang sekali lagi jaspernya. Saya coba lakukan start-stop server, ternyata tetap tidak mau stop. Logikanya dengan installan baru maka settingannya baru juga, yang lama adalah my.cnf nya. Maka saya buang my.cnf editan saya. Dan ternyata, start-stop sukses. Jadi penyebab ada di my.cnf. Sekarang saya trial error settingan di my.cnf. Dari banyak line di my.cnf saya sisakan line berikut:

# The following options will be passed to all MySQL clients
[client]
#password       = your_password
port            = 3306
socket          = /home/jasperserver-2.1/mysql/tmp/mysql.sock

# Here follows entries for some specific programs

# The MySQL server
[mysqld]
port            = 3306
socket          = /home/jasperserver-2.1/mysql/tmp/mysql.sock
#socket          =
skip-locking
key_buffer = 256M
max_allowed_packet = 1M
table_cache = 256
sort_buffer_size = 1M
read_buffer_size = 1M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size= 16M
# Try number of CPU's*2 for thread_concurrency
#thread_concurrency = 8
lower_case_table_names = 1

saya coba start-stop mysql, ternyata ok. Lalu saya tambah my.cnf dengan line:
server-id       = 16

Hasilnya: proses start-stop gagal! Ternyata line ini penyebabnya. Tapi masih tidak mengerti kenapa dengan menambah line itu langsung proses stop mysql server gagal? Line tersebut adalah proses pemberian id terhadap server mysql jika akan dijalankan proses replikasi. Jadi ketika server-id diset, maka server akan melakukan koneksi ke master. Soalnya ketika saya saya buka status slavenya:

mysql> show slave status \G;
*************************** 1. row ***************************
             Slave_IO_State: Connecting to master
                Master_Host: XXXXX
                Master_User: XXXXX
                Master_Port: 0000
              Connect_Retry: 60
            Master_Log_File: mysql-bin.000000
        Read_Master_Log_Pos: 4
             Relay_Log_File: xxxxxxxxxxxxxx
              Relay_Log_Pos: 98
      Relay_Master_Log_File: mysql-bin.000000
           Slave_IO_Running: No
          Slave_SQL_Running: Yes

dan memang ketika di buka di masternya, ada percobaan koneksi dari slave ke master. Namun dalam beberapa detik langsung putus. Berarti masalahnya sebenarnya adalah koneksinya. Seperti tertolak.
Selain itu, pada settingan my.cnf masih blm ada tulisan bahwa masternya menuju ke mana. Kenapa mysql slave sudah memiliki data masternya? Ternyata mysql membaca dari  file  master.info and relay-log.info yang ada di direktory mysql/data. Jadi kalau mau ganti master, sebaiknya hapus terlebih dahulu master.info dan relay-log.info. 

[nnnn@xxxxxxx data]# ls *.info
master.info  relay-log.info

Nah sekarang kembali ke masalahnya, kenapa tidak mau konek ke master? Akhirnya saya wadhul ke rekan saya, pak Wahyu Pratama. Dia juga bingung, kenapa koq ga mau konek. Kemudian menyarankan cek apakah dari slave ke master bisa buka koneksi di port yang digunakan untuk replikasi. 

[nnnnn@xxxxx bin]# telnet xxx.xxx.xxx.xxx nnnn
Trying xxx.xxx.xxx.xxx...

Ternyata tidak mau konek setelah lama menunggu. Dicoba melakukan telnet pada server lain yang jelas-jelas bisa dilakukan telnet, dan bisa. Kesimpulannya bukan seperti dugaan awal, bahwa pihak penyedia line antar cabang yang melakukan penutupan port, karena melakukan koneksi ke cabang lain bisa. Berarti kemungkinan masalah koneksi dari slave-master itu sendiri. Tetapi dicoba ping bisa!! Pak Wahyu  bilang, ping itu pake ICMP, sarannya coba di SSH dari slave ke master. Ternyata tidak bisa!! Akhirnya saya coba cek di master...dan ternyata memang belum ada setting routing di master menuju slave. Setelah ditambah setting routing, ternyata semua beres 
Jadi semua gara PING