Nuo šiandien oficialiai esu bedarbis. Bet žinokit kaip patogu pirmadienį nesikelt anksti į darbą!!! Ai, ir taip gi anksti nesikeldavau… Anivaj, prasidėjus vasarai (studentams vasara prasideda nuo Birželio pabaigos) atkuto darbdaviai ir prasidėjo darbo jėgos paieškos, bei įvairiausi verbavimai. Visas šis veiksmas neaplenkė ir manęs. Nors darbo keisti kolkas kaip ir neketinau, tačiau profilaktiškai atsiliepiu į gautus pasiūlymus ir nueinu apsišviesti į pokalbius - sveika. Ties vienu tokiu pasiūlymu ir kibau. Tiesa, pradžioj dar dvejojau, tačiau galų gale nusprendžiau, kad nepabandęs nesužinosiu savo pasirinkimo rezultato. To pasekoje šiandien atsistatydinau. Dabar savaitę pabūsiu bedarbis. Nulėksim truputį pasiilsėt į pajūrį, pagulėsim pilvus išvertę, na o po to žygiuosiu į naująją kontorą. Kokios viso to priežastys? Įdomesni projektai, didesnės tobulėjimo galimybės, ir kas be ko $$$. Tiesa, per visą šitą nežinios laikotarpį (laukiau atsakymų ir iš kitų firmų) nuplaukė mano planuotas vizitas į Airiją, tačiau išsiilsėsim ir Lietuvoje, o ten lėktuvai kursuos ir kitais metais ;-)
Archive for the 'Darbas' Category
Savo kryptelėjusių pirštukų dėka, bekodindamas darbe su pėhašpė išgavau tokį errorą:
Parse error: parse error, unexpected T_STRING, expecting T_PAAMAYIM_NEKUDOTAYIM or ‘(’ in bla bla bla on line bla
Labai patiko tas T_PAAMAYIM_NEKUDOTAYIM. Viską iškart paaiškina apie ką klaida :-) Šiek tiek pagūglinęs išgavau, jog tai berods hebrajų kalba reiškia du dvitaškius. Manuale atsiverčiau tokenų sąrašą, ir radau patvirtinimą:
Token: T_PAAMAYIM_NEKUDOTAYIM
Syntax: ::
Reference: ::. Also defined as T_DOUBLE_COLON.
Just fun.
Visiškai nudurnėjau. Atėjau šiandien į darbą pats pirmas ir suvokiau, kad neturiu ką dirbti, nes prieš tai daryta užduotis jau iš… (pavadinkim tai “išsunkta”) per visus galus. Liaudis pradėjo rinktis tik po dviejų valandų, tai visą tą laiką nieko neveikiau. Iš neturėjimo ką veikti pradėjau hipnotizuotis. Prisipastinau į teksto redaktorių daaaug daaaug tokių va linijų (galingesnė versija čia):
\ \ \ \ \ \ \ \ \ \ \ \ \
\ \ \ \ \ \ \ \ \ \ \ \ \ \
\ \ \ \ \ \ \ \ \ \ \ \ \
\ \ \ \ \ \ \ \ \ \ \ \ \
\ \ \ \ \ \ \ \ \ \ \ \ \
\ \ \ \ \ \ \ \ \ \ \ \ \
…sėdžiu ir scrollinu aukštyn žemyn. Atrodo, kad tos linijos slenka :-) Taip dariau gal apie 10 minučių, kol kažkas neužkalbino per ICQ. Baisu!
Gaminu tokį serverį. Viskas sukasi ant Linux, dirbu su C++ ir POSIX gijomis. Serveris gauna užklausas iš kliento, jas atitinkamai įvykdo ir grąžina (čia reik nosinės? ne?) rezultatus klientui. Viskas turi vykti maksimaliu greičiu. Užklausos gali eiti iš 100 klientų vienu metu, tad siekiant didžiausios spartos be gijų (threadų, jei kam nors taip labiau patinka) neapsieisim. Dabar visas serverio darbas vyksta maždaug taip: gaunama užklausa iš kliento, listenerio gija nuskaito iš socketo atėjusią užduotį ir įrašo į FIFO eilę. Tuo pat metu sukasi n gijų, kurios yra atsakingos už darbų atlikimus. Šių gijų kodas atrodo taip:
void * worker(void * parm)
{
Step step;
bool gotData = false;
while (serverOn)
{
pthread_mutex_lock(&mutex);
if (!eile.empty())
{
step = eile.pop();
gotData = true;
}
pthread_mutex_unlock(&mutex);
if (gotData)
{
std::string result = readData(*step.sock, step.number);
setResult(*(step.sock), result);
delete step.sock;
gotData = false;
}
sleep(1); //Atkreipkit dėmesį čia.
}
}
Kaip matot, gija dirba nuolat, kol yra įjungtas serveris. Užrakinamas mutexas, jei yra darbų, nusiskaitomas darbas, mutexas atrakinamas ir vykdomi reikalingi veiksmai. Viskas paprasta ir aišku, tik man ramybės neduoda tas sleep(1);. Jį įdėjau tam, kad jei kodas būna be jo, labai ėdami CPU resursai, nes ciklas nuolat sukasi nieko naudingo neveikdamas. O su sleep(1) yra įvedamas kažkoks taktas. Žinau, kad tai nėra geriausias pasirinkimas, nes kažkurį laiko momentą gijos nieko neveiks, nors ir bus darbų. Veltui švaistomas laikas. Kadangi su tokiu darbu susidūriau pirmą kartą, tai tiksliai ir nežinau kaip viskas yra daroma, kad sprendimas būtų optimaliausias. Gal kas turit idėjų kaip sinchronizavimą padaryt veiksmingesniu?
Štai ir parvykau iš visokių Palangų. O va šiandien įvyko pirmoji mano diena darbe. Sukonstravo man darbo vietą, susijungiau kabelius ir prasidėjo mano darbas. Pirmiausiai, kad būtų galima gyventi, susiinstaliavau Operą :-) Na o tada pradėjau ieškotis su kuo čia dirbti. GCC ant Cygwin pasirodė kažkokia pornografika (tikriausiai todėl, kad naudojausi pirmą kartą) ir šiaip kažkaip instinktyviai komandinėje eilutėje rašydavau ls -l vietoj dir. Šiaip gal ir būtų įmanoma dirbi, bet vistiek rytoj nešuosi į darbą Ubuntu CD :-) Kadangi jau vėlu, mintys neliejasi kaip kitais kartais, tad einu miegot :-P
Šiandien darbo paieškos kaip ir baigėsi. Na ne todėl, kad nuspręndžiau būti lodarium ir niekada nedirbt, nors šiaip irgi visai nieko būtų :-). Esu kviečiamas dirbti į vieną UAB. Pradėsiu nuo dar kitos savaitės, nes ateinančią savaitę dar lekiam su savo saulute iki Palangos pasižmonėt.
Kaip radau darbą? Kaip ir dauguma - pasiuntinėjau CV (tiesą sakant nedaug), parašinėjau el. laiškus: “Ar dar ieškote darbuotojų?”. Vieni nieko neatsakė, iš kito gavau keletą užduotėlių “po šimtą litų”, treti kolkas rinkosi tik kontaktus. Ir gavau vieną atsakymą:
dabar ieškome HTML techninio dizainerio, tačiau galite pamėginti atlikti bandomąją PHP užduotėlę ir jei ją atliktumėte labai gerai mūsų supratimu, tai galėtumėte pretenduoti į PHP programuotojo vietą. ar domintų?
Žinoma sutikau, vistiek sėdėjau praktiškai nieko neveikdamas. Atsiuntė užduotį, kurią, kaip supratau, siuntinėja visiems norintiems pas juos dirbti. Reikėjo padaryti paprastą naujienų administravimo sistemą, kuri informaciją saugotų tekstiniame faile. Prie viso šito buvo dar keletas reikalavimų ir bonusų. Žinoma užduotį atlikau ir išvažiavau pas atostogas. Po visų atostogavimų savo pašto dėžutėje radau kvietimą kitą dieną ateit į pokalbį.
Pokalbis buvo pirmas mano gyvenime, nes iki dabar versdavausi namie. UABas įsikūręs laaabai neblogoje vietoje: patogu atvykti nuo mano namų, universitetas taip pat netoli (čia jau planavau, kad visai patogu būtų čia dirbti :-)). Pašnekėjom, paplepėjom, paklausinėjo ką moku, kaip moku, ko noriu, kiek noriu ir galų gale davė dar vieną užduotėlę: parašyt serveriui šiokį tokį bandomąjį servisą. Pokalbiu likau patenkintas ir sėkmingai skuodžiau namo laukti el. paštu turėjusių ateiti tikslesnių užduoties reikalavimų. Sudorojau užduotėlę tą pačią dieną ir išsiunčiau rezultatus. Tada laukiau. Vakar irgi laukiau. Ir šiandien pusę dienos laukiau. Galų gale sulaukiau:
sveikas Povilai,
malonu jog greitai susigaudei situacijoje ir atsiuntei pavyzdini modeli.
tiesa sakant nepaleidom jo nes neturim c++ kompiliatoriu, taciau manau
jog tai yra labai panasu ka patiems teko daryti universitele per
laboratorinius. kogero pajungiant i si reikala PHP galima rasti kazkoki
patogesni sprendima bet cia jau ir butu darbas tai suprogramuoti.noretume pasitikslinti kada konkreciai galetum pradeti dirbti ir kiek
laiko galetum skirti darbui, pagal tai Laimis pirmadieni suformuluotu
pasiulyma. jei turi galimybiu gali pradeti dirbti jau nuo sio pirmadienio.laukiu atsakymo, iki
Tei vat. Galit prisijungti prie kitų ir mane pasveikinti :-) Valio!!!
Kalbant apie mano darbus, ištrauka iš vieno pokalbio:
...
Pawka dar vienas klausimas…
Pawka kaip mane radai?
Pawka :-)
[klientas] :D
[klientas] pagaresjes jau cia esi
[klientas] :))
Pawka kur tas “čia” ? :-)
Pawka VU ?
[klientas] net’o platybese
Pasirodo visai veiksmingą reklamos kampaniją pravędęs esu :-) Beje, praeitą savaitę į mano weblogą užklydo lankytojas, gūgl parašęs užklausą “darau laboratorinius C++” :-)