Weather Reports



The Author

"Born in Balikpapan, grew in Makassar, wandered in Bandung, and finally, stranded in this cosmopolitan city, Jakarta"

- A3 July 2008 -

Google Search

You can search the web faster from here.


Recent Posts

These are the last 5 posts of mine. You can read it by clicking the links below.

  • Kepingin Laptop
  • Survey Padang, ...
  • Kepala BPPT Said ...
  • Perdido Sin Ti
  • Cara Mempercepat ...
  • maintenance links

    My Shoutbox

    Shoutmix !!



    Yahoo Messenger

    Powered By

    Locations of visitors to this page

    Page Rank blog-indonesia.com

    June 28, 2006

    Digitasi 95% beres …

    Filed under: Thought and Opinion, IT

    Wednesday, June 28th 2006 

    Well … what could i say about today ? I think today was so-so for me.
    Yap, hari ini nggak buruk tapi jg nggak terlalu baik. Kabar bagusnya, program digitasi gw sudah hampir rampung, yah sekitar 95 % gw pikir. Sistem input dan load data untuk FKlim dan CH serta option-option yg lain sudah rampung. Berita jeleknya datang dr 5% program yg belum rampung. Mungkin ini bagian program yg paling rumit, sistem input dan load untuk data sinoptik.

    Setelah ditunggu2, informasi untuk quality control data sinoptik datang juga sore ini. Wow … walaupun gw sudah duga kalo sistem ini bakal rumit, kenyataannya jauh lebih rumit dari bayangan gw. Tadinya gw kira kalo jumlah kolom per tabel spreadsheetnya pasti lebih dr 30. Ternyata bukan cuman lebih dr 30, tapi lebih dr 50 kolom !! emoticon  Hehehe … bayangin bikin spreadsheet plus tabel database untuk 50 kolom data emoticon , untuk bikinnya aja sudah males gw, apalagi untuk algoritma perhitungan dan quality controlnya emoticon.

    O ya, satu lagi masalah program gw yg sebenarnya sepele tapi lumayan vital, perbedaan antara titik "." dan koma "," sebagai pemisah antar data maupun sebagai tanda desimal. Sebenarnya dulunya gw sudah pernah mikirin ini, cuman entah kenapa baru sekarang ingatnya. Sebenarnya perkiraan gw program digitasi bakal membedakan sendiri kedua tanda ini. Memang, kalo regional setting gw ubah ke indonesia, tanda koma akan dianggap sebagai pemisah desimal, jadi kalo dimasukin titik, program bakal nolak. Nah masalahnya, kalo reg setting diganti ke english. Tanda titik memang akan dianggap sebagai pemisah desimal, cuman .. kalo ada tanda koma, program nggak akan nolak. Celakanya, flooding bar jg ikut muncul walaupun ada tanda koma. Ini PR utama yg harus gw pecahkan dalam 4 hari ke depan.

    Yah, walaupun masalah kembali muncul, paling nggak gw sudah nyelesain option2 penting untuk program ini, mulai dari autosave, flooding on/off, statistik on/off, database browser dll, cuman dalam waktu satu hari. Rintangan paling besar untuk masalah option ini mungkin ada di bagian autosave. Lucu jg, gw menghabiskan waktu sekitar 5 jam semalam untuk membereskan masalah yg pemecahannya sebenarnya sangat simpel. Ini contoh script untuk sistem autosave :

    Private Sub Timer1_Timer()
        If AutoSave = True Then
            If Time = SaveTime Then
                mnuFileSimpan_Click
                SaveTime = Time + Interval
            End If
        End If
    End Sub

    Prinsipnya gini :

    Program akan meload nilai dari database option yg berisi informasi tentang interval atau selang waktu terjadinya autosave. Nilai ini kemudian akan disimpan dalam variabel bernama Interval (lihat script). Sebelumnya, program jg meload data dr database option yg berisi informasi pengaktifan autosave dalam bentuk data boolean, dengan nama variabel AutoSave. Kalo data ini bernilai true maka autosave diaktifkan, demikian pula sebaliknya (lihat lg script, ada kan ?). Untuk menentukan waktu autosavenya cukup simpel, tinggal tambahkan variabel Interval dan Time (waktu saat ini), maka waktu untuk autosave akan diperoleh. Jadi prinsipnya, kalo waktu timer sekarang sama dengan waktu autosave (SaveTime), maka program akan menjalankan autosave. Nah disini misterinya dimulai … emoticon

    Awalnya percobaan berhasil (itupun dah nunggu tiap menit untuk ngeliat autosavenya jalan atau nggak). Lalu mulai terjadi hal2 aneh. Program terkadang mau autosave, tapi kadang jg nggak. Padahal SaveTime dan Timenya udah sama, apa yg terjadi ? Gw debug berkali2, hasilnya jg tetap bikin dahi berkerut. Kalo gw debug, autosave jalan, tp kalo gw biarin aja programnya jalan sendiri, autosave cuman jalan sekali, habis itu nggak jalan lagi. Setelah berjam2 nyobain dan sia2 hasilnya, gw nyerah. Mungkin besoknya bisa gw pecahkan masalahnya. Dugaan gw sementara : timer program dan waktu komputer nggak sinkron. Jadi mungkin kalo interval timernya dikecilin lg, autosavenya bisa normal. Percobaan terakhir, interval gw set ke 1 ms (paling kecil), hasilnya sia-sia. Habis itu vb gw tutup, terus gw tinggalin ngegame … stress gw emoticon.

    Pagi ini, setelah pikiran sudah rada jernih, gw mulai pikirin lg masalah autosave semalam. Entah kenapa tiba2 muncul ide :

    "Autosavenya kan harusnya jalan kalo Time sama dengan SaveTime. Kalo emang nggak berhasil, gimana kalo autosavenya tetap jalan kalo Time sudah lebih besar dari SaveTime."

    Gw pikir2, benar jg ya. Toh kalo operatornya pake tanda lebih besar, itu nggak akan melanggar logika program gw, jadi kapanpun Time sudah lebih besar dari waktu autosave, maka autosave akan jalan, nggak peduli timer program dan waktu program nggak singkron.

    Ehehehe … ternyata pemecahannya cuman ngasih tanda ">" di sebelah  tanda "=" dan gw harus menghabiskan waktu 5 jam semalam buat itu emoticon.

    Yah .. itulah asiknya programming, terkadang bisa menipu dan penuh teka-teki emoticon

    June 22, 2006

    CH Load Process, Accomplished !!!

    Filed under: IT

    Thursday, June 22th 2006

    Finally, sistem Load data CH dr database Access ke Spreadsheet beres emoticon!!!  Makan waktu sekitar 3 jam buat gw untuk ngutak2 program sebelum jalan dengan benar. Dan emang proses load sedikit lebih rumit dari proses save. Untungnya, pengalaman sistem Load dr FKlim benar2 membantu gw supaya nggak bikin kesalahan yang sama sampai dua kali.

    Walaupun begitu, program sempat macet beberapa kali. Penyebabnya, sistem load CH beda dengan yg lain. Kalo FKlim misalnya, tiap baris dianalogikan sebagai record, sedangkan Kolom sebagai Field. Nah, kalo CH, satu kolom dijadikan satu record, dan baris dijadikan fieldnya. Jadi prosesnya kebalik dengan FKlim emoticon. Yg bikin bingung adalah loopingnya. Kalo di FKlim, gw nggak usah susah nge-loop baris, karena sudah otomatis berdasarkan record di database, sedangkan kalo di Ch gw harus ngeloop manual tiap baris dan kolom, supaya isi field yg dimaksud bisa muncul di spreadsheet. Untungnya, field untuk CH lumayan teratur, jd gw bisa nge-loop dgn mudah berdasarkan indeksnya.

    Sub LoadDataCH(NamaGrid As VSFlexGrid, NoStasiun As String, Tahun As String)
        Dim QueryData As String
        Dim Baris As Integer, Kolom As Integer
       
        With NamaGrid
            QueryData = "SELECT * from CHHarian WHERE NoSta = ‘" & _
                    NoStasiun & "’ AND Year = " & Tahun & " ORDER by Month"
            RSData.Open QueryData, DBData
            RSData.MoveFirst
            Kolom = 1
            Do While RSData.EOF True
                For Baris = 1 To 31
                    SystemLoadDB.AfterLoadCH NamaGrid, Baris + 3, Baris, Kolom, 300, 0
                Next Baris
                If Kolom 12 Then
                    Kolom = Kolom + 1
                End If
            RSData.MoveNext
            Loop
        End With
    End Sub

    Langkah selanjutnya adalah, (lagi-lagi ..) statistik dan perhitungan data seperti pada proses entri data. Ini jg sempat bikin "macet" jg tadinya, soalnya, seperti blog gw sebelumnya, proses perhitungan statistik CH ada di level form (private), bukan modul, jd nggak bisa dipanggil begitu saja dr modul lain. Sempat takut jg tadinya, tapi akhirnya gw nekat jg mindahin prosedurnya ke modul standar supaya bisa dipanggil dr modul lain. Soalnya kalo nggak gitu, prosesnya bakalan ngadat dan nggak akan selesai2.

    Tp pengalaman lg2 ada gunanya, setelah gw pindahin prosedurnya, gw cobain satu demi satu, nggak sekaligus. Jadi kalo ada kesalahan, gw tau kesalahan itu ada di mana. And finally, the process went smoothly :) .

    Sub AfterLoadCH(NamaGrid As VSFlexGrid, IndeksField As Integer, Baris As Integer, Kolom As Integer, NMax As Integer, NMin As Integer)
        Dim JumlahBaris As Integer
        With NamaGrid
            If (RSData.Fields(IndeksField) 99999) Then
                .TextMatrix(Baris, Kolom) = RSData.Fields(IndeksField)
                If (RSData.Fields(IndeksField) 88888) Then
                    .Cell(flexcpFloodPercent, Baris, Kolom) = 100 * (.TextMatrix(Baris, Kolom) - NMin) / (NMax - NMin)
                End If
            Else
                .TextMatrix(Baris, Kolom) = Empty
            End If
            SystemProcess.RangeData NamaGrid, Kolom, RSData.Fields("Year"), JumlahBaris
            SystemData2.CHStatistic NamaGrid, Kolom, JumlahBaris
        End With
    End Sub

    Hehehe … baru kali ini gw ngerjain proses save dan load plus formatting cuman dalam waktu 6 Jam. Nggak sia-sia gw pulang kemarin. Sekarang tinggal fungsi-fungsi kecil lainnya. InsyaAllah malam ini beres :) .

    CH Save Process, Accomplished !

    Filed under: IT

    Thursday, June 22th 2006

    Pheeww …. akhirnya sistem Entri Data dari spreadsheet Curah Hujan ke DB Access rampung juga. Beda dengan pembuatan sistem penyimpanan data FKlim yg makan waktu semalaman, sistem penyimpanan CH bisa gw selesaikan cuman dalam waktu 1 Jam (Rekor tercepat sampe saat ini .. hehehe emoticon).

    Padahal sistemnya rada beda dengan FKlim. Keuntungan yg gw dapat dr database CH adalah tanggal yg dipisah menjadi field2 tersendiri, jd gw bisa jadikan sebagai Array di VB-nya. Kalo udah pake array gampang, variabel yg tadi jumlahnya sampe 30 bisa dijadikan dalam satu variabel array saja. Karena jadi satu variabel, otomatis statement di prosedur jg lebih pendek dan gampang dibaca.

    Sub SaveCH(NamaGrid As VSFlexGrid, NamaTabel As String)
        Dim NoSta As String, Stasiun As String, Tahun As Integer
        Dim Kolom As Integer, Baris As Integer
        Dim R(31) As String, JumlahBaris As Integer, Query As String
       
        With NamaGrid
            NoSta = Mid(FormCH.CombStasiun.Text, 2, 6)
            Stasiun = Mid(FormCH.CombStasiun.Text, 11)
            Tahun = FormCH.CombThn.Text
           
            For Kolom = 1 To 12
                SystemProcess.RangeData NamaGrid, Kolom, Tahun, JumlahBaris
                For Baris = 1 To JumlahBaris
                    SystemEntriDB.ValueCheck NamaGrid, Baris, Kolom, R(Baris - 1)
                Next Baris
               
                Query = "INSERT INTO " & NamaTabel & " ([NoSta],[Sta],[Year],[Month],[R1],[R2],[R3],[R4]," & _
                        "[R5],[R6],[R7],[R8],[R9],[R10],[R11],[R12],[R13],[R14],[R15],[R16],[R17],[R18]," & _
                        "[R19],[R20],[R21],[R22],[R23],[R24],[R25],[R26],[R27],[R28],[R29],[R30],[R31]) " & _
                        "VALUES (’" & NoSta & "’,'" & Stasiun & "’,'" & Tahun & "’,'" & Kolom & "’," & _
                        R(0) & "," & R(1) & "," & R(2) & "," & R(3) & "," & R(4) & "," & R(5) & "," & _
                        R(6) & "," & R(7) & "," & R(8) & "," & R(9) & "," & R(10) & "," & R(11) & "," & _
                        R(12) & "," & R(13) & "," & R(14) & "," & R(15) & "," & R(16) & "," & R(17) & "," & _
                        R(18) & "," & R(19) & "," & R(20) & "," & R(21) & "," & R(22) & "," & R(23) & "," & _
                        R(24) & "," & R(25) & "," & R(26) & "," & R(27) & "," & R(28) & "," & R(29) & "," & _
                        R(30) & ")"
                RSData.Open Query, DBData
            Next Kolom
        End With
    End Sub

    Mungkin ada masalah waktu penyimpanan data FKlim ada hikmahnya jg. Sekarang gw jadi ngerti kalo database nggak bisa sembarangan dimasukin data yang tipenya beda dengan fieldnya, jg gunanya tanda petik waktu nyimpan atau ngeload data dari database.

    Cuman kalo gw liat dr query gw yg kepanjangan, kayaknya sia2 gw pake array, bisa nggak ya disingkat lagi ? Misalnya ada array yg indeksnya 30, bisa nggak ya di query gw nggak perlu tulis semua ? Jadi kayak gini :

    Query = "INSERT INTO " & NamaTabel & " ([NamaField]) VALUES (’" & Array1 … 30 & "’)" 

    Pasti ada caranya, ntar gw cari lg di MSDN :)

    June 21, 2006

    The Frustating Statistics

    Filed under: IT

    Hari ini rencananya sih mau bikin algoritma buat menghubungkan spreadsheet digitasi dgn db access. Tadinya gw pikir buat ngebikin sistem perhitungan statistik digitasi curah hujan cukup simpel (soalnya sudah pernah gw kerjakan di sistem digitasi FKlim). Ternyata gw salah. Butuh 6 jam, cuman untuk membuat sistem perhitungan ini. Ribet jg algoritmanya, gw sampe sempat frustasi tadinya. Untungnya udah beres.

    ‘Perhitungan Statistik Data
            For Kolom = 1 To .Cols - 1
                TotalCH = Empty
                TotalData = Empty
                NilaiMax = Empty
                NilaiMin = Empty
                NilaiMinPrev = Empty
                TotalPreVar = Empty
                StdDeviasi = Empty

                RangeData Kolom, JumlahBaris
                For Baris = 1 To JumlahBaris
                    MinCount = Empty
                    If .TextMatrix(Baris, Kolom) Empty Then
                        If .TextMatrix(Baris, Kolom) = 88888 Then
                            TotalData = TotalData + 1
                        Else
                            ‘Nilai Max
                            If .TextMatrix(Baris, Kolom) > NilaiMax Then
                                NilaiMax = .TextMatrix(Baris, Kolom)
                            End If
                            ‘Nilai Min
                            For MinCheck = 1 To Baris
                                If .TextMatrix(MinCheck, Kolom) = Empty Then
                                    MinCount = MinCount + 1
                                End If
                            Next MinCheck
                            If MinCount = Baris - 1 Then
                                NilaiMin = .TextMatrix(Baris, Kolom)
                                NilaiMinPrev = NilaiMin
                            ElseIf .TextMatrix(Baris, Kolom) <= NilaiMinPrev Then
                                NilaiMin = .TextMatrix(Baris, Kolom)
                                NilaiMinPrev = NilaiMin
                            End If
                            ‘Total CH
                            TotalCH = TotalCH + .TextMatrix(Baris, Kolom)
                            ‘Total Data
                            TotalData = TotalData + 1
                        End If
                    End If
                Next Baris
                ‘Rataan
                Rataan = TotalCH / TotalData
                ‘Cari StdDeviasi
                For Baris = 1 To JumlahBaris
                If .TextMatrix(Baris, Kolom) Empty Then
                    If .TextMatrix(Baris, Kolom) 88888 Then
                        PreVar = (.TextMatrix(Baris, Kolom) - Rataan) ^ 2
                        TotalPreVar = TotalPreVar + PreVar
                    End If
                End If
                Next Baris
               
                If TotalData Empty Then
                    .TextMatrix(33, Kolom) = TotalCH
                    .TextMatrix(34, Kolom) = Rataan
                    .TextMatrix(35, Kolom) = TotalData
                    .TextMatrix(36, Kolom) = NilaiMax
                    .TextMatrix(37, Kolom) = NilaiMin
                    Variansi = TotalPreVar / TotalData
                    StdDeviasi = Sqr(Variansi)
                    .TextMatrix(38, Kolom) = StdDeviasi
                End If
            Next Kolom

    Statement yg dicetak hijau adalah komentar, sedangkan yg merah adalah variabel/perhitungan yg bermasalah. Bisa dilihat kalo yg paling bermasalah adalah perhitungan nilai minimum dan standar deviasi. Perhitungan nilai minimum ini yg td sukses bikin gw frustasi, sampe2 gw sempat nazar kalo bisa gw pecahkan, gw bakal mandi. (Hehehe … td pagi gw langsung programming tanpa mandi, biasa … programmer gitu lo emoticon). Akhirnya setelah kurang lebih 3 jam, masalahnya terpecahkan, dan … gw benar2 mandi  setelah itu emoticon .

    Setelah ditelusuri, masalahnya ada pd beberapa hal :

    1. Prosedur perhitungan ini ada di luar modul standar. Dengan kata lain, terletak dalam satu prosedur yg sama dgn proses yg mentriggernya. Jadi beda dgn digitasi FKlim yg trigger dan proses perhitungannya ada pada prosedur yg berbeda, dimana tiap prosedur dipanggil, nilai tiap variabel akan otomatis direset oleh program. Jadi untuk digitasi CH, gw harus mereset manual beberapa variabel yg akan diloop.
    2. Masih ada hubungannya dengan masalah pertama. Sekarang masalah looping. Ada sebagian variabel yg harus direset pada level loop baris, sedangkan sebagian lagi di level kolom. Salah satu contoh level baris adalah perhitungan nilai minimum td.

    June 20, 2006

    Hana - Flower (OST Ima, Ai ni Yukimasu - Be With You)

     

     

    Performed by Orange Range

    Hanabira no youni chiriyuku naka de
    Yume mitai ni  kimi ni deaeta KISEKI
    Aishiatte  KENKA shita
    Ironna kabe  futari de norikoete
    Umare kawatte mo  anata no soba de  hana ni narou

    (Say yeah … yeah .. yeah …)

    Itsumade mo aru no darou ka  ORE no maue ni aru taiyou wa
    Itsumade mo mamori kireru darou ka  naki  warai  okoru kimi no hyoujou wo
    Izure subete nakunaru no naraba  futari no deai ni motto kansha shiyou
    Ano hi  ano toki  ano basho no KISEKI wa
    Mata atarashii kiseki wo umu darou

    Aisuru koto de tsuyoku naru koto  shinjiru koto de norikireru koto
    Kimi ga nokoshita MONO wa ima mo mune ni  hora kagayaki ushinawazu ni
    Shiawase ni omou  meguri aeta koto  ORE no egao torimodoseta koto
    "Arigatou" afureru kimochi idaki  susumu michinori

    *Hanabira no youni chiriyuku naka de
    Yume mitai ni  kimi ni deaeta KISEKI
    Aishiatte  KENKA shite
    Ironna kabe  futari de norikoete
    Umare kawatte mo  anata ni aitai

    **Hanabira no youni chitte yuku koto
    Kono sekai de subete uke irete yukou
    Kimi ga boku ni nokoshita MONO
    "Ima" to iu genjitsu no takaramono
    Dakara boku wa seiippai ikite  hana ni narou

    Hana wa nande kareru no darou
    Tori wa nande toberu no darou
    Kaze wa nande fuku no darou
    Tsuki wa nande akariterasu no

    Naze BOKU wa KOKO ni iru n darou
    Naze KIMI wa KOKO ni iru n darou
    Naze KIMI deaeta n darou
    KIMI ni deaeta koto  sore wa unmei

    (*REPEAT)

    (**REPEAT)

    Ame agari  niji kakari  ao arashi ni umareshi hikari
    Koko ni yuruginai taisetsuna mono
    Kidzuite’ru "aisuru" to iu koto
    Mada arukeru darou? mieteru n da mou
    "Omoi" toki wo koe  toowa ni hibike
    Kimi no yorokobi  kimi no itami  kimi no subete yo
    Saa  saki hokore  motto  motto  motto

    (yeah … say yeah … yeah ….)

    Ehm … ini satu lagi lagu yg enak banget didengar. Orange Range, grup musik yg nyanyiin lagu ini kurang gw kenal, mungkin karena alirannya yg alternatif, sedangkan gw lebih suka JRock kayak Luna Sea atau Laruku. Gw dengar pertama kali lagu ini pas nonton JMovie, Be With You. Filmnya bagus banget, romance tapi masih tergolong film keluarga menurut gw mah. Nah pas filmnya habis, lagu ini nongol.

    Lagunya ringan, lumayan ada rap2nya, tapi enak banget. Kalo dengar lagu ini, jd ingat filmnya.

    Nice music, and i enjoyed my self whenever i heard this song ;)

    Link :  Download Hana by Orange Range (mp3, 128 kbps, 4.1 MB)