On site SEO alatt én, a kereső számára jól értelmezhető oldalkialakítást értem. Nézzük akkor sorban hogyan is épül fel egy keresőbarát weboldal.
Meta tag-ek
A meta tag-eket a weboldal fejlécében adhatjuk meg. A felépítésük általában a következő:
<meta name="ide jön a tag neve" content="ide a tartalma" />
A fontosabb meta tag-ek:
(more…)
Egy project alkalmával szembesültem a címben említett problémával. Adott volt egy adatbázis tábla melyben voltak duplikált sorok. A feladat ezeknek a soroknak a törlése volt. Első gondolatom egy temporary table megoldás volt, miszerint csinálok egy temp táblát abba egy selectel distinct -el a duplikációt jelző mezőn átrakom a recordokat és utána az eredeti táblát törlöm, a temp-et pedig átnevezem az eredeti nevére:
CREATE TABLE temp AS SELECT * FROM table1 GROUP BY FIELD; DROP TABLE table1; RENAME TABLE temp TO table1;
Ez a megoldás teljesen jól működik és elvégzi a kivánt feladatot, de ha php-ból szeretnénk megvalósítani akkor ez három lekérdezés lesz, mert a multiple query az általában tiltva van. Ezért elkezdtem keresni egy elegánsabb megoldást és találtam is.
A dolog lényege hogy a táblánakt kétszer is használjuk a queryben egy alias-sal:
DELETE FROM table1 USING table1, table1 AS temp_table WHERE (table1.id> temp_table.id) AND (table1.FIELD=temp_table.FIELD)
A fenti lekérdezés megnézi hogy a két táblában (ami tulajdonképpen ugyanaz csak más néven) vannak olyan rekordok ahol a duplikált mező egyezik, viszont az azonosító nem(mert ha ez is akkor mindkét sort törölnénk), és törli ezeket.
Weboldalunkon egyszerűen jelenithetünk meg más oldalatól kapott rss anyagot. Az alábbi snippet müködéséhez szükségünk lesz cURL,és simplexml támogatásra a tárhelyünkön, de ezek szinte mindenhol alapból elérhetőek.
Az rss csatornák xml segítségével adják át az adatokat. Tehát amikor meg akarunk nyitni egy rss csatornát, például ezen blog-ét akkor egy xml-t fogunk kapni. A csatorna megnyitásához használhatnánk a file_get_contents függvényt is, de ott az időtullépést nem tudjuk kellően lekezelni ezért én cURL-t használok:
$url = "http://blog.greg-dev.com/feed/"; $options = array( CURLOPT_URL => $url,#url megadasa CURLOPT_RETURNTRANSFER => 1,#nem akarunk kozvetlen output-ot CURLOPT_CONNECTTIMEOUT => 2 ,# 2 masodperc-es varakozas utan megszakitjuk a kerest CURLOPT_MAXREDIRS => 0,#maximum 0 atiranyitasig kovesse az atiranyitasokat CURLOPT_REFERER => "http://www.google.hu" #beallitjuk a referert ); $ch = curl_init(); curl_setopt_array($ch, $options); #megcsinaljuk a http kerest $result = curl_exec($ch); #lezarjuk a session-t hogy felszabaditsuk a rendszer-eroforrasokat. curl_close($ch);
A fenti kód lefutása után a $result változóban lesz a nekünk kellő xml adatállomány. A kapott adatot ezután valmilyen használható formára kellene alakítanunk és ítt veszzük igénybe aphp simplexml bővítményét ami az átadot xml-ből egy objektumot képez nekünk:
$xml = simplexml_load_string($result); $output = '<ul>'; $limit = 10; $i = 0; foreach($xml->channel->item as $item){ $output .= '<li><a href="'.$item->link.'" rel="nofollow" target="_blank">'.$item->title.'</a>'; $output .= '<br /><span class="description">'.$item->description.'</span>'; $output .= '</li>'; $i++; if($limit != 0 and $i == $limit)break; } $output .= '</ul>';
Mivel a kapott adat lehet hogy tul hosszú ezért beállíthatunk egy limitet,melynek elérésekor a ciklus véget ér. Az xml tag-jai pedig az objectumon keresztül elérhetőek és tetszőleges kimeneti formába rendezhetőek.
A Sony es a Google megallapodasat kovetoen a Sony bizonyos tipusu laptopjain a Google bongeszojet fogja default browser-kent telepiteni.
A Chrome mar jelenleg is korulbelul 6 szazalekat uralja a bongeszo piacnak, megelozve ezzel a Safari-t es az Opera-t es a harmadik legnepszerubb bongeszo a vilagon. Ezzel az egyeszseggel azonban ez valoszinuleg tovabb fog emelkedni bar a Sony az egyik legkisebb szamitopepgyarto ceg, de az egyeszseg segitheti a Google azon torekveseit hogy mas gyartokkal is leszerzodjon mint peldaul a Dell vagy a Hewlett Packard.
En szemely szerint orulok a hirnek, mert remelm hogy ezzel is csokken az Internet Explorer-t hasznalok szama.
Keszitettem egy egyszeru kis javascript szoveg forgatot, es ezt szeretnem megosztani. A script mukodesehez jQuery libray szukseges az effectek miatt. Itt lathatjatok mukodes kozben es a forrasban ott a kod kommentezve.
Ha valmileyn okbol a domainnevunk megvaltozik de szeretnenk a keresorobotokat es a latogatoinkat atiranyitani az uj domainra akkor is ha a regit probaljak megnyitni akkor a 301 -es atiranyitasra van szuksegunk. Ennek a lenyege hogy egy “Moved permanently” http fejlecet kuld el a bongeszonek es atiranyitja az uj domainre.
(more…)
Sokan hasznaljak email cimek vedelmere a harvester robotok ellen az email cim ASCII kodolasu kiiratasat. Egy parsoros php koddal ezt konnyeden megvalosithatjuk.
Amire szuksegunk lesz az az ord() fuggveny ami a parameterkent atadott karakter ASCII kodjat adja nekunk vissza. Ahhoz hogy ezt a bongeszo meg is ertse at kell alakitanunk a kodot, vagyis csak ele kell raknunk egy “&” es “#” jelet illetve egy “;” karakterrel lezarni.
Lassuk akkor a kodot:
$string = 'test@test.com'; $ascii = null; for($a = 0;$a < strlen($string);$a++){ $ascii .= '&#'.ord(substr($string,$a)).';'; } echo $ascii;
Amint lathato a stringen vegigmegyunk karakterenkent egy ciklussal es igy egyesevel kicsereljuk a karaktereket ASCII megfelelojukre. A fenti par sor eleg eroforras igenyes ezert csinjan banjunk vele.
Itt megnezhettek egy mukodo demot: Demo
Hasznalat kozben eszrevette, hogy ha tobb cimet adok meg(5-10) akkor nehany esetben nem jon a geocode valsz meg es ezert nem rakja ki a markereket a script. Ezt javitottam, es kicsit egyszerusitettem a kodot. Az uj verziohoz mas konfig valtozot kell megadni.
Eleg gyakran hasznalom a Google Maps API-t es csinaltam hozza egy ugynevezett ‘wrapper’ fuggvenycsomagot ami megkonnyiti az API egyszerubb funkcioinak hasznalatat. Ennek hasznalataval nincs ma dolgunk mint egy konfiguracios valtozonak(ami JSON object) megadni az ertekeket es meghivni a fuggvenyt.
Lassunk tehat egy egyszeru peldat. Az API mukodesehez szuksegunk lesz egy API kodr, amit itt lehet igenyelni : http://code.google.com/apis/maps/signup.html . Semmi mas nem kell hozza csak egy
regisztralt Google fiok(email, stb). Miutan megvan API key-unk, alabbi sorokkal(a noscript tagok nelkul) betoltjuk az API fajljat az oldalunkra:
