Blog Autori Aleksandar Lukač, DressCode
Aleksandar Lukač, DressCode

Aleksandar Lukač, DressCode

7

Softverski inženjer u Majkrosoftu. Diplomirani inženjer informacionog inženjeringa (Data science). Interesovanja: softverska arhitektura, optimizacioni problemi, teorija algoritama.

Svi tekstovi autora

05.03.2024. ·
2 min

Koliko smo svoje privatnosti spremni da žrtvujemo na internetu?

Razmatranje politike privatnosti aplikacija koje koristimo često se zanemaruje u žurbi da se iskusi nova funkcionalnost ili usluga. Svesni smo da sve ćešće na internetu nije proizvod ono što nam se predstavlja, već da smo taj proizvod postali mi i naši lični podaci i često na to pristajemo. Ali, koliko su se pomerile granice dozvoljenog za prikupljanje podataka i da li one uopšte postoje? Deljenje informacija na mreži postalo je druga priroda, ali da li se ikada zapitamo šta se dešava sa tim informacijama? Primetno je da čak i ono što smatramo skrivenim ili prolaznim može lako završiti u pogrešnim rukama, kao što pokazuje slučaj britanca Aditja Verme. On je na društvenoj mreži Snapchat šaljivo poslao poruku o tome da će "razneti avion", misleći da je to privatna šala između prijatelja. Međutim, ova poruka je dovela do ozbiljnih posledica, uključujući angažovanje španskih borbenih aviona. Srećom, on nije optužen za terorizam u ovom slučaju, ali mu preti visoka novčana kazna zbog podizanja borbenih aviona koji su reagovali i ispratili avion Edvard Snouden, bivši saradnik američke Nacionalne bezbednosne agencije (NSA), već je upozorio na ovakve opasnosti, ističući kako tehnološki napredak često dolazi s visokom cenom gubitka privatnosti. Njegova otkrića o masovnom nadzoru pokazala su koliko duboko sežu koreni nadzora u digitalnom svetu. Iako je tehnologija donela brojne pogodnosti u našim životima, čini se da smo, možda i nesvesno, pristali na kompromise kada je u pitanju naša privatnost. Ovaj slučaj nas tera da se zapitamo o granicama koje smo spremni da postavimo u ime pogodnosti koje tehnologija pruža. U svetlu ovakvih incidenta, važno je ponovo proceniti kako pristupamo tehnologiji i privatnosti. Moramo da budemo svesni da kompanije kojima ne plaćamo usluge, kao što su Google, Facebook i druge, znaju o nama možda i više nego ljudi sa kojima živimo, a sve češće smo i žrtve sajber kriminala i prodaje naših ličnih podataka na dark web-u. Neki od saveta stručnjaka za zaštitu podataka idu od preporuka da se izbegavaju besplatni komercijalni softveri, kao i društvene mreže, korišćenje bezbednijih alternativa za sveprisutne usluge koje koristimo poput internet pretraživača (DuckDuckGo), pa čak do saveta da nikada na društvenim mrežama ne objavljujemo uživo fotografije, već da ih objavljujemo sa odreženim zakašnjenjem, kako bi veliki broj marketing servisa teže znao gde se tačno nalazimo. Da li smo kao društvo postali previše opušteni kada je u pitanju deljenje naših ličnih informacija?

28.11.2023. ·
2 min

Google protiv blokatora reklama

Google se drži plana za koji se misli da će napraviti velike probleme Chrome ekstenzijama sledeće godine. Popularan tip Chrome ekstenzija su ad blockeri, odnosno blokatori reklama, i za njih se smatra da će biti najviše pogođeni. O čemu se zapravo radi? Google je najavio da će ukinuti Manifest V2 u junu 2024. godine i preći na Manifest V3, koji će biti najnovija specifikacija za Chrome ekstenzije. Manifesti V2 i V3 su zapravo pravila koja developeri ekstenzija moraju da ispoštuju ako žele da njihove ekstenzije budu prihvaćene u Chrome Web Store. Manifest V2 je već zastario i Chrome Web Store više ne prihvata Manifest V2 ekstenzije, ali browseri ih i dalje mogu koristiti, za sada. Ovo je deo Google-ove strategije za povećanje prihoda od reklama. Kompanija Alphabet je u 2022. godini prihodovala 280 milijardi dolara, a 224 milijarde je bio prihod od reklama. Ono što je problem jeste da je YouTube doprineo sa samo 29 milijardi odnosno tek 11%, što je mali procenat jer moramo uzeti u obzir da je to druga najpopularnija platforma na internetu. Manje popularni od YouTube-a su Instagram i Facebook, a njihov prihod od reklama je značajno veći. Zanimljivo je da je FBI pre godinu dana preporučio korištenje ad blocker-a kao zaštitu od cyber kriminalaca koji koriste servise za reklamiranje da bi lažno predstavljali legitimna preduzeća i krali informacije od korisnika. Razlika između Manifesta V2 i Manifesta V3. Da bi razvili ekstenziju moramo imati manifest.json fajl. Kada pogledamo manifest.json fajl za uBlock možemo vidjeti da on koristi webRequest i webRequestBlocking API-je. Ovi API-ji omogućavaju ekstenziji da jednostavno presretne zahtev sa interneta i modifikuje ga tako da ne prikazuje reklame. Razlika u Manifestu V3 jeste da umesto ovih API-ja imamo chrome.declarativeNetRequest API koji ima mnogo veća ograničenja kad se radi o dinamičkom filtriranju sadržaja. Šta bi mogao biti epilog ove priče? Vrlo verovatno će se vremenom pojaviti sofisticiraniji ad blocker koji će biti u skladu sa Manifestom V3 ali je sigurno da će onda i Google pokušati da dodatno ograniči mogućnosti ad blocker-a i ekstenzija. Tekst pisali Aleksandar Lukač i Sergej Soldat.

09.11.2023. ·
3 min

Apple i Bing: Šta bi se desilo da je Microsoft prodao svoj pretraživač gigantu iz Kupertina?

Microsoft je oko 2020. godine razmatrao prodaju svog pretraživača Bing kompaniji Apple, prema izvorima upućenim u tu stvar. Dogovor bi značio da bi Bing zamenio Google kao podrazumevani pretraživač na iPhone, iPad i Mac uređajima. Međutim, pregovori nisu otišli dalje od razgovora između izvršnih direktora obe kompanije, Satje Nadele i Tima Kuka. Zašto je Microsoft hteo da proda Bing? Jedan od razloga je bila želja kompanije Microsoft da se fokusira na svoje druge poslovne segmente, kao što su cloud computing, veštačka inteligencija i gejming. Bing je bio gubitak za Microsoft, koji je ulagao milijarde dolara u njegov razvoj i promociju, ali nije uspeo da ostvari značajan udeo na tržištu pretraživanja. Prema podacima kompanije StatCounter, Bing je imao samo 2,7% globalnog udela na tržištu pretraživanja u septembru 2023. godine, dok je Google imao 91,5%. Zašto je Apple odbio da kupi Bing? Jedan od ključnih razloga je bio novac koji je Apple zarađivao od Google-a za to što je njegov pretraživač podrazumevana opcija na Apple-ovim uređajima. Prema izveštaju Bloomberga, Google je Apple-u plaćao između 4 i 7 milijardi dolara godišnje za tu privilegiju. Ovaj dogovor je bio predmet antimonopolskog suđenja između Google-a i američkog Ministarstva pravde, koje je ukazivalo na Google-ovu dominaciju na Apple-ovim uređajima kao dokaz da Google ima monopol na pretraživanje. Drugi razlog je bio kvalitet i sposobnosti Binga u poređenju sa Google-om. Eddy Cue, viši potpredsednik Apple-a zadužen za usluge, koji je sklopio dogovor sa Google-om, nedavno je rekao na sudu da je smatrao "Da niko nije ni približno dobar kao Google u pretraživanju, ni tada, ni sada". On je dodao da Apple nije koristio druge pretraživače jer nije postojala "validna alternativa". Šta bi se desilo da je Apple kupio Bing? To je pitanje koje možemo samo nagađati, ali možemo zamisliti neke moguće scenarije. Prvo, Apple bi verovatno promenio ime i dizajn Binga da bi se uklopio u svoj brend i ekosistem. Možda bi ga nazvao Apple Search ili Siri Search, i dao mu minimalistički i elegantni izgled. Drugo, Apple bi verovatno integrisao Bing sa svojim drugim uslugama, kao što su Siri, iCloud, Apple Maps, Apple News i Apple Music. To bi značilo da bi korisnici mogli da dobiju personalizovane i relevantne rezultate pretraživanja na osnovu svojih podataka i preferencija. Treće, Apple bi verovatno uložio više resursa u poboljšanje Binga i njegovih funkcija. Možda bi koristio svoju ekspertizu u veštačkoj inteligenciji i mašinskom učenju da napravi Bing pametnijim i bržim. Možda bi takođe dodao nove funkcije kao što su glasovno pretraživanje, prevod teksta i slika, i prepoznavanje objekata i lica. Kako bi se to odrazilo na tržište pretraživanja? To je takođe teško predvideti, ali možemo pretpostaviti da bi to imalo značajan uticaj. Prvo, to bi značilo da bi Google izgubio veliki deo svog prihoda i saobraćaja koji je dobijao od Apple-ovih uređaja. To bi moglo da oslabi Google-ovu poziciju i motiviše ga da poboljša svoj pretraživač i ponudi bolje uslove drugim partnerima. Drugo, to bi značilo da bi Bing dobio veliki podsticaj u popularnosti i kredibilitetu, jer bi bio podrazumevani pretraživač na milionima Apple-ovih uređaja. To bi moglo da privuče više korisnika i oglašivača, i poveća Bing-ov udeo na tržištu. Treće, to bi značilo da bi tržište pretraživanja postalo konkurentnije i raznovrsnije, jer bi bilo više opcija za korisnike i oglašivače. To bi moglo da podstakne inovacije i kvalitet u industriji pretraživanja. Apple i Bing su bili blizu dogovora oko 2020. godine, ali su ga odbacili zbog novca i kvaliteta. Interesantno bi bilo sada videti rezultate ove saradnje, kada Bing uspeva da uzme sve veći procenat tržišta zahvaljujući integraciji sa GPT 4.

11.10.2023. ·
2 min

Kako radi Shazam algoritam?

Svi smo čuli za Shazam, popularnu aplikaciju koja prepoznaje pesme samo na osnovu kratkog uzorka koji se najčešće snimi mikrofonom telefona. Ali kako tačno Shazam uspeva da identifikuje pesme tako brzo i precizno? Odgovor leži u njihovom jedinstvenom algoritmu poznatom kao fingerprinting ili otiskivanje. Otiskivanje (Fingerprinting) Kada se pesma dodaje u Shazam-ovu bazu podataka, algoritam kreira "otisak" te pesme. Ovaj otisak je jedinstvena reprezentacija audio podataka pesme. Algoritam identifikuje distinktne vrhove u spektrogramu pesme, koji je vizuelna reprezentacija frekvencija zvuka tokom vremena. Ovi vrhovi su ključni jer predstavljaju najprepoznatljivije delove pesme, čineći otisak robusnim čak i kada ima dosta pozadinske buke ili distorzije. Kroz ovaj proces, Shazam može da generiše kompaktan i efikasan otisak koji se lako upoređuje sa drugima u bazi podataka. Heširanje i skladištenje Heširanje je proces pretvaranja ulaznih podataka (u ovom slučaju vrhova iz spektrograma) u fiksnu nisku karaktera, koja obično ima oblik niza cifara. Ova niska karaktera se naziva heš vrednost ili heš kod. Ključna karakteristika heš funkcije jeste da čak i najmanja promena u ulaznim podacima rezultira potpuno drugačijom heš vrednošću. U kontekstu Shazam-a, svaki vrh se uparuje sa susednim vrhovima kako bi se kreirala jedinstvena heš vrednost. Ova jedinstvenost potiče od kombinacije frekvencijskih vrhova i njihovih relativnih pozicija u vremenskom spektru pesme. Zbog ove specifičnosti, čak i dva veoma slična audio zapisa će proizvesti različite heš kodove, čime se osigurava preciznost u prepoznavanju pesama. Upoređivanje Ove heš vrednosti, zajedno sa odgovarajućim vremenskim pomerajima, skladište se u Shazam-ovoj bazi podataka. Kada korisnik pokuša da identifikuje pesmu pomoću Shazam-a, aplikacija snima kratki audio uzorak i kreira otisak tog uzorka na isti način kao što je opisano gore. Algoritam zatim traži odgovarajuće heš vrednosti u svojoj bazi podataka. Zahvaljujući ovom algoritmu, Shazam može brzo i precizno da identifikuje pesme čak i u bučnim okruženjima i iz uzoraka lošeg kvaliteta.    

07.08.2023. ·
3 min

Uticaj zračenja na rad programa?

Bagovi, nepredviđeni edge-case scenariji, nedovoljni resursi za rad programa - samo su neki od problema koji mogu da utiču na rad našeg programa a za koje smo sami krivi. Ali šta da radimo ukoliko naš program pukne jer je svemir tako odlučio? Kako tehnologija nastavlja da napreduje, i kako se naše digitalne strukture postaju sve manje i preciznije, čestice zračenja koje dolazi iz svemira postaju sve veća pretnja. Jedna od najneočekivanijih posledica ovog fenomena je mogućnost da svemirsko zračenje može da "okrene" bitove računarske memorije, menjajući njihove vrednosti iz 0 u 1 ili obrnuto. Svemirsko zračenje se sastoji od visokoenergetskih čestica koje putuju kroz svemir gotovo brzinom svetlosti. Kada ove čestice pogode elektronske komponente, mogu izazvati niz problema. Najvažniji za našu diskusiju je fenomen poznat kao "Single Event Upset" (SEU). SEU se događa kada jedan visokoenergetski događaj utiče na operaciju digitalnog uređaja. U kontekstu računarske memorije, to može značiti da visokoenergetska čestica pogodi bit memorije, "okrećući" njegovu vrednost. Na primer, bit koji je bio postavljen na 0 može se promeniti u 1, ili obrnuto. Iako se ovaj događaj može činiti trivijalnim, posledice mogu biti značajne. Ako se, recimo, bit koji je izmenjen nalazi u kritičnom delu sistema, njegova promena može dovesti do niza nepredviđenih posledica, uključujući pad sistema ili nepredviđeno ponašanje. Industrije koje su visoko zavisne od digitalne tehnologije, poput svemirske industrije, telekomunikacija i finansijskih institucija, ulažu značajne resurse u razumevanje i suzbijanje ovog problema. Primena metoda poput izdržljivosti na greške (error resilience), redundantnih sistema i korekcije grešaka u kodu su postale uobičajena praksa u borbi protiv ovog fenomena. Letelica Mars Rover Spirit, koju je lansirala NASA, počela je svoju misiju na Marsu 2004. godine. Međutim, sredinom 2003. godine, dok je letelica još uvek bila na putu ka Marsu, iznenada je prekinula komunikaciju sa kontrolom misije na Zemlji. Komunikacija je bila prekinuta nekoliko dana i taj incident je pretio da uništi misiju i baci ne baš male pare kroz prozor. Inženjeri su započeli analizu kako bi otkrili šta se dogodilo. Pošto su isključili druge moguće uzroke, zaključili su da je problem bio izazvan Single Event Upset (SEU) događajem. Veruje se da je visokoenergetska čestica svemirskog zračenja pogodila memoriju rovera, promenivši vrednost jednog bita. Ova promena je dovela do niza nepredviđenih problema u operativnom sistemu rovera, što je na kraju rezultiralo prekidom komunikacije. NASA je uspela da ponovno uspostavi komunikaciju sa roverom i nakon što su otkriveni i ispravljeni problemi, misija je uspešno nastavljena. Ovaj incident je bio značajan ne samo zato što je pokazao stvarne posledice svemirskog zračenja na svemirske misije, već i zato što je ilustrovao važnost ugradnje otpornosti na greške u kritične računarske sisteme. Nakon ovog incidenta, NASA i druge svemirske agencije su preduzele dodatne korake da poboljšaju otpornost svojih svemirskih letelica na svemirsko zračenje. Poučeni ovim i drugim iskustivma, najveći data centri na svetu imaju posebne nivoe zaštite protiv SEU događaja, ali se oni i dalje (doduše veoma retko) mogu desiti baš bilo kada i na bilo kom uređaju - od nekih stvari se možda nikad u potpunosti nećemo moći zaštititi.  

16.06.2023. ·
3 min

WebAssembly - alternativa JavaScript-u

Ukoliko se do sada niste susreli sa WebAssembly-jem definitivno vredi da odvojite malo vremena i proučite šta sve ovaj alat može da ponudi. Ukratko, WebAssembly je nastao 2017. godine sa ciljem da se ponudi alternativa JavaScript-u (koji, iako je među najpopularnijim programskim jezicima, ima veoma izražene mane) prilikom pisanja frontend koda (koda koji se ne izvršava na serverima već na korisnikovoj mašini). Glavna razlika između WebAssembly-a i JavaScript-a je u tome što WebAssembly omogućava izvršavanje koda napisanog u drugim jezicima, kao što su C/C++ ili Rust, dok je JavaScript specifičan jezik za web i već se izvršava u pretraživačima (browser-ima). WebAssembly pruža veću brzinu izvršavanja i sigurnost, dok JavaScript nudi jednostavnost i široku podršku.   Od 2017. godine, kada je i nastao, nastalo je dosta alata koji omogućavaju da se kod pisan u drugim programskim jezicima umesto u običan asemblerski kod - kompajlira u WebAssembly kod, čime postaje dostupan za korišćenje iz pretraživača. Ljudima je, osim ideje da prave nove aplikacije i prevode ih u WebAssembly, palo na pamet da pokušaju da u njega prebace i neke postojeće programe - tako smo čak dobili i verzije nekih od ranije veoma popularnih video igrica koje možemo pokrenuti iz svog pretraživača (kao što su DOOM iz 1993. godine, Fallout 2, SimCity 2000 itd).  Koje su to prednosti koje WebAssembly nudi?  Efikasnost izvršavanja: WebAssembly je dizajniran da se izvršava brže od JavaScripta. Wasm kod se prevodi u binarni format koji se izvršava u virtualnoj mašini pretraživača. Ovaj binarni format je dizajniran da bude efikasan i brz za izvršavanje, omogućavajući optimizacije koje se mogu postići na niskom nivou.  Bliskost mašinskom jeziku: WebAssembly koristi mašinski jezik specifičan za virtualnu mašinu pregledača, što omogućava da se kod izvršava na nižem nivou od JavaScripta. To znači da se kompleksne operacije i algoritmi mogu izvršavati brže jer je pristup hardverskim resursima direktniji.   Kontrola memorije: WebAssembly omogućava programerima precizniju kontrolu nad memorijom u poređenju s JavaScript-om. Ovo je posebno korisno za aplikacije koje zahtevaju rad s velikim količinama podataka ili izvođenje zahtevnih algoritama. Precizna kontrola memorije omogućava efikasnije upravljanje podacima i izbegavanje nepotrebnih alokacija i dealokacija.  Primeri framework-ova koji omogućavaju jednostavan rad sa WebAssembly-jem:  Blazor: Blazor u suštini nudi prevođenje C# u WebAssembly, a kao i sam C# jezik, razvio ga je i održava ga Microsoft. Blazor nudi dvije glavne varijante: Blazor Server i Blazor WebAssembly. Blazor Server koristi SignalR za održavanje veze sa serverom i omogućava dinamičko ažuriranje korisničkog interfejsa, dok Blazor WebAssembly izvršava C# kod direktno u pregledaču, što omogućava offline funkcionalnost i nezavisnost od servera.  Rust sa Yew-om: Yew je Rust-ov frontend framework inspirisan React-om koji omogućava razvoj web aplikacija koristeći Rust jezik. Yew koristi WebAssembly za izvršavanje Rust koda u web pretraživaču. On se ističe po performansama, sigurnosti i Rust-ovoj filozofiji "zero-cost abstractions". Yew koristi virtualni DOM (Document Object Model) za efikasno ažuriranje korisničkog interfejsa samo u delovima koji su se promenili. Takođe nudi mogućnost razvoja po komponentama, rukovanja događajima i rad s asinhronim zahtevima.  U poređenju sa već poznatim JavaScript framework-ovima, Yew i Blazor imaju manji ekosistem, manje su prihvaćeni od strane inženjera i zahtevaju učenje novog jezika (Rust ili C#). Takođe, izvršavanje putem WebAssembly-a može imati neočekivane poteškoće u odnosu na JavaScript, jer mogu zahtevati dosta više koda da bi se neke jednostavne stvari uradile. 

29.05.2023. ·
2 min

Šta su “spatial” baze podataka i koja je njihova primena?

“Spatial” baze podataka su zasebni sistemi ili dodaci na postojeće baze podataka (poput PostgreSQL uz PostGIS, Oracle Spatial, Microsoft SQL Server sa dodatkom Spatial-a itd) koji su dizajnirani za rad sa geografskim podacima. Sa ovim podacima se srećemo svaki put kada nailazimo na veliki broj adresa, GPS koordinata, topografskih podataka, a same baze se vezuju za GIS (“Geografski informacioni sistem”) - tehnologijom za prikupljanje, analizu, interpretaciju i prezentovanje geografskih podataka. Šta je to toliko interesantno i specifično kod ove vrste baza podataka? Za razliku od klasičnih baza podataka, ove baze najčešće podatke čuvaju u formatu tačaka (Point), linija (LineString), poligona (Polygon) ili nekom “kolekcijom” ovih osnovnih tipova. Na primer, ako imate bazu podataka koja sadrži informacije o kućama u gradu, spatial baza podataka će omogućiti da se podaci o svakoj kući prikažu na karti, a zatim se mogu pretraživati prema lokaciji, ceni ili drugim karakteristikama. Kako funkcionišu ove baze? Spatial baze podataka omogućavaju pretragu i analizu geografskih podataka na različite načine, kao što su traženje objekata unutar određenog prostora, izračunavanje udaljenosti između objekata ili izračunavanje površine određene oblasti. To se postiže korišćenjem specijalizovanih SQL funkcija i operatora koji mogu da računaju udaljenost i preseke između geografskih oblasti, pronalaze sve objekte unutar zadatog objekta itd. Ove baze podataka dodaju i poseban vid indeksiranja geografskim podacima - spatial (prostorne) indekse. Spatial indeksi su bitni jer omogućavaju brzu pretragu baze podataka. Bez njih, pretraga velike količine geografskih podataka može da bude veoma spora i neefikasna. Prostorni indeksi su specijalizovane strukture podataka koje omogućavaju efikasan pristup prostornim podacima, smanjujući vreme potrebno za pretragu baze podataka. Postoje različite vrste prostornih indeksa, a neki od najčešće korišćenih u spatial bazama podataka su R-Tree, Quad-Tree i Grid-Index. Ovi indeksi organizuju objekte u bazi podataka tako da se mogu brzo pronaći objekti koji se nalaze unutar određenog prostornog opsega, čime se postiže brza i efikasna pretraga.