Kakukkosóra multimédia alkalmazás rapid prototyping módszerrel történő összeállítása dataflow programozási architektúra alapokon, elosztott rendszerű heterogén kialakítású alacsony energiafelvételű nyílt forráskódú server környezetre, AJAX felhasználói felülettel access point: homeaut.com
Dataflow alapok definíció Applikáció: hálózat előgyártott komponensekből Programozás: komponensek kiválasztása, paraméterezése, hálózat kialakítása
Dataflow alapok komponens, portok consumer (input) property producer (output) Komponens library: lehetőségek, nyelv
Dataflow alapok adattípusok Trigger Integer Packet (pár byte) kép hang szövegsorok (Unix pipe) összetett packet
Dataflow alapok üzenettovábbítás Dispathcer típusok: szinkron, aszinkron... Párhuzamos futtatás: t öbbprocesszoros, többgépes rendszerek támogatása... Az üzenetek ténylegesen vagy kvázi egyszerre továbbítódnak...
A fejlesztés szétválik rendszer (dispatcher, fejlesztői környezet) adott, sok beleszólásunk nincs, hacsak nem magunk írjuk komponensfejlesztés nem mindig lehetséges, hagyományos programozás, kisebb feladatok, rendszerszemlélet szükségeltetik applikációfejlesztés több mint konfigurálás, kevesebb mint programozás, érettségi kell hozzá, no meg persze a domain ismerete
Komponensfejlesztés 1. 2. Natív komponens (homeaut.com: C++) Kompozit komponens Blinker: kompozit komponensek tetszőleges mélységig egymásba ágyazhatók
Kakukkosóra specifikáció Master: 6 kakukk dolgozik szakadatlan heartbeat IP-n lámpás játék webes megjelenítés Slave: elsődleges gép kiesésekor átveszi a fő funkciót
Pulsar komponens Pulsar komponens: megadott időközönként (ms) Triggert küld ki. Egy ilyen komponens fogja megnoszogatni a kakukkokat 10 másodpercenként.
Cuckoo komponens Cuckoo komponens: 6-ot rakunk le belőle. Paraméterei: melyik webes widgethez van hozzárendelve, melyik hangot játssza le.
Összekötés fail Így minden kakukk egyszerre szólal meg. (Az üzenetek egyszerre továbbítódnak)
Carousel komponens Carousel komponens: különleges message továbbítás az out producer porton, nem egyszerre küldi el, hanem egyesével, körbe-karikába
Kakukkosóra kakukkoló kész A Pulsar 10 s időközönként triggereli a Carousel-t, aki egyesével továbbítja azt a cuckoo1..cuckoo6-nak.
Kakukkosóra Master, Heartbeat I. Heartbeat küldése: egy másik Pulsar Blinker: olyan webes widget, amely Trigger érkezésekor felvillan
Kakukkosóra Master, Heartbeat II. Remote: bejövő értékek Packet-be csomagolása UdpSend: Packet küldése IP-n, másik gépre
Kakukkosóra Master áttekintés heartbeat küldése kakukkok sorban
Ismertebb dataflow rendszerek I. Unix shell pipes komponens: parancsok felparaméterezve adattípus: csak egyféle, szöveg soronként kapcsolat: korlátozott, 1 in (stdin), 2 out (stdout, stderr) futás: párhuzamos (MS-DOS: egymás után, file) érdekesség: minden cli program helyből komponens /usr/bin/tee
Ismertebb dataflow rendszerek II. Spreadsheet (pl. Excel) komponens: képlet (kár, hogy nincs library!) adattípus: szám, szöveg kapcsolat: hivatkozási hálózat futás: csak komponens módosításkor érdekesség: komponensekre hivatkozás címmel És most legalább megtudtuk azt is, hogy spreadsheetek készítése programozás-e vagy sem: határeset (Egy HTML oldal elkészítése viszont nem az, ha már itt tartunk.)
Ismertebb dataflow rendszerek III. Make komponens: egyes elemek fordítása (job) adattípus: csak egyféle, megváltozott trigger kapcsolat: dependency-tree futás: kézi indításkor minden üzenet lefut érdekesség: párhuzamos rendszer make -j
Szép visual programming I. Quartz Composer Terület: grafika Mac-hez adják
Szép visual programming II. Microsoft Robotics Studio
Szép visual programming III. Rane Drag Net Terület: audio rendszer
Szép visual programming IV. Blender Terület: video, img proc opensource
Szép visual programming V. Clavia Nord Modular Win32 és Mac editor
Köszönjük a figyelmet! Amíg a kérdezők felkészülnek, leállítjuk a master applikációt. Innentől a slave gép veszi át a feladatot, ha minden összejön.
Kérdések I. Miért jó ez? REUSE helyett USE, azonnal bevethető kódok kétféle fejlesztő: komponens- és applikáció gyorsan összedobáljuk a prototípust, gyorsan módosítunk hirtelen lefejlesztjük a bétás komponenst, később ráérünk tökéletesíteni többszálúság anélkül, hogy a komponensnek ezzel törődni kéne (make: a gcc nem többszálú)
Kérdések II. Házautomatizáláshoz miért jó? minden ház egyedi applikáció, egyedi logikák, egyedi felület mindig vannak kivételek, fura kívánságok, nincs az a konfigurációs séma, ami ne dőlne be driver architektúra: protocol és transport komponensek nagyobb épületekhez többszerveres architektúra
Néznivaló Kakukkosóra Slave Röviden: a blockert 7000 ms-onként áteresztőre állítja az enabler, 4444 ms-onként blokkolóra a heartbeat (udprecv, remote felől érkezik a master gépről). A heartbeat reseteli az enablert is, így amíg jön heartbeat, a blocker zárva marad. Ha nem jön, enabler kinyitja, és 10000 ms-onként kakukkoltat a cuckoo_clock Pulsar.