недеља, март 31, 2013

Google SEO optimizacija

Nisam se odavno bavio ovom tematikom pa sam rešio da pročitam knjigu SEO 2013 & Beyond koju je napisao Endi Vilijams (ali ne onaj pevač :-) Autor na jednostavan i praktičan način opisuje kako je Google nekada rangirao rezultate pretraživanja a kako to radi od 2012. godine, odnosno, od Penguin apdejta. Da sumiram to u par rečenica...

Pre Pingvina, za visok rejting među rezultatima pretrage je bilo potrebno:
  1. pronaći visoko tražene ključne reči za koje je konkurencija slaba
  2. optimizovati stranicu za te ključne reči
  3. generisati masu povratnih linkova koji u naslovu imaju ove ključne reči
  4. uživati u kratkotrajnom skoku popularnosti
Od sredine 2012. godine Google uvodi optimizaciju svog pretraživača a sve u cilju da smanji spam i nekvalitetne tekstove tako da nam je sada potrebno sledeće:
  1. Kvalitetan sadržaj za posetioce a ne sadržaj optimizovan za pretraživače. To podrazumeva da u tekstu "gustina" ključnih reči treba da bude prirodna a ne napumpana (tačka 2 iz vremena pre Pingvina). Dalje, tekst treba da izgleda kao da ga je napisao stručnjak odnosno neko ko zna o čemu priča, stručnjak prirodno u pisanju koristi termine koji se odnose na datu temu (niche vocabulary) što doprinosi relevantnosti teksta i njegovom boljem rangiranju i, jako važno, tekst treba da doda neku vrednost u odnosu na već postojeće tekstove (prvih 10 iz rezultata pretraživanja tzv. serps) na istu temu.
  2. Organizacija sajta u smislu da naziv domena ne utiče više na pozicioniranje (kupivijagru dot com više neće biti prvi na listi rezultata), da sadržaj treba grupisati po tematici ili kategorijama (tzv. silosi) kojima će se pristupati preko menija kako bi se korisnicima olakšala navigacija. Treba koristiti interno povezivanje/linkovanje sadržaja/stranica u okviru teksta kako bi korisnici na klik mogli da saznaju nešto više. Isto tako treba koristiti povezane sadržaje i, na kraju, treba koristiti tagove.
  3. Autoritet - sadržaji moraju da imaju status informacija ili saveta stručnjaka, povratni linkovi treba da dolaze sa kvalitetnih sajtova iz branše, odlazni linkovi takođe treba da vode na kvalitetne sajtove, poželjno je povezati se u društvenu mrežu (FaceBook, Twitter, YouTube...), pisati na tuđim relevantnim blogovima itd.
  4. Šta korisnik treba da dobije? Dobar dizajn, brzinu sajta, zaraznost sadržajem, interaktivnost (pitanja i komentari) i poverenje u informacije sa sajta.
Knjiga nije velika, lako se čita i zaslužuje preporuke.

U međuvremenu sam pročitao još par knjiga na tu temu i pronašao spisak stvari koje ne treba izgubiti iz vida prilikom izrade sajta:

  1. title tag je bitan zato što će se pojaviti kao naziv vaše stranice prilikom pretrage. Važno je uložiti napor i svakoj stranici koju kreirate dodeliti jedinstven naslov (title) dužine do 70 znakova.
  2. description tag je takođe bitan, to će u rezultatu pretrage pisati odmah ispod naslova. Opet je bitno za svaku stranicu napisati konkretan opis koji se odnosi baš na sadržaj te stranice.
  3. keywords tag nije više presudan ali neće da škodi ako ga ispravno popunite.
  4. header (h) tagovi treba da prate strukturu stranice. Koristiti alt tagove kod slika. Linkovi na sajtu ne treba da budu generički tipa "klikni ovde".
  5. Struktura URL-ova mora biti jednostavna tipa sajt.com/kategorija/tema što podrazumeva kreiranje jednostavne strukture direktorijuma i dokumenata unutar njih.
  6. Ako posetilac odluči da obriše "tema" iz gornjeg URL-a, trebalo bi da mu se otvori stranica sa kategorijama a ne, recimo, poruka "ovaj dokument ne postoji".
  7. Prikazati posetiocu breadcrumb kako bi u svakom trenutku znao gde se na sajtu nalazi.
  8. Kod navigacije pre treba koristiti tekstualne linkove umesto slika, javascript-a, padajućih menija, flash-a itd.
  9. Stranica 404 (dokument nije nađen) treba da ima upotrebnu vrednost, na primer, da na sebi ima polje za pretragu, neku sugestiju ili mapu sajta
  10. Za svaki dokument/stranicu koji imate na sajtu potrebno je da postoji jedinstvena URL adresa, u protivnom saobraćaj će se deliti između njih i biće na neki način konkurentne jedna drugoj. Izvršiti i canonical URL check
  11. Vreme učitavanja stranica treba smanjiti na minimum.
  12. Postoji više mapa sajtova koje možete da obezbedite za vaš sajt. Najbitniji su sitemap.xml koji će koristiti botovi prilikom prolaska kroz vaš sajt i mapa sajta koju će koristiti vaši posetioci. Ako želite, možete napraviti i mapu slika kao i mapu stranica optimizovanih za mobilne telefone.
  13. Pomoću datoteke robots.txt možete sprečiti botove da indeksiraju određene delove sajta a pomoću "rel=nofollow" možete sprečiti bota da prati neki od linkova.
  14. Trend pokazuje da sve više ljudi koristi mobilne uređaje kako bi pristupalo sajtovima pa stoga treba razvijati sajtove koji se podjednako dobro vide i na punom HD monitoru i na mobilnom telefonu (responsive dizajn, na primer).


петак, март 29, 2013

Žabac

Stara igra Frogger koju možete igrati iz Internet čitača. Na sajtu postoji klon originalne igre ali postoje i još neke zanimljive verzije ove zabavne igre koje možete da isprobate (recimo, 3D Frogger).


Adresa: www.frogger.net

субота, март 23, 2013

Viki

Viki je sajt koji omogućuje korisnicima da dodaju, menjaju i brišu njegov sadržaj iz samog Internet čitača iliti brauzera. Najpoznatiji primer upotrebe vikija je Wikipedia - "besplatna enciklopedija". Svako može na svom sajtu ili intranetu da postavi viki bez previše muke. Primera radi, LionWiki je minimalistički viki endžin pisan u programskom jeziku PHP koji ne zahteva da imate instaliranu bazu podataka (svi dokumenti se čuvaju u tekstualnim datotekama), sastoji se iz jednog fajla, proširiv je i besplatan.

CMS

CMS je sistem za upravljanje sadržajem. To znači da se ovaj sistem sastoji od interfejsa pomoću kojeg je moguće pisati, objavljivati i menjati sadržaje u vidu postova. Najpoznatiji CMS-ovi su svakako Joomla, Drupal i Mambo i sve ih krasi karakteristika da u pozadini morate imati bazu podataka (najčešće MySQL) u koju će se smeštati vaši postovi. Šta ako vaš hosting plan ne uključuje korišćenje baze podataka? U tom slučaju ćemo potražiti CMS koji podatke ne smešta u bazu već za to koristi običnu tekstualnu datoteku (tzv. flat-file). Jedan od takvih je i CMSimple.


U pitanju je mali, brz, jednostavan za instalaciju i jednostavan za korišćenje, modularan sistem za upravljanje sadržajem koji ne zahteva bazu podataka. Pogodan je za, kako je već rečeno, hosting u koji nije uključeno korišćenje baze podataka, zatim za početne korake u pravljenu sajtova i učenje upravljanja sadržajem. Program je otvorenog koda i besplatan je za upotrebu.

Korisni linkovi:


Ukoliko želite da napravite sajt koji je više tipa uputstva ili enciklopedije, pogledajte kako to možete uraditi pomoću Wiki-ja.

петак, март 22, 2013

субота, март 16, 2013

субота, март 09, 2013

Zend

Što reče neko pametniji od mene, nakon što naučiš sintaksu jednog programskog jezika, vreme je da počneš da se upoznaješ sa bibliotekama i frejmvorkom (framework) za taj jezik. Zend je najlakše instalirati na sledeći način:

Najpre kreiramo jedan direktorijum u kojem će se nalaziti naš projekat. Zatim iz tog direktorijuma skinemo Zend sa SVN-a komandom

svn checkout http://framework.zend.com/svn/framework/standard/trunk

Sada kreiramo jedan PHP fajl sledećeg sadržaja

<?php
set_include_path('/srv/http/sajt/trunk/library');
require_once 'Zend/Mail.php';
$mail=new Zend_Mail();
echo 'Radi';
?>

otvorimo ga u web browseru i, ako se ne pojavi nikakva greška, Zend radi te možemo da počnemo da eksperimentišemo.

Linux cheat sheet

Welcome to Windows 95


Git

Git je sistem upravljanja izvornim kodom koji je razvio Linus Torvalds nezadovoljan postojećim sistemima. Osnovna karakteristika Git-a je distributivnost, što znači da, nakon inicijalnog kloniranja repozitorijuma, nije neophodno komitovati svaku izmenu na server, već se one spremaju u lokalni repozitorijum pa se kasnije kada se steknu uslovi mogu sve komitovati đuture. Sledi kratak sinopsis kreiranja Git repozitorijuma.

Najpre ćemo, nakon instalacije Git-a, podesiti neke globalne promenljive:

git config --list
git config --global user.name "Majstor Kvariš"
git config --global user.email majstor@domen.com
git config --global core.editor vim
git config --global merge.tool vmdiff
git config --list

Zatim ulazimo u direktorijum gde nam se nalazi kod i kreiramo Git repozitorijum:

git init
git status
git add *.php
git add *.css
git add include
git add javascript
...

Ukoliko neke fajlove/direktorijume iz projekta ne želimo da dodamo u repozitorijum, kreiraćemo lokalnu datoteku pod nazivom .gitignore i u nju dodati nazive odnosno paterne za ignorisanje:

vim .gitignore
.*
backup
http_logs
cookie*

Nakon što se pomoću komande git status uverimo da su u projektu fajlovi koje želimo, uradićemo komit:

git commit -m 'Initial commit'
git log

Sada imamo naš prvi Git repozitorijum. Zamislimo da se on nalazi na nekom serveru i da želimo da ga kloniramo u lokalnom direktorijumu. Kucamo sledeće u lokalu:

git init
git status
git remote add origin ssh://user@host:port/to/git
git remote
git fetch origin
git checkout master

i eto ga projekat lokalno kod nas spreman za rad na njemu. Možemo i kod nas u lokalu podesiti globalne promenljive (user.name, user.email itd.) a možemo i po projektu podešavati promenljive izostavljanjem --global. Na primer:

git config user.email alias@domen.com

Ako izmenimo neki fajl iz projekta, recimo index.php, i otkucamo git status, dobićemo informaciju o tome da je fajl izmenjen ali da nije kandidat za komit. Da bismo fajl index.php pripremili za komit, otkucaćemo

git add index.php
git status

i dobiti listu fajlova spremnih za komit. Na kraju kucamo

git commit -m 'Fixed bug'

čime komitujemo izmene. Ako želimo da preskočimo git add korak, možemo da kucamo

git commit -a -m 'Fixed bug'

čime ćemo komitovati sve izmenjene fajlove. Komande


git diff
git diff --staged

nam prikazuju promene na fajlovima. Na kraju da bismo izmene podigli onlajn, kucamo

git push origin master



петак, март 08, 2013

Rezultat upita u fajl

Nekoliko načina da rezultat upita nad Postgres bazom smestimo direktno u fajl:

psql -h host -U user db -o file.csv -c 'query;'
echo 'query;' | psql -h host -U user db > file.csv
psql -h host -U user db
\o file.csv
query;