Archive for the ‘Programavimas’ Category

Infoshow PHP ir Ruby konferencijos 2008

Monday, April 14th, 2008

Šį savaitgalį Kaune galima būtų vadinti programavimo konferencijų savaitgaliu. Penktadienį vyko jau penktoji - jubiliejinė PHP konferencija Kaune, o vakar - šeštadienį - pirmoji Ruby konferencija. Pradžioje norėjau rašyt du atskirus pranešimus, tačiau kol vakar išsikrapščiau iš lovos ir pavalgiau, iškart teko skubėti į Ruby renginį. Jei ne Eimanto laiškas, informavęs apie PHP konferenciją, tai tikriausiai būčiau ir pražiopsojęs (nors buvau užsiregistravęs ir laukiau). Tas pats būtų nutikę ir su Ruby - galvojau, kad vyks kitą savaitgalį.

PHP Konferencija

Tokie renginiai man labai patinka, tačiau gaila, kad pranešėjų buvo ganėtinai mažai, lyginant su ankstesniais kartais. Galbūt krenta PHP populiarumas (nemanau), o gal tiesiog nepavyko surinkti žmonių. Viso turėjo būti penki pranešimai, tačiau jau renginio pradžioje sužinojome, kad bus tik keturi. Povilas, turėjęs kalbėti apie saugumą negalėjo atvykti. Apie viską iš eilės:

  • Tomas Liubinas - Perfomance. Tomas kalbėjo apie sistemos (ne tik PHP) veikimo spartą ir optimizavimą. Tema aktuali kiekvienam. Tačiau mano nuomone pranešėjas į kaikurias smulkmenas gilinosi kiek permažai ir tik greitai apibūdino į ką reiktų atkreipti dėmesį. Prezentacijoj figūravo tokie teiginiai, kad prieš ciklą reiktų iškelti count() funkciją, nes viduj ją naudoti netikslinga (šitą manau dar mokykloje visi mokėmės) arba, kad vietoj $x / 2 reiktų naudoti $2 * 0.5. Neišdrįsau paklaust ar Oxid’e (Tomas dirba NFQ) jie visur vietoj dalybos tikrai naudoja daugybą. :-) Neabejoju Tomo profesionalumu (apie tai negali būti net kalbos), tačiau norėjosi, kad tema būtų pakrapštyta truputį giliau.
  • Emilis Dambauskas - Kodo interpretacija ir analizė. Už skambaus pavadinimo slepiasi paprasta tema. Jis tiesiog papasakojo kaip paprastai svetainei rinkosi platformą iš Wordpress, Joomla ir Drupal, pasinaudodamas esminiais testavimo ir palyginimo metodais. Viskas aišku, suprantama, paprasta, o svarbiausia - malonu klausyt. Beje, Emilio testavimo metodika buvo naudojama “ant” Ubuntu (galima pritaikyti ir kitoms OS), kas leido jam surinkti daugiau pliusų iš mano pusės :-)
  • Sergej Kurakin - Pasiimam duomenis iš trečios šalies šaltinių. Tema įdomi, papasakota gerai. Jei nesate su tuo susidūrę, peržiūrėkite kai atsiras vaizdo įrašai.
  • Rimtantas Liubertas, imCat - CSRF. Pranešėjas kalbėjo apie CSRF atakas, kurių pagalba gali būti vogiami duomenys ar vykdomi kiti pikti veiksmai (ar atakos būna kitokios?). Vėlgi - viskas greita ir paprasta. Prezentacijos metu Rimantas pastebėjo, kad trūksta kaikurių skaidrių, tad pranešimas turbūt dar labiau sutrumpėjo. Skaidrių dingimas vėl pasikartojo kitą dieną vykusioje Ruby konferencijoje.

Kaip minėjau, renginys praėjo labai greitai, tad dauguma nubildėjome į netoliese esančią kavinę pasiafterpartinti. Prisėdę pratesėm konferenciją, šiek tiek padiskutavome aktualiomis temomis ir išsiskirstėme.

Ruby konferencija

Vakar nuo 11 ryto vyko pirmoji Lietuvoje Ruby konferencija. Dieną prieš, kalbėjau su Artūru apie prie konferencijos norėjusius prisijungti Python’istus, šis paminėjo, kad papildomiems pranešimams nelabai yra laiko, nes ir pačius laikas spaudžia. Tad maniau, jog renginys vyks gal iki 18 valandos vėliausiai. Kaip paaiškėjo vėliau - klydau. Pats renginys užsitesė iki vėlumos ir baigėsi truputį po 21, tačiau aš galo taip ir nesulaukiau - išlėkiau paskutinio pranešimo viduryje. Nenuostabu, kad per tokį laiką sugeneruotos informacijos srautas buvo didžiulis, tad visko nuosekliai atkurti nesugebėsiu. Trumpai papasakosiu kas kokias roles atliko. Konferencijoje dalyvavo 5 pranešėjai:

  • Artūras ‘arturaz’ Šlajus. Oficialiai - renginio organizatorius. Taip pat turbūt daugiausiai kalbėjęs pranešėjas - pasakojo kelias prezentacijas. Artūras pradėjo nuo susipažinimo “Kas yra Ruby?”, pateikė keletą gyvų pavyzdžių suprogramuodamas registraciją ar dar kažką ir gilindamasis į sudėtingesnius dalykus. Man asmeniškai nepatiko Artūro kalbėjimo stilius. Pranešimo metu keli bajeriai yra ok, bet kai jų kiekis lenkia pranešimo turinį tai jau negerai. Reikia gerbti klausytoją ir taupyt jo, tiek ir savo laiką. Artūrai, tiesiog kitą kartą (kuris, manau tikrai bus) perdaug neatsipalaiduok ir bus ok :-)
  • Laurynas Liutkus pasakojo apie Rubio modulių rašymą su C. Kadangi jaučiu simpatijas C/C++, tai prezentaciją stebėjau su malonumu.
  • Saulius Grigaitis, Rubyonrails.lt autorius, buvo tas pranešėjas kurio klausyti tikras malonumas. Praktiškai kiekvienas jo pasakytas sakinys yra naudingas - malonu ir aišku klausyti. Saulius pasakojo apie testavimą, saugumą ir dar kažką.
  • Eimantas ‘enc’ Vaičiūnas turėjo pasakot apie kažką su JavaScript, tačiau galiausiai pats apsigalvojo, tad supažindino su rake naudojimu. Trumpa, paprasta ir aišku. Tiesa, tikėjausi, kad Eimantas daugiau pasireikš konferencijos metu :-)
  • Fiodor Vereščiaka pasakojo apie kito Ruby karkaso - MERB naudojimą. Manau, prezentacija daugiau skirta įsigilinusiems į Rails karkasą ir galintiems jį palyginti su MERB’u. Kadangi Fiodor kalbėjo paskutinis, o konferencija, kaip minėjau, užtruko, tai jo pranešimo pabaigos taip ir nesulaukiau.

Dėkoju organizatoriams ir laukiu kitų renginių. Girdėjau gandų, kad galbūt jo netgi nereiks laukti iki kitų metų (kalbu apie PHP) :-)

Komodo Edit nuo šiol atviro kodo produktas

Tuesday, March 11th, 2008

Komodo Edit - galingas multiplatforminis tekstinis redaktorius, skirtas programuotojms. Prieš kelias dienas pasirodė naujoji 4.3 versija. Sulig šios versijos pasirodymu, redaktorius tapo atviro kodo produktu. Komodo Edit yra daug apdovanojimų pelniusio Komodo IDE supaprastinta ir nemokama versija. Produktas palaiko daugelį dinaminių programavimo kalbų, įskaitant PHP, Python, Ruby, Perl, Tcl ir kt., taip pat web programavimui: JavaScript, CSS, HTML, XML. Be to yra sintaksės žymėjimo, autocomplete, paieškos pagal reguliarias išraiškas, projektų valdymo ir kitos naudingos funkcijos, be kurių šiais laikais sunkiai įsivaizduojame programavimo įrankius. Komodo Edit sukurtas Mozilla kodo pagrindu, tad yra platinamas pagal tas pačias licenzijas kaip ir Firefox. Be to įdiegta įskiepių (plug-ins) sistema, analogiška Firefox naršyklei, leidžianti nesunkiai valdyti ir kurti priedus. Palaikomų įskiepių sąrašą galite rasti čia. Ten jau dabar yra neblogų dalykų.

Pats asmeniškai jau kurį laiką dirbu būtent su šiuo produktu ir esu patenkintas jo teikiamomis galimybėmis. Tuo labiau, kai visiškai nemokamai ir teisėtai gaunu tokį galimybių rinkinį, kuris netgi lenkia kaikuriuos mokamus produktus.

IT Kovos ‘08 - programavimo turnyras

Tuesday, February 12th, 2008

Šiais metais pastebėjau programavimo turnyrų suaktyvėjimą Lietuvoje. Tam tikriausiai turėjo įtakos Plat_Forms 2007. Vakar buvęs kolega Antanas paprašė pranešti apie 7d organizuojamą programavimo turnyrą - IT Kovos { nukauk priešininką kodu }. Organizatoriai kviečia suburti komandas iš 2-3 asmenų, dirbančių web kūrimo srityje ir programuojančių PHP bei JavaScript kalbomis. Dalyvauti gali IT įmonių arba studentų komandos. Paklausiau Antano, kaip dėl mišrių komandų, jis patikino, kad dėl to problemų tikrai nebus :-) Dalyviai gaus užduotį, kurią turės įgyvendinti per 10 valandų. Organizatoriai pabrėžia, kad bus siekiama atkreipti dėmesį į problemas su kuriomis susiduria aklieji ir silpnaregiai, naršydami internete. Tai labai opi problema šių dienų lietuviškame internete. Tad vertinant darbus bus atsižvelgiama į suderinamumą, o vienas iš komisijos narių bus atstovas iš Lietuvos Aklųjų ir Silpnaregių Sąjungos.

Turnyras vyks KTU regioniniame mokslo parke (tam pačiam pastate kur vyko PHP Security konferencija) Kovo 21 dieną (penktadienį), o registracija vyksta iki Kovo 10 dienos. Dalyvio mokestis studentų komandoms: 28 Lt, o imonėms: 29 Lt. Bendras prizinis fondas: 6000 Lt, tačiau Antanas teigė, kad tikrai nenori, jog dalyvavimas būtų dėl prizų. Turnyro tikslas susipažinti, pabendrauti, parodyti savo žinias ir sugebėjimus. Laiko suburti komandą ir pasiruošti dar yra pakankamai, tad nemiegokit!

Daugiau informacijos oficialiame turnyro puslapyje www.itkovos.lt.

UNIX filosofijos galia

Tuesday, January 8th, 2008

UNIX operacinė sistema ir jai skirtos programos (kad ir sort, join ir t.t.) buvo kuriamos remiantis tam tikromis taisyklėmis. Šios taisyklės apibrėžia kaip kurti ne tik švarų ir paprastą programos kodą, tačiau ir programos sąsają, bei išlaikyti kūrinio efektyvumą. Didžiausi UNIX guru, kaip Doug McIlroy, Eric Raymond ar Rob Pike skelbė savuosius taisyklių rinkinius “kaip rašyti patogų kodą”, tačiau jie skiriasi nedaug - pati esmė išlaikoma visuose rinkiniuose. Žemiau pateikiu Mike Gancarz’o suformuluotas devynias pagrindines taisykles, kurios ir yra vadinamos UNIX filosofija:

  • Mažas reiškia gražus.
  • Rašyk kiekvieną programą taip, kad ji gerai atliktų vieną darbą.
  • Susikurk programos prototipą kuo anksčiau.
  • Rinkis mobilumą vietoj efektyvumo.
  • Saugok skaitinius duomenis tekstiniuose failiuose.
  • Naudok pakartotinį kodo panaudojimą (nebūtinai savo :-P).
  • Naudokis shell skriptais veiksmingumui ir mobilumui užtikrinti.
  • Venk sudėtingos vartotojo sąsajos.
  • Kiekvieną programą rašyk kaip filtrą, kad jos išvedamus duomenis galėtų panaudoti kitos programos.

Jei apie šias išvardintas dogmas norisi paskaityti daugiau, tai galite padaryti čia: “The Unix Philosophy”. Žinoma, nereikia visko priimti kaip šventos tiesos ir girežtai pulti laikytis, rašant betkokias programas be išimties. Taip pat nereikia pamiršti, kad pagrindinė UNIX veikimo sąsaja buvo komandinė eilutė, tad nuo tų laikų daug kas pasikeitę. Tačiau ir šiais laikais šiuose žodžiuose galima rasti daug tiesos. Kaikurios taisyklės labiau linksta link inžinerijos ar struktūrinių šablonų, o kitos labiau susijusios su pačiu programavimu. Manau ne vienas jūsų laikotęs panašių principų.

Neseniai pačiam teko susidurti rašant vieną klientinę aplikaciją. Aplikacija parsisiunčia duomenis iš serverio, vykdo tam tikrus veiksmus (atsižvelgiant į duomenis ir atskirai), registruoja informaciją serveryje, yra valdoma per grafinę vartotojo sąsają. Visų pirma visus vykdomus išorinius veikmus (vaizdo grotuvo paleidimas, raportavimas, garso reguliavimas ir t.t.) aprašiau shell skriptais. Tai leidžia nesunkiai ir greitai atlikti pakeitimus ir pritaikyti programą skirtingiems kompiuteriams. Tam netgi nereikia žinoti programos kodo - užtenka žinoti kokie parametrai paduodami konkrečiam skriptui. Nereikia programos perkompiliuoti. Duomenų parsiuntimui ar išsiuntimui paprastai reiktų pasirašyti kokią klasę. Bet kam, jei yra wget arba fetch? Wget programos iškvietimą taip pat įrašiau į skirptą ir nesuku galvos. Duomenų registravimui nutolusiame serveryje irgi panaudojau tą patį wget, nes man tiesiog užtenka kreiptis į URL nurodžius tam tikrus parametrus. Esant reikalui, galima patogiai pasiimti betkokią sistemos informaciją, ją išsifiltruoti ir susirikiuoti prieš paduodant jūsų programai. Vieną iš rikiavimo pavyzdžių buvau pateikęs įraše Jūsų TOP 10 dažniausiai naudojamų konsolės komandų. Čia ir slypi programavimo UNIX aplinkoje galia, palengvinanti darbą mums - programuotojams. Norėdami plačiau apsišviesti galite paskaityti Basics of the Unix Philosophy.

PHP savaitgalis ir saugumo spragos Lietuvos vyriausiybės puslapiuose

Tuesday, April 17th, 2007

Savaitgalis truputį užsitesė, nes pirmadienį ir antradienį vyko PHP Secutiry Conference. Dar pridėjus šeštadienį vykusią (ir kokybės prasme vykusią) Infoshow PHP konferenciją (feedbackas čia) gavosi tikras PHP savaigalis.

Infoshow PHP konferencija 2007

Matosi, kad su kiekvienais metais Lietuvoje rengiamos PHP konferencijos tobulėja tiek pranešimų, tiek ir organizavimo atžvilgiu. Šiemet netgi turėjom remėją, kuris labai protingai viliojo programerius pas save :-) Pranešimų nevertinsiu, nes tai puikiausiai galėsit padaryt patys, kai bus įdėta filmuota medžiaga (turėtų pasirodyti dviejų savaičių bėgyje). Galiu tik pasakyti, kad praktiškai visi pranešimai yra verti dėmsio. Norėčiau išskirti tik R. Švarplio temą “PHP ir dideli duomenų kiekiai”. Savo pranešime Ričardas papasakojo apie braškilijoninių duomenų kiekių apdorojimą, siekiant kuo didesnės spartos, bei patvirtino kaikuriuos mano teiginius (pvz., kad nėra būtina visad normalizuoti duomenų bazę). Kaip pavyzdį pateikė NFQ projektą Swoodoo.de, kurio vienas iš reikalavimų buvo iš milijoninių duomenų išrinkti reikiamus ir tai atlikti ne daugiau, kaip per 0.1 sekundės.

PHP Security Conference

Pirmadienį prasidėjo kitas renginys. Ši konferencija truko dvi dienas, nuo 9:00 iki 17:00. Konferenciją vedė Johann-Peter Hartmann - PHP saugumo specialistas. Į renginį susirinko tie patys matyti veidai. Pasakoti kas ir kaip nelabai gaunasi, nes reiktų išdėstyti praktiškai visą medžiagą. Pirmąją dieną teko išgirsti plačią saugumo teoriją apie XSS, SQL bei kodo injekcijas, kritines funkcijas ir t.t. Na o šiandien prasidėjo visos linksmybės. Neturėdamas piktų kėslų, vedėjas gyvai pravedė hack sesiją, kurios metu pademonstravo saugumo spragas įvairiuose puslapiuose. Kaikurie taikiniai buvo pasirinkti atsitiktinai, kitus pasiūlė konferencijos klausytojai. Vienas taikinių buvo Lietuvos vyriausybės puslapis, kurio klaidomis pasinaudoti užteko vos pusvalandžio. Hartmann’as rimtu veidu žurnalistę tikino, kad tokį atvėjį mato tik Lietuvoje. Žinoma jis juokavo :-) Taip jau yra, kad valstybinės organizacijos rūpinasi savo puslapių saugumu per mažai. Ne menkesnės klaidos buvo aptiktos ir kituose puslapiuose. Apibendrinus, renginys, kaip ir visas savaitgalis, vertas dėmesio.

Konferencijų derlius

Thursday, April 5th, 2007

Šie metai ypač derlingi, turint galvoje man aktualias konferencijas. Dar nespėjom atsigaut nuo praūžusios Lietuvos Blogerių konferencijos 2007, o jau gyvenu kitų konferencijų dvasia. Dabar artimiausiu metu nusiamto balandžio 14 dieną Kaune vyksianti Infoshow PHP konferencija. Pradžioj organizatoriai turbūt nesitikėjo tokio didelio susidomėjimo, nes norinčių buvo daugiau nei sėdimų vietų, tad teko pakartoti registraciją. Tilpau :-) Tačiau tai bus tik apšilimas prieš PHP Security Training, kuri vyks vėlgi Kaune, praėjus vienai dienai po Infoshow PHP konferencijos. Lietuvoje tai bus turbūt pirmas kartas, kai apie PHP pasakos svečias iš užsienio, dirbantis su PHP. Praleisti tokį renginį būtų nuodėmė. Kaunas - PHP sostinė! :-) Praktiškai susistygavau darbus ir reikalus, kad įtilpčiau ir į šį renginį ir užpildžiau dalyvavimo formą. Užtat reiks gerokai padirbėt per šventes, kad nenukentėtų mano klientūra kol būsiu dingęs dvi dienas. Tačiau šiemet turbūt dar ne viskas, kas susiję su PHP! Ore dar kabo medučio konferencija, kuri, kiek suprantu, kolkas nenori būti užgožta pastarųjų renginių. Gal ir gerai, nes po PHP savaitgalio reikės šiek tiek laiko apdoroti įgautą informaciją. Anivaj, laukiu ir jos, nes ji turėtų neapsiriboti vien PHP, tad turėtų būti tikrai įdomu.

Bėdos su dinaminiu DLL užkrovimu su C++

Sunday, December 17th, 2006

Gaminu čia mokslams tokį kursinį. Semestro darbas. Nors pradžioje turėjom vilčių pradėt (ir užbaigt) kuo anksčiau, bet va, mokslų liko tik viena savaitė, o mūsų projektas dar neužbaigtas. Norėjosi geriau, gavosi kaip visada. Žodžiu, reikia parašyti programą, dirbančią su aprašytomis schemomis. Nusprendžiau, kad bus labai gražu ir patogu duotas schemas sukompiliuoti į DLL failus, o paskui, programos vykdymo eigoje, vartotojas (aka dėstytojas) galės pasirinkti schemą. Vakar teko užtektinai su tuo pasikrušti. Pagal visus oficialius ir neoficialius pavyzdžius NIEKAIP nepavyko suprograminti, kad DLL’as būtų užkraunamas dinamiškai.

Anot visokių wikipedijų ir MSDN’ų, apsirašom DLL’ą maždaug taip:


#include <windows .h>

BOOL APIENTRY DllMain(HANDLE hModule, DWORD dwReason, LPVOID lpReserved)
{
    return TRUE;
}

//Eksportuojam funkciją.
extern "C" __declspec(dllexport) int test()
{
    return 123;
}

Sukompiliuosim ir turėsim DLL’ą su labai reikalinga funkcija test(), kuri grąžins 123 :-) Dabar galim bandyti naudoti šį kūrinį statiškai (bandžiau įsitikinti ar veikia).


#include <windows .h>
#include <iostream>

//Importuojam funkciją.
extern "C" __declspec(dllimport)int test();

int main(int argc, char **argv)
{
    int tmp = test();
    std::cout < < tmp << endl;
    return 0;
}

Viskas kaip ir OK, veikė kuo puikiausiai (į projektą įtraukus *.lib). Reiškia DLL’as gyvas. Bet kadangi mano užduočiai statinis variantas netiko, nes schemų gali būti bet kokių ir bet kiek, tai reikėjo rinktis dinaminį DLL užkrovimą. Maždaug pasirenku kokį noriu failą, jis patikrinamas ar tai būtent schemos failas (ar turi reikiamus metodus), jei viskas tvarkoj - naudojam. Viso šito sourcas toks:


#include <windows .h>
#include <iostream>

//Būsimos funkcijos aprašas.
typedef int (*importFunction)();

int main(int argc, char **argv)
{
    importFunction test;
    int result;

    //Užkraunam DLL'ą.
    HINSTANCE hinstLib = LoadLibrary("ManoDLL.dll");
    if (hinstLib == NULL)
    {
        std::cout < < "ERROR: unable to load DLL" << endl;
        return 1;
    }
    // Gaunam rodyklę į funkciją.
    test = (importFunction)GetProcAddress(hinstLib, "test");
    //Tikrinam ar funkcija egzistuoja.
    if (test == NULL)
    {
        std::cout << "ERROR: unable to find DLL function" << endl;
        FreeLibrary(hinstLib);
        return 1;
    }
    result = test();
    // Iškraunam DLL'ą iš atminties.
    FreeLibrary(hinstLib);
    std::cout << "The result was: " << result << endl;
    return 0;
}

Va čia ir prasidėjo bėdos. DLL’as būdavo užkraunamas, tačiau GetProcAddress vis nesugebėdavo atrinkti reikiamo metodo. Kas man iš to dll’o jei negaliu naudot jo metodų? Buvo siūlymų prie metodo eksportinimo darašyt cdecl, tačiau tai nepadėjo. Po kelių valandų bandymų ir ieškojimų išradau, jog DLL’e aprašant funkciją, reik prirašyt __stdcall:


//Eksportuojam funkciją.
extern "C" __declspec(dllexport) int __stdcall test()
{
    return 123;
}

Dabar viskas veikia kuo puikiausiai :-) Daugiau info MSDN’e ir Wikipedijoj.

T_PAAMAYIM_NEKUDOTAYIM

Friday, November 17th, 2006

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.

Multithreaded-serverio gijų sinchronizavimas

Thursday, August 3rd, 2006

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?

Infoshow PHP Konferencija 2006

Wednesday, April 26th, 2006

Ir aš ten buvau… :-P Mano nuomone, ši konferencija dar nebuvo pilnai “pribrendus”, nes vyko ganėtinai greitai po prieš tai rengtos konferencijos VDU’ne. Tai buvo pastebima ir iš pranešimų temų. Šnekėti apie PHP saugumą tampa mados reikalu :-) Projektų planavimo tema irgi įgauna pagreitį… (ha! pasirodo tai netgi geriau nei UML). Kita vertus visai smagu apsilankyti tokiuose, nekasdieniuose renginiuose aktualia tema. Renginys buvo toks easy listening, jokių “sunkesnių” temų (kurių retkarčiais norėtusi). Žiūrovų kiekis buvo gerokai didesnis nei pernai čia pat vykusioje konferencijoje. Gaila, kad pats ne visus pranešimus galėjau pilnai išklausyti, nes vėlavau dėl darbų, paskui po pertraukos dėl užsitęsusių pietų ir išlėkiau lauk dėl mokslų. Gerai, kad kažkur internete yra vaizdo įrašas. Dar norėčiau paprašyti pranešimų skaitytojų, kad ateityje į skaidres netalpintų be galo daug sourco, nes, visų pirma, auditorijoje nieko nesimato, o antra - yra manualai. Dėkoju organizatoriams už renginį!


Buy Zithromax Alprazolam Buy Paxil Buy Cialis Online Zovirax Buy Lipitor Diflucan Buy Darvocet Lortab Buy Phentermine Online Buy Xanax Online Buy Percocet Norco Buy Lexapro Buy Zyban Zocor Xanax On Line Effexor Biaxin Meridia Buy Lortab Lorazepam Zyprexa Buy Alprazolam Buy Levitra Buy Ephedrine Buy Bontril Buy Carisoprodol Cipro Buy Glucophage Norvasc Ultram Tramadol Buy Generic Viagra Paxil Buy Prozac Oxycontin Ultracet Ambien Buy Tramadol Online Celexa Buy Soma Tenuate Buy Viagra Online Buy Vicodin Levitra Adderall Buy Effexor Buy Cipro Viagra Valium Online