L

Google Analytics-et hogyan integrálhatom a weboldalamba?

Most főleg a kezdő kollégák számára fogok új dolgokat mutatni. Megmutatom, hogyan hozd létre az első Google Analytics követőkódodat. A cikket képekkel illusztráltam, hogy könnyebben kiigazodj a felületen. Később megmutatom, hogyan adj hozzá új oldalakat, hogyan kösd össze más szolgáltatásokkal.

Ismét egy fontos megjegyzés, ez akkor lesz hasznos bejegyzés, ha a HTML kódot te magad írod, vagy olyan CMS (Joomla, Wordpress) használsz, ami nem támogatja - akár bővítményen keresztül - az automatikus beillesztést a kódodba.

A Bootstrap használata - 1. rész

Az előző elképzelésem szerint az eredeti Bootstrap leírást - kicsit kibővítve - szerettem volna feltölteni az oldalra bejegyzésenként. Sokat törtem rajta a fejem, hogy ez jó megoldás-e.

Nem szeretnék csak szimpla magyarosításokat gyártani, ettől kicsit többet akartam kihozni a sorozatból. Így én más szemszögből közelítettem meg a dolgot. Megkértem egy régi barátomat, aki természetesen szeretné elsajátítani a Bootstrap használatát, hogy tegye fel a kérdéseit, ami jelen pillanatban, mint kezdő foglalkoztatja. A bejegyzést a lehető legalapabbra terveztem, szóval ha haladó vagy a témában, nem sok újat fogok mondani.

Bootstrap használata - Alapok

Elég kevés leírás található magyar nyelven a Bootstrap használatáról, így most úgy döntöttem, hogy részben a Bootstrap hivatalos leírásából, részben saját tapasztalatokból, elkezdek egy Bootstrap sorozatot.

Ez nem lesz túlságosan élménygazdag azoknak, akik már ismerik, sőt... Nekik kifejezetten semmit sem fog mondani. De a kezdőknek, és kevésbé angolos "bajtársaknak" remélem, sokat segít.

Singleton Design - PHP - Hogyan használjuk?

A Singleton Pattern egy Design minta, amit azért használunk, hogy egy adott osztályt ne tudjunk bizonyos esetekben újra inicializálni. Ez annyit jelent, hogy ha egy osztályt implementálunk Singletonként, akkor ez az osztály nem fog kétszer létezni, tehát újra inicializáláskor már a meglévő osztályt fogjuk visszakapni, így nem fog dupla vagy akár tripla helyet elfoglalni. A legjobb alkalmazási területei például beállítások kezelése vagy a már említett Registry.

Minden webaplikációnak vannak olyan területei, amiket többször több helyen is (például: beépülő modulokban, külső könyvtárakban) használunk. Ha minden alkalommal, mikor szükségünk van egy osztályra újrainicializáljuk, rengeteg felesleges memóriát fogunk felemészteni. Hogy ezt kivédjük, biztosnak kell lennünk, hogy az osztályunk csak egyszer létezik és globálisan elérhető. Elsőként le kell tiltanunk, hogy az osztály kivülről inicializálható legyen, így a konstruktort priváttá kell tennünk.

Registry Design - PHP - Miért kedveltem meg?

Eddig a blog főleg kisebb dolgokról szólt, css trükkökről, sitebuild megoldásokról, kisebb-nagyobb php problémákról. Most megpróbálok olyan dolgokat is leírni, amik kicsit mélyebben belenyúlnak a PHP világába, hiszen mindig azt hangoztatom, hogy nem vagyok egy túl erős sitebuilder, mégis a blogom nagyobb része erről szól.

Tehát a mai téma: Registry Design Pattern

Amikor nagyobb projecteken dolgozol gyakran szembesülhetsz egy problémával, ugyanazt az osztályt kell használnod másik osztályokon belül. Legjobb példa erre az adatbázis osztály. Használod felhasználók kezelésekor, termékek, cikkek lekérdezésekor, szóval szinte bárhol. Ha a kódod objektum orientált, és minden feladat a saját osztályában foglal helyet, akkor általában mindig azzal kezded az osztályt, hogy:

public function __construct(){
    $this->db=new DataBase();
}

Vagy másik általános megoldás, hogy globális változókban tárolod az osztályt, így mindenhol elérhetővé válik. Bármelyik megoldást is használod, rossz. Ha minden alkalommal újra inicializálod az adatbázis osztályt, akkor baromi sok memóriát fogsz elhasználni.

PHPMailer - Karakterkódolás

Ha PHPMailerben a feladó vagy a levél kódolása nem megfelelő, elég csúnya eredményeket kapunk. Még a nagyobb cégeknél is sokszor előfordul, hogy a kiküldött levél nagyon gáz. Ha nem megfelelően kódoljuk az emailt, akkor teljes lesz a káosz.

Fontos, hogy maga a generáló php fájl is ugyanolyan kódolásban legyen, mint amilyenben a kiküldött emailünk lesz. Ma már szerintem alap, hogy mindenhol UTF-8 kódolást használunk, nekem a program fel sem ajánlja, hogy más kódolásban hozzam létre a fileokat.

Másik fontos dolog, ha az emailben szereplő adatokat adatbázisból kérdezzük le, akkor az adatbázis kapcsolatot és az adatbázisokat is érdemes ugyanúgy UTF-8 kódolással létrehozni.

Tejüveg (frosted glass) effekt SVG-vel

A napokban elég sokat olvastam a különböző css effektekről. Sokszor van, hogy a grafikus speciális effekteket pakol egy-egy képre és ezeket meg kellene próbálni a lehető legélethűbb módon visszaadni. Ilyen effekt a mai tejüveg effekt vagy angolul a frosted glass effect.

GIMP alatt készítettem egy mintát, hogy körülbelül milyennek kellene lennie a a végső képünknek.

Nekünk innen az 5 pixelnyi külső keret fog kelleni. Ez is egy olyan effekt, amit legtöbbször a kép túlvágásával érünk el, így ha módosul a háttér, változtatunk a környezeten, akkor a képet ismét körbe kell vágni, és ráadásul pngben kell elmentenünk, ami az átlátszóság miatt jóval nagyobb méretű lesz.

Tehát, most el kell dönteni, hogy mit használunk. Első körben teljesen CSS alapokon akartam megcsinálni blur filterrel és CSS maskkal, de a böngésző támogatottságunk még mindig nem teljes. Canvast is használhatnánk, de ahhoz javascript szükséges. Így marad az SVG, aminek a böngésző támogatottsága is jó.

Szöveg textúrák CSS maszkolással

Vannak olyan helyzetek, amikor egy szöveg baromi jól illeszkedik az oldal designhoz, ha speciális effektek vannak rajta. Ha ezeket az effekteket lehagyjuk, akkor elveszíti az oldal a különleges kinézetét. Ilyenkor természetesen elkezdjük a designból képként kivágni a szövegeket. Ugye mondanom sem kell, hogy ez miért nem jó megoldás.

Első negatívum, hogy minden apró módosításkor, ismét át kell küldeni a grafikusnak, ő áttervezi, visszaküldi, kivágod, felteszed a szerverre. Semmi jó nincs ebben.

Második negatívum, hogy a png alapból jóval több helyet foglal el, mint a sima szöveges információ. Tegyük fel van 10 darab 30 KiloByte-os szöveged, már ott jársz, hogy 300 kiló csak egyetlen oldalon a képek mérete. Ne is beszéljünk arról, hogy ezeket mindet egyesével lekéri a böngésződ a szerverről. Rengeteg plusz idő és ráadásul rengeteg plusz információ.

Képek méretezése, vágása, arányosítása PHP-ben

Sokunknak okozhatnak problémát a túl nagy képek, a nem megfelelő méretarány vagy egy kép előnézeti képének létrehozása. Nekem is fejtörést okozott régebben, hogy hogyan vágjak egy 100×100-as képet, vagy hogyan csináljak egyszerű előnézeti képeket. Ekkor akadtam rá erre a scriptre. Azóta a programjaim nagy részében benn van. Igaz sokat fejlődött.

A fent említett problémára találtam a következő scriptet, mely megoldja a gondjainkat. A program képes képeket méretezni, vágni és arányosítani is. Méretezhetünk vele szélességre, magasságra, fix méretre. Vághatunk vele előre meghatározott dimenzióban, és százalékos értékben arányosíthatjuk is a képünket. A kapott eredményt menthetjük vagy megjeleníthetjük. Tehát mindent tud, amit egy kép kezeléséhez tudnia kell.

CSS: Több elem sötétítése hover-re

Elég nehéz értelmes címet adni neki :) tehát amiről szó van. Van egy több boxból álló menü, slide vagy bármilyen panelünk. A feladat, hogy alap esetben minden box legyen világos, ha rávisszük az egeret, az aktuális box világos marad, a többi besötétedik.

A megoldást nemrég még simán jQuery-ben oldottam volna meg, de kicsit filózva rájöttem, hogy CSS segítségével is megoldható a probléma.

Mit is kell végig gondolni? Mi történik? Van egy nagy div, benne több kisebb div.

301-es átirányítás PHP header() segítségével

Az oldalaink folyamatosan változnak, bejegyzéseket törlünk, nevezünk át. Ekkor jön jól a 301-es átirányítás.

Nagyobb oldalak, blogok, fórumok esetében sűrűn előfodul, hogy egy-egy bejegyzést, hírt vagy hozzászólást törlünk, inaktiválunk vagy átnevezünk. Ilyenkor, ha nem akarjuk, hogy felhasználóink és a google barátunk is egy hiba üzenettel, esetleg egy üres oldallal találkozzon, kénytelenek vagyunk a nem létező tartalmat egy létezőre irányítani.

Régebben felmerült bennem az öltet, ha már az admin felületem úgyis naplózza mikor mit teszek az oldalon, lehet jobban járnék, ha ezt felhasználnám erre a célra. Csinálnék egy scriptet, ami ha egy halott linket talál, azonnal képes eldönteni, hogy hová irányítsa a felhasználót. Ha a link törölve lett, ésszerű, ha egy szinttel feljebb irányítom a látogatókat, de ha átneveztem akkor simán dobjon az új linkre.

MySQL RAND()

Elég sokszor van, hogy egy webshopnál, vagy weblapnál random sorokat kell lekérdezni adatbázisból. Addig nincs gond, míg pár száz vagy néhány ezer sorból kell válogatni. De mi van, ha több százezer sorból válogatunk? Ilyenkor már elég komolyan be tud lassulni a MySQL.

A legkönnyebb módszer random sorok lekérdezésére MySQL-ben az ORDER BY RAND().

SELECT col1 FROM tbl ORDER BY RAND() LIMIT 100;

Kis tábláknál nagyon jól működik, de nagyobb tábláknál már jelentős teljesítmény gondok lépetnek fel. Ez annak köszönhető, hogy a MySQL először minden sorhoz egy random számot generál, majd ezeket sorba rendezi.

Tehát, ha csak 10 random sort akarsz olvasni egy adatbázisból, melyben 100e sor van, a MySQL-nek a 100e sort először rendeznie kell, majd kiválaszt belőle 10-et.

Találtam egy megoldást, ami szerint a RAND a lekérdezés WHERE részében helyezkedik el és nem az ORDER BY-ban. Először is kell egy tört szám, ami össz sor számából és a limitből jön ki. Aztán pedig ezt használjuk a lekérdezés WHERE részében.

Egész szám ellenőrzés és az is_int?

Sokszor lehet szükségünk egész szám ellenőrzésre. Ha biztonságos programot készítünk és például adatbázisban tárolt id-val dolgozunk, ellenőriznünk kell, hogy a kapott paraméter biztosan jó-e. Persze ez csak egy példa, de belegondolva rengeteg helyen használható.

Tudom vannak beépített int ellenőrző függvények a phpban, de ezek "nem jól működnek" :) pár teszt:

var_dump(is_int(23)); //bool true
var_dump(is_int("23")); //bool false
var_dump(is_int(23.5)); //bool false
var_dump(is_int(true)); //bool false

Tehát maga az is_int függvény nem tudja kezelni a stringként kapott int értéket… ez annyiból gáz hogy pl egy POST vagy GET kezelésnél automatikusan stringként kapsz értéket.

E-mail cím ellenőrzés PHP-val

Sokan szembesülünk a problémával, hogy a felhasználók helytelenül írják be az e-mail címüket. Sajnos a mai rohanó világban előfordul, hogy elütünk egy-egy karaktert. Az email címnél ez igen súlyos gond, hisz nem érkezik értesítés, nem kapunk aktiváló linket. Ilyenkor a megrendelő megoldást vár a programozótól. Építsünk be annyi ellenőrzést, amennyit csak tudunk. Már lassan ott jár a dolog, hogy olvassuk is el helyette.

Tehát keressünk megoldást erre a problémára. A legegyszerűbb, amit sokan használnak, hogy egy regex-et húznak a beírt mail címre, és ha jónak tűnik, mehet tovább. De ez szerintem érezzük, hogy kevés lesz. Lássuk mit tehetünk.

Leoamros

X

Üdv! Ha még személyesen nem ismerjük egymást, Smajda László vagyok, de szólíts csak egyszerűen Laccának vagy Leoamrosnak. Olyan netbúvároknak osztom az észt, akik szárnyaikat próbálgatják a PHP, MySQL, JavaScript világában, és elakadnak valamelyik folyamat során. Főleg a saját tapasztalatokat írom le, ettől függetlenül kérdezhetsz bátran, lehetőségeimhez mérten válaszolok.

Kategóriák
Címkék
Social Media
Eszközök