192.168.2.1:8080files.meetup.com/408089/03-penoff_zalka-ihome_kakukk.pdfkakukkosóra multimédia...
TRANSCRIPT
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
http://192.168.2.1:8080access point: homeaut.com
AP: homeaut.com http://192.168.2.1:8080
Dataflow alapok – definíció
Applikáció: hálózat előgyártott komponensekbőlProgramozás: komponensek kiválasztása, paraméterezése, hálózat kialakítása
AP: homeaut.com http://192.168.2.1:8080
Dataflow alapok – komponens, portok
• consumer (input)• property• producer (output)
Komponens library:lehetőségek, “nyelv”
AP: homeaut.com http://192.168.2.1:8080
Dataflow alapok – adattípusok
• Trigger• Integer• Packet (pár byte)• kép• hang• szövegsorok (Unix pipe)• összetett packet
AP: homeaut.com http://192.168.2.1:8080
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...
AP: homeaut.com http://192.168.2.1:8080
A fejlesztés szétválik
• rendszer (dispatcher, fejlesztői környezet)adott, sok beleszólásunk nincs, hacsak nem magunk írjuk
• komponensfejlesztésnem 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
AP: homeaut.com http://192.168.2.1:8080
Komponensfejlesztés
1. Natív komponens (homeaut.com: C++)2. Kompozit komponens – Blinker:
kompozit komponensek tetszőleges mélységig egymásba ágyazhatók
AP: homeaut.com http://192.168.2.1:8080
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
AP: homeaut.com http://192.168.2.1:8080
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.
AP: homeaut.com http://192.168.2.1:8080
Cuckoo komponens
Cuckoo komponens: 6-ot rakunk le belőle.
Paraméterei:• melyik webes widgethez van
hozzárendelve,• melyik hangot játssza le.
AP: homeaut.com http://192.168.2.1:8080
Összekötés fail
Így minden kakukkegyszerre szólal meg.
(Az üzenetekegyszerre továbbítódnak)
AP: homeaut.com http://192.168.2.1:8080
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
AP: homeaut.com http://192.168.2.1:8080
Kakukkosóra kakukkoló kész
A Pulsar 10 s időközönkénttriggereli a Carousel-t,aki egyesével továbbítjaazt a cuckoo1..cuckoo6-nak.
AP: homeaut.com http://192.168.2.1:8080
Kakukkosóra Master, Heartbeat I.
Heartbeat küldése: egy másik Pulsar
Blinker: olyan webeswidget, amely Triggerérkezésekor felvillan
AP: homeaut.com http://192.168.2.1:8080
Kakukkosóra Master, Heartbeat II.
Remote: bejövő értékek Packet-be csomagolásaUdpSend: Packet küldése IP-n, másik gépre
AP: homeaut.com http://192.168.2.1:8080
Kakukkosóra Master áttekintés
heartbeat küldése
kakukkok sorban
AP: homeaut.com http://192.168.2.1:8080
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
AP: homeaut.com http://192.168.2.1:8080
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.)
AP: homeaut.com http://192.168.2.1:8080
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
AP: homeaut.com http://192.168.2.1:8080
Szép visual programming I.
Quartz Composer
Terület: grafika
Mac-hez adják
AP: homeaut.com http://192.168.2.1:8080
Szép visual programming II.
Microsoft Robotics Studio
AP: homeaut.com http://192.168.2.1:8080
Szép visual programming III.
Rane Drag Net
Terület: audio rendszer
AP: homeaut.com http://192.168.2.1:8080
Szép visual programming IV.
Blender
Terület: video, img proc
opensource
AP: homeaut.com http://192.168.2.1:8080
Szép visual programming V.
Clavia Nord Modular
Win32 és Maceditor
AP: homeaut.com http://192.168.2.1:8080
Köszönjük a figyelmet!
Amíg a kérdezőkfelkészülnek,leállítjuk a master applikációt.
Innentől a slave gép veszi át afeladatot, ha minden összejön.
AP: homeaut.com http://192.168.2.1:8080
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ú)
AP: homeaut.com http://192.168.2.1:8080
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
AP: homeaut.com http://192.168.2.1:8080
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.