- pačios programos kūrimas;
- žinyno kūrimas;
- diegimo paketų kūrimas.
Tad čia šiuos dalykus ir pabandysime apžvelgti.
Pačios programos kūrimas
2002, kai pradėjau kurti KZod žodyną naudojau Delphi dėl to, kad buvo ypač patogu kurti vartotojo aplinką, plius Object Pascal kalba mažai mokančiam programuoti buvo patraukli dėl to, kad galima buvo apsieiti be rodyklių ir kitų sudėtingesnių dalykų (tačiau juos galima naudoti, jeigu nori).
Apie 2006 metais nusprendžiau, kad verta programą perkelti į Linux OS. Tada reikėjo tikrai nedaug pakeitimų, kad pavyktų sukompiliuoti programą su Kylix ir šiokia tokia (nebaigta) žodyno versija veikė! Tačiau jau tada Kylix buvo beveik pasenęs, tad tai neteikė daug vilčių.
Kita alternatyva, kurią bandžiau jau 2006 metais, tai buvo Free Pascal kompiliatorius su Lazarus integruotąja kūrimo aplinka. Tada vizualioji dalis veikė, pavadinkime, prastai. Tačiau jau apie 2008 m. pabandęs iš naujo, buvau nustebintas didelio kokybės pagerėjimo ir tais pačiais metais turėjau veikiančią žodyno versiją, kuri buvo sukompiliuota su Free Pascal.
Tad iš tiesų, kas yra Lazarus ir kuo jis geras? Keli punktai (tikrai ne visi svarbiausi :) ):
- spartaus kūrimo aplinka (angl. RAD - Rapid Application Development);
- vizualaus, komponentinio kūrimo aplinka;
- atviro kodo - reiškia gali pats susitvarkyti ar pakeisti dalykus, kurie tau nepatinka;
- skirta daugeliui platformų;
- gaunama sukompiliuota savoji (angl. native) programa.
O kas svarbiausia - užtenka turėti vieną išeities tekstą ir gali susikompiliuoti savąsias programas Windows, Linux (GTK1&2, QT) ir OSX (ir dar kelioms) operacinėms sistemoms.
Tikrai! Naujausia KZod žodyno versija turi ~14 000 gryno kodo eilučių (išties, nedaug) ir IFDEF'ai naudojami vos poroje vietų, t. y. ten kur yra kodas, skirtas reaguoti į iškarpinę. Ir visa tai be problemų susikompiliuoja Windows, Linux ir OSX operacinėse sistemose. Windows ir Linux ekrano vaizdai yra senesniame mano pranešime, o OSX čia:
KZod OSX sistemoje
Verta pastebėti, kad čia ne naujausia žodyno versija, tačiau tai dėl laiko trūkumo ir techninės įrangos neturėjimo (kas nors norite atiduoti ar paskolinti Mac'ą?).
Kartais vis atsiranda kas nors, kas sako, kad verta perrašyti visą žodyną su C/C++/C# - galiu pasakyti tik tiek: neverta! Naudos negausiu, o palaikymas ir naujų dalykų programavimas užtruks ilgiau.
Žinyno kūrimas
Taigi, jau turime programos failus, tačiau neatsiejama dalis yra programos žinynas. Html ar pdf formato žinynas yra būtinas, tačiau nėra pakankamas, nes tikrai nėra patogus! Paieška, indeksas, straipsnių susiejimas su programos elementais - visų šių savybių negali patogiai užtikrinti html ar pdf formato dokumentacija.
Kaip tik su tokia pačia problema susidūrė ir Lazarus programavimo aplinkos kūrėjai. Jie, po diskusijų, nusprendė naudoti chm formatą. Nors jis ir nėra oficialiai dokumentuotas, tačiau yra pakankamai neoficialių išsamių formato aprašų. Problema buvo ta, kad Linux sistemoje nėra pakankamai išvystytų chm žiūryklių (angl. viewer). Ir taip po kelių mėnesių atsirado LHelp programa, kuri visose platformose veikia ir atrodo taip pat. Palaiko indeksus, pilno teksto paiešką ir t. t.
Tad žinyno problema man išsisprendė iki atsirandant trečiai žodyno versijai :) Tiesa, teko pačiam susiprogramuoti chm „gamintoją“, nes esantys Windows sistemoms nepalaiko UTF8, o esantis su Lazarus pavyzdinis chm „gamintojas“ šiek tiek labai nepabaigtas :) Tiesa, mano irgi yra ypač paprastas, tačiau šiek tiek patogesnis:Maniškis chm „gamintojas“
Tad nors dar ir nėra paruošti KZod žodyno pagalbos failai, bet visa, ko reikia (išskyrus pačius tekstus), jau yra.
Diegimo paketų kūrimas
Kiekviena rimta programinė įranga pateikiama kaip diegimo paketas. Taip yra dėl to, kad šis diegimo paketas ne tik sukopijuoja failus į reikiamas vietas, bet sutvarko ir įvairius kitus reikalingus dalykus (pvz., sukuria nuorodas, įrašo reikiamą informaciją į registrus ar kitur).
Lygiai taip pat, kaip su programos kūrimu - turi vieną išeities tekstą ir iš jo susikompiliuoji visoms sistemoms - norėjosi daryti ir su diegimo paketų kūrimu. Šiek tiek paieškojus internete aptikau InstallJammer projektą, kuris būtent tam ir skirtas!
Taip pat dar turėjau kelis (pagrindinius) pageidavimus:
- turi būti kuriami paketai Windows, Linux ir OSX sistemoms;
- turi būti galima pasirinkti diegiamus komponentus;
- turi būti galima įdiegti „ant viršaus“ neribotą kiekį kartų ir naujesni failai (pagal diegimo programoje nurodytus versijų numerius) turi perrašyti senesnius;
- turi būti palaikomas daugiakalbiškumas.
Deja, šis projektas nėra toks stabilus ir taip dažnai atnaujinamas, kaip norėtųsi... 1.2 versija neturėjo kelių dalykų, kurių man norėjosi, o 1.3 versija turėjo nemažai netikėtų ir nepageidautinų savybių :) (aka angl. bug). Šiaip ar taip, pramokęs tcl skriptų kalbą ir po ~20 val. gryno darbo sugebėjau turėti pageidaujamą diegimo paketą Windows sistemai.
Tiesa, Linux ar OSX diegimo paketų dar nebandžiau, bet problemų (tikiuosi) nebus.