Browse Category: Racunarstvo

IoT u Petnici

Na jesenjem seminaru računarstva u Petnici, deo pažnje je bio posvećen Internet of Things (IoT) tehnologijama gde su polaznici slušali predavanja na tu temu, ali su mogli i da probaju da kontrolišu jedan model takvog sistema. Deo predavanja je bio posvećen bezbednosti, odnosno rizicima koje IoT tehnologije donose i dešavanjima čiji smo bili svedoci u poslednjih mesec dana.

Pomenuti model je imitacija pametne kuće koja je opremljena senzorima i uređajima koji se mogu udaljeno kontrolisati. Kako je ovo bila prva verzija kuće, model nije imao zavidan dizajn, ali je bio funkcionalan i služio je svrsi 🙂

img_20161120_112735-1

Od senzora/uređaja na/u kući su se našli zvučnik (piezo buzzer), LED sijalice, prozor povezan na micro servo motor, uređaj za ventilaciju/hlađenje (ventilator), uređaj za grejanje (grejač u kombinaciji sa ventilatorom), kao i senzori za merenje vlage, unutrašnje i spoljašnje temperature i temperature uređaja za grejanje. Sve ove komponente su povezane na Arduino Mega 2560, koji preko Ethernet shield-a komunicira sa serverom (koji predstavlja cloud) odakle dobija komande. U normalnim uslovima, kontrola svih uređaja je prepuštena (u ovom slučaju) polaznicima koji šalju komande na server. Izuzetak je uređaj za grejanje, koji je zaštićen od pregrevanja, tako da u slučaju kada dostigne kritičnu temperaturu, kontrolu nad kućom preuzima Arduino i aktivira proceduru hlađenja.

untitled-diagram

Pored kuće, razvijen je i pomenuti server koji predstavlja posrednika u komunikaciji između polaznika i kuće, ali i koji održava konekciju prema kući i pamti stanja u kojim se kuća nalazi. Server takođe služi i kao neki vid zaštite od ne autorizovane kontrole kuće, kao i zaštita od učestalih slanja komandi. Inače, server je namerno razvijen da ima “rupe” i da omogući polaznicima da probaju da preuzmu kontrolu nad kućom kada to nije omogućeno podešavanjima. Uz ovaj server, razvijen je i server sa korisničkim web interfejsom gde se iz browsera mogu očitavati vrednosti temperature ali i kontrolisati uređaji.

kuca

Polaznici na seminaru su imali niz zadataka:

  • kontrolisanje kuće iz web interfejsa radi održavanja date temperature, ali i izbegavanje pregrevanja,
  • uspostava konekcije sa glavnim serverom i slanje direktnih komandi pod ograničenim privilegijama
  • takmičenje gde dva tima pokušavaju da održe temperaturu koja im je zadata (npr: tim1=27C , tim2=31C),
  • zadatak sličan prethodnom, samo je ovog puta potrebno napisati skriptu koja to sama radi,
  • sprečavanje pregrevanja u situaciji gde je dozvoljena ograničena kontrola kuće,
  • preuzimanje potpune kontrole nad serverom i dobijanje svih privilegija,
  • preuzimanje konekcije između kuće i glavnog servea u cilju sprečavanja/izazivanja pregrevanja

 

“Prženje” grafičke kartice

Neki to urade u rerni, kažu 200 stepeni, 5 minuta je dovoljno. A ja sam to uradio na malo drugačiji način, pošto je meni rikla integrisana grafička na laptopu. Ali evo prvo mali uvod, za one koji nisu sigurni o čemu se ovde radi, čisto da ne bi posumnjali da pravim paprikaš od računarskih komponenti.

Kada se računar zapusti ili kada mu dođu godine, obično zakaže hlađenje, pa se računar pregreva i pregreva dok jednom ne prestane da radi. I onda odnesete računar u servis i kažu vam da će ga popraviti za recimo desetak hiljada dinara. Iz onoga što sam naučio u poslednja dva meseca, za šta ne garantujem da je tačno, jer je uglavnom “znanje sa raznih foruma”, je da vaš računar zapravo i nije pokvaren. Ili barem ne u smislu pokvaren-nešto-je-riklo. Ono što se najverovatnije dogodilo, jeste da se od pregrevanja odlemio čip sa ploče. U servisu taj čip zagreju na određenu temperaturu, veze se obnove i “Wola, računar radi!”. Postoje i tehnike kada se menja “sačma” (šta god to bilo), onda je postupak znazno komplikovaniji ali i sigurniji. Eto to kažu ljudi na forumima, a ja, pošto ne volim da platim nešto ako ne moram, kažem da ću sam da probam da ugrejem čip.

Kao što sam rekao, problem koji sam imao, je bio malo komplikovaniji, pošto se radilo o celoj matičnoj ploči, tako da varijanta sa rernom nije dolazila u obzir.

Pokušavao sam i sa fenom za kosu da ugrejem čip, ali temperatura nije bila dovoljno visoka da bi se veze obnovile. Pokušao sam i sa više njih, takođe bezuspešno. Stupid me.

A onda sam odlučio sa fenom za skidanje boje/laka. Šest stotina stepeni mora da bude dovoljno! Kada sam konačno došao do takve mašine, ipak sam odlučio da malo usporim, pa probam sa recimo 250 stepeni. Zaštitio sam ostatak komponenti na ploči sa alu-folijom, na štoperici namestio 5 minuta i feniranje je počelo. Nakon toga sam sačekao da se čip ohladi, povezao ploču na displej i napajanje – klik – i računar ponovo radi 🙂

E sada ova priča se ne završava lepo kao što sada to možda izgleda. Računar iako je proradio, imao je gadne probleme sa pregrevanjem. Restartovanje se događalo prilikom samo malo većeg opterećenja grafiče kartice. Na kraju ga je zamenio novi računar, a stari je prodat u servis u delove.

Uglavnom, odavde sam naučio da neke stvari baš i ne mogu kod kuće da se urade. Ja sam imao situaciju kada je popravka bila skuplja nego cela nova matična ploča, tako da sam se odlučio na eksperimentisanje. U suprotnom to verovatno ne bih uradio, a ne preporučujem ni vama.

Pazite gde klikćete

Da je ovo sajt Kurira naslov bi verovatno glasio “NEVEROVATNO – Pazite gde klikćete! On nije pazio i pogledajte šta mu se dogodilo!!!”. Ali srećom, ovo nije Kurir. Zapravo, ovde će biti reči o tome kako da ne nasednete na ovakve naslove i kliknete negde gde zapravo ne želite. Pa da krenemo:

Dogodilo se nesto strasno
Dogodilo se nesto strasno

To “STRAŠNO” pojačava i ova slika iznad teksta. Vrlo verovato da će privuci vašu pažnju, a najverovatnije i klik na istu. Kada malo bolje pogledate, ispod stršsne rešenice stoji link gde piše blicb92.blogger.ba – razmislite malo, zašto blic i b92 zajedno i zašto sve to na nekom blogger sajtu?

A kada već kliknete, šeka vas nešto slično ovome:

Samo za punolente - NOT!
Samo za punolente – NOT!

Posedovanje Facebook naloga ne dokazuje vaše punoletstvo. Ovo je samo način da tvorci ove stranice skupe lajkove.

U slučaju kada odlučite da “dokažete” vaše punoletstvo poklanjajući lajk tamo nekome (u ovakvim slučajevima vi i ne znate šta tačno lajkujete), zauzvrat dobijete neki krš gif koji često nema veze sa onim što vas je privuklo da posetite tu stranicu. Sa druge strane vaši prijatelji na Facebook-u sada vide da ste vi lajkovali to nešto (što je ponovo nekog primamljivog sadržaja) i lanac se nastavlja.

Dole je lajkovanje malo zamaskirano, tako da vam je “nasedanje” znatno olakšano…

Close = Like
Close = Like

…tako da vi zapravo kliknete Like iako to niste želeli.

E sada čemu ti lajkovi? Čemu toliki trud da se skupi ogromna količina lajkova? Odgovor su pare. Da, prave pare, “zelembaći”. Napraviš stranicu koja će lako da skupi lajkove, zatim je prodaš nekome, taj neko promeni naslov stranice, sliku, sve redom i preko noći je taj neko (ili neka kompanija, proizvod) zaradio gomilu lajkova. Odjednom je to popularno, mnogo ljudi je to lajkovalo i iskače ljudima na timeline-u.

Pošto ovaj tekst stoji u pripremi već dosta dugo, nisam siguran koliko je Facebook radio u međuvremenu na tome da zaštiti svoje korisnike od ovakvih prevara. Svejedno, princip je isti i za svuda. Napraviti nešto primamljivo iza čega stoji prevara. Tako da sledeći put pre nego što kliknete na neki link, razmislite koliko je realno da se to što stoji u opisu linka, zapravo dogodilo.

Inače, dok se nismo udaljili daleko od ove teme, preporučujem da pročitate i ovo: http://www.tarzanija.com/klikni/

Dodatak za Chrome? Zaista?
Dodatak za Chrome? Zaista?

Pošto sam upravo pročitao par tekstova na Tarzaniji, imam potrebu da se izrazim ovako: “Ako klikneš na ovo Click to Install, to ti je kao da si ga metno nekojo iz picinog parka bez kurtona. A ako posle toga još klikneš i na dugme Add, onda si 100% zaradio hepatitis abecedu i sve ostale polno prenosive bolesti i više te ni jedan doktor, a ni pop, neće spasiti.” Pa ti klikni.

Kada ne moze jednostavnije, hajde da ga zakomplikujemo
Kada ne moze jednostavnije, hajde da ga zakomplikujemo

Na slici iznad je ključan ovaj označeni pravougaonik gde pored piše Use OpenSubtitles Download Manager. Ovo je takođe prevara. Da bi skunuo prevod za film, treba ti jedan klik, a nakon toga ti treba još jedan da bi ga pustio sa filmom. Ukoliko ne otkačiš pomenuti pravougaonik, Download Manager će da te smori dok se ne instalira, zatim će da te smara koji prevod hoćeš, usput će da instalira još 5 plejera koje ti ne želiš i AKO na kraju ipak skine prevod, verovatno ćeš će zahtevati registraciju na nekom sajtu da bi ga pustio. A instaliraće i još nešto gratis verujem…

Da ti operem sajbnu?
Da ti operem šajbnu?

Ponovo, ključna stvar iznad je CNET Installer Enabled. Opet neki Download Manager, u ovom slučaju CNET Installer. Skini to, pa će on da skine ono čto ti treba. Jer si ti retardiran, pa sam ne umeš. Tako da ni to ne želimo….

Jos jedno pranje sajbne
Jos jedno pranje sajbne

Za kraj, ponovo malo ozbiljnosti. Ako ste uspešno zaobišli sve mine koje su vam do sada bile postavljene, nemojte se opuštati. Čeka vas barem još jedna. Da li vaš PC “trči” punom brzinom? Pa naravno da ne trči kada neko sranje gledada se uvuče u njega na svakom ćošku! Ovo što se sada kulturno nudi da vam se zavuče u komp (da ne kažem gde još…), to vam neće ubrzati računar. Ako želite brži računar, naučite se da ga održavate i da ne istalirate kojekakve gluposti na njega. U krajnjem slučaju, kupine novi računar. Sa SSD diskom naravno i vaš računar će da leti 😉

stupid4 stupid3 stupid2 stupid1

Facebook Graph Search

Neki su za ovo čuli, neki nisu, a verovatno je jako mali broj ljudi koji su zapravo pokušali da koriste ovu pretragu koju pruža Facebook.

graphsearch

Zapravo, radi se o pretrazi koja vam omogućava da prilično opišete ono sto trazite. Sada će neko reći kako je to bilo moguće i pre nego što je uveden graph search. I jest i nije. Evo primera:

Tražite Marinu koja živi u Novom Sadu. Dovoljno je da u pretragu upišete sledeće:

People named Marina who live in Novi Sad

Sada će facebook ponuditi neke pretrage koje njemu imaju smisla, a na vama je odaberete koja od tih pretraga najbolje zadovoljava vaš kriterijum.

recommendations

Rezultat je sledeći:

fromnovisad

Ovakva pretraga će vratiti jako puno rezultata. Na vrhu liste rezultata biće osobe sa kojima ste prijatelji, a potom i oni sa kojima niste. Evo još jednog primera:

Pomenutu Marinu ste upoznali negde u prolazu, recimo ispred neke Caribic picerije, ali je niste pitali kako se preziva. Pretpostavimo da je Marina lajkovala Caribic pice na FB-u, pa evo još jedne pretrage:

People named “Marina” who live in Novi Sad, Serbia and like Caribic – Pizza Cut

likecaribic

Recimo da pretraga još uvek vraća previše rezultata, možete postaviti još neke parametre:

People named “marina” who live in Novi Sad, Serbia and like Caribic – Pizza Cut
and who are older than 20 and younger than 26

whoareolder
Jer možete da ocenite da je Marina tu negde između 20 i 26 godina. I tako ste pretragu suzili na još manji broj kandidata.

Ali da ne dužim dalje sa primerima. Ovo pretraživanje koriste oni koji se oglašavaju na FB-u, tako da ako neko pravi torte za dečije rođendane, a usput zna da napravi tortu u obliku Minion-a (vidi ovde šta je Minion), dobar marketing može da napravi tako što će postaviti reklamu recimo osobama do 25 godina koje su lajkovale Despicable Me, Despicable Me 2, Minions ili neku sličnu stranicu. I smem da se kladim da bi to imalo jako dobar efekat, jer znam da ako bi neko želeo meni da proda tortu u obliku Miniona, ja bi je definitivno kupio. Pitanje je samo da li bi je pojeo ili bi je samo čuvao dok se ne usmrdi 😀 Nadam se da sta shvatili poentu.

Inače kada sam “čuo” šta sve može graph search, bio sam oduševljen i odmah pohitao da ga oprobam. Nažalost, na mene to nije ostavilo neki utisak, pošto sam uglavnom pretraživao isto onako kao sa starim pretraživačem. Ali pre par dana sam poželeo da pozovem jednu drugaricu na kafu. Upoznali smo se pre više od godinu dana, svaki put se javimo jedno drugom, nekada popričamo.. Nažalost, ja sam zaboravio kako se ona zove još kada smo se upoznali upoznali, a posle je bilo neugodno pitati.  Znam jedino gde sam je upoznao, na kom fakultetu studira i kako izgleda. Gde sam je upoznao mi baš ne pomaže, pošto je bio u pitanju neki sastanak u studentskom domu. Ne znam ni koji je smer na fakultetu. Ali znam sa kime se druži. I znam ko je još bio na tom sastanku gde smo se upoznali. Tako da je pretraga bila prilično efikasna. Čitav jedan rezultat (naravno, pored mojeg profila, pošto sam prijatelj sa obe osobe za koje se vrši pretraga :))

final

Čekanje u službi smeštaja – no more

Sećam se kada sam prvi put ušao u službu smeštaja u Novom Sadu. Tada sam tamo odsedeo oko 4h, jer nisam znao gde bih otišao, a i trebalo je da se čeka u redu. Mada situacija nije bila bolja ni naredne godine. Iako sam znao gde bih otišao umesto da čekam u redu, jednostavno nisam hteo da rizikujem da moj broj bude prozvan, pa da sutra moram sve iz početka. I tako se rodila ideja o aplikaciji za telefon, koja bi prikazivala informacije o trenutno prozvanom klijentu u službi, što dalje omogućava studentima da odu na predvanja, izbleje negde u kafiću pored, u menzi ili da jednostavno odu kući i da odspavaju 🙂

SC Novi Sad - znak-logotip

Od uprave Studentskog centra Novog Sada sam dobio dozvoluda to realizujem, kao i pristup stanju, odnosno terminalu za prozivke u službi smeštaja. Nakon toga i nakon utvrđivanja šta imam od resursa na raspolaganju, ideja je postala projekat, znatno većeg obima nego što sam očeivao. Procenjenih nedelju dana za završetak, su se razvukli na čitavih šest meseci. Naravno, tih šest meseci nisu šest meseci programiranja, jer je pored toga bilo i dosta organizacije sa IT službom Studentskog centra, gomilu razmenjenih mejlova, popravljanja grešaka i testiranja, a sve to je zahvatio i raspust.

IT služba je obezbedila računar koji će raditi monitoring stanja na terminalu za tiketiranje, kao i pristup web serveru na koji se šalje trenutno stanje, odnosno broj trenutno prozvanog klijenta. Postojeći sistem za tiketiranje održava firma Avantech QMS i oni su nam obezbedili pristup terminalu kao i specifikaciju podataka koji predstavljaju trenutno.

Uglavnom, sada je to privedeno kraju. Još uvek ne želim da kažem da je kraj, jer od kada sam to prvi put rekao, morao sam još pet puta da intervenišem u rešavanju bagova. A ti bagovi su u principu bili posledica nekompletnih specifikacije koje sam koristio. Ali dobro, sada se nadam da takvih iznenađenja više neće biti.

Trenutno, na adresi www.scns.rs/?page_id=719 (ili direktno na www.scns.rs/adRedova) možete da pratite stanje prozivke u službi. Smatram da je dosta intuitivan “dizajn”, tako da ga neću dalje objašnjavati. Pored ove stranice, postoji i aplikacija za Android uređaje, a link za preuzivamnje možete naći na gore pomenutoj stranici.

Što se tiče arhitekture servisa, ona je data na slici ispod.

Business logic

Iako prilično  grubo, vidi se na koji način funkcioniše.

Inače, od samog početka, postojala je i zamisao o SMS servisu za one koji nemaju Android telefon, ali nažalost, ta opcija nije uvedena zbog iz nekih pravno-finansijskih razloga odnosno jako komplikovane procedure oko javnih nabavki, koja bi bila neophodna za pokretanje ovakvog servisa.

Update za one sa programerskim iskustvom
Zbog manjih tehničkih problema, servis se premešta na Raspberry PI. Kada bude premešten, PI će biti ostavljen negde u mraku, zauvek sam.


Izvorni kod možete naći na sledećoj adresi: github.com/biserx/QueueMonitoringService

Za kraj, ohrabrio bih sve studente koji koriste usluge smeštaja Studentskog centra, da oprobaju servis. Eventualne greše u funkcionisanju, zamerke ili utiske, sobodno navedite dole u komentarima ili direktno na email adresu.

Moje dobro delo za studente 🙂

DealExtreme

Od srednje škole se bavim hobi elektronikom i nikada mi nije bilo jasno zašto su cene određenih komponenti kod nas ponekad i duplo skuplje nego na eBay-u ili Amazon-u. Čak su i cene na Limundu ili Kupindu tek nešto manje od onih u redovnoj prodaji. I tako primera radi, sa servo motorom sam mogao da se igram u snovima, eventualno da cimam nekog da mi pozajmi (uz ne daj bože da pokvarim), jer mi je bilo preskupo da platim preko 1000 dinara, za takvo jedno zadovoljstvo…

Ali.. 

Na sajtu dx.com (nekada bilo dealextreme.com) možete kupiti razne “gedžete” po relativno niskim cenama. To relativno je relativno u odnosu na naše cene ovde u Srbiji. Tako se ja sada sa servo motorom igram za 4$ (~340din). Pored servo motora, naručivao sam još svašta nešto i nikada nisam imao problema sa stvarima koje sam dobio. Pošiljkama treba oko 20 dana da stignu od dana kada se obavi plaćanje. Ukoliko se potrefi da im u međuvremenu nestane neki od proizvoda koji ste naručili, možete korigovati porudžbinu, tako da vam pošalju samo one proizvode koje imaju, a ovaj koji nemaju, poslaće naknadno kada budu imali.

Što se tiče plaćanja, MasterCard i Visa sasvim lepo rade. Ostale nisam probao. A postoji i rešenje za one skeptične, koji misle da će im neko pokupiti svu lovu sa računa.

U banci otvoriš dva računa. Jedan gde ti recimo firma uplaćuje platu, a drugi sa kojim plaćaš preko neta. I onda kada nešto želiš da naručiš, preko eBankinka, netBankinga ili kako god da se to zove u banci gde si otvorio račune, prebaciš onoliko sredstava koliko ti je potrebno da izvršiš plaćanje. Zatim obaviš proceduru prekuckavanja pina sa kartice u formu na sajtu, potvrdiš i to je to 😉

E da.. mislim da nisam pomenuo da je dostava na kućnu adresu BESPLATNA!!! Nemam naviku da pišem caps+bold, ali kontam da je to presudno. Barem je bilo kod mene. Nisam nikada naručivao pošiljke čija vrednost prelazi preko 50$ i nisam imao problema sa carinom, mada sam čuo da može i preko toga da se naruči.

Nažalost, ovo gore više baš  i ne važi. U principu, dostava je i dalje besplatna, ali naša draga država od kada je uvela PayPal na sve pošiljke koje stižu, pri ulasku, oporezuje. I to ODOKATIVNO! -.-

Ovde možete pogledati malo više o tome.

Upoznavanje sa IOIO

Ako niste sigurni o kakvom IOIO-u se radi, pogledajte ovde 😉

ioio-logo

Stigao je. IOIO koji sam toliko čekao – stigao je! Zapravo stigao je on još davno, samo od svih obaveza nisam uspeo da mu posvetim dovoljno pažnje i da se poigram sa njim. Nego, da ne bih prevodio uputstvo koje možete naći ovde, u ovom blogu ću opisati problematične situacije u kojima sam se ja našao kada sam hteo po prvi put da pokrenem aplikaciju HeloIOIO i kako sam ih rešio.

Konektori

Prva stvar koju sam primetio kada sam otvorio paket, jeste da na pločici nisu zalemljene lestvice za povezivanje uređaja sa žicama, već su ostavljeni samo kontakti na koje se nešto može zalemiti. “Shit, sada još moram tražiti te lestvice po gradu!”. A tada još nisam ni znao kako se to zove, pa sam prodavcima na razne načine objašnjavao šta mi treba, pokazivao im slike na telefonu, poredio sa protoboard-om, dok konačno u Sprintu nisam našao to što mi treba. Tamo su mi objasnili da se to zove ženska lestvica (vi zakjučite zašto baš ženska :P).

Zaštita od pogrešnog povezivanja napajanja

Kada su lestvice konačno bile zalemljene na pločicu, bilo je vreme da testiram uređaj. Pročitao sam zvanično uputstvo, a zatim pločicu nakačio na stari adapter od fiksnog telefona (9V, 1000mA). Ideja je bila da stavim i jednu diodu, kako bi pločicu zaštitio od pogrešnog povezivanja napajanja, ali u tom trenutku nije bilo vremena za nešto to, što se kasnije ispostavilo kao velika greška. Elem, evo kako diodom da zaštitite IOIO (ili neki drugi neki uređaj) od pogrešnog povezivanja napajanja:

Zaštita od pogrešnog povezivanja napajanja
Zaštita pomoću diode

Takođe možete koristiti i grecov ispravljač:

Zaštita od pogrešnog povezivanja napajanja
Zaštita pomoću grecovog ispravljača

U provm slučaju uređaj neće raditi ako naopačke povežete napajanje (na B priključak dovedete minus), dok u drugom slučaju sa grecovim ispravljačom, uređaj će raditi za bilo koju polarizaciju plusa i minusa na priključcima A i B. Ove zaštite je poželjno skinuti kada uređaj kačite na bateriju, jer svaka dioda stvara pad napona od 0,7V.

Projekat HelloIOIO

Da bi IOIO nešto radio, potrebno je da isprogramirate aplikaciju za Android telefon koja će da mu kaže šta da radi. Zbog toga je potrebno da na računaru imate podešeno Eclipse okruženje sa Android SDK. Kako to uraditi ako do sada niste, potražite ovde.

Kada preuzmete najnovije biblioteke za rad sa IOIOom, sa njima će te dobiti i primer HelloIOIO. U mom slučaju, pokretanje tog primera nije išlo tako glatko kako je opisano na IOIO wikiju. Evo šta sam ja sve morao da uradim da bi mi svi primeri proradili:

1) Update Eclipse okruženja. Help Check for Updates, pa dalje sve prihvatiti…

2) Android SDK Manager  Update Android Tools

Nakon ubacivanja projekata u Eclipse okruženje koje je opisano na IOIO wikiju, za svaki projekat uraditi sledeće:

1) Desni klik na projekat  u Package Explorer prozoru  Properties (otvoriće se novi prozor)

2) Odabrati stavku Android u desnom meniju, a zatim u panelu levo obeležiti verziju Androida za koji želite da kompajlirate vaš projekat (verzija Androida koji je na telefonu sa kojim povezujete IOIO)

3) U meniju sa desne strane sada odabrati Java Compiler stavku. Levo obeležiti stavku Enable project specific settings, a zatim pod JDK Compliance tamo gde piše Compiler compliance level odabrati verziju 1.6. Kockica Use default compliance level treba da bude obeležena.

4) Zatvorite prozor Properties for …

5) Desni klik na projekat u Package Explorer prozoru Android tools Fix project properties

Nakon ovoga, kod mene se svaki ubačeni projekat ponaša normalno. Crveni iksići koji su se ranije pojavljivali pored projekata u Package Explorer prozoru su nestali.

Prvi pokušaj

Nakon spuštanja aplikacije HelloIOIO na telefon i povezivanja telefona sa IOIOom, aplikacija je radila baš to što je u njenom opisu: menja stanje statusne diode na uključeno/isključeno u zavisnosti od stanja ToggleButton-a koji se nalazi na displeju telefona.

helloioio

U nekom od narednih blogova slede malo ozbiljniji primeri 😉

Pripreme za E2

Kao i svake godine, smer E2 upiše dosta gimnazijalaca. Osim što se susreću sa šalama pojedinih profesora na račun toga što su završili gimnaziju, susreću se i sa dosta ozbiljnijim zadacima, kakve možda nisu sreli u gimnaziji. Matematika i fizika im naravno nisu problem, ali kada je reč o programiranju ili osnovama elektrotehnike, tu se stvari već malo menjaju.

U gimnazijama se obično radi Pascal, dok se na smeru uči C/C++. Iako se na predmetu Programski jezici i strukture podataka programski jezik C uči od početka, predmet je lakše savladati ako već imate neko predznanje. Zato onima koji žele da upišu E2, a i onima koji su jednostavno radoznali i žele da se upoznaju sa programiranjem, preporučujem da posete sledeći link:

Škola Rajak

Programerska radionica

Radi se online kursu škole Rajak, koji se bavi temom algoritama i osnovama strukturiranog programiranja, a kurs vodi moj kolega sa smera.

Ako vas interesuje kako izgleda jedan ovakav kurs, pogledajte ovde.

Ćao! Moj novi broj telefona je…

Ovih dana  planiram da promenim broj telefona, pa bih o tome trebao da obavestim prijatelje i poznanike. Ali koga obavestiti, a koga ne? Ako se neko nalazi u mom imeniku, to ne znači da mu treba moj novi broj, dok sa druge strane, verovatno postoji i neko ko ima moj stari broj, a ja ga nemam upisanog u imeniku. Možda da neko vreme koristim dva telefona, pa da budem dostupan na oba broja? Ili ako bi postojala mogućnost automatskog slanja obaveštenja o promeni broja, ukoliko neko pokuša da me kontaktira na stari broj telefona?

Ovo poslenje pomenuto mi zapravo najviše odgovara, pa sam odlučio i da ga realizujem. Ponono sam iskombinovao staru Nokiu i Python 😉

import messaging
import inbox
import telephone
import time

messageText = "(Automatska poruka): Cao! Vise ne koristim ovaj broj. Kontaktiraj me na 06x/xxx-xxx. Hvala :)"
informedAlready = []

def sendSMS(notifyNumber):
  global informedAlready
  global messageText;

  if informedAlready.count(notifyNumber) == 0:
    print "Sending message to " + notifyNumber
    messaging.sms_send(notifyNumber, messageText)
    informedAlready.append(notifyNumber)

def callCallback(state):
  if (state[0]==telephone.EStatusRinging):
    #print "Voice call received"
    sendSMS(state[1])

def SMScallback(id):
  time.sleep(1)
  try:
    i = inbox.Inbox()
    smsID = i.sms_messages()[0]
    if id == smsID: # preventing error that occurs when delivery report is recieved
      #print "SMS received"
      sendSMS(i.address(smsID))
  except:
    print "Some error occured in SMScallback function!"

# Pokretanje pracenja primljenih poruka
box = inbox.Inbox()
box.bind(SMScallback)
# Pokretanje pracenja primljenih poziva
telephone.call_state(callCallback)

print "Service started!"

Dovoljno je da kod kopirate u datoteku sa ekstenzijom ‘.py’, zatim da je kopirate na telefon i pokrenete u Python interpreteru. Više o tome, pogledajte ovde.

KeePass + Dropbox

Prosečan korisnik interneta iza sebe ima izvršenih nekoliko registracija na razne servise, kao što su email, Facebook, Skype, Twitter, Instagram itd. Oni sa dužom istorijom korišćenja interneta, su verovatno registrovani na više desetina servisa, a tu nastaje problem čuvanja pristupnih podataka, iliti kombinacija korisničko-ime/šifra za svaki servis. Verovatno je većina takvih korisnika došla na ideju da koristi iste podatke na svim servisima, pa se tako ukupan broj kombinacija koje treba upamtiti svodi na jendu kombinaciju koja radi za sve servise. Nažalost, ovakva organizacija je jako rizična, jer ukoliko se neko dočepa vaše šifre za jedan servis, automatski može da se prijavi na bilo koji drugi i tako preuzme vaš digitalni identitet.

Vratimo se na ideju da se koriste različiti pristupni podaci za različite servise, sa problemom pamćenja tih podataka. Ovaj problem se može rešiti korišćenjem raznih “password manager“-a, a ja ću ovom prilikom opisati jedan, koji koristim već duže vreme. KeePass je program, koji pomaže u čuvanju i organizaciji pristupnih podataka za svaki servis ponaosob. Pored čuvanja kombinacije korisničko-ime/šifra, moguće je sačuvati link do servisa na internetu ili dodati komentar. Takođe postoji opcija da KeePass sam izgeneriše šifru.  Ali ono zbog čega je KeePass moj odabir, jeste da postoje verzije za razne operativne sisteme. To mi omogućava da u jednoj bazi, čuvam sve šifre i da mi one budu dostupne bez obzira koji OS koristim: Linux ili Windows!

Izgled prozora KeePass
Izgled prozora KeePass

keepass.info/download

Ostala je još samo jedna stvar, a to je kako da u svakom trenutku, na svakom uređaju imate “svežu” bazu? Kada kažem “svežu”, mislim na to da unos novih podataka na jednom uređaju, bude vidljiv i na svim ostalim. Verovatno postoji više rešenja ovog problema, a jedno od njih je korišćenje Dropbox servisa. Dropbox je takođe cross-platform, a njegova uloga je da sinhronizuje sadržaj određenog foldera na svim uređajima na kojim je instaliran. Postavljanjem baze (fajl gde KeePass čuva sve podatke) u Dropbox folder, ona postaje dostupna na svim uređajima gde imate instaliran Dropbox, pa tako vaši pristupni podaci postaju dostupni na svakom uređaju koji koristite 🙂

dropbox.com