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

Why 09/11 Happened to USA

Few days ago I watched on history channel an documentary about Berlin Blockade in 1948. On Jun 24, 1948 Soviets started total blockade of Western part of Berlin, with goal to spread their control over whole city. All communitations were blocked, and citizens of West Berlin were faced with lack of food, medicine and fuel for upcoming winter.

American response was quick, and starting from Jun 25 they launched a massive airlift using both civil and military aircrafts that flew supplies into the Western Berlin. Aircrafts were fly by volunteers, mostly by experienced WWII pilots who flew day and night, sometimes without sleep. Landing on improvised Berlin airport was very hard (especially during bad weather) – many brave pilots died during this mission.

One of the pilots involved in this mission was Gail Halvorsen. One day during pause between two flights he gave a few sticks of chewing gum to some children watching the planes from outside the base. Wanting to give them more, he promised to drop more candy from his plane the next day. And really, during next flight, soon before landing Halvorsen dropped candy attached to parachutes to children below.

His actions were soon noticed by the press and gained widespread attention. A wave of public support led to donations which enabled Halvorsen and his crew to drop 850 pounds of candy. By the end of the airlift, around 25 plane crews had dropped 23 tons of chocolate, chewing gum, and other candies over various places in Berlin. The action may have had a substantial impact on the postwar perception of Americans in Germany, and it is still pointed to as a symbol of German-American relations.

Yesterday was 09/11, 5 years after terrorist attack on United States. I see many people are looking for cause, why that happend to USA, why USA was picked as a target and why USA is no longer an icon of freedom in modern world.

Not sure about all causes, but I am sure that one of the reasons is that US advocated their freedom in Vietnam, Cambodia, Iraq, Serbia etc. with bombs and not with candies.

Curl HTTP Client

Vrlo često u svojim svakodnevnim poslovima imam potrebu da parsujem podatke sa raznih sajtova (tipa lista expired domena, lista blogova na planetoidu i sl.) i to najčešće tamo gde nemam RSS na raspolaganju. Dugo vremena sam za takve zadatke koristio sopstvenu HTTP klasu baziranu na socketima, ali nisam nešto preterano bio zadovoljan perfomansama, plus sam bio suočen sa gomilom drugih problema tipa kompatibilnost između linuxa i bsd-a i sl.

U međuvremenu sam tu i tamo koristio Curl cli program (uglavnom za dibagovanje), ali mi se nikada nije preterano sviđao njegov PHP API, način na koji se setuju opcije i sl. Zbog svega gore navedenog, napravio sam sopstveni curl “oop wrapper” – jednostavnu klasu koja bi trebala da znatno olakša uobičajene zadatke kao što su slanje GET/POST zahteva, snimanje kukija i sl.

Obzirom da je još nekoliko kolega ovu klasu smatralo vrlo korisnom (neki su čak implementirali i dodatne mogućnosti), pre nekoliko nedelja odlučio sam da je submitujem na phpclasses.org kao Open Source projekat (BSD Licenca).

Evo nekoliko primera korišćenja. Klasa (kao i fajl sa primerima) može se downloadovati ovde.

<?php
/**
 * @version $Id$
 * @package dinke.net
 * @copyright © 2005 Dinke.net
 * @author Dragan Dinic
 */

require_once("curl_http_client.php");

$curl = &new Curl_HTTP_Client();

//pretend to be IE6 on windows
$useragent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)";
$curl->set_user_agent($useragent);

//uncomment next two lines if you want to manage cookies
//$cookies_file = "/tmp/cookies.txt";
//$curl->store_cookies($cookies_file);

//Uncomment next line if you want to set credentials
//$curl->set_credentials($username, $password);

//Uncomment next line if you want to set specific referrer
//$curl->set_referrer("http://my.referrer.url");

//if you want to send some post data
//form post data array like this one
$post_data = array('login' => 'pera', 'password' => 'joe', 'other_foo_field' => 'foo_value');
//and send request to http://www.foo.com/login.php. Result page is stored in $html_data string
$html_data = $curl->send_post_data("http://www.foo.com/login.php", $post_data);

//You can also fetch data from somewhere using get method!
//Fetch html from url
$html_data = $curl->fetch_url("http://www.foo.com/foobar.php?login=pera&password=joe&other_foo_field=foo_value");

//if you have more than one IP on your server,
//you can also bind to specific IP address like ...
//$bind_ip = "192.168.0.1";
//$curl->fetch_url("http://www.foo.com/login.php", $bind_ip);
//$html_data = $curl->send_post_data("http://www.foo.com/login.php", $post_data, $bind_ip);
?>

9/11 – Pet Godina Posle

Pre neki dan na kanalu history bio sam u prilici da gledam jedan dokumentarac posvećen blokadi Berlina 1948 godine. Naime, 24. Juna 1948 godine Sovjeti su otpočeli potpunu blokadu Zapadnog Berlina, sa ciljem da uspostave kontrolu i nad ovim delom grada. Svi saobraćajni putevi koji vode u Berlin bili su blokirani, a građani zapadnog Berlina suočili su se sa nedostakom hrane, lekova i ogreva za nastupajuću zimu.

Odgovor Amerikanaca na blokadu bio je uspostavljanje “vazdušnog mosta”, kojim su američki transportni avioni praktično neprekidno dopremali hranu i ostale potrebštine u Berlin. Avionima su upravljali piloti dobrovoljci, veterani drugog svetskog rata, leteli su gotovo neprekidno, ponekad i bez spavanja. Što zbog iscrpljenosti – što zbog teških vremenskih uslova, sletanje na improvizovani aerodrom bilo je veoma teško, mnogi su piloti izgubili živote tokom ove operacije.

Jedan od pilota koji je učestvovao u ovoj operaciji bio je i Gail Halvorsen. Jednoga dana nakon što je u pauzi između dva leta podelio oduševljenoj nemačkoj deci žvakaće gume, obećao im je da će im sledeći put slatkiše izbaciti direktno iz aviona. I zaista, tokom narednog leta Gail je pre nego što je avion sleteo izbacio male padobrančiće sa slatkišima. Ova Gailova akcija ubrzo je dobila veliki publicitet, pa su hiljade američke dece prikupljale slatkiše za nemačku decu, kojoj su američki piloti iste bacali iz aviona.

Tokom trajanja ove operacije iznad Berlina izbačeno je preko 23 tona čokolade, žvakaćih guma i drugih vrsta slatkiša, a mnogi kažu da je ova akcija bila od presudnog značaja u uspostavljanju demokratskih vrednosti u posleratnoj Nemačkoj. Inače, 12. Maja 1949, tačno u ponoć Sovjeti su ukinuli blokadu.

Danas je 11. Septembar 2006-te, petogodišnjica terorističih napada na SAD. Vidim da se mnogi osvrću na ovaj datum tražeći uzroke, posledice i sl. Jedan od uzroka je sigurno i to što je Amerika svoje “demokratke vrednosti” u Vijetnamu, Kambodži, Srbiji, Iraku, Jordanu i sl. branila bombama a ne slatkišima.

.SS

Molim vas, odgovorite mi na šta vas asocira SS

- Na fašističku organizaciju iz Drugog Svetskog rata?
- Skraćenicu parole Srbija Srbima?
- Latiničnu skraćenicu skraćenice CCCC
- Nešto četvrto?

Posle ovoga molim vas recite mi kako vam se sviđaju domeni:

serbia.gov.ss
spc.org.ss
vasakompanija.ss
vaseime.ss
donotmixgrondmothersandfrogs.ss

I na kraju pročitajte ovo nebulozno SAOPŠTENJE i recite mi ko je ovde lud.

Content is King

Za frazu iz naslova sam po prvi put čuo sada već davne 2001-e, učeći PHP iz tada famoznog Kevin Yank-ovog tutorijala (koji je doslovce počinjao ovom frazom). Za neupućene, fraza označava važnost kvalitetnog sadržaja koji privlači posetioce na sajt.

Ovih dana značaj gornje fraze najbolje sam osetio na sopstvenom blogu. Naime, pre nekoliko dana startovao sam sekciju na engleskom, i bio dovoljno uporan da prevedem većinu programerskih tekstova na isti. Takođe, tokom prošlog vikenda inspirisan temom na DPT-u izbacio sam i top listu srpskih blogova rangiranu na osnovu Netcrafta, koja se automatski update-uje svakoga dana.

Kao rezultat veće aktivnosti na blogu, poseta je porasla sa nekih 100-tinak jedinstvenih poseta dnevno (što se vuklo mesecima) na 300 početkom septembra, a danas je praktično zabeležen i rekord od preko 1000 jedinstvenih poseta (kažem preko, jer se server na kome je sajt hostuje u Kaliforniji gde je sada 3pm, što znači da će biti i veća :). Prateći refere došao sam do dva “izvora” ovog peak-a:

1) Planetoid (dosta ljudi je videlo link na top listi tamo, plus je gomila blogera objavila link ka istoj)
2) Dzone.com (Neko je “digovao” MySQL tutorijale na engleskom)

Statistika Posecenosti Dinke.net (webalizer)

Next Page »