2020. január 11., szombat

Az idő mint tényező

Időszámításunk előtt (Krisztus születése előtt)3500 körül a babiloniak rágóbotot használtak a fogaik tisztántartására. Az időmérés első eszközei a napórák voltak. Számtalan naptár van érvényben, vallások és népek más és más módon mérték a múló időt. Az általunk használt  Gregoriám(Gergely) naptár a  Julián naptár módisított változata, amit Julius Caesar Róma alapítása után 709-ben (Kr. e. 45-ben) vezettette be. Ebben egy év 365 napból állt, és minden negyedik évben egy szökőnapot iktattak be, és ehhez az ókori egyiptomi naptárat vette alapul. Az így átlagosan kialakuló 365,25 napból álló év azonban hosszabb, mint a 365 nap 5 óra 48 perc 46 másodpercből álló szoláris év, ami 365,242199 napnak felel meg. XIII. Gergely pápa rendelete szerint az új naptár 1582. október 4-én csütörtökön lépett életbe oly módon, hogy az azt követő nap október 15. lett, a kettő közötti napok abban az évben kimaradtak. Ugyanakkor a hét rendszerét ez nem befolyásolta, mivel 15-e péntekre esett és nem hétfőre, mint amilyen napra kellett volna, amennyiben 4-e csütörtökre. Az új naptár bevezetését azonban a legtöbb országban nem azonnal és nem minden probléma nélkül fogadták el, elterjedése több évszázados folyamat volt.
1582. október 4-én, csütörtökön lépett életbe.

A Cultura Magazin cikke csak engedéllyel másolható.
1614 
A Gergely-naptárra való áttérés ideje néhány országban így történt 1582. október 4-én, csütörtökön lépett életbe, nálunk 1587ben.

 Nézzük meg a Gergely-naptárban lévő    2020 más naptárakban milyen időt jelent;
Ab urbe condita    2773
Bahái naptár    176 – 177
Berber naptár    2970
Bizánci naptár    7528 – 7529
Buddhista naptár    2564
Burmai naptár    1382
Dzsucse-naptár    109
Etióp naptár    2012 – 2013
Hindu naptárak
Vikram Samvat    2075 – 2076
Shaka Samvat    1942 – 1943
Kali-juga    5121 – 5122
Holocén naptár    12020
Iráni naptár    1398 – 1399
Japán naptár    2680 (Jimmu-korszak)
Kínai naptár    4716–4717
Kopt naptár    1736 – 1737
Koreai naptár    4353
Muszlim naptár    1441 – 1442
Örmény naptár    1469

Thai szoláris naptár    2563
Zsidó naptár    5780 – 5781

A napórát eleinte Babilonban és Alexandriában fejlesztették tovább, majd az ókori görögök, fejlett trigonometriai ismereteik alapján, bonyolult és változatos formájú napórákat készítettek. Az arab tudósok - a görögök matematikai ismereteit és terveit felhasználva - egyszerűsítették a napórák szerkezetét. A X—XI. században élt Alhazen arab tudós optikai tárgyú művét a XIII. század elején fordították latinra. Ebben leírta, hogyan kell óravonalakat szerkeszteni különféle felületeken.A sumérok 5000 évvel ezelőtt, ki tudták számolni a holdfogyatkozást. A babiloniak már harmadfokú egyenleteket használtak. Kr.e. 6. évezredből származó cserépdarabot találták, egy ősi település létezhetett az újkőkorban a mai Bulgáriában. (http://museum.sliven.net)

Az idő mérése talán az írás megjelenésével kezdődhetett. 
A kormeghatározás így elég érdekes vetületet kaphat. 4,4 milliárd éves kis cirkon kristályt találtak, de vajon hogyan állapították meg a korát?

A szénizotópos kormeghatározás olyan radiometrikus kormeghatározási módszer, amely a természetben előforduló 14C izotópot használja a széntartalmú anyagok korának meghatározására kb. 60 000 évre visszamenően. A radioaktív szén sugárzása a 37 000 évet meghaladó korú minta esetében már nehezen különíthető el a természetes háttérsugárzástól. 10 000 darab szénatom bomlásának kimutatása már 80 éves pontosságot jelenthet.

A protoírás Kr. E. 7. évezredben, a Jiahu írás Kr. e. 6600-ból származik, a Vinca írás Kr. E. 6. – 5. évezred ből, és az Indus írás ami Kr. E.3500ra tehető. Fix csillagászati pontok alapján viszonyították.
A mérés alapja a kvarckristály rezgése, majd az atomok rezgése lett.

Johannes Putsch (1516-1542) tiroli humanista által készített metszet "az európai kontinensről készített legrégebbi ismert ábrázolás egy királynő alakjában
 



2020. január 10., péntek

Mi lesz ebből emberek?

A közoktatás politikai kérdéssé avanzsálódott? Ezzel évtizedekre beszűkülhetnek a munkaerő piaci és továbbtanulási lehetőségek a diákok számára. A háztartás-ökonómia-biológia-kémia-fizika-földrajz=természetismeretként él tovább, a vizuális kultúra + informatika + technika =digitális kultúra néven, így 30 órára csökken a heti óraszám. de mi lesz az ára? Ezen tárgyak tanulása során a tanuló gyakran találkozik olyan tartalmakkal, amelyek más tantárgyakon belül is megjelennek. A határtudományok átfedése a hétköznapokban is fellelhető, a művelt ember egyben polihisztor, aki átlátja a természeti törvényeket. Erős a kémia kapcsolódása a fizikával, a biológiával, a matematikával és a földrajzzal. Egyik tárgy előfeltétele a másiknak. A földrajzi és kémiai ismeretek szükséges előfeltételei a biológiai ismeretek megértésének, ami az egészségügy alapja, vagy a matematikai ismeretek a fizikai és kémiai összefüggéseknek. Kémia és rajz nélkül nincs vizuális kultúra vagy képzőművészet. Aligha képzelhető el a releváns problémák megoldása, vagy az életszerű helyzetek helyes értékelése ezen ismeretek nélkül. A hétköznapi életben empirikusan megszerzett ismeretek megértése, fogalomalkotása és a komplex rendszerek átlátása nem lehetséges. A környezeti életünkben a racionális életvezetés  háztartásökonómia vagy a kémia nélkül elképzelhetetlen és megérthetetlen, mint ahogy a táplálkozás és az energiagazdálkodás sem képzelhető el.

2020. január 8., szerda

أقرأ كتابًا.

إِنَّ الَّذِينَ كَذَّبُوا بِآَيَاتِنَا وَاسْتَكْبَرُوا عَنْهَا لَا تُفَتَّحُ لَهُمْ أَبْوَابُ السَّمَاءِ وَلَا يَدْخُلُونَ الْجَنَّةَ حَتَّى يَلِجَ الْجَمَلُ فِي سَمِّ الْخِيَاطِ وَكَذَلِكَ نَجْزِي الْمُجْرِمِينَ
  سري
لا أحد يعرف عني
 انا جاسوس
 أقرأ كتابًا.
أكتب كتابًا.  كتبت هذا
ما هو مضحك، في الواقع، هو أنه حتى أنا أتحدث العربية بطلاقة ، لكن
والناس يتعلَّمون الاحرف العربية في المدرسة ولكن ليس اللغة العربية.    
يوجد مثل عربى قديم يقول..
  «لكل سحابة بطانة من فض 

 

Órai gyakorlati feladatok PHP programozás

Az eddigiek során megismertük, hogyan lehet a PHP segítségével dinamikus weblapokat készíteni.   A dinamikus weboldalak az esetek többségében valamilyen adatbázist használnak az oldalon megjelenített adatok forrásaként.   Példák:   Webárúház: áruk, ügyfelek, rendelések  Fórum: témák, hozzászólások, felhasználók  Képgaléria: albumok, képek A MySQL a  legnépszerűbb nyílt-forráskódú relációs adatbázis-kezelő rendszer.  A leggyakrabban a PHP-val együtt használjákdinamikus weboldalak készítésére.   Míg a PHP-t az Apache webszerver egy beépülő moduljaként használtuk, addig a MySQL egy különálló szerverként fut.   Ehhez tudunk konzolos vagy grafikus kliens alkalmazásokkal, vagy a különböző programozási nyelvekben API-kon keresztül kapcsolódni Windows alatt a XAMPP (Lite) csomag   Linux alatt a következő csomagok:  apache2   php5, php5-mysql   mysql-client, mysql-server   phpMyAdmin: a MySQL könnyebb kezelhetőségétszolgáló, böngészőn keresztül elérhető alkalmazás  Első lépésként csatlakoznunk kell egy MySQL kiszolgálóhoz, és azon kiválasztani egy adatbázist.  Készítsük el a dbconfig.php fájlt:   <?php $kapcsolat = mysql_connect("szerver","azonosító", "jelszó"); mysql_select_db("proba", $kapcsolat); ?> A mysql_connect() sikeres csatlakozás esetén a kapcsolatra mutató változóval tér vissza, ellenkező esetben pedig FALSE-szal.   A mysql_select_db("adatbázis neve", $kapcsolat) paranccsal tudjuk kiválasztani azt az adatbázist, amelyet használni szeretnénk.   A MySQL kiszolgálóval létesített kapcsolat a szkript lefutásáig él, utána automatikusan megszakad. szokás ezt a két műveletet egy külön fájlban elhelyezni, és azt minden adatbázist is használó szkript elején ”include-olni”, a require_once("dbconfig.php"); paranccsal.   Ezáltal csak egyszer kell megírnunk, és szükség esetén csak egy helyen kell módosítanunk az adatbázishoz való kapcsolódást végző kódrészletet.   Az ”include-olás” miatt az ”include-olt” szkript nem ér véget, így a tartalmazó szkriptben is élni fog az adatbáziskapcsolat. A kapcsolódás után hibakezelést is végezhetünk:   if (!$kapcsolat) {  die('Hiba a csatlakozáskor: ' .  mysql_error()); }   A die(”Hibaüzenet”) paranccsal félbeszakíthatjuk a program futását, és kiírathatjuk a hiba okát.   A mysql_error() függvény a legutóbbi MySQLnek küldött utasítás során keletkezett esetleges hibaüzenettel tér vissza. Feladat: Szeretnénk nyilvántartani a kurzusainkat egy adatbázisban. Szükségünk van egy weblapra, ahol kilistázhatjuk a kurzusaink nevét és kreditértékét, valamint új kurzusokat szúrhatunk be az adatbázisunkba.  Relációséma: Kurzus (kód, név, kredit)   Ezt a táblát fogjuk létrehozni és adatokkal feltölteni a phpMyAdmin segítségével. Később ezt SQLparancsokkal is meg tudjuk majd oldani Lépjünk be a phpMyAdmin alkalmazásba a következő címen: http://localhost/phpmyadmin   Hozzunk létre egy új adatbázist ”proba” néven!   Ebben hozzunk létre egy új táblát ”kurzusok” néven 3 mezővel!   Adjuk meg a 3 mezőt a következők szerint:   kod: VACHAR típusú, 10 hosszúságú, PRIMARY Index   nev: VACHAR típusú, 30 hosszúságú   kredit: INT típusú Az Importálás fülön adjuk meg a ”kurzusok.csv” fájlt.   Az elejétől kihagyandó rekordok számát állítsuk 1-re!   Válasszuk ki a ”CSV” opciót a fájlformátum esetén!   Ha minden rendben zajlott, a Tartalom fülön láthatjuk az adattáblánk tartalmát.   Megjegyzés: az adatainkat és a táblák szerkezetét is exportálhatjuk számos formátumban az Exportálás fülön. Listázzuk ki a kurzusaink nevét és kreditértékét!   Készítsük el a listaz.php fájlt:   <?php require_once("dbconfig.php"); $res = mysql_query("SELECT * FROM kurzusok"); while($sor = mysql_fetch_array($res)) { echo $sor['nev']." ".$sor['kredit'];  echo "<br />";}?>A mysql_query("SELECT * FROM kurzusok") parancs végrehajtja a paraméterben kapott lekérdezést és visszatér az eredménnyel.   Ebben az esetben a kurzusok táblával.   A fetch_array függvény lekérdezi egy eredménytábla következő sorát, amit asszociatív és egyszerű tömbként is használhatunk!   Asszociatív tömbként kezelve az adattábla oszlopainak nevére hivatkozva érhetjük el a tábla sorainak egyes mezőit. echo "<table border='1'><tr> <th>Név</th> <th>Kredit</th> </tr>"; while($sor = mysql_fetch_array($res)) {  echo "<tr>"; echo "<td>" . $sor['nev'] . "</td>";  echo "<td>" . $sor['kredit'] . "</td>"; echo "</tr>";}echo "</table>"; Készítsük el az alább látható űrlapot, és afeldolgozást végző PHP-lapot (kurzus.{html,php})!   $sql="INSERT INTO kurzusok (kod, nev, kredit) VALUES ('$_POST[kod]','$_POST[nev]','$_POST[ kredit]')"; $res = mysql_query($sql);   Az INSERT INTO tábla(mezők) VALUES (értékek) utasítással adatokat szúrhatunk be egy táblába.   Az adatokat bekérő űrlap, és a feldolgozását végző kód gyakran egy fájlban található.   Ekkor vigyázni kell arra, hogy az űrlap első betöltésekor, és újratöltésekor ne próbáljunk megadatokat beszúrni az adatbázisunkba, mivel azelőtt az űrlap még üres volt!   Ez megoldható úgy, hogy az űrlap rendelkezik egy rejtett beviteli mezővel, és csak akkor szúrúnk be adatokat, ha ez a mező is értéket kapott, ami a ”Küldés” gombra való kattintással meg is történik Az insert.php fájl a módosítás után:   <form action="insert.php" method="post">  … <input type="hidden" name="kuld"></form><?php if (isset($_POST['kuld'])) {… // beszúrjuk az adatokat}?> Hozzuk létre a következő sémával rendelkező táblát: Könyv (sorszám, szerző, cím) !  Készítsünk egy oldalt, amelyen megjelennek a táblában lévő könyvek adatai táblázatos formában!   Készítsünk egy oldalt az új könyvek felvételéhez!   Készítsünk egy legördülő listát, amely a könyvek címét tartalmazza (, a kulcsa pedig a könyvek sorszáma). Ezt helyezzük el egy űrlapba, amiről egy olyan oldalra juthatunk, ami a kiválasztott könyv adatait jeleníti meg!   Oldjuk meg az előzőt egy fájlban! 


Gyakorlati óra témája; Windows Server 2016 címtárak szerepe és kezelése

A címtár egy olyan adatbázis, ami képes a hálózat valamennyi erőforrásának azonosítására, és hierarchikus rendszerben való tárolására, és emellett a hálózat fizikai felépítését és protokolljait átláthatóvá teszi, így a hálózat erre feljogosított felhasználói elérhetik a hálózat erőforrásait anélkül, hogy tudnák, hol találhatóak azok valójában, vagy hogyan kapcsolódnak egymáshoz fizikailag. A címtár tehát megadja a rendszergazda számára azt a lehetőséget, hogy a központilag előírható beállítások és korlátozások révén garantálhassa a rendszer és az egyes gépek folyamatos működőképességét és biztonságát. Ez persze a felhasználók számára bizonyos korlátozásokkal jár, de egy nagyobb hálózat folyamatos működőképességének fenntartása érdekében erre mindenképpen szükség van. Remélem érthető volt!

Active Directory környezetben nincsen szükség arra, hogy az új felhasználói fiókot vagy csoportot minden egyes gépen külön létrehozzuk, a címtár által tárolt egyetlen felhasználói fiók tulajdonosa valamennyi (a tartományhoz tartozó) számítógépen bejelentkezhet, a csoportok pedig jogosultságokat kaphatnak a hálózati és a helyi erőforrások eléréséhez is, és változás esetén is csak ezt az egy objektumot kell módosítanunk – értelemszerűen – egyetlen helyen.

Másrészt, amiből várhatóan sok van egy hálózatban (számítógépek, nyomtatók, felhasználói profilok stb.), azt a csoportházirend segítségével egyszerre érhetjük el, tulajdonságaik, beállításaik egyetlen mozdulattal módosíthatók.

Mi a szerepe az AD-nek itt?

Az Active Directory szolgáltatásokat nyújt hálózatunk mindennapi üzemeltetéséhez:
Biztosítja a szervezet működéséhez szükséges objektumok és a hálózat publikált erőforrásainak (felhasználói fiókok, csoportok, erőforrás-objektumok, jogosultságok, fájlok és megosztások, perifériák, gép kapcsolatok, adatbázisok, szolgáltatások stb.) egy helyen történő nyilvántartási lehetőségét.
Az Active Directory a hálózat objektumait egységes és jól kereshető formátumban tárolja, így azok könnyen elérhetőek mind a felhasználók, mind pedig a rendszergazdák számára.
Lehetővé teszi a fent említett hálózati erőforrások kezelését, létrehozását, törlését, tulajdonságaik beállítását.
Lehetővé teszi a centralizált, vagy éppen a decentralizált felügyeletet és az engedélyek delegálását.
Csökkenti, optimalizálja a hálózati forgalmat, és számos különböző erőforráshoz (megosztott mappák, nyomtatók, levelezés stb.) egyetlen felhasználónév, jelszó megadásával biztosít hozzáférést (Single Sign On, SSO).
A felügyeleti rendszer alapját képező, rendkívül összetett lehetőségekkel rendelkező csoportházirend megoldás megkönnyíti a legbonyolultabb hálózat felügyeletét is.
Az Active Directory-címtárnak igen fontos szerepe van más technológiák használatával kapcsolatban is, többek között nincs nélküle Exchange, és jelentős szerepet kap például az RRAS, az ISA Server, a Certificate Services és még sok más kiszolgáló komponens életében is.


Az Active Directory szorosan integrálódik a Windows-rendszerek biztonsági modelljébe, a felhasználóazonosítással és hozzáférés-vezérléssel kapcsolatos feladatok legnagyobb részét átveszi az ügyfélgépektől. Ugyancsak az Active Directory végzi a felhasználók azonosítását számos kiszolgáló-alkalmazás esetében is, például az SQL Server, az Exchange és az IIS is az Active Directory segítségével tartja nyilván a felhasználókat, azok tulajdonságait és jogosultságait.

Az Active Directory beépített biztonsági szolgáltatása két alapvető részből áll: elvégzi a bejelentkezési azonosítást (ezzel összefüggésben tárolja és védi az azonosítókat), illetve szabályozza az egyes objektumokhoz való hozzáférést. Az üzemeltetők egyetlen bejelentkezéssel kezelhetik a címtár adatait a teljes hálózaton, a megfelelően hitelesített felhasználók pedig a hálózat bármelyik pontjából hozzáférhetnek az engedélyezett erőforrásokhoz.

Az Active Directory alkotóelemei
Az Active Directory névtér az alábbi elemekből épül fel:

• Erdő (Forest) – A legmagasabb szintű Active Directory tároló neve erdő. Az erdő közös sémát és globális katalógust használ, egy vagy több tartományt foglal magába. Az erdő első tartományát az erdő gyökértartományának hívják.


Az Active Directory hierarchikus felépítése, fa (Tree) – Ha az erdő több tartománya összefüggő DNS-tartományneveket használ, vagyis egymás gyermek, illetve szülőtartományai, akkor a struktúrát tartományfának nevezzük.Tartomány (Domain) – A tartomány az Active Directory alapvető szervezeti és biztonsági egysége. A tartomány olyan ügyfelek, kiszolgálók és egyéb hálózati erőforrások gyűjteménye, amelyek közös címtáradatbázist alkotnak, és egyben a replikáció alapegységét képezik. Egy adott tartomány minden tartományvezérlője fogad módosításokat, és azokat a tartomány többi tartományvezérlőjére replikálja. Az Active Directory-címtárban minden tartományt egy-egy DNS-tartománynév azonosít, és minden tartomány legalább egy tartományvezérlőt tesz szükségessé. Szervezeti egység (Organizational Unit, OU) – A szervezeti egységek az Active Directory-objektumtárolói, amelyekbe felhasználók, csoportok, számítógép-objektumok, illetve más szervezeti egységek helyezhetők. A szervezeti egységek rendkívül fontos szerepet játszanak a csoportházirend érvényesítésével és a felügyeleti jogok delegálásával kapcsolatban is. A szervezeti egységek használatával a tartományon belüli hierarchia pontosan megfelelhet az adott szervezet hierarchikus felépítésének.

Az Active Directory a multimaster replikációs modellt alkalmazza a címtáradatok tartományvezérlők közötti szinkronizációjához. Ez azt jelenti, hogy a tartományvezérlők mindegyike tartalmazza a teljes címtáradatbázist, és az mindegyik tartományvezérlőn módosítható is. Hogy a címtárpéldányok (replikák) mindegyike folyamatosan a helyes adatokat tartalmazhassa, szükség van a tartományvezérlők közötti folyamatos, és lehetőleg minél kevesebb erőforrást felhasználó szinkronizációra. Ezt a folyamatot nevezzük replikációnak. Ha a replikáció megfelelően működik, akkor a címtárpéldányok a több ponton való módosítás ellenére is folyamatosan megtartják a többi példánnyal megegyező, konzisztens állapotukat.

Címtárpartíciók
A partíció az Active Directory egy összefüggő részfája, amely egy egységként replikálódik az erdő más, ugyanennek a részfának egy-egy replikáját magukban foglaló tartományvezérlői számára. Az Active Directoryban minden tartományvezérlő egyenként legalább a következő három címtárpartícióval rendelkezik:

Séma partíció (Schema Partition) – A séma partíció az osztály- és attribútum-definíciókat, vagyis az objektumok és tulajdonságok formális leírását tárolja. A partíció minden tartományvezérlőn és minden globális katalógusban megtalálható. Az Active Directory séma az egész erdőre vonatkozóan megegyezik.

Konfigurációs partíció (Configuration Partition) – Ez a partíció a címtár topológiájára vonatkozó adatokat tárolja. Megtalálhatók benne a tartományokra, a fákra és az erdőre vonatkozó információk, valamint itt tárolódik a replikációs topológia, és az ehhez kapcsolódó metaadatok is. A konfigurációs adatok az egész erdőre vonatkoznak, és megtalálhatók az erdő valamennyi tartományvezérlőjén.

Tartomány partíció (Domain Partition) – itt találhatjuk meg a felhasználókra, számítógépekre, csoportokra és egyéb tartomány szintű objektumokra vonatkozó adatokat. A partíció az adott tartomány minden tartományvezérlőjén megtalálható.

Alkalmazás partíció (Application Partition) – a rendszert futtató tartományvezérlők a fentieken kívül egy vagy több alkalmazás-címtári partíciót is tárolhatnak.





A gyakorlat során áttekintettük az LDAP-hoz kapcsolódó ajánlások alapjait. Megismerkedtünk az LDAP címtár felépítésével, az LDAP-protokollal és a hozzá kapcsolódó hitelesítési módszerekkel. Néhány egyszerűbb példán keresztül megnéztük az LDIF formátumot

Két fontos dologgal fogunk ma foglalkozni, az egyik az OpenLDAP és a kapcsolódó linuxos eszközök voltak. Itt a parancssori eszközökhöz az LDIF formátumot kell alaposabban tanulmányozni.

Windows esetén az Active Directoryt vizsgáltuk meg, a gyakorlati anyag bemutatta mind a
grafikus felületét, mind a kezeléséhez szükséges PowerShell cmdleteket. Itt ha elakadunk,
akkor a magyar nyelvű PowerShell könyvet [10] érdemes fellapozni.

Windows: Active Directory A feladatokat egy Windows Servert futtató virtuális gépen fogjuk végrehajtani. A Windows Server 2016 csak 64 bites számítógépen fut, így ez egy 64 bites virtuális gép, aminek a futtatásához hardveres virtualizáció támogatásra (Intel VT-x, AMD-V) van szükség a fizikai gépben. A tárgyban már ezt a verziót használjuk, mert a régi 32 bites kiszolgálókra már nem érhető el az Active Directory PowerShell modul. A segédlet a következő lépéseken keresztül segít megismerkedni az Active Directory címtárral.

1. Először kipróbáljuk az Active Directory Users and Computers konzolt: megnézzük a címtár szerkezetét és meglévő elemeit, létrehozunk új elemeket.

2. Ha nagyjából eligazodunk már a címtárban, akkor a Sysinternals AD Explorer eszköz segítségével megnézzük a címtár belső felépítését (az egyes elemek LDAP neveit és attribútumait, az LDAP sémát stb.)

3. Ezután egyszerű lekérdezéseket hajtunk végre PowerShellből.

4. Végül kitekintünk kicsit a csoportházirendek (group policy) világába. 3.1 Active Directory Users and Computers Első lépésként megnézzük a címtár tartalmát, majd létrehozunk és módosítunk elemeket.

1. A virtuális gép indítása A virtuális gép indításakor az I moved it opciót válasszuk!

2. Belépés a szerverre  Belépő képernyő tartományi környezetben Active Directory használata esetén az alapegység a tartomány (domain), az egy tartományba tartozó számítógépeket és egyéb elemeket tudjuk központilag kezelni, ezeknek az adatai tárolódnak a címtárban. Ha egy számítógép tagja egy tartománynak, akkor a belépésnél már nem csak azt kell megadni, hogy milyen felhasználóval akarunk belépni, hanem hogy a tartományi vagy helyi felhasználóval akarunk-e belépni. Tartományvezérlő (domain controller) esetén (olyan számítógép, ami az Active Directory címtár egy példányát tárolja) viszont nincsenek helyi felhasználók, így ez esetben egyértelmű a helyzet. Mivel a virtuális gépünk tartományvezérlő, ezért itt ilyenkor az IRFHF nevű tartományhoz tartozó Administrator felhasználóval lépünk be. A belépéshez szükséges jelszót a virtuális gép mellett lévő README fájl tartalmazza.
A címtár hierarchiája
Bontsuk ki a University tárolót, hogy lássuk a hierarchia egy részét (14. ábra).
FIGYELEM: a University tároló tartalma csak egy példa, hogy milyen jellegű felépítéseket
lehet tárolni egy címtárban.
Hozzunk létre további hierarchiaszinteket a címtárban a gyökértől kiindulva (15. ábra)!
(LDAP címtár esetén elvileg megengedett, hogy tetszőleges típusú elemnek legyen
gyereke, így mást is lehetne tárolónak használni, de az AD GUI-ja csak szervezeti
egységet enged).

3. Ismerkedés a címtárral Az Active Directory Users and Computers konzol

4. A címtár hierarchiája Bontsuk ki a University tárolót, hogy lássuk a hierarchia egy részét

5. Felhasználók tulajdonságai
Válasszuk ki a címtárban szereplő egyik tetszőleges felhasználót, és nézzük meg a
tulajdonságait .
a. Írjuk át valamelyik tulajdonságát!
b. Keressük ki, hogy milyen csoportoknak a tagja!
c. Hol tárolhatjuk a címtárban egy felhasználóról, hogy ki a felettese?
d. Hozzunk létre egy új felhasználót, és állítsuk be az alaptulajdonságait!
TIPP: az alapértelmezett jelszóházirend szerint a jelszónak legalább 8 karakter
hosszúnak kell lennie, és tartalmaznia kell kis- és nagybetűt, valamint számot vagy
speciális karaktert.
6. Csoportok kezelése
Csoportokat (group) azért hozunk főleg létre Active Directory környezetben, hogy
később felhasználók egy halmazának valamilyen közös jogosultságokat osszunk az
operációs rendszerben vagy valamilyen más alkalmazásban (tehát csoportok
segítségével valósítjuk meg a Role Based Access Control módszert).
Válasszunk ki egy meglévő csoportot, és nézzük meg a tulajdonságait . A
kiadott virtuális gépen például a Projects OU alatt találunk csoportokat.

Egy csoport esetén viszonylag kevés attribútumot lehet megadni (név, leírás, email…).
Figyeljük meg viszont az ábrán, hogy csoportnak lehetnek más csoportok is a tagjai.
a. Hozzunk létre egy új csoportot!
b. Rakjunk bele meglévő felhasználókat és csoportokat az új csoportba!
Most, hogy hozzáadtunk saját elemeket is a címtárhoz, próbáljunk meg keresni benne.
7. Keresés a címtárban
Nyissuk meg a keresés ablakot (Find… a jobb gombos menüben). Alapesetben a név és
leírás alapján lehet keresni, de az összetett nézetben egész bonyolult lekérdezéseket is
meg lehet adni
Feladat; keressük meg az olyan felhasználókat, akiknek a telefonszáma 777-tel kezdődik, és ki van töltve az email címük!

Részei

1. AD Explorer használata
2. A címtár partíciói
3. Tartományi partíció (Domain Directory Partition)
A tartomány elemeit (felhasználók, számítógépek, csoportok, …) a tartományi partíció
tárolja. Ezt jeleníti meg az Active Directory Users and Computers eszköz is, csak az egy
egyszerűbben használható felhasználói felületet nyújt

Lekérdezés PowerShellből

Két fő módon kérdezhetünk le PowerShellből AD címtárat. Az AD Service Interface (ADSI)
általánosabb és elérhető a régebbi Windows Servereken is. Az Active Directory Module for
Windows PowerShell pedig kifejezetten AD elérésére szolgáló célorientált cmdletek
gyűjteménye, ami a Windows Server 2008 R2-ben bevezetett AD Web Services felületet
használja a háttérben. A gyakorlaton ezt fogjuk használni.
A PowerShell második verziójában jelent meg az ActiveDirectory nevű új modul, amely a
legújabb verzióban már 147 darab cmdletet biztosít az AD kényelmes kezelésére.
1. Az ActiveDirectory modul betöltése
A következő paranccsal tudjuk betölteni a modult (erre 3-as PowerShelltől kezdve nincs
is szükség, ott automatikus modulbetöltés van már):
Import-Module ActiveDirectory
Kliens Windowsokon nem elérhető alapesetben ez a modul, azt a Remote Server
Administration Toolkit (RSAT) [12] részeként lehet telepíteni.
2. Csatlakozás a címtárhoz
A modul a háttérben nem az LDAP-protokollt, hanem egy új, webszolgáltatás alapú
felületét használja az AD-nek. A rendszer architektúráját mutatja be a következő ábra
(22. ábra). Az Active Directory Web Services alapértelmezetten a 9389-es porton figyel,
és a cmdletek ehhez csatlakoznak.
Amikor betöltjük az ActiveDirectory modult, akkor az megpróbál automatikusan
csatlakozni az aktuális tartományhoz. A kiadott virtuális gépen ez elvileg sikerrel is jár,
úgyhogy ilyenkor nincs több előkészítésre szükség.
Ha ez nem sikerülne (mert például a gépünk nem tagja a tartománynak), akkor a
következő hibaüzenet kapjuk:
WARNING: Error initializing default drive: 'Unable to find a default server with
Active Directory Web Services running.'.
Ha tudjuk, hogy melyik tartományhoz akarunk kapcsolódni, akkor ennek a
legegyszerűbb módja az, ha egy új PSDrive meghajtót hozunk létre:
New-PSDrive -Name AD -PSProvider ActiveDirectory -Root "" -Server "10.90.1.10"
-Credential irfhf\administrator
Itt most az egyik tartományvezérlő IP-címét adtuk meg közvetlenül, de az
ActiveDirectory modul számos más módszert is biztosít a címtár megcímzésére.

3. Az elérhető cmdletek listája
Gyors áttekintést kaphatunk az elérhető funkciókról, ha kilistázzuk az ActiveDirectory
modulban lévő cmdleteket:
Get-Command -Module ActiveDirectory
4. Az ActiveDirectory modul objektumainak modellje
Az about_ActiveDirectory_ObjectModel súgó téma11 részletes leírást tartalmaz arról,
hogy az egyes objektumok milyen típusú információt tárolnak. A közöttük lévő öröklési
kapcsolat ott szövegesen van ismertetve, az alábbi ábra a legfontosabb elemeket
grafikus formában jeleníti meg

5. Navigálás az AD: meghajtóban
Az AD: meghajtó látszólag ugyanolyan meghajtó, mint a többi, a megszokott
parancsokkal tudunk navigálni benne, pl. cd (Set-Location), ls (Get-ChildItem):
PS C:\> cd AD:
PS AD:\> dir

Arra figyeljünk csak, hogy az elemekre a DN-jükkel vagy az RDN-jükkel kell hivatkozni,
és nem a sima nevükkel:
PS AD:\> cd '.\DC=irfhf,DC=local'
Működik az automatikus kiegészítés is (TAB), csak itt is a DN-t vagy RDN-t kell elkezdeni
beírni.

6. Felhasználó lekérdezése
Kiindulásképpen kérdezzünk le egy konkrét felhasználót:
PS C:\> Get-ADUser rkeith

7. Keresés a címtárban
Keresni az egyes cmdletek -Filter paraméterével lehet, ilyenkor a feltételt a
PowerShell saját PowerShell Expression Language nyelvén lehet megfogalmazni. Az
LDAPFilter paraméter segítségével pedig a megszokott LDAP keresési szintaxist lehet
használni.
A keresés mélységét és irányát az LDAP-ból ismert SearchBase és SearchScope
paraméterekkel lehet befolyásolni.
Ha nem egy specifikus elemtípusra akarunk keresni (pl. csoport, felhasználó), akkor
használhatjuk a Get-ADObject cmdletet:
Get-ADObject -Filter 'CN -like "m*"' -SearchBase "OU=Partners,DC=irfhf,DC=local" `
-SearchScope Subtree

Csoportházirendek

1. Ismerkedés a konzollal
Nyissuk meg a Group Policy Management Console felületet.
Legalább egy házirendnek minden tartományban kell léteznie, ez pedig a Default Domain
Policy. Nézzük meg a tulajdonságait (Scope, Details fül).
Nézzük meg, hogy milyen beállítások vannak megadva rá (Settings fül). Miket
szabályoznak ezek a beállítások?
2. Házirend szerkesztése
Minden szervezeti egységhez (OU) lehet külön házirendet készíteni vagy csatolni.
Készítsünk a Partners OU-hoz egy új házirendet (26. ábra).
A házirendben külön lehet megadni számítógép és felhasználó specifikus beállításokat,
valamint kötelezően érvényre jutó (policy) és ajánlott beállításokat (preferences).
a. A számítógéphez tartozó Windows Settings résznél keressük ki a Security
eseménynapló maximális méretét szabályozó beállítást, és állítsuk be 32 MB-ra!
b. Az Administrative Templates részben szereplő házirendek között a Filter opcióval
(Action menü) lehet részletesen keresni. Keressük ki azokat a beállításokat,
amikben a DHCP kulcsszó szerepel! (Vigyázat: a keresési kifejezés beírásakor
legyen angol a billentyűzetkiosztás, különben nem talál semmit.)
c. Nézzük meg a felhasználói beállításokat is! Hol lehet szabályozni, hogy a
felhasználók Asztalán megjelenjen-e a Lomtár ikon?

A séma az Active Directory-adatbázis szerkezete, vagyis a címtárban tárolható objektumok definícióinak összessége. A globális katalógus (Global Catalog, GC) olyan tartományvezérlői szerep, amelynek hordozója a címtár összes objektumának alapadataival, elérhetőségeiknek információjával rendelkezik a teljes erdőre vonatkozóan, vagyis minden objektumról tud „valamit”
Felügyelet
A leggyakrabban használt konzol Active Directory Users and Computers (Active Directory – felhasználók és számítógépek) névre hallgat.
Az Active Directory Sites and Services (Active Directory – helyek és szolgáltatások
Az Active Directory Domains and Trusts (Active Directory-tartományok és bizalmi kapcsolatok
Az Active Directory Schema (Active Directory Séma
Gyorsitótár tartalmának lekérdezése ipconfig /displaydns

2019. december 29., vasárnap

Zorin OS 15.1 Ultimate x64

A Zorin OS Ultimate lehetővé teszi a számítógép teljes kiaknázását. Akár üzleti vállalkozást, multimédiát vagy szerencsejátékokat keres, hihetetlen munka elvégzéséhez támaszkodhat a hatalmas szoftverválasztékára, vagy csak a szórakozásra. A Zorin OS egy Ubuntu alapú személyi számítógép operációs rendszer. Ez az operációs rendszer a Linux-alapú számítógépes rendszerek új felhasználóinak. Az operációs rendszer egyik beépített funkciója lehetővé teszi a felhasználók számára, hogy a felületet a Microsoft Windows vagy a Mac OS-hez hasonlóan változtassák. A Wine és a PlayOnLinux csomagban szállítva, amely lehetővé teszi a felhasználók számára, hogy a Windows szoftvert futtassák az átmenet és a játék megkönnyítése érdekében. A Zorin OS alkotói az operációs rendszer különféle verzióit terjesztik; a verziók közül kettő, az "Ultimate" és az "Business" verzió megvásárolható. Jelenlegi kiadásai a Zorin OS 15 Ultimate és a Zorin OS 15 Core. Az új kiadások továbbra is a Debian-alapú Linux kernel és a GNOME felületet használják.
A Zorin OS 15 az Ubuntu 18.04.2 LTS alapú. Ez a szilárd alap számos más Ubuntu-alapú disztró alapját képezi, mint például a közelmúltban kiadott Peppermint OS 10 kiadás.
A Zorin OS 15 felhasználói hozzáférést kapnak a legfrissebb alkalmazásfrissítésekhez is, és a jövőben megkapják a jövőbeli Linux-rendszermag-frissítéseket, ideértve a Linux Kernel 5.0-t is, a Canonical Hardver Enablement Stack (HWE) segítségével.
Használatban könnyű elfelejteni, hogy a Zorin OS asztali élménye a GNOME Shellre épül, azaz ugyanaz a GNOME Shell manapság szinte mindenhol használatos.
Valódi harmónia van ennek a disztrónak a felépítésében, amely csak használat közben énekel, így az egész asztal valóban összhangban áll. A Zorin OS 15 legfontosabb eleme a Zorin Connect. Ha van Android-készüléke, akkor élvezetre vágyik. A PushBullethez hasonlóan a Zorin Connect integrálja a telefont az asztali élménybe. Ezen felül a következő képességekkel is rendelkezik:
- Fájlok és webes linkek megosztása az eszközök között
- Használja a telefont a számítógép távirányítójaként
- Vezérelje a médialejátszást a számítógépen a telefonjáról, és automatikusan szüneteltesse a lejátszást, amikor telefonhívás érkezik
Új asztali téma (sötét módban!):
Minden benne vagyok, amikor valaki megemlíti a "sötét módot" vagy a "sötét témát". Számomra ez a legjobb dolog, ami a Zorin OS 15-en sütésre kerül.
Adaptív háttér és éjszakai fény:
Megadhatja azt a lehetőséget, hogy hagyja, hogy a háttér a nap minden órájában a környezet fényereje szerint alkalmazkodjon. Emellett megtalálhatja az éjszakai módot is, ha nem akarja, hogy a kék fény stresszt keltsen a szemére.
Rendszerkövetelmények:
CPU: 1 GHz-es kétmagos - 64 bites
RAM: 2 GB
Tárolás: 20GB
minimális kijelző: 800*600 felbontás





2019. december 6., péntek

Ritka régi ősnyomtatványok



Biblia latina Biblia latina nyitó

Biblia latina. Párizs, 13. sz. közepe

Hippokratész Hippokratész
Hippocrates: Aphorismi – Galenus: Ars parva – Hippocrates: Prognostica, regulamentum acutarum aegretudinum. 1360.

A Hippokratész kódex 1360-ban készült.

Zsoltáros könyv
Középkori zsoltároskönyv (teljes változat pdf formátumban)
Psalterium cum canticis. Prága - Krumlov, 1440 k.
A kalocsai Főszékesegyházi Könyvtár könyvfestészeti szempontból leginkább kiemelkedő darabja ez a kis psalterium.

Pálmalevél
Satipatthana Sutta (teljes változat pdf formátumban)
Pálmalevelekre írott buddhista meditációs könyv páli nyelven szingaléz karakterekkel.
Ceylon, 16. sz.

Szakál-kódex

Szent Pál levelei

Epistolae Pauli cum glossa Petri Lombardi. Párizs, 1250 k.

Buch der Natur Buch der Natur Buch der Natur
Konrad von Megenberg: Buch der Natur (teljes változat pdf formátumban 76MB!)
Augsburg: Johann Bämler, 1475.

Schedel krónika Schedel krónika Schedel krónika
Hartmann Schedel: Liber chronicarum
Nürnberg: Anton Koberger, 1493.
1493. július 12-én került elsőízben kiadásra az akkori világot összefoglaló Nürnbergi Krónika, vagy Schedel krónika (Liber Chronicarum).

Aldus Aldus nyitó
Aldus Manutius, a híres velencei mester az első kiemelkedő humanista nyomdász.

Vesalius
Andreas Vesalius: De humani corporis fabrica.
Basilae: Johannes Oporinus, 1555.

CaesareumAstronomicum caesareum
Petrus Apianus: Astronomicum caesareum
Ingolstadt, [1540.]

FrobeniusFrobenius
A 16. század német nyelvű nyomdászatában Bázelt igen fontos hely illeti meg. Itt dolgozott a híres Johannes Frobenius, nyomdája 1491-ben indult egy Biblia nyomásával.

Leonhardus Thurneisserus: Historia sive descriptio Plantarum omnium
Berlin, 1578.


Biblia
Lyon: Jacob Mareschal, 1519.
A kalocsai könyvtár egyik legbecsesebb darabja, ezt a Bibliát Luther Márton használta.
A latin Biblia második lapján vörös tintával írt német nyelvű vers olvasható. Aláírás. D. Martin Luther manu prop. Az aláírás vonásai és a tinta eltérő színe valószínűvé teszi, hogy a verset Luther Márton tollba mondta és a nevét írta alá sajátkezűleg.


Nicolaus Copernicus: De revolutionibus orbium coelestium
Basileae: Henricpetrina, 1566.


Farkas Gábor Farkas: A magyar Kopernikusz. Magyar Könyvszemle 125 (2009) 3, p. 305-322.


Tycho de Brahe: Astronomiae instauratae mechanica (teljes változat pdf formátumban)
Wandesburg: Philipp de Ohr, 1598.

Liliomkert

Liliomkert. [Nagyszombat, 1680-1690. között]

Regényes sorsú a kalocsai Érseki Könyvtár Liliomkert című imádságoskönyve. A címlapja hiányzik, ezért nem tudjuk pontosan, mikor és hol nyomtatták. Rákóczi valamelyik embere vitte Törökországba, Rodostóban egy könyvkötő újrakötötte és monogramját beleégette a fedőlapba. A bujdosók leszármazottai csak az 1780-as évek végén térhettek haza. Kollonich László kalocsai érsek közbenjárt értük a császári udvarnál és elérte, hogy amnesztiát kapjanak. A hazatérő száműzöttek hálából Kollonich érseknek ajándékozták ezt a márványozott bőrkötésű könyvet. A bujdosók nevében Velics Ferenc nyújtotta át az imakönyvet. A könyvtábla belső oldalán egy beragasztott papíron Velics leírja hosszú útját Rodostótól Kalocsáig.


Pesti Gábor: Nomenclatura Sex Linguarum. Latinae, Italicae, Gallicae, Bohemicae,  Hungaricae et Germanicae
Bécs: Joannes Singrenius, 1538.


Johann Philipp Abelinus: Theatrum Europaeum
Frankfurt am Main: Matthaeus Merian, 1679.
Matthäus Merian (1593-1650) kiadó, nyomdász, metsző és rajzoló, a városképek specialistája.


Ékiratos terakotta henger és agyagszeg
(Kr.e. 2500 k.)
A Kalocsai Főszékesegyházi Könyvtár gyűjteményének legrégebbi írásos dokumentumai az ókori Mezopotámiából származnak. Az ékiratos terrakotta henger és agyagszeg Gudea lagasi papkirály korából való (Kr.e. 2500 körül). Az agyagszeg az ókori uralkodó nevét viseli és említést tesz építkezéseiről. Az emberiség egyik legrégibb írása a sumérok nevéhez fűződik, akik Dél-Mezopotámia legősibb lakosai voltak. Az ékírás a sumér nyelv írására mintegy Kr. e. 3000 körül alakult ki, eleinte az ékírás jeleivel tárgyakat, később már nehezebben kifejezhető fogalmakat is jelöltek.  Az idő folyamán a képírásos jelek egyre inkább leegyszerűsödtek, és ezáltal elvontabbá váltak, majd a jelek ék alakú elemekből épültek föl. Az ékírásos szövegeket a még puha agyagtáblákba nyomták háromszögletűre faragott nádheggyel, majd a táblákat kiszárították a napon, vagy kiégették.
Az értékes tárgyakat II. Rahmani antióchiai szír katolikus pátriárka ajándékozta Városy Gyula kalocsai érseknek 1908-ban, hálából a szívélyes vendégszeretetért, amelyben kalocsai tartózkodása alatt részesítették.

Ulyssus Aldrovandi: Monstrorum historia

Ulyssus Aldrovandi: Monstrorum historia
Bononia: Nicolaus Tebaldius, 1642.

Ulysses Aldrovandi itáliai reneszánsz természettudós és orvos. A világ egyik első természettudományi múzeumának anyagát ő gyűjtötte össze. Leginkább az állatok, növények és ásványok körében végzett rendszeres és pontos megfigyeléseiről nevezetes.

2019. december 4., szerda

Javascript függvények

Mi a JavaScript?
A JavaScriptet a Netscape fejlesztette ki. Ez egy olyan parancsnyelv, amely segítségével létrehozhatunk interaktív Web-oldalakat. A cikk során számos klasszikus példával megismerkedhet az olvasó, ezeket könnyedén beépítheti a saját oldalaiba, vagy továbbfejlesztheti õket saját igényeinek megfelelõen. Az Internetrõl is letölthetõ sok egyszerű és kevésbé egyszerű példa. Tanácsos ezek forrását is áttanulmányozni, hiszen jó ötletek leshetõk el belőlük.
A JavaScript nem Java!
Mielõtt mélyebben belekezdenénk a JavaScript tanulmányozásába, érdemes egy fontos különbségre felhívni a figyelmet. A JavaScript nem tévesztendõ össze a Java-val! A hasonló név ellenére a Java önálló programozási nyelv, szükség van fordító programra, amivel a forráslistából bájtkódot készíthetünk. A JavaScript pedig parancsnyelv, futtatásához nem kell más, mint egy böngésző, amely kezelni képes a JavaScriptet.
Hasonlóság azonban nem csak a névben van, ugyanis a két nyelv szintaxisa a C nyelvhez hasonlatos, a manapság divatos objektumorientáltságot pedig egyikük sem kerülhette el.
JavaScript futtatása
Mint korábban említettem, csak egy JavaScriptet "értõ" böngészõre van szükségünk. Ez lehet akár a Netscape Navigator, amely a 2.0-ás verzió óta ismeri a JavaScriptet, vagy a Microsoft Internet Explorer (3.0 vagy nagyobb verzió), így a legtöbb ember képes JavaScriptet futtatni.


Események
A programoknak gyakran kell reagálnia olyan eseményekre, mint billentyû lenyomása, vagy az egér mozgatása. Az események és eseménykezelõk a JavaScript programozásban is nagyon fontosak. Az ilyen események kezeléséhez különféle függvények, eseménykezelõk léteznek.

Tekintsük a következõ példát. Azt akarjuk, hogy a JavaScript programunk reagáljon valamilyen eseményre, pontosabban létrehozunk egy gombot, amire kattintva egy ablak jelenik meg a képernyõn. Ez gyakorlatilag azt jelenti, hogy az ablaknak egy kattintás-esemény (click-event) hatására kellene megjelenni. Az itt használt eseménykezelõ neve: onClick.

Gomb alkalmazása és form alkalmazása

<form>
<input type="button" value="Kattints rám!" onClick="alert('Hello!')">
</form>


Gombok használata, háttér színezése gombnyomásra


<HTML>
<HEAD>

<SCRIPT LANGUAGE="JavaScript">
<!-- A kód elrejtése, ha szükséges 

function sarga(){
  document.bgColor="#FFFF00"; 
}

function kek(){
  document.bgColor="#0000FF"; 
}

function eredeti(){
  document.bgColor="#FFFFFF";
}

// Elrejtés vége -->
</SCRIPT>
</HEAD>

<BODY>
<CENTER>
<P>
<FORM>
<INPUT TYPE="button" VALUE="Sárga háttér" onClick="sarga()">
<INPUT TYPE="button" VALUE="Kék háttér" onClick="kek()">
<INPUT TYPE="button" VALUE="Eredeti háttér" onClick="eredeti()">
</FORM>
</P>
</CENTER>

</BODY>
</HTML>


Függvények
Minden programozási nyelvben, így a JavaScript-ben is rendkívül fontos szerepet kapnak a függvények. A nyelv számos függvényt tartalmaz, például a korábban megismert alert() függvény is ezek közül való. A függvényeknek adhatunk át paramétereket, amelyekkel dolgozni fognak (az alert() függvény paramétere az idézõjelek között átadott szöveg volt, amit a függvény egy üzenetablakban jelenített meg). Mi magunk is írhatunk függvényeket, hogy a nagyobb, összetettebb feladatokat kisebb, jobban kezelhetõbb részekre bontsuk. Ezek a függvények szintén átvehetnek paramétereket, sõt értéket is adhatnak vissza, csakúgy, mint más progamozási nyelvekben.

function kulcsszót közvetlenül a függvény neve követi, majd zárójelekben a paramétereket adjuk meg. Ez a függvény két paraméterrel rendelkezik, x-szel és y-nal (amelyek típusát nem adtuk meg). A függvény törzse kapcsos zárójelek között van, és ide helyezzük el a függvényhez tartozó utasításokat.
A függvényben három változót is használunk (x, és eredmeny). A JavaScript programok változókban tárolják az információkat, adatokat. A példánál maradva x illetve y tárolja el az összeadandó számok értékeit, és az eredmeny nevû változó tárolja el az összeget.
Eltérõen más programozási nyelvektõl, a JavaScript-ben nem kell definiálnunk a változók típusát (mint pl. int, float, char stb.), hanem azt a programot végrehajtó böngészõ állapítja meg a változók használata alapján.
JavaScript-ben a változók neve betûvel, vagy aláhúzással (_) kezdõdhet, és a függvénynevekhez hasonlóan szintén különbség van kis- és nagybetûk között.
Változót a var kulcsszóval, majd a változó nevének megadásával deklarálhatunk. Deklaráláskor az értékadó operátor (=) segítségével kezdõértéket is rendelhetünk a változókhoz. Ezt tettük a példánkban is:
var eredmeny = x + y;
Azaz létrehoztuk az eredmeny nevû változót, és kezdõértéknek a paraméterként átadott x és változók összegét adtuk. A függvény törzsének második sora elvégzi a számolás eredményének kiírását. A document.write utasítást használtuk itt fel, amivel már találkoztunk.

Összeadás függvénnyel


function szamol_1(x,y){
  var eredmeny = x + y;
  document.write("<H3>"+x+" + "+y+" = "+eredmeny+"</H3><BR>");
}



Űrlap kitöltése ellenőrzése javascripttel

<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
<!-- A JavaScript kód elrejtése

function uresCheck(mezo){
  if (mezo.value != "") return true;
  else{
    alert("Meg ures mezo!");
    return false;
  }
}

// -->
</SCRIPT>
</HEAD>

<BODY>
<P>
<FORM NAME="form_ures">
 <INPUT TYPE="text" NAME="ures" SIZE="20">
 <INPUT TYPE="button" VALUE="Ellenorizd"
  onClick="uresCheck(form_ures.ures)">
</FORM>

</BODY>
</HTML>

Email cím formai ellenőrzése javascripttel


<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
<!-- A JavaScript kód elrejtése

function emailCheck(mezo){
  szoveg = mezo.value;
  if (!(szoveg.indexOf('@')>0 && szoveg.indexOf('@')<szoveg.length-1)){
    alert("Rossz e-mail cim!");
    return false;
  }
  else{
    alert("Formailag helyes e-mail cim!");
    return true;
  }
}

// -->
</SCRIPT>
</HEAD>

<BODY>
<P>
<FORM NAME="form_email">
 <INPUT TYPE="text" NAME="email" SIZE="20">
 <INPUT TYPE="button" VALUE="Ellenorizd"
  onClick="emailCheck(form_email.email)">
</FORM>

</BODY>
</HTML>

Űrlap matematikai értékének ellenőrzése. Csak pozitív egész számot fogad el.


<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
<!-- A JavaScript kód elrejtése

function uresCheck(mezo){
  if (mezo.value != "") return true;
  else{
    alert("Üres mezõ!");
    return false;
  }
}

function teszt(adat,minta){
  for (var i=0; i<adat.length; i++)
    if (minta.indexOf(adat.charAt(i)) == -1)
      return false;

  return true;
}

function numerikusCheck(mezo){
  if (!uresCheck(mezo)) return false;
  if (!teszt(mezo.value,"1234567890")){
    alert("Ez nem numerikus érték!");
    return false;
  }
  else{
    alert("Ez helyes érték!");
    return true;
  }
}

// -->
</SCRIPT>
</HEAD>

<BODY>
<P>
<FORM NAME="form_numerikus">
 <INPUT TYPE="text" NAME="numerikus" SIZE="20">
 <INPUT TYPE="button" VALUE="Ellenõrizd"
  onClick="numerikusCheck(form_numerikus.numerikus)">
</FORM>

</BODY>
</HTML>

Telefonszám ellenőrzése

<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
<!-- A JavaScript kód elrejtése

function uresCheck(mezo){
  if (mezo.value != "") return true;
  else{
    alert("Üres mezõ!");
    return false;
  }
}

function teszt(adat,minta){
  for (var i=0; i<adat.length; i++)
    if (minta.indexOf(adat.charAt(i)) == -1)
      return false;

  return true;
}

function tartalmaz(adat,minta){
  for (var i=0; i<adat.length; i++)
    if (minta.indexOf(adat.charAt(i)) != -1)
      return true;
  return false;
}

function telefonCheck(mezo){
  if (!uresCheck(mezo)) return false;
  if (!teszt(mezo.value,"1234567890()/- ") ||
     !tartalmaz(mezo.value,"1234567890")){
    alert("Ez nem jó telefonszám!");
    return false;
  }
  else{
    alert("Ez helyes telefonszámnak tûnik!");
    return true;
  }
}

// -->
</SCRIPT>
</HEAD>

<BODY>
<P>
<FORM NAME="form_telefon">
 <INPUT TYPE="text" NAME="telefon" SIZE="20">
 <INPUT TYPE="button" VALUE="Ellenõrizd"
  onClick="telefonCheck(form_telefon.telefon)">
</FORM>

</BODY>
</HTML>

Választó függvény aktív lesz amelyik nem 0

<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
<!-- A JavaScript kód elrejtése

var aktualis = 0;

function fokusz_allitas(){
  if (aktualis == 0){
    document.select_form.text1.focus();
    document.select_form.text1.select();
  }
  else{
    document.select_form.text2.focus();
    document.select_form.text2.select();
  }
  aktualis = 1 - aktualis;
}

// -->
</SCRIPT>
</HEAD>

<BODY>

<FORM NAME="select_form">
<INPUT TYPE="text" NAME="text1" VALUE="Az elsõ mezõ" SIZE="15"><BR>
<INPUT TYPE="text" NAME="text2" VALUE="A második mezõ" SIZE="15"><BR>
<INPUT TYPE="button" VALUE="Fókuszállítás" onClick="fokusz_allitas()">
</FORM>
</BODY>
</HTML>



Űrlap kitöltése után elküldés egy megadott emailcímre


<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
<!-- A JavaScript kód elrejtése

function uresCheck(mezo){
  if (mezo.value != "") return true;
  else{
    alert("A(z) "+ mezo.name +" mezõ üres!");
    return false;
  }
}

function emailCheck(mezo){
  var szoveg = mezo.value;
  if (!(szoveg.indexOf('@')>0 && szoveg.indexOf('@')<szoveg.length-1)){
    alert("Rossz e-mail cím!");
    return false;
  }
  else return true;
}

function teszt(adat,minta){
  for (var i=0; i<adat.length; i++)
    if (minta.indexOf(adat.charAt(i)) == -1)
      return false;

  return true;
}

function numerikusCheck(mezo){
  if (!uresCheck(mezo)) return false;
  if (!teszt(mezo.value,"1234567890")){
    alert("Ez nem numerikus érték!");
    return false;
  }
  else return true;
}

function tartalmaz(adat,minta){
  for (var i=0; i<adat.length; i++)
    if (minta.indexOf(adat.charAt(i)) != -1)
      return true;
  return false;
}

function telefonCheck(mezo){
  if (!uresCheck(mezo)) return false;
  if (!teszt(mezo.value,"1234567890()/- ") ||
    !tartalmaz(mezo.value,"1234567890")){
    alert("Ez nem jó telefonszám!");
    return false;
  }
  else return true;
}

function ellenoriz(){
  if (uresCheck(document.form.nev) &&
    numerikusCheck(document.form.ev) &&
    telefonCheck(document.form.telefon) &&
    emailCheck(document.form.email)){
    document.form.action = "mailto:"+document.form.email.value;

    return true;
  }
  else return false;
}

// -->
</SCRIPT>
</HEAD>
<BODY>

<FORM NAME="form" ACTION="dummy" ENCTYPE="text/plain"
 onSubmit="return ellenoriz()">
Neved?<BR><INPUT TYPE="text" NAME="nev" SIZE="20">
<P>Hany eves vagy?
<BR><INPUT TYPE="text" NAME="ev" SIZE="20">
<P>Telefonszám ellenõrzése:
<BR><INPUT TYPE="text" NAME="telefon" SIZE="20">
<P>Az urlap a kovetkezo e-mail cimre lesz elkuldve...
<BR><INPUT TYPE="text" NAME="email" SIZE="20">
<P><INPUT TYPE="submit" NAME="submit" VALUE="Elküld">
</FORM>

</BODY>
</HTML>

Névszerinti üdvözlés függvénnyel és űrlappal

<HTML>
<HEAD>

<SCRIPT LANGUAGE="JavaScript">
<!-- Elrejtés

function Udvozol(){
  var name = document.forms[0].elements[0].value;  

  alert("Szia "+name);
} 
// --> 
</SCRIPT> 
</HEAD>

<BODY> 
<FORM NAME="urlap"> Név:  <INPUT TYPE="text" NAME="nev"> 
<INPUT TYPE="button" VALUE="Írd be a neved, majd kattints rám!"
onClick="Udvozol()"> 
</FORM>

</BODY>
</HTML>
Új érték gombnyomásra

<FORM NAME="uj">
<INPUT TYPE="text" NAME="szoveg" VALUE="www.microsoft.com">
<INPUT TYPE="button" VALUE="Új szöveg"
onClick="document.uj.szoveg.value='www.yahoo.com';">
</FORM>

Új oldal betöltése gombnyomásra

<FORM>
<INPUT TYPE="button" VALUE="Altavista"
onClick="location.href='http://altavista.com';">
</FORM>

Weboldal felosztása keretekkel %-osan

<HTML>
<FRAMESET ROWS="50%,*">
  <FRAMESET COLS="33%,33%,*">
    <FRAME SRC="pld035.htm">
    <FRAME SRC="pld035.htm">
    <FRAME SRC="pld035.htm">
  </FRAMESET>
  <FRAMESET COLS="50%,*">
    <FRAME SRC="pld035.htm">
    <FRAME SRC="pld035.htm">
  </FRAMESET>
</FRAMESET>
</HTML>

csak bele kell irányítani a html oldalt





<HTML>
<FRAMESET ROWS="50%,*">
  <FRAME SRC="pld032.htm" NAME="keret1">
  <FRAME SRC="pld033.htm" NAME="keret2">
</FRAMESET>
</HTML>


felosztás és feltöltés

<HTML>
<FRAMESET ROWS="50%,*">
  <FRAME SRC="pld037.htm" NAME="menu">
  <FRAMESET COLS="50%,*">
    <FRAME SRC="pld038.htm" NAME="dokumentum1">
    <FRAME SRC="pld039.htm" NAME="dokumentum2">
  </FRAMESET>
</FRAMESET>
</HTML>

Menü készítése

<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
<!-- Elrejtés

function betolt(url, keret){
  if (keret == "dokumentum1") parent.dokumentum1.location.href=url;
  else parent.dokumentum2.location.href=url;
}

function betolt2(elso_url, masodik_url){
  betolt(elso_url, 'dokumentum1');
  betolt(masodik_url, 'dokumentum2');
}
function szincsere(ujszin, keret){
  if (keret == "dokumentum1")
    parent.dokumentum1.document.bgColor=ujszin;
  else
    parent.dokumentum2.document.bgColor=ujszin;
}
// -->
</SCRIPT>
</HEAD>

<BODY>

<CENTER>
<H1>Menü</H1>
<A HREF="javascript:betolt('pld0310.htm','dokumentum1')">Betölt egy
új dokumentumot az elsõ keretbe</A><BR>

<A HREF="javascript:betolt('pld0310.htm','dokumentum2')">Betölt egy
új dokumentumot a második keretbe</A><BR>

<A HREF="javascript:szincsere('#00FFFF','dokumentum1')">Háttérszín
cseréje az elsõ keretben</A><BR>

<A HREF="javascript:szincsere('#FFFF00','dokumentum2')">Háttérszín
cseréje a második keretben</A><BR>

<A HREF="javascript:betolt2('pld0311.htm','pld0311.htm')">Dokumentum
betöltése egyszerre két keretbe</A><BR>
</CENTER>

</BODY>
</HTML>

Ablak létrehozása

<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
<!-- JavaScript kód elrejtése

function ujablak(){
  ablak = open("pld041.htm");
}

// -->
</SCRIPT>
</HEAD>

<BODY>

<FORM>
<INPUT TYPE="button" VALUE="Új ablak nyitása" onClick="ujablak()">
</FORM>

</BODY>
</HTML>

Új ablak megnyitása

<HTML>
<HEAD>

<SCRIPT LANGUAGE="JavaScript">
<!-- JavaScript kód elrejtése

function ujablak2(){
  ablak = open("pld041.htm", "uj_ablak", 
    "width=300,height=200,status=no,menubar=no");
}

// -->
</SCRIPT>
</HEAD>

<BODY>
<FORM>
<INPUT TYPE="button" VALUE="Módosított ablak nyitása"
onClick="ujablak2()">
</FORM>
</BODY>
</HTML>

Ablak bezárása

<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
<!-- JavaScript kód elrejtése

function bezar(){
  close();
}

// -->
</SCRIPT>
</HEAD>
<BODY>

<FORM>
<CENTER>
<INPUT TYPE="button" VALUE="Zárj be!" onClick="bezar()">
</CENTER>
</FORM>

</BODY>
</HTML>

Html szerkesztő script

<HTML>
<HEAD>

<SCRIPT LANGUAGE="JavaScript">
<!-- A JavaScript kód elrejtése

function ujablak3(){
  ujablak = open("","uj_ablak3",
    "width=400,height=300,status=yes,toolbar=yes,menubar=yes");

  ujablak.document.open();

  ujablak.document.write("<HTML><HEAD><TITLE>Dokumentum ");
  ujablak.document.write("készítése JavaScript-tel</TITLE>");
  ujablak.document.write("</HEAD>");
  ujablak.document.write("<BODY><CENTER><H1>");
  ujablak.document.write("Ezt az oldalt teljesen a JavaScript ");
  ujablak.document.write("hozta létre!");
  ujablak.document.write("</H1></CENTER></BODY>");
  ujablak.document.write("</HTML>");

  ujablak.document.close();
}

// -->
</SCRIPT>
</HEAD>
<BODY>

<CENTER>
<FORM>
<INPUT TYPE="button" VALUE="Dokumentum készítése JavaScript-tel"
onClick="ujablak3()">
</FORM>
</CENTER>

</BODY>
</HTML>


Elõször nézzük meg az ujablak3() nevû függvényt. Megnyitottunk egy új böngészõ ablakot a már megismert open() függvénnyel. Azonban vegyük észre, hogy az elsõ paraméternek nem adtunk értéket (""), ez azt jelenti, hogy nem kívánunk betölteni HTML oldalt, hanem azt JavaScript-el akarjuk létrehozni. Az ujablak nevû változóval, amit most definiáltunk, hozzáférhetünk a megnyitott ablakunkhoz (fontos megjegyezni azt, hogy ennél a feladatnál nem használható az ablaknak adott uj_ablak3 név). Az ablak megnyitása után meg kell nyitnunk a dokumentumot. Ezt az alábbi sor csinálja:
ujablak.document.open();
Azaz meghívtuk a document objektum open() metódusát. Ezt ne keverjük össze a window objektum open() függvényével! Az ujablak változót ki kell tenni a document.open() elé, mert csak így érhetjük el az ablakunkat. A függvényben a következõ sorok hozzák létre a tényleges oldalt:
ujablak.document.write("<HTML><HEAD><TITLE>Dokumentum ");
ujablak.document.write("készítése JavaScript-tel</TITLE>");
ujablak.document.write("</HEAD>");
ujablak.document.write("<BODY><CENTER><H1>");
ujablak.document.write("Ezt az oldalt teljesen a JavaScript ");
ujablak.document.write("hozta létre!");
ujablak.document.write("</H1></CENTER></BODY>");
ujablak.document.write("</HTML>");
Amint az látható, egyszerû HTML elemeket írtunk a dokumentumunkba a document.write() függvény segítségével. Ide természetesen bármilyen más HTML elem írható. Miután ilyen módon megírtuk a dokumentumunkat, le is kell zárni azt:
ujablak.document.close();
A példa azt mutatta be, hogy milyen módon lehet dokumentumot létrehozni új ablakba JavaScript segítségével. Új ablak helyett választhatunk tetszõleges keretet is. Tegyük fel, hogy már rendelkezünk keret1 és keret2 nevû keretekkel, és dokumentumot akarunk létrehozni a keret2-be! Ezt megtehetjük a következõ módon:
parent.keret2.document.open(); // a dokumentum megnyitása a keret2-ben
parent.keret2.document.write(" ... Ide kerül a HTML kód ... ");
parent.keret2.document.close(); // a dokumentum bezárása a keret2-ben


Időzités

A Timeout-ok (késleltetés)
A régebbi böngészõk még nem ismerik az onMouseOver eseményt, hiszen az még nem szerepel a JavaScript 1.0-ban. Ha azt akarjuk, hogy a fenti programot ezen böngészõkön is lehessen futtatni, akkor helyettesíteni kell ezt az eseményt valami mással. Például írjuk ki a szöveget az állapotsorba, és hagyjuk ott valamennyi ideig. Ezt késleltetés (timeout) révén érjük el, ami azt jelenti, hogy a számítógép valamely kódot bizonyos idõ elteltével fog csak végrehajtani. A következõ példa létrehoz egy gombot, ami átváltja a háttérszínt, majd 3 másodperc múlva visszavált az eredetire.
<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
<!-- A JavaScript kód elrejtése

function idozit(){
  document.bgColor="#0000FF";
  setTimeout("document.bgColor='#FFFFFF'",3000);
}

// -->
</SCRIPT>
</HEAD>
<BODY>

<CENTER>
<FORM>
<INPUT TYPE="button" VALUE="Háttérszín cseréje 3 mp-ig"
onClick="idozit()">
</FORM>
</CENTER>

</BODY>
</HTML>