Prenumeruok RSS

Straipsniai pagal gairę

Teisingas web projektų publikavimas 2

Kažkiek paeksperimentavęs su keletą publikavimo metodų, nusprendžiau, kad man vis dėlto pats priimtiniausias publikavimo metodas Capistrano. Nors jis labiau skirtas ruby tipo projektams publikuoti, bet jis pakankamai lengvai pritaikomas ir tarkim PHP projektams. Vienintelis minusas, kad jis skirtas publikuoti į serverį kuris turi ssh prisijungimą.

Gan neblogas pavyzdys galimybių pritaikytų PHP projektui yra symfony applikacijų deploymentas. Kitiems užtektų daug paprastesnio varianto. Pavyzdžiui aš naudoju tokio tipo scriptą. Uždėjau komentarų ką kai kurios eilutės reiškia.

# Projekto pavadinimas
set :application, “projektas.lt”

# Serverio adresas turintis ssh prisijugima
role :web, “server.zilionis.net:2222″

# Serverio vartotojas. Slatazodzio nenaudoju nes prisijungimas padarytas
# automatinis pasinaudojus rsa raktais
set :user, “zilionis”

set :use_sudo, false

# direktorija kur bus publikuojamas projektas
# document rootas bus tarkim /home/zilionis/domains/projektas.lt/web/current
set :deploy_to, “/home/zilionis/domains/#{application}/web/”
set :shared, “/home/zilionis/domains/#{application}/web/shared”

# SVN nustatumai
set :urlrepository, “http://svn.repo.server/repos/projektas_lt/trunk”
set :scm_username, “JusuSvnUseris”
set :scm_password, “JusuSvnSlaptazodis”

set :repository,  “–username #{scm_username} –password #{scm_password} –no-auth-cache #{urlrepository}”

set :checkout, “export”
set :keep_releases, 3

desc “This will deploy the app”
task :live do
# istraukiam is svn’o projekta
run “svn –quiet #{checkout} #{repository} #{release_path}”

# darom symbolik linkus dideliems libams kurie ne svn’e
run “ln -nfs #{shared}/lib/Zend #{release_path}/project/lib/Zend”
run “ln -nfs #{shared}/lib/ext #{release_path}/public_html/scripts/ext”

# uzchodiman reikiamus failus/direktorijas
run “chmod -R 777 #{release_path}/project/cache”

# paradom aktyvu releasa
run “ln -nfs #{release_path} #{current_path}”
end

Skanaus :)

Teisingas web projektų publikavimas

Dirbant su didesniais web projektais yra vienas žingsnis, kuris kartais kelia net galvos skausmą. Nors tai atrodytų elementaru – projekto publikavimas, atnaujinimas, bet tai yra dažnai sudėtingiau nei atrodo.  Su kokiomis problemomis dažniausiai galima susidurti?

Tarkim el. parduotuvei yra užsakytas didelis atnaujinimas, kuriame yra tiek dizaino atnaujinimai, tiek naujų funkcionalumų įdiegimas. Publikuojant visuomet reikia prisiminti, kad:

  • Įkelti visus reikalingus failus

Jei galvojate, kad protingas sprendimas viską projektą tiesiog įkelti negalvojant tai tinka ne visuomet. Tai tinka dažniausiai tik mažoms svetainėms. Geriausias sprendimas yra toks, kad atnaujinti tik, tai kas pasikeitė. Tai galėtų padėti dalinis svn exportavimas naudojant papildomus skriptus (tarkim naudoju kartais mofio šiek tiek modifikuotas mano), arba naudojantis servisais kurie suteikia automatinio deploymento galimybes tarkim springloops.com, beanstalkapp.com ir t.t. Kelti visą projektą rankiniu būdų yra blogai, nes tai pirma pakankamai ilgai užtrunka (nebent kopijuotume vieną suarchyvuotą failą ir jį vietoje išarchyvuotumėte), bet ir galimi dažni tarkim ftp sutrikimai.

  • Nustatyti teisingas direktorijos teises
  • Atnaujinti duombazes
  • Išvalyti (jei reikia) naudojamą cache

Kiti darbai dažniausiai daromi rankiniu būdu, bet to galima išvengti. Tarkim įkėlus failus galima turėti savo deploymento skriptą, kuris atlieka vis reikalingus darbus už jus. Springloops turi galimybę “papinginti” nustatytą url, kai deploymentas yra užbaigtas. O ten pagal jūsų nustatys scenarijus atlieki veismai, tarkim

<?php Object::getCache()->clearCache();

$aDirsToChmod = array(‘path/dir1′,’path/dir1′);
foreach ($aDirsToChmod as $sDir) { chmod($sDir, 777);} ?>

Su duomebazių atnaujinimais, galimi įvairūs scenarijai, tiek rankinis, tiek per pagalbines priemos.

  • Galite pasidaryti savo duombazių atnaujinimo mecganizmą su pagalbine db lentele, kurioje saugomi versijuojami db atnaujinimai
  • naudoti SQL ORM tarkim Doctrine

Galima naudoti ir daugelį kitų priemonių tokių kaip Capistrano (padarytas su rubiu), Fredistrano (PHP, CakePHP), Phing

O kaip realizuojate jūs?

Išnaudokime automatinį veiksmų vykdymą

Automatinius veiksmus naršyklėje galima išnaudoti web programų/puslapių testavimui, nustatytų veiksmų eigos vykdymas ar tarkim simuliuoti žaidimų veiksmus (cheatinti)

Viena iš sunkiausių užduočių kuriant bet kokią programinę įrangą (tas pats yra ir web svetaines) yra testavimas. Priklausomai nuo poreikių testuojama tiek rankiniu tiek automatiniu būdu, O tai kartu yra ir sudėtingas ir monotoninis darbas. Automatinis testavimas žymiai pagreitina ir supaprastina visą testavimo procesą.

Bet kurio testavimo esmė gauti teisingus rezultatus su kontroliniais duomenimis. Tai gali vykti tiek programiniame lygmenyje (į kurį veltis dabar nesiruošiame), tiek interfeiso. Tarkim jums reikia ištestuoti e-parduotuvės pirkimo mechanizmą. Papildžius e-parduotuvę papildomais moduliais (ar atnaujinus tam tikrus programinius kodus) rezultatas turi nesikeisti, paprastai tariant neturi sugriūti sistema. Tad automatinis skriptas įdeda į krepšelį nustatytas prekes, patenka į krepšelį ir jį patvirtina ir taip nueinama iki pat galutinio atsiskaitymo. Jei visi kontroliniai punktai teisingi – vadinasi viskas veikia teisingai.

Keletą programų pasižaidimui veikiančių firefox naršyklėje: SeleniumiMacros .

Kaip pavyzdį pateiksiu kuo tai naudinga paprastam vartotojui su iMacros (iš facebook’e žaidimo  Startfleet Commander). Tarkim yra galimybė, kas tris minutes atlikti misiją resursams rinti. Pats optimaliausias būdas surinkti kuo daugiau resursų – vykdyti kuo daugiau misijų. Pasinaudojus tokia programa galima pasidaryti programėlę

VERSION BUILD=6251204 RECORDER=FX
TAB T=1
FRAME F=2
TAG POS=44 TYPE=SPAN ATTR=TXT:Start
TAG POS=44 TYPE=SPAN ATTR=TXT:Start
TAG POS=44 TYPE=SPAN ATTR=TXT:Start
TAG POS=44 TYPE=SPAN ATTR=TXT:Start
TAG POS=44 TYPE=SPAN ATTR=TXT:Start
TAG POS=44 TYPE=SPAN ATTR=TXT:Start
TAG POS=44 TYPE=SPAN ATTR=TXT:Start
WAIT SECONDS = 160

Tarkim ši programėlė paspaudžia tą patį mygtuką 7 kartus ir palaukia reikiamą sekundžių kiekį. Paleidus programėlę ciklu gauname norimą efektą. Paleidžiame atskiram ir einam pailsėt, pramogauti ar paprasčiausiai dirbam tai ką reikia :)

Jūsų asmeninė nerūkymo statistika

MLCPortraitMainJei užsimanei mesti rūkyti – tai tikrai sudėtingas procesas. Jis reikalauja velnioniškai daug pastangų. Nė vienam turbūt nepavyks mesti rūkyti jei jis neras savyje tam tikros priežasties. Vienas iš variantų – kažkam prisižadėti (gal net sau) ir galbūt net pasiskirti kokį nors prizą sau išlaikius šį gyvenimo egzaminą. Žinoma tinka ir lažybos.

Vienas iš įdomių veiksmų stebėti kaip rūkymas keičia tavo gyvenimą. Kažkada išvydau tam skirtą programą My Last Cigarette, kurioje suvedus tam tikrus duomenis matysite kaip jums sekasi. Patys svarbiausi yra šitie:

  • Kiek laiko nerūkote.
  • Kiek cigarečių nesurūkėte. Po pusmečio kiekis atrodo milžiniškas. O dar pažiūrėjus tokį eksperimentą
  • Kiek laiko prasmingiau gyvenate (extra days). Juk kiekvieną cigaretę surūkyti užima tam tikrą laiko tarpą. Daugelis rūkymo ritualui skiria valandą ir daugiau!

Turbūt pastebėjote, kad nerūkymo statistika rodantis mano pasiekimus yra įdiegta šio tinklaraščio šone. Jis turbūt labiausiai skirtas man pačiam.

Jei jau metėte ar norite mesti rūkyti galite irgi įsidiegti tokią statistika. Norite? Kad jums nereikėtų vargti aš padariau universalų skriptuką, kurį turėtumėte pasitalpinti savo tinklaraštyje. Tikiuosi perskaitę komentarus faile galėsite lengvai įsidiegti ir pasikoreguoti pagal save [ Parsisiųsti failą ].

Jei jūs įsidiegėte šį skriptuką pas save, praneškite čia. Mes su malonumu pažiūrėsime, kaip jums sekasi.

Remote programming

Video transliaciją visos konferencijos galima pažiūrėti:


 http://distance.ktu.lt/vips/session-records.php?id=175 (Reikalingas IE, kad matyti dar is skaidres)

Arba galima pažiūrėti tik video be skaidrių:


  • mms://video.liedm.lt/irasai/vips/175/1751.wmv – PHP sesijos
  • mms://video.liedm.lt/irasai/vips/175/1752.wmv – Paprasčiausias PHP framework´as
  • mms://video.liedm.lt/irasai/vips/175/1753.wmv – Hierarchinės duomenų struktūros reliacinėse duomenų bazėse
  • mms://video.liedm.lt/irasai/vips/175/1754.wmv – Remote programming

Kam reikia mano skaidrės maloniai prašom žiūrėti parsisiuntus.

Naudingi linkai, kurie padės pasinaudoti šia technologija:

Na tiesa pasakius ne per stipriausiai pasiruošiau temai, organizatoriai biški lėtai viską organizavo :(, Ir laiko buvo minimumas. O be to skaudančia galva teko pasakoti, tad sorry už kokybė (tiesa negėriau).

Licenzijos kodo programavimas

Licenzijos raktas – apsauga nuo pašalinio instaliavimo. Tarkim taip.
Bet raktą gavus galima instaliuoti į bet kokį kompiuterį. (Kaip
dažniausia būna). Vadinasi reikia prie ko nors pririšti (statiško). Tarkim licenzijos raktą telefonui sukurta
programą pririšama prie IMEI kodo, PCiukui galima
pririšti prie kieto disko serial numberio, WEBui prie domeno vardo.
Jei koduosime webui, tam galima sumastyti begalę algoritmų, kurie
visiškai sugerneruoją raktą, bei atkoduoja, bent dalinai. Pavyzdžiui
jame gali būti užkoduotas ne tik domeno vardas, bet ir iki kada tas
raktas galioja. Jei begalybė
užtenka kokie 2038, visvien tiek laiko tas scriptas nesisuks. O jei
kokiam mėnesui tai analogiškai. Pagalvojus labai paprasta, išsklaidai,
perdarai domeno vardą pagal tam
tikrą formuluotę, pridedi kažkurioje vietoje užkoduotą datą. Ir
viskas. Pvz pagal mano sugalvotą principą raktas raktas domenui atrodo
šitaip: ESCCMSM5MMYN-8E2BG7446A-GAEO7FNAFN-CC46FG18G9. Scriptas
lengvai gali suprasti ar tinkamas šiam domenui ar ne, ar dar
nepasibaigusi galiojimo data.
Su vienu domenu raktą sukurti tikrai simple, ir jam rasti atkodavimo
mechanozmą. O kaip padaryti kad tas pats raktas tarkim tiktų 3 ar 5
domenams – štai kur klausimas !!! Sutinku užkoduoti tikrai paprasta. Bet
va sutikrinti ar domenas A,B tinka šiam kodui, o
C netinka. Niekaip nesumastau mechanizmo. Gal pas jus idėjų
rasta?