2010 m. gruodžio 26 d., sekmadienis

Spalvota servetėlė

Ogi man patinka Kalėdos, dėl to, kad per jas veikiu tai, kas patinka tačiau paprastai tam nebelieka laiko.

Tad šį rytą susiradau servetėlę, fotoaparatą ir (kompiuterinių) spalvų. Ir, pagaliau, po daugiau nei metų, 13 namo gyventojai nusispalvino :) Tiems, kam patinka, skubu pasakyti, kad čia mano tik spalvinimas - pats piešinukas paišytas Birutės. Daugiau gražių triušelių galite atrasti jos bloge http://triuseliai.blogas.lt/.

2010 m. gruodžio 23 d., ketvirtadienis

Nutolusios komandos formavimas ir valdymas

ĮRAŠO ĮŽANGA

Vakar teko būti pirmojo semestro magistro darbų gynimo komisijoje. Ir vienas iš studentų (pavėlavęs) gynėsi literatūros apžvalgą tema „Projektų valdymas virtualiose įmonėse“. Mano nuomone, mokantis matematikos ir informatikos fakultete, kokybišką ir susijusį su informatika magistrinį tokia tema parašyti išties sudėtinga, nes, mano nuomone, darbe šia tema, nagrinėjami bendri vadybos ar/ir psichologijos dalykai, ir susieti su IT galima nebent kažkaip dirbtinai.

O bet tačiau, prisiminiau, kad man pačiam teko nagrinėtis šią (panašią) temą dar 2006 metais ir iškrapštęs dokumentą čia pateikiu tada rašytą tekstą.

Tikiuosi, kad kam nors bus naudinga pasiskaityti, nes šiais laikais išties ypač daug žmonių dirba per atstumą (kad ir aš pats šiuo metu :) ).

Įžanga

Šiais globalizacijos ir integracijos laikais versle atsiranda (ir jau pakankamai dažnai naudojamos) nutolusios komandos (angl. virtual teams arba geographically dispersed teams). Tai padeda racionaliau išnaudoti turimus žmogiškuosius resursus ir dažnai padeda gauti geresnius darbo rezultatus.

Šiame darbe bus pasistengta paaiškinti, kas yra nutolusi komanda, kokie jos privalumai ir trūkumai, bus apžvelgtos pagrindinės problemos, su kuriomis susiduriama bandant dirbti nutolusioje komandoje ir kaip tas problemas rekomenduotina spręsti.

1. Komanda ir nutolusi komanda

Komandinis darbas siekia dar tuos laikus, kai mūsų protėviai prieš tūkstantmečius kartu medžiodavo ir tvarkydavosi ūkius. Tai gilias šaknis turinti tradicija ir dauguma ekspertų pritaria, kad komanda yra pagrindinė mažiausia organizacijos dalis, vykdanti užduotis.

1.1. Kas yra komanda?

Vienas iš labiausiai naudojamų komandos apibrėžimų yra pateiktas Kazenbach ir Smith knygoje „Wisdom of Teams“: „Komanda tai nedidelis kiekis žmonių, papildančių vienas kitą įgūdžiais, ir jie siekia bendro tikslo, jų pasirodymas vertinamas bendrai ir jie visi bendrai jaučiasi atsakingi už vykdomą veiklą.“

Taigi, komandoje turi būti žmonių, turinčių įvairių įgūdžių. Bendriausiu atveju turėtų būti žmonių turinčių:

  • techninių įgūdžių;
  • bendravimo įgūdžių;
  • vadovavimo įgūdžių.

Svarbiausia yra tai, kad komandos siekiami tikslai yra tie patys ir komanda vertinama kaip vienetas. Kiekvienas komandos narys turi būti morališkai ir psichologiškai įsipareigojęs. Taip pat komanda turi nuspręsti, kaip ji sieks tikslo, ir susikurti savus vidinius darbo metodus.

Galiausiai grupė tampa komanda, kai visi nariai bendrai jaučiasi atsakingi už rezultatus.

1.2. Kas yra nutolusi komanda?

Šiais laikais iš žmonių, kurie bendrauja ir dirba per elektronines komunikacijos priemones, formuojasi naujo tipo – nutolusios – komandos. Dažniausiai tokių komandų nariai vienas kito net nėra matę realiame pasaulyje ir bendrauja tik virtualiai.

Nutolusios komandos yra komandos žmonių, kurie yra fiziškai atskirti vieni nuo kitų (laiko ir vietos veiksnių – skirtingi miestai, šalys ir net žemynai). Jie naudojasi naujausiomis komunikacijos technologijomis: „nešiojamais ar staliniais kompiuteriais ir komunikacijų tinklais, kurie juos jungia – el. paštas, balso konferencijos, bendras duomenų kaupiklis ir bendras darbų kalendorius. Sudėtingesnės platformos gali suteikti bendrus įrašų žurnalus ar diskusijų lentas, tinklo konferencijas ir kitus rimtus projekto valdymo įrankius“ [4]. Tokia ir panaši programinė įranga angliškai dažnai vadinama groupware, computer supported cooperative work (CSCW), ar group decision support systems (GDSS).

Toliau ir bus apžvelgiami nutolusių komandų formavimo ir valdymo dėsniai.

1.3. Kodėl verta formuoti nutolusias komandas?

Kai kuriems žmonėms dirbti namuose yra nuostabus pasiūlymas. Jiems patinka mintis, kad jie galės įsispyrę į savo šlepetes, apsigobę chalatu atsisėsti prie kompiuterio ir ramiai dirbti savo darbą. Kitiems tokia idėja atrodo nepriimtina, nes jie jaučiasi vieniši ir jiems atrodo, kad dirbti bus liūdna. Kad ir kaip kiekvienas iš mūsų jaučiamės galvodami apie nuotolinį darbą, tokių nutolusių komandų atsiranda vis daugiau ir daugiau. Kaip išdėstyta [2] straipsnyje, nutolusios komandos taupo organizacijos pinigus, optimizuoja resursų panaudojimą ir didina produktyvumą.

Nutolusių komandų teikiama nauda:

  • Dabartinės technologijos yra tiek pažengusios, kad žiūrint iš techninės pusės, nutolusios komandos gali puikiai funkcionuoti beveik visame pasaulyje – tai leidžia organizacijoms pasamdyti ir turėti geriausius darbuotojus, kad ir kur jie gyventų. Juk geriausi kažkurios srities specialistai gali gyventi toli vienas nuo kito. Kaip sako pagrindinis Airijos HP padalinio vadybininkas Martin Murphey [3]: „Darbdaviai nenori prarasti gerų darbuotojų, kurie dėl gyvenamosios vietos gali norėti pakeisti darbovietę. Žmonės nori dirbti lanksčiau ir užuot ryte praleidę dvi valandas važiuodami į darbovietę, jie nori dirbti namuose vieną dieną per savaitę“.
  • Darbuotojai reikalauja asmeninio lankstumo. Dideli geografiniai atstumai nebėra kliūtys. Tas pats žmogus gali vienu metu dirbti keliose komandose, keliuose projektuose.
  • Dauguma fizinių neįgalumų nesukelia problemų dirbant.
  • Lanksti organizacija yra žymiai konkurencingesnė ir greičiau reaguojanti į rinkos pokyčius. PricewaterhouseCoopers Atlantoje integracijos paslaugų direktorė Ivens Mendonca teigia, kad nutolusios komandos gali žymiai greičiau reaguoti ištikus krizei [2].
  • Darbas tampa produktyvesnis, nes darbuotojams nebereikia važiuoti į darbą ir atgal. [1] straipsnyje Martin teigia, kad „viena iš priežasčių, skatinančių įgyvendinti nuotolinių konferencijų technologijas, yra ta, kad taip sprendimai priimami greičiau“. Vietoj to, kad reikėtų laukti kitą savaitę įvyksiančios verslo kelionės, kad galėtum susėsti su savo komandos nariais, išklausytum naujausią informaciją, aptartum problemas ir galimybes ir tada priimtum sprendimą, verslas per Internetą reikalauja, kad komandos nariai susitiktų dabar ir kad sprendimas būtų priimtas dabar. Tai reiškia, kad laikas, reikalingas priimti strateginius sprendimus įvykus kažkokiems vidiniams ar išoriniams įvykiams, yra ypač sutrumpinamas.
  • Išlaidos, susijusios su kelionėmis, apgyvendinimu, automobilių parkavimu ir patalpų nuomojimu ar turėjimu, gali būti žymiai sumažintos (kartais net visai panaikintos).
  • Darbo diena gali tęstis visas 24 valandas, palyginus su 8 valandomis. „Tikroji nutolusių komandų vertė yra ta, kad žmonės gali dirbti tą darbą, kurį jie gali atlikti geriausiai“ [2] straipsnyje teigia Mendoca.
  • Nutolusių komandų naudojimas skatina organizaciją atsisakyti hierarchinės valdymo sistemos ir skatina turėti bendrą darbuotojų „fondą“.

2. Nutolusių komandų formavimo strategijos

Pasak Martin [1], norint sėkmingai suformuoti nutolusią komandą, reikia daug energijos. Iš principo reikia trijų dalykų: žmonių, proceso ir technologijos. Gauti reikiamus įrenginius ir programinę įrangą komunikavimui tarpusavyje yra lengviausia dalis. Tobulinti komandos procesus – žymiai sunkiau.

Penkios pagrindinės kliūtys, su kuriomis susiduria nutolusios komandos:

  • prisitaikymas prie darbo nutolus;
  • praradimas „turtungo“ bendravimo betarpiškai;
  • koordinacijos trūkumas projekto valdyme;
  • komandos jausmo (angl. teamness) praradimas;
  • tvarkymasis su problemomis, kylančiomis dėl kultūrų skirtumų ir pan.

(Antras, trečias ir ketvirtas punktai bus aptarti tolesniame skyriuje, kuriame bus nagrinėjamas vadovavimas nutolusioms komandoms).

Atsižvelgiant į daugelį tyrimų, galima išskirti kelis punktus, kuriuos reikėtų apgalvoti ar kuriuos rekomenduojama įgyvendinti:

  • Rekomenduojama pačioje pradžioje suorganizuoti visos komandos susitikimą realybėje. Tom Sheehy [3] straipsnyje sako: „Aš manau, kad svarbu susitikti realiai. Žinojimas, kas su tavimi kalba kitame laido gale suteikia privalumų.“
  • Jei įmanoma, reikėtų kartais surengti realius susitikimus, ypač iškilus konfliktams komandoje. Nors technologijos įgalina patogiai komunikuoti, kartais visgi patogiau spręsti problemas susitikus realiai. „Kartais per daug sunku keturias ar penkias valandas diskutuoti telefonu, ypač kai nematai kūno kalbos“ pastebi Mendoca [2].
  • Reikia naudoti vizualines priemones komunikuojant. Martin [1] straipsnyje teigia, kad reikia stengtis, kad nutolę komandos nariai pažintų vienas kitą kuo geriau, dėl to reikėtų rengti video konferencijas ir bendras balso konferencijas.
  • Reikia suprasti, kad dauguma bendravimo vyks susirašinėjant, dėl to reikia ypač kreipti dėmesį į rašymo stilių ir toną. Juk dauguma kompanijų turi padalinius atskiruose kontinentuose, o tai reiškia, kad nutolusioje komandoje gali būti įvairių tautybių ir įsitikinimų žmonių [1].
  • Norint, kad pavyktų tinkamai dirbti nutolusioje komandoje, reikia investuoti į gerų santykių formavimą ir palaikymą [2] – reiktų nustatyti aiškias bendravimo taisykles ir normas.
  • Reikia nepamiršti pamatyti ir įvertinti komandos narių darbą.
  • Reikia pasirinkti ir naudoti tinkamus informacijos dalinimosi įrankius.
  • Surašyti siekiami tikslai, reikiamos atlikti užduotys, projekto specifikacija ir vertinimo kriterijai suteikia organizuotumo.
  • Reikia mokymų, kuriuose būtų pristatoma naudojama techninė ir programinė įranga. Taip pat mokymai, kaip dirbti su skirtingų kultūrų žmonėmis, turi didelę įtaką sėkmingam bendravimui.
  • Reikia stengtis, kad komandoje susiformuotų didelis pasitikėjimas (angl. „high-trust“ culture). Tai, kaip ir tradicinėje komandoje, padeda gerinti darbo kokybę ir kt. Tai ypač svarbu nutolusioms komandoms, nes be pasitikėjimo dirbti per atstumą yra neįmanoma. [3] straipsnyje atliktas tyrimas rodo, kad per didelis pasitikėjimas el. paštu, neatsakytos žinutės ir netinkamų bendravimo būdų naudojimas ypač trukdo (ir net gadina) pasitikėjimą ir taip gali sužlugdyti bet kokį projektą. Tai aiškinama tuo, kad kai komandos nariai nesusitinka realiai po darbo ir kitoje neformalioje aplinkoje, tai pasitikėjimas tik iš formalaus (ir dar nutolusio) bendravimo yra ypač trapus.

3. Mitai ir tiesos apie nutolusias komandas

Kaip ir apie kiekvieną verslo ir valdymo tendenciją, jai tik atsirandant kyla visokių mitų. Čia bus išvardinti keli mitai, susiję su nutolusiomis komandomis ir pateikti realūs faktai tomis temomis.

Mitas

Realybė

1. Geografiškai išskirstytos komandos nėra tokios efektyvios kaip tradicinės komandos, kurių visi nariai yra toje pačioje vietoje.

1. Nutolusios komandos savo efektyvumu dažnai gali net pralenkti tradicines komandas. Nutolusių komandų pats principas kai kuriais atvejais teikia naudos. Pavyzdžiui, tradicinėse komandose ieškant idėjų (angl. brainstorming), per dažnai pasiliekama prie vienos per greitai surastos atrodo tinkančios idėjos. Su nutolusiomis komandomis taip nutinka žymiai rečiau. Taip pat, kaip jau buvo minėta, nutolusios komandos gali žymiai greičiau reaguoti esant kritiškai situacijai ar krizei.

2. Tradicinės komandos visada yra labiau vertinamos.

2. Tiesioginis bendravimas (bendravimas matant vienas kitą) ne visada yra efektyviausias būdas. Dažnai, kai žmonės yra iš skirtingų šalių ir kultūrų, ar jų asmenybės smarkiai skiriasi, tai bendravimas per atstumą naudojantis elektronines priemones yra žymiai efektyvesnis [1].

3. Komandos supratingumas yra toks pats.

3. Tyrimai rodo, kad dėl to, kad nutolusios komandos formuojasi kitaip, tai ir jų supratingumas yra kitoks. Kadangi nutolusios komandos dažniausiai bendrauja per telefoną ar internetą ir nėra viename biure, tai betarpiško bendravimo trūkumas lemia tarpusavio supratimo trūkumą. Iš to galima spręsti, kad komandos supratingumą valdyti yra žymiai sunkiau (juk pokalbiai el. paštu dažnai gali būti dviprasmiškai interpretuojami).

4. Komandoje negali susiformuoti pasitikėjimas.

4. Pasitikėjimą nutolusioje komandoje galima suformuoti lygiai taip pat greitai, kaip ir tradicinėje komandoje. Tai labai priklauso nuo komandos vadovo ir to, kaip vykdoma komunikacija, informacijos dalyba ir pan. Pati komanda turėtų apsibrėžti, kas yra „pasitikėjimas“ ir kaip jo siekti [3].

5. Nėra atsiskaitomumo.

5. Atsiskaitomumas turi būti paremtas darbo rezultatų pamatuojamumu. Tai reiškia, kad komandos darbas ir vertinimas turi būti performuotas į paremtą rezultatais. Tiesiog reikia nepamiršti, kad jei darbuotojas nėra matomas, tai jis nėra neatsakingas ir neatskaitingas.

6. [4] straipsnyje Smith pastebi, kad kai „nutolusioms komandoms nesiseka, tai dažniausiai kaltinama technika ir technologijos“. Išties, jaučiama tendencija, kad dėl nesėkmių visa kaltė suverčiama technologijoms.

6. Faktai rodo, kad nutolusioms komandoms nesiseka lygiai dėl tokių pačių dalykų, dėl kurių nesiseka ir tradicinėms: bendros vizijos trūkumas, prasti teisių ir įsipareigojimų nurodymai, prastas projekto valdymas. Technologija labai retai trukdo vykdyti veiklą. Dažniausiai technologija tik padeda greičiau (ar lėčiau – jei pasirinkta neteisingai) pagerinti ryšius tarp komandos narių ir skatina bendrą komandos vystymąsi.

7. Komandos nariai atlieka vienodas pareigas ar jie būtų tradicinėje komandoje, ar nutolusioje.

7. Tiek komandos vadovo, tiek paprastų narių pareigos ir atsakomybės nutolusioje komandoje skiriasi nuo esančių tradicinėje komandoje. Nutolusioje komandoje žymiai sunkiau parodyti, kas yra komandos vadovas (lyderis), dėl to reiktų tokį išskirti jau projekto pradžioje. Kaip tik [4] straipsnyje Martin ir teigia, kad lyderiui įsitvirtinti (ir įgyti autoritetą) nutolusioje komandoje per virtualius susitikimus yra žymiai sunkiau nei tradicinėje aplinkoje.

8. Nutolusios komandos naudojamos tik tam, kad sutaupytų kelionės pinigų.

8. Gerai sukomplektuotos nutolusios komandos ne tik taupo pinigus, bet, kaip minėta, gali žymiai greičiau reaguoti į įvairius pokyčius ir gali dirbti daug efektyviau.

4. Vadovavimas nutolusioje komandoje

Kaip ir daugumoje tradicinių komandų, nutolusioje komandoje reikia aiškaus lyderio (dažniausiai jis būna ir vadovas). Tačiau koks turi būti geras nutolusios komandos vadovas? Netgi labai patyrę vadovai gali susidurti su problemomis, pabandę vadovauti nutolusiai komandai. Vadovavimas nutolusiai komandai apima visus vadovavimo tradicinei komandai aspektus ir prideda dar kelias subtilybes. Toliau šiame skyriuje bus bandoma apžvelgti kelis dalykus, kurių negalima pamiršti norint efektyviai vadovauti nutolusiai komandai.

Yra dvi pagrindinės kliūtys, kurias reikia įveikti:

  • neefektyvus technologijos pasirinkimas ir naudojimas;
  • socialiniai nutolusių komandų aspektai.

4.1. Technologija

Nutolusiose komandose techninė ir programinė įranga yra būtina, nes visas komandos bendravimas remiasi ja. Komandos vadovas turi nustatyti konkretaus projekto atlikimui būtinas technologines priemones. Pavyzdžiui, turi būti pasirinktos priemonės per kurias bus bendraujama (el. paštas telefonas, IP telefonija ar video konferencijos). Nei viena iš šių priemonių neturi būti imama nesvarstant – turi būti atlikta išsami analizė, nes pasirinkimas pakankamai daug priklauso nuo projekto ir kitų išorinių faktorių. Pavyzdžiui, video konferencijos visiškai netiks, jei kažkuris komandos narys bus Afrikoje ir pakankamai dažnai keis vietą (tokį sprendimą sąlygoja pigių ir greitų telekomunikacijų stoka tame regione). Kitas pavyzdys, kai projekto tikslams pasiekti turi būti naudojama kažkokia konkreti programinė įranga. Tokiu atveju komandos vadovas turėtų pasirūpinti, kad tą programinę įrangą turėtų kiekvienas komandos narys ir kad kiekvienas mokėtų ja naudotis (jei trūksta naudojimosi ja žinių – turėtų būti suorganizuoti tam tikri mokymai). [5] straipsnyje teigiama, kad jeigu šis žingsnis praleidžiamas, tai gali sąlygoti viso projekto pradžios nukėlimą (ar bent tam tikrų narių prisijungimą vėliau), nes kai kurie nariai negalės pilnai prisijungti prie komandos darbo.

4.2. Socialiniai aspektai

Yra keli socialiniai aspektai, į kuriuos vadovaudami tradicinėms komandoms vadovai nekreipia dėmesio, nes jie savaime susitvarko komandos nariams dirbant šalia vienas kito. [5] straipsnyje išdėstyti keturi svarbūs punktai:

  • reikia aiškiai nurodyti komandos ribas;
  • reikia kurti bendrą komandos psichologiją;
  • reikia nuolat informuoti komandos narius;
  • reikia valdyti komunikavimo procesą.

Toliau bus aptartas kiekvienas punktas atskirai.

4.2.1. Aiškus komandos ribų nurodymas

Tradicinėse komandose savaime aišku, kas priklauso komandai, o kas ne. Nutolusioje komandoje, kai nariai realiai nesusitinka, tai gali būti problema. Dėl to vadovas yra atsakingas už tai, kad visi nariai būtų informuoti apie komandos sudėties pasikeitimus (kas prisijungia ir kas palieka komandą). Pasak [5] straipsnio, tam tikrų darbų atlikimo priklausomybių nustatymas (ir tokių priklausomybių sudarymas) didina komandos narių bendravimą ir tai savaime didina supratimą to, kas priklauso komandai, o kas ne. Taip pat teigiama, kad informuojant kiekvieną narį apie tai, kaip kiekvienas iš jų prisideda siekiant bendro tikslo, irgi padeda brėžti aiškias komandos ribas.

4.2.2. Bendros komandos psichologijos kūrimas

Komandos vadovas turi aiškiai įvardinti tikslus ir informuoti kiekvieną komandos narį apie tai, ką konkrečiai reikia padaryti. Taip pat vadovas turi informuoti narius apie tai, ką daro kiti. Toks žinojimas apie dirbamus ir likusius darbus leidžia išlaikyti pasitikėjimą, kelia moralę ir motyvaciją.

4.2.3. Komandos narių informavimas

Tai jau tas pats minėtas informavimas apie kitus narius ir jų veiklą. Tokia informacija sumažina poreikį koordinuoti darbus. [5] straipsnio autoriai teigia, kad efektyvūs yra tie vadovai, kurie iš anksto nustato reikalavimus darbų atlikimui ir anksti pradeda rūpintis informacijos sklaida tarp narių.

4.2.4. Komunikavimo proceso valdymas

Vadovas turi formalizuoti komunikavimo procesą. Pavyzdžiui, galima nustatyti maksimalų el. pašto laiškų atsakymo laiką, tam, kad būtų išvengta delsimo ir tylos. Tokie formalizmai padeda kurti pasitikėjimą, o pasitikėjimas yra ypač svarbus nutolusiose komandose.

4.2.5. Virtuali tyla

Kaip matome, visi anksčiau nagrinėti punktai yra glaudžiai susiję. Be komunikacijos negali būti informuoti komandos nariai, o be informavimo nesusiformuos bendra komandos psichologija. Be to, visi šie veiksniai padeda kurti pasitikėjimą. Bendravimas turi būti nuolatinis ir turi apimti visus komandos narius. Tyla gali būti didelė nutolusių komandų problema. Neatsakytas el. laiškas gali kai kuriuos narius versti jaustis izoliuotais ir taip juos demotyvuoti. Be to, kažkurio nario tyla (neatsakymas į žinutes ir pan.) gali sukelti projekto vykdyme problemų, nes kai kurių kitų narių darbas gali remtis to tylinčio komandos nario darbu ar darbo rezultatais – ypač kai tarp užduočių yra glaudus ryšys. [6] straipsnyje pateiktas interviu su komandos nariu parodo, kaip svarbu atsakant į el. laišką nepraleisti kai kurių klausimų, o išsamiai atsakyti į visus: „Aš pastebėjau, kad, vykdant šitą projektą, mano komandos vadovas ne visada atsakydavo į visus klausimus, pateiktus el. laiške – tai dažnai labai nuvilia“.

Iš viso to matyti, kad tyla yra dar viena socialinė problema, kurią reikia spręsti. Kaip siūloma [6] straipsnyje, komandos vadovas „turėtų paaiškinti komandos nariams, kokios blogybės yra, kai komandos nariai tyli ir neatsakinėja į el. laiškus, taip pat turėtų paaiškinti, kaip svarbu aktyviai bendrauti tarpusavyje. Kita vertus reikia gerbti kartais pasitaikančius, iš anksto praneštus, kai kurių komandos narių „negalėjimus“ būti pasiekiamiems.“ Tačiau reikia, kad tokie „nepasiekimo“ periodai būtų iš anksto žinomi (t. y. apie juos būtų perspėta), ypač kai tarp vykdomo projekto atskirų užduočių yra glaudus ryšys.

4.3. Projekto baigimas

Dažnai, kai dirba nutolusioje komandoje, vadovas pamiršta paskutinį projekto etapą – aptarimą (angl. project close-down). Šios pakutiniausios dalies pamiršti negalima, nes tai puiki proga apžvelgti visą darbo eigą ir aptarti, kas buvo gerai, kas negerai, kaip kitaip galima buvo elgtis konkrečiose situacijose ir kt. Šio etapo rezultatai padeda komandos nariams (kartu ir vadovui) pagilinti žinias ir susisteminti įgytą patirtį. Tai puikus būdas pagerinti ateityje būsiantį darbą nutolusiose komandose.

4.4. Kiti požiūriai dėl vadovavimo

Yra ir tokių nuomonių, kad su nutolusiomis komandomis pats vadovavimo ir vadovo supratimas turi keistis. Kai kurie tyrėjai mano, kad vadovas turi iškilti besiformuojant komandai. Pavyzdžiui, [7] straipsnyje „Right Management Consultants“ siūlo „besikeičiantį vadovavimą, kad būtų pertvarkytos komandos“. Taip pat ten pateiktoje apklausos apžvalgoje teigiama, kad nutolusios komandos, kurios sutiko, kad „nauji vadovai iškyla kai to reikia“ dirbo efektyviau nei tos, kurios nesutiko su šiuo teiginiu.

Apibendrinant abi praktikas (paskirto vadovo ir situacijose atsirandančio vadovo) galima teigti, kad tam tikrose situacijose ir projektuose verta formuoti komandas, kuriose nėra aiškiai paskirto vadovo. Taip kyla daugiau rizikų, dėl to šią strategiją verta naudoti tada, kai visi komandos nariai jau yra sėkmingai dirbę kartu. Kitais atvejais reikėtų formuoti komandą su aiškiai paskirtu vadovu.

Išvados

Vis daugiau kompanijų savo veiklą vykdo išskirstytai po visą pasaulį. Būtent dėl to nenoras daug išleisti kelionėms, laiko juostų bei kultūriniai skirtumai verčia mąstyti apie nutolusių komandų formavimą. Nutolusios komandos atsirado tam, kad „įveiktų“ vietos bei laiko skirtumus ir kad būtų pasiekti geresni rezultatai. Kadangi komandos žmonės nebeturi būti surinkti į vieną vietą, tai leidžia vadovams susirinkti komandas iš visų pasaulio vietų, taip gaunant narius su reikiamomis žiniomis ir talentais.

Tačiau ne viskas yra taip paprasta, kaip atrodo. Norint sėkmingai dirbti nutolusioje komandoje, reikia iš anksto numatyti ir po to įveikti kai kurias kliūtis.

Pirmiausia reikia nepamiršti, kad nutolusios komandos formavimas tai žmonių, proceso ir technologijos supynimas, o ne tik technologijos naudojimas [1]. Dėl bendravimo specifiškumo, nutolusios komandos sėkmė priklauso nuo parinktų žmonių ir nuo to, kaip komanda valdoma. Tačiau sėkmės tikimybė didėja, jei teisingai parenkami procesai, ir teisingai modeliuojamos veiklos.

Antra, pasitikėjimas nutolusiose komandose yra labai trapus dalykas. Nutolusiose komandose sunku matyti, ką daro kiti nariai ir bendravimo trūkumas gali sukelti tokį reiškinį kaip „virtuali tyla“, kai el. laiškai ir kitos žinutės neatsakomos [3].

Trečia, vadovo vaidmuo irgi šiek tiek keičiasi. Iš esmės tai reiškia, kad visi veiksmai ir visos veiklos, kurias tradicinėje komandoje vykdo vadovas, nutolusioje komandoje turi būti vykdomos dar detaliau ir su dar didesniu atidumu [5].

LITERATŪRA

  1. David A. Martin, 2006. Virtual Teaming Processes. Žiūrėta 2006-12-08, <http://www.effectivemeetings.com/technology/virtualteaming.asp>.
  2. Suzanne Gaspar, 2001. Virtual teams, real benefits. Network World, žiūrėta 2006-12-08, <http://www.networkworld.com/careers/2001/0924man.html>.
  3. Astrid Duftborg, 2006. Do virtual teams work?. Žiūrėta 2006-12-08, <http://www.siliconrepublic.com/news/news.nv?storyid.single7183>.
  4. T. W. Smith, 2006. Keeping distributed teams connected. Machine Design, Vol. 78 Issue 16, p50-50, 2/3p, 2006-12-08.
  5. P. M. Beranek, J. Broder, B. A. Reinig, Jr. N. C. Romano and S. Sump, 2005. Management of Virtual Project Teams: Guidelines for Team Leaders. Communications of AIS; Vol. 2005 Issue 16, p247-259, 13p.
  6. N. Panteli, S. Fineman, 2005. The sound of silence: The case of virtual team organizing. Behaviour & Information Technology, Sep/Oct 2005, Vol. 24 Issue 5, p347-352, 6p.
  7. Eva Kaplan-Leiserson, 2005. Virtual Work: It's not just for members of the Jedi Council. T+D; Aug2005, Vol. 59 Issue 8, p12-13, 2p.

2010 m. gruodžio 2 d., ketvirtadienis

Kompiuterinė lingvistika: balso sintezė iš teksto (2)

2. KALBOS SINTEZĖS IŠ TEKSTO SISTEMOS

Kaip jau buvo minėta ankstesniame įraše – kalba yra pagrindinė žmonių bendravimo priemonė. Būtent dėl to jau pakankamai seniai yra bandoma ją išgauti dirbtinai. Iki elektroninių kompiuterių atsiradimo buvo konstruojamos mechaninės kalbos sintezės sistemos, tačiau kompiuterių atsiradimas ir ypač jų skaičiavimo pajėgumų didėjimas lėmė didelį kalbos sintezės sistemų progresą. Noras bendrauti su kompiuteriu žmogui elementariausia priemone – garsine kalba – lėmė balso atpažinimo bei sintezės sistemų kūrimą ir vystymą.

Žinoma, kalbos sintezės iš teksto sistemos turi savotiškų trūkumų arba, kitaip vadinant, ribojimų. Užrašytas tekstas jau savaime nebeturi tiek informacijos, kiek jos perduoda kalbantis žmogus. Užrašytame tekste nebelieka intonacijos bei kitokios išraiškos informacijos. Ją galima (ir yra bandoma) atkurti, tačiau tai jau būna tik spėjama, viena iš galimų, intonacijų. Yra sukurta įvairių kalbų, skirtų užrašyti intonaciją bei kalbėtojo išraiškas, tačiau dauguma teksto srautų internete yra grynas tekstas, be tokios išraiškos informacijos, dėl to pirmiausia reikia sistemos, sugebančios tvarkytis su paprastu tekstu. Žinoma, imant atskirus tekstų tipus galima daryti tam tikras prielaidas: pavyzdžiui, analizuojant internetinių pokalbių tekstus, apie intonaciją galima bandyti spręsti iš emocijoms ir jausmams perteikti naudojamų šypsenėlių ir kitų išraiškos priemonių (pavyzdžiui, didžiųjų raidžių).

Šiame skyriuje pasistengsime bendrai apžvelgti kalbos sintezės iš teksto sistemas – jų pritaikymo sritis, naudojimą bei skirstymą. Taip pat pateiksime kelias bendras sintezatorių schemas bei paanalizuosime vienos iš jų sudedamąsias dalis.

2.1. Kalbos sintezės sistemų naudojimas

Šiame poskyryje pažvelgsime į kalbos sintezės sistemų panaudojimo galimybes. Žinoma, čia nebus pateiktos visos sritys, kur galima naudoti tokias sistemas.

Pagrindinės sritys, kur gali būti ir yra naudojamos kalbos sintezės sistemos:

  • akliesiems bei kitiems neįgaliesiems skirtose programose bei sistemose;
  • mokomosiose programose;
  • telekomunikacijose;
  • kitose interaktyviose bei įvairialypėse terpėse.

Akliesiems skirtos kompiuterinės programos bei kitos sistemos, turinčios balso sintezės galimybių, žymiai pagerina informacijos perdavimo naudotojui patogumą. Kurtiesiems arba turintiems didelių klausos problemų asmenims kalbos sintezės sistemos gali padėti bendrauti su kitais žmonėmis, nes dažnai tokiems asmenims yra sunku išmokti kalbėti.

Mokomosiose programose kalbos sintezė gali būti kaip pakaitalas tiesiog pateiktam tekstui, taip sudominantis mokinius bei palengvinantis mokymosi procesą. Ypač pažengusios kalbos sintezės sistemos gali pasitarnauti mokantis užsienio kalbų.

Telekomunikacijose naudojamos balso sintezės sistemos atstoja operatorius ir padeda interesantui gauti reikiamą informaciją jam patogiu metu tinkamoje vietoje.

Balso sintezės sistemos gali būti taikomos interaktyviose sistemose, pavyzdžiui, prie interesanto prisitaikančiose reklamose ir pan. Taip pat turint išraiškingą kalbą generuojančias sistemas galima jas naudoti kompiuteriniuose žaidimuose ar kitose interaktyviose, greitai kintančio turinio programose, kuriose reikia pateikti kaip galima daugiau informacijos visais įmanomais žmogui suvokimo kanalais.

2.2. Bendra sintezatoriaus schema

Šiame poskyryje bus pateikta bendra garsus jungiančio sintezatoriaus schema bei aprašytos pagrindinės tokio sintezatoriaus dalys.

2 pav. pateikta garsus jungiančio sintezatoriaus schema. Ši schema yra pakankamai bendra. Priklausomai nuo konkrečios kalbos ir sistemos realizavimo kai kurios dalys gali skirtis ar būti išskirstytos į smulkesnes (pavyzdžiui, [MV05] yra aprašoma šiek tiek kitokia bei į smulkesnes dalis suskirstyta sistema, o [Sch05] pateikiama dar bendresnė, ne tik garsus jungiančius sintezatorius atitinkanti schema).

2 pav. Bendroji garsus jungiančio sintezatoriaus schema

Išskirtinos trys pagrindinės tokio sintezatoriaus dalys:

  1. Išankstinio paruošimo modulis.
  2. Teksto analizės (arba kitaip – lingvistinio teksto apdorojimo) modulis.
  3. Sintezės modulis.

Išankstinio paruošimo modulis. Tai išankstiniai skaičiavimai ir duomenų, reikalingų kitiems dviem moduliams, paruošimas. Šiame modulyje gali būti suformuojamas žodynas, skirtas fonetinei arba kitai analizei (pavyzdžiui, žodžio kalbos dalies atpažinimui). Taip pat sudaroma garso signalų duomenų bazė. Ji sudaroma segmentuojant didelės apimties profesionaliai įrašytą diktoriaus kalbą. Dažnai segmentavimas atliekamas automatiškai, tačiau neretai po to patikrinamas žmogaus, kad būtų kuo tikslesnis. Segmentų duomenų bazėje laikomi jau suskirstyti ir sužymėti segmentai. Segmentų ilgis ir kiekis priklauso nuo pasirinkto sintezės metodo.

Teksto analizės modulyje atliekama teksto analizė ir transformavimas. Jo įvestis – pradinis tekstas, o išvestis – (dažniausiai) fonemos su trukmės bei intonacijos informacija. Pagrindinės šio modulio dalys yra:

  1. Teksto analizės dalis.
  2. Fonetinės analizės dalis.
  3. Prozodinės analizės dalis.

Analizuojant tekstą atliekama jo pirminė transformacija. Tekstas paruošiamas išskleidžiant santrumpas (pavyzdžiui: t. y. -> tai yra; t. t. -> taip toliau), pakeičiant įvairius kitus elementus į žodžius (pavyzdžiui, išskleidžiant datas: 1986-02-03 -> tūkstantis devyni šimtai aštuoniasdešimt šeštųjų metų vasario mėnesio trečia diena) ir pan.

Fonetinės analizės rezultatas – tekstas, paverstas į fonemas su papildoma informacija. Čia gali būti naudojamas žodynas (pavyzdžiui, norint atpažinti kalbos dalis), taisyklės ar taisyklių ir žodyno derinys. Lietuvių kalbos teksto vertimo į fonemas neatskiriama dalis yra teksto kirčiavimas. Kirčiavimas irgi gali būti atliekamas naudojantis žodynu arba taisyklėmis. Lietuvių kalbos teksto automatinis kirčiavimas išsamiai aprašomas [Kas01] taip pat [KR04] ir [NKR04].

Vykdant prozodinę analizę fonemoms suteikiami (arba jeigu joms jau anksčiau buvo suteikti, tai modifikuojami) ilgiai bei tono aukščiai. Šiame modulyje kuriama intonacija. Fonemų (bei pauzių) ilgius gali sąlygoti kitos fonemos (esančios prieš ir po), žodžiai, sakinio frazės (segmentai) ir kt. [NKR06] trumpai apžvelgiami keli populiariausi garsų trukmės modeliai bei bandoma pritaikyti klasifikavimo ir regresijos medžių metodą lietuvių kalbai.

Išsamus teksto analizės modulio, pritaikyto lietuvių kalbai, aprašymas pateikiamas [Kas01].

Sintezės modulyje jau dirbama su garso signalais. Vyksta:

  1. Garso signalų parinkimas.
  2. Galutinio garso signalo generavimas.

Garso signalų parinkimas vyksta pagal įeities parametrus parenkant tinkamiausius garso signalus iš turimos duomenų bazės. Duomenų bazėje gali būti ne vienas tam tikro reikiamo signalo atitikmuo, tokiu atveju parenkamas tinkamiausias (intonacijos arba sujungimo požiūriu) signalas. Dabar populiarėja vienetų parinkimo metodas (angl. unit selection), kurio esmė ta, kad duomenų bazėje yra ne vienas tam tikro reikiamo signalo variantas, ir, pasinaudojus tam tikromis kainos funkcijomis, išrenkamas tinkamiausias tam tikrai situacijai. Toks metodas pirmą kartą buvo pritaikytas japonų kalbai, o vėliau – ir anglų [BC95]. Šis metodas turi kelis trūkumus. Pirmasis, kad norint gauti geros kokybės sintezuotą kalbą, reikia turėti didelę garsų duomenų bazę. Antrasis, kad nors atskiros sintezuotos kalbos dalys skamba teisingai, bendrai visa kalba (pavyzdžiui, sakinys) kartais gali skambėti keistai.

Galutinio signalo generavimas – tai pakankamai platus funkcijų rinkinys. Taip pat jis priklauso ir nuo naudojamų metodų. Pavyzdžiui, naudojant anksčiau minėtą vienetų parinkimo metodą, teoriškai, turint gerą ir pakankamai išsamią duomenų bazę, galutinio signalo generavimui užtektų tik gebėjimo sujungti atskirus garsus į vientisą signalą. Tačiau dažniausiai to neužtenka. Dėl to šioje vietoje dar naudojami ir garsų signalus modifikuojantys metodai. Dažniausiai reikia keisti atskirų signalų ilgį bei tono aukštį (pavyzdžiui, norint išgauti intonaciją), bet tai nėra paprastas uždavinys, nes nuo to žymiai priklauso sintezuotos kalbos kokybė. Šioms užduotims vykdyti yra pasiūlyti keli algoritmai, ir jie bus aprašyti tolimesniuose poskyriuose.

Visų šių funkcijų bei metodų rezultatas – iš teksto sugeneruotas kalbos signalas.

TĘSINYS BUS :)

Kitame įraše apžvelgsime kalbos sintezės iš teksto sistemų skirstymą. Tad iki kito karto!

LITERATŪRA

[BC95] A. Black and N. Campbell. Optimising selection of units from speech databases for concatenative synthesis. Proceedings of Eurospeech, 1995, pp. 581-584.

[Kas01] P. Kasparaitis. Lietuvių kalbos kompiuterinė sintezė. Daktaro disertacija, Vilniaus universitetas, Vilnius, 2001.

[KR04] A. Kazlauskienė, G. Raškinis. Veiksmažodžių automatinio kirčiavimo galimybės. Kalbos teorija ir praktika. Kaunas: Technologija, 2004, pp. 80–82.

[MV05] E. Morais and F. Violaro. Data-Driven Text-to-Speech Synthesis. XXII Simpósio Brasileiro de Telecomunicações – SBrT’05, 2005.

[NKR04] G. Norkevičius, A. Kazlauskienė, G. Raškinis. Bendrinės lietuvių kalbos daiktavardžių ir būdvardžių kirčiavimo struktūrinis modelis, algoritmas ir realizacija. Kalbų studijos. Kaunas: Technologija, 2004, Nr. 6, pp. 72–76.

[NKR06] G. Norkevičius, A. Kazlauskienė, G. Raškinis. Garsų trukmės modeliavimas naudojant klasifikavimo ir regresijos medžius. Konferencijos „Informacinės technologijos 2006“ pranešimų medžiaga. Kaunas: Technologija, 2006, pp. 82-85.

[Sch05] J. Schroeter. Text-to-Speech (TTS) Synthesis. Knygoje: C. Dorf, Circuits, Signals, Speech And Image Processing. 2005.

2010 m. lapkričio 10 d., trečiadienis

Kompiuterinė lingvistika: balso sintezė iš teksto (1)

ĮŽANGA

Viena iš, mano nuomone, įdomių kompiuterijos sričių yra kompiuterinė lingvistika. Tačiau, kas tai yra? Pagal mokymo programos aprašą (tokia programa yra KTU), studentas, baigęs kompiuterinę lingvistiką gali dirbti kalbos analizės ir apdorojimo, elektroninės leidybos, darbo su informacinėmis kalbos, šnekos ir teksto technologijomis srityse. O jeigu konkrečiau, tai kalbos signalų apdorojimas, kalbos sintezė ir atpažinimas, mašininė sintaksinė analizė, mašininis vertimas, tekstynų apdorojimas, skiemenavimas ir žodžių kėlimas, rašybos tikrinimas, automatinis santraukos sudarymas, pagalbinės vertimo priemonės (žinoma, visam tam, be informatikos, reikia fonologijos, fonetikos, morfologijos, kirčiavimo, transkribavimo ir kitų filologijos sričių išmanymo).

Kadangi ši sritis man yra įdomi, tai taip jau nutiko, kad ir bakalauro ir magistro baigiamuosius darbus rašiau apie balso sintezę iš teksto (vadovas - dr. P. Kasparaitis). Vienas iš darbo rezultatų - signalo formavimo modulis (kas tai yra, bus aprašyta šioje įrašų serijoje). O kažkurios (ne naujausios) versijos sintezuotos kalbos galite pasiklausyti čia: „Labas, mielasis dienoraščio skaitytojau“.

Tad šiame įraše pradėsiu pasakoti apie balso sintezę iš teksto. Kadangi teksto žada būti daug, tai visas pasakojimas bus išskirstytas per kelis blogo įrašus. Šis įrašas bus nedidelis, bet kiti, tikėtina, bus ilgesni

ĮVADAS

Vienas iš požymių, kuo žmogus skiriasi nuo kitų gyvūnų, yra artikuliuota kalba. Ši savybė kartu su abstrakčiu mąstymu, žmogiška kultūra bei socialiniais ypatumais lėmė dabartinį žmonių paplitimą bei pasiektą išsimokslinimo lygį. Žmogui kalba – svarbiausia bendravimo priemonė. Dabar, esant kompiuteriams, telekomunikacijoms ir internetui, ypač daug socialinių procesų vyksta virtualioje erdvėje. Žmonės vis daugiau ir daugiau laiko praleidžia prie kompiuterių ir interneto, bendravimas tampa daugiau tekstinis nei balsinis. Žinoma, didėjant ryšio pralaidumams balso komunikacijos (pavyzdžiui, Skype) populiarėja, tačiau dauguma informacijos vis tiek lieka tekstinė.

Žmonės atsisako pagrindinės savo bendravimo priemonės tam, kad galėtų patogiau atlikti kitas užduotis. Tačiau ar tikrai būtina atsisakyti? Juk projektai, skatinantys balso komunikacijas, sudaro galimybę ir bando sugrąžinti tai, ką žmonės iš savęs atėmė priimdami kompiuterių bei interneto privalumus.

Vienas iš būdų diegti balsinę kalbą kompiuteriuose – tiesiog „išmokyti“ kompiuterius bendrauti mums natūraliausia bendravimo priemone. Kalbos atpažinimo bei sintezės sistemos – tai pirmasis žingsnis to link.

Akivaizdu, kad kai kuriose srityse yra ypač sunku apsieiti be kalbos sintezatorių (tokiose, kaip akliesiems skirtose sistemose), būtent dėl to aktualu ir verta tyrinėti šią sritį bei tobulinti metodus, įrankius bei programinę įrangą, skirtą sintezuoti balsą iš teksto. Pastaraisiais metais kompiuterių skaičiavimo pajėgumai bei atminties talpa išaugo tiek, kad dažniausiai tai nėra ribojantis veiksnys, kuris lemia kalbos sintezės kokybę. Tačiau kalbos sintezatoriai vis dar nėra masiškai naudojami ir paplitę įvairiose srityse būtent dėl to, kad sintezuotos kalbos kokybė vis dar nėra pakankamai gera. Todėl daugelio kalbų sintezatorius nuolat stengiamasi tobulinti, gerinant jų sintezės kokybę.

Dabar naudojami lietuvių kalbos sintezatoriai remiasi garsų jungimo metodu (pavyzdžiui, UAB „Etalinkas“ sukurtas sintezatorius [Eta10] bei VU sukurtas sintezatorius „Aistis“). Vienas iš tokių metodų – jungti difonus, pavyzdžiui, viena lietuvių kalbos difonų duomenų bazė yra aprašyta [Kas05]. Šiuo metodu realizuoti sintezatoriai susideda iš trijų pagrindinių modulių (visi trys moduliai išsamiai aprašyti 2.2 poskyryje).

Tobulinant kiekvieną modulį atskirai galima gauti geresnius visos balso sintezės sistemos rezultatus, t. y. geresnės kokybės sintezuotą kalbą.

1. KALBOS IŠGAVIMAS

Kad suprastumėme kai kurių sintezės sistemų veikimo ypatumus, panagrinėkime žmogaus kalbos traktą bei jo ypatumus. Šiame skyriuje nesistengiama pateikti išsamaus ir visiškai tikslaus paaiškinimo, kaip žmogus išgauna kalbą – čia tik supažindinama su pagrindiniais kalbos atsiradimo žmogaus kalbos trakte ypatumais.

Supaprastintai žvelgiant į žmogaus kalbos išgavimo organus ir jų vaizdą, galima apibendrintai teigti, kad:

  • plaučiai veikia kaip energijos šaltinis;
  • kai balso stygos būna įtemptos, tai jos virpa ir generuoja tam tikro dažnio bangas, ir taip atsiranda skardus garsas;
  • visos kitos ertmės ir kalbos padargai (nosies, burnos, ryklės ertmės, liežuvis, dantys, lūpos) veikia kaip tam tikras muzikos instrumentas, leidžiantis sukurti bei modifikuoti garsą.

Taigi, skirtingų formų kalbos traktas keičia garsą (t. y., pro jį einančią garso bangą). Viena iš svarbiausių yra burnos ertmė. Keisdami jos formą bei tūrį, išgauname įvairius garsus. Nosies ertmė ypač svarbi išgaunant nosinius garsus (pavyzdžiui, n ir m, kuriuos išgaunant oras išeina pro nosį). Iš viso to galime susidaryti supaprastintą modelį (1 pav.).

1 pav. Supaprastintas žmogaus kalbos trakto modelis

Taigi, įtemptos balso stygos generuoja periodines tam tikro dažnio bangas, kurios naudojamos išgauti skardžiuosius garsus, o duslieji garsai gaunami iš panašaus į triukšmą garso.

TĘSINYS BUS :)

Kitame įraše pasistengsime bendrai apžvelgti kalbos sintezės iš teksto sistemas – jų pritaikymo sritis, naudojimą bei skirstymą. Taip pat pateiksime kelias bendras sintezatorių schemas bei paanalizuosime vienos iš jų sudedamąsias dalis. Tad iki kito karto!

LITERATŪRA

[Eta10] UAB „Etalinkas“. Lietuvių kalbos sintezatorius. [Žiūrėta 2010-05-08]. Prieiga per Internetą.

[Kas05] P. Kasparaitis. Diphone Databases for Lithuanian Text-to-Speech Synthesis. Informatica, 16(2), 2005, pp. 193-202.

2010 m. spalio 26 d., antradienis

Programos kūrimas greitai, vizualiai ir daugeliui platformų? Taip.

Taigi, kaip anksčiau žadėjau, trumpai papasakosiu, ką ir kaip naudoju KZod žodyno kūrime. Trys pagrindiniai dalykai:
  1. pačios programos kūrimas;
  2. žinyno kūrimas;
  3. 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.

2010 m. spalio 23 d., šeštadienis

KZod - programavimas kaip hobi

Taigi, praėjus dvejiems metams pagaliau pabandysiu ką nors papasakoti :)

KZod - vienas iš mano projektų, kurį kažkas iš tiesų naudoja!

Iš pradžių šiek tiek statistikos:

  • nuo ~2004 metų programą atsisiuntė 315 616 kartus (čia neįskaičiuoti atsisiuntimai iš tiesioginės nuorodos, t. y. kai siunčiamasi per visokius download.com ir kitus psl.);
  • iš aukštesnio skaičiaus 12 695 atsisiuntimai Linux OS (verta pastebėti, kad Linux OS versija nėra tokia išbaigta, kaip Windows versija...).

Tada išeina, kad per dieną vidutiniškai programa atsisiunčiama 136 kartus. Visgi tikrai bent kažkas ją naudoja!

Keista, nes Donate! mygtuką per apie ketverius metus paspaudė tik trys žmonės :)

Šiaip ar taip - tas nemažas atsisiuntimų skaičius motyvuoja kartais prisėsti ir kažką naujo paprogramuoti šiam žodynui.

Tad nuo pirmosios trečios kartos (v3) programos beta versijos, kurią pirmą kartą viešai paskelbiau 2008 metų rugsėjį, praėjus nemažam laiko tarpui jau yra trečioji beta - išties realiai mąstant, pilnu etatu, užtektų poros mėnesių ir būtų viskas baigta, bet...

Taigi, trumpai pristatant naujausią beta versiją, reikėtų pasakyti, kad čia atsižvelgta į daugmaž visus anksčiau gautus patarimus ir pastabas (išskyrus programos interfeiso detalių vietos keitimą). Visgi verta pastebėti, kad čia dar trūksta tokių dalykų:

  • Jeigu įdiegiami iš pradžių ne visi žodynai, tai po to papildomai diegiant žodynus - jie neatsiranda programoje.
  • Nėra angliškų trumpų patarimų.
  • Nėra pagalbos failų.
  • Interneto reikalaujančios funkcijos (ieškoti žodžio internete, žiūrėti naujienas) gali veikti nestabiliai jeigu kompiuteris atjungtas nuo interneto.
  • Taip pat keisis „Apie“ dialogo išdėstymas.
  • Šį kartą Linux versijos nėra (dėl laiko trūkumo - neturėjau kada ištestuoti ir supakuoti).

Taip pat šiame pakete galite rasti 12 žodynų:

  • anglų-lietuvių (25000), lietuvių-anglų (11500);
  • rusų-lietuvių (18800); lietuvių-rusų (28500);
  • prancūzų-lietuvių (18400); lietuvių-prancūzų (9200);
  • vokiečių-lietuvių (4600); lietuvių-vokiečių (3700);
  • lenkų-lietuvių (18700); lietuvių-lenkų (18700);
  • esperanto-lietuvių (8800); lietuvių-esperanto (10100).

Tiems, kas nepatingės patestuoti, ir išsakyti, būsiu dėkingas už visas pastabas, pasiūlymus ir komentarus.

Nelikite abejingi - paremkite šį projektą! (sąskaita ARBA PayPal: www.dict.lt „Donate“ mygtukas)

Artimiausiuose planuose - Linux versija, po to - Mac OSX versija, dar vėliau - žodynų kūrimas ir redagavimas. Deja, negaliu apibrėžti savaitėmis, kiek tie „artimiausi planai“ gali trukti. Galiu tik pažadėti, kad kiekvieni paaukoti 5 Lt „privers“ mane per per artimiausias dienas skirti bent 1 valandą šiam projektui ;)

Kitą kartą papasakosiu kaip ir su kuo visa tai kurta!

Programą atsisiųsti galite iš čia.

Pavyzdiniai ekrano vaizdai:

Windows 7 sistemoje
Windows XP sistemoje