Category Archives: IT - Page 2

Sinhronizacija kontakata i kalendara iz mobilnog

Promena telefona je bio dosta mučan proces zbog prebacivanja svih kontakata i stavki iz kalendara. Drugi problem predstavlja gubitak ili krađa telefona jer se tom prilikom sve te informacije gube. Jednostavo rešenje za oba problema je sinhronizacija ovih podataka sa nekim spoljnjim izvorom. Postoji dosta programa za ovo, ali svi traže bluetooth ili USB konekciju sa računarom, što mi se ne sviđa jer moram da nostim ili kabl ili bluetooth uvek, da instaliram dodatni software na računar gde to radim ako nisam kući i td.

Rešenje koje rešava ove probleme sam pronašao pre neki dan. Read more »

Pozvati private metodu

Odavno znam da je u nekim OO jezicima moguće pozvati privatnu metodu (ili pristupiti privatnom atributu, sasvim je svejedno), ali nikad nisam naleteo na tu vrstu problema, pa se nisam preterano ni udubljivao. Međutim malopre sam naleteo na diskusiju na ESu gde je postavljano pitanje na koje bi odgovor mogao da bude baš ovo.

Princip koji se koristi da bi se ovo postiglo je refleksija. Wikipedia za refleksiju kaže da je to proces u kome program prati i menja svoju strukturu i ponašanje. Deo sa menjanjem ponašanja je upravo ono što nama treba.

Ukoliko sami pišete ceo projekat bez korišćenja bilo kakvog frameworka verovatno Vam ovako nešto nikad neće ni trebati, ali mala je šansa da ćete uvek svaki projekat raditi od nule. Jednostavno previše vremena oduzima, a ne treba izmišljati toplu vodu i raditi nešto što je neko već uradio. A kad već koristite tuđe delove koda može se desiti da bi Vam baš zgodno bilo da možete da  pozovete neku metodu ili da koristite neko polje za koje je autor smatrao da Vam nikad neće trebati. Te metode nisu privatne bez razloga, tako da se trudite da izbegnete da radite ovo (zvučim kao oni sa TV-a : “Ovo su radili uvežbani profesionalci i ne pokušavajte ovo kod kuće” :) ).

Read more »

Geeky song

Dr. Suess Explains Computers
by Anonymous

If a packet hits a pocket on a socket on a port
and the bus is interrupted as a very last resort,
and the address of the memory makes your floppy disk abort…
Then-the-socket-packet-pocket-has-an-error- to-report!

If your cursor finds a menu item followed by a dash
and the double clicking icon puts your window in the trash
and your data is corrupted ‘cause the index doesn’t hash,
then your situation’s hopeless and your system’s gonna crash!!!

If the label on the cable on the table at your house
says the network is connected to the button on your mouse,
but your packets want to tunnel on another protocol,
that’s repeatedly rejected by the printer down the hall,

When the copy of your floppy’s getting sloppy on the disk
and the microcode instructions cause unnecessary risk,
then you’ll have to flash your memory and you’ll want to RAM your ROM
Quickly turn off the computer and be sure to tell your Mom!

60+1… WTF?

Svima drag i dobro poznat Telenor odlučio je da nas obraduje promenama postojećih paketa. Odavno sam pisao da sam prešao na Prenesi 50 tarifni paket jer sam sračunao da mi se više isplati. I za ovih 6-7 meseci koliko sam ga koristio je bio odlučan paket. Po meni jedan od najboljih na tržištu, ali izgleda da glavonje iz Telenora nisu tako mislile pa su odlučili da ga poboljšaju. Naime, izgleda da su uočili da ljudima fali besplatnih minuta i poruka pa su im poklonili dodatnih 10 istih za istu cenu… Odlučno, pomislio bi neko ko poslednjih godina nije navikao na svakakve gluposti, ali ne i mi… Mi smo odmah pomislili da tu nešto smrdi… I ne da smo u pravu, nego bi valjalo zvati ekipe za zaštitu životne sredine zbog silnog smrada…

O čemu se radi ovaj put? Pored svih reklamnih pisama koji su stigli većini post-paid korisnika (a očekujem uskoro i reklame na TVu i bilbordima) gde se hvale kako su dali još besplatnih minuta na njihovu štetu, provukla se jedna mala stavka koja je takođe izmenjena. To je obračunski period. Do sad je sve obračunavano po sekundi, tako da su ljudi teoretski mogli da ostvare 3000 razgovora od jedne sekunde u toku meseca (sa Prenesi 50), ali sada to više nije moguće. Sada se prvi minut obračuna ceo odmah pri uspostavi veze i tek nakon toga se računa na sekund. Kao posledica toga je javlja činjenica da je sad u sklopu besplatnih minuta moguće ostvariti samo 2 razgovora dnevno (ako uračunamo i dodatnih 10 minuta koje su nam poklonili), pa makar oni trajali samo koliko je dovoljno da se kaže Hello world!.

Možda ovo i nije tako strašno ljudima koji koriste mobilni umesto fiksnog, ali meni jeste… Raspon dužina mojih razgovora je od 3 sekunde (npr: “kasniću malo”), do par minuta.

Kao jedno od opravdanja, operaterka u call centru mi je rekla da su svi operateri već izbacili obračunavanje na sekund. Ha… Lousy excuse for an excuse…

Prvo: Nije tačno… MTS ima još jedan paket u kome se obračunava na sekund.
Drugo: I da prvo jeste tačno, iako nisam pravnik, poprilično sam siguran da ne postoji zakon koji kaže da ako jedna kompanije uvede nepovoljne uslove za korisnike, to mora i konkurencija da uradi…

Ozbiljno razmišljam da nakon dugo vremena (sad skoro 4 godine) ponovo pređem na pre-paid i da me majmuni više ne zajebavaju… Jedini problem je da li će mi dopustiti da zadržim broj, ali ako dovoljno popizdim bataliću i broj…

I jedna poruka Telenoru za kraj, kao znak zahvalnosti:
Up Yours

Blic-strip

Pošto često posećujem http://www.blic.co.yu/strip.php (svaki dan) ne bih li pročitao novi strip, odlučio sam da malo automatizujem proces. Napisao sam kratku bash skriptu koja skida strip, zalepi ga na wallpaper i osveži ga.

Skripta je urađena za mene, tako da oni koji ne koristi fluxbox moraju da je izmene da bi im se pozadine osvežavala. Ako nemate instaliran fluxbox verovatno će biti prijavljena greška da program fbsetbg ne postoji.

Pored toga, da bi skripta ispravno funkcionisala, potrebno je da imate instaliran ImageMagick (po mogućnosti iz repozitorijuma).

Udaljenost od leve i gornje ivice možete menjati u skripti kroz odgovarajuće promenljive u zavisnosti od Vaše rezolucije. Takođe je potrebno da navedete putanju do originalne slike na koju hoćete da nalepite strip.

Skript se ne pokreće periodično, pa ako to želite sami ga dodajte u cron. Ja ga nisam dodao jer ga uglavnom koristim na lap-top-u, pa nema mnogo smisla.

Ovako to izgleda kod mene za današnji strip:
Blic strip

I na kraju, samu skriptu možete pronaći ovde.

Firefox 3 beta 2

Ovaj post pišem iz verzije Firefoxa u naslovu, pa htedoh da ostavim utiske. Tačna verzija je ovo: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9b2) Gecko/2007121016 Firefox/3.0b2.

Firefox 3 beta 2

Na prvi pogled nema mnogo izmena u odnosu na aktuelnu stabilnu verziju. UI je skoro potpuno isti (u stvari ja nisam našao ni jednu konkternu razliku, sem combo-box-a koji se pojavi pri unošenju adrese). Ono što je novina je jedna zvezdica na kraju address-bara koja omogućava brzo dodavanje sajta u bookmarks i dodatna stavka u Bookmarks toolbaru nazvana Smart Bookmarks gde mogu da se vide najčešće posećivani sajtovi, poslednji dodati ili kategorizovano po tagovima koji mogu da se zadaju prilikom dodavanja.

Na nekoliko sajtova sam našao greške pilikom prikaza koje se nisu pojavlivale dok sam koristio stabilnu verziju, ali ne mogu da tvrdim da je to do FF-a, jer je sasvim moguće da na tim sajtovima standardi nisu ispoštovani.

U trenutku kucanja ovoga FF3b2 je zauzeo 21.1 MB memorije sa 5 otvorenih tabova i samo jednom učitanom ekstenzijom, tako da mi se čini da ne troši spektakularno manje memorije od svojih prethodnika, ali iskreno se nadam da će se ovo promeniti do finalne verzije.

U par sati korišćenja nisam primetio nikakvu nestabilnost iako se radi o beta verziji. Jedina stvar koja me sprečava da ga koristim kao default browser je činjenica da ni jedna ekstenzija, kao i tema koju koristim, nije podržana za sad, a sa ekstenzijama mi je surfovanje mnogo udobnije.

Ako je još neko zainteresovan da isproba, može da skine ovu verziju odavde.

Sve u svemu, biće lepo kad se pojavi final.

Rešenja za PythonChallenge

Već sam pisao o sajtu PythonChallenge. Kada sam se prošli put igrao sa ovim zagonetkama stigao sam do 12. nivoa i tu sam, što zbog obaveza, što zbog toga što nisam mogao da skontam šta treba da radim, stao. Sinoć mi je, kako to obično biva, taman kad sam trebao da počnem da radim projekat obavezan za fakultet, sinula ideja da probam da rešim još koji nivo.

Na žalost, zbog svoje gluposti sam ostao bez podataka sa jedne particije, a, pogađate, upravo na njoj su mi bila rešenja do kojih sam ranije došao. Naravno, malo sam popizdeo što nemam back-up, ali to me nije mnogo omelo nego sam krenuo ispočetka da rešavam sve ne bih li opet došao gde sam bio (a i nije mi se radio projekat za fakultet – naravno, zato sam danas morao da ga uradim). I tako, nakon sat – dva vremena sam ponovo rešio sve zagonetke do 12. nivoa (mnogo brže ide drugi put, kad se znaju svi fazoni, ali svejetno, treba sve programe ponovo napisati). Dvanaesti nivo, oko koga sam se mučio nekoliko dana sada sam rešio za pola sata. Stvarno ne znam kako i zašto mi je to tad bio toliki problem. Sad mi je problem da rešim ovaj 13. nivo :)

Nego, kao posledicu činjenice da sam isti posao radio dva puta odlučio sam da napravim back-up (ne, neću početi da redovno pravim image diskova :) ) na sajtu, a isto to može dobro da dođe ljudima koji žele da se dalje da se igraju, ali su zapeli na nekom od nivoa. Spojio sam korisno sa korisnim.

Ovde možete naći sva moja rešenja. Napominjem da ne gledate rešenja ako želite ne da si pokvarite igru (bolje pitajte za neki dodatni savet). Pored samog koda uglavnom sam pisao i kratko objašnjenje kako sam došao do rešenja.

Pa, nadam se da će bar nekom pomoći i da neću stati na ovome.

Brainfuck

Sinoć u trenutcima dokolice (dobro, dobro, imao sam i pametnija posla, ali ovo mi je bilo zanimljivije) napisao sam Brainfuck interpreter. Verovatno zvuči ozbiljnije nego što stvarno jeste, jer je ceo program stao u nekih 200 linija koda sa sve komentarima i inline dokumentacijom.

Brainfuck

Za one koji ne znaju, Brainfuck je jezik koga je napravio Urban Müller 1993. godine kao pokušaj da napravi najmanji kompajler, pa mu je trebao i kompaktan jezik. Nema nikakvu upotrebnu vrednost. Jako lako se uči, ali se jako teško programira u njemu, a kod je čitljiv koliko i binarni.

Struktura podataka koju koristi jezik je jedan niz (zavisi od implementacije, ali obično je niz 8-bitnih vrednosti) i jedan implicitno deklasiran pokazivač. Sintaksa se sastoji samo od 8 znakova:

  • + uvećava za jedan vrednost na koju pokazuje pokazivač
  • - umanjuje za jedan vrednost na koju pokazuje pokazivač
  • < pomera pokazivač za jedno mesto u levo
  • > pomera pokazivač za jedno mesto u desno
  • . ispisuje ASCII vrednost znaka čiji kod se nalazi na lokaciji na koju pokazuje pokazivač
  • , učitava kod ASCII znaka sa tastature i smešta ga na lokaciju na koju pokazuje pokazivač
  • [ započinje petlju koja se izvršava sve dok vrednost u lokaciji na koju je pokazivaš pokazivao na početnu petlje ne bude 0
  • ] završava petlju

Jedan primer brainfuck programa je ovo:

++++++++++[>++++++++++>+++++++++++>++++>++++
+++++++<<<<-]>.+.> - - .>+++++.<<---.>+++.<<+++[>>
>>+++<<<<-]>>>>++.

Ovaj kod, kad se propusti kroz interpreter koji sam napisao (ili bilo koji drugi brainfuck interpreter) će kao rezultat dati string “del-boy”.

Kao što možete pretpostaviti, za ovakav jezik je dosta jednostavno napisati interpreter. Moje rešenje je dosta jednostavno i nekompletno. Napravio sam jedan niz od 1000 elemenata (u praksi je potrebno dosta više… u stvari, u praksi bi taj niz trebao da bude ograničen samo količinom memorije u računaru, ali to ću možda napraviti tek u sledećoj verziji). Ako se dođe do kraja niza odlučio sam da će pokazivač da se vrati na početak. Ista situacija je ako program pokuša da pomeri pokazivač levo od nulte pozicije – vratiće se na kraj.

Nisam ugrađivao nikakve provere sintakse ili bilo šta slično (mrzelo me) tako da vrlo lako može da se desi da interpreter upadne u beskonačnu petlju ili da se neredvidivo ponaša, ali tad je uglavnom program loše napisan. Mislim, najverovatnije ima stvari koje sam propustio, ali za moje test primere je vraćao dobar rezultat.

Svi znakovi sem gore nabrojanih 8 se zanemaruju, tako da slobodno možete da pišete komentare u kod pod uslovom da se u komentaru ne pojavljuju brainfuck znaci. Čak šta više, ako želite možete da sakrijete brainfuck program u neki drugi program, napisan u nekom drugom programskom jeziku.

Jezik koji sam izabrao za implementaciju je Python. Njega već neko vreme učim, ali nikako da nađem više vremena da mu se posvetim tako da sam stalno negde na početku, tako da mi je ovo došlo kao dobra vežba.

I za kraj, kod.

OpenSolaris – informacije iz prve ruke

U četvrtak, 13. decembra 2007. godine sa početnom u 12h u svečanoj sali na Fakultetu Tehničkih Nauka u Novom Sadu biće održano predavanje o OpenSolaris-u. Predavanje će biti na engleskom, a predavači su Tomas Dzik i Milan Jurik iz Sun Microsytems predstavništva iz Češke.
Open Solaris

Teme koje će biti obrađene su:

  • OpenSolaris i OpenSolaris distribucije, kako učestvovati u razvoju.
  • DTrace – novi alat za tracing + demo uživo.
  • ZFS – novi 128-o bitni fajl sistem + demo uživo
  • Solaris Zones i BrandZ – Linux virtuelizacija pod Solrisom + demo uživo

Predviđeno vreme trajanja manifestacije je sat i trideset minuta.

Ulaz je slobodan i predavanje nije ograničeno sam0 na studente i zaposlene na FTN-u.

Novi član familije…

Nisam dugo ništa pisao… Mislim da je to posledica činjenice da su predavanja na fakultetu počela, što znači da je ispitni rok odavno završen, pa više nemam šta da izbegavam (kao što je na primer učenje) i pišem po blogu. Ali eto, nakon par nedelja sam uhvatio malo vremena…

Najveća novost je to što sam dobio novog člana računarske porodice… U pitanju je IBM ThinkPad T41 lap-top. Izgleda ovako:
T41

Kupio sam ga polovnog, iako to nikad ne radim sa tehničkim stvarima (u stvari ne radim to sa bilo čim što kupujem), ali naleteo sam na zaista dobru ponudu, a sam računar je perfektno očuvan (nigde jedne ogrebotine nema).

U svojoj kratkoj istoriji kod mene je prošao par faza. Kad sam ga doneo kući, na njemu je bio instaliran piratski Windows. Nije preživeo ni sat vremena… Sledeća faza je bila da instaliram (K)Ubuntu na njega dok ne spremim Gentoo na desktop računaru, što sam i uradio… Posle toga mi je u jednom trenutku prilično hitno zatrebala jedna aplikacija i trebalo mi je oko 3 sata da iskompajliram sve zavisnosti, pa mi je pali na pamet da Gentoo i nije baš za lap-top, baš zbog tih situacija. Posledica toga je bila da sam ponovo instalirao Ubuntu, obrisao Gnome, instalirao KDE (jebi ga, nisam imao pri ruci Kubuntu) i instalirao i Fluxbox, koji i koristim.

Međutim, sada nakon dužeg korišćenja Gentoo-a na 2 računara pizdim na sve na Ubuntu-u. Prvo što nisam mogao da ga nateram da automatski podiže eth0 interface. Podesio sam sve konfiguracione fajlove, ubacio skripte u odgovarajući runlevel i ništa. Na kraju sam podigao KDE i tamo našao opciju “Automaticly start up interface” (ili tako nešto), to štiklirao i sad radi kako treba.

Desetak minuta sam proveo tražeći gde se nalazi prokleti /etc/inittab i na kraju ga nisam našao jer Ubuntu koristi Upstart.

Dalje, sat vremena sam proveo tražeći kako da sklonim splash pri podizanju (to je lakši deo) i da nateram kernel da koristim radeonfb ili vesafb… Našao sam da su moduli iskompajlirani, ali ne znam zašto neće da se učitaju pored svih pokušaja da u grubu dodam pravu opciju. U stvari ne zanima me koji module se u pozadini koristi, samo da dobijem neku normalnu rezoluciju u konzoli.

Dobra strana je to što mi je sav hardware prepoznat i drajveri su automatski instalirani (sem fglrx drajvera za grafičku). Čak je i dial-up modem bez problema prepoznat, samo što ga nisam još isprobao, ali to nije zanimljivo. Nemam šta da čačkam… ;)

Kontam da ciljna grupa Ubuntu-a nisu korisnici kao ja, koji vole da čačkaju ispod haube i koji ne vole da koriste GUI alate, ali videću kako će mi ležati malo kasnije. Moguće je da samo treba da prođe neko vreme da se naviknem. Vreme će pokazati…

Switch to our mobile site