Poslednji osvrt na 2009

Došao je i taj poslednji dan u 2009. godini kada je red malo se osvrnuti natrag da vidimo šta smo sve prošli pre nego otvorimo šampanjac i zakoračimo u Novu 2010 Godinu.

U Januar smo tradicionalno zakoračili sa Božićnim SMS Čestitkama a tih dana zbog problema sa ruskim gasom bilo je veoma bitno da imate nekoga da vas greje oko srca.

U Februaru nas je ponovo posetio Iron Maiden a ja sam nakon što sam očistio par metara snega zapalio na aerodrom i odleteo preko bare na sjajnu FOWA konferenciju.

U Martu sam saznao da čak i u doba surovog kapitalizma u Srbiji stvari i dalje funkcionišu sa primesama Balkanskog šarma što se kod mog poziva broja 988 ispostavilo kao veoma dobra stvar.

U Aprilu sam objavio tobožnji kraj posle 4 godina Blogovanja a Blogodak je kao uveo članarinu preko infostana. Zbog ove dve zajebancije i dan danas dobijam mailove tipa “A ko sada piše na dinke.net”, a tu i tamo javi mi se poneki zabrinuti korisnik Blogotka zbog računa za infostan :)

U Maju sam po prvi put dobio i SMS Scam, a imali smo zadovoljstvo da prisustvujemo sjajnom takmičenju u Driftu u ovoj našoj maloj kasabi.

U Junu sam napisao opsežnu analizu o stanju u srpskom tenisu a Nick Slotter nas je konačno posetio nakon što smo sami morali da se postaramo za predsednika.

U Julu smo uz novi Firefox 3.5 proslavili tačno 40 godina od spuštanja na mesec, a ja sam napisao interesantno poređenje Top Sajtova i Top Tenisera.

U Avgustu smo najavili još jedan Blogopen, a postao sam i korisnik Twittera nakon čega je isti bio down gotovo 48 sati. Apple je izbacio Snow Leopard koji naravno nije bilo moguće tek tako poručiti online jer … Your country is not supported!

U Septembru smo imali još jedno druženje na Blogopenu, upoznao neke veoma drage ljude a Niš ponovo vratio na listu omiljenih gradova.

U Oktobru smo saznali da Microsoft ima još mnogo toga da nauči od Apple-a (barem kada je marketing u pitanju), a imali smo i još jedan BizzBuzz.

U Novembru sam nakon što sam po n-ti put ispušio za iPhone odlučio da sebe počastim sjajnim HTC Hero-om, koji je baš ovih dana čak i kod nas dobio laskavi status telefona godine.

I Decembar … busy month gde sam se na Blogu konačno vratio svojim korenima – pisanjem korisnih tekstova o stvarima od kojih živim … još uvek :)

Nadam se da će nam 2010 biti barem isto ovako dobra.

Srećna Nova Godina

MySQL: Brisanje pomoću Left Join-a

Danas sam ponovo morao da se pozabavim jednom ogromnom tabelom i uklonim sve podatke iz nje koji nisu imali odgovajuće reference u drugoj tabeli, idealan podsetnik koliko su podupiti u MySQL-u sporiji od Joinova :)

Da malo objasnim situaciju, imam skript koji između ostalog generiše tzv. “typo” domene, tako da imam jednu master_domains tabelu sa originalnim domenima i result_domains sa generisanim tipo domenima. Nešto poput ovoga:

mysql> describe master_domains;
+--------+------------------+------+-----+---------+----------------+
| Field  | Type             | Null | Key | Default | Extra          |
+--------+------------------+------+-----+---------+----------------+
| id     | int(10) unsigned | NO   | PRI | NULL    | auto_increment | 
| domain | varchar(255)     | NO   | UNI | NULL    |                | 
+--------+------------------+------+-----+---------+----------------+
2 rows in set (0.07 sec)

mysql> describe result_domains;
+-----------+------------------+------+-----+---------+----------------+
| Field     | Type             | Null | Key | Default | Extra          |
+-----------+------------------+------+-----+---------+----------------+
| id        | int(10) unsigned | NO   | PRI | NULL    | auto_increment | 
| domain    | varchar(255)     | NO   | UNI | NULL    |                | 
| master_id | int(10) unsigned | YES  | MUL | NULL    |                | 
+-----------+------------------+------+-----+---------+----------------+
3 rows in set (0.01 sec)

Tabela result_domains ima polje master_id koje je spolji ključ ka id polju u master_domains tabeli. E sad, obzirom da pored ovoga takođe imam domene koji se na razne druge načine generišu (komplikovano za objasniti), danas sam imao zadatak da između ostalog počistim sve domene iz master_domains tabele koji nemaju odgovarajući ključ (master_id) u result_domains tabeli.

Pomoću pod upita ovo se može postići jednostavnim kverijem poput ovoga:

delete from master_domains where id not in 
(select master_id from result_domains_frontend)

Obzirom da se držim pravila da pre svakog brisanja odradim i select kveri sa istim parametrima u where klauzi, došli smo do ovog select kverija:

select * from master_domains where id not in 
(select master_id from result_domains_frontend) limit 10

Međutim on se izvršavao toliko dugo da sam nakon nekoliko minuta rešio da ga prekinem. Pouzdano znam da su podupiti mnogo sporiji od join-ova (iako su daleko elegantniji za pisanje), tako da sam rešio da isti kveri napišem jednim left joinom.

Left Join je savršeno oruđe kada želite da nađete one podatke iz prve (leva) tabele koji ne postoje u drugoj tabeli. Oni takođe imaju izvesne prednosti u odnosu na podupite obzirom da se izvršavaju znatno brže a uz to su i kompatibilni sa starijim verzijama MySQL-a koje podupite ne podržavaju (MySQL < 5.x). Međutim delete sintaksa je malo drugačija tako da sam nakon par pokušaja i listanja manuala došao do sledećeg ekvivalenta:

delete master_domains.* from master_domains 
left join result_domains_frontend 
on master_domains.id=result_domains_frontend.master_id 
where result_domains_frontend.master_id is null ;

I nakon par desetina sekundi došlo se do konačnog rezultata:

mysql> delete master_domains.* from master_domains 
left join result_domains_frontend 
on master_domains.id=result_domains_frontend.master_id 
where result_domains_frontend.master_id is null ;
Query OK, 270558 rows affected (46.58 sec)
mysql> 

MySQL: Prebacivanje tabele iz jedne baze u drugu

Za prebacivanje tabele iz jedne baze u drugu, u novoj bazi možete kreirati novu tabelu sa identičnom shemom kao kod stare (create table foo_new like foo) i jednostavno prekopirati podatke sa jednim insert into/select kverijem. Međutim postoji i mnogo jednostavniji način, koji je naročito pogodan u slučaju da baratate sa velikim tabelama.

Kao što verovatno već znate, za promenu imena tabela u MySQL-u možete koristiti jedan od ova dva kverija:

ALTER TABLE foo RENAME TO new_foo;

ili

RENAME TABLE foo TO new_foo;

U slučaju da želite da premestite tabelu iz jedne baze u drugu, najjednostavniji način je da ih jednostavno preimenujete koristeći db prefix prilikom referenciranja na novo i staro ime. Na primer ako želite da prebacite tabelu foo iz currentdb u newdb učinićete nešto ovako:

ALTER TABLE currentdb.foo RENAME TO newdb.foo;

ili

RENAME TABLE currentdb.foo TO newdb.foo;

Inače kad već pričamo o RENAME klauzi da napomenem da za razliku od ALTER kverija, kod RENAME možete preimenovati više tabela od jednom, što je veoma korisno kada jednostavno želite da zamenite (swap) dve tabele:

RENAME TABLE table1 TO temp, table2 TO table1, temp TO table2;

HTC Hero

Gledajući u svoje stare postove izgleda da mi je brojka 3 magična kada su mobilni telefoni u pitanju :)

Dakle nakon trogodišnjeg druženja sa Nokiom N73 došao je red na prelazak na nov telefon. N73 je sjajan phone, iako se malo “izlizao” i dalje odlično radi, ali počeo je da mi nedostaje wifi, gps, bolji browser, veći ekran … Nakon duže pretrage i analize postojećeg stanja na tržištu odluka je pala. HTC Hero je moja nova igračka, verujem barem naredne 3 godine :)

U pakovanju uz HTC Hero dobijate i SD Card memorijsku karticu kapaciteta 2GB, USB kabal za povezivanje, punjač kao i stereo slušalice koje možete povezati na 3.5mm audio izlaz.
htc_hero_full
HTC Hero sa pratećom opremom

Obzirom da mi je ovo praktično prvi telefon koji nije Nokia (3310, 3650, N73), trebalo mi je zaista malo više vremena za privikavanje i mogu reći jedan od prvih gadgeta za koji sam morao da pročitam manual pre nego sam počeo da ga koristim. Takođe namučio sam se i sa povezivanjem sa računarom, za razliku od Nokie, povezivanje je podržano samo sa Windows-om, tako da imamo jednu bizarnu situaciju da phone koji je baziran na Linuxu možete update-ovati samo ako imate Windows. Slična situacija je i sa shareovanjem Internet konekcije telefona sa laptopom koje je opet podržano samo za Windows, dok je kod ostalih OS-ova situacija dosta problematična. Nakon mnogo sati mučenja, root-ovanja i raznih bezuspešnih pokušaja došao sam do svog rešenja za USB tethering sa Mac-om koje sam i izložio na engleskom delu Bloga.

Što se samog Hero-a tiče, u pitanju je telefon sa Android platformom po specifikacijama dosta sličan HTC Magicu ali za razliku od Magica Hero ima implementiran HTC-ov Sense interface koji mu daje jednu potpuno novu dimenziju u smislu upotrebljivosti i vizualnog doživljaja interface-a. Uostalom pogledajte video i samo će vam se kasti :)

Iako se mnogi žale na izvesna usporavanja prilikom korišćenja, firmware update rešava sve probleme tako da Hero radi veoma glatko, prelazak između menu-a ide bez usporavanja. HTC Hero poput iPhone-a podržava multitouch, tako da možete razvlačenjem uvećavati slike, stranu na browseru, šetati slike levo-desno itd. Sve to radi poprilično glatko i u poređenju sa iPhone-om mislim da je HTC odradio sjajan posao sa Herom. Takođe novost je da Hero u potpunosti podržava i Flash tako da će strane sa Flashom bez problema prikazati u samom browseru, ali za youtube video iste će učitati u posebnoj aplikaciji (kao što je to slučaj kod iPhone-a).
Što se konekcije tiče Hero podržava Wifi i EDGE/GPRS/3G/HSDPA konekcije, u praksi zavisnosti od kvaliteta signala uspevam da se povežem u HSDPA modu sa brzinama oko 2Mbps, sasvim dovoljno za pristojan rad. Jedino mi je čudno da nekako 3G nikada ne uspostavljam (ako nije HSDPA onda dobijam EDGE), ali ne brinem preterano jer bi HSDPA trebao biti nekoliko puta brži od 3G konekcije. :)

Naravno dobro znamo ko gura Android, tako da su kao što možete da predpostavite svi Google servisi sjajno odrađeni, postoje zasebne aplikacije za Gmail, GTalk, Google Maps, a podržana je sinhronizacija telefona sa Google Contacts i Google Calendar aplikacijama. Takođe uz Google dolazi i podrška za “Social” servise kao što su Facebook, Twitter i Flickr, tako da odmah nakon prvog uključivanja telefona imate mogućnost da setujete svoj FB, Twitter i Flickr account. Ovo je fenomenalna stvar jer vam omogućava da kontakte povežete sa listom svojih prijatelja sa Facebooka i na taj način updatujete slike, informacije o rođendanima itd. Takođe za svaki kontakt možete u albumu pregledati slike, što važi i za Facebook albume ali i za Flickr. Jedini problem je što za neke kontakte (me included) nije moguće videti FB albume, a da li je bug do FB-a ili do HTC-a ostaje da se vidi (ja tu pre tipujem na Facebook). Naravno za ovo je potrebna Internet konekcija.

Što se third party aplikacija za Android tiče, one su dostupne preko Android Marketa, jednostavno se startuje aplikacija kojom možete direktno sa marketa skinuti i instalirati gomilu (pretežno) besplatnih aplikacija. Na ovaj način do sada sam skinuo twitter klijent (Twidroid), kompas, IM klijent (meebo), SSH klijent (ConnectBot) i kao posebnu atrakciju Shazam, aplikaciju koja je u stanju da prepozna pesmu koju slušate bilo gde (u stanu, kafiću, diskoteci) i prikaže vam podatke o njoj. Testirao sa mnogo stvari i radi iznenađujuće dobro! Pogledajte video kako radi na iPhone-u, oduševićete se!
http://www.youtube.com/watch?v=Xy1jGtHy7AE

Za razliku od Apple Store-a aplikacije nisu tako vizualno atraktivne i postoji gomila aplikacija poprilično sumnjivog kvaliteta, ali android platforma se tek razvija i očekujem da će ubrzo dostići apple kada je kvalitet aplikacija u pitanju.

Naravno telefon nije bez mana, kamera je bez blica i pravi primetno lošije slike u odnosu na moju staru Noku, a pored gore spomenutih problema sa povezivanjem sa ne Windows računarima, izdvajam standardne probleme sa “Virtualnim” tastaturama. Iako tastatura na Hero-u radi veoma dobro, nema teorije da bilo šta ukucate na njoj dok ste u pokretu tako da kucanje jednog SMS-a dok hodate recimo slobodno zaboravite. Uz to velika mana je nedostatak podrške za srpsko-hrvatski jezik, tako da na automatske ispravke u tekstu slobodno možete zaboraviti. Nokia je imala sve ovo i moram da priznam da mi puno nedostaje.

Za kraj ostaje veliko pitanje koje ja ovde nisam postavio ali neko će sigurno postaviti :) Da li je bolji od iPhone-a?

I iPhone 3GS i Hero su dva sjajna uređaja i zaista je teško opredeliti se za jedan od njih i izjaviti da je neki bolji. U mnogim izborima Hero je već proglašen za najbolji Phone/Gadget, ali opet postoje stvari gde je iPhone bolji u odnosu na Hero i obrnuto. Moj izbor za Hero pre svega je vezan za nepostojeću podršku za iPhone u Srbiji, nemogućnost da regularno kupujete aplikacije bez raznih unlockova, jailbreakova i sl. dok za HTC imam 2 godine garancije što svakako puno znači. Da je situacija drugačija verovatno bih se opredelio za iPhone, no to je već druga priča.

I na kraju ovog mini review-a evo i nekoliko screenshot-ova skinutih sa mog Hero-a.

Hero Home Screen

Hero Home Screen

Screen2

Screen2

Twitter Widget

Twitter Widget

browser windows

browser windows

Flickr Slike

Flickr Slike

Compas

Compas

BizBuzz 2009

BizBuzz ponovo. Prošle godine sećanja su bila previše jaka, ove godine ipak nisam dozvolio sebi da mi duhovi prošlosti pokvare zabavu i uskrate zadovoljstvo da ponovo vidim neke drage ljude.

BizBuzz je verovatno jedina konferencija koja ima kafanski vodič, a ja sam se juče spremao da budem verni izveštač sa tog segmenta konferencije. Obzirom da sam odluku o putu za Niš doneo praktično u poslednjem trenutku, “conference pass” nisam ni imao tako da je sve bilo podređeno druženju (da ne upotrebljavam neke buzz reči tipa networking i sl.).

Iako nisam video ni jedno jedino predavanje, u razgovoru sa sagovornicima stekao sam utisak da je ovo prva konferencija u Srbiji u kojoj su predavači bili bolji od organizatora. Kažu da je Gaga Đermanović bila sjajna kao i Eniac, za Bizija kažu da je održao kontroverno predavanje a ostali … ne tako snažni utisci da bi se o njima preterano pričalo (da ne kažem twitovalo). :)

S druge strane Hotel u kome je bio bizbuzz delovao je poprilično “trashy”, u slučaju da dočekate da vas usluže kafa je bila očajna, wifi je većim delom bio potpuno mrtav a u momentima kada bi oživeo vukao se kao crv … a izbor kafane 12km od Niša za večeru … bez komentara. Da spomenem i to da devprotalk.com forum na kome sam ponosni mod nije ni spomenut na sajtu bizbuzz-a uprkos velikoj podršci članova foruma.

Naravno, moj prvi cilj dolaska bio je da provedem još koji sat sa mojim omiljenim blogerima i twiter ovisnicima i u tom smislu moj dolazak u Niš bio je pun pogodak!

Moje slike na FB-u
Ostali Blogeri o BizBuzz-u

Next Page »