Nori gauti straipsnius el. paštu - Prenumeruok

Straipnsių kategorija: programavimas

Pasveikink savo lankytojus su šventėmis individualiai

Įsivaizduokime situaciją naršote internete po kažkurią svetainę ir staiga pastebite reklamą su jūsų vardu. Manau į tokią reklamą galbūt labiau atkreiptumėte dėmesį. Jei tai būtų koks specialus sveikinimas jums turbūt ir nusišypsotumėte. Nežinančiam žmogui techninių detalių gali iškilti nevienas klausimas, jis gali net išsigąsti…. kas mane seka?

Galbūt jau matėte tokios reklamos panaudojimą zoom.lt akcijai. Tai lengva padaryti jei turite sistemą su prisiregistravusiais vartotojais. Blogų lankytojai, taip pat yra vartotojai, kurių duomenis kai kada galima turėti. Tarkim jei jūs pakomentavote wordpress sistemoje - lieka taip vadinamas sausainiukas su jūsų duomenimis kompiuteryje. Sekantį kartą atėjus, jums jau nebereikia nieko suvedinėti. Taigi tokius komentavusius vartotojus galima bandyti tiesiog pradžiuginti.

Štai kaip realizuota pas mane (wordpress). Tereikia patalpinti į savo šablono index.php failą:

<?php
$lankytojas = isset($_COOKIE[’comment_author_’.COOKIEHASH]) ? trim($_COOKIE[’comment_author_’.COOKIEHASH]) : ”;
if ($lankytojas ) {
echo “<div style=’background-image:url(/images/christmas.gif); background-repeat:norepeat; width: 515px;padding-top:135px’><div style=’padding:5px;font-size:14px;’><b>$lankytojas</b>, ar jau jauti artėjančias šventes?</div></div>”;
}
?>

Nežinau, kiek vartotojų matė šitą mano mažą išdaigą, bet tikiuosi šypseną jiems suteikiau…

Smarty pluginas: in array

Kai aš pradėjau programuoti tiek programinio kodo logiką, tiek atvaizdavimą dėjau į vieną vietą. Tai tikrai yra blogai, nes skaitomumas stipriai sumažėja. Šiektiek paaugus pradėjau naudoti paprastą šablonų sistemą phemplate. Viskas gerai, kol neprireikia šiek tiek paprastos logikos. Tada prade naudoti įvairiausius apgaulės būdus, kurie tikrai nėra patogūs. Žinoma galima pasirinkti šablonų sistemą kuri turi savyje logikos, kad ir smarty. Bet visuomet susiduriama su tokių šablonų trūkumais, nes atsiranda tikrinimo variantai, kurių pati sistema nepalaiko. Tada pagalvoji, kad geriausia šablonų sistema yra pati programavimo kalba. Tereikia atskirti failais logiką bei atvaizdavimą ir štai mes turime galingą šablonų sistemą. Bet vis dėl to jei esate pririštas prie smarty galima pasidžiaugti, kad galima kurti papildomas galimybes pačiam.

Visai neseniai man reikėjo susirasti paprastą sprendimą php komandai in_array. Smarty to nepalaiko. Pasinaudojus “insert” galimybę sukuriamas naujas pluginas.

function smarty_insert_code_in_array($params, &$smarty)
{
$bResult = false;
if (isset($params[’value’]) && isset($params[’array’]) && is_array($params[’array’]))
{
if (in_array($params[’value’], $params[’array’])) {
$bResult = true;
}
}
if (!isset($params[’var’])) {
$outvar = “rez_inarray”;
}
else {
$outvar = $params[’var’];
}
$smarty->assign($outvar, $bResult);
}

Šį failą įrašome tarkim čia smarty/plugins/insert.code_in_array.php

O panaudoti gan paprasta:

{insert name=”code_in_array” array=$manomasyvas value=$ieskomareiksme var=”atsakymas”}

ir turėsime mes kintamąjį $atsakymas kurį jau galėsime panaudoti.

Magiškas windows hosts failas

Nesvarbu, kas jūs esate svetainių paprastas kompiuterio vartotojas ar web programuotojas  - šis tipsas tikrai turėtų jums padėti. Jį galima panaudoti tiek geriems tiek blogiems tikslams.
Šis failas slepiasi dažniausia c:\windows\system32\drivers\etc\ kataloge. Jame saugomi, kaip aš vadinu, virtualūs domenų sąrašai. Jame rasite ir įžymiąją svetainę localhostą.

Kaip tie domenai aprašomi? Pirmiausia nurodomas IP adresas ir po tarpo norimo domeno vardas. Tarkim, keletas pavyzdžių

127.0.0.1 localhost
127.0.0.1 www.zilionis.loc
127.0.0.1 www.one.lt
81.16.232.112 www2.delfi.lt

Panagrinėkime parodytus atvejus. Jei nežinote pagal nutylėjimą IP adresas 127.0.0.1 yra jūsų kompiuterio vidinis IP adresas. Vadinasi pateiktuose variantuose locahost, www.zilionis.net, www.one.lt nukreipiama į jūsų kompiuterį ir tai veiks tik jūsų kompiuteryje.

Taigi pagrindinė esmė ta, kad jūs sukurę kažkokį domeną, nukreipiate į jūsų pageidaujamą IP adresą. Nebūtinai tai gali būti jūsų kompiuteris, bet galite ir į draugo, ar kažkoks serveris.

PIRMAS PANAUDOJIMO BŪDAS: “WEB PROGRUOTOJUI”

Labiausiai (bent man) jis naudingas web sprendimų srityje. Aš tarkim nusirodau, kad domenas www.zilionis.loc yra virtualus domenas. Ir susitvarkęs loalaus apache nustatymus naudojusi it tikru domenu.

<VirtualHost *:80>
    DocumentRoot D:/!Projects/zilionis/
    ServerName zilionis.loc
    <directory />
        AllowOverride ALL
        Options Indexes FollowSymLinks
    </directory>
</VirtualHost>

ANTRAS PANAUDOJIMO BŪDAS: “PRODUKTYVUMO GERINIMAS”

Įsivaizduokite turite brolį, kuris be perstojo sėdi pažinčių portale one.lt. Galbūt jūs nepykstate, kad sėdi pažinčių portale, bet nepatinka, kad būtent one.lt. Greičiausia jūs pageidausite, kad jis naudotųsi kitu.

Arba norėdami būti produktyvesniais darbe jūs paprasčiausiai užbaninate kurį nors puslapį, na tarkim www.delfi.lt

Tokiu būdu įvedę adresą, jie nematys tikrojo puslapio. O tik tai ką jūs nurodysite. Deja tuo pasinaudoja ir virusų kenkėjai, nurodydami, kad antivirusinių atsinaujinimo adresai yra jūsų kompiuteryje.

TREČIAS BŪDAS: “Slaptasis projektas”

Jį naudotų gali tiek web programuotojai, tiek eiliniai mirtingieji. Įsivaizduokime, jūs norite pakeisti hostinimo serverį į naują. Jūs susideda informaciją ir telieka laukti kol jūsų domeno adresai atsinaujins. Bet jūs nesate įsitikinęs ar viskas tvarkingai atrodys kai DNS nusivaikščios.
Dar viena idėja šovė į galvą. Slaptas domenas (nebūtinai egzistuojantis) naudojamas tik tarp tikros grupės žmonių: tarkim intranetui. Ir nusistatę parametrus hosts faile, gali patekti į tą svetainę. Tarkim net bankai turi vidinius tinklus kur naudojami virtualūs domenai (ir žinoma neprieinami IP), bet ten jie jau tai susitvarkę per DNS serverius.

Kokias idėjas jūs pasiūlytumėte?

EXT JS 2.0

Gan neseniai išėjo EXT JS bibliotekos antra versija. Ji leidžia kurti pasinaudojus bibiliotekas web aplikacijas, kurios panašios į desktopines.

extjs1 extjs2  extjs4 extjs5

Tai tikrai patogu, bent man jau tam tikriuose vidinėse svetainėse. Tarkim administravimo sistemai. Be to tikrai neblogai atrodo. Bet jei pabandytume tai realizuoti kuriai nors viešai svetainei, na gal blogui nežinau ar lankytojai būtų stipriai sužavėti. Beja tokia tema jau egzisuoja (Ext JS Wordpress Theme Blog).

EXT bilbioletka leidžia gan lengvai (na įprasti reikia) susikurti įrankius, kurių nėra standartinėse HTML bibliotekose. Tai medžiai, tabai, gridai, custom alertai. comboboxai  ir t.t. Štai keletas pavyzdžių: dekstopo imitacija, foto galerija/albumas, RSS skaitytuvus. Kitus pavyzdžius galite pasižiūrėti svetainėje.

Hm.. gaila kad darbe šiuo metu man netenka dirbti su tokiom aplikacijoms. Heh patiktų…

Tiesa kažkada minėjau bindows biblioteką, kuris tikrai yra galingas tiek savybėmis tiek kaina. O Ext gali būti tiek komercinis, tiek open source.

Mažas PHP tipsas produktyvumui patobulinti

Turbūt, kaip ir daugeliui žmonių tenka dirbti ne su vienu projektu ir turiu keletą savo pamėgtų funkcijų skirtų testavimui / duomenų atvaizdavimui. Ne visuomet galima savo tas specifines funkcijas traukti į projektą, ypač jai jas naudoji tik pats. Arba ši situacija panaši ir į tą, kai serveryje reikia kažkokių bendrų pasirašytų mechanizmų, kuris paleidžiamas prieš pagrindines programas. Kokios jos gali būti, tai jūsų vaizduotės vaizdas. Ką reiktų daryti?

Ogi atsidarome php.ini failiuką susrandame eilutes ir šiektiek paredaguojam:

; Automatically add files before or after any PHP document.
auto_prepend_file = “D:/!Server/PHP/autoopen.php”;
#auto_append_file =

Pvz maniškiame sėdi viena dažniausių naudojamų mano specifinių (patobulintų) funkcijų. Kas gali būti pas jus… tai jūsų vaizduotės vaizdas.

  1. function print_r_($var , $title = “PRINT_R”) {
  2.   $str = array();
  3.   $str[] = “<pre style=’font-family:arial;’>”;
  4.   $str[] = print_r($var ,1);
  5.   $str[] = “</pre>”;
  6.   whyout(implode(\n, $str), $title);
  7. }
  8.  
  9. function whyout($data, $title = “TITLE”) {
  10.  $str = array();
  11.  $str[] = “<div style=’background-color:#E6E6E6;color:black;font-size:10px;
  12. font-family:Arial;padding:2px;font-weight:normal;text-align:left’>”;
  13.  $str[] = “<div style=’color:white;background-color:#003366;
  14. padding:2px;margin:0px;font-weight:bold;’>”;
  15.  $str[] = $title;
  16.  $str[] = “</div>”;
  17.  $str[] = $data;
  18.  $str[] = “</div>”;
  19.  echo implode(“”, $str);
  20. }

Kas nesuprato, tai paprasčiausias print_r. tik šiek tiek grafiškai apipavidalintas. Bent man jis daug produktyviau veikia, nei paprastas variantas.

Tu gali pakeisti pasaulį

Paauglystėje buvau labai didelis visuomenininkas - aktyvistas, dalyvavau keliuose organizacijų veiklose. Tik va susiradus darbą to visuomeniškumo liko mažai. Įstrigo vienas pasakymas, kurį sakydavo vienas amerikietis: “You can change the world”. Žmogus dirbdamas su kitais, daro didelę įtaką kitiems. Pats svarbiausias įvykis jei žmogaus darbai pakeičia kito žmogaus gyvenimą, mąstyseną į gerąją pusę.

Daugelis dabartinių kompiuterinių projektų taip - keičia pasaulį, bet iki tam tikro lygio. Jie padeda pagreitini įvairius procesus, palengvina bendravimą tarp įvairių bendruomenių, žmonių. Ar galim mes programeriai, dizaineriai na kitaip tariant web srityje dirbantys žmogeliukai padaryti kažką daugiau? Tai, kad ne tik žmogus galėtų greičiau kažką atlikti, o jį pakeistų?

Tiesa nereikia žvalgytis kažkur toli, tokių projektų yra ir Lietuvoje. Šį savaitgalį susitikau su keliais savo grupiokais. Na po pirtelės darėm mažą pratęsimą ir pas vieną kolegą. Kaip tik jis dirba su flash ir jis parodė keletą savo darbų. Vienas jų taip mane sužavėjo, kad negalėjau nepabloginti apie tai.

Štai kaip jį pristato Tautvydas Bargelis:

Mano kelias
Kalėjimų departamentui sukurtas simuliacinis žaidimas, kuris modeliuoja nuteistojo gyvenimą atlikus bausmę ir išėjus į laisvę.

Žaidimo tikslas – supažindinti žaidėją su realiu gyvenimu, pateikiant įvairias gyvenimo situacijas, suteikiant sprendimo laisvę.

Žaidime modeliuojamos ekspertų sukurtos gyvenimiškos socialinės-psichologinės situacijos. Žaidėjas netiesiogiai “auklėjamas” elgtis teisingai, skatinamas įsidarbinti, siekti karjeros, gerinti santykius su aplinkiniais. Kiekvieną savaitę ar savaitgalį žaidėjas turi susiplanuoti – skatinamas planavimas realiame gyvenime. ”

Žaidimo turi teisę rinktis ką sakyti, ką daryti ir kiekvienas, veiksmas turi atoveiksmį. Tai ir atskleidžiama žaidime. Dialogus bei situacijas ruošė psichologų grupė. Veikėjas gali bendrauti su įvairiausias žmonėmis žmona, tėvai, draugas blogietis/gerietis, draugė, darbdavys, bendradarbis… Žaidime, kaip ir gyvenime gali herojus rinktis darbą iš keleto sričių: statyba, pardavimai, paslaugos, gamyba, žemės ūkis.

O kad įsivaizduotumėte, kas tai per projektas - štai keletas vaizdų:
pradziapasirinkimaspasirinkimas2zmonavizitassusipazinimasplanavimasdraugedraugaidarbas

Su kokias projektais dar susidūrėte, kad galėtumėte pritaikyti frazę - tu gali pakeisti pasaulį?

Naujasis captcha mechanizmas

Didžiausia problema populiarėjant, bet kuriam blogui ar paprastai svetainei su komentarų sistema tai spamas. Kovoti galima įvairiai… :

  • tik registruoti vartotojai gali rašyti komentarus
  • pradedant blokavimu tam tikrų žodžių - jei yra komentaras ignoruojamas
  • dedant apsaugas, kad tam tikri IP neprisijungtų prie svetainės.labai jau dažnai reikės konfigūruoti
  • pasinaudojant kokios nors paslaugomis, tarkim akismet
  • įvairiausiais captcha sprendimais: skaičių aritmetika, žodžiais iš paveikslėlių

Labiausia, gal vartotojui nepatogus būdas - tai įvedinėti žodžius. Kai nori pakomentuoti, tai dantis sukandęs rašai.
Bet tai gali ir atbaidyti, jei iš kokio 5 karto tik pataikai, kai sunku suprasti, kas paveikslėlį pavaizduota. Gerai dar, kad būna trumpas žodis, bet įsivaizduokite, kas būtų jei reikėtų parašyti visą litaniją? Pamažu į tai auga, vienas veikėjas sumastė naują recaptcha mechanizmą, kurio esmė: suvesti du žodžius. Na jei jų dar išaugtų… daugelis jau turbūt ir tingėtų komentuoti.

recaptcha.png

Daugiau informacijos autoriaus bloge

PHP saugumas: Saugus programinis kodas. 1 dalis.

Vietoj įžangos

Šiuo pirmu įrašu norėčiau pradėti “paskaitų ciklą” apie teisingą programavimą. Informacija bus pateikiama ne tik iš mano asmeninės patirties, bet ir iš kitų šaltiniu. Tikrai nesakau, kad viską aš čia surašysiu, bet tai bus puiki pradžia. Reiktų atkreipti dėmesį į tai, kad su bet kuria programavimo kalba galima programuoti tiek saugiai, tiek ne. Kadangi PHP yra populiariausia programavimo kalba bei mano duona - mano kalba bus daug labiau pritaikyta PHP.
Skaityti toliau »

Coldfusion - programavimo kalba htmlčikam

Vienos programavimos kalbos panašios, kitos kažkiokios unikalios ar revoliucinės. Na žinoma patys išsirenkame, kas kam kaip patogiau. Turiu proga padirbėti su senai/nauja programavimo kalba coldfusion. Vienam projektui reikia padaryti atnaujinimų. Netyčia prisikalbėjęs, kad matęs, kaip coldfusionas atrodo teko man atnaujinimo užduotis daryti pačiam. Nors jos nėra sudėtingos… bet vistiek reikėjo šiek tiek pagooglinti, susiradęs tinkantį redaktorių (parsiunčiau Macromedia dreamweaver testinę versiją) paprograminau ir cfm.

Kokias išvadas galima daryti, ši programavimo kalba labiau skirta html’čikams. Taip pat kaip ir Smarty tepleitų tvarkymas dažniausia duodamas jiems, žinoma programuotojai tai (jei reikia) paruošia…

Kas mane sužavėjo visgi? Ogi tikrai gan paprasta/lengva išmokti kalba. Turbūt lengviau nei PHP :)

Tarkim pirmas pavyzdukas sikrtas uplodinti failui i serveri. Kintamieji atskiriami diezais #kintamasis#. Iš šio simple koduko, skriptas priims tik gif, jpg paveiksliukus ir įkels į atitinkamą direktoriją, o jei failas bus tokiu pačiu vardu - jį pervadins dar priedo, pridėdamas atitinkamą skaičių.

  1. <cftry>
  2. <cffile ACCEPT=“image/pjpeg,image/gif,image/jpeg”
  3.                 ACTION=“UPLOAD”
  4.         DESTINATION=“#image#”
  5.         FILEFIELD=“myfile”
  6.         NAMECONFLICT=“MakeUnique”>
  7.  
  8.         <cfcatch type=“any”>
  9.                 <cfoutput>#CFCATCH.Detail#</cfoutput>
  10.                 <cfabort>
  11.         </cfabort></cfcatch>
  12. </cffile></cftry>

Hm, man atrodo ganėtinai paprasta, daug paprasčiau nei su PHP :). Na dar vienas pavyzdukas kurio testuoti nepavyko (o taip norėjosi pabandyti), nes biški per sena versija tame serveryje. Ogi idegtas formų validavimas.

  1. <cfinput type=“text” name=“HPhone”
  2.       validateat=“onBlur”
  3.       validate=“required,telephone”
  4.       message=“Please enter a standard U.S. telephone number with an optional
  5.          extension, such as x12345″></cfinput>

Skripto parsinimo metu tai pakeičiama į paprasčiausią input elementą. Pagal bendrinius nustatymus forma validuojama ant submit veiksmo, bet norint jį visada galima pakeisti.

Beja populiarusis pažinčių portalas draugas.lt, kaip tik ir ant cfm sukasi :)

Javascript Dump

Programuojant, bet kokia programavimo kalba yra būtinas stebėti/patikrinti kaip koks kintamasis atrodo. Tai galėtų būti stringas, masyvas, objektas ir t.t. JavaScript tokios kaip ir standartinės funkcijos neturi, bet yra jau keletų alternatyvų. Tokios informacijos naudingumą javascript’e jau atradau ganėtinai seniai, kai pradėjau programuoti su turinio valdymo sistema SiteSupra. Daugeliui turbūt padeda firefox papildinys firebug. Na o toks standalone.. tikrai vertas dėmesio yra šiandien atrastas Javascript dump, kuris sugeba atvaizduoti tokius dalykėlius kaip String/Number/Boolean/Object/Array/Function. Heh malonus žaisliukas, kurio idėja kilo iš ColdFusiono, su kurio dabar tenka žaisti.. vieno projekto atnaujinimams.