Coding Challenge
« previous entry | next entry »
Jan. 14., 2008 | 11:52 pm
Originally published at 19 pints of beer. Please leave any comments there.
Beidzot šajā darba vietā ir pirmais nopietnais kodējamais gabals, ja neskaita visus tos stāvvietu aparātus, kurus esmu “nokodējis” jeb pareizāk sakot nokonfigurējis. Īsāk sakot, ir backoffice sistēma C-Argus, kas importē no stāvvietu aparātiem (konkrēti, CALE MP 104 Compact) visa veida datus – tajā skaitā arī par transakcijām. Šobrīd CALE jau piedāvā tādu produktu kā Cale Web Office, kas to visu dara apmēram tā pat, tikai tā kā servisbāzēta programmatūra, attiecīgi par tās lietošanu ir jāmaksā ikmēneša abonēšana, kā arī jāupgreido atsevišķi aparāti, lai tie vispār spētu darboties, kā vajag. Bet ne par to ir stāsts :) Vienīgais, kas jāņem vērā ir tas, ka CALE vairs īsti neupdeito savu veco, brīžam bugaino, taču tīri labi izmantojamo C-Argus.
Tātad – jau labu laiku es esmu uzstādījis, lai tiktu ievākti pilnīgi visu transakciju dati, kurus vēlāk ērti un jauki var izlasīt un apstrādāt tajā pašā C-Argus backoffice programmā. Taču tieši tagad, kad svaigi kā apmainījies gads, radās nepieciešamība saveidot šādas tādas autostāvvietu noslogojuma atskaites. Un, protams, izlīda kārtējais bugs!
Izrādās, svaigākas versijas parkomātu softs veido drusku savādāku transakciju failu nekā ņem pretī C-Argus. Tad nu lūk – visi vajadzīgie faili ir savākti un glabājās vajadzīgajā folderītī, visa informācija par konkrētajiem failiem jau ir MySQL datu bāzē – atliek vien tos vēlreiz ņemt un pārparsēt, jo vienīgā atšķirība ir tā, ka jaunajos transakcijas failos tiek fiksēts arī čeka numurs, kurš (nez kāpēc) ir iemaldījies pa vidam, nevis kaut kur beigās. Rezultātā C-Argus parseris to nesaprot un attiecīgās transakcijas nekur nekādā datu bāzē neieliek :)
Tā nu tagad ir uzdevums (kā Kira teica) – sataisīt, lai visa jau ievāktā informācija ir datu bāzē un būtu tur arī turpmāk. Apskatot visu man pieejamo informāciju, nonācu pie secinājuma, jāuztaisa neliels Windows (jā, jā – tas viss griežas uz Windows) servisiņš, kurš pēc katras datu ielasīšanas vai arī vienreiz dienā pārparsē ielasītos failus un ieliekt visu iztrūkstošo informāciju datu bāzē. That’s it!