Meme: Pet stvari koje niste znali o meni

Dragan i Dejan su mi prosledili ovaj meme, pa je red bio da odgovorim :)

1) Svi me znaju kao(PHP) programera, ali malo ljudi zna da se bavim i muzikom. Posedujem apsolutan sluh(bilo koji ton u nekoliko oktava prepoznajem bez problema), završio sam nižu muzičku školu, bio na nekoliko takmičenja, čak i pobedio u Soko Banji(“Prva harmonika Jugoslavije”) u kategoriji klasične muzike davne 1986. Naravno, nikada mi se nije sviđala činjenica da provedem svoj život svirajući klasiku na harmonici u tamo nekoj v*bini u Rusiji, tako da na veliku žalost svojih nastavnika nisam upisao srednju muzičku, već sam se opredelio za kompjutere. Naravno, nastavio sam da sviram, u međuvremenu klavijature i gitaru, ali od Rock ‘n Rolla se nije moglo živeti, tako da sam se potpuno posvetio kompjuterima. E sad, zašto nisam svirao neku drugu vrstu muzike od koje se itekako moglo živeti … pogledajte pod 2 :) Za poslednji rođendan dobio sam na poklon novu gitaru, tako da u pauzi između obaveza obožavam da sviram neke svoje omiljene stvari, a to zna da se protegne do duboko u noć :)

2) Mrzim narodnjake. Ne stvarno, ne mogu da skapiram kako neko to može da sluša u bilo kom okruženju, u bilo koje doba dana i noći, sa bilo kojom dozom alkohola u sebi, no fucking way. Jedino gore od narodnjaka su ovi novi, ne znam ni kako da ih nazovem, isto to, samo malo drugačije. Seljačenje do koske, užas. Za razliku od mnogih ljudi, nikada se nisam folirao, jednostavno mrzim to s*nje i tačka. Sećam se svojevremeno ortaka koji do ponoći slušaju Metaliku, a od ponoći neki užas od narodnjaka, uz izgovor, “kako bre možeš da se zezaš uz Metaliku”. Mogu jebote, ali uz vašeg Sinana Sakića ili Džamaludina Hadžimuratsulejamonića jebeno ne mogu!

3) Jako sam opterećen svojim fizičkim izgledom – čitaj težinom. Kao klinac išao sam u dve škole(muzička/osnovna) tako da sam se slabo družio sa ortacima, i kao posledicu nabacio gomilu kilograma. Mislim da sam u 8 razredu osnovne imao 80kg (visok sam bio tada a i sada 176cm). U srednjoj školi sam stvar prelomio, bavio se sportom, treninzima, držao dijetu mesecima, i posle toga godinama imao ispod 70kg! U vojsci se ponovo usvinjio, ali po povratku u roku od 2 meseca smršao 10kg i tako se relativno dobro držim i danas. Bavim se svim mogućim sportovima, ali naročito sam dobar u tenisu koji igram(ne preterano aktivno na žalost) od 5 godine, ali i basketom koji redovno igram sa IT kolegama iz Boox-a i Softserbia. Pre neki dan sam čitao temu na DPT-u, kako su se kolege programeri udesili na preko 100kg i sa zadovoljstvom konstatovao da se još uvek dobro držim(uprkos tome što moja draga opasno sprema klopu lol).

4) Odlično govorim(i pišem) engleski iako ga nikada nisam učio u školi.
Ovo je relativno duža priča, ali ajd da Vam je ispričam. U vreme kada sam ja išao u školu(a to je bilo još u prošlom veku) u prelasku u peti razred počinjao je da se uči strani jezik. E sad, u mojoj školi bila su 3 odeljenja engleskog, i jedno francuskog, u koje su po pravilu išli lošiji učenici, ili pak oni koji su nekim čudom baš želeli da uče francuski. No nekim čudom, desilo se da ja, iako sam bio jedan od najboljih učenika odem u to famozno Francusko odeljenje. Moji matorci su poludeli, potegli sve moguće i nemoguće veze, da bi se na kraju ispostavilo da je moja nova razredna, gospođa Radmila Gajić(respect) potegla sve moguće i nemoguće veze da bi ja bio u njenom francuskom odeljenju. Kasnije se ispostavilo da je ona predavala i mom ćaletu matematiku, i da je dala sve od sebe da bi i njegov sin bio u njenom odeljenju. I tako ni kriv ni dužan 8 godina sam što gubio časove što imao keca iz francuskog, ali sam što zbog igrica na Commodoru 64, što zbog američkih filmova odlično savladao engleski. Na faksu sam umesto francuskog polagao engleski i dobio 10-ku(dobro, to valjda i nije bilo mogo teško na matematici lol), a i dan danas impresioniram svoje sagovornike sa one strane bare na Skype-u kada saznaju odakle potiče moje znanje engleskog :)

5) Nikada nisam putovao nigde van Srbije.
OK, ovde ne računam putovanja u Grčku i širom stare dobre SFRJ sa mamom i tatom, kao i ova novija u Bosnu/CG i sl. Ne znam zašto, ali valjda kao posledicu svih tih sankcija, ratova i sl. ovde se osećam kao u kavezu, ali nikako da se usudim da izađem iz njega. Prošle godine su mi kolege iz USA ponudile da plate sve troškove za PHP Arch konferenciju na Floridi(Orlando), ali sam u poslednjem trenutku jednostavno odustao od toga. Pomalo čak imam i strah od letenja, iako sam leteo avionom nekoliko puta kao klinac(Bg-Pula, na takmičenje u harmonici – vidi 1), nekako i sama pomisao na to mi uliva neki strah. Sve u svemu, za sada uživam da se vozikam po Srbiji sa svojim novim puntom … a za ostatak sveta … ko zna … sledeće godine je PHP Arch konferencija u Čikagu … :)

Blogodak Beta – Preview Release

Verovatno ste u poslednja 2 meseca primetili da sam utanjio sa postovanjem, što ovde na blogu, što na DPT-u i ostalim forumima. Sada konačno mogu da kažem šta je to na šta sam trošio svo slobodno vreme u prethodnih nekoliko meseci. :)

Dakle, kako je Dragan Babić pre više od mesec dana najavio na svom blogu, u pitanju je jedan servis namenjen pre svega domaćoj blogosferi i blogerima – Blogodak.

Pre nego vam ukratko opišem o čemu se tačno ovde radi, reč dve o tome kako sam uopšte došao na ideju da napravim blogodak. Već nekoliko godina postoji jedan sjajan servis Planetoid, agregator svih srpskih blogova gde se između ostalog vrti i ovaj blog. No, nakon jedne imho kontraverzne odluke administratora planete da neke blogove uprkos protivljenju zajednice uključi na planetu, došao sam na ideju da napravim drugačiji, bolji servis koji će jednostavno po principu “100 ljudi – 100 ćudi”, omogućiti korisnicima da sami biraju šta žele a šta ne žele da prate. Tako je nastao Blogodak.

blogodak_logo1.png

Zašto baš ime Blogodak pitate se :) ? Jednostavno, sva druga imena koja su imala neku asocijaciju(blogosfera.com i sl.) su bila zauzeta a njihovi vlasnici tražili su iznos koji više puta prelazi realnu vrednost domena. Na kraju, moj prijatelj Moreno mi je sugerisao ime koje se pojavilo na ovoj temi na DPT-u … and the rest is history :)

E, sada nakon što sam sve udavio sa nebitnim detaljima da pređem na stvar. Blogodak je agregator blogova na srpsko-hrvatskom jeziku. Zbog ograničenja resursa(pre svega ljudskih), sam servis biće realizovan u nekoliko faza, tako da će malo po malo dobijati sve od planiranih feature-a.

Ovo je praktično neka vrsta prelease-a, što znači da čak ni deo funkcija planiran za ovu verziju(poput personalizacije blogova) još uvek nije do kraja odrađen. Ovo je urađeno pre svega zato što sam želeo da što ranije(čitaj u što ranijoj fazi) dobijem feedack od korisnika, kako bi imao jasnu ideju u kom pravcu će se servis dalje razvijati. After all, ovo je pre svega projekat namenjen zajednici, pa samim tim zajednica će kroz svoje komentare i oblikovati Blogodak.

Trenutno Blogodak ima sledeće mogućnosti:

Feed Parsing
————
Import kompletnog RSS feed-a sa liste blogova, konverzija u latinični utf-8 kodni raspored. Blogodak prati sve izmene sadržaja na svakom pojedinačnom feed-u i automatski update-uje svoju bazu.

Pretraživanje
————-
Obzirom da se zapisi sa svih blogova smeštaju u bazu, svi importovani feed-ovi mogu se pretraživati, na isti način kaoi na svakom pojedinačnom blogu.

Arhiva
————-
Već nekoliko meseci Blogodak importuje feed-ove sa domaće Blogosfere, tako da možete listati arhivu za celu 2006-u godinu.

Personalizacija
—————
Ovo je ujedno i krucijalni deo servisa. Svaki korisnik moći će da kreira listu blogova koje ignoriše, kao i listu omiljenih blogova. Naravno, to je samo deo mogućnosti koje planiram, u narednim verzijama planiram podršku za tagovanje, glasanje itd. Deo servisa koji treba da omoguci kreiranje liste jos uvek nije u potpunosti zavrsen(tu trenutno imam najviše nedoumica i očekujem najviše predloga :).

Ceo servis radi na LAMP platformi(kod je kompletno napisan u PHP-u 5.1), a u planu je da se ubace sve karakteristike Web 2.0 aplikacija uz korišćenje Ajax-a naravno. Naravno, tu je i nezaobilazan tableless dizajn za koji je bio zadužen CSS mag Dragan Babić, koji je imho sa svoje strane odradio sjajan posao.

blogodak.jpg
Blogodak u “akciji”

Naravno, kao i svaki drugi beta softver, Blogodak ima verovatno niz bugova,a neki od njih su već prijavljeni na DPT-u ovde. Kad smo već kod bagova, da pomenem da smo zahvaljujući bug-u u phpmailer-u (ili gremlinima obzirom da sam testirao slanje na nekoliko klijenata) imali loš početak, obzirom da su neki subscriberi dobili više od jednog maila sa sve subscriberima u “To” headeru. Srećom većinu lično poznajem, tako da je bilo uglavnom šala na moj račun(tipa, “…ovaj je dobio 10 mailova a ja samo 8, jel sam ja manje vredan a?!! “) i sl. U svakom slučaju, izvinjavam se svima zbog neugodnosti uz obećanje da ću ubuduće koristiti plain vanila PHP mail funkciju.

Toliko od mene za sada, nešto kasnije ćete moći da uživate u 5 stvari koje ne znate o meni (zahvaljujući meme-u od Dragana i Dejana). Naravno, u međuvremenu svakako probajte Blogodak, a sve svoje primebde i sugestije možete ostaviti ovde, ili na odgovarajućoj temi na DPT-u.

Kragujevac “Odozgo”

Pre par meseci pisao sam o tome kako je Kragujevac konačno uključen na Google Earth. Danas sam zahvaljujući informaciji od insajdera(Zigor@DPT) imao zadovoljstvo da se upoznam sa “Geografsko informacionim sistemom“(GIS) grada Kragujevca.

Na prvi pogled GIS deluje slično kao i Google Maps servis, čak sam na trenutak i pomislio da se u backendu poziva Google ili Yahoo Maps API . Međutim, u pitanju je sasvim jedinstveno rešenje, koje u backendu obrađuje gigabajte ortofoto snimaka. Što se fotografija tiče u pitanju su takozvani “ortofoto” snimci fotografisani iz aviona, koji su naknadno georeferencirani.

Kao i kod Google Maps-a, i ovde mapu možete vući mišem po ekranu, ali za razliku od Google-a, ovde su vam dostupne sve infomacije o nazivima ulica, gustini naseljenosti i sl. Takođe, moguće je pretraživanje baze na osnovu naziva ulice ili broja. Jednom rečju, sistem radi sjajno i nikako da prestanem da se igram sa njime. Ono na šta sam naročito ponosan(uz činjenicu da je Kragujevac prvi grad u Srbiji koji ima ovako nešto) je i činjenica da je kompletan projekat delo jedne domaće firme – Manufakture.

gis-lampix.jpg
Lampix Office

gis1.jpg
GIS sa uključenim layerima

3G u Srbiji!

Kako javlja b92.net, od srede(što će reći već od sutra) korisnici MTS-a moći će da uživaju u blagodetima 3G-a!

Sta je to 3G :)

Za neupućene, radi se o trećoj generaciji mobilne telefonije koja bi trebala da nam omogući video pozive, brži Internet, kao i pregršt multimedijalnih sadržaja. Više informacija o 3G-u možete naći na ovde, a rasprave o mts-ovom 3G-u su otvorene na ES-u i DPT-u.

Izbori na Internetu

Sudeći po rotirajućim banerima na sajtu b92.net, političari Internet shvataju sve ozbiljnije. Sledeće 3 slike predstavljaju screenshot-ove sa home page-a sajta b92 u 3 uzastopna refresha.

izbori3.gif

izbori2.gif

izbori1.gif

Da li je ovo dobar znak za predstojeći Internet bum u 2007-moj, ili samo izuzetak koji podrvrđuje pravilo, videćemo u narednim mesecima.

Nokia N73

Nakon gotovo 3 godine od furanja starog(dobrog) 3650, konačno sam sebe častio novim telefonom. Iako sam planirao da 3650 furam još dosta dugo(sve dok Nokia N93 ne padne ispod 300e), nakon jedne rasprave na DPT-u bio sam u prilici da malo bolje prostudiram alternativu, i naposletku opredelio se da ipak požurim sa upgrade-om :)

Iako me je za N73 praktično zainteresovala Telenorova ponuda(16k dinara uz dvogodišnji ‘Mobi Pro 400’ paket), ispostavilo se da taj “deal” za mene ipak nije bio tako povoljan(hvala, ali ipak ne trošim ni blizu 400 minuta mesečno), tako da sam potražio alternativu kod lokalnih prodavaca telefona. Nakon malo cimanja(u nekoliko prodavnica gledali su me kao ludaka kad sam im pomenuo N seriju – živela provincija), moj omiljeni prodavac kod koga sam pazario i (sada već) bivši fone je dobio originalni package(identičan onom koji se prodaje kod telenora), tako da sam brže bolje opljačkao najbliži bankomat i postao ponosni vlasnik istog :)

n73 pack
N73 Sealed Package

Pored telefona, u originalnom pakovanju nalaze se još i punjač, kompletan manual na srpskom, usb kabal, slušalice, CD sa softverom, pa čak i krpica za brisanje telefona. Obzirom da koristi litijum-polimersku bateriju nije bilo potrebno nikakvo formiranje i sl, tako da sam nakon standardnog punjenja baterije krenuo da se igram sa istim.

n73 vs. 3650
N73 vs. 3650

Našalost, veoma brzo sam se uverio koliko je moj 3650 “zastareo”, kada nisam uspeo da ga povežem sa verzijom PC Suita koja je išla uz N73. Nijedna od varijanti direktne sinhronizacije podataka nije funkcionisala. Imao sam backup napravljen pomoću stare verzije PC Suita, ali nova nije htela da ga učita. Probao sam da direktno povežem telefone, ali osim slanja jednog po jednog kontakta preko bluetooth-a, ništa pametnije nije funkcionisalo. Čak sam imao i .csv listu kontakata napravljenu pomoću nekog Symbian programa na 3650, ali nisam imao instalaciju istog za N73(Symbian 9.1). Na kraju, morao sam da deinstaliram novi PC suite, instaliram stari, kao i MS Outlook sa kojim sam prvo sinhronizovao kontakte sa 3650, a zatim deinstaliram stari PC Suite, instaliram novi, pa opet odradim sinhronizaciju N73 sa istim. Smaranje.

n73 vs. 3650 back
N73 vs. 3650

Nakon relativno uspešnog importa(slike kod kontakata su nažalost ostale na 3650), mogao sam na miru da se posvetim ostalim stvarima. Za razliku od 3650 koji je dobar deo funkcionalnosti nadoknađivao third party software-om, uz N73 dolazi odličan Web browser koji je praktično u stanju da učita svaki sajt iz moje liste bookmarkova, a tu je i podrška za mp3, office fajlove (quick office) kao i Adobe Acrobat Reader, pa čak i Flash player.

Na stranu obilje softvera, realno, najveći adut ovog telefona jeste njegova kamera. Carl Zeiss optika sa 3.2 megapiksela pravi sasvim solidne fotografije, ali ono što me je praktično oduševilo kod N73 jeste gomila opcija kod pravljenja istih. Iako nema mogućnost optičkog zuma(postoji 20x digitalni zum), N73 ima gotovo sva podešavanja koja se mogu naći na nekom solidnom digitalcu. Predefinisani modovi(auto, noćni, makro, portrait, landscape …), podešavanja svetlosti(dnevna, sijalica, fluoroscentna …), blica, iso, efekti boja … pa čak i mogućnost editovanja slike (kropovanje, dodavanje teksta i sl.). Naravno, kvalitet fotografija još uvek zaostaje za prosečnim digitalcem, ali telefon je nešto što uvek nosim sa sobom(za razliku od kabaste digitalne kemere), tako da mi se više neće desiti nešto što mi se ranije tako često dešavalo(“eh da mi je moj canon ovde …” :). Inače, kompletan test Nokie N73(zajedno sa poređenjem fotografija sa najvećim konkurentima poput SE K800i i N93) možete naći ovde.

Naravno, telefon nije bez mana, a verovatno najveća je njegova tastatura(na koju sam se nekako i privikao) i ne tako kvalitetan džojstik(na koji nikako da se priviknem). Takođe, verzija softvera koja dolazi uz telefon ima neke sitne bugove(koji su navodno ispravljeni u novijim verzijama firmware-a), ali još uvek nisam siguran da ću raditi upgrade firmware-a (bez obzira što se radi o veoma jednostavnoj proceduri zahvaljujući Nokia Software Update programu), obzirom da bi u tom slučaju najverovatnije izgubio originalnu Nokia garanciju.

Sve u svemu, vrh fon koji kao i 3650 planiram da koristim veoma dugo. Moram da se požalim da čak i osećam izvesnu dozu nostalgije prema starom 3650. Obično sam do sada stare telefone poklanjao članovima uže porodice, ali ovaj(ponajviše zbog svoje veličine) niko ne želi, a njegova cena na tržištu nije veća od 50 eura, tako se ne isplati prodavati ga. Juče sam čak izvadio sim karticu iz novog fone-a i dva sata se igrao sa starim, čak sam i komponovao novu melodiju u Composeru(N73 to nema).

Kako Prepoznati Srbina

Sećate li se mog prijatelja Manu-a, amerikanca koji prati isključivo fudbal(i to ne američki) ?

Manu       15.12.20 20:34 usa stole a serb footballer

Manu       15.12.20 20:35 http://chivas.usa.mlsnet.com/players/bio.jsp?team
                               t120&player=kljestan_s&playerId=kle326299&statTyp
                               =current

dinke      15.12.20 20:35 Sacha Kljestan ? Serb ?

Manu       15.12.20 20:36 lol

Manu       15.12.20 20:36 you should know

Manu       15.12.20 20:36 that is serb name

Manu       15.12.20 20:36 that is not serb name

Manu       15.12.20 20:36 that is serb name

Manu       15.12.20 20:36 that is not serb name

Manu       15.12.20 20:36 to be or not to be a serb

Manu       15.12.20 20:36 that is the question

Nakon što mi je sinoć po n-ti put(gde n–>00) servirao vest o nekom mom “zemljaku”, morao sam da potrošim vreme i objasnim mu kako da prepozna Srbina u vestima(tim pre što u našem multinacionalnom timu imamo dvocifren broj ovdašnjih programera):

function isSerb($lastname)
{
	$found = preg_match("/^[\pL]+ić$/u", $lastname);
	
	if($found)
	{
		return true;
	}
	else
	{
		return false;
	}
}

Uvod u GeoIP

Verovatno ste već bili u prilici da koristite Google Analytics alat, gde između ostalog možete na mapi sveta videti odakle tačno dolaze posetioci vašeg sajta, ili ste tu i tamo posetili sajt koji bi Vam između ostalog izbacio podatke o Vašoj trenutnoj lokaciji. Naravno, nije u pitanju nikakva magija, tačna lokacija posetioca definisana je na osnovu njegove IP adrese, a tehnologija koja se koristi prilikom “lociranja” korisnika opšte je poznata pod nazivom GeoIP.

Danas ćemo pričati o tome kako “locirati” posetioca pomoću PHP-a i Max Mind-ove GeoIP baze. U primerima koji slede koristicemo besplatne(lite) verzije GeoIP baza, obzirom da se za pune verzije plaća $50USD + $12USD za update (GeoIP Country baza) i $370USD + $90USD za update (GeoIP City baza). Mana lite verzija je što nisu uvek 100% ažurne, ali će odlično poslužiti za naš tutorijal, a iz ličnog iskustva tvrdim da su upotrebljive i u većini live projekata.

MaxMind obezbeđuje API za nekoliko popularnih programskih jezika, (kompletna lista dostupna je ovde), a detalji o PHP API-u dostupni su ovde. Pored takozvanog “Pure PHP API-a” koji ćemo ovde koristiti, postoje i PECL ektstenzija kao i apache modul(mod_geoip), koji pružaju bolje perfomanse ali i komplikovaniji setup.

Za početak neophodno je da skinete sve fajlove koji se nalaze na http://www.maxmind.com/download/geoip/api/php/ i snimite ih negde unutar vašeg Web stabla(recimo /htdocs/geoip). Za korišćenje GeoIP Country treba skinuti lite bazu odavde, a za city GeoLiteCity bazu odavde. Radi jednostavnosti korišćenja, obe baze ćemo takođe raspakovati u isti direktorijum gde smo i snimili fajlove iz PHP API-a (/htdocs/geoip).

GeoIP Country
——————————–

Idemo sa primerom detekcije zemlje posetioca:

<?php
/**
 * Primer Koriscenja GeoIP Country Baze
 * 
 * @version $Id$
 * @package geoip
 * @copyright © 2006 Lampix.net
 * @author Dragan Dinic <dinke@lampix.net>
 */

require_once("geoip.inc");

$gi = geoip_open("GeoIP.dat", GEOIP_STANDARD);

$ip = $_SERVER['REMOTE_ADDR'];
//ako testirate u lokalu koristite ovaj ip radi testa
//posto ce $_SERVER['SERVER_ADDR'] biti 127.0.0.1
//$ip = "89.216.226.174";

$country_name = geoip_country_name_by_addr($gi, $ip);
$country_code = geoip_country_code_by_addr($gi, $ip);
if($country_name)
{
	echo "Zemlja iz koje nas posecujete je: $country_name <br />";
	echo "Skracena Oznaka: $country_code <br />";
}
else 
{
	echo "Nazalost, nismo bili u mogucnosti da vas lociramo.";
}

geoip_close($gi);
?>

Dakle, na početku uključujemo geoip.inc koji sadrži sve f-je potrebne za korišćenje GeoIP County baze, zatim kreiramo novu instancu GeoIP klase pomoću geoip_open f-je, i na kraju pozivamo odgovarajuće f-je (geoip_country_name_by_addr i geoip_country_code_by_addr) da bi smo dobili ime/kod zemlje u kojoj se nalazi ip adresa posetioca(u slučaju da testirate u lokalu nemojte koristiti $_SERVER[‘REMOTE_ADDR’]).

Kao izlaz skripta, trebalo bi da dobijemo nešto poput:

Zemlja iz koje nas posecujete je: Serbia and Montenegro 
Skracena Oznaka: CS

F-je koje smo koristili da bi dobili podatke o zemlji posetioca, samo su neke od f-ja koje su dostupne u API-u. Ostatak možete i sami pronaći jednostavnom analizom PHP sourca geoip.inc fajla.

GeoIP City
—————————-

A sada da proširimo podatke o zemlji sa tačnom lokacijom (grad, poštanski kod itd).

<?php
/**
 * Primer Koriscenja GeoIP City Baze
 * 
 * @version $Id$
 * @package geoip
 * @copyright © 2006 Lampix.net
 * @author Dragan Dinic <dinke@lampix.net>
 */

require_once("geoipcity.inc");

$gi = geoip_open("GeoLiteCity.dat", GEOIP_STANDARD);

$ip = $_SERVER['REMOTE_ADDR'];
//ako testirate u lokalu koristite ovaj ip radi testa
//posto ce $_SERVER['SERVER_ADDR'] biti 127.0.0.1
//$ip = "89.216.226.174";

$record = geoip_record_by_addr($gi, $ip);

if(!$record)
{
	echo "Nazalost, nismo bili u mogucnosti da vas lociramo.";
}
else
{
	echo "Zemlja: " .$record->country_name . "<br />";
	echo "Skracena Oznaka: " . $record->country_code . "<br />";
	echo "Skracena Oznaka2: " . $record->country_code3 . "<br />";
	echo "Region: " .$record->region . "<br />";
	echo "Grad: " .$record->city . "<br />";
	echo "Postanski Kod: " .$record->postal_code . "<br />";
	echo "Geog. Sirina: " .$record->latitude . "<br />";
	echo "Geog. Duzina: " .$record->longitude . "<br />";
}

geoip_close($gi);
?>

Kao što vidite, PHP kod je sličan kodu za detekciju zemlje, s tim što smo koristili geoipcity.inc kao i GeoLiteCity.dat bazu. F-ja geoip_record_by_addr($gi, $ip) vraća instancu klase ‘geoiprecord’ koja sadrži kao promenljive(osobine) podatke o lokaciji koje koristimo u gornjem kodu. Nakon pokretanja skripta trebalo bi da dobijemo nešto poput:

Zemlja: Serbia and Montenegro
Skracena Oznaka: CS
Skracena Oznaka2: SCG
Region: 02
Grad: Beograd
Postanski Kod: 
Geog. Sirina: 44.8186
Geog. Duzina: 20.4681

Napominjem da je GeoIP baza najažurnija kada su u pitanju gradovi sa severnoameričkog dela planete, dok je njena preciznost znatno manja kada se dođe do “egzotike” u koju nažalost spada i Srbija.

CaseStudy – Redirekcija na osnovu IP adrese
————————————————————–
Za kraj znanje stečeno ovde iskoristićemo u jednom pravom projektu. Naime cilj je da se na dvojezičnom sajtu(blogu) korisnici koji dolaze iz Srbije usmere na srpsku verziju sajta, dok će se svi ostali usmeriti na englesku verziju. Evo kako to izgleda:

<?php
/**
 * Case Study - Redirekcija na osnovu lokacije
 * 
 * @version $Id$
 * @package geoip
 * @copyright © 2006 Lampix.net
 * @author Dragan Dinic <dinke@lampix.net>
 */

require_once("geoip/geoip.inc");

$gi = geoip_open("geoip/GeoIP.dat",GEOIP_STANDARD);

$country_code = geoip_country_code_by_addr($gi, $_SERVER['REMOTE_ADDR']);

geoip_close($gi);

if($country_code == 'CS')
{
        header("HTTP/1.1 301 Moved Permanently");
        header('Location: http://www.dinke.net/blog/sr/');
}
else
{
        header("HTTP/1.1 301 Moved Permanently");
        header('Location: http://www.dinke.net/blog/en/');
}
?>

Primer koji vidite gore koristi se upravo na ovom blogu, kako bi sve korisnike koji ne dolaze iz Srbije automatski preusmerio na englesku verziju bloga. Slanje custom 301 redirection headera je važno kako bi botovi (Google i sl.) indeksirali strane na odgovarajući način.

BOOX EXPO 06

Imam zadovoljstvo da najavim jedan vrhunski IT događaj, i to u mom gradu – Kragujevcu. Naime, kompanija Boox Computers organizuje izložbu računarske opreme sa pratećim predavanjima pod nazivom “Boox Expo 06”. Izložba će biti održana 24. novembra 2006. god. od 12:00 do 15:00, u Domu Vojske, ul. Kneza Miloša 7 u Kragujevcu.

Obezbeđeno je prisustvo predstavnika praktično svih brendova koji nešto vrede u IT svetu, a udarne teme biće promocija Windows Vista operativnog sistema, kao i promocija Intel Core 2 Duo procesora. Na osnovu informacija od “insajdera” svim posetiocima obezbeđen je 2Mbps link ka Internetu.

Više informacija o ovoj IT manifestaciji možete pronaći ovde.

Ford S-MAX evropski automobil godine

U tradicionalnom izboru novinara iz 22 zemlje, Ford S-Max osvojio je prestižnu titulu automobila godine 2007.

s-max

Ford je titulu osvojio prilično tesno, sa samo 2 boda ispred konkurencije (Opel Corsa). Moj favorit, Fiat Grande Punto(čiji sam i sam ponosni vlasnik) prošao je poprilično neslavno, obzirom da se sa 138 bodova nalazi na poslednjem mestu u ovom užem izvoru. Kompletnu tabelu (ko je za koga glasao) možete pronaći ovde.

PHP 5.2 upload progress meter

Yesterday I’ve spent considerable amount of time in order to find out more about the most interesting new PHP 5.2 feature – hook for upload progress meter. Except for this link I haven’t found anything else, no php source code example how to make one.

However, after I looked at internal php mailing list archive, I’ve found this thread, still no php data found, but Rasmus mentioned link with an example at http://progphp.com/progress.php. I immediately tried upload and it looked very cool. Then I looked at html source code and noticed one unusual thing there: APC_UPLOAD_PROGRESS hidden field inside of html source. I knew it must be important so I’ve googled for it, and insteresting enough first result was source code of Rasmus example above :)

So, I took complete source (I figured out later it is upload meter example made by Rasmus Lerdorf) and quickly tried to make it working under my fresh new installed PHP 5.2.0. Unfortunately, it didn’t work since it needed apc stuff installed. After I looked at apc documentation, I found that I need to grab it from list of pecl dll’s for windows php 5.2 version. Unfortunately, after I’ve downloaded it from here I’ve noticed apc dll is missing there ?!!

Again, I had to google for php_apc.dll and after a while found needed dll available at http://pecl4win.php.net/ext.php/php_apc.dll. In order to make it working, you have to save dll file under php/ext dir (i.e. c:\php\ext on windows) and put this to php.ini:

extension=php_apc.dll

Unfortunately, it still didn’t work, so I’ve looked at apc docs further. Finally on this page I’ve found apc have new “special feature” which is directly related to our new upload feature.

    apc.rfc1867             RFC1867 File Upload Progress hook handler is only available
                            if you compiled APC against PHP 5.2.0 or later.  When enabled
                            any file uploads which includes a field called 
                            APC_UPLOAD_PROGRESS before the file field in an upload form
                            will cause APC to automatically create an upload_
                            user cache entry where  is the value of the 
                            APC_UPLOAD_PROGRESS form entry.
                            (Default: 0)

After I figured out on my phpinfo page apc.rfc1867 setting is turned off, I’ve added

apc.rfc1867 = on 

in php.ini, and after restart was finally able to enjoy new fancy upload progress meter :)

upload progress meter

Btw, upload also depend of json turned on as well, but it was already turned on so I didn’t have any more problems.

About the code Rasmus used in his example, I am tired to analyze it more now, but obviously it use Yahoo! User Interface Library to create progress bar and json/apc to control it from php during file upload.

I hope this will be helpful for someone. Enjoy ;)

PHP 5.2.0 Released

New release of PHP 5.2.0 is available for download.

Along with plenty of bugfixes, new release bring us some interesting features, the most interesting among them are hooks for tracking file upload progress , as well as new ZIP extension for creating and editing zip files.

More informations about this release can be found in the release announcement 5.2.0.

Izašao PHP 5.2.0

Nova verzija PHP-a, 5.2.0 od juče je dostupna za download.

Pored gomile ispravljenih bagova, nova verzija donosi i neke interesantne mogućnosti od kojih su meni najinteresantnije podrška za “progres bar” prilikom uploada, kao i podrška za zip fajlove. Više informacija o tome šta nam novo donosi PHP 5.2 možete pronaći ovde.

Humanost.org

Verovatno ste već čuli za sajt humanost.org, sajt koji je omogućio svim ljudima velikog srca da pomognu onima u nevolji.

Od juče je zahvaljujući Bluesmanu, omogućena SMS uplata za apele za pomoć. Prilikom svake uplate će se odlučiti na koje račune sa Humanost.org sajta će novac biti uplaćen.

SMS uplate važe samo za brojeve sa 064 i 065 mreže.

Uputstvo za uplate

Pošaljite SMS na broj 6233:

ECA humanost
(cena SMS-a je 50 dinara + PDV)
ECB humanost
(cena SMS-a je 100 dinara + PDV)
ECC humanost
(cena SMS-a je 150 dinara + PDV)
ECD humanost
(cena SMS-a je 200 dinara + PDV)
ECE humanost
(cena SMS-a je 300 dinara + PDV)

Naravno, kao i do sada Webmasteri mogu dati svoj doprinos postavljanjem odgovarajućih banera.

IE7 – Automatic Update

IE 7 Automatic Update
Stigao je :)

Izglasan Novi Ustav Srbije

Na osnovu prve projekcije CESID-a, usvojen je novi Ustav Republike Srbije. Iako sam se juče (kao i mnogi drugi) zabrinuo da je ovaj narod konačno počeo da misli svojom glavom, dvodnevno ispiranje mozga (ni Gebels se ovoga ne bi postideo) od strane gotovo svih medija u Srbiji očigledno je dalo željene rezultate.

Bilo kako bilo, moram da priznam da mi je laknulo. Od sutra Kosovo je ponovo u Srbiji (doduše ne i Latinica koja je izbačena iz Ustava), nema više inflacije, nezaposlenosti, redova za vize (ko bi uopšte poželeo da makar i na minut napusti ovako savršenu zemlju), a verujem da će od večeras i ozonska rupa biti makar malo manja. Ma mora biti :)

Ostaje žal zašto je u ovom ustavu Srbija definisana u svojim granicama, kad je lepo moglo da se ubaci da se proteže makar do Tokija. Verujem da bi za takav ustav bilo mnogo lakše namaknuti 50% glasača nego sa ovim. U svakom slučaju lepa ideja za naredni, pošto tvorci ionako planiraju da ga “update-uju” češće nego što Microsoft updatuje Windows.

Browser War – Revisited

Svi se sećamo sredine 90-tih, rata browsera i velike pobede IE-a koji je na početku 21 veka držao više od 98% tržišta. Nekoliko godina IE je spavao na lovorikama stare slave, a konkurenti (Netscape, Opera) uzaludno su pokušavali da kvalitetom dođu do većeg udela na tržištu. U međuvremenu Netscape je odlučio da otvori kompletan izvorni kod svog browsera, čime je praktično nastao novi browser – Mozilla, po kvalitetu i podršci Web standardima daleko iznad explorera ali i dalje bez većeg uspeha u osvajanju tržišta. A onda je Mozilla fondacija krenula sa razvojem “browsera budućnosti”, prvobitno nazvanog Firebird. Posle par ranih verzija browser dobija novo ime – Firefox.

Od Novembra 2004 godine kada je zvanično izašla prva stabilna verzija Firefox-a (mnogi poput autora ovog teksta koristili su ga i znatno pre toga), broj korisnika istog postepeno je rastao, ali to nije brinulo Microsoft koji je i dalje držao veći deo tržišta. No, kada je vrag odneo šalu (čitaj broj korisnika Firefox-a prešao famoznih 10%), developeri Microsofta su se latili posla, i kreirali novi IE 7, sa svim divnim mogućnostima koje FF ima (bolji css support, podrška za tabbed browing itd.). Nakon nekoliko meseci testiranja i raznih beta, RC i sl. verzija pre nekoliko dana IE 7 je postao dostupan za download. Odgovor Firefox-a bio je munjevit. Posle par bledih release candidata, brže bolje spakovana je nova verzija Firefox 2.0, a deo planiranih feature-a odložen je za verziju 3.x čiji je razvoj već počeo.

IE7 - Cake or Poison :) ?
Torta koju je IE Tim navodno poslao developerima Firefoxa

Za samo 4 dana novi IE7 downloadovalo je preko 3 miliona korisnika, a njihov broj će biti još veći kada Microsoft bude pustio IE 7 kao deo automatskog update-a u Windowsu XP. U međuvremenu nova verzija Firefoxa naišla je na podeljene reakcije korisnika, što će sigurno rezultovati sporijim upgrade-om na verziju 2.0. Mnogi sajtovi poput ovog, već se bave poređenjem mogućnosti ova dva browera.

ff_vs_ie.jpg

Sve u svemu, novi rat browsera je u toku, a kao i u svakom ratu postojaće žrtve ali i “ratni profiteri”. Ironično, profitiraće korisnici, koji će osim boljih browsera postepeno dobiti i bolje sajtove, jer je nivo podrške za najsavremenije standarde u IE-u 7 i FF-u 2 veći nego ikada. Profitiraće i industrija, kojoj će IE7 dati nov podsticaj u Web 2.0 bumu (koliko će to trajati – videćemo). Pored poraženih (neko u ratu uvek izgubi zar ne) kolateralna šteta biće developeri, pogotovo oni koji održavaju sajtove velikih kompanija. Vreme starih sajtova sa ugnježdenim tabelama i “spacerima” definitivno prolazi, a broj takvih sajtova je ogroman, tako da će najveći izazov developerima biti konačno usvajanje novog CSS-P ili popularno “tableless” dizajna, uz naravno nezaobilazni JavaScript kao J u Ajax-u.

Referendumska Dilema

E baš nisam hteo da pišem o ovome, ali spam koji sam upravo dobio od Telenora me je dovoljno iznervirao da napišem par reči i o tome .

fescr2.jpg
Referendumski Spam

Dakle, za one neobaveštene(ako takvih uopšte ima), 28 i 29-tog Oktobra, (što će reći tokom nastupajućeg vikenda) sledi nam dvodnevno glasanje o novom ustavu. Neću komentarisati to kako je ustav donesen, niti ću komentarisati tekst samog ustava, niti ću komentarisati u našoj istoriji(a možda i u istoriji uopšte) nezabeleženo dvodnevno glasanje. Mislim da je to već odlično komentarisano na ovom blogu.

U velikoj sam dilemi – izaći ili ne izaći na glasanje. Kako da ne izađem i glasam kad me na bojkot pozivaju redom razne Nataše, Čede, Organizacije za zaštitu prava gej populacije i svi njima slični. S druge strane, kako da ne bojkotujem kad me na referendum pozivaju fudbaleri, sps, srs, spc, g17+ i iznad svih “obećano – ispunjeno” dss.

Firefox 2.0 Final

Gotovo godinu dana nakon prethodne verzije, kao i vrlo loših utisaka o poslednjem release kandidatu 3, finalna verzija Firefoxa 2.0 od danas je konačno dostupna za download.

Firefox 2.0

Na osnovu zvaničnog “release notes”-a, novi Firefox sadrži poboljšanja u izgledu, ugrađenu zaštitu od phishing-a, spell checking, bolji tabed browsing, itd., a ispod haube tu je i podrška za JavaScript 1.7.

Nakon downloada (instalacija za Windows velika je 5.6MB), sama instalacija protekla je sasvim glatko, bez ikakvih problema sa ekstenzijama, uz uobičajen automatski update ektenzija koje nisu podržane.

Prvi utisci nisu baš tako povoljni. Nova default tema mi se nimalo ne sviđa, dodato je nešto što liči na “Go” dugme kod Explorera, a uz sve to, više ne postoji “krstić” u desnom uglu prostora sa tabovima na koji možete zatvoriti aktivni prozor, već su sada (kao kod Opere) prisutni samo kod pojedinačnih tabova.

Od novih feature-a, izdvajam mogućnost da firefox prilikom starta otvori iste one tabove koje ste imali pre zatvaranja (restaurira sesiju). Ona je (barem kod mene) po defaultu isključena, ali se može uključiti u glavnom meniju. Pored toga, tu je i spell checker koji je po defaultu uključen, bez obzira na jezik koji koristite, tako da će vam uredno sve reči u formi markirati kao greške (srećom lako se isključuje). Prilično beskorisno, osim ako ne pišete jako mnogo tekstova na engleskom. :)

Što se opcija u meniju tiče, nema većih izmena. U History delu dodata je opcija “Recently closed tabs”, jako korisno, pogotovo ako greškom zatvorite neki tab. Takođe extenzije i teme su sada organizovane delu koji se zove “Add-ons”, koji je dostupan u Tools delu menija. U glavnom “Options” meniju dodat je “feeds” tab, gde se može definisati default feed reader, a u slučaju da nemate nijedan instaliran možete izabrati neki od popularnih online readera (Bloglines, Google Readers itd.).

Sve u svemu, utisci o novom Firefox-u su pomešani, ali sačekaću još nekoliko dana pre nego eventualno donesem odluku da se vratim na stari (dobri) 1.5.

Janko Tipsarević – Play of The Week

Poen Janka Tipsarevića u meču protiv Marata Safina izabran za potez nedelje. Uživajte :)

Zlatni Dani Srpskog Tenisa

Posle osvajanja ATP turnira u Metz-u, srpski teniser Novak Đoković našao se na 16-om mestu ATP liste, što je najbolji zabeležen plasman ikada od strane nekog našeg tenisera. Po prvi put još od vremena Bobe Živojinovića imamo tenisera među prvih 20, a popularni Nole najavio je i pohod na sam vrh. Obzirom na sinoćnu pobedu u meču protiv Andy Murray-a na turniru u Madridu, Nole bi već sledeće nedelje mogao da popravi svoj plasman za još koje mesto.

Novak Djokovic Osvaja Metz
Nole podiže pobednički pehar u Metzu

Među prvih 100 na ATP listi nalazi se i Janko Tipsarević, koji je trenutno 67, a blizu 100 najboljih su Boris Pašanski (102) i Ilija Bozoljac (140). Uz sve to, bili smo na korak da se plasiramo u svetsku grupu Davis Cupa, a na osnovu žreba imamo realne šanse da to učinimo naredne godine.

Pored Noleta, rekordan plasman ove nedelje ostvarile su i naše devojke, Ana Ivanović nalazi se na 13-tom mestu WTA liste, a odmah iza nje (14) je i Jelena Janković.

Nažalost, moram da konstatujem da su ovi sjajni rezultati napravljeni uprkos lošim uslovima za rad, jer većina gradova u Srbiji nema uslove za trening tokom zime, a svi gore navedeni teniseri već odavno treniraju van svoje zemlje. O funkcionisanju saveza dosta toga može se zaključiti na osnovu izgleda njihovog sajta, gde nažalost ne možete pronaći ništa od gornjih informacija.

“Savremene Web tehnologije” – Utisci

Kao što sam i najavio u svom prethodnom zapisu, danas je u Nišu otvoren dvodnevni seminar posvećen savremenim Internet trendovima. Kao što sam i očekivao, predavanja su bila vrlo interesantna, a na mene najjači utisak ostavila su sjajna predavanja Marka Bjelića (Kako započeti elektronski biznis), kao i predavanje Vladimira Živaljevića (Pakom).

Uprkos trudu organizatora, došlo je do kašnjenja i promena u satnici, tako da nisam bio u mogućnosti da ispratim neka od predavanja koja su pomerena za sam kraj. No, u svakom slučaju bilo je veoma zabavno videti i upoznati ljude sa kojima komuniciram već godinama po raznim forumima (es i dpt). Što se fotografija tiče, izgleda da danas nije bio moj dan (previše vožnje i premalo spavanja) tako da sam napravio svega nekoliko, a možete ih pogledati na mom flickr accountu.

IT seminar “Savremene web tehnologije”

U medijskoj senci ovogodišnje sinergije, 16. i 17. Oktobra u Nišu održaće se konferencija posvećena savremenim Internet tehnologijama. Svi prisutni predavači su dokazani stručnjaci u svojim oblastima, tako da očekujem izuzetno interesantna predavanja, tim pre što će biti prisutan i dobar deo ekipe sa DPT-a.

Kompletnu satnicu možete naći ovde i ovde.

Zbog svojih obaveza biću prisutan samo prvog dana, tako da već u utorak možete očekivati zapis o mojim ličnim utiscima.

Google Code Search

Google nastavlja da izbacuje nove servise gotovo na dnevnoj bazi. Poslednji u nizu Google Code Search naročito je Interesantan developerima, obzirom da omogućava pretragu unutar source koda. Pretragu možete obavljati korišćenjem “klasičnih” search termina kao i regularnim izrazima.

Google Code Search

Kad smo već kod regularnih izraza, b92.net je nedavno pokrenuo novu sekciju na svom sajtu – tehnopolis gde između ostalog možete naći i moj članak o regularnim izrazima.

Netvibes 2.0

Jedna od najpopularnijih Web 2.0 aplikacija Netvibes, upravo je stigla do svoje druge revizije sa kodnim imenom “Cinnamon”.

Iako Netvibes 2.0 po rečima autora donosi “tonu novih mogućnosti”, ako poput mene netvibes koristite pretežno kao RSS reader, novine gotovo i da nećete primetiti.

Nove mogućnosti odnose se na neznatno izmenjen korisnički interfejs, unapređenja kod većine modula, kao i nekoliko potpuno novih modula (od kojih su meni najinteresantniji “Alexa Ranking” kao i “Blog Search” moduli).

Blog Search
Blog Search

alexa ranking
Poređenje najposećenijih srpskih blogova na “Alexa Rank” modulu

Naravno, kao i kod svake velike revizije, i ova je donela određene probleme, tako da su primetni sitni bagovi kod pojedinih modula. Očekujem da to bude ispeglano u narednim danima.

Netvibes u Akciji
Netvibes u Akciji

P.S. Post koji upravo čitate je jubilarni 100-ti post na srpkom delu bloga.

Mali Batica

I tako ja u nedelju čekam tekmu na tv b92 (derbi španske lige, Barselona – Valensija). Nema. Na tv-u je mali batica. Tražim druge kanale, ali nema. B92 je vlasnik eksluzivnog prava za prenos utakmica španske lige, prisećam se u magli obaveštenja od strane mog cable provajdera (sbb).

Ok, čekamo snimak. 23h snimak počinje, tekma ide, a na gornjoj četvrtiti ekrana ide kajron:

u kući malog batice perica je … bla bla bla …

posle 2 minuta

u kući malog batice mikica je … bla bla bla …

Ugasim TV.

Juče liga šampiona. Odgledam prenos dela tekme, i čekam pregled ostalih, ali ne … prvo mali batica.

Ugasim TV.

Danas, pustim opet b92, vesti u 18:30 koje redovno pratim (šta ćeš niko nije savršen). Jedna od udarnih vesti glasi “b92 svakoga dana gleda sve više gledalaca, a sve je to počelo sa emitovanjem … malog batice …”.

Ugasim TV

U 20:15 puštam b92 kako bi gledao prenos lige šampiona. Inter-Bajern, tekma počinje u 20:45, ali obično se uključe ranije sa gostima u studiju (Radoman), uključenje sa stadiona pred utakmicu i sl. Ali ne. na TV-u je opet mali batica.

Ugasim TV ali ga posle par sekundi ponovo uključim. Setujem b92 na tamo 65 mesto na skali.

OD DANAS VI STE ZA MENE PINK.

Srbija ipak .RS ?

Posle navodnog odbijanja dvoslovne oznake RS od strane ISO-a i famoznog predloga ministarstva spoljnih poslova da nova dvoslovna oznaka bude SS, Internodium je upravo objavio da je nova dvoslovna ISO oznaka za Srbiju ipak RS ?!

Vidim da su sličnu vest već preneli blogeri (Vesić i Aničić), ali niko ne komentariše kako to da je ipak došlo do prihvatanja oznake RS kada je ista bila navodno prvobitno odbijena zbog toga što nije dozvoljeno da ISO oznaka neke zemlje sadrži i državno uređenje (republika).

Ostaje nepoznanica da li je dvoslovna oznaka RS istovremeno i nova CCTDL oznaka za Srbiju koju određuje IANA, a to je ono što sve nas mnogo više interesuje.

MySQL – Kako ukloniti duplikate

Ovaj post je donekle inspirisan problemom koji je bluesman opisao na svom blogu. Dva problema koji nemaju veze jedan sa drugim, ali odlično pokazuju zašto poslodavci insistiraju na x godina iskustva (gde x > 2) :)

Naime, danas sam “u minut do dvanaest” dobio fajl sa par stotina hiljada keyworda koje treba procesirati ASAP (oh kako volim ovu reč). Naravno, u žurbi nisam mnogo gledao u fajl, provalio sam da je format uobičajen (1 keyword po liniji), importovao u bazu sa load data local infile … , startovao procesiranje i to bi bilo to.

Par minuta nakon toga startuje me kolega koji je zaboravio da mi kaže da se kod nekih keyworda “potkralo” par domena tipa “foo.eu” gde ono “.eu” samo treba izbaciti. Sve je to lepo, ali svi su već importovani u tabelu i samo što nisu pokupljeni. Rešen da brzo delam, odlučim da je najjednostavnije odraditi “search/replace hack” direktno u tabeli, ali …

mysql> update odm_master_keywords 
       set keyword = replace(keyword, '.eu','');
ERROR 1062 (23000): Duplicate entry 'academia' for key 2

Shit. Posto je keyword polje unique, neki od tih “.eu” je nakon search/replace-a napravio problem sa istim identičnim keywordom. Ok, obrisaću ručno te duplikate, valjda ih nema mnogo …

mysql> delete from odm_master_keywords_cl where keyword='academia';
Query OK, 1 row affected (0.02 sec)

mysql> update odm_master_keywords set keyword = replace(keyword, '.eu','');
ERROR 1062 (23000): Duplicate entry 'academic' for key 2
mysql> delete from odm_master_keywords_cl where keyword='academic';
Query OK, 1 row affected (0.02 sec)

mysql> update odm_master_keywords set keyword = replace(keyword, '.eu','');
ERROR 1062 (23000): Duplicate entry 'actriz' for key 2
mysql> delete from odm_master_keywords where keyword='actriz';
Query OK, 1 row affected (0.02 sec)

mysql> update odm_master_keywords set keyword = replace(keyword, '.eu','');
ERROR 1062 (23000): Duplicate entry 'foo' for key 2
mysql> delete from odm_master_keywords where keyword='foo';
Query OK, 1 row affected (0.48 sec)
...

I tako, mogao bih ovako do prekosutra … Mora da postoji nešto pametnije :)

Nakon kraćeg razmišljanja, došao sam do ovog rešenja. Privremeno skloniti “unique” index, odraditi update i vratiti index natrag, ali sa ignore opcijom koja će “ubiti” višak duplikata. Dakle:

mysql> alter table odm_master_keywords drop key keyword;
Query OK, 338565 rows affected (13.79 sec)
Records: 338565  Duplicates: 0  Warnings: 0

mysql> update odm_master_keywords set keyword = replace(keyword, '.eu','');
Query OK, 378 rows affected (4.95 sec)
Rows matched: 338565  Changed: 378  Warnings: 0

mysql> alter ignore table odm_master_keywords add unique keyword(keyword);
Query OK, 338565 rows affected (46.45 sec)
Records: 338565  Duplicates: 233  Warnings: 0

Obratite pažnju na ignore deo u poslednjem alteru. On je ključan ovde, jer da ga nismo koristili ponovo bi došlo do greške(duplicate entry …) prilikom update-a.

Inače, poslednja dva query-a su uobičajen “pattern” kada se želite osloboditi duplikata u nekom polju – jednostavno dodajte unique index na polje i višak će biti obrisan iz tabele.

Hacking Webalizer

Few weeks ago I found a way to install Webalizer on DreamHost. Webalizer is a little bit of an obsolete utility (comparing to Google Analytics Webalizer stats look rude), but still has some advantages. One of the biggest is that it is still used by many hosting solutions, so you don’t have to change all of your site(blog) pages just to make sure Google will track your stats.
(more…)

Ko Posećuje Dinke.net Blog

Već nekoliko nedelja za sa zadovoljstvom koristim Google Analytics servis, a sada sam i u prilici da neke podatke podelim sa vama. Slike koje slede prikazuju “geoip” statistiku kao i statistiku korisćenosti određenih familija browsera.

Najveći deo poseta dolazi iz Srbije, ali nakon otvaranja engleskog dela bloga, primetan je sve veći broj posetilaca iz ostalih delova sveta. Takođe, statistika browsera pokazuje izrazitu dominaciju Firefoxa.

Ko dolazi na blog

Mapa

Statistika Browsera

Next Page »