Browse Category: Racunarstvo

Fejsbuk profilna slika

Recept kako da uspešno promenite Vašu profilnu sliku na Vašoj omiljenoj društvenoj mreži.

Pravilo 1: Uvek je pravo vreme da promenite Vašu profilnu sliku!

Korak 1: Uđite u svoje fotografije i odaberite neku od Vaših prethodnih profilnih fotografija koje su tako savršeno savršene tj. na kojima Vi izgledate tako savršeno.

Korak 2a: Postavite odabranu kao Vašu trenutnu profilnu fotografiju klikom na Options/Make Profile Picture (Подешавања/Постави као основну слику профила), a zatim odgovorite potvrdno na pitanje koje vam fejs postavi.

Korak 2b: Odabranu fotografiju isecite tako da sada umesto Vas i Vaših prijatelja sada na istoj ostanete samo Vi. Ili recimo da umesto Vas u celini sada ostane samo Vaš portret. Zatim što pre kliknite na Edit profile picture (Измени слику профила) na Vašem tajmlajnu, a potom odaberite opciju Upload Photo… (Додај фотографију…). Pronađite Vašu obrađenu fotografiju i selektujte je. Zatim pratite “čarobnjaka”.

Čestitamo! Uspešno ste promenili Vašu profilnu sliku na fejsbuku. Pređite na sledeći korak.

Korak 3: Čekajte da Vaši verni prijatelji (koje verovatno pola ne poznajete) lajkuju Vašu “novu” profilnu sliku.

Korak 4: Vratite se na Korak 1, kada broj lajkova po satu drastično opadne ili barem dva puta nedeljno.

gl -.-

Kada koristim browser (pregledač) na tuđem računaru…

Kada koristim tuđi računar za pristup mejlu ili fejsu, često mi se desi da u žurbi, samo zatvorim konkretan tab bez da se izlogujem. Tada moj nalog na fejsu ili mejl nalog postaju poligon za igranje i istraživanje osobi koja sledeća sedne za računar (da ne pričam kakvo je veselje kada se radi o računaru u internet sali).

Zbog takvih slučajeva, naučio sam sebe da koristim private browsing. To je ustvari način funkcionisanja web pregledača, takav da se svi podaci stvoreni tokom surfovanja, po završetku, brišu. History, Cookies, Cache, Saved Passwords… Sve ovo, nakon isključivanja pregledača će biti obrisano.

Chrome

U Google Chrome pregledaču ova opcija se aktivira otvaranjem prozora Incognito Window. Klikom na dugme  i biranjem stavke “New incognito window” otvarate prozor za privatno surfovanje.

Novootvoreni prozor se karakteriše sledećom ikonicom u gornjem levom uglu.

Svi tragovi koje posećeni sajtovi ostave na računaru, biće obrisani nakon što ovaj prozor isključite. Do ovog prozora takođe možete doći i pritiskom kombinacije tastera Ctrl+Shift+N na tastaturi.

Firefox

U Firefoxu, opcija privatnog pregledanja se naziva Private Browsing, a uključujete je klikom na dugme Firefox u gornjem levom uglu i zatim biranjem opcije “Start Private Browsing”.

Prozor u kojem možete privatno surfovati se karakteriše promenom boje dugmeta Firefox u ljubičastu boju.

Prečica za otvaranje ovog prozora pomoću tastature, je Ctrl+Shift+P.

Opera

U Operi, pored prozora za privatno pregledanje, postoji i opcija otvaranja privatnog taba. Jednu od te dve opcije možete pokrenuti klikom na dugme Opera u gornjem levom uglu, biranjem “Tabs and Windows”, a zatim odabirom “New Private Tab” ili “New Private Window”.

Tab u kojem je pregledanje sadržaja privatno, karakteriše se sledećom ikonicom

Kada se otvori Private Window, svi tabovi unutar njega su privatni. Prečica za otvaranje prozora za privatno pregledanje je Ctr+Shift+N.

Naravno, ovakav pristup Vas i dalje ne štiti od malicioznih programa (npr. key logger). Takvi programi rade nezavisno od pregledača i u stanju su, iako koristitie privatno pregledanje, da sačuvaju Vaše podatke bez Vašeg znanja. Zbog toga, pored korišćenja privatnog pregledanja, obratite pažnju i čiji računar koristite i u kakvom je on stanju (recimo da li ima instaliran neki od poznatih antivirusa – Avast, NOD32, AVG, Kaspersky, Bitdefender…).

Bežični okidač za DSLR fotoaparate (Android)

Ako ste pročitali blog o okidanju Canon DSLR fotoaparata putem Android telefona, možda ste se zapitali da li to može i bez kabla? Da, može!

Za fotoaparate koji imaju ugrađen infracrveni senzor, postoje daljinski kojim je moguće bežično kontrolisati okidanje fotoaparata. Cena ovih uređaja nije preterano velika, ali ako imate Android telefon, ili neki drugi Android uređaj koji uvek nosite sa sobom, sve ovo može i mnogo jeftinije.

Da bi Vaš Android uređaj pretvorili u daljinski za okidanje fotoaparata, potrebno Vam je parče hardvera i aplikacija kojom ćete kontrolisati okidanje fotoaparata. Neophodan hardver namerno nazivam parčetom hardvera, jer su to zapravo dve IR diode i jedan stereo konektro. Evo i šeme:

Šema povezivanja IR dioda na stereo konektor
Šema povezivanja IR dioda

Obratite pažnju kako su diode povezane: plus prve diode i minus druge su povezane na desni kanal, dok su minus prve i plus druge diode povezani na levi kanal stereo priključka.

Aplikaciju kojom možete kontrolisati Vaš DSLR koristeći ovo parče hardvera, možete naći ovde. Takođe niste ograničeni samo na Canon fotoaparate (kao u prethodnom blogu), već je moguće kontrolisati i fotoaparate proizvođača Nikon, Olympus, Snoy, Fuji, Minotla i Pentax 😉

Dok čekam moj IOIO

Dok nestrpljivo čekam da novo “mezimče” stigne u moje ruke, pokušaću da objasnim šta je to IOIO i zbog čega ta nestrpljivost. IOIO (izgovara se kao yo-yo, jo-jo) je interfejs koji omogućuje da neko električno kolo povežete sa Vašim Android uređajem, putem kojeg to električno kolo, na vrlo jednostavan način, možete da kontrolišete. Jednostavnije, programiranjem aplikacije za telefon/tablet, možete da palite i gasite lampice, kontrolišete brizinu okretanja elektro motora ili da očitavate vrednosti senzora koje nakačite na IOIO. Da, sve to, a može i više od toga!

Umesto kabla, povezivanje telefonom je omogućeno i putem bluetooth-a, što znači da sve ove operacine nabrojane iznad, možete da obavljate bežično! 😉 Evo i primera, čisto da Vas još malo zainteresujem:

[youtube http://www.youtube.com/watch?v=XSAzSw3QTOY]

Elem, naručio sam ovo čudo i sada isčekujem dan kada ću ga prvi put povezati sa telefonom. Pošto se kod nas IOIO ne može nabaviti (barem ja nisam uspeo nigde da izguglam, ako neko slučajno zna gde ima, obavezno neka ostavi u komentarima), bio sam prinuđen da iscimam koleginicu sa faxa, koja je na Work&Travel programu u Americi, da mi donese jedan primerak.

Dok ne dođe čas da se i sam oprobam u majstorisanju sa novom igračkom, a eventualno i da podelim iskustva na blogu, više o IOIO uređaju, možete pročitati ovde:

https://github.com/ytai/ioio/wiki

http://ytai-mer.blogspot.com/2011/04/meet-ioio-io-for-android.html

Ako je neko pak zainteresovan da kupi koji primerak:

https://www.sparkfun.com/products/10748?

😉

Od starog Symbian telefona do sigurnosne kamere uz pomoć Python-a

Kako ponuda Android telefona raste, a zajedno sa ponudom i broj aplikacija na Gugl Pleju, tako je sve više onih koji će se ponoviti novim i pametnijim telefonima, dok će njihovi stari telefoni otići za tridesetak evra na kutiji pored Futoške ili biti bačeni u fioku i biti zaboravljeni. Ukoliko je Vaš prethodni telefon neka Nokia sa Symbian OS-om, možda ipak, još uvek nije vreme da se rastanete sa njim.

Ukratko o Python-u

Python je veoma moćan programski jezik visokog nivoa. Kod pisan u Python-u se obično interpretira, ali postoje i prevodioci koji Python kod prevode u mašinski jezik. Veoma je jasan, sintaksa je čitljiva, a možda i najvažnije, jako je intuitivan. Objektno je orijentisan.  Podržan je na mnogim platformama, a samo neke od njih su nabrojane: Linux, Windows, BSD, Symbian OS, Xbox… Uz Python dolazi biblioteka standardnih modula, ali je po potrebi moguće pisanje novih modula u Pythonu, pa čak i u C-u ukoliko su potrebne veće brzine izvršavanja. Vidi još… [en]

Python Guardian

Python Guardian
Python Guardian

Ovu skriptu sam napisao kada sam počeo da učim Python. Bilo mi je zanimljivo da od starog telefona napravim nešto korisno, što usput mogu da kontrolišem na daljinu, putem SMS poruka. I tako je nastao Python Guardian. Skripta verovatno nije savršena niti sam je ikada preterano testirao, ali je meni zato radila posao za koji sam je napisao. Elem…

Python-Guardian.py je skripta koja telefon pretvara u sistem za nadzor koji reaguje ukoliko dođe do promene u nadgledanom prostoru. U promene spada sve ono što kamera telefona može da zabeleži (npr. pomeranje objekata ili nagla promena intenziteta/boje svetla). Nivo detekcije promene se može podešavati sa više parametara, kao što su broj osetljivih tačaka, nivo tolerancije promene boje pixela, minimalni broj detektovanih izmenjenih pixela itd. Kada je promena detektovana, Python Guardian može da pošalje obaveštenje putem SMS-a, da postavi fotografiju nadgledanog prostora na internet i/ili da aktivira alarm. Nakon pokretanja skripte, nadgledanje prostora može biti pokrenuto automatski, nakon isteka definisanog vremenskog intervala ili ručno, slanjem SMS poruke na broj telefona na kojem je pokrenuta skripta. Slanjem SMS poruke je takođe moguće deaktiviranje nadgledanja prostora.

[CODE]

Ovaj deo je odvojen za one koji žele malo više da se upoznaju sa načinom funkcionisanja python-guardian skripte. Objasniću kako skripta zapravo detektuje promenu, dok popratne delove koda kao npr. kod za slanje SMS poruka ili upload fotografije, koje sam preuzeo (i prilagodio) sa interneta, neću objašnjavati. Nihov opis možete naći na sledećem sajtu: www.mobilenin.com.

Nadgledanje prostora se može vršiti na dva načina. Prvi način je kada se upoređuju frejmovi video kamere; frejmovi sa kamere pristužu više puta u sekundi, što znači da se poređenje može češće obavljati, te se na taj način može i brže odreagovati na eventualne promene. Sa druge strane ovaj način nadgledanja znatno troši bateriju. Drugi način je da se u određenim vremenskim intervalima prave fotografije koje se kasnije porede na isti način kao i frejmovi. Ovaj način, zbog postojanja intervala između dva poređenja, neće odreagovati na brze promene, ali baterija telefona traje duže.

Naččin nadgledanja se podešava menjanjem vrednosti parametra monitoringType, a vrednosti mogu da budu ‘video’ ili ‘photo’

‘video’

Kada se koristi ovaj način nadgledanja, poziva se sledeća linija koda, kojom se uključuje kamera, odnosno podaci sa kamere se prosleđuje frejm po frejm monitoringCallback funkciji.

camera.start_finder(monitoringCallback, size=monitoringResolution)

Ovo parče koda se obično koristi da bi se korisniku na displeju prikazalo šta kamera u datom trenutku posmatra, te da korisnik tako može ispravno da kadrira svoju fotografiju pre nego što je napravi. U ovom slučaju monitoringCallback funkcija nema tu namenu, već služi da bi upoređivala trenutni sa prethodnim frejmom i ukoliko postoji bitna razlika među njima, objavi alarm.

Da bi monitoringCallback funkcija uporedila trenutni i prethodni frejm, prethodni frejm mora biti negde sačuvan. U prvom prolazu kroz funkciju ne postoje podaci o prethodnom frejmu, tako da prvi prolaz, koji je obeležen firstFrame promenljivom, služi samo da bi trenutni frejm sačuvao u memoriji telefona. U svakom sledećem n-tom (gde je n=frameAnalysisFreq) prolazu kroz funkciju upoređuje se trenutni sa prethodnim frejmom i trenutni se postavlja kao prethodni za sledeći prolaz. Parametar frameAnalysisFreq se uvodi jer nije potrebno proveravati svaki frejm da bi se uočila promena. Recimo da sa kamere bude prosleđeno 20 frejmova u sekundi, za detektovanje promene, nije potrebno praviti proveru za svaki frejm. Za upoređivanje dva frejma koristi se funkcija compareFrames kojoj se prosleđuju trenutni i prethodni frejm.

‘photo’

Funkcija photoMonitoringLoop se poziva kada se koristi nadgledanje pomoću fotografija. Kao i monitoringCallback funkcija, funkcija photoMonitoringLoop koristi promenljivu firstFrame, da bi u provm prolazu napravila fotografiju koja će se u narednom prolazu koristiti kao prethodna prilikom pozivanja funkcije compareFrames. U ovoj funkciji, frameAnalysisFreq parametar predstavlja vremenski interval između dva poređenja. Funkciju photoMonitoringLoop se poziva sledećim kodom:

gTimer.cancel()
gTimer.after(1, photoMonitoringLoop)

Takvo pozvanje funkcije, će dozvoliti da trenutna funkcija u kojoj se nalazi kod iznad, nastavi sa izvršavanjem – photoMonitoringLoop  funkcija će se izvršavati nezavisno. gTimer je objekat klase e32.Ao_timer() koja dozvoljava ovakav način pozivanja funkcija, gde prvi parametar (u ovom slučaju jedinica) označava vremenski interval koji će proći pre nego što funkcija (drugi parametar) bude pozvana.

compareFrames()

res = compareFrames(currentFrame, previousFrame)

Funkcija compareFrames za argumente prima dva frejma (fotografije), koja predstavljaju trenutni i prethodni frejm (fotografiju). Ona ne upoređuje frejmove (fotografije) u potpunosti, već samo u određenim tačkama, tzv. osetljivim tačkama. Broj tačaka po vertikalnoj i horizontalnoj osi se može podešavati parametrima verticalCheckDotsNumberhorizontalCheckDotsNumber. Ako uzmemo vrednosti 3 i 4 za pomenute parametre respektivno, tačke koje se proveravaju na frejmu (fotografiji) su raspoređene na sledeći način:

Raspored osetljivih tačaka
Raspored osetljivih tačaka

Svaka osetljiva tačka na trenutnom frejmu (fotografiji) se poredi sa istom tom osetljivom tačkom na prethodnom frejmu (fotografiji). To radi funkcija compareArea kojoj se prosleđuju oba frejma (fotografije) i x i y koordinate osetljive tačke. Jedna osetljiva tačka sadrži jedan piksel u sredini i još osam piksela raspoređenih oko njega na razdaljini koja je definisana parametrom diameter. Poređenje tih piksela se radi prema boji, odnosno prema RGB vrednostima datih piksela, pozivanjem funkcije comparePix. U zavisnosti od rezultata compareArea  funkcije, funkcija compareFrames kao rezultat vraća celobrojne vrednosti od 0 do 4, gde svaka vrednost označava jedno od sledećih stanja:

0 – prethodno stanje 0, 3 ili 4: broj osetljivih tačaka, koje se na oba frejma razlikuju više od granice podešene parametrima, je manji od vrednosti parametra maxNumberOfChangedDots. Parametri koji određuju granicu prema kojoj se porede osetljive tačke, su maxPixelDifference i maxNumberOfChangedPixels,
1 – prethodno stanje 0: broj osetljivih tačaka, koje se u trenutnom poređenju na oba frejma razlikuju više od granice podešene parametrima, je veći od vrednosti parametra maxNumberOfChangedDots,
2 – prethodno stanje 1 ili 2: u nekom od prethodnih n poređenja (n=maxDelayedFrames), razlika među frejmovima je bila veća nego što je dozvoljeno,
3 – prethodno stanje 2: u toku poređenja n (n=maxDelayedFrames) frejmova, nije detektovano m (m=maxDisturbedFrames) frejmova čija je različitost veća od dozvoljenog,
4 – prethodno stanje 2: u toku poređenja manje od n (n=maxDelayedFrames) frejmova, detektovano je m (m=maxDisturbedFrames) frejmova čija je različitost veća od dozvoljenog (vreme je da se oglasi alarm, poziva se funkcija startAlert()).

Kada se sistem nalazi u stanju 2, parametar maxDelayedFrames određuje broj frejmova koji će biti provereni (i čija će različitost biti manja od dozvoljene) pre nego što sistem pređe u stanje 3. Parametar maxDisturbedFrames određuje koliko frejmova čija je različitost veća od dozvoljene, treba da bude detektovano kada se sistem nalazi u stnaju 2, da bi sistem prešao u stanje 4.

Algoritam
Algoritam stanja

Ovakav algoritam omogućava da kamere budu nesavršene kao što je to recimo kamera na telefonu na kojem je ova skripta testirana (Nokia 6120 Classic). U uslovima kada ima malo svetlosti, dešavalo se da pojedini frejmovi “zakucaju” i podaci sa kamere ne budu istiniti, pa je zbog toga uvedena zadrška prelazka u stanje 4, da bi se sprečilo oglašavanje lažnog alarma.

Ovakav algoritam omogućava i režim povećane sigurnosti tj. kada “skripta posumnja” u neku promenu na frejmovima i pređe u stanje 1 ili 2, zaobilazi se parametar frameAnalysisFreq  i tada se, u ‘video’ načinu nadgledanja proverava svaki frejm koji skripta dobije od kamere, onosno u ‘photo’ načinu nadgledanja ne postoji vremenski interval među dva poređenja, već se fotografije sa kamere i porede najvećom mogućom brzinom. Da bi aktivirali ovakav način provere, potrebno je  parametar useIncreasedSafetyRegime postaviti na 1. Kada se uključuje ili isključuje režim povećane sigurnosti, parametre maxDelayedFramesmaxDisturbedFrames treba rekonfigurisati.

Evo i opisa čemu služe ostali parametri:

startupInterval – ceo broj, koji predstavlja broj sekundi koji će proći pre nego što se aktivira nadgledanje, ukoliko je opcija Startup immediately odabrana prilikom pokretanja skripte,
soundsEnabled – ako je vrednost 0 zvukovi obaveštenja o početku i kraju nadgledanja se neće emitovati; za vrednost 1 zvukovi će biti emitovani,
adminNumbers i notifyNumbers – liste brojeva administratora i brojeva koji će biti obavešteni kada je detektovana promena (ukoliko je prilikom pokretanja skripte odabrana opcija SMS Notify),
startSMSPhrase i stopSMSPhrase – fraze (stringovi) kojima administrator, putem SMS poruke, može da uključuje/isključuje nadgledanje,
webServerAddress i webServerLink – kada se koristi Photo upload alarm, ova dva parametra određuju internet lokaciju skripte koja preuzima i postavlja fotografiju na server,
uploadPhotoFilename, sndDir, sndAlarm, sndMonitoringStarted, sndMonitoringStopped – putanje na telefonu do fotografije za upload, direktorijuma sa zvukovima, ime zvuka alarma, početka i završetka nadgledanja,
monitoringResolution – rezolucija frejmova/fotografija koji se dobijaju od kamere i koji se dalje analiziraju,
apidFilename – fajl u kome se čuva id podrazumevane pristupne tačke (default access point).

.

Šta mi je potrebno za pokretanje skripte?

Osim telefona na kojem Vam trči Symbian OS, potrebno je još da na isti instalirate Python za S60 telefone. Poslednju verziju PyS60 možete preuzeti odavde.

Kako da pokrenem skriptu?

Arhivu python-guardian.zip raspakujte na memorisku karticu telefona. Zatim iz foldera python-guardian, kopirajte fajl python-guardian.py u direktorijum Python koji se nalazi na memoriskoj kartici. Nakon toga pokrenite Python aplikaciju koju ste instalirali u prethodnom koraku. Kliknite na Options, odaberite Run script, a zatim pronađite skriptu python-guardian.py i pritisnite OK.

U arhivi se takođe nalazi i upload_image_to_url.php preuzet sa ovog sajta: www.mobilenin.com, koji vam je potreban ako želite fotografiju da uploadujete na svoj server.

Šta ako skripta ne radi kako treba ili pronađem neki bug?

Javite, probaćemo da popravimo 😉

Šta dalje?

Pokušajte sami da napišete neke zanimljive skripte za Vaš telefon. Jednostavno možete napisati skriptu koja će proveravati da li su izašli rezultati ispita na sajtu fakulteta, skriptu koja će da spamuje telefon Vašeg kolege SMS porukama ili skriptu Naravno, Python možete da instalirate i na Vaš računar, a pogodnu verziju potražite ovde. Nakon instaliranja, na ovom linku, možete potražiti neki zanimljiv softver koji je pisan u Python-u.

Android summer school 2012

Prošle nedelje sam pohađao Android summer school koju je organizovao odsek RT-RK fakulteta tehničkih nauka u Novom Sadu. Škola je trajala 5 dana, a šta smo za to kratko vreme, opisaću ukratko.

Android summer school
Android summer school – plakata

Prvog dana samo se upoznali sa Androidom i njegovom arhitekturom. Android framework, načini čuvanja podataka, Android SDK, emulator, adb, kao i pisanje prvih aplikacija u Eclipse-u su samo neke od tema koje su obrađene. Takođe održano je i predavanje o Android GUI-u i elemntima GUI-a, a nakon toga su usledili zadaci koje smo rešavali uz pomoć profesora.

Predavnja drugog dana su malo detaljnije objasnila Androidovu bazu podataka ali i baze uopšte (SQL upiti, primarni ključevi…). Takođe je bilo reči i o  komunikaciju preko interneta na Androidu, socket-ima, prenosu teksta, DOM parseru… Na kraju je održano predavanje o multimediji, gde su obrađeni razni adapteri i čemu oni služe kao i dodavanje multimedijalnog sadržaja u MediaLibrary.

Trećeg dana smo učili kako se prave igrice na Androidu! Ali, koliko god ova uvodna rečenica fensi zvuči, moje oduševljenje predavanjima nije. Smatram da je prvi deo predavanja bio zaista koristan, jer smo saznali dosta informacija o GameLoop-u (petlji koja se izvršava tokom igranja neke igrice i načinima da se ta petlja uvek izvršava isto na raznim procesorima). Drugi deo predavanja je meni lično bio malo dosadan, iz razloga što nam je bilo prikazano gomila izsečaka koda nekih igrica, a pošto su to izsečci, često se moglo čuti od strane predavača: “Ovo zanemarite, to je realizovano u toj-i-toj klasi”. No, u svakom slučaju, vredelo je odslušati i to predavanje, jer su tu data rešenja za neke konkretne probleme.

Četvrti i peti dan je poslužio da zavirimo ispod haube Androida. Linux Kernel, izvorne biblioteke, runtime, framework… Stvari za koje smatram da dosta onih koji “programiraju” na Androidu nisu ni čuli za njih, a oni koji jesu, nisu se preterano udubljivali da ih izuče. Uglavnom, na predavanjima je sve to obrađeno u onoj meri koliko je to bilo moguće za 2x4h. Meni je bilo zanimljivo, jer sam se zbog toga u principu i prijavio na školu. Takve stvari, em što se malo teže nalaze na internetu, malo ih je teže i skontati od razumevanja kako napisati “HelloWorld!” aplikaciju.

Sve u svemu, svakome ko sledeće (a nadam se i dosta narednih godina) primeti plakatu o Android školi, preporučujem da se prijavi. Možda je vreme održavanja škole nakon završetka fakulteta, budu vrućine i verovatno bi ste se radije negde brčkali na Štrandu nego sedeli za računarom i usput učili, ali prilika za sticanje ovakvog znanja nema mnogo.

 

 

 

Još jedan na temu nagradnih igara na fejsbuku

Nedavno sam napisao ovaj blog, da bi barem one koji ga pročitaju (a malo su ga do sada pročitali :P), malo informisao o tome kako neke stvari o kojima obično ne razmišljamo svakodnevno, mogu da funkcionišu i koje sve trikove neko koristi da bi povećao svoju popularnost na internetu. A sada još jedan, sličan slučaj…

Pre nekih mesec dana, koleginica me je zamolila da joj lajkujem fotografiju na fejsbuku, jer ukoliko sakupi najviše lajkova, osvojiće letovanje. To letovanje navodno poklanja jedna kompanija, a fotografija se nalazi na fan stranici te kompanije. Naravno nije mi bilo teško pružiti takav vid pomoći. Ona je već tada imala ubedljivo najviše lajkova za svoju fotografiju, čini mi se preko 600, dok je fotografija na drugom mestu imala tek nešto više od 200 lajkova. Naravno, link sam prosledio i u sanduče par mojih prijatelja koji mi duguju takve usluge lajkovanja svega i svačega.

Ali… Pre jedno nedelju dana, kroz priču sa dotičnom koleginicom, došli smo i do teme o nagradnoj igri u kojoj učestvuje. Rekla mi je da je ubačena jedna nova fotografija, koja je za par dana skupila preko 300 lajkova i da joj je to sumnjivo. S obzirom na to da je njena fotografija u tom momentu imala nešto manje od 1000 lajkova, rekao sam joj da se ne brine, jer mi je izgledalo sasvim nerealno da neko može da skupi dodatnih 700 lajkova za nedelju dana, ma kakav spam da uputi svim svojim, pa čak i prijateljima svojih prijatelja na fejsbuku. Ali, prevario sam se…

“Pobedničkoj” fotografiji, koja je ubačena dva dana pre kraja takmičenja, je pošlo za rukom da skupi neverovatnih 2000 lajkova! Broj lajkova se bukvalno uvećavao za 20 između dva rifreša stranice. Takođe, broj lajkova je rastao do završetka nagradne igre, a nakon toga, broj lajkova se nije uvećao za 20. E tu već nešto gadno miriše… -.-

Malim istraživanjem profila koji su lajkovali pomenutu fotografiju, potvrdio sam sebi ono u šta sam sumnjao. Od profila koji imaju po jednu profilnu fotografiju i fejsbuk koriste od juče, preko profila koji se ne mogu dodati za prijatelje ili imaju nula ili jednog prijatelja, za profilnu fotografiju koriste likove iz crtaca, zivotinje ili fotografije sa stok sajtova, do osoba koje se zovu Toka Mokić i Žikic Frule. Jeste da se nameštanjem opcija na fejsu može ograničiti šta vide ostali i nije nemoguće da Toka Mokić ne postoji (ako postoji ja se ovom prilikom izvinjavam), ali velika koncentracija ovakvih profila na jednom mestu me tera da pomislim da je čitava stvar isplanirana i da je u ceo taj plan uključen veliki broj lažnih profila.

Detalj koji sam ja propustio, a koleginica mi je tu informaciju prenela kasnije, jeste da je broj lajkova fan stranice kompanije koja poklanja putovanje proporcionalno povecavao sa povecavanjem broja lajkova na “pobedničkoj” fotografiji. A to nije uslov da bi se moglo lajkovati fotografiju.

Još jedna stvar, da bi cela stvar bila zanimljivija, jeste da je “pobedničku” fotografiju na svom tajmlajnu šerovao jedan od zaposlenih u pomenutoj kompaniji.

Meni je zaista žao što moja koleginica neće otići na letovanje kojem se toliko nadala. Ja ne mogu tvrditi da je ovo prevara, ali mi nije realno da neko može skupiti na “legalan” način 2k lajkova. Pod “legalnim” podrazumevam i enormno veliki broj spam poruka upućeno bilo kome, ali smatram da je pravljenje lažnih profila ipak nešto što nije fer plej. Takođe, favorizovanje jedne fotografije od strane zaposlenih, isto nije ok.

Ovim želim samo da upozorim one koji učestvuju u ovakvim nagradnim igrama, da iako ste apsolutni pobednik sve do poslednjh minuta nagradne igre i mislite da više nema šanse da neko drugi nakupi više šerova/lajkova, stvari se ipak mogu promeniti. A da li je plan onoga što je organizovao tu nagradnu igru zaista bio da pokloni obećanu nagradu ili samo da promoviše svoju kompaniju, firmu, organizaciju ili nešto četvrto, sami zaključite..

Canon DSLR – daljinski (Android) okidač – Praksa

U prethodnim blogovima sam opisao kako treba da funkcioniše ovaj uređaj, kako hardverski deo, tako i deo koji se izvršava na telefonu tj. aplikacija. Ali kako ovo zapravo funkcioniše u stvarnosti?

Interfejs

Onima koji žele ovo sami da prave, a nisu baš vešti sa elektronikom, preporučujem da koriste kalaj za lemljenje sa kalafonijumom. Ja sam izgubio dva dana, pokušavajući da komponente nalemim na pločicu sa nekom starom lemilicom i još starijim kalajom. Na kraju sam kupio novi kalaj i sastavio pločicu za 10min 🙂
Kao podlogu za komponente, koristio sam protobord pločicu. Kako sam saznao od prodavca, postoje protobord ploče sa poljima od bakra na koje se leme komponente ili kao u mom slučaju, ploče sa linijama bakra na kojima se nalaze rupice kroz koje se povezuju komponente. Meni se lično više dopala ova varijanta sa rupicama, jer su tako  lemovi sa jedne, a komponente sa druge, pa sve izgleda urednije i kulturnije. Evo kako to sada izgleda:

Sastavljen interfejs

Na ovom interfejsu se nalaze još i dva tastera, tako da i kada mi telefon nije pri ruci, mogu da koristim interfejs kao što je opisano ovde. Što se tiče komponenti, mislim da ni jedna komponenta nije iste oznake kao što sam naveo u blogu o interfejsu, već su sve neke približne vrednosti. Jednostavno na mestu gde sam kupovao komponente nisu imali komponente sa traženim oznakama, a i ovako sve radi kako treba, pa to nije problem.

Aplikacija

Oko pisanja aplikacije sam se zadržao malo duže, jer sam potpuni početnik što se tiče Android programiranja, a ni sa Javom nisam neki ekspert. Mic po mic i napisao sam ono što mi treba, ono zbog čega sam uopšte i započeo pisanje ovog bloga. Ili barem deo toga 😛
Ukoliko niste upoznati sa programiranjem Android aplikacija, pročitajte ovo uputstvo.

Aplikacija

Za sada aplikacija može da funkcioniše na dva načina. Automatski, kada se unapred definiše ekspozicija ili ručni kada ekspozicija traje onoliko vreme koliko se prst drži na dugmetu “Shoot”. Takođe je moguće i prekinuti ekspoziciju klikom na dugme “Stop” ukoliko je greškom definisana predugačka ekspozicija.

Aplikacija je pisana za HTC Wildfire sa Androidom 2.2.1. Za preuzimanje sours koda kliknite ovde, a zatim pritisnite Ctrl+S.

Navigacija: Ideja Planiranje / Interfejs Aplikacija / [ Praksa ]

Fejsbuk nagradne igre – Šeruj i osvoji iPod!

U poslednje vreme možda ne u tolikoj meri, ali se još uvek povremeno pojavi po koja stranca na Fejsbuku gde poklanjaju iPod, SGS3, Apple laptop ili neku drugu stvarčicu moderne tehnologije. Sve što je potrebno jeste da šerujete tu stranicu na svojem tajmlajnu i postajete potencialni dobitnik obećanog predmeta.

Primer fejsbuk stranice sa nagradnom igrom

Možda je neko nekada zaista i poklonio iPod ovim putem, ali smatram da je većina tih nagradnih igara obična prevara. Ovo mi više liči na marketinški trik kojim se na vrlo jednostavan način promoviše stranica koja je tu nagradnu igru objavila. Ukoliko već želite da šerujete odnosno lajkujete takvu stranicu, probajte barem u nekoj meri da eleminišete mogućnost da budete prevareni.

Prvo proverite ko je napravio dotičnu stranicu, tj. da li je u pitanju neka ozbiljna firma (nedavno je Avast imao sličnu nagradnu igru), ili se radi o pojedincu. Ako je stranica namenjena za zabavu (vicevi, smeše slike, klipovi…), razmislite sami kolike su šanse da oni zaista žele nekome da poklone bilo šta? Takođe možete da kontaktirate administratora stranice i zatražite više detalja o nagradnoj igri i prema odgovoru da zakljućite da li se radi o ozbiljnoj osobi ili nekom “šalabajzeru” 😛

Google Images

Još jedna od mogućnosti koje možete iskoristiti za proveru pravdivosti gore pomenutih nagradnih igri je i Guglov servis Google Images. Usluge koje taj servis pruža možete da iskoristite da ustanovite da li je fotografija predmeta koji treba da bude poklonjen autentična. Tačnije, da li je ta fotografija baš fotografija uređaja koji se poklanja, a administrator stranice je taj koji je tu fotografiju napravio ili je fotografija jednostavno skinuta sa nekog trećeg sajta.

Google Images pruža mogućnost da fotografije pretražujete ne samo prema ključnim rečima, već i prema sličnosti sa nekom drugom fotografijom. Ta druga fotografija može biti na vašem računaru ili negde na internetu. Pošto se fotografija na fejsbuk stranici koja predstavlja “poklon” već nalazi na internetu, dovoljno je samo kopirati njenu adresu, a zatim na Google Images uraditi sledeće korake:

1. Kliknite na mali fotoaparat pored dugmeta za pretragu

2. U novootvorenom prozoru odaberite link “Paste image URL” , nalepite (pejstujte) kopiranu adresu fotografije i kliknite na Search

3. Kada vam se prikažu rezultati, iz menija sa leve strane odaberide opciju “Visually similar” 4. Kao rezultat, dobićete pretragu sa slikama, koje su slične po izgledu fotografiji za koju utvrđujete autentičnost U ovom primeru kao što vidite, skoro sve fotografije u prvom redu su iste, samo je izmenjen sadržaj ekrana telefona. Iz ovoga se lako da zaključiti da administrator grupe nije sam napravio fotografiju uređaja koji navodno poklanja, već je to fotografija preuzeta sa interneta.

Još jedan primer…

Pre nego što završim ovaj blog, dodaću još jedan primer “navlačenja” lajkova, a vi sami ocenite da li želite vaš lajk ili šer tako lako da poklanjate bilo kome 😉

Klik za više informacija

Canon DSLR – daljinski (Android) okidač – Aplikacija

Kao što objasnih u ovom blogu, na izlaz stereo priključka je potrebno emitovati ton, a to će, ukoliko je fotoaparat povezan na telefon preko interfejsa, uzrokovati fokusiranje odnosno okidanje, u zavisnosti na koji kanal smo emitovali ton. Za generisanje tona, modifikovao sam i koristio klasu sa ove stranice: stackoverflow.com/ques…bud-left-or-right. Pomoću nje se može lako generisati pravougaoni signal određene frekvencije i dužine trajanja. Modifikovana verzija klase je ispod.
<.blockquote>

import android.media.AudioFormat;
import android.media.AudioManager;
import android.media.AudioTrack;

public class ToneGen {

    AudioTrack aTrack;
    byte[] buffer;
    int fps = 16000;
    int samplesPerFrame = 4;

    /**
    *@param frequency The frequency of the tone
    */    
    public ToneGen(int frequency)  {
        buffer = new byte[fps];
        int T = (int) fps / frequency ;
        int To2 = (int) T / 2;
        for ( int i=0; i<buffer.length; i+=T ) {
            for (int j = 0; j < To2; j++)
            {
                buffer[i+j] = (byte) 127;
                buffer[i+j+To2] = (byte) -127;
            }
        }
    }

    /*
    * @param duration Duration of sound in seconds
    * @param leftVolume Left volume 0.0f - silent, 1.0f full volume
    * @param rightVolume Right volume 0.0f - silent, 1.0f full volume
    */
    public void Play(float duration, float leftVolume, float rightVolume) throws Exception {
        int u = 1;
        if (duration < 1) {
            u = Math.round(1 / duration);
            if (u != 2 && u != 4 && u != 8 && u != 16 && u != 32 && u != 64 && u != 128) throw new Exception("Invalid exposure");
        }
        aTrack = new AudioTrack(AudioManager.STREAM_MUSIC,
             fps/samplesPerFrame, AudioFormat.CHANNEL_OUT_STEREO,
             AudioFormat.ENCODING_PCM_16BIT,
             buffer.length/u, AudioTrack.MODE_STATIC);
        if (duration > 1) 
            aTrack.setLoopPoints(0, fps/samplesPerFrame, Math.round(duration)-1);

            aTrack.write(buffer, 0, buffer.length);
            aTrack.setStereoVolume(leftVolume, rightVolume);
            aTrack.play();                
    }

    public void Stop(){
        aTrack.stop();
    }

}

.
Klasu koristite tako što konstruktoru prosledite željen frekvenciju tona koji želite da generišete. Ja sam koristio frekvenciju od 500Hz i sa tim parametrima je interfejs opisan u prethodnom blogu radio kako treba. Kada želite da emitujete ton, potrebno je da pozovete metodu Play(). Njoj prosleđujete dužinu trajanja tona u sekundama i jačinu zvuka za levi odnosno desni kanal. Primer:
.

ToneGen tg = new ToneGen(500);
try { tg.Play(5.0f, 0.0f, 1.0f); } catch (Exception e) {}

.
Ovako pzvana metoda Play() će emitovati zvuk od 500Hz, trajanja pet sekundi, samo na desni kanal stereo priključka. To će prouzrokovati da, kada je aparat preko interfejsa povezan na telefon, aparat fokusira 🙂

Ukoliko želite da ekspozicija traje manje od jedne sekunde, potrebno je da emitujete ton kraći od jedne sekunde. Takav ton možete da generišete na sledeći način:

.

ToneGen tg = new ToneGen(500);
try { tg.Play(0.125f, 0.0f, 1.0f); } catch (Exception e) {}

.

Važno je da dužina trajanja tona koji želite da emitujete (dužina ekspozicije) bude jedna od sledećih vrednosti: 1/2, 1/4, 1/8, 1/16, 1/32, 1/64 ili 1/128 u decimalnom zapisu.

NAPOMENA: Canon fotoaparati, kada se fotografiše u BULB modu, u EXIF podacima dužine ekspozicije koje su manje od jedne sekunde zaokružuju na jednu sekundu!

Navigacija: Ideja Planiranje / Interfejs / [ Aplikacija ] / Praksa