A GUI az a Graphical User Interface rövidítése, ami magyarul grafikus felhasználói felületet jelent.
Minden grafikus felhasználói felület tulajdonképpen egy-egy program, ami lehetővéteszi azt, hogy az ember egy grafikus felületen keresztül kommunikálni tudjon a számítógéppel.
A legtöbb egyszerű esetben a következő történik, amikor valaki egy GUI programot használ
* A GUI program megjelenít gombokat a képernyőn.
* Az ember az egeret használva rákattint egy gombra a képernyőn.
* A GUI program ezt észleli, és küld egy utasítást egy másik programnak.
* A másik program miután végrehajtotta a feladatát, válaszol a GUI programnak, hogy kész.
* A GUI program a grafikus felületén jelzi, hogy mi történt.
Ez az egyszerűnek tűnő, ám mégis a felszín alatt végtelenül bonyolult eseménysorozat kulcsfontosságú szerepet játszik minden olyan ember életében, aki a mindennapjaiban speciális technikai tudás nélkül használja a számítógépét.
Egy másik szemszögből nézve a "GUI" fogalom egy HCI technológiára utal.
A HCI a Human-Computer Interaction rövidítése, ami magyarul az ember és számítógép közötti kommunikációt jelenti.
A HCI egy tudományág, ami azt kutatja, hogy milyen formákban lehetséges a számítógép és az ember közötti kommunikáció.
A HCI kutatók nem kizárólag a házi számítógépekkel való interakció lehetőségeit kutatják, hanem kutatásuk kiterjed a robotokkal és általános gépekkel való interakciókra is.
A GUI az csupán egy a sok létező HCI technológia közül.
Mi nem számít GUI-nak?
Talán furcsának tűnik a kérdés, azonban szükséges feltennünk, mivel sokan helytelenül használják a kifejezést.
Az alábbiakban röviden összefoglaltam, hogy mi-miért nem GUI.
* A GUI programok nem OS-ek.
* Az OS-ek nem GUI programok.
* Sok OS-ben vannak GUI programok.
Az OS az Operation System rövidítése, ami magyarul operációs rendszert jelent.
Minden operációs rendszer feladata az, hogy a számítógépet az ember számára hasznos működésre bírja. Ez azt jelenti, hogy a helyzettől függően képes kell legyen arra, hogy csakis a haszosnak vélt feladatokat végeztesse el a számítógéppel.
Bizonyos helyzetekben a GUI programok nemcsak hogy szükségtelenek, de zavaróak is lehetnek.
A legtöbb OS-t GUI programokkal együtt terjesztik, azonban vannak olyan OS-ek, amiket nem.
* A GUI programok azok nem Display Server-ek.
* A Display Server az nem GUI program.
* Azonban Display Server nélkül nincs értelme GUI programok futtatásának.
A Display Server egy program, ami azért felelős, hogy egyáltalán valami meg tudjon jelenni a monitorunk képernyőjén.
Elég egyértelmű, hogy a GUI programok használatához legalább annyira nélkülözhetetlen, mint a videokártya és a monitor, mert ha nem látunk semmit, hiába akármilyen GUI program.
A GUI programok azok nem Display Serverek, mivel nem tartozik a feladatkörükbe, hogy direkt módon kezeljék a videokártyát.
A Display Serverek nem GUI programok, mivel ők csak a GUI programok utasításai szerint megjelenítenek dolgokat a képernyőn.
* A GUI Porgramok azok nem Windowing System-ek.
* Windowing System-ek nem GUI programok.
* Egy Windowing System folyamatos kapcsolatban áll minden GUI programmal.
A Windowing System egy program, ami a képernyőn megjelenő ablakok elrendezését végzi. Nélküle semmilyen módon nem tudnánk elrendezni a képernyőn megjelent ablakokat, vagyis egyszerre maximum egy ablakot tudnánk megjeleníteni egy képernyőn.
Ezek a programok folyamatosan kapcsolatban állnak a számítógépen futó GUI programokkal, és tudnak utasításokat küldeni és fogadni a GUI programoktól, azonban önmagukban nem nevezhetők GUI programoknak, mivel csakis kizárólag a képernyőn megjelenő ablakok pozicionálását, méretezését, és elrendezését végzik.
* Nem minden GUI program Window Manager.
* Viszont minden Window Manager GUI program.
A Window Manager egy olyan program, ami képes üres ablakokat megjeleníteni általában 3 egyszerű gombbal. Különösebben nem csinál semmit, csak ablakokat jelenít meg, maximizál, minimalizál, és zár be. Ez a program felelős az ablakok tetején lévő 3 egyszerű gombért, és azért, hogy egyáltalán léteznek ablakok.
Ez a program már egy GUI programnak számít, mivel képes megjeleníteni önmagát, és 3 különböző műveletet elvégezni 3 egyszerű gombbal: ki tudja nyújtani magát maximum képernyőre, képes magát ideiglenesen a háttérbehelyezni, és képes bezárni önmagát.
Ebben a programban jelenik meg a legtöbb GUI program, azonban nem mindegyik.
A GUI programok általában nem Window Managerek, így a Window Manager-re bízzák az ablakukkal kapcsolatos műveleteket, azonban vannak GUI programok, amik egyben Window Manager-ek is, és teljesen önmagukban megállják a helyüket.
* A GUI programok azok nem Shell-ek.
* A Shell kifejezésnek eredetileg semmi köze GUI programokhoz.
* A Shell kifejezés elavult és helytelen.
Ez nagyon ködös, zavaros jelentésű kifejezés, ami jelenleg a Windows Shell-re utal, vagyis az explorer.exe programra, ami egy Window Manager egybeintegrálva egy File Manager-el.
Mint már említettem, a Window Manager programok a képernyőn megjelenő ablakok kinézetéért, és viselkedéséért felelősek, vagyis GUI programok, azonban nem minden GUI program Window Manager, és a GUI programok nagyrésze nem viselkedik Window Manager-ként.
A File Manager programok a számítógépen található dokumentumok elrendezését segítik. Ezeknek a programoknak önmagukban semmi közük a grafikus felületekhez, sem a GUI programokhoz.
A Shell kifejezés eredetileg nem a Windows Shell-re utalt.
Vannak grafikus és command-line Shell-ek.
A Shell kifejezés nagyon zavarossá vált az idők folyamán, és egyre inkább csak a Windows-nak az explorer.exe programjára kezdett utalni.
A többi Operációs Rendszer Shell-jei már szinte minden szempontból eltértek a Windows Shell-jétől, és már más kifejezést keztek el használni a Shell kifejezés helyett, ami valóban másat is jelentett, azonban magában tartalmazta a régi Shell fogalmát is.
A Shell fogalma egyre érthetetlenebbé, és értelmetlenebbé vált az idők folyamán, azonban az emberek tovább használják, és mivel tovább használják helytelenül, végül a helytelen lesz a helyes fogalom. Azonban még a helytelen Shell fogalmát sem lehet azonosítani a GUI programok fogalmával.
* A GUI programok nem Asztali környezetek (Desktop Environment).
* Az Asztali környezetek (DE-k) nem csupán GUI programok.
* Minden DE-ben vannak GUI programok.
A DE a Desktop environment rövidítése, ami magyarul asztali környezetet jelent.
Ez a fogalom a Shell fogalmának a modern utódja, ami teljesen másat jelent mint a régi és új Shell fogalmak.
Minden olyan OS-hez, amit egyszerű felhasználóknak szántak készítenek DE-t.
A DE fogalma nagyban meghaladja a GUI fogalmát, mivel magában tartalmaz mindent amire szüksége lehet egy átlagos felhasználónak.
Egy átlagos felhasználó csak a DE-t látja az OS-ből.
Minden DE magában tartalmaz egy Display Server-t, egy Windowing System-et, egy Window Manager-t és képeket, háttérképeket, ikonokat, kurzorokat, betűkészleteket, GUI programokat, nem GUI programokat, és minden más egyebet is ami szükséges lehet.
Lényegében egy átlagos felhasználó nem tekinti az OS-t működőképesnek DE nélkül.
A pénzért árult OS-ekbe általában bele van integrálva egy DE, így csak mérsékelt szinten lehet őket testreszabni, míg az ingyenes OS-ek terjesztői általában egyfajta extraként hozzáadnak az OS-hez egy DE-t, amit viszonylag könnyen le lehet cserélni.
Számos DE létezik, s többségük nagyban felülmúlja a Windows-ba integrált DE-t minden szempontból, főleg mivel a legtöbbjük open-source, vagyis nyílt forráskódú, így mindenki kedve szerint továbbfejlesztheti.
Minden DE nagyon komplex, és semmiképp sem nevezhető egy darab egyszerű programnak, mivel gyakorlatilag benne van minden amiről úgy gondolják a fejlesztők, hogy egy egyszerű felhasználónak szükséges lehet.
A GUI programok azok nem DE-k, viszont minden DE-ben határozottan vannak GUI programok.
Gondoljunk csak bele: Attól még, hogy az emberek a földön élnek nem lesznek egyenlők a földdel. Attól még, hogy a GUI programok a DE-k ben élnek, a GUI programok nem lesznek egyenlőek a DE-kkel.
* A GUI programok nem WIMP-ek.
* A WIMP-ek nem programok.
* A WIMP az egy íratlan HCI szabvány.
A WIMP rövidítés a következőt takarja: Window, Icon, Menü, Pointing device, ami magyarul azt jelenti, hogy ablak, ikon, menü, és egy egérmutató.
Ez egy íratlan HCI szabvány amit a legtöbb hagyományos GUI hűen követ, vagyis megjelenít ablakokat, ikonokat, menüket, és azt várja, hogy valahova kattintsunk az egérmutatóval.
A HCI kutatók WIMP-nek kategorizálnak minden olyan GUI programot, ami követi ezt a hagyományos szabványt.
A legtöbb asztali számítógépre írt GUI programról elmondhatjuk, hogy követi ezt a szabványt, azonban helytelen azt gondolni, hogy minden GUI program WIMP szabványos.
A Post-WIMP-nek kategorizált GUI programok már csak részben, vagy egyáltalán nem követik a WIMP szabványt.
Post-WIMP kategóriájú GUI programokat fejleszenek okostelefonokra, tabletekre, és egyéb érintőképernyős, és apró, hordozható készülékekre.
A Post-WIMP GUI programok megjelenéséért főként az okostelefonok megjelenése a felelős, amik esetében egyszerűen csak nincs egérmutató (Pointing Device), és túl kicsi a képernyő több ablak és menü megjelenítésére.
Miután tisztáztuk, hogy mi nem GUI, az érthetőség kedvéért mégegyszer leírom, hogy mi a GUI.
Önmagában, mint fogalom, a "GUI" kifejezés egy olyan HCI technológiára utal, amiben kulcsfontosságú szerepet játszik a grafikus megjelenítés.
A GUI az csupán egy felhasználói kezelőfelület (UI) a sok közül.
A GUI program egy olyan program, aminek kizárólag az a dolga, hogy megjelenítsen egy interaktív kezelőfelületet a képernyőn, majd folyamatosan figyelje, hogy mikor, és milyen módon lépünk kapcsolatba bizonyos a képernyőn megjelenített objektumokkal az interaktív felületen, majd attól függően, hogy az interaktív felületen mi történt, utasítson egy másik programot egy bizonyos feladat elvégzésére, és ha lehetséges azonnal megmutassa a grafikus felületén, hogy az adott program mit csinál, vagy egyáltalán csinál-e valamit, és hogy mikor lesz kész a feladatával, és mikor végezte el a feladatát.
A továbbiakban különféle HCI technológiákat, GUI programokat, s végül a látványosság kedvéért néhány modern DE-t is bemutatok.
Mint már említettem a GUI csupán egy a sok különböző HCI technológia közül.
A GUI feltalálása előtt is tudtak az emberek számítógépet használni, és ma már a GUI korszakon túllépni készülünk.
Fontos megértenünk, hogy az itt felsorolt HCI technológiák nem történelmi jellegűek, mivel mindegyik különféle formákban folyamatosan használatban van, és a maga módján hasznos.
A HCI technológiákat jelenleg 3 nagy korszakra lehet felosztani
* Pre-WIMP korszak
Még nincsenek ablakok, ikonok, menük, és egy egérmutató használatban.
* WIMP korszak
Ablakok, ikonok, menük, és egy egérmutató használatban van.
* Post-WIMP korszak
Már nincsenek használatban ablakok, ikonok, menük, és egy egérmutató.
Pre-WIMP korszak
Lyukkártyás Módszer
Az emberek egyszerűen belelyukasztották a bináris kódot egy kártyába, majd beadták egy számítógépnek, ami azt elolvasta, és végrehajtotta a kártyára felírt feladatot.
Úgy gondolom, hogy a lyukkártlyák utódjai a különféle mágneses biztonsági kártyák, SIM kártlyák, bankkártyák, és egyéb integrált áramkörökkel ellátott kártyák.
Érdekességént figyeljük meg hogy nézett ki egy régi 1970-es bankkártya, ami még lyukkártyás módszerrel működött
A CLI a Command-Line Interface rövidítése, ami magyarul parancssoros felhasználói felületet jelent.
Körülbelül az 1960-as években találták fel, és máig használatos.
Működési elve az, hogy az ember a billentyűzetet használva beír valami parancsot a számítógépbe, majd a számítógép azt végrehajtja.
Ez a módszer a mai napig használatos számos területen, aminek elsősorban 4 oka van
* Van nagyon sok komplex, összetett feladat, amit csak így lehet elvégeztetni a számítógéppel.
* A GUI-hoz hasonlítva a CLI gépigénye sokkal kevesebb.
* Nagyon sok programozó van aki nem képes, vagy nem akar grafikus felületet készíteni a programjához.
* Sok program van amihez egyszerűen értelmetlen GUI programot írni.
A TUI a Text-based User Interface rövidítése, ami szöveg alapú felhasználói felületet jelent.
Ez a fajta felhasználói feület (UI) annyiban tér el a CLI-től, hogy már színes, és reagál az egérre is.
Az ilyen típusú kezelőfelületeket azért nem nevezhetjük grafikusnak, mivel csupán egyszerű színeket és szöveget tudnak megjeleníteni.
A ma is használatos Midnight Commander fájlkezelő program például ilyen UI-t használ.
A TUI egy átmenetnek is nevezhető a GUI és a CLI között, mivel igazán egyikhez sem sorolható.
Mint már elmagyaráztam, a GUI a graphical user interface rövidítése, ami magyarul grafikus felhasználói felületet jelent, és minden WIMP GUI a WIMP szabványt követi, ami windows, icons, menus, pointer-t jelent, vagyis a grafikus felületével megjelenít ablakokat, ikonokat, menüket, és arra vár, hogy valahol kattintsanak rá egy egér kurzorral.
A WIMP szabványt követő GUI-okat eredetileg a Xerox PARC fejlesztette ki körülbelül 1973-ban, majd az Apple továbbfejlesztette körülbelül 1984 körül, és ezzel egyben feltalálta az első Desktop Environment-et, és a Desktop Metaphor elvi alapjait is. (Bár erről akkor még nem tudott)
Az első WIMP GUI-on is látszik, hogy a TUI-nál már fejlettebb, mivel vannak benne ikonok.
Fontos megjegyeznünk, hogy a modern WIMP GUI-ok nagyrészét civilek fejleszik teljesen ingyenesen.
A WIMP GUI-ok lehetőségei kimerülnek az egér, és billentyűzet által kelthető korlátozott jelek kezelésében.
Gondoljunk bele, hogy mi történhet egy egyszerü számítógépen.
* Az egér mozog.
* Az egérrel valahova kattintanak.
* Lenyomnak billenyűket.
Talán nem tűnik fel, de a kizárólag ilyen események, vagyis event-ek kezelésére kifejlesztett WIMP GUI-ok sok szituációban kudarcot vallanak.
A Post-WIMP-nek kategorizált GUI programok már csak részben, vagy egyáltalán nem követik a WIMP szabványt.
Ilyen GUI programokkal főleg érintőképernyős készülékeken találkozhatunk, amiken az egérmutató helyett az ember az ujjaival nyomogathatja a képernyőt különféle pontokon.
A Post-WIMP GUI-oknak az érintőképernyő egész felületén akárhol bekövetkezhető különféle érintésmintázatokat kell felismerniük, amiket Multi-touch gestures-nek nevezünk.
Tehát minden Post-WIMP GUI képes emberi interakció következő formáit felismerni.




Ha jobban belegondolunk, rettentő nehéz olyan programokat írni, amik felismerik a tapogatás különféle formáit.
Ha ez nem lenne elég, mindennek a tetejébe, a Post-WIMP GUI készítőknek figyelembe kell venniük azt is, hogy kis képernyőkre készítik a grafikus felületüket, vagyis egyszerűen nincs hely a képrenyőn annyi ablak, gomb, ikon, menü és szöveg megjelenítésére, mint egy átlagos számítógép képernyőjén.
Például figyeljük meg, hogy egy virtuális billentyűzet már a képernyő felét elfoglalja.
Az ilyen problémák kiküszöbölésére fejlesztenek Post-WIMP GUI-okat, több-kevesebb sikerrel.
Fontos megértenünk, hogy GUI-nak addig nevezünk egy kezelőfelületet, ameddig az grafikus elemekre épül.
A legtöbb Post-WIMP technológia már nem grafikus elemekre épül.
A Post-WIMP GUI kategóriába sorolható kezelőfelületek egy nagyon vékony átmeneti réteget képeznek az új és régi generációs kezelőfelületek között, mivel a Post-WIMP GUI-ok még használnak grafikus elemeket az emberekkel való interakcióban.
Főleg okostelefonok és tabletek grafikus felületeit sorolhatjuk a Post-WIMP GUI a kategóriába.
Figyeljük meg, hogy a windows, icons, menus, pointer -ből csak az "icons" és a "menus" maradt meg.
Egyszerűen minden olyan GUI-t Post-WIMP-nek tekintünk, ami képes az érintőképernyőn keletkező különféle ujjmozdulatok felismerésére, és minimális grafikával rendelkezik, mert egyszerüen csak nem férne ki több gomb, menü, ablak, ikon egy kis képernyőre, és egyáltalán nincs is egérmutató.
Összegyűjtöttem néhány UI-t, amit még Post-WIMP GUI-nak tekinthetünk, azonban kissé kétséges a léthelyzetük
Fontos megjegyeznem, hogy a fogalom hibás, mivel gyakorlatilag csupán egy Oversized Virtual Desktop-ról van szó, nem egy új UI-ről.
Lényege annyi, hogy szabadon lehet nagyítani és kicsinyíteni a képernyő felületét, így akár egy teljes számítógép monitorával egyenlő felülethez juthatunk akármilyen kis képernyőn.
Jó példa erre amikor weblapokat nézegetünk okostelefonnal: ránagyítunk a weblapra úgy, hogy annak csak egy részét lássuk, és így nagyított módban mozgunk a weblap felületén.
Ezzel a módszerrel akár egy teljes virtuális képernyőt is lehetne készíteni, amelyen szabadon lehetne mozogni, és ráférne akármennyi futó program megynyitott ablaka.
Az egyetlen és elég nagy probléma vele az, hogy fárasztó folyamatosan mozogni egy ilyen virtuálisan kiterjesztett képernyőn.
Furcsállom, hogy ZUI-t találtam, ami tulajdonképpen az Oversized Virtual Desktop-al egyenlő, míg normális Virtual Desktop-ról szó sem esett, pedig ez nagyon sok problémát megoldhatna.
Szükségesnek találom megemlíteni, hogy a kérpernyő végtelenségig felnagyítása helyett meg lehet tenni azt, hogy felosztjuk a képernyőt több Workspace-re, amit már körülbelül 5 éve megtehetjük minden Linux alapú OS-en, és Compiz-zal 3D virtuális kocka effektet is képezhetünk a több Workspace-ből.
Ilyen kezelőfelületeket lehet készíteni hajlítható képernyőkre.
Ezek a kezelőfelületek a képernyő külénféle szögekben való meghajlításával működnek.
Nagyon érdekes, de különösebb értelmét nem látom, mivel mondhatni strapabírás szempontjából jó, de nincs benne semmi valóban új, mivel végülis mégiscsak különféle gombokat nyomogatunk a képernyő hajtogatásával.
Minden olyan kezelőfelületet NUI-nak nevezünk, ami nem grafikus megjelenítésre épül, és kezelését úgy lehet elsajátítani, mint egy egyszerű természetes emberi képességet.
A Valódi Post-WIMP kezelőfelületek többsége NUI.
A legjobban elterjedt, és aktív használatban lévő NUI a KUI, vagyis a mozgás alapú kezelőfelület.
Az ilyen kezelőfelületek esetében különféle tárgyak valós 3D térben való mozgatásával kommunikálhatunk a számítógéppel.
A valódi KUI-kat leginkább Wii játékkonzolok kezelőfelületeként ismerhetjük.
Minimálisan KUI-nak tekinthető még az okostelefonokba beépített szenzor, ami észleli, hogy milyen helyzetben tartjuk a telefon képernyőjét.
Erről képet nem tudok mutatni, azonban elég egyértelmű, hogy mire gondolok. Készítettek már például számos külünféle autóversenyzős játékot mobilra, amikben az autókat a képernyő mozgatásával lehetett kormányozni.
Ezt a kezelőfelületet normális emberi beszéddel lehet irányítani.
Ma is léteznek különféle elég jó minőségű hangfelismerő programok, amiket VUI-ként is lehet használni, és elképzelhető, hogy a jövőben létezni fognak olyanok is, amik tényleg értik az emberi beszédet.
Ezek a programok például VUI-k
A jelenlegi technológia csúcsának a BCI számít, vagyis az emberi agy által működtetett kezelőfelület.
Az agyba beültetett Invasive BCI technológiákról nem írok, mivel ezt egyszerüen nem lehet otthon kipróbálni, és valahogy nem is tetszik az ötlet, hogy a fejünkbe számítógépet ültessenek.
Azonban abból a szempontból jó az elképzelés, hogy ezzel a módszerrel lehetséges valódi robotkezet, robotlábat, meg hasonló végtagokat készíteni olyan embereknek akik különféle okokból kifolyólag elvesztették a kezüket vagy lábukat.
Most inkább az átlagos célokra használható Not Invasive BCI-kről fogok írni, amihez nem szükséges az ember agyába beültetni semmit.
Ezt EEG-s módszernek hívjuk, aminek lényege, hogy a készülék az emberi agyhullámokat passzívan fogadja, szinte úgy mint a rádióhullámokat, csupán annyi különbséggel, hogy néhány érzékelőt (elektródát) valahol a fejhez közel kell elhelyezni.
Az érzékelőket lehetséges hajdísznek, fülbevalónak, nyakláncnak vagy egyéb dolognak is álcázni, mivel nagyon kicsik, és körülbelül csak 3-4 szükséges belőlük.
A kísérletezéshez szükséges hardware beszerzése nem ingyenes, azonban a technológia ingyen elérhető, és teljesen open-source.
Egy BCI elkészítéséhez szükséges harware egy kicsit módosított EEG készülékkel egyenlő, ami csupán annyit csinál, hogy fogadja az agyhullámokat, és továbbítja az adatokat a számítógépnek.
Például az OpenBCI készít ilyen hardware-t, ráadásul minden leírást hozzá ingyen publikáltak, és teljesen nyílt forráskódú a software és a hardware is amit árulnak.
Miután megvan a hardware, és rendesen be van kallibrálva, azután már csak egy kis kreativitás és programozói tudás szükséges, hogy készítsünk egy programot, ami bizonyos agyhullámainkra különféle módon reagál.
Röviden összefoglalva a következő történik
* Az OpenBCI elküldi a fogadott agyhullámokat a számítógépnek.
* A számítógép ezen adatok alapján hoz valami döntést, és küld egy jelet a robot távírányítójának.
* A robot végrehajta a feladatát.
Ez röviden egy képben elmagyarázva
A kísérletben bemutatott egyszerű program az agyhullámok 3 különböző frekvenciájára reagál
* 10 Hz körüli agyhullámok - akkor keletkeznek, ha az ember becsukja a szemét.
* 7.5 Hz körüli agyhullámok - akkor keletkeznek, ha az ember 7.5 Hz sebességgel villogó fényt lát.
* 5 Hz körüli agyhullámok - akkor keletkeznek, ha az ember 5Hz sebességgel villogó fényt lát.
Továbbá program megpróbálja a szükségtelen zajt kiszűrni, így signal-to-noise ratio (SNR)-t is kiszámítja.
Majd az alapján, hogy milyen frekvencia tartományból jött az agyhullám jele, a program 3 különboző parancsot ad ki a robot távírányítójának
* Agyhullám 8.5 Hz - 12 Hz frekvenciatartományból: Menj előre
* Agyhullám 6.5 Hz - 8.5 Hz frekvenciatartományból: Fordulj Balra
* Agyhullám 4.5 Hz - 6.5 Hz frekvenciatartományból: Fordulj Jobbra
Továbbá attól függően, hogy mikor változik az agyhullám jele, a program a lőjj parancsot küldi a robot távirányítójának.
Vagyis, ez képekben elmagyarázva
Ez az emberi agyhullámok által vezérelt robotkísérlet már sikeresnek nyilvánítható, azonban még van mit fejleszteni rajta.
Mindenesetre ez a technológia nagyon nagy lehetőségeket rejt magában...
A GUI témájához visszatérve a következő részben a GUI programokról fogok írni.
A GUI programokat esemény-vezérelt programmozással (event-driven programming) írták.
Ez egy olyan programozási eljárás (programming paradigm), amiben a program viselkedését (control flow) főként olyan események (events) határozzák meg, amiket a felhasználó általi tevékenységek (user input) váltanak ki, mint például kattintások az egérrel, és gombok lenyomása a billentyűzeten.
A GUI programok folyamatos kétirányú (bidirectional) kommunikációt létesítenek a felhasználó és a számítógépen lévő programok között (I/O), így a felhasználó viselkedésén kívül a GUI programok felépítését nagyban meghatározzák az irányítani kívánt programok tulajdonságai és környezetük is.
Vagyis a felhasználói tevékenységeken kívül sok más a számítógépen futó program tevékenységét (ezek közül is legfőképp a GUI program által irányított programok viselkedéseit) folyamatosan figyelik a GUI programok, és ezek alapján hoznak logikai döntéseket.
A GUI programok az emberi cselekvések alapján bonyolult utasítássorozatokat küldenek más programoknak, és eközben folyamatosan figyelik és megjelenítik a felhasználó számára érthető formában azt, hogy az irányításuk alatt lévő programok mit csinálnak.
A GUI programok egyfajta közvetítőként működnek az ember és a számítógépes programok között.
A GUI programok képesek egyszerre (vagyis egy időben, ami a számítástechnikában azt jelenti, hogy egymás után szinte lehetetlenül nagy gyorsasággal) a következő műveleteket elvégezni.
* Észlelik a felhasználói tevékenységet (user input).
* Észlelik a számítógépen zajló dolgokat (hogy az írányítani kívánt programok, és környezetük mit csinál).
* Ez előző két pont alapján logikai döntéseket hoznak.
* A logikai döntések alapján vagy megjelenítenek valamit a grafikus felületükön, vagy küldenek valamilyen parancsot az írányítandó programoknak.
A továbbiakban szükséges megértenünk, hogy a GUI programok önmagukban nem képesek végrehajtani semmilyen valódi műveletnek tekinthető feladatot, mivel csupán olyan logikai döntések alapján működnek, amik forrása vagy az ember vagy egy nem GUI számítógépes program.
Képzeljünk csak el egy GUI programot önmagában: megjelenít gombokat, menüket, ikonokat, és egyéb grafikus elemeket (widget), azonban mivel nincs mögötte program amit utasíthat, hiába nyomogatjuk a GUI gombjait, nem történhet semmi. Ez a másik oldalról is igaz, ami elég egyértelmű: ha nincs ember, akkor nincs értelme a GUI programnak.
Az egyszerű embereknek szánt programokat úgy írják, hogy nagyrészükhöz írnak egy GUI programot is, amit sok esetben egybeintegrálnak az adott programmal, így egyesek számára nehéz lehet megérteni és elfogadni, hogy a GUI programok különálló programok, azonban ez így van.
Főleg az open-source programok esetében lehet érszrevenni, hogy a GUI program és maga a program két különböző dolog, mivel az ilyen programokat általában CLI-vel is lehet kezelni, és több variációban jelennek meg, több különféle GUI programmal.
A GUI programokat is, mint minden más programot lehet írni high-level és low-level programnyelveken.
Mivel GUI programokat elképesztően nehéz low-level programnyelveken írni, inkább high-level programnyelveken írják őket (tisztelet a kivételnek).
A minden célra felhasználható, és teljesen cross-platform GUI programokat az esetek 99%-ában high-level programnyelveken írják.
Mivel nem biztosított, hogy minden OS-en elérhetőek legyenek ugyanazok a grafikus elemek (widget), így a speciálisan GUI programok fejlesztésére kitalált high-level programnyelvek fejlesztői rendszerint a programnyelvükön írt GUI programok által használható widgeteket is a programnyelvvel együtt terjesztik, és így különféle Widget-Toolkit-eket, GUI Framework-öket, és GUI Toolkit-eket fejlesztenek ki.
A programfejlesztők számára köznapi használatban a GUI kifejezés általában különféle Platform-independent GUI Toolkitek felhasználásával készült GUI programokra utal, amiket PIGUI-nak is neveznek.
Minden GUI amit nem egy GUI Toolkit felhasználásával készítettek az teljesen egyedi, így a lehetőségek végtelenek.
A továbbiakban néhány open-source PIGUI Toolkit-et fogok bemutatni, mivel egyszerűen lehetetlen, hogy a világon létező minden GUI programot bemutathassam.
A ma már inkább csak speciális célokra használt FLTK sajátosságai a különlegesen egyszerű kezelhetőség és csekély gépigény.
Az FLTK rövidítés angolul Fast, Light Toolkit-et jelent, ami magyarul Gyors, Könnyed Szerszámkészletet jelent.
A neve és kinézete ellenére jelenleg 2015-ben is aktív fejlesztés alatt van, és képes modern 3D grafikákat megjeleníteni OpenGL-el, és teljesen cross-platform, vagyis a képességei nagyban meghaladják minden más GUI Toolkit-ét.
Néhány FLTK-t használó program grafikus felülete így néz ki
A világon az egyik legismertebb GUI Toolkit a GTK+.
Az ingyenes DE-k nagyrészében vannak GTK+ GUI programok.
Például néhány GTK+ -t program grafikus felülete így néz ki
A wxWidgets a GTK+ -hoz hasonlóan szintén egy széles körben használt GUI Toolkit.
Különlegessége az, hogy minden ezzel a GUI Toolkit-tel készített GUI program az éppen használatban lévő DE képességeit használja fel, vagyis ahelyett, hogy egy egységes kinézetet biztosítana a GUI programjainak, mindig a DE által nyújtott kinézetet ölti magára.
Például néhány wxWidgets-t használó hasznos program grafikus felülete így néz ki
A QT Framework nagyon speciális és komplex, mivel nem csupán GUI programok készítésére szolgál, hanem minden megvalósítható vele.
Jelenleg ez a legmegbízhatóbb, legmodernebb, és legelismertebb GUI Toolkit is egyben.
Például néhány QT Framework-et használó program grafikus felülete így néz ki
A következő részben bemutatok néhány Desktop Environment-et.
A Desktop Environmentek, vagyis az asztali környezetek nem egyszerű önálló GUI programok, mivel magukban tartalmaznak mindent ami szükséges lehet egy átlagos felhasználónak: képeket, programokat, és GUI programokat egyaránt.
Minden DE a Desktop Metaphor elveit követi, vagyis a célja az, hogy egy átlagos felhasználónak egy asztali környezetet biztosítson, aminek a segítségével könnyebben lehet használni a számítógépet.
A történelem során számos DE-t fejlesztettek ki, mondhatni annyit mint égen a csillag. Ennek a viszonylag teljes történelmi listája képekkel és leírásokkal együtt ezen a linken elérhető.
Mint már előbb említettem, a DE az OS-tól külünálló dolog, vagyis az OS képességeitől függően szabadon lecserélhető.
A DE-ket nem lehet bemutatni egyszerű szöveggel és képekkel.
Az egyetlen módja a DE-k megismerésének, ha az ember maga próbálja ki őket.
Sok DE létezik, amit nem lehet csak úgy kipróbálni, mert nem ingyenes, és egybeintegrálva árulják az OS-el.
A továbbiakban felsorolok néhány ingyenes DE-t, majd néhány OS Distro-t amikhez alapból hozzá vannak adva a DE-k, így egyszerűen azonnal kipróbálhatóak.
Ez eredetileg nem egy DE volt, de mégis azzá lett.
Megemlítendő még 2 DE, amit egyszerre fejlesztenek az OS-el, azonban könnyen lecserélhető az OS-ről.
Végül következik két DE amit egyszerre fejlesztenek az OS-el, ráadásul úgy, hogy egybeintegrálták az OS-t a DE-vel.
Az ilyen DE-ket is le lehet cserélni különféle alternatívákra, azonban nem törvényesen, így erről nem írok.
Továbbá mivel ezek erősen jogvédettek, róluk csak egy-egy linket jelenítek meg, képeket nem.
Végül, a következő fejezetben felsorolom a másoloásjogi információkat, és licensszerződéseket a weblapon felhasznált képek és betűkészletek miatt.
Ebben a részben felsorolom az oldalon felhasznált anyagok különféle forrásait a hozzájuk tartozó licensszövegekkel együtt.
Mindennek a lényege röviden, magyarul összefoglalva
Ami az én művem
* Az oldal kinézete (CSS kód)
* Az oldal felépítése (HTML markup)
* Az oldal tartalma (magyar szöveg)
* Az oldal összeállítása (az elképzelés és megvalósítás)
Ami nem az én művem
* A felhasznált betűkészletek (fonts)
* A felhasznált ikonok (icons)
* A felhasznált képek (pictures)
* A magyar szöveg írásához felhasznált angol szövegek
Az ezen a weblapon olvasható összes magyar szöveget sok különféle dolog megtapasztalása után írtam.
Értelmetlen lenne mondatonként keresgélni az általam megírt magyar szövegben, hogy melyik mondatomnak és gondolatomnak mi a forrása, mivel az egész szöveget fejből írtam AZ UTÁN, hogy sokmindent elolvastam, és sokmindent kipróbáltam.
Mellékesen fontosnak tartom megjegyezni, hogy már évek óta Linuxot használok, így természetesen tudom, hogy az OS nem egyenlő a DE-vel, és hogy mi a különbség CLI és GUI között.
Továbbá azt is érdemes megjegyeznem, hogy volt egy időszak amikor kicsit próbálkoztam programozni valamit, és írtam is egy egyszerű programot Python programnyelven, és készítettem hozzá egy GUI programot is a PyGObject Python Modult felhasználva ami tulajdonképp a GTK+ Widget Toolkit Python Binding-ja. Ki lehet próbálni, Itt a link egy jó Python tutorialhoz, és itt a link egy jó Python-GTK+ tutorialhoz.
Végül még annyit megjegyeznék, hogy vannak bizonyos dolgok, amiket csak tapasztalás útján lehet megérteni. Használjunk Linuxot, cserélgessük rajta a DE-t, írjunk GUI programokat, nézzünk bele bizonyos open-source programok forráskódjába, kísérletezgessünk, próbálgassunk össze-vissza mindent ami az eszünkbe jut, és így végül elképzelhető, hogy talán hasonló következtetésekre jutunk.
A valószínüleg felhasznált Wikipedia cikkek listája (nem sorrendben)
I/O
UI
KDE
XUL
Qt
AR
... és minden más egyéb cikk amikre ezek a cikkek linkelnek.
Szükséges belátnunk, hogy nem lehet felsorolni minden felhasznált cikket, mivel az egyik utal a másikra, és így tovább a végtelenségig, ráadásul előfordul, hogy néhány cikk nem is számít megbízhatónak.
A nem wikipediáról származó források listája (nem sorrendben)
QT
KDE
Ezen weblap CSS és HTML kódjának megírásához főként a következő három weblap tartalma volt nagy segítségemre
A weblapon használt betűkészlet licensze
This Font Software is licensed under the Ubuntu Font Licence, Version 1.0.
https://launchpad.net/ubuntu-font-licence
The Ubuntu Font Family are a set of matching new libre/open fonts in development during 2010--2011. The development is being funded by Canonical Ltd on behalf the wider Free Software community and the Ubuntu project. The technical font design work and implementation is being undertaken by Dalton Maag.
Both the final font Truetype/OpenType files and the design files used to produce the font family are distributed under an open licence and you are expressly encouraged to experiment, modify, share and improve.
http://font.ubuntu.com/
A weblapon felhasznált képek forrásai és licenszei (sorrendben)
Hozzátartozó licensz
By Arnold Reinhold [CC BY-SA 2.5 (http://creativecommons.org/licenses/by-sa/2.5)], via Wikimedia Commons
Hozzátartozó licensz
By בנק לאומי לישראל (כרטיס כספומט אישי שלי) [Public domain], via Wikimedia Commons
Hozzátartozó licensz
By בנק לאומי לישראל (כרטיס כספומט אישי שלי) [Public domain], via Wikimedia Commons
Hozzátartozó licensz
By Emx (Wikimedia Foundation) [GPL (http://www.gnu.org/licenses/gpl.html)], via Wikimedia Commons
Hozzátartozó licensz
By Creator: Miguel de Icaza Uploader: Rprpr (Own work) [GPL (http://www.gnu.org/licenses/gpl.html)], via Wikimedia Commons
Hozzátartozó szöveg
A presentation provided by Muzeum Historii Komputerów i Informatyki (Museum of Computer and IT History) from Katowice that happened on April 17th-19th during the event "Dni Wolnego Oprogramowania 2015" held by University of Bielsko-Biała (Akademia Techniczno-Humanistyczna w Bielsku-Białej).
Hozzátartozó licensz
Attribution-NonCommercial-ShareAlike 2.0 Generic (CC BY-NC-SA 2.0) https://creativecommons.org/licenses/by-nc-sa/2.0/
Hozzátartozó licensz
By GRPH3B18 (Own work) [CC BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0)], via Wikimedia Commons
Hozzátartozó licensz
By GRPH3B18 (Own work) [CC BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0)], via Wikimedia Commons
Hozzátartozó licensz
By GRPH3B18 (Own work) [CC BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0)], via Wikimedia Commons
Hozzátartozó licensz
By GRPH3B18 (Own work) [CC BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0)], via Wikimedia Commons
Hozzátartozó licensz
By GRPH3B18 (Own work) [CC BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0)], via Wikimedia Commons
Hozzátartozó licensz
By GRPH3B18 (Own work) [CC BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0)], via Wikimedia Commons
Hozzátartozó licensz
By GRPH3B18 (Own work) [CC BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0)], via Wikimedia Commons
Hozzátartozó licensz
By GRPH3B18 (Own work) [CC BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0)], via Wikimedia Commons
Hozzátartozó licensz
By GRPH3B18 (Own work) [CC BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0)], via Wikimedia Commons
Hozzátartozó licensz
By GRPH3B18 (Own work) [CC BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0)], via Wikimedia Commons
Hozzátartozó licensz
By GRPH3B18 (Own work) [CC BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0)], via Wikimedia Commons
Hozzátartozó licensz
By matt buchanan (originally posted to Flickr as Apple iPad Event) [CC BY 2.0 (http://creativecommons.org/licenses/by/2.0)], via Wikimedia Commons
Hozzátartozó licensz
By Romazur (Own work) [CC BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0)], via Wikimedia Commons
Hozzátartozó licensz
By Foofy at English Wikipedia (Own work) [Public domain], via Wikimedia Commons
Hozzátartozó licensz
By liquidat (Own work) [GPL (http://www.gnu.org/licenses/gpl.html)], via Wikimedia Commons
Hozzátartozó licensz
By Superdiddly [GFDL (http://www.gnu.org/copyleft/fdl.html) or CC BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0)], via Wikimedia Commons
Hozzátartozó licensz
By Evan-Amos (Own work) [Public domain], via Wikimedia Commons
Hozzátartozó szöveg
This is code for the OpenBCI documentation application. This code was derived using Flatdoc and ideas from Spark.io's documentation stie. Thanks to Rico Sta. Cruz, author of Flatdoc, and Zach and co from Spark Labs for developing this resource.
Hozzátartozó licensz
These files have been made available online through a Creative Commons Attribution-ShareAlike 3.0 license.
Hozzátartozó licensz nincs kiírva. A képet határozottan tájékoztató jelleggel publikálták.
Fair Use keretei között használható.
Hozzátartozó licensz nincs kiírva. A képet határozottan tájékoztató jelleggel publikálták.
Fair Use keretei között használható.
Hozzátartozó licensz nincs kiírva. A képet határozottan tájékoztató jelleggel publikálták.
Fair Use keretei között használható.
Hozzátartozó licensz
By The Divine Fluffalizer at en.wikipedia (Transferred from en.wikipedia) [LGPL (http://www.gnu.org/licenses/lgpl.html)], from Wikimedia Commons
Hozzátartozó licensz és szöveg
Gmsh is copyright (C) 1997-2014 by C. Geuzaine and J.-F. Remacle and is distributed under the terms of the
GNU General Public License (GPL) (Version 2 or later, with an exception to allow for easier linking with external libraries).
In short, this means that everyone is free to use Gmsh and to redistribute it on a free basis. Gmsh is not in the public domain; it is copyrighted and there are restrictions on its distribution (see the license and the related frequently asked questions). For example, you cannot integrate this version of Gmsh (in full or in parts) in any closed-source software you plan to distribute (commercially or not). If you want to integrate parts of Gmsh into a closed-source software, or want to sell a modified closed-source version of Gmsh, you will need to obtain a different license. Please contact us directly for more information.
Hozzátartozó szöveg
100% open-source GPL
Giada is constantly under development, free for use and distribution: you can use it without any limitations. Help us to improve it more!
Hozzátartozó licensz
Hozzátartozó licensz
See page for author [GPL (http://www.gnu.org/licenses/gpl.html)], via Wikimedia Commons
Hozzátartozó licensz
By Andreas Nilsson (http://live.gnome.org/GTKLogo) [GFDL (http://www.gnu.org/copyleft/fdl.html), CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0/), GFDL (http://www.gnu.org/copyleft/fdl.html) or CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0/)], via Wikimedia Commons
Hozzátartozó szöveg
GIMP is Free Software and a part of the GNU Project.
Hozzátartozó szöveg
Inkscape is free! By this, we mean it is free of cost, free to use and distribute, and open to peek into the source code.
Inkscape is Free and Open Source Software licensed under the GPL.
Hozzátartozó licensz
This site and its content is licensed under the LGPL 2.1 license. This license allows you to modify, redistribute and sublicense the work, even allowing for some commercial use, on the condition that it is accepted without warranty or liability and that there are instructions for obtaining or viewing the original. human readable, legal code
Hozzátartozó szöveg
Pidgin is free and contains no ads. All our code is open source and licensed under the GNU General Public License. This means you can get Pidgin's underlying code and modify it to suit your needs, as long as you publish the changes you make for everyone to benefit from as well.
Hozzátartozó licensz
The code is licensed under the terms of the GNU General Public Licence.
Hozzátartozó licensz
Ardour is licensed under the GNU Public License v2
Hozzátartozó licensz
By Bryan Petty ([1]) [CC BY-SA 1.0 (http://creativecommons.org/licenses/by-sa/1.0)], via Wikimedia Commons
Hozzátartozó licensz
Code::Blocks is distributed under the GPL v3.0 license which means it can be used freely by anyone!
The only exception is the SDK which is allowed to be linked by closed-source plugins.
Hozzátartozó licensz
Audacity is free software. You may use it for any personal, commercial or educational purpose, including installing it on as many different computers as you wish.
You may also copy, distribute, modify, and/or resell Audacity, under the terms of the GNU General Public License (GPL) as published by the Free Software Foundation - either version 2 of the License, or (at your option) any later version. In granting you this right, the GPL requires that the source code you distribute is itself available under the GPL. If you distribute or recommend Audacity in any way, please cite our trademark by referring to Audacity as "Audacity(R)".
Hozzátartozó licensz
FileZilla is open source software distributed free of charge under the terms of the GNU General Public License
Hozzátartozó licensz
GNU General Public License version 2.0 (GPLv2)
Hozzátartozó licensz
By Qr Project [Public domain], via Wikimedia Commons
Hozzátartozó licensz
Hozzátartozó licensz
Hozzátartozó licensz
By Kubuntu 11.04: Canonical Ltd. VirtualBox 4.1.8: Oracle Corporation Windows 7: Microsoft Corporation This screenshot: FleetCommand (talk · contribs) [GPL (http://www.gnu.org/licenses/gpl.html)], via Wikimedia Commons
Hozzátartozó licensz
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 License.
You may select the license of your choice.
Hozzátartozó licensz
By Russelljryan (Self-taken screenshot.) [GPL (http://www.gnu.org/licenses/gpl.html), GFDL (http://www.gnu.org/copyleft/fdl.html) or CC BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0)], via Wikimedia Commons
Hozzátartozó licensz
By Sannaj (Own work) [CC BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0)], via Wikimedia Commons
Hozzátartozó licensz
Hozzátartozó licensz
https://techbase.kde.org/Policies/Licensing_Policy
Standalone media files such as images may be licensed under the Creative Commons Attribution-Share Alike 3.0 Unported licence at http://creativecommons.org/licenses/by-sa/3.0/
Hozzátartozó licensz
http://creativecommons.org/licenses/by/3.0/
Hozzátartozó licensz
Copying of the Xfce logo is subject to the LGPL copyright license.
Hozzátartozó licensz
By LXDE: LXDE Team Screenshot: Hidro (Hidro (talk)) [GPL (http://www.gnu.org/licenses/gpl.html)], via Wikimedia Commons
Hozzátartozó licensz
By JeffHoogland (Own work) [CC BY-SA 4.0 (http://creativecommons.org/licenses/by-sa/4.0)], via Wikimedia Commons
Hozzátartozó licensz
GNU GPL, LGPL, and various other free software licenses
Hozzátartozó licensz
By Максим Пе (Own work) [CC BY-SA 4.0 (http://creativecommons.org/licenses/by-sa/4.0)], via Wikimedia Commons
És a hozzátartozó licensz
http://opensource.org/licenses/MIT
Végül kijelentem, hogy minden felelősség azé aki ezt a weblapot közzéteszi a nyílt interneten.
Én egy kezdő vagyok, aki most készített életében elősször weblapot.
Nincs tulajdonomban semmi, és a következő jogon kívül nem tartok fenn semmi másat. (Főleg a felhasznált képek különféle licenszei miatt)
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Ezt a weblapot egy kötelező feladat keretében készítettem az ELTE könyvtár és információtudomány karán a Hálózati Ismeretek 1 tantárgyra 2015-ben.
Ebbe a részbe kerültek az extra linkek.
GUI