Goran Paulin 11.08.15

Prevruće je za programiranje. Zapravo... prevruće je za bilo što. A opet, složio bi se i Pompej - programirati se mora.

Pomoglo bi da funkcionira telepatski. Hladimo se u nekom plićaku i pritom, sasvim usputno, zamišljamo svoju aplikaciju koja će se bez dodatnih muka materijalizirati u iTunes Storeu. Postati hit i platiti nam ljetovanje. I zimovanje. I stambeni kredit. I Ferrari. I sve to prije no što se smežuramo.

Ali ne funkcionira telepatski. Od ideje do aplikacije puno je tipkanja. I hlađenja u vlastitom znoju. Pogotovo ako, kao i u svakom poslu, nemate pravi alat. A ako imate pravi alat? I dalje ne može telepatski. Ali... možda može bez tipkanja?

Vidi mama! Bez ruku!

Ne pretjerujmo, ruke će vam dobro doći. No, tako mi Ergije, obećajem da ovoga puta nećemo napisati ni liniju kôda!

Prošlo je već pola desetljeća od kako sam, razmišljajući na glas jesmo li ljudi ili programeri spomenuo Quartz Composer. Kako stvari stoje - čini se da su ljudi ipak brojčano prevladali, a jedino kvarcanje koje ih zanima je ono koje uključuje sunce ili solarij.

Posljedica toga je da Jabučnjak ne vrvi plodovima Quartz Composer avantura. Ali, hej - barem smo upoznali dobra mjesta za ljetovanje.

51. leteća eskadrila

Nedavno sam, u potrazi za malo vjetra, naišao na Smayinu oduševljenost EarthWindMapom i Yonkisovu ideju "da mu je to napraviti kao screensaver". Ne znam da li se dogodilo u međuvremenu, ali ne vidim razloga zašto se ne bi. Bez tipkanja, naravno.

Earth Null School Net
Ni daška u mojoj blizini

Nisam fan screensavera. Ne samo zato jer rade suprotno onome što im ime tvrdi da rade - kao, uostalom, i MacKeeper - već zato što se međusobno isključujemo. Kad se aktivira screensaver, nema me pred ekranom, a dok sam pred ekranom, ne aktivira se screensaver. Utoliko ne razumijem potrebu za cijelom industrijom screensavera koja je nastala od osamdesetih na ovamo.

Povijesno gledano, screensaver kojeg nam je podario (i krstio tim imenom) gospodin Norton Commander osobno (John Socha), bio je upravo ono što je tvrdio da je - screensaver. Ugasio bi ekran nakon tri minute neaktivnosti. Njegov jedini nedostatak bio je taj što je gasio ekran nakon tri minute neaktivnosti. Ako ste željeli ugasiti ekran nakon dvije ili čak četiri minute neaktivnosti morali ste imati ni manje ni više nego - Appleovu Lisu. Njezin screensaver bio je prvi koji je omogućio korisniku odabir nakon kojeg vremena će se ugasiti ekran. Godina je 1983., Wall Street doslovno proizvodi novac, ali razmislit ćete dvaput prije nego u ovo utučete 9.995 USD.

screensaver
Četiri minute i 9.995 USD kasnije

Sad vam se Sochove tri minute više ne čine tako lošom opcijom?

Digitalni LEGO

Na Macu postoje dva načina za napraviti screensaver. Prvi je u obliku aplikacije sa ekstenzijom .saver. Za to vam treba Xcode i podosta tipkanja. Ukratko: neće se dogoditi.

Xcode
Budimo realni - vidite li se u ovome?

Drugi način je u obliku Quartz "kompozicije", sa ekstenzijom .qtz. Za to vam treba samo Quartz Composer i malo "povlačenja kablova". Virtualnih, srećom. I utoliko, ako svladate najteži dio, a to je nabavljanje Quartz Composera, može se dogoditi.

Quartz Composer
Lijepog li dijagrama!

Ne zato jer ste genijalan programer već zato što je izrada screensavera s Quartz Composerom jednako komplicirana kao i slaganje kućice od LEGO kockica: trebat će vam neko vrijeme za prestati gurati kockice u usta i dokučiti da stvar funkcionira tako da jednu spojite s drugom, ali kad dođete do toga zasjenit ćete svojim umijećem i Boba Graditelja. Granica su samo raspoložive kockice.

Dakle, pričamo o izradi screensavera na Macu?

Ne, još je prevruće za to. Pričamo o vremenu prije ozonskih rupa, hladnom ratu i, već tada nadolazećem - vizualnom programiranju.

U šezdesetim godinama prošlog stoljeća alati za programiranje nisu bili puno napredniji nego u pedesetim godinama, a sve prije toga kao da je još uvijek pripadalo vremenu jedine Byronove zakonite kćeri.

BASIC je bio revolucija u međusobnom razumijevanju čovjeka i stroja. Njega su pak u sljedećoj dekadi prerasli jezici poput Pascala, C-a, Smalltalka i SQL-a, ali ni oni nisu zadovoljili rastuće apetite programera. Problemi koji su se pokušavali riješiti pomoću računala postajali su složeniji, programi kompleksniji i polako je rasla svijest da programi zapravo služe za, tko bi rekao - obradu podataka. To smo spoznali negdje u sedamdesetima, bacili sve karte na objektno programiranje i od toga se dalje nismo makli ma koliko se trudili: prevruće je.

Dobro ohlađeni mozgovi

Dok je temperatura nezaustavljivo rasla, većina je spas odlučila potražiti u bikinijima i bildanju na plažama tijekom dana, te na koturaljkama, ispod disco kugli, po noći.

Bildali su i oni s "pepeljarkama" - kao pravi geekovi, u klimatiziranim prostorijama, uživali su blagodati najrazličitijih kompajlera i s njima bildali svoje programe u što optimalniji kôd. Nerijetko bi se međusobno nalazili pokušavajući jedan drugome objasniti što i kako njihov program zapravo radi. Crtali su se dijagrami, objašnjenja su tekla u potocima, a onda se netko, hladne glave, zapitao: ako za objasniti kôd koristimo dijagrame, jer su jasniji od kôda - zašto uopće koristimo kôd? Bismo li mogli programirati... crtajući dijagrame?

Unutrašnji glas probio se na površinu - heretičko pitanje bilo je izgovoreno. Klime su prestale zujati, čak su i akne, na trenutak, prestale rasti. Nastao je potpuni muk.

.

.

.

"Pokušajmo", netko je konačno odvažno razbio tišinu. Godina je 1982. i screensaveri još ne postoje. Atarijeve ne brojimo.

Prototip na tri rijeke

Pokušaj se pretvorio u ozbiljno istraživanje nove paradigme programiranja - programiranje tijeka podataka. Paradigme koja će do danas, istovremeno, ostati u sjeni svih mainstream programerskih alata i potpuno nenametljivo i nepretenciozno prožeti i unaprijediti sav softver s kojim dođe u kontakt.

Ideju već znamo: dijagram postaje program. A ni objašnjenje nije puno složenije: u dijagramu podaci "teku" iz jedne u drugu operaciju, a operacije se izvršavaju u trenutku kad im svi potrebni podaci postanu dostupni. Za razliku od "klasičnog" programa, koji je linearan, dijagram (graf), imajući smjer kretanja podataka, može biti neograničeno razgranat i kao takav omogućiti paralelizaciju - izvršavanje više istovremenih operacija nad podacima, što rezultira i optimalnijim projektiranjem i korištenjem hardvera.

PERQ
Traži se donator za PEEK&POKE

Ideja se kuhala godinu dana pod imenom "Prograph" ("Programming in Graphics"), a već 1983. zaživio je prvi prototip. Razvijen je na Three Rivers PERQ grafičkoj radnoj stanici i, kao takav, imao je ozbiljan problem - mogao je postojati samo na grafičkoj radnoj stanici. Grafičko sučelje bilo je preduvjet da bi se uopće mogao "nacrtati" (a potom i "izvršiti") graf, a u tadašnjoj računalnoj populaciji pojavljivalo se u tragovima. I tako se Prograph skoro utopio prije no što je zaplivao.

Žena. Čekić.

Ali nije se utopio. Netko mu je ipak dobacio čekić. Unatoč općem mišljenju da je Mac vezan uz programiranje koliko i Ferrari uz prijevoz krumpira, Mac je odigrao presudnu ulogu ne samo u preživljavanju već i u inkubaciji cjelokupne paradigme vizualnog programiranja - do onog trenutka kada se dugogodišnje prototipiranje počelo prelijevati u konkretne softverske proizvode na drugim platformama - poput Maye i Houdinija koje su paradigmu vizualnog programiranja odvele u vrh vizualnog programiranja grafike, izbacivši pritom samo nazivno "vizualno programiranje" kako ne bi prestrašili umjetnike. Nemojte im reći da su upravo oni ti koji danas najviše "vizualno programiraju".

Prograph je 1985. godine preselio na Mac. Mac je imao dovoljno jaku grafiku za njega, a bio je već i dovoljno raširen. Iako Prograph nikada nije uspio potisnuti "staru školu" programera koji vole puno tipkanja, 1989. zaslužio je nagradu MacUsera za najbolji razvojni alat - oni koji do tada nisu čuli za njega, te godine svakako jesu.

Prograph
Konačno nešto razumljivo

No, kad se u pionirskim godinama razvoja neke paradigme susretnete s njom, ograničenost vlastite mašte često vam ne dopušta spoznati koje su zapravo mogućnosti toga s čim ste se upravo sreli. Tako je bilo i s Prographom. Ne može se pohvaliti činjenicom da su baš u njemu nastale neke ključne aplikacije koje će obilježiti Mac platformu. Sjećanja se više svode ne naizgled trivijalnosti poput "element koji se izvršava označen je drugom bojom" ili "postoji tooltip sa stanjem parametara u elementu". Ta sjećanja zapravo opisuju prvi vizualni debugging - mogućnost da u svakom trenutku vidite što i kako radi vaš program. Točnije: što se zbiva s vašim podacima.

Marten
Prograph, fosiliziran u Martenu

Prograph, uporno doživljavan kao prototip, preživio je zahvaljujući prvo entuzijastima koji su ga održali na životu korištenjem, a danas postoji kao dio Marten IDE-a i dostupan je za besplatan download svima koji žele iskusiti početke jedne velike ideje iz prve ruke.

Što vrijedi raditi, vrijedi raditi za novac

Ali kakva bi to velika ideja bila da je negdje neki Gordon Gekko ne bi poželio pretvoriti u novac? Prototip Prographa se s PERQ-a još nije ni preselio na Mac, a u Garaži je već sklopljen dogovor da će se revolucionirani Helix pojaviti kao jedan od 30 ključnih softverskih proizvoda koji će godinu kasnije popratiti bacanje čekića.

Ako se vizualno programiranje vrti oko obrade podataka postoji li plodnije tlo za njegovu implementaciju od baza podataka? Pustimo neizvjesnost Hitchcocku: ne postoji.

Helix, a kasnije i Double Helix, je (bio) ono što FileMaker pokušava biti danas: baza podataka za ne-programere. Razlika je u tome što će FileMaker od vas ipak napraviti programera, a Double Helix će vam dopustiti samo "crtanje grafa" - i to će vam (barem tih godina) biti dovoljno.

Osim po korištenju "grafa", Double Helix bio je pionir po mnogočemu - primjerice, bio je prva WYSIWYG relaciona baza uopće i prvi je (na osobnim računalima) imao podršku za BLOB tip podataka, kao i logiranje transakcija (koje omogućava sprječavanje koruptiranja baze).

Double Helix
Double Helix nekad i danas - neprepoznatljivo

Josephu Firmageu, poznatijem kao Fox Mulderu Silicijske doline, trebalo je pet godina za iskustvo Helixa prenijeti na vlastitu platformu za vizualno programiranje - Serius89. Prodavši je kasnije Novellu za 24 milijuna USD mogao se pohvaliti sa vizualnim programiranjem koje je konačno isprogramiralo ozbiljan novac. Novell je Serius89 prvo uozbiljio imenujući ga AppWare, a potom ga, kao i većinu svojih proizvoda, poslao u vječna lovišta. Firmage se pak posvetio prenošenju iskustava svog susreta s vanzemaljcima, ali pritom, na žalost, nismo saznali programiraju li oni tekstualno, vizualno ili nekako drugačije.

Serius89
Serius89 - vanzemaljska tehnologija?

Za Jobsa je bilo bitno da su Prograph, Double Helix i Serius89 omogućili Macu biti dio vizualne revolucije. Za Gekka i kompaniju je bilo bitno samo to da je Serius89 zaradio puno, puno više novca od Prographa i Double Helixa zajedno. A mi ostali možemo opetovano izvući pouku da je implementacija u pravilu uvijek vrijednija od same ideje - barem kada je novac mjerilo vrijednosti.

Imala majka dva sina

Nekima je pak mjerilo vrijednosti mogućnost zadovoljavanja vlastite znatiželje. Pa tako dok jedni vide primjenu vizualnog programiranja u vizualnom programiranju, a drugi u bazama podataka, treće cijeli koncept "elemenata koji operiraju nad podacima" podsjeća na nešto njima dobro poznato. Godina je ponovo 1983., a oni su National Instruments.

LabVIEW
Možemo li spaliti virtualni instrument?

Nakon trogodišnjeg razvoja inspiriranog Prographom, 1986., ponovo ekskluzivno za Mac, izlazi LabVIEW v1.0. Ovaj djedica preživio je do danas, a zadnja verzija, LabVIEW 2014, izašla je u kolovozu prošle godine. Ime je kratica za "Laboratory Virtual Instrument Engineering Workbench" i dobro opisuje sam proizvod: na raspolaganju su "virtualni instrumenti" koji se mogu međusobno povezivati. Koristi se za prikupljanje podataka, upravljanje instrumentima i industrijsku automatizaciju.

NXT-G
Pospajam još dva bloka i moj si, Megatrone!

Ako još nemate diplomu iz elektrotehnike, ali zato imate barem 10 godina i LEGO Mindstorms NXT, veselit će vas znati da je NXT-G (grafičko okruženje za NXT programiranje) bazirano upravo na LabVIEW-u - i zato možda već za koju godinu vaš neugledni Lego robotić odraste u Bumblebeeja.

Mračna strana

Prograph, Double Helix, Serius89, LabVIEW... najvjerojatnije im je zajedničko to što za njih do sada niste čuli. Ali za Microsoftov Visual Studio vjerojatno jeste. I zdrav razum vam kaže, pogotovo ako ga ne koristite (što ujedno i svjedoči o zdravom razumu), da to mora imati veze s ovom pričom. Da pokratimo i ovu dvojbu - nema. Visual Studio nije namijenjen vizualnom programiranju. Namijenjen je grafičkoj izgradnji sučelja aplikacija i, po definiciji, "rapidnom razvoju aplikacija" (kao i svaki današnji IDE). Ali vizualnom programiranju nije.

Microsoft još od 1991. i Visual Basica (koji, kao i većina Microsoftovih Visual jezika, služi za tekstualno, a ne grafičko programiranje) njeguje ovu simpatičnu verbalnu zabunu, a njegovi marketinški gurui pokušali su je razriješiti tako što su Microsoftov jezik za vizualno programiranje maštovito nazvali Microsoft Visual Programming Language.

Kako god, znajmo da alat za vizualno programiranje postoji i u Microsoftovoj ergeli, ali ne osjećajmo se uskraćenim za njega.

Microsoft Visual Programming Language
Susjedova trava nije zelenija

Nije Microsoft jedini koji pridonosi zabuni - u zadnje vrijeme često se spominje Scratch, kao "vizualno programiranje za djecu". Za razliku od Microsoftovih zabuna, ova je dostupna i na Macu i besplatna je, ali ipak nije predstavnik vizualnog programiranja. U Scratchu se programira sekvencijalno, a to što se pritom koriste predefinirani grafički elementi koji "glume" naredbe programskog jezika, ne čini ga automatski jezikom za vizualno programiranje. Ukratko: prekrižimo ga.

Koji Quartz...?

Ako niste koristili Everpix za uređivanje svoje baze fotografija - ni nećete. Propao je nakon što nije mogao podmiriti račun za Amazonove servere, a skupa s njim rasplinuo se i Latourov san o savršenoj organzaciji (pre)velikog broja fotografija koje vam zapravo ni ne trebaju, ali eto, skladištite ih jer možete. Prije nego je suosnovao Everpix, Pierre-Olivier Latour, kao jedan od fanova Prograph ideje, marljivo je programirao PixelShox Studio. I ne, pritom nije koristio alate za vizualno programiranje. Ali stvarao je jedan. Onaj bez kojeg Mac danas ne bio tu gdje je: Quartz Composer.

Quartz Composer ikona
Tipkanje je za bezjake. Pravi programeri koriste čarobni štapić.

Apple do 2003. godine nije u svom vlasništvu imao srodne alate. S NeXT-a je prenešena, i do tada već dobro usvojena, paradigma objektnog programiranja, ali vizualno programiranje umirovljeno je s tuđim aplikacijama: Prographom i Double Helixom.

2004. godine PixelShox, preimenovan u Quartz Composer, postaje dio OS X-a, a Latour, do svog odlaska iz Applea, vodi razvojni tim kojemu je cilj stvoriti od njega standard za animaciju i efekte na nivou operativnog sustava. S obzirom da je Quartz Composer postao jedan od ključnih alata u razvoju Final Cut Pro, iDVD, iMovie, iPhoto, iChat, PhotoBooth, Apple TV... da nabrojimo samo neke, možemo zaključiti da je standardizacija uspjela. Štoviše, s vremenom su Quartz Composer preuzeli i drugi "odjeli", poput onog zaduženog za razvoj iPhonea i, kasnije, iPada, za potrebe prototipiranja korisničkog sučelja. U konačnici ga je, za istu namjenu, počeo koristiti i Facebook, nadogradivši ga Origamijem.

Form
Polubrat Form

Unatoč svemu tome, Quartz Composer nije doživio veći upgrade od 2011. godine. I dok jedni misle da je dao sve što je mogao dati u svojoj jednostavnosti uparenoj s upotrebljivošću, drugi su ga, poput Googlea sa svojim Google Formom (alat za prototipiranje, dostupan i u App Storeu), odlučili "ponovo izmisliti".

Beskonačna petlja

Quartz Composer (QC) je vizualni programski jezik. Dio je Xcode razvojne okoline (iako ga je zadnjih godina potrebno zasebno instalirati) i služi za obradu i renderiranje (primarno) grafičkih podataka.

Kada ga pokrenete ponudit će vam jedan od predložaka pomoću kojih možete kreirati osnovnu "kompoziciju", animaciju, tranziciju, filter slike, vizualizator glazbe, RSS vizualizator, screensaver ili filter 3D geometrije. Većina tih pojmova vam je možda strana iako ih svakodnevno susrećete na računalu. Ako koristite programe za obradu videa, prijelazi (tranzicije) između kadrova nisu vam nepoznanica. Photoshop i njemu slični programi za obradu slika obiluju filterima slike, a vjerojatno ste barem jednom u iTunesu pokrenuli vizualizator i uživali u psihodeliji.

QC Templates
Izaberi jedan predložak, sigurno ćeš pogriješiti!

Ako vas je sve to skupa uspješno zaobišlo, moguće da nepomično sjedite pred računalom ne radeći ništa. Dakle, vi ste državni službenik. U tom slučaju nije vas mogao zaobići barem screensaver. Tako da od Quartz Composera ne možete pobjeći, pokrenuli ga ili ne.

QC Canvas
Jel' sve jasno?

Nakon što odaberete željeni predložak, vidljiv je njegov canvas, kao približeni milimetarski papir, i na njemu će vas dočekati barem jedan "patch": Clear, koji se, ako je omogućen (a standardno je), brine "obrisati ploču" prilikom svakog osvježavanja ekrana. Da biste vidjeli "ploču" potrebno je uključiti Viewer. "Ploča" služi za prikaz rezultata našeg procesiranja, a u praksi predstavlja pravokutno područje unutar neke aplikacije.

QC Viewer
Pogled na Nirvanu

Quartz Composer program se izvršava kad god je Viewer prikazan i u Play modu. Nema tradicionalni "početak" ni "kraj" - izvršava se beskonačno dugo, odnosno dok mu ne kažemo da se prestane izvršavati. Utoliko ga nije potrebno pokretati (a još manje kompajlirati/bildati), a sve što programiramo zapravo programiramo dok se program izvršava - "na živo". Za razliku od toga, u tradicionalnom (sekvencijalnom) programiranju otipkamo jednu ili više naredbi, pokrenemo program, dobijemo rezultat (ako smo ga zatražili) i to uglavnom ponavljamo dok se ne izgubimo u vlastitom kodu. Onda pustimo druge da nastave.

Zdravo svijete!

Ukoliko želimo odraditi klasični "Hello World!" primjer, moramo se zapitati što nam je zapravo cilj. Cilj nam je prikazati podatak, a podatak je "Hello World!". U BASIC-u bismo napisali (već osjećam umor!) nešto tipa PRINT "Hello World!", pokrenuli sa RUN i nadali se najboljem. Pritom nas ne bi brinula ni činjenica da su odavno prošla vremena kada je PRINT imao zadaću slati "Hello World!" na printer pa je utoliko imao više smisla nego danas. Danas je tu - po navici. Printamo natpis na ekran, o-kej.

Ali to je nekako... pasivno razmišljanje. Ono: isprintamo ga i tamo stoji. Sama ideja da se nekud pokrene u startu zvuči komplicirano jer, hej, pa tek smo ga isprintali. Neka odmori malo.

S obzirom da nam printer ne treba, nećemo ništa printati. Ono što nam treba je "nešto" na što možemo dodati naš natpis. Zamislimo da smo na ulici. I da želimo svijetu obznaniti "Hello World!". Bi li nam palo na pamet "isprintati ga"? Nekome možda i bi - dijeljenje letaka je još uvijek popularan način prijenosa informacija. Ali gle onaj prostor za oglašavanje, zovimo ga "Billboard" - nije li on, konceptualno, namijenjen takvoj vrsti objava? Možda je u stvarnom životu skuplji od isprintanog letka, ali u Quartz Composeru je - besplatan. Dovucimo, iz Librarya, jedan Billboard patch da Clear ne bude usamljen i gledajmo kako se i dalje ne događa ništa - jer na billboardu nema ničega.

QC Library
Molimo isključite mobitele i poštujete tišinu

Billboard donekle sliči na Clear. S lijeve strane ima nekakve "točke" i kraj njih natpise poput X Position, Y Position, Rotation, Image... Ako znamo da je billboard u stanju prikazati ono što mu kažemo da prikaže, što nedostaje? Podatak! Pa, generirajmo ga. Za razliku od Billboarda koji je u Libraryu smještan među rendererima, "Image With String" je smješten među generatorima. Kao što mu ime kaže, od stringa (a to je u našem slučaju "Hello World!") kreirat će sliku koju ćemo potom nekako proslijediti Billboardu, a on će obaviti jedini posao koji zna obavljati - prikazati je.

Za razliku od Clear i Billboard patheva, Image With String osim lijevih ima i desne "točke" i natpise. Kliknemo li na njega, u Patch Inspectoru možemo vidjeti da je String već postavljen na "Hello World!" - što nam omogućava da doista ništa ne utipkamo. Zadan je čak i font kojim će biti ispisan. Ali i dalje ništa ne vidimo.

Hello World?
Klik. Klik. Po-vez. Hello World?

Obratimo li pažnju na desni stupac, uočit ćemo "Image" i pripadnu mu "točku". Točke su zapravo portovi - "utičnice" za virtualne kablove. I to tako da su ulazne smještene s lijeve strane, a izlazne s desne. Kliknemo li na Image u "Image With String" i, držeći kliknuto, povučemo na Image u "Billboard" patchu, spojili smo izlaz iz jednoga s ulazom drugoga. Drugim riječima, slika, koju iz teksta (stringa) "Hello World!" generira Image With String, biti će prosljeđena Billboardu, a ovaj će je, pri svakom iscrtavanju ekrana, iznova prikazati.

Hello World!
Hello World!

Upravo ta činjenica, da se prikaz događa pri svakom iscrtavanju ekrana iznova, omogućava nam da dodamo u kompoziciju nešto što će kontinuirano generirati novu poziciju ili rotaciju billboarda i tako animirati natpis. Jedan od konkurenata je patch generator vala (Wave Generator) čiji rezultat (Result) možemo spojiti s, recimo, rotacijom (Rotation) billboarda i na taj način "ljuljati" natpis. Ako nam ljuljanje djeluje preblago, možemo povećati amplitudu na, recimo, 42.

Generator vala
Klik. Po-vez.

To što smo dobili možemo snimiti kao .qtz datoteku i kao takvu playati u QuickTime Playeru (ili iz njega eksportirati kao renderiranu animaciju), a možemo ubaciti i u "Screen Saver" folder te koristiti kao screensaver.

Hello World u pokretu
Nakon 3 minute netremičnog gledanja u natpis koji ste upravo animirali, primit ćete poruku vanzemaljske civilizacije.
Ili će se uključiti screensaver.

Dakle, ipak pričamo o izradi scrensavera na Macu?

Pa ono... ako baš moramo. U prethodnom primjeru došli smo u dva koraka, iz "Hello World!" preko animiranog "Hello World!", do screensavera. Ne posebno zabavnog, ali nečijeg prvog i za pamćenje.

Patchevi u Libraryu podijeljeni su u različite namjene, i svaki dolazi s opisom što i kako radi. Korištenje se svodi na to da jednog spojimo s drugim (ili s njih N) i u Vieweru pratimo rezultat. Polovica zabave je istražiti što uopće radi koji patch i kako ga iskoristiti na najpametniji ili najzabavniji način. Druga polovica zabave je nešto konkretno s njima napraviti kada shvatimo koliko je zapravo jednostavno - i ne prlja ruke.

Pokušajte razmišljati u konktekstu "ulaza" i "izlaza". Patch služi za obradu podatka koji kroz njega prolazi, a podatak doista može biti bilo što. Primjerice, podatak može biti slika s kamere ugrađene u vaš Mac. Quartz Composer na nju gleda kao na seriju slika koje, u jednakim intervalima, ulaze u obradu. Ukoliko ih obrađuje patch zadužen za pretvaranje slike u ASCII (i da, doista postoji među osnovnim patchevima), dobit ćete prikaz slike koju vidi kamera u ASCII artu. Ako vam ni to nije dovoljno zabavno, sjetite se da Mac može i "čuti" što radite. Nema potrebe komplicirati s razumijevanjem onoga što čuje, ali već ako provjerite jačinu ulaznog zvuka i spojite je s, primjerice, veličinom slova kojom je prikazan ASCII art, pljeskanje rukama ili bilo koja druga "buka" može privremeno (dok se čuje) distorzirati vaš ASCII art povećavši mu font, a sve skupa može rezultirati screensaverom koji prikazuje ASCII art i još pritom reagira na zvuk. Bez tipkanja i za par minuta. Najbliže programerskoj telepatiji ikad.

Zaustavite Zemlju

A onaj vjetar s početka priče? EarthWindMap? Što da ne. Kada prerastete osnovne patcheve, postat ćete svjesni da ih je pun Internet.

Projekt "earth" koji je evoluirao u http://earth.nullschool.net inspirirao je i Randalla Maasa pa je, da mi ne bismo morali, napisao (u ne-vizualnom alatu) nekoliko vlastitih patcheva - među njima su najvažniji oni koji čitaju podatke (u ovom slučaju o vjetru) iz JSON datoteke i generiraju (animiranu) teksturu kretanja vjetrova koja se potom aplicira na rotirajuću kuglu. Sve to dostupno je na GitHubu (QCAnimateVectorField i QC-Utilities), a ako niste vični kompajliranju (a i "popravljanju" koda jer ovaj, iako je uredno radio pod 10.9, ne radi out-of-the-box na 10.10), možete koristiti ove u privitku tako da ih smjestite u ~/Library/Graphics/Quartz Composer Plug-Ins/.

Mid Demo
Eto i vjetra!

Randallov "Mid Demo" (iz QCAnimateVectorField) na tragu je EarthWindMap - zamjenite li teksturu Zemlje s nekom hi-tech izgledajućom verzijom i udaljite li malo kuglu, nakon što snimite .qtz imajte na umu da ga možete, kao i svaki screensaver, koristiti kao animirani backdrop pa tako možete uživati u "screensaveru" i dok radite nešto pametno za računalom. Hoće li vas to usporavati u radu? Samo utoliko što će vam odvlačiti pažnju - ali to je već vaš problem, a ne vašeg računala.

Mid demo ispod haube
Ispod haube vjetrogeneratora

Najteži dio? Ako ga već nemate instaliranog na svom računalu, uvjerljivo najteži dio je doći do samog Quartz Composera. Za to je trenutno potrebno registrirati se (ne brinite, besplatno je) kao Apple developer i skinuti "Graphics Tools for Xcode" - među njima je i Quartz Composer.

Interaktivna multimedija

Jednom kada prerastete Quartz Composer veselit će vas znati da možete početi koristiti i besplatni Pure Data ili komercijalne Max i Vuo alternative. Za razliku od QC oni su i dalje u aktivnom razvoju, donijeli su razna poboljšanja i neke specifične novosti, ali svi dijele jednostavnost paradigme vizualnog programiranja: korištenje je svedeno na međusobno spajanje elemenata koji procesiraju ulazne podatke - i to je jedino predznanje koje vam je potrebno za koristiti ih.

QC i spomenuti mu sljedbenici posebno su omiljeni u VJ populaciji - softveri poput VDMX koriste QC kompozicije kao gradivne elemente vizualizacija što pak znači da ih VJ-i sami mogu kreirati i međusobno biti originalni. Jer vizualizatori nisu ništa drugo no "screensaveri" koji reagiraju na zvuk - a zvuk je, bez obzira dolazi li preko mikrofona, iz nekog playera ili kroz MIDI, samo jedan od ulaznih podataka.

Shake it, baby!

Dok programi za obradu slike i izradu ilustracija tek razmišljaju kako usvojiti i implementirati ideju vizualnog programiranja, softveri za compositing odavno su to dokučili, a jedan od rijetkih koji, na štetu svojih korisnika, i dalje pruža otpor je After Effects. Appleov Shake (umirovljen 2009. godine) bio je jedan od onih čija je arhitektura počivala na međusobno spojenim "nodovima". Nodovi su što i QC patchevi - svaki je specijaliziran za samo jedan konkretan zadatak uz mogućnost ulaza i izlaza (obrađenih) podataka.

Apple Shake
Shake od jabuke?

Iako Shake više nije sa nama, njegovu nodalnu filozofiju itekako prakticira The Foundryev Nuke, a s očekivanim skorašnjim dolaskom Fusiona na OS X, vjerojatno će se i Adobe zapitati dokle After Effects može forsirati svoj "retro" pristup. Tko zna - možda se, kad Adobe napokon dokuči kako Aftere uvesti u 21. stoljeće, problem implementacije vizualnog programiranja u Photoshop i Illustrator riješi preko noći.

Kada bismo uklonili korisnička sučelja Maye i Houdinija opterećena zastrašujućim gomilama opcija, ostao bi nam samo graf međusobno spojenih elemenata koji grade svaki detalj 3D scene. Dok se Maya godinama trudila "skrivati" tu svoju tajnu, Houdini se njome busao o prsa i zapravo tjerao korisnika da kreira graf i bude itekako svjestan njegovog postojanja - jer upravo u grafu, njegovoj strukturi i mogućnosti da je korisnik prekraja prema svojim potrebama leži Houdinijeva magija.

Houdini
Ovo je zapravo krzneni torus

Sramežljiva Maya pokazivala je svoje grafove samo unutar nekoliko vlastitih editora (Hypergraph, za prikaz konstrukcije scene, i Hypershade, za prikaz konstrukcije materijala), a nakon što su drugi softveri popularizirali kreiranje shadera vizualnim programiranjem požurila je i sama uvesti ShaderFX, kao još jedan nodalni editor. Istovremeno, Allegorithmic je sa svojim Substance Designerom dokazao kako se vizualno programiranje može primijeniti na teksturiranje 3D objekata i u rekordnom roku postao je industrijski standard zahvaljujući kojemu se teksture više ne crtaju već se vizualno programiraju.

Unityev Modrić

A hardcore programiranje? Ima li u njemu prostora za isključivo vizualno programiranje? Čini se da ima. Unatoč činjenici da je Unity jednostavan (i dovoljno "vizualan") sam po sebi, nekima ni to nije bilo dovoljno pa su odlučili elminirati iz njega i ono malo programiranja/skriptanja koje je često sasvim dovoljno za dogurati igru do iTunes Storea.

Inspirirani Unrealovim Kismetom, nastali su alati poput Antares Universe, PlayMaker i uScript - neki više, drugi manje prilagođeni programerima, a uvjerljivo najveću popularnost među njima stekao je PlayMaker - fokusiran na ne-programere.

PlayMaker
Fantazista kojeg ćete poželjeti uvesti u igru

PlayMaker, koji je po svojoj prirodi zapravo ono što se naziva "konačni automat" (Finite State Machine), omogućava vizualno programiranje logike igre - njegova "kutija s kockicama" obuhvaća gotovo sve mogućnosti samog Unitya, ali i brojnih popularnih pluginova koje je također moguće koristiti kao elemente grafa. Ako vas je do sada pomisao na "Morao bih programirati, a ne znam i ne da mi se!" držala podalje od vaše prve hit-igre u iTunes Storeu - ne vrijedi više ni ta isprika.

Moć navike

Zašto onda vizualno programiranje nije popularnije? Vjerojatno zato što je između dobre ideje i dovoljno dobre izvedbe u njegovom slučaju bio jako dug put. U vrijeme kada je osmišljeno, grafička korisnička sučelja bila su iznimka, a ne pravilo. Kada su se konačno pojavila bila su troma i nespretna. Danas, 30 godina od kako su, upravo s Macom, ušla u široku upotrebu još su uvijek ograničena na razne načine - između ostalog i svojom dvodimenzionalnošću.

Osim toga, tu je i naša urođena tvrdoglavost - teško se prilagođavamo novim idejama, a još rijeđe smo spremni usvojiti nove načine razmišljanja i djelovanja. Zato programeri i dalje tipkaju.

Srećom, dolaze neki novi, nestrpljiviji klinci željni rezultata sad i odmah, neopterećeni starim navikama. Kao što danas pisanje rukom postaje raritet tako i njima ideja kodiranja, bjesomučnog tipkanja prepunog sintaktičkih pogrešaka, postaje strana. Pritom rade isto što i mi - programiraju. I doista koriste mozak, ne kopipejstaju. Osmišljavaju algoritme i ilustriraju ih dijagramima. Razlika između njih i nas je u tome što oni nemaju problem prihvatiti činjenicu da njihov dijagram JEST program i da će odraditi upravo ono što su "nacrtali".

A mi, staroškolci? Možemo li "nacrtati" barem vlastiti screensaver?

 

Komentari  

smayoo
+1 11-08-2015 | 21:18
Sjajan članak, Đipi, hvala! :)
Rado bi se nadovezao na LabView i Lego Mindstorm NXT koje si spomenuo. Da, autori LabViewa uvijek naglašavaju da njihov alat može poslužiti industrijskoj automatizaciji, ali to je čisto u domeni teorije. :) No, istina je da se najveći dio programiranja DDC (Direct Digital Controller) uređaja u zgradama, PLC (Programmable Logic Controller) uređaja u industriji, a pogotovo DCS (Distributed Control System) mainframeova u energetskim, petrokemijskim i farmaceutskim postrojenjima zaista događa grafički. Rado bi ovdje ubacio i ilustracije vlastitih programa iz ovog područja, ali u komentaru na članak ne može se dodavati slike. Ili može? Da probam...
Citiraj
smayoo
11-08-2015 | 21:37
Ne može, nažalost... :(
Evo, onda ovako, kao link.

Ovo je primjer grafičkog programa u tzv. "FBD" (Functional Block Diagram) jeziku za tzv. programabilni relej Zelio Logic (namijenjen malim i jednostavnim zadaćama uglavnom kućne automatike):
https://dl.dropboxusercontent.com/u/4553568/jabucnjak/ZelioFBD.png

FBD se kao jezik može koristiti i na PLC klasi uređaja, ali nije uobičajeno. PLCi se najčešće programiraju tzv. "Ladder" grafičkim jezikom koji je zamišljen tako da nalikuje na starinske tzv. "relejne sheme" (eng. ladder logic) kako bi ga lako i brzo savladali električari starog kova. Primjer nekog izvornog komadića ladder programa mi trenutno nije pri ruci, ali puno ih ima po netu pa evo primjera s plcmanual.com:

http://www.plcmanual.com/wp-content/uploads/2012/04/3.jpg

Kontroleri sustava grijanja i rashlade po zgradama, tzv. DDC programiraju se uglavnom jezikom koji više sliči FBD-u, to jest i je neka inačica FBD-a. Npr. ovako nekako (izvor: distech.pl):

http://www.distech.pl/tl_files/przeglad_oferty/BACnet_LONWORKS/EC-gfxProgramBETA.jpg

A i programiranje DCS sustava je opet u svojevrsnom FBD-u, samo što su programi znatno kompleksniji, tim više što se izvode na multiprocesorsk im sustavima pa se potpuno gubi dodir s time što se izvodi kad (i gdje) :).
Ovo je okruženje u koje sam bio do ušiju uronjen prvih osam godina svog inženjerskog staža, imam na tone (preciznije rečeno - na tisuće grafičkih stranica) "source" programa, ali, nažalost, softver pomoću kojeg se izrađuje i prikazuje mi je nedostupan (tj. softver imam, ali dongle ne... :) ), a "publish as PDF" je u ono vrijeme bio tek san... :( No, kad govorimo o slici kao primjeru, prosječnom čitatelju ionako ne bi bilo vidljive razlike u odnosu na prethodne primjere.
Citiraj
smayoo
11-08-2015 | 21:42
Dakle, da odgovorim na tvoje pitanje - možemo! :)
Barem kod nas automatičara, 75% sveg programiranja i jest grafičko. U mom osobnom slučaju, ako promatram samo ono programiranje za koje sam bio konkretno plaćen, svakako je više od pola programiranja bilo - grafičko.
Ali grafičko programiranje itekako zahtijeva temeljna znanja i razumijevanje matematike i apstraktnih modela, čak više nego klasično proceduralno. Jedino čega te lišava je nužnost učenja i navikavanja na određenu sintaksu nekog od tekstualnih jezika.
Citiraj
Djipi
12-08-2015 | 15:10
Slažem se da zahtijeva ista temeljna znanja, ali istovremeno olakšava "iskustveno" doći do njih preko pokušaja i pogrešaka, uz brzo vidljive rezultate. Naglasak na potonjem.

Omogućava objasniti sebi uzrok i posljedicu (s vrlo malo elemenata koje je potrebno svladati) pa tako i pohvatati logiku koja stoji iza svega toga ("programiranja ") te, jednom naučenu (ili barem priučenu), primjenjivati dalje u praksi, za rješavanje konkretnijih problema ili u svrhu čiste zabave (barem onima koje će zabaviti izrada vlastitih screensavera).

Što se pak samih screensavera tiče, nadam se da tvoj odgovor na moje pitanje iz teksta nije hipotetski već da ćemo vidjeti i pokoji screensaver profesionalnog automatičara. :)
Citiraj
smayoo
12-08-2015 | 16:13
Argh... :) Jedino ako ukinem spavanje i subotom pa ostavim samo ono srijedom. :o)
Citiraj
MacSlavko
13-08-2015 | 00:41
Hmm... A zašto samo Smayoo i Djipi pričaju o ovome, a mi ostali samo blejimo?
:-)
Citiraj
smayoo
13-08-2015 | 18:59
Čuj, onoj wannabe programerki je ovo predug tekst za čitati. :o) Trebao je Đipi napraviti YT video. Ali ne dulji od 20-30 sekundi.
Citiraj
ping
14-08-2015 | 15:00
Meni je članak odličan samo o programiranju ne znam ništa. Presretan sam kad u Filemakeru povučem relaciju koja mi omogućava prikaz izbac liste traženih dijelova proizvoda.
Citiraj
drlovric
14-08-2015 | 19:55
Bravo za tekst. Iako samo miljama daleko od teme. Srecom :)

Programiranje nije nauka, po meni je to vise filozofija zivota :) Moras znati razmisljati kao programer, a svaka sintaksa ili software se lako nauci.

Zato su mi smijesni ljudi koji bi da, bez ikakvog predznanja, naprave "samo" neku igru ili app za App Store, nista komplicirano :)
Citiraj
dpasaric
15-08-2015 | 23:58
Nove generacije traže i novi pristup u tome kako ih zainteresirati za programiranje. Ništa čudno u današnjem sve bržem svijetu prepunom informacija i "već je to netko napravio" rješenja. Prije u Hrvatskoj nije bilo niti moguće kupiti Lego Mindstormse, a sada izgleda da ih ima, ako ništa u onoj specijalizirano j trgovini u Zagrebu. To mi se čini kao odličan put za učenje novih generacija klinaca automatizaciji, robotizaciji, tj. zapravo vrlo praktičnom programiranju. Uz ovakve vizualne alate i vrlo opipljive rezultate uz pomoć Lego robota vjerujem da će nove generacije zavoljeti programiranje, ne ono "staroškolsko", već ovo primjereno 21. stoljeću. A onda smo korak od toga da takav čovjek programira proizvodnu liniju u kakvoj tvornici - ili ako ima sreće piše softver za kakav lunarni rover i slične "drangulije" koje vuku civilizaciju naprijed.
Citiraj
drlovric
+1 17-08-2015 | 11:52
Bravo Davore za LEGO. Gledao sam bas neki dan da kupim LEGO MINDSTORMS EV3, ali $350 nije malo za igracku, pa sam prvo pokazao kcerki website da vidim reakciju.

Svidja joj se koncept, ali kaze nisu ti roboti za djevojcice... Nekako su pregrubi.

Tako da cemo mi nastaviti sa zajednickim Arduino projektima :)
Citiraj
smayoo
17-08-2015 | 15:38
Nije to ista razina. Arduino je sjajna platforma za učenje i hobi, za nekog tko je već razvio sposobnost apstraktnog razmišljanja i predočavanja. Lego Mindstorm je jedna stepenica ranije. Moji studenti na vježbama iz Upravljanja imaju jednu vježbu s Mindstormom i jednu-dvije s Arduinom (i jednu s Moxom, i jednu sa Simatic PLCom). Vrlo je uočljivo upravo na toj vježbi s Mindstormom kolika je razlika - nju kuže svi od prve, a ove ostale sve manje i manje njih.

$350 nije malo za igračku općenito, ali je vrlo jeftino za igračku koja je do te mjere poučna i motivativna. Ključna stvar je u tome što dijete mora imati afinitet prema tome. Ja sam jedno ljeto donio Mindstorm i stavio ga svom sinu na stol. Nije ga zanimalo čak niti toliko da instalira softver. Jbg. Nije štof za inženjera... :)

Jasno, i uzrast je bitan. Ne znam koliko ti godina ima kćer, ali, po mom sudu, ako je talentirana u tom smjeru, 10-12 godina je primjerena dob za početi.
Citiraj
HardcoreMAC
18-08-2015 | 06:46
Za mene, telca u svemu ovome, clanak je sjajan i Velo poucan.
Vise ovakvih clanaka!
Citiraj
dpasaric
+2 19-08-2015 | 23:04
Evo, nećete vjerovati, ali danas sam par sati pričao s jednim dečkićem starim 9 godina. Počeo je s pitanjima o Urban Jungle, da bi me zatim pitao hoćemo li za Urban Jungle 2 koristiti Unity, pa koliko košta licenca, kako se postavljaju collideri(!) jer da on radi svoju igru u tome a modele importira iz Cineme 4D, ali ima problema s tim! :) Onda me pitao koje mu alate mogu preporučiti za drag&drop izradu weba, koji su najbolji tutoriali za JavaScript i Unity, što u HTML-u znači ovaj ili onaj kod, je li bolji iOS ili Android... ostao sam zatečen jer su sva pitanja bila potpuno suvisla i vidjelo se da dijete razumije čemu što služi. Vrhunac mi je bio kada me pitao kako je Apple dopustio da se u AppStoreu nađe aplikacija "I am rich" kada ona ne služi ničem pametnom. Pitao sam ga odakle mu svo to znanje jer mu roditelji nisu uopće informatički nastrojeni, pa kaže: "Mene to zanima i sve sam našao u tutorialima na webu". Dijete od devet godina. Mislim da je budući DIR-ovac! :) No, poanta je da vizualno klinci vrlo brzo povežu i vrlo kompleksne stvari i na tome grade svoje znanje i iskustvo, a u tim godinama su poput spužve, sve upijaju i procesiraju.

Za završetak mi je rekao: "Uz one stare kompjutere si dobio debelu knjigu u kojoj sve piše i sve možeš naučiti, a uz ove nove samo onaj neki Licence Agreement koji nitko ne čita!" :)
Citiraj
zabac
30-08-2015 | 11:43
Predivna su djeca, ali vrlo brzo odrastu!
Citiraj
Sigurnosni kod
Osvježi

Komentiraj

Vikalica™

Zadnja poruka: pred 2 sati, 18 minuta
  • JOHN: .....ispravak,..... al neka su one ipak ograničene
  • JOHN: Da nebi bilo nesporazuma, ja obožavam određene vrste vozila, pogotovo ona koja imaju raznorazne dodatne opcije(asistencije). Pružaju određeni dodatni komfor, al neka su one ipak određene, makar se i te ponašaju dosta mušićavo u čudnim okolnostima.
  • zabac: [link]
  • Beli: [link]
  • JOHN: A o mušićavim problemima sw i hw, bolje ni ne spominjat. Danas nisu sposobni složit sw i hw za mobitel i perilicu rublja, a kamoli će za takve naprednije sustave o vozilima koja danas i bez toga na neshvatljiv način crknu nasred ceste jer je otkazao neki od senzora za rad motora.
  • JOHN: :-)
  • JOHN: I onda kad mi još netko spomene HR, mislim si da je neko tamo puko ko kokica ili je neš drugo posrijedi
  • JOHN: Ali mislim da nema potrebe braniti fanatike koji neznaju malo prikočit, nego pošto poto guraju nešto za što nisu stvoreni uvijeti
  • JOHN: A mislim da i na jubaču ima dosta ispada oko takvih vozila čiji se kreatori čude ko pura dreku. Velim, IT djeca se zaigrala. Mislim, odnosno, shvaćam tvoj stav da moraš branit svoju struku
  • JOHN: (silovanim) elementima dijelova krivina, pa o promjeni uvjeta na cestama, percipiranju loše situacije. Ta nije ti to računalna igra., da napraviš reload. Po meni za takvo nešto treba stvorit hebenu podlogu da ima smisla. Sve ostalo je prodaja magluštine i tragičnih ishoda. Što se mene tiče, slobodno otvori temu i pusti maštu na volju
  • JOHN: Nema veze kakve su ulice i signalizacija. To me čudi za tebe. Aj ti fino sjedni za malo bolji auto koji ima drugi ili treći stupanj autonom. pa mi reci koliko na banalnom primjeru koliko je ispravno očitao vertikalnu signalizaciju. Vozim trenutno jedan takav auto i znam u čemu su problemi. To je samo banalna stvar(koja može biti jako opasna), a da ne pričam o cestama/ulicama s vrlo lošim(si
  • smayoo: Gle, na vikalici mi se ne da. Ako hoćeš da ozbiljno i argumentirano pišemo o tome, možemo otvoriti temu na forumu. Ovdje ti samo mogu reći da griješiš jer gledaš na stvari iz pozicije svoje struke, a ne moje (koja je tu relevantna). Tehnički, autonomna vozila su posve izvediva (bez muke) i uopće nema veze kakve su ulice i signalizacija.
  • JOHN: Kako bi ja rekao, djeca za računalima bi se opet igrala. :-)
  • JOHN: Ja mislim da itekako ima. I upitno je zašto se ustvari snima. Projekt autonomnih vozila u HR. Dal da se smijem ili da plačem?
  • JOHN: Smayoo, kako misliš da nema nikakve veze
  • cariblanco: prvi ja, zato sam i kupio vuru da moram svaki dan na trčanje, hodanje ili bicikliranje...sad nemam izgovora da sam ljen :D
  • cariblanco: btw. da je bar prioritet za tolike građane, svi bi se rješili pretilnosti :)
  • cariblanco: da vidio sam simulaciju negdje, dobro je to zamišljeno
  • smayoo: Rotor se neće samo obnavljati, nego rekonstruirati. U planu je denivelacija da najprometniji smjer izdvoje iz njega (slično kao rotor kod CC One West)
  • smayoo: Je, pa da. To je sigurno apsolutni prioritet za jedno 750.000 Zagrepčana. Kao i fontane... :D
  • cariblanco: Mene rotor ne brine, mene zanima bajk magistrala do Slovenije ;)
  • Kloba: To je navodno jedan od prioriteta ove gradske vlasti, što se prometa u Zagrebu tiče
  • Kloba: Kada smo kod prometa, jel Zagrepčani ovdje misle da će bandić održati obećanje i obnoviti rotor?
  • smayoo: JOHN, vidim, opet razmišlja kao pravi građevinac... :D Kvaliteta kolnika, nogostupa, vertikalne i horizontalne signalizacije nema bogzna što puno veze s autonomnom vožnjom. Skoro pa bi se moglo reći da nema - ništa veze... :D
  • m@xym: a mislim da bi i ovo sa službenim vozačima bilo sranje... :D :D :D
  • m@xym: lijepa naša bi stvarno bila izazov za autonomne automobile, po zagrebu se svake godine mijenjaju smjerovi jednosmernih cesta, i preokreće promet, a kod nas u Du, svi važmiji zahvati se rade neprosredno prije ljeta, tako da su turistima GPS karte uglavnom neažurne
  • JOHN: U biti cijeli zeleni val. :-)
  • stefanjos: cak i bi da napravim usporedbu s apple watchom, ali logistika iza toga je prekomplicirana.
  • JOHN: Zamisli, da ti neki stranac bane u Klaićevu i želi se parkirat s desne strane. Tu bi uzeo stolicu i kokice pa da malo popratim taj kaos
  • JOHN: Čestitam i ja. Lijepo ime
  • JOHN: Ajd u tu krajnost nisam išao. Mislio sam više na uređenje horizontalne i vert signalizacije, nepreglednih križanja, nepropisnih oznaka radova na cesti, konstantnih građenja i milijin drugih prepreka koje nam Bandinjo postavlja.:-)
  • Dijete: Cestitke za curku!
  • cariblanco: Misliš, kako će toliko vozača službenih vozila, otjerati na cestu :D
  • JOHN: Kad tad se strane mogu okrenut, a mi šeramo info ko budale. Ako netko ikad u ovoj državi uspije realizirat projekt autonomnih vozila, izuzev autoceste, ja režem glavu.:-)
  • cariblanco: Kaj bi stvarno htio ili se zezaš ? pa nije to novi model koliko je meni poznato
  • stefanjos: taman
  • cariblanco: I još mi malo nabildaš kilometara :)
  • stefanjos: fora! posalji mi na recenziju :P
  • cariblanco: vivoactive hr ;)
  • cariblanco: Onaj koji smayoo stavlja pod noge stola :D
  • stefanjos: haha, koji?
  • cariblanco: Eo sad NATO može znati kako hodam i jel zanosim u stranu...kupio si "pametni" sat :)
  • cariblanco: Zorane, čestitke na Magdi :)
  • stefanjos: imas pravo za NATO, ta ratna industrija je dvosjekli mac, donosi jako dobre tehnologije, a svi znamo drugu ruznu stranu
  • stefanjos: pa jer je cash nazadan sam po sebi, nositi nesto sto ionako vodi kompjutorski sistem, bolje da te sve silne kompjutere i koristimo. zato je nazadno.
  • m@xym: A ovo što NATO traži, sigurno nije zbog ekonomskog napretka, nego zbgo boljeg snalaženja u slučaju rata
  • m@xym: stefanjos, zašto bi plaćanje cash-om bilo nazafno, a plaćanje karticom bilo napredno? To samo dokazuje da te u Njemačkoj nitko neće ubiti ako imaš 50 EUR-a u džepu, od napredne SAD u kojoj će te zbog 50 USD u džepu bez problema skratiti za glavu.
  • stefanjos: zasto je ovo lose? ako ce pridonijeti razvoju autnomnih vozila? uopce ne razumijem zabrinutost. i nije njemacka neko mjerilo velicanstva, oni jos uvijek sve u cashu placaju po trgovinama, toliko o naprednosti te drzave
  • JOHN: A NATO-u eventualno dati jedan koridor za prolaz, a to bi bila autocesta i točka.
  • JOHN: Neznam kakvog ste mišljenja, al ako nekog zanima kako izgleda neka uloca ili zgrada, slobodno može doći i nasnimavat ju. Neke baze podataka ipak nebi trebale biti javne. Malo mi je to too much. Hebeni sindrom busanja nečim od čega mi nemamo baš neke koristi

Za vikanje moraš biti prijavljen.

Prijava

Prisutni jabučari

Novo na Jabučnjaku

Teme

Poruke

Anketa

Kupujete li neku od Apple novosti?

Page Speed 0.71 Seconds

Provided by iJoomla SEO