2018. április 20., péntek

Windows 7 gyorsítás


1.    Automatikusan induló programok felkutatása és kigyomlálása:

    Nézz szét a Start menü/Programok/Startup mappába, vagy az msconfig.exe-t futtatva a startup fülön.


2.    Ha már megnyitottuk az msconfig.exe-t, akkor ugorjunk át a boot fülre is és ott vegyük le 3   másodpercre a bootoláskor megjelenő rendszerválasztó menü várakozási idejét.

3.    Felesleges szolgáltatások kikapcsolása:

    Indítsd el a services.msc-t. Itt láthatod az összes szolgáltatást. Ezek közül nagyon sok fut feleslegesen. Ha valamelyiket ki szeretnéd kapcsolni akkor kattints rajta jobb füllel, válaszd a properties-t, kattints a stop gombra, majd a startup type-t állítsd disbled-re.


    –    HomeGroup Provider, HomeGroup Listener: Ha nem használjuk a HomeGroup szolgáltatást, nyugodtan kikapcsolhatjuk.
    –    Internet Connection Sharing: Ha nem osztjuk meg az internetünket, állítsuk le.
    –    Diagnostic Service Host, Diagnostic System Host: Általában nem szükséges.
    –    Offline Files: Hasonlóan az eddigiekhez, ha nem használjuk, szabaduljunk meg tőle.
    –    Print Spooler: Ha nem tervezünk nyomtatni a géppel, kikapcsolhatjuk.
    –    Remote Access Connection Manager: A VPN-hez szükséges, amúgy felesleges.
    –    Server: Ha nem akarunk fájlokat/nyomtatókat megosztani, kikapcsolhatjuk.
    –    Workstation: Ha egyedül van gépünk a hálózatban, akkor leállítható.
    –    TCP/IP NetBIOS Helper: Ha nem használjuk a jó öreg NetBIOS-t, akkor búcsúzzunk el tőle.
    –    Windows Media Player Network Sharing Service: Szerintem ezt se sokan használják.
    –    WinHTTP Web Proxy Auto-Discovery Service: Csak a proxy-t használóknak hasznos.
    –    Akik nem igénylik a Windows belső tűzfalát, azok itt kikapcsolhatják a Windows Firewall szolgáltatást.
    –    Windows search – én ezt is le szoktam állítani!

4.    Nem használt beépített windows összetevők eltávolítása:

    All Control Panel Items/Programs and Features/Turn Windows Features Ono r Off
    Itt uninstalálhatod például a Windows Media Center-t, az Indexing Service-t, vagy a Tablet PC Componets-et ha úgysem használod őket.

5.    A menük gyorsítása:

    Indítsd el a regedit.exe-t, kersd meg a következőt: HKEY_CURRENT_USERControl PanelDesktop  és a  MenuShowDelay értékét állítsd 1-re.

6.    A kikapcsolás felgyorsítása:

    Indítsd el a regedit.exe-t, kersd meg a következőt: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControl , majd a WaitToKillServiceTimeout értékét állítsd  2000-re.
    7.    Automatikus bejelentkezés a Windows indításakor:
    Indítsd el a netplwiz.exe-t, kattints a sját felhasználói nevedre, majd szedd ki a pipát a „Users must enter a username and password to use this computer” opció elől.

8.    Automatikus frissítés kikapcsolása:

    Navigálj ide: All Control Panel Items / Windows Update / Change settings, majd az Important updates résznél válaszd a „Check updates for updates but let me choose whether to download and install them”-t. Így biztos nem kezd majd letölteni egy száz megás updatet épp akkor amikor a géped legjobb teljesítő képességére van szükséged.

9.    Ttálca előnézeti kép megjelenés meggyorsítása:

    Indítsd el a regedit.exe-t majd kersd meg a HKEY_CURRENT_USERControl PanelMouse-nál a MouseHoverTime értékét vedd le 100-ra.

10.    A lapozófájl áthelyezése:

    Alapbeállításként a lapozófile, vagy pagefile, a rendszerpartición található, ami nem a leg optimálisabb, tehát keress, vagy hozz létre egy új üres particiót, lehetőleg a leggyorsabb vincsesztereden (annak is az elején) aminek a mérete kb. kétszerese a RAM-od méretének.
    Indítsd el a systempropertiesadvanced.exe-t, majd az Advanced fülön kattints a Performance résznél a Settings gombra, a megjelenő ablakban válaszd az Advanced fülön a Change gombot, majd ott egyesével végigkattingatva az összes partición, mindegyiknél a No Paging File opciót választod és a Set gombra kattintassz, kivéve azt a particiót, amit az előbb épp ecélból létrehoztál. Annál az egynél a System Managed opciót válaszd! Ha végeztél, akkor OK és valószínű reboot.

2018. április 19., csütörtök

Gondolatok a könyvtári terápiáról

Olyan világban élünk, ahol a pszichoszomatikus betegségek egyre nagyobb számban jelennek meg a társadalomban. A lelki sebek gyógyítása legalább olyan nehéz feladat, mint a testi bajoké. A lélek gyógyítását szakpszichológusok, pszichiáterek végzik, de a prevenciót a pedagógusok és a könyvtárosok is szolgálhatják, miközben a biblioterapeuták működésének jogi szabályozása még nem született meg.Felgyorsult körülöttünk a világ, egyre több a stressz, a teljesítménykényszer, ami a lelkünket erősen megviseli. A gyerekeknek is kijut ebből a feszültségből: a megfelelni akarás vagy a sikertelenség miatti csalódás, a vívódás, a szorongás, konfliktusok a szülőkkel, tanárokkal, diáktársakkal. A teher nő és lassan kialakul a depresszió, megjelennek a fóbiák, megnő a szeretetigény, miközben folyton jelen van a szeretet hiánya. A másik véglet a kompenzáció, az agresszív, támadó magatartás és a mentális attitűdök kialakulása. A gyermekek személyiségnek formálására tucatnyi foglalkozás vagy más szóval, terápia használható. (A szülők nem biztos, hogy szeretik a terápia szót, és talán nem is viszik el gyermekeiket terápiára, szerencsésebb a foglalkozás vagy könyvtári óra, a játék kifejezés használata.)
A biblioterápia interdiszciplináris terápiás módszer, amit voltaképpen a szülők is gyakorolnak a gyermeknevelésük során ösztönösen és eredményesen. A szakember által tudatosan, pontosan kiválogatott  mese vagy szépirodalmi mű segítségével képesek vagyunk befolyásolni, áthangolni, megváltoztatni a mentális attitűdöket, megismertetve az elfogadott viselkedésmódokat, emelve a gyermek műveltségi szintjét, elősegítve a helyes magatartásformák elsajátítását, ezzel is segítve a gyermek későbbi szocializálódását. A jól kiválasztott olvasmányok alkalmazhatók a gyermek pszichológiai problémáinak kezelésére, még inkább a problémák megelőzésére és személyiségfejlesztésre egyaránt. Az olvasás, az olvasmányokkal való foglalkozás pozitívan befolyásolhatja a gyerek attitűdjeit, érzelmeit és viselkedését, serkenti fantáziáját és cselekvésre ösztönöz. Az irodalom képes leginkább a katartikus indulatelvezetésre; elgondolkodtat, alkalmas annak megtanítására és gyakorlására, hogy önismeretünk révén beleképzeljük magunkat a főhős szerepébe, fejlődik a gyermek empátiája és toleranciája, és okos kérdések fogalmazódnak meg benne, amire választ is ad számára a szépirodalmi mű. A novella, a vers, a történet, a fabula felolvasásán,  meghallgatásán keresztül saját konfliktusaira is példát talál. A reális önismereten és önképviseleten nyugvó kommunikáció és az őszinteség, a nyíltság a konfliktusok felismerését és interakciós megoldását segíti elő. A könyv a katalizátor szerepét játssza; a cél a saját életéből merített emlékek, asszociációk, indulatok és érzések megosztása, rendezése, megértése, feloldása.
A könyvtárba látogató gyermekcsoportok foglalkozását olyan könyvtáros tanárok vezetik, akik megfelelő mentálhigiénés kompetenciával és biblioterápiai alapismeretekkel is rendelkeznek. Valószínűleg a feladat elvégzéséhez elengedhetetlen a megfelelő pedagógiai és pszichológiai felkészültség, de a laikus könyvtárosok is képesek a sikeres fejlesztőterápiára – preventív céllal. Zeneterápiát alkalmazunk ha a gyermek szóbeli kifejezőkészsége lelki okok miatt károsodik, dadog vagy autista, esetleg skizofrén vagy hiperaktív, vagy más magatartási zavarral küzd. A kompetencia kényes kérdés, a pszichológus szakemberek szerint nem lenne szabad végezni ezeket a terápiákat laikus könyvtárosnak, mert a megfelelő szakmai ismeretek nélkül esetleg nagyobb kárt okozhatnak a gyermekek személyiségében, mint hasznot. Én hiszem és látom, hogy a foglalkozások alatt olyan érzelmi hatások érik a gyermekeket, amik pozitív hatást eredményeznek, akár laikus, akár pszichológus a terapeuta.
A fejlesztő biblioterápia leginkább az önismeret és a személyiség egészséges fejlődését szolgálja. Gondolkodásra ösztönzi az egyént, hogy saját helyzetét reálisan lássa, és problémájára alternatív megoldásokat találjon. A terapeuta részéről empátia, tolerancia és emocionális érzékenység kell ahhoz, hogy megnyíljanak a lélek kapui; vagyis a tudatosság nem elég, a szociális érzékenység segít, hogy a terapeuta a mások helyzetébe tudja képzelni magát és hatékonyan segíteni tudjon.  A közös játékban feloldódik és felszabadulttá válik a gyerek. A zeneterápiában a ritmikus feladatok, a hangszerek, dobok, csörgők, xilofon vagy taps alkalmazásával jön létre az összhang – az együttes zenélés öröme. A deviáns magatartásformák felismerhetők és jól kezelhetők így. A művészetterápia például a rajz segítségével fejezi ki a gyerekek rejtett szorongásait, félelmeit, fóbiáját. A hiperaktivitás mozgásterápiás játékokkal oldható. Az emocionális, mentális, szociális és kognitív területeken bekövetkezik a változás, ha a könyvtáros jól vezeti a foglalkozásokat. A felismert sérült funkció helyreállítsa vagy a prevenció, a rehabilitáció elősegíti, hogy a gyermek minőségileg jobb életet éljen. Az összetettebb terápiák szakmai felügyeletét olyan szakpszichológusoknak kell irányítani, akik megfelelő szakvizsgával és tapasztalattal rendelkeznek.
Az irodalomterápiás foglalkozások nagyon jó hatásfokkal alkalmazhatók a kamaszoknál, akik mellőzve érzik magukat, egyedül vannak a felnőtté válás folyamatában. A gyerekek tapasztalatot szerezhetnek a kommunikáció nehézségeiről és szépségéről, a személyre szabott figyelem pozitív élményéről és a másikra való odafigyelés és tisztelet fontosságáról. A terápia során oldódik szorongásuk, türelemre, toleranciára, empátiára tanítja őket a terápia, mindenfajta kényszer nélkül. Felszínre kerülnek saját és társaik problémái, így találkozhatnak különböző megoldási alternatívákkal, akár úgy is, hogy egy-egy irodalmi hős viselkedését megfigyelik, értékelik. Az irodalmi művek kiválasztásánál döntő szempont a korosztályra jellemző problémák, történetek, példák jó kibonthatósága. Ilyenek például a felnőtt-gyermek kapcsolatok, a felnőtté válás, a szerelem, a tanulás, a közösségbe való beilleszkedés, az igazi barátság, a jövőkép kialakítása, a társadalmi elvárásoknak való megfelelés, az értékek, helyes célok kitűzése stb.
A folyamatos motiváció érdekében egy-egy foglalkozáson belül több művészetterápiás terület, módszer is helyet kaphat a könyvtárban, az adott műnek, csoportnak, problémának megfelelően, így az olvasottak megbeszélése mellett többek között drámapedagógia játékok, rajzolás, közös zenélés, szituációs játékok, kézműves feladatok. Az sem utolsó szempont, hogy a foglalkozások során a gyermekek olyan irodalmi művekkel ismerkednek meg, amelyek nem az iskolai tananyag szerves részei, így újabb élményekkel gazdagodnak, az is serkenti őket az olvasásra, hogy a művek feldolgozása nem “iskolás, elemző módon” történik, hanem kötetlenebb formában, szabad beszélgetéssel egy olyan csoportban, ahol mindenkinek számít a véleménye, mert minden ember fontos a közösség számára.
A legkisebbeket mesék révén tudjuk formálni, ám a meseterápia minden életkorban és valamennyi életszituációban használható; minden korosztály megérinthető egy mesével, akár kisgyermek, akár kamasz vagy fiatal felnőtt. A fabuláknak hatalmas ereje van, és valóban tud segíteni, csak éppen meg kell találni az adott élethelyzethez és egyénhez kapcsolódó “tanmesét”, s ha ez megvan, akkor kezdődik a csoda, a személyiség formálása vagy éppen a gyógyulás. A személyiségformálás azonban óriási felelősség. A szépirodalmi művek egyszerű hétköznapi történetei megragadják az olvasót vagy hallgatót és elgondolkodtatják, majd mivel beszélgetnek róla, az egyén szókincsének fejlődését is szolgálják. A verbális megnyilvánulásban lassan kirajzolódik az egyén személyisége, és a tehetetlen panaszkodás átcsap egy megoldáskereső beszélgetésbe. A szereplők kielemzett jellemrajza felszínre hozza saját tulajdonságaikat, azonosulva a szereplővel. A műben található élethelyzetek rávilágíthatnak saját konfliktusaikra. A nyíregyházi Móricz Zsigmond Megyei és Városi Könyvtárban mi a fejlesztő, esetleg megelőző (preventív) csoportterápiákat részesítjük előnyben. Mert tudjuk, hogy a könyvek csökkenthetik az egyén elszigeteltségét. 
    A gyerekek saját bajaikról, problémáikról sokszor beszélgetni sem mernek, mert a panaszkodást gyengeségnek tartják, viszont a könyv szereplőiről oldottan beszélgetnek, és közben felszínre hozzák saját nehézségeiket. A kézműves foglalkozások, a versírás, mese vagy történet kitalálása inkább produktív alkotásra ösztönzők, míg az irodalmi foglalkozások receptív befogadásra késztetnek. Egy-egy történet olvasása közben megosztják felmerülő érzéseiket, gondolataikat, a szöveg üzenetéhez fűződő véleményüket, valamint személyes élményeiket, emlékeiket. Sok gyermeknél, fiatalnál a lelki anomáliák még nem okoznak testi tüneteket, legfeljebb türelmetlenek, ingerlékenyek lesznek, ami emberi kapcsolataikban tör felszínre: párkapcsolataikban, családon belüli kapcsolataikban, gyerek-szülő kapcsolataikban. A céltalanság, az unalom vagy éppen a minden áron való érvényesülés, netán egy közel álló személy elvesztése olykor megoldhatatlan terhet jelent a felnőtteknek is. Az archaikus fabulák azonban – a képzelet segítségével – józan cselekvésre ösztönöznek. Mert az emberiség legnagyobb energiaforrása a fantázia, hiszen a teremtő képzelet változtatja meg körülöttünk a világot.

A magyar ugar

Nekünk mindenért meg kell dolgoznunk, nem is tudnánk másképpen élni, így neveltek bennünket. Az élet patináját az elvégzett munka csiszolja fényesre. Az élet legszebb pillanatai azok, amikor megküzdünk a kihívásokkal. Augusztus 20.-a van, megérett a nem tudom szilva, nagyon fúj a szél, le kell szedni, amíg le nem veri a fáról. Minden kornak megvannak az uralkodó eszméi, divatos talmi ideái. Mi olyan korban élünk, ahol a tudás bűn, a munka szégyen, és akik nem tanultak azoknak sérti legjobban a büszkeségét. Ingyen tízórai, ingyen ebéd, ingyen uzsonna az iskolákban a gyerekeiknek, ingyen ebéd az önkormányzattól, ingyen iskolaszer, ingyen gyógyszer, igazuk van, minek dolgozzanak érte, ha ingyen is megkapják. Közmunkások sepregetést imitálnak a hivatal előtt. Mi többdiplomásként dolgozunk helyettük a munkahelyen, és a földeken is, hogy az élősködőknek legyen miből lumpolni. Csak panaszkodnak, hogy nincs munka, de amikor van, akkor csak kifogásokat keresnek, hogy miért nem jönnek dolgozni. Inkább nélkülöznek, és várják a segélyt. Ez a mai magyar ugar. Megint elérkezett a szilvaszedés ideje. 39 fok van árnyékban. A rekkenő augusztusi hőség próbára teszi az erőnket és a kitartásunkat. Az emberek repülőnapra, falunapra mennek mulatni, este tűzijátékot néznek, isznak, esznek, dorbézolnak, de vajon miből, ha nem dolgoznak? míg mi hajnal négytől este kilencig húzzuk az igát, hogy a sok here lumpolhasson. Próbálunk némi enyhülést keresni a fák árnyékában, a pillanatnyi szellőben, ami alig lebbenti meg a fák ágait, ami nem volt több mint egy felrebbenő galamb szárnycsapása. Mire a vizet a kúttól beviszem a fák közé, már meleg élvezhetetlen és nem oltja a szomjat. A széltől lehullott szilvát összeszedjük a fa alól és kihúzzuk a fóliát és lerázzuk a szilvát a fáról. A rigmus szerint; a szilvaszedéshez meg kell alázkodni az embernek, vagyis csak térden csúszva lehet dolgozni, mert nincs több hely az ágak alatt. Ami fennmarad azt egy hosszú azsaggal verjük le. A nap végére a fájdalomtól leszakad a karunk. A levert szilvát még csúszdázzuk és megmossuk, csak ágak és levelek nélkül tisztán használhatók fel. Csak az egészséges ép szilvát szedjük (fel) le, abból lesz a kóser pálinka. A többször átfőzetett és finomított pálinkát eperfahordóban érleljük, így végül egy finom selymes szilvapálinkát kapunk. Otthon van aszaló is és persze főzünk belőle lekvárt is, de ez mind sok munkát jelent. A lekvárhoz kimagvazzuk a szilvát, újra megmossuk, és még egyszer átválogatjuk. Amikor meg akarják venni a lekvárt vagy az aszalt gyümölcsöt drágállják az árát, de nem jönnek el napszámba dolgozni, hogy megismerjék, mennyi munka van vele. A szilvalekvár főzése is hajnaltól késő estik tart, a nap végére olyan fáradt az ember, hogy már éjszaka aludni sem bír. Az aszalóhoz vesszőből fonott széles kosarakat használunk, amibe csak a legnagyobb szilvák kerülnek. Persze ezeket a fákat egész évben gondozni kell, sok munka van vele. Ősszel megtrágyázni, Tavasszal a földjét tárcsázni, permetezni, a tövét felkapálni és fűnyírózni a fa alját szedés előtt. Amikor az ember megvesz egy hintaágyat vagy egy árnyékolót az erkélyre, mindenki irigykedve mondja, honnan van ennek rá pénze? De amikor dolgozni megyek, amíg a többiek csak lumpolnak, akkor nem gondolnak rá, hogy most keresi meg az árát. Gyerekkoromban azt mondták szüleim, tanulj fiam, ne kelljen a földet túrnod, mert a föld nehezen adja vissza a belé fektetett munka gyümölcsét. Én tanultam, mégis azok élősködnek rajtam, akik nem. Az élet legcsodásabb ajándékai általában viszontagságokba csomagolva érkeznek. Sajnálom azokat az embereket, akik kerülik az élet nehéz pillanatait, mert ők nem élnek igazán, túl sok időt veszítenek a kikerüléssel. Ezek az emberek unatkoznak, néznek ki a fejükből, lődörögnek céltalanul mint egy zombi. A dolgozó embernek sosem hosszú az élet, mert nem ér rá unatkozni. Scott Jurek ultramaraton futó írta, hogy a nehézségek legyőzése maga az élet. Aki az életben helyt akar állni, annak meg kell küzdenie a nehézségekkel. Az emberek szeretik a gyors, egyszerű megoldásokat, azokat, amelyek belátható időn belül hoznak eredményt, amelyekért semmit sem kell tenniük. Hálás vagyok Istennek, hogy nem tartozom közéjük.

2018. április 17., kedd

Túlélés

1. Rizs
A kutatók úgy találták, hogy a fehér rizs 30 évig is fenntartja a tápanyagtartalmát és ízét,  ha oxigénmentes konténerekben 40 fok alatti hőmérsékleten tárolják. A barna rizs már rosszabb választás, mert  a természetes korparéteg miatt csak 6 hónapig őrzi meg tápanyagát.


2. Méz
A mézet nevezik az egyetlen ételnek, ami valóban örökké tart. Ez a szorgos méhek által készített édes, folyékony nektár tényleg sokáig eláll, hiszen nincs benne elég nedvesség, ami elősegítené a baktériumok szaporodását. A legrégebbi méz állítólag 5500 éves, és még mindig ehető.

3. Só
A nátrium-klorid, vagy más néven konyhasó mint ásvány már nagyon régóta megtalálható a Földön. Évszázadok óta használják, más élelmiszerek tartósítására is. A só a szekrényben nem tart örökké, de a jódozott változata 5 évig simán eláll.

4. Szójaszósz
Sokban függ a szósz összetevőitől és adalékanyagitól, de a szójaszósz a sótartalmának köszönhetően nagyon sokáig eláll felbontatlan állapotban. Felbontás után is évekig nem romlik meg, és bátran lehet vele ízesíteni az ételeket.

5. Cukor
Mint minden élelmiszernél, itt is a helyes tárolás határozza meg az eltarthatóságot. Ha száraz helyen tároljuk a cukrot, akkor örökké tudjuk használni, hiszen semmi baja nem lesz. A tejpor és a kristálycukor légmentes csomagolásban a legjobban megőrzi a minőséget. Ha azonban nedvesség éri például a barna cukrot, akkor sincs baj, még mindig ehető állapotú, miután kicsit megpuhult.

10 étel, ami szinte sosem romlik meg
6. Szárazbab
A kutatók ugyanúgy vizsgálták, mint a rizst, és rájöttek, hogy a szárazbab is hasonló módon viselkedik. Ez a zöldség még 80 év után is tartalmaz fehérjét és tápanyagokat, amikor már minden más megromlott körülöttünk.

7. Tiszta juharszirup
A kutatók a tiszta juharszirupot azok közé az élelmiszerek közé sorolják, amik korlátlan ideig megőrzik minőségüket. Ellenállnak a penészgombáknak, és a mikroorganizmusoknak, amik más élelmiszereket simán megtámadnak. A bontatlan juharszirup örökké tart, de felbontás után előfordul, hogy penész jelenik meg rajta. Ha felforraljuk, és átöntjük egy másik edénybe, akkor újra tisztává tehetjük, és örökké tárolhatjuk.

8. Tejpor
Az íze nem annyira jó, de az egyik fő ok arra, hogy a tejpor létezik, az, hogy tovább eltartható, mint a friss tej. Ugyancsak könnyebb szállítani és tárolni. Légmentesen, nedvességtől elzárva nagyjából örökké felhasználható.

9. Röviditalok
Ha eljön az idő, akkor dobd ki a krémlikőröket, hiszen ezek gyorsan megromlanak. Csak tiszta röviditalokat őrizz meg, mert ezek kevésbé romlanak meg. Persze a párolgás őket sem kerüli el, de egy jól zárható üvegben évekig lehet tárolni őket. Ugye mindenki hallott már több száz éves rumokról és whiskykről, amik vagyonokat érnek, és még mindig ihatók?

10. Pemmikán
Ez az észak-amerikai indián eredetű étel és tartósítási módszer, amivel a legjobban lehet a húst tartósítani. A pemmikán fő összetevője a vadhús, amit napon vagy tűz mellett keményre szárítottak, majd faggyúval kevertek. Kerül ebbe a masszába bogyós növények termése is. Ezzel az eljárással és egy bőr erszényben a hús sokáig eláll. Később lehet szárazon enni, vagy meleg vízzel felfőzve elfogyasztani.

Előnyök és hátrányok

A konzervek előnyei, hogy sokáig eltarthatóak. Sok fontos tápanyagot megőriznek, például a fehérjéket, valamint az A- és D-vitamint. Mikrobamentesek, ezért nem okoznak mérgezést. Ellenben magas a sótartalmuk. A készételek színe és állaga minőségileg elmarad a házilag főtt ételekétől, nem annyira gusztusosak. Van olyan konzervétel, amelyik pépesebb, mint a házi, ezért a doboz formáját megtartja, amikor a tányérra kerül, villával szét kell nyomkodni.

Dobozba zárt ételek

A konzervdobozul szolgáló bádogdobozt megtöltése után hajlítással vagy forrasztással légmentesen lezárják. Kinyitás után nem zárható le újra. A gyártás alkalmával az élelmiszereket szétadagolják ezekbe a dobozokba, majd olyan magas hőmérsékletűre hevítik őket, amelyen a kórokozók elpusztulnak, így növelve az eltarthatóságukat. A konzervek szavatossági ideje általában egy év, de akad köztük olyan is, mint például az olajos hal, amelyik 4-5 évig is eláll. A dobozok alján vagy tetején látható szavatossági idő azt jelenti, hogy az étel minősége ennek lejárta után már nem olyan jó, mint előtte volt, és nem azt, hogy megromlott. Ha viszont a szavatosság lejárta óta eltelt idő 3 hónapnál hosszabb, inkább dobjuk ki a konzervet.

A minőségromlás mértéke

A konzervekben levő tápanyagoknak csak kis része semmisül meg az előállítás és a tárolás során. A fehérjék, a zsírok, a szénhidrátok, az A- és D-vitamin megmaradnak. A magas hőmérséklet hatására a C-vitamin lebomlik. A főzés és a tartósítás hatására az íz, a szín és az állag megváltozik, emiatt sajnos ezekbe az ételekbe több só kerül, mint amennyit otthon használunk.

Óvintézkedések:

- Ha a felnyitott ételt nem egyszerre fogyasztjuk el, mindig vegyük ki a fémdobozból és rakjuk át légmentesen zárható tárolóedénybe, mert a levegővel való érintkezés során a fémtől az étel rossz mellékízt kap. 2 napon belül mindenképpen fogyasszuk el.

- A rozsdás, horpadt dobozú konzervet felnyitás nélkül dobjuk ki, főleg akkor, ha a lezárás vonalán sérült meg a doboz. A felpúposodott, torz konzervdobozban gáz termelődött és kórokozók szaporodtak el benne, ezért ezt is azonmód ki kell dobni.

Pekándió
Mogyoró
Tonhalkonzerv
Aszalt gyümölcsök
Szárított zöltségek
Szárazbab
Kókusztej
GHI
Olivaolaj
Ecet
Fűszerek
Zsemlemorzsa
BúzaLiszt
Kukoricaliszt
Szárított és füstölt hús, sózott hús
Konzervek
Keksz
Energiaitalok
Palackozott víz
gyógyszerek
pálinka
vanilia
instant kávé
fahéj

cukor
ecet
olaj
kukoricakeményítő
juharszirup
méz
propolisz
propur
Télifülőke gomba termesztése  (Flammulina velutipes)
gyufa, térkép, iránytű, ivóvíz, elemlámpa és elemek, illetve kötszerek és gyógyszerek
 instant kávék és tésztaételek
Gombák
csoki
chipsz
keksz
lekvár
laska csiperkegomba termesztés
füstölt szalonna tepertő
zsír
foghagymakrém
paprikakrém
por paprika
por fokhagyma
tojáspor
A lejárati dátumok olyanok, mint a fenyegető leadási határidők: feletted lebegnek, de ha egyszer eljönnek, megszívtad.
Legalábbis sokan ezt hiszik. Néha azonban semmi baja nincs az ételnek 1 nappal, héttel, hónappal vagy évvel a lejárati idő eltelével.
Honnan tudsod, hogy az ételt még megeheted? Nehéz megmondani, mikortól változik meg az étel íze és szaga, mondja Alan Aragon, táplálkozási szakértő. “AKkor is bizotonságos lehet egyes ételek elfogyasztása, mikor már büdös vagy furcsán néz ki.”
Egy alapszabály: “Minél több feldolgozott és mesterséges anyagot tartalmaz, annál tovább maradhat a polcon a lejárati dátum után is. Ha nincs benne víz, nincs helye a mikróbáknak, hogy elszaporodjanak. A sok tartósítószert is ezért használják. A kivételek a húsok. Ezeket semmiképp ne fogyaszd el, mituán lejárt a szavatosságuk. Lisztériát is tartalmzhatnak, mely akár meningitiszt is okozhat.
Aragon felvázol néhány tippet, hogy ne kelljen annyi dologgal teletömnöd a kukád:
Konzervek: 1-4 évig jók általában, de ha hűvös, hideg helyen tárolod, akár 3-6 évig is eltarthatóak.
Fagyasztott ételek: olyanok, mint a konzerves kaják, sokáig elállnak. A húsokra viszont ez nem igaz.
Tojás: tedd egy nagy tál vízbe, így megnézheted, hogy jó-e. Ha lemerül, edd meg, ha feljön a tetejére, dobd ki. A baktériumok elszaporodása miatt lebeg a víz tetején, ilyenkor már tényleg ne használd fel.
Tészta: amíg nem bűzlik, nyugodtan fogyaszd el. Nincs benen víz, így nincs mitől félned.
Kenyér: a fagyasztóban tovább is eláll, mint a kenyértartóban. Ha nem penészes, nyugodtan eheted.
Friss zöldség és gyümölcs: nézd meg alaposan, szagold meg és tapogasd meg- így azért meg tudod állapítani, hogy rendben van-e.


http://www.vil-for.hu/hun/main.php?id=37





2018. április 16., hétfő

Javascript Új bejegyzés

<?php
session_start();
ob_start();
include('connect.php');
?>
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="content-type" content="text/html" />
<meta name="author" content="prometh" />
     <link rel="stylesheet" type="text/css" href="css/style.css"/>
     <script src="//tinymce.cachefly.net/4.1/tinymce.min.js"></script>
    <script>
        tinymce.init({selector:'textarea'});
    </script>
<title>Új bejegyzés írása</title>
</head>
<body><body bgcolor="#87ADD3"> <br>
 <br>
 <br>
 <br>
<br>
 <br>
 <font size="1"<PRE>                                            <h1 align="center"> ÍRD MEG AZ ÜZENETET! </h1>     </PRE> </font>
 <br>
 <br>
 <br>

 <br>
 <br>
 <br>
<br>
 <br>
<?php
if (isset($_SESSION['login']))
{
    $sql="SELECT * FROM users WHERE user_ID=".$_SESSION['login'].";";
    $query=mysql_query($sql);
    $dbrec=mysql_fetch_array($query);

echo "<a href='adatlap.php'>Vissza</a>";
?>
<form action="<?php print($_SERVER['PHP_SELF']);?>" method="POST">
<textarea name="text"></textarea>
<input type="submit" name="submit" value="Posztold ki!"/>
</form>
<?php
if(isset($_POST['submit']))
{
    $text=$_POST['text'];
    $sql2="INSERT INTO bejegyzes VALUES (0,".$_SESSION['login'].",'{$text}', NOW());";
    //echo($sql2);
    mysql_query($sql2) or die ("SQL hiba");
    mysql_close($kapcsolat);
    header("Location: fal.php");
}

}
else
{
    print("<section>Megtekintéshez kérem jelentkezzen be a fiókjába.</section>
                <a href='index.php'>Főoldal</a>");
}
?><br>
 <br>
 <br>
 <br>
<br>
 <br>
 <br>
 <br>
 <br>
 <br>
<br>  <hr size="3" align="center" width="850">
 <p align="center"> Copyright &#169; 2015 Szabó László István Neptun kód: BRXLXS . Minden jog fenntartva.  szli@freemail.hu. </p>
</body>
</html>

Javascript Keresés

<html>
<head>
</head>
<body>
<?php
#mysqli kapcsolódás
$dbh = mysqli_connect(bejegyzes);

if(isset($_GET['keres'])){
# az isset függvény segítségével megvizsgáljuk,hogy létezik-e a GET tömbben lévő 'keres' kulcs
$keres = $_GET['keres'];

if(!empty($keres)){
# ellenőrizzük nem-e üres a kapott változó
$keres = trim($keres); # eltávolítjuk a szóközt az elejéről és végéről

$query = mysqli_query($dbh,"SELECT * FROM `users` WHERE `username` LIKE '%$keres%' ");

if(mysqli_affected_rows($dbh) > 0){
#amennyiben van találat kiírjuk
echo 'Találatok:';
while($sor = mysqli_fetch_assoc($query)){
echo $sor['username'];
echo '<br/>';
}
}else{
echo 'Nincs találat';
}

}else{
echo 'Üres keresőmező';
# esetleg visszairányítás:
//header('Location: kereso.html');
}

}else{
echo 'Közvetlen meghívás nem engedélyezett!';
}
?>
</body>
</html>

Javascript regisztráció

<?php
session_start();
ob_start();
include('connect.php');
?>
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="content-type" content="text/html" />
<meta name="author" content="prometh" />
    <link rel="stylesheet" type="text/css" href="css/style.css"/>
<title>Regisztráció</title>
</head>
<body><body bgcolor="#87ADD3">
<br>
 <br>
 <br>
  <br>
<br>
 <font size="1"<PRE><h1 align="center"> KÉREM REGISZTRÁLJA MAGÁT! </h1>     </PRE> </font>
 <br>
 <br>


<form method="POST" action="<?php print($_SERVER['PHP_SELF']);?>" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="1048576"/>
<table>
<tr>
    <td>E-mail:</td><td><input type="text" name="email"/></td>
</tr>
<tr>
    <td>Jelszó:</td><td><input type="password" name="jelszo"/></td>
</tr>
<tr>
    <td>Vezetéknév:</td><td><input type="text" name="vezetek_nev"/></td>
</tr>
<tr>
    <td>Keresztnév:</td><td><input type="text" name="kereszt_nev"/></td>
</tr>
<tr>
    <td>Profilkép:</td><td><input type="file" name="profilkep"/></td>
</tr>
<tr>
    <td colspan="2" align="center"><input type="submit" name="submit" value="Regisztráció"/></td>
</tr>
</table>

<br>
 <br>
 <br>
  <br>
<br>
      <p align="center">  <marquee width="300" height="65" direction="up" scrollamount="1" onmouseout="this.start()" style="FILTER: Alpha(Opacity=100, FinishOpacity=0, Style=1, StartX=0, StartY=30, FinishX=0, FinishY=0)" onmouseover="this.stop()"><center><font face="verdana" color="#777777">

        - Minden mező kitöltése kötelező<br />
        - Feltölthető kép csak jpg típusú <br />
        - és maximum 1 Mb méretű.<br />
        </font></center></marquee></p> 


 <br>
 <br>
<br>
 <br>  <br>
 <br>
 <br>
 <br>
<br>
 <br> <hr size="3" align="center" width="850">
 <p align="center"> Copyright &#169; 2015 Szabó László István Neptun kód: BRXLXS . Minden jog fenntartva.  szli@freemail.hu. </p>



</form>
<?php
if (isset($_POST['submit']))
{
    $email=trim($_POST['email']);
    $jelszo=sha1(trim($_POST['jelszo']));
    $vezetek_nev=trim($_POST['vezetek_nev']);
    $kereszt_nev=trim($_POST['kereszt_nev']);
    $forras=$_FILES['profilkep']['tmp_name'];
    $cel="kepek/".$_FILES['profilkep']['name'];
   
    if($_FILES['profilkep']['type'] == "image/jpeg" &&
    $email !="" &&
    $jelszo!="" &&
    $vezetek_nev!="" &&
    $kereszt_nev!="")
    {
        $sql="INSERT INTO users VALUES (0,'{$email}','{$jelszo}','{$vezetek_nev}','{$kereszt_nev}','{$cel}');";
       
        $DATA=array('email','jelszo','vezetek_nev','kereszt_nev');
        foreach($DATA as $a)
        $$a=mysql_real_escape_string($kapcsolat,$$a);
       
        mysql_query($sql) or die ("SQL hiba");
        move_uploaded_file($forras,$cel);
       
        $sql2="SELECT user_ID FROM users WHERE (email='".$email."' AND jelszo='".$jelszo."');";
        $query2=mysql_query($sql2) or die ("SQL2 hiba");
        $dbrec=mysql_fetch_array($query2);
        $_SESSION['login']=$dbrec['user_ID'];
       
        mysql_close($kapcsolat);
        header("Location:adatlap.php");
    }
    else
    {
        print("<section><font color='red'>Ellenőrizze a bevitt adatokat.</font></section>");
    }
}
?>
</body>
</html>

Mi az a JavaScript?

A Sun Microsystems és a Netscape Communications Corporation együtt fejlesztette ki a javascriptet. A Java nyelv nem más, mint egy hatalmas, tisztán objektum-orientált programozási nyelv, melynek nagy ereje, hogy segítségével platformfüggetlen alkalmazások készíthetõk. A Java nyelven megírt programokat egy ún. köztes kódra (byte kód) kell lefordítani, melyek különbözõ platformokon, különbözõ operációs rendszerek alatt futtathatóak - egy értelmezõ program segítségével. A Java szóval napjainkban - a WWW világában - három területen találkozunk.

Egyrészt beszélünk Java programokról, mely programokat le kell fordítani és önállóan futnak. (Nem támaszkodnak más programokra.)
A Java appletek (programocskák) - kis Java programok -, melyek a Java-t támogató böngészõkbõl futtathatóak. Ezek tehát felhasználják a böngészõk által nyújtott szolgáltatásokat. Az appleteket is le kell fordítani és - ahogyan azt már korábban bemutattam - ezek HTML dokumentumokból hívhatók.
A JavaScript a Java nyelv "kis testvérkéje"- mondják sokan. A JavaScript-ek a HTML lap szövegébe épülnek be, csak a böngészõben képesek futni.
A JavaScript, mint neve is mutatja, egy script nyelv, amit legelõször a Netscape Navigator 2.0 támogatott. A JavaScript-eket HTML lapokba lehet beágyazni, a lappal együtt töltõdnek le, majd a böngészõ értelmezi és futtatja azokat. Hasonlít a Java-ra, de ugyanakkor sokkal kisebb, egyszerûbb, korlátozottabb mûködésû is annál.
Nézzünk meg egy összehasonlító táblázatot arra vonatkozóan, hogy mik a fõbb hasonlóságok és különbségek a JavaScript és a Java appletek között:

JavaScript Java applet
A kliens értelmezi
(interpretálja). A szerveren fordított -
letöltés után - kliensen futó.
Objektum-alapú.
Beépített, kiterjeszthetõ objektumokat használ, de nincsennek osztályok és öröklõdés. Objektum-orientált. Az appletekben vannak osztályok és öröklõdés.
A program beágyazódik a HTML dokumentumba. Az appletek a HTML lapból hívhatók meg, de azoktól elkülönülnek.
A változók típusát nem kell deklarálni. (Nem típusos nyelv.) A változókat deklarálni kell. (Erõsen típusos nyelv.)
Dinamikus kötés. Az objektum-hivatkozások ellenõrzése futásidõben történik. Statikus kötés. Az objektum-hivatkozásoknak már fordításkor létezniük kell.
Nem tud önállóan a merevlemezre írni. Nem tud önállóan a merevlemezre írni.
A JavaScript-et azért fejlesztették ki, hogy az egyébként statikus lapokba dinamizmust vigyenek. Egyrészt látványosabbá tehetjük vele azokat (dinamikusan, futásidõben generálhatunk HTML lapokat), másrészt számos praktikus dologra használhatjuk fel (pl. jelszót kérhetünk a lapunk megtekintéséhez, vagy pl. ellenõrizhetjük az elküldendõ adatok helyességét még a kliens oldalon - hálózati erõforrásokat spórolva meg, stb).

A továbbiakban bemutatom a JavaScript mûködését, felépítését és az általa használt, beépített objektumokat.

JavaScript a HTML dokumentumban

A JavaScript utasításoknak a SCRIPT elemben kell lenniük az alábbi módon:

<SCRIPT>
JavaScript-utasítások
</SCRIPT>

A tag-ek között akárhány JavaScript-utasítás lehet, ill. a JavaScript bárhol elhelyezhetõ a dokumentumban. A <SCRIPT> tag-ekbõl is bármennyi lehet.

A SCRIPT elem opcionális attribútuma LANGUAGE (a nyelv), melyben a script nyelv és ennek a verziószáma specifikálható.
Pl.:

<SCRIPT LANGUAGE="JavaScript">
Ez egy Netscape 2.0-ás JavaScript
<SCRIPT LANGUAGE="JavaScript1.1">
Ez pedig egy Netscape 3.0-ás JavaScript
A 3.0-ás Navigator mindkét típusú JavaScript-et futtatja, a 2.0-ás csak az elsõt.

Egy hasznos példa a LANGUAGE használatára:

<SCRIPT LANGUAGE="JavaScript">
// 1.0-ás függvények
</SCRIPT>
<SCRIPT LANGUAGE="JavaScript1.1">
// Újradefiniált függvények melyek 1.1-es JavaScript utasításokat is tartalmaznak
// 1.1-függvények definíciója
</SCRIPT>

A JavaScript elrejtése a megjegyzés tag-ek közé

Ha egy böngészõ nem ismeri a JavaScript-et, akkor a <SCRIPT> tag-ek közötti utasításokat kiírja a képernyõre - ami nagyon elcsúnyíthatja a megjelenítést. A probléma megoldása az, hogy elrejtjük az utasításokat a korábbi (Netscape Navigator 2.0 alatti) böngészõk elõl, az alábbi módon:

<SCRIPT>
<!-- Az elrejtés itt indul
JavaScript utasítások
// A rejtésnek vége -->
</SCRIPT>

Egy nem JavaScript kompatibilis böngészõ nem érti a <SCRIPT> tag-et - ezért figyelmen kívûl hagyja azt -, így az összes utasítás egy megjegyzésbe kerül. Ezzel szemben pl. egy Netscape Navigator 2.0-ás böngészõ a <SCRIPT> tag-et követõ sort ignorálja, az utasításokat pedig végrehajtja.

Egy másik hasznos tag a <NOSCRIPT>, melynek segítségével kijelölhetõ a dokumentumnak egy olyan része, melyet csak azok látnak, akiknek a böngészõje nem JavaScript kompatibilis, vagy a böngészõben nincs engedélyezve a JavaScript-ek futtatása.

Mibõl épül fel a JavaScript nyelv?

A JavaScript nyelv nagyon hasonlít a C++ nyelvre (a Java nyelv megalkotásakor a C++ nyelvbõl indultak ki). Sok hasonlóság mutatkozik mind a szintaktikát (utasítások formája, operandusok), mind a szemantikát illetõen. Aki ismeri a C, ill. a C++ nyelvet, sok ismerõs dolgot talál majd a következõ részben.

Értékek, változók és literálok

Értékek

Az alábbi típusú értékeket fogadja el a JavaScript:

Számok, melyek lehetnek egészek vagy valós számok. (Pl.: 23 vagy 6.452)
Logikai értékek, true vagy false
Stringek, pl. "Szia!" vagy 'Hello!'
null, null érték

Változók

A JavaScript-ben a változókat nem kell deklarálni, és az egész típuskezelés nagyon flexibilis. A szükséges konvertálások automatikusan történnek.

A változó létrehozásánál - hogy biztosak legyünk abban, hogy egy új változót hozunk létre, nem egy már meglévõt módosítunk - ajánlott a var alapszó használata.
Pl.:

var valtozo=28;
valtozo="Ez most nem szam, hanem szöveg.";

A fenti két sor hibátlanul mûködik, a JavaScript megfelelõen konvertál, a valtozo-ban a szöveg lesz.

Néhány hasznos konvertáló függvény:

Az eval megkísérel kiértékelni egy szöveget, mint egy kifejezést.
A parseInt egy szöveget egész számmá konvertál.
A parseFloat egy szöveget lebegõpontos számmá kovertál, ha lehetséges.
A változónevek betûvel vagy "_" -jellel kezdõdnek és ezekkel vagy számokkal folytatódnak. A JavaScript megkülönbözteti a kis és nagybetûket, erre figyeljünk oda!

A függvényeken kívül létrehozott változók globálisak, az aktuális dokumentumon belül mindenhonnan elérhetõk. Ha függvényen belül definiálunk egy változót, akkor az lokális, csak a függvényen belül látható. Olyan lokális változó definiálásakor, amely globálisként már szerepel, a var alapszót kell használni.


Literálok

A literálok értékeket reprezentálnak a JavaScript-ben.
Típusaik:

Egész számok
Decimális
Oktális (0-val kezdõdnek, a számjegyek 0-7-ig lehetnek)
Hexadecimális (0x-el vagy 0X-el kezdõdnek, a számok számjegyekbõl (0-9-ig), és betûkbõl állhatnak(a-f ill. A-F)).
Lebegõpontos számok
A következõ részekbõl állhatnak: decimális egészbõl, decimális pontból, törtrészbõl és kitevõbõl.
Pl.: 16.423, 16.423E-1
Logikai literálok
A Boolean típusnak két literálja van: true és false
Szöveg literálok
Egy szöveg(string) literál vagy nem tartalmaz karaktert, vagy akárhány karaktert tartalmaz két ' vagy " jelek között.
Speciális karaktereket is tartalmazhat egy string:

Karakter Jelentés
\b backspace
visszatörlés
\f form feed
lapdobás
\n \new line
új sor
\r carrige return
kocsi vissza, sor elejére
\t tab
tabulátor-pozíció

\\

\"
\' backslash
backslash karakter,ill. más speciális karakterek írása
Kifejezések és operátorok

Kifejezések

Egy kifejezés literálok, változók, operátorok és kifejezések halmaza, melyek egy értéket határoznak meg. Ez az érték lehet szám, szöveg vagy logikai érték. Az alábbi típusú kifejezéseket ismeri a JavaScript:

Aritmetikai - az értéke szám
Szöveg - szöveget vesz fel értékül
Logikai - értéke true vagy false
Feltételes kifejezés

Szintaxisa: (feltétel) ? érték1 : érték2
Értéke a feltételtõl függõen vagy az érték1 (ha igaz), vagy az érték2 (ha hamis).


Operátorok

Vannak hozzárendelõ, aritmetikai, összehasonlító, bitenkénti, logikai, szöveges és speciális operátorok. Ezeket is feloszthatjuk egy vagy kétoperandusú operátorokra.

Egy oprendusú operátor használata:

operátor operandus

vagy

operandus operátor

pl.: i++, ++i

Két operandusú operátorhoz két operandus szükséges:

operandus1 operátor operandus2

pl.: x + y

A hozzárendelõ operátorok pl.: =,+=,*=,/=, stb.
pl.: x+=2 (x-et növeli 2-vel)

Összehasonlító operátorok pl.: = =, !=, <, <=, >, >=
pl.: x!=y (x nem egyenlõ y-al)

Aritmetikai operátorok pl.: +, -, *, /, %(modulusz), ++
pl.: x++ (x értékét növeli eggyel - inkrementáló operátor)

Logikai operátorok: && (logikai és),|| (logikai vagy)

String operátor: +
pl.: nev=vezeteknev+' '+keresztnev


Az objektumok a JavaScript-ben
A JavaScript-ben az objektumok más objektumokból és változókból épülnek fel. Az objektumoknak - hozzájuk rendelt - függvényeik, más néven metódusaik vannak. Vannak elõre definiált objektumok (beépített objektumok), de mi is tudunk objektumokat létrehozni.

Általánosan egy objektum jellemzõjéhez a következõképpen férhetünk hozzá:

objektumNév.tulajdonságNév

Az objektum-neveknél és a tulajdonság-neveknél figyeljünk arra, hogy a JavaScript kis- és nagy betûre érzékeny. Egy tulajdonságot úgy definiálhatunk, ha egyszerûen értéket rendelünk hozzá. Példaként tegyük fel, hogy van már egy Szemely nevû objektum. Ekkor ehhez nev és kor jellemzõket az alábbi módon rendelhetünk:

Szemely.nev = "János"
Szemely.kor = 23

Az objektumok olyanok, mint egy-egy asszociatív tömb, (egy tömb, melyben az elemeknek saját nevük van, így nem kell tudnom, hogy egy elem a tömben pontosan hanyadik; az értékéhez így is hozzáférhetek).
Tehát egy elemhez így is hozzáférhetünk:

Szemely["nev"] = "János"

Fontos szabály, hogy a Netscape 2.0-ban egy tulajdonságot megcímezhetünk egyrészt a tulajdonság nevével, másrészt a "tömb"-ön belüli sorszámával is. A 3.0-ás böngészõben azonban, ha névvel inicializáltunk egy tulajdonságot, akkor arra mindig névvel kell hivatkozni. Hasonlóképpen kell eljárnunk, ha index-el inicializálunk. Ez alól a szabály alól csak a formok képeznek kivételt, mivel itt minkét módon címezhetük (névvel természetesen csak akkor, ha adtunk a formnak nevet).

Objektumokat mi is készíthetünk, ehhez azonban tudnunk kell, hogyan hozhatunk létre függvényeket.


Függvények
A JavaScriptek írásához meg kell vizsgálnunk azt, hogy hogyan lehet függvényeket létrehozni ill. hogyan lehet azokat meghívni.
(A függvény-utasításoknak van egy csoportja, mely önálló feladatot lát el.) Egy függvényt a function kulcsszóval definiálhatunk, amit a függvény neve követ, ezután kerekzárójelek között, vesszõvel elválasztva az argumentumok, majd kapcsoszárójelek között utasítások következnek. Az így definiált mûveletsor a függvény meghívásakor hajtódik végre. A függvényt a függvény nevével és az ezt követõ - kerekzárójelek között felsorolt, vesszõvel elválasztott - paraméterekkel lehet meghívni. A függvényeket ajánlatos a fejben definiálni, mivel a dokumentum csak a fej letöltõdése után jelenik meg, így elkerülhetõ, hogy a felhasználó olyan függvényt aktivizáljon, ami még definiálatlan.
Nézzünk egy példát az elmondottakra:

<HEAD>
<SCRIPT LANGUAGE="JavaScript">
<!-- Elrejtés indul
function udvozlet(valaki)
{
document.write("Üdvözöllek a lapomon "+valaki+"!");
}
// Elrejtés vége-->
</SCRIPT>
</HEAD>
<BODY>
<SCRIPT>
udvozlet("látogató");
</SCRIPT>
</BODY>

Itt tehát definiáltam egy udvozlet nevû függvényt - a fejben, ami a valaki paraméterben kapott szöveget (stringet) - az "Üdvözöllek a lapomon " mögé illesztve - kiírja. Látható a függvény definíció és a függvényhívás módja is. A szövegeket vagy " jelek, vagy ' jelek közé kell zárni.
A függvények visszadhatnak egy értéket return utasítással, az alábbi formában: return érték; vagy return kifejezés;

A függvényben szerepel egy utasítás, mely jól szemlélteti a JavaScript objektum-orientáltságát.
A document.write("..."); utasítás nem tesz mást mint meghívja a JavaScript egy beépített objektumának, a document-nek a write ún. elemfüggvényét, metódusát (az objektumon végrehajtható mûvelet).

A JavaScript ismeri a rekurziót, függvények meghívhatják saját magukat.

A függvények az átadott értékeket vagy a függvény definícióban szereplõ (formális) paramétereken keresztül, vagy az alábbi módon érhetik el:

függvénynév.arguments[i]

ahol a függvénynév az adott függvény neve, az i pedig a paraméter sorszáma (a számozás 0-tól indul). Az argumentumok száma az arguments.length változóból megtudható.


Új objektumok készítése
Egy új objektum elkészítéséhez két dologra van szükség:

1. Egy ún. konstruktor-függvényt kell írni, amely megadja az objektum-típus nevét, tulajdonságait és metódusait.
2. El kell készíteni az objektum egy példányát a new operátorral.

Készítsük el a szemely nevû objektum típusunkat a következõ módon:

function szemely(nev, kor, szulhely){
                                                     this.nev=nev
                                                     this.kor=kor
                                                     this.szulhely=szulhely
                                                    }

A fent definiált objektum-típusból a new utasítással készíthetünk konkrét objektumot.

Pl.: peti=new szemely("Kis Péter",16,"Debrecen")

A this objektum a függvényben nem más, mint egy hivatkozás arra a konkrét objektumra, amelyet a new-val éppen most hozunk létre. Jelen pillanatban a this peti-t jelenti, így Péter megfelelõ jellemzõi eltárolódnak.

Egy objektum tulajdonsága lehet egy másik objektum is. Nézzünk erre is egy példát! Készítsünk egy szamla nevû objektumot, melynek a tulajdonosa egy szemely lesz.

function szamla(azonosito,tulajdonos){
                                                      this.azonosito=azonosito
                                                      this.tulajdonos=tulajdonos
                                                      }

Most hozzuk létre Péter számláját az alábbi módon:

szamla1= new szamla(2012,peti)

Figyeljük meg, hogy itt a peti egy objektum neve! Ezután a szamla1 tulajdonosát a következõ képp olvashatjuk ki:

szamla1.tulajdonos.nev (= Kis Péter)


Metódusok
A metódusok olyan függvények, amelyek objektumokhoz tartoznak. Egy metódus általában egy adott objektum-típusú objektummal dolgozik. A metódusok a megfelelõ objektumokhoz vannak hozzárendelve.

Egy metódus készítéséhez tehát definiálnunk kell egy függvényt, majd hozzá kell rendelnünk a megfelelõ objektumunkhoz. A hozzárendelés szintaxisa a következõ:

objektum.metódusnév = függvénynév.

Ezt az objektum definíciójánál, annak függvényében kell megtennünk.

A metódus meghívása magától értetõdõen:

objektum.metódusnév(paraméterek)

Az elõbbi példához visszatérve készítsünk egy olyan metódust, melynek megadva egy szemely-t, kiírja annak a nevét.

function neve(){
                        document.write("A számla tulajdonosa: "+this.nev)
                       }

Módosítani kell a szemely objektum típust:

function szemely(){
...
                             this.neve=neve
                            }

Ezek után következhet a metódus meghívása:

peti.neve()

Ez kiírja a böngészõbe, hogy "A számla tulajdonosa: Kis Péter".
Objektumok törlése

A 2.0-ás böngészõben minden objektum addig él, amíg az õt tartalmazó lap él. Az 1.1-es JavaScript-ben úgy lehet objektumot törölni, hogy az objektum-referenciát null-ra kell állítani.

Az utasítások

A JavaScript utasítások - ahogyan azt már korábban mondtam - nagyon hasonlítanak a C++ utasításaira. Ezeket az utasításokat felsorolás szintjén bemutatom, hogy azok is, akik kevésbé ismerik a C-t - de már programoztak valamilyen nyelven -, el tudják készíteni a saját kis scriptjeiket. Az utasítások után nem kell - de lehet - pontosvesszõt tenni (;) - egy kivétel van, amikor stringben vannak az utasítások (lsd. eseménykezelõknél).

A { } jeleket csak akkor kell használni, ha nem egy utasítást, hanem többet akarunk végrehajtani (utasítás blokk) A [ ] jelek közötti rész opcionális, elhagyható.

Feltételes utasítás

if (feltétel) { utasítások1 [} else { utasítások2 ]}

Ha igaz a feltétel, akkor az utasitások1 fut le; ha hamis a feltétel és van else, akkor az utasítások2 fut le, és ha hamis a feltétel és nincs else, akkor nem történik semmi.


Ciklusok

for ([inicializáló kifejezés] ; [feltétel] ; [ciklusváltozó módosítása])
{ utasítások }

Végrehajtódik az inicializáló kifejezés; kiértékelõdik a feltétel, ha igaz, végrehajtódnak az utasítások; ha hamis a feltétel, akkor vége a ciklusnak; végrehajtódik a ciklusváltozó módosítása; újból kezdõdik a folyamat a feltétel kiértékelésétõl.
for (változó in objektum) { utasítások }

A változó sorra felveszi az objektum jellemzõit és ezekre az értékekre hajtódnak végre az utasítások.
while (feltétel) { utasítások }

Amíg a feltétel igaz, addig végrehajtódnak az utasítások.

continue és break

A continue utasítást ciklusokban lehet kiadni és hatására a for és a while 'ciklusa' megkezdi a következõ ciklust (mintha a ciklus utolsó utasítása után ugrana a vezérlés).

with

Hatáskörében alapértelmezett objektumot definiál.

with (objektum) { utasítások }

Az utasításokban ha nem egyértelmû egy objektumhivatkozás, akkor az objektum (with-beli objektum) egy tulajdonságának értelmezi a böngészõ az adott objektumothivatkozást.

Megjegyzések

A megjegyzéseket - mint a C++-ban - két féle képpen írhatunk.

// Így egy sort

/* Így pedig
    több sort
    lehet megjegyzésbe tenni.*/

Események kezelése

A JavaScript-re az eseményvezéreltség jellemzõ. Ez azt jelenti, hogy a kis programjaink a felhasználó bizonyos tevékenységeire válaszolva indulnak el. Esemény lehet az, ha felhasználó megnyom egy gombot, vagy ráviszi az egér mutatóját egy linkre, vagy betöltõdik a lapunk a böngészõbe és még sorolhatnám. A Netscape az egyes HTML elemeket újabb attribútumokkal bõvítette ki, mint pl. a név-vel (name), így mintegy objektumokká alakította õket, melyekre így a scriptekbõl hivatkozni lehet. A mi feladatunk, hogy ezekhez az elemekhez/objektumokhoz hozzárendeljük a megfelelõ eseményt, ill. az azt lekezelõ utasításokat. Így egy ún. eseménykezelõ-t definiálunk. Ezt könnyen meg is tehetjük a kibõvített eszközrendszer segítségével.

Az eseményeknek neveik vannak, mely nevek úgy keletkeznek, hogy az esemény angol neve elé odaírjuk az on szót. Így tehát van - csak, hogy néhányat kiemeljek - onClick (kattintottak), onChange (megváltozott), onLoad (letöltõdött) nevû eseménykezelõ. Ezekhez kell a megfelelõ utasításokat, vagy függvényt hozzárendelni.

Pl.:
<form>
<input type="button" value="OK" onClick="alert('Megnyomta a gombot!')">
</form>

A fenti példában tehát utasítottam a böngészõt, hogy ha valaki rákattint a gombra, akkor hozzon létre egy alert (figyelmeztetõ) ablakot a megadott felirattal. Az alert függvény egy elõre elkészített, beépített függvény, melyekrõl késõbb részletesen beszélek, most csak a példa kedvéért használtam. Figyeljük meg az idézõjelek és az aposztrófok használatát!

Természetesen egy-egy esemény nem alkalmazható minden objektumhoz. (Egy képet nem lehet kiválasztani úgy, mint egy legördülõ menü valamely elemét.) Az alábbi táblázatban megtalálhatóak az események és azok az objektumok, amelyekre alkalmazhatók:

Esemény Mire alkalmazható Ekkor következik be Eseménykezelõ
abort képek A felhasználó megszakítja a kép letöltését onAbort
blur ablakok, frame-ek, és minden form elem A felhasználó elviszi a fókuszt az ablakból, a frame-bõl, vagy a form elemekrõl onBlur
click gombok, radio gombok, check gombok, submit gombok, reset gombok, link-ek A felhasználó rákattint valamilyen form-elemre vagy linkre onClick
change szövegmezõk, szöveg box, legördülõ menü A felhasználó megváltoztatja az elem értékét onChange
error képek, ablakok A dokumentum vagy kép betöltése hibát okoz onError
focus ablakok, frame-ek és minden form elem A felhasználó ráviszi a fókuszt az ablakra, a frame-re, vagy a form építõelemeire onFocus
load a dokumentum body-ja A felhasználó letölti a dokumentumot onLoad
mouseout szöveg box, kép, linkek A felhasználó lehúzza az egérmutatót az adott objektumról onMouseout
mouseover linkek A felhasználó a link felett mozog az egérmutatóval onMouseover
reset formok A felhasználó reset-eli a formot onReset
select szövegmezõk, szövegboxok A felhasználó kiválaszt egy mezõt onSelect
submit submit gomb A felhasználó megnyomja a submit gombot onSubmit
unload dokumentum body-ja A felhasználó elhagyja a lapot onUnload
Nézzünk ezek használatára néhány példát! Próbáljuk ki ezeket!

<a href="#Nézzük" onMouseover="alert('Ez az onMouseover!')">Ez itt megmutatja, mit csinál az onMouseover.</a>

Ez itt megmutatja, mit csinál az onMouseover.

<form><center>
<select name="kereso" onChange="alert('Jó választás!')">
<option value=infoseek>InfoSeek
<option value=webcrawler>Webcrawler
</select>
</center></form>


Ha a másik elemet választjuk ki, bekövetkezik az change esemény.

Egyéb

A JavaScriptekben és a HTML dokumentumokban ékezetes betûket az ISO Latin-I karakterek kódjaival írhatunk. A szövegbe egy karakter helyet egy speciális karakersorozatot kell írni.

Pl.:

&aacute; = á
&Aacute;= Á
&eacute; = é
&iacute;  = í
&ouml;   = ö
&otilde;  = õ
stb.



Html ismeretek ismétlés 9_B


Oldalszerkezet

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
 <head>
  <title>Az oldal címe</title>
  <!--//
    A fejlécbe kerülnek a kiegészítő információk (kulcsszavak, a szerző, ...),
    és a megjelenést befolyásoló adatok (karakterkódolás, stílus definíciók)
  //-->
 </head>
 <body>

  ... Az oldal tartalma ide kerül ...

 </body>
</html>
HTML elemek
Bekezdések
<h1>Ez egy cím</h1>
<h2>Ez egy alcím</h2>
<h3>Ez egy alalcím</h3>
<p>Ez egy bekezdés</p>
<p>Ez egy bekezdés<br>sortöréssel</p>
<p>A bekezdés után elválasztó vonal</p><hr>
Hivatkozások
<img src="kep.jpg" alt="képet beszúrni így kell">
<a href="masik.html">Hivatkozás a masik.html állományra</a>
<a href="http://valahol.hu">Hivatkozás teljes URL-el</a>
<!--// Stíluslap csatolása //-->
<link rel="StyleSheet" href="base.css" type="text/css" media="screen,print"/>
<!--// JavaScript kód csatolása //-->
<script src="base.js" type="text/javascript">
Általános blokk elemek
<span>Inline (karakter szintű) blokk</span>
<div>Bekezdés szintű blokk</div>
Felsorolás, számozás
Felsorolás
<ul>
  <li>A felsorolás első pontja</li>
  <li>A felsorolás második pontja</li>
  <li>A felsorolás harmadik pontja</li>
</ul>
Számozott lista
<ol>
  <li>A számozott lista első pontja</li>
  <li>A számozott lista második pontja</li>
  <li>A számozott lista harmadik pontja</li>
</ol>
Összetett, többszintű lista
<ol>
  <li>A többszintű lista első pontja
    <ul>
      <li>Az első pont első alpontja</li>
      <li>Az első pont második alpontja</li>
    </ul>
  </li>
  <li>A többszintű lista második pontja
    <ul>
      <li>Az második pont első alpontja</li>
    </ul>
  </li>
  <li>A többszintű lista harmadik pontja
    <ul>
      <li>Az harmadik pont első alpontja</li>
      <li>Az harmadik pont második alpontja</li>
      <li>Az harmadik pont harmadik alpontja</li>
    </ul>
  </li>
</ol>
Táblázat
<table>
<tr><th>Egyszerű táblázat fejlécének első cellája</th><th>és második cellája</th></tr>
<tr><td>A második sor első adat cellája</td><td>és második adat-cellája</td></tr>
<tr><td>A harmadik sor első adat cellája</td><td>és második adat-cellája</td></tr>
</table>
Cellák összevonása
<td colspan="3">Ez egy három oszlop széles cella</td>
<td rowspan="2">Ez egy két sor magas cella</td>
Összetett példa
<table>
  <thead>
    <tr><th>A fejléc első cellája</th></tr>
  </thead>
  <tfoot>
    <tr><th>A lábléc alul fog megjelenni!</td></tr>
  </tfoot>
  <tbody>
    <tr><td>A táblázat törzse - lehet belőle több is!</td></tr>
  </tbody>
</table>

Javascript csatolasa

<style type="text/css">
@import url(style.css);
</style>
<script src="javascript.js" type="text/javascript"></script>

------------

<link rel="stylesheet" type="text/css" href="gallerystyle.css" />

<!-- Do not edit IE conditional style below -->
<!--[if gte IE 5.5]>
<style type="text/css">
#motioncontainer {
width:expression(Math.min(this.offsetWidth, maxwidth)+'px');
}
</style>
<![endif]-->
<! -- End Conditional Style -->

<script type="text/javascript" src="motiongallery.js">
</script>



HTML bejegyzésbe ezt gondoltam:

<div id="motioncontainer" style="position:relative;overflow:hidden;">
<div id="motiongallery" style="position:absolute;left:0;top:0;white-space: nowrap;">

<nobr id="trueContainer"><a href="javascript:enlargeimage('dynamicbook1.gif')"&g t;<img src="dynamicbook1.gif" border=1></a> <a href="javascript:enlargeimage('dynamicbook1.gif', 300, 300)"><img src="dynamicbook1.gif" border=1></a> <a href="http://www.dynamicdrive.com"><img src="dynamicbook1.gif" border=1></a> <a href="#"><img src="dynamicbook1.gif" border=1></a> <a href="#"><img src="dynamicbook1.gif" border=1></a> <a href="#"><img src="dynamicbook1.gif" border=1></a> <a href="#"><img src="dynamicbook1.gif" border=1></a> <a href="#"><img src="dynamicbook1.gif" border=1></a> <a href="#"><img src="dynamicbook1.gif" border=1></a></nobr>

</div>
</div>

---------
Űrlapok - Űrlap elemek. Az <input> tag.
Az űrlap elemeinek többségét az <input> tag segítségével lehet létrehozni. Nincs záró tagja.

Legfontosabb attribútumai, amelyek minden elem-típushoz hozzárendelhetőek:
type: Az űrlapelem típusát adja meg. A HTML 4.01 szabványban megengedett értékei: text, password, checkbox, radio, file, hidden, submit, reset, button, image. A HTML 5 szabványban jelentősen növelték az elemtípusok számát, de az új elemeket jelenleg (2013-ban) a böngészők még nem támogatják teljes mértékben.
name: Az elem neve. Az űrlap adatait feldolgozó program ez alapján tudja azonosítani a felhasználó által bevitt adatokat.
value: Az űrlapelem kezdeti értéke. Kötelező megadni, ha a type attribútum értéke radio vagy checkbox, egyébként használata opcionális.
id, class, style: általános attribútumok
Egysoros szövegmező
Példa:

Felhasználó név:
<input type="text" name="username" size="35" maxlength ="50">

Ami így jelenik meg:

Felhasználó név:

A példában szereplő attribútumok jelentése:

size: A szövegmező szélességét adja meg a látható karakterek számában. Ez többnyire csak egy becsült érték, mivel a legtöbb betűtípus esetén a különböző karaktereknek a szélessége is eltér egymástól. Például az m betű több helyet foglal el mint az i betű, kivéve ha monospace betű típust választunk.
maxlength: A beírható karakterek maximális száma. Az alapérték a végtelen.
Ha a maxlength értéke nagyobb, mint a size attribútum értéke, akkor a felhasználónak lehetősége van arra, hogy több karaktert írjon a szövegmezőbe, mint ami abban egyszerre látszódhat. Ez általában nem okoz problémát, mert a kurzort a billentyűzeten lévő nyilakkal mozgatva a felhasználó el tudja érni a beírt szöveg minden részét.

Jelszó mező
Példa:

Jelszó:
<input type="password" name="userpassword" size="20"
    maxlength="15"> (maximum 15 karakter)

Ami így jelenik meg:

Jelszó:
 (maximum 15 karakter)

Az attribútumok használata megegyezik az egysoros szövegmezőnél leírtakkal.

A jelszó mezőben a beírt karakterek pont vagy csillag formájában jelennek meg, de a "titkosítás" csak a képernyőre vonatkozik. Az űrlap elküldésekor a jelszó is egyszerű szöveges adatként kerül továbbításra.

Jelölő négyzet
HTML űrlapokon jelölő négyzetek alkalmazásával érhetjük el azt, hogy a weblap látogatója az előre felkínált lehetőségek közül tetszőleges számú opciót kiválaszthasson.

Példa:

Nyelvtudás:
<input type="checkbox" name="lang1" value="hu"
    checked>magyar<br>
<input type="checkbox" name="lang2" value="en">angol<br>
<input type="checkbox" name="lang3" value="de">német<br>
<input type="checkbox" name="lang4" value="other">egyéb<br>

Ezt a kódot a böngészők így jelenítik meg:

Nyelvtudás:
magyar
angol
német
egyéb

Ha a checked attribútum meg van adva, akkor a böngészők a négyzetet kiválasztott állapotban jelenítik meg.

Rádió gombok
A rádió gombok is arra szolgálnak, hogy a weblap készítője által definiált lehetőségek közül a felhasználók választhassanak. Az azonos name attribútummal rendelkező rádió gombok alkotnak egy csoportot. Egy csoporton belül csak egyetlen egy gomb lehet bekapcsolt állapotban.

Példa:

Legmagasabb iskolai végzettség:
<input type="radio" name="education"
    value="elementary">alapfokú<br>
<input type="radio" name="education" value="secondary"
    checked>középfokú<br>
<input type="radio" name="education"
    value="higher">felsőfokú<br>

Ami a következőképpen jelenik meg:

Legmagasabb iskolai végzettség:
alapfokú
középfokú
felsőfokú

A különböző böngészők eltérő módon viselkednek akkor, ha egy csoporton belül egyik gomb sincs checked állapotban megadva a forráskódban. (Megjelenítéskor vagy az első gombot kapcsolják be vagy pedig egyiket sem.) Ezért a HTML szabvány ajánlása szerint a weblap fejlesztőjének gondoskodnia kell arról, hogy az egyik gomb alapértelmezés szerint bekapcsolt állapotban legyen.

Fájl csatolása
Példa:

Csatolt fájl:
<input type="file" name="attachment" size="40">

Ami a böngészőben ilyen beviteli mezőt eredményez:

Csatolt fájl:

A size attribútum itt is a beviteli mező szélességét adja meg a látható karakterek számában.

Ha az űrlap csatolt fájlt tartalmaz, akkor a form elem method attribútumának „post”, az enctype attribútumának pedig "multipart/form-data" értéket kell adni.

Rejtett űrlap mező
A rejtett űrlap mező lehetőséget ad arra, hogy az elküldött űrlap olyan adatot is tartalmazzon, amelyet a szerver generált. Az oldal látogatói ezeket az információkat nem látják és nem is tudják módosítani. A rejtett mezők egyik felhasználási területe a felhasználói aktivitás követése.

Példa:

<input type="hidden" name="user_id" value="456789">

Megjegyzés: A rejtett űrlap mező tartalma nem jelenik meg a képernyőn, de ettől az még nem számít titkosított adatnak. Az információ megszerzéséhez elég elolvasni a HTML kódot. (Jobb egérgomb kattintás az oldal fölött és a „Forrás megtekintése” menüpont kiválasztásával a böngésző megjeleníti a forráskódot.)

Űrlap elküldése
Általában egy weboldalon azért készítünk űrlapot, hogy a látogatók elküldhessék az általuk beírt információkat. Ehhez biztosítani kell számukra egy „Küldés” vagy más hasonló feliratú gombot, amire kattintva a böngésző továbbítja az adatokat a szerver felé.

Példa:

<input type="submit" value="Űrlap küldése">

Ez egy ilyen gombot eredményez a képernyőn:


Egy űrlap több küldés gombot is tartalmazhat.

Adatok törlése
Egy űrlapon belül „Reset” gomb is definiálható, ami törli a felhasználók által bevitt adatokat. A gombra kattintva az űrlap mezők visszaállnak az oldal HTML kódjában megadott alapértékekre. A szabvány nem ír elő kötelező viselkedésmódot arra az esetre, amikor egy mezőre nincs kezdőérték megadva. (Ilyenkor a böngésző programok törlik a mezőben lévő adatot, de az sem ellentétes a szabvánnyal, ha megmarad a felhasználó által utoljára beírt információ.)

Példa:

<input type="reset" value="Adatok törlése">

Ami a következőképpen jelenik meg:


Nyomógomb
Olyan nyomógomb is létrehozható az <input> tag segítségével, amelyhez a HTML szabvány közvetlenül nem rendel funkciót. Az ilyen gombokat általában JavaScript programok indítására használják.

Példa:

<input type="button" value="Számítás indítása"
    onclick="sum_calculator();">
2 + 2 = <span id="sum_result">?</span>

Ennek megjelenítése:

 2 + 2 = ?

A gombra kattintva lefut a sum_calculator nevű JavaScript programocska, ami kiírja a gomb mellett látható nem túl bonyolult számítási feladat eredményét.

Küldés gomb fényképpel
Egy űrlap úgy is elkészíthető, hogy a weboldal látogatói a küldés gomb helyett egy képre kattintva továbbíthassák a beírt adatokat. Ilyen módon egyedi kinézetű küldés gombot készíthetünk, illetve térképszerű választási lehetőséget is biztosíthatunk a felhasználók számára.

Példa:

Válassza ki az Önhöz legközelebbi márkakereskedésünket:
<input type="image" name="hungary_map" src="hungary.gif"
alt="Magyarország térkép a viszonteladóinkkal">



----------




Jegyzet;
http://burcsi.hu/_inf/adattar/5webdoku/x_egyszeruen.pdf




2018. április 9., hétfő

SQL alapjai 12_A

SQL = Structured Query Language (struktúrált lekérdező nyelv). A relációs adatbázis-kezelés szabványos nyelve. Deklaratív nyelvek csoportjába tartozik (nem algoritmikus nyelv) nem tartalmaz algoritmus szerkezeteket (elágazás, ciklus stb.), de algoritmikus nyelvekbe beépíthető (beágyazott SQL). Az SQL halmaz orientált a relációs algebrán alapuló nyelv.

Fejlődése:

1976: SEQUEL (= Structured English QUEry Language) az SQL eredeti változata, IBM-nél fejlesztették ki.
1981: ORACLE 2 (SQL alapú RDBMS, nagygépre).
1983: IBM: DB2 (SQL alapú RDBMS, nagygépre). A világ legnagyobb adatbázisait ma is jórészt DB2-ben kezelik.
1986: szabvány SQL, az ANSI (= American National Standards Institute) definiálta.
1992: SQL2 szabvány.
SQL3 (rekurzió, triggerek, objektum-relációs modell)
Négy utasításcsoportot foglal magában:

Adatdefiníciós utasítások (Data Definition Language – DDL), amelyek objektumok létrehozására, módosítására, törlésére valók.

Adatmanipulációs utasítások (Data Manipulation Language – DML), amelyek rekordok felvitelére, módosítására és törlésére alkalmazhatók.

Adatkezelő utasítások (Data Query Language – DQL), amelyekkel a letárolt adatokat tudjuk visszakeresni.

Adatvezérlő utasítások (Data Control Language – DCL), amelyekkel az adatvédelmi és a tranzakció-kezelő műveletek végrehajthatóak.

Az SQL utasítások kulcsszavakból (SQL names, keywords), azonosítókból, műveleti jelekből, literálokból (számszerű, dátumjellegű, szöveges konstansok) állnak. Minden utasítást pontosvesszővel kell lezárni.

Az SQL bemutatására a következő relációsémával rendelkező táblákat használom.

autó - tulajdonos sémák

Az auto táblában rsz a rendszámot jelöli és kulcs szerepet tölt be. A tul mező külső kulcsként a tulajdonost azonosítja, a tulaj tábla szazon mező értékei közül kerülhet ki.

Adatdefiníciós utasítások
Adattáblák létrehozása

CREATE TABLE táblanév
( oszlopnév adattípus  [feltétel],
...,
oszlopnév adattípus [feltétel]
[, táblaFeltételek]
);

Az adattípusok (Access-ben):

Szám, decimal, integer, smallint, real, double
Szöveg (1-255 byte), text()
Logikai
Dátum
Számláló (8 byte)
Pénznem
Feljegyzés
Ole objektum
HiperhivatkozásAz adattípushoz "DEFAULT érték" megadásával alapértelmezett érték definiálható. Ha ilyet nem adunk meg, az alapértelmezett érték NULL.
Oszlopfeltételek (egy adott oszlopra vonatkoznak):

NOT NULL | NULL

PRIMARY KEY: elsődleges kulcs

UNIQUE: kulcs

REFERENCES tábla(oszlop) [ON-feltételek]: külső kulcs

Táblafeltételek (az egész táblára vonatkoznak):

PRIMARY KEY (oszloplista): elsődleges kulcs

UNIQUE (oszloplista): kulcs

FOREIGN KEY (oszloplista) REFERENCES tábla(oszloplista) [ON-feltételek]: külső kulcs

Ha a (külső) kulcs több oszlopból áll, akkor csak táblafeltétel formájában adható meg.

Az SQL89 értelmezése szerint a NOT NULL záradék előírja, hogy az oszlop mezői mindíg érvényes adatot tartalmazzanak, NULL-kifejezés tilos. Ha elhagyjuk e záradékot, akkor a NULL-kifejezés az oszlopban megengedett lesz, és ha új sor létesítésekor a mezőbe nem írunk adatot, akkor annak tartalma NULL kifejezés lesz. A NULL záradék előírja, hogy amennyiben meghatározott értéket nem kapna az oszlopbeli bármely mező, akkor az adott oszloptípushoz illő semleges értéket (pl. üres karakterláncot, számtani nullát stb.) adjon a rendszer azon mezőnek.

A tábla módosításakor a definiált kulcsfeltételek automatikusan ellenőrzésre kerülnek. PRIMARY KEY és UNIQUE esetén ez azt jelenti, hogy a rendszer nem enged olyan módosítást illetve új sor felvételét, amely egy már meglévő kulccsal ütközne.

A példa táblák létrehozása

autó - tulajdonos séma

create table tulaj (
szazon text(11) primary key,
nev text(30),
cím text(40);

create table auto(
rsz text(7) primary key,
tipus text(20),
szin text(20),
ar money,
evj decimal,
tul references tulaj(szazon);

Relációséma törlése

DROP TABLE táblanév;

Hatására a séma és a hozzá tartozó adattábla törlődik.

Relációséma módosítása

ALTER TABLE táblanév
[ADD (újelem, ..., újelem)]
[MODIFY (módosítás, ..., módosítás)]
[DROP (oszlop, ..., oszlop)];

Az újelem: egy "oszlopnév adattípus [feltétel]", vagy egy "táblafeltétel", mint a CREATE TABLE utasításban.

A módosítás: "oszlopnév adattípus [feltétel]".

Adatmanipulációs utasítások.
A táblába új sor felvétele

INSERT INTO táblanév [(oszloplista)]
VALUES (értéklista);

Ha oszloplista nem szerepel, akkor valamennyi oszlop értéket kap a CREATE TABLE-ben megadott sorrendben. Egyébként, az oszlopnév-listában nem szereplő mezők NULL értéket kapnak. A táblába adatokat tölthetünk át másik táblából is, ha a VALUES(értéklista) helyére egy allekérdezést írunk.

A példatábla feltöltése:

insert into tulaj
values (27110142233, Kovács Ákos, Szerencs Sugár út 24);

insert into auto
values (abc-123, Trabi, kék, 130000, 1990, 27110142233);

Sor(ok) módosítása

UPDATE táblanév
SET oszlop = kifejezés, ..., oszlop = kifejezés
[ WHERE feltétel ];

Az értékadás minden olyan soron végrehajtódik, amely eleget tesz a WHERE feltételnek. Ha WHERE feltétel nem szerepel, akkor az értékadás az összes sorra megtörténik.

Példának nézzük azt az esetet, amikor módosítani akarom a tulaj tábla név értékét. Mivel egy sort tartalmaz a tábla, így nem kell kijelölni a módosítandó sort.

update tulaj
set nev = "Kovács Kázmér";

Ha több sort tartalmazna a tábla, akkor minden sor név mezőjét az előbbi névre változtatná.

Sor(ok) törlése

DELETE FROM táblanév
[ WHERE feltétel ];

Hatására azok a sorok törlődnek, amelyek eleget tesznek a WHERE feltételnek. Ha a WHERE feltételt elhagyjuk, akkor az összes sor törlődik (de a séma megmarad). Ilyenkor a tábla szerkezete megmarad, csak a tartalma törlődik.

Példának töröljük a tulaj tábla egyetlen rekordját.

delete from tulaj;

Adatlekérdező utasítás
A lekérdező nyelv egyetlen utasításból áll, mely számos alparancsot tartalmazhat, és a lekérdező utasítások többszörös mélységben egymásba ágyazhatók. Arra használjuk, hogy egy vagy több adathalmazból (reláció) egy adathalmazt állítsunk elő. A bemeneti adatokon, a relációs algebra műveleteit hajtjuk végre, és kapunk egy eredmény táblát.

A SELECT utasítás az alábbi alparancsokból állhat:

SELECT [DISTINCT] oszloplista --> projekció

FROM táblanévlista -->Descartes-szorzat

[WHERE feltétel] --> szelekció

[GROUP BY oszloplista] --> csoportosítás

[HAVING feltétel] --> csoport-feltétel

[ORDER BY oszloplista]; --> rendezés

Az egyes alparancsok megadási sorrendje a fent leírttak szerint történik, végrehajtási sorrendjük viszont az alábbi:

1. FROM --> Descartes-szorzat

2. WHERE --> szelekció

3. GROUP BY --> csoportosítás

4. HAVING --> csoport-szelekció

5. SELECT  projekció

6. ORDER BY --> rendezés

A SELECT utasítás alapváltozata:

SELECT [DISTINCT] oszloplista
FROM táblanévlista
[WHERE feltétel];

A "SELECT A1,...,An FROM T1,...,Tn WHERE feltétel" utasítás egyenértékű a következő relációs algebrai kifejezéssel:

relációs algebrai kifejezés

Vagyis, a felsorolt táblák Descartes-szorzatából szelektáljuk a feltételnek eleget tévő sorokat, majd ezekből projekcióval választjuk ki az E eredménytábla oszlopait. A DISTINCT opciót akkor kell kiírni, ha az azonos sorokból csak egyet kívánunk megtartani. Ha oszloplista helyére * karaktert írunk, ez valamennyi oszlop felsorolásával egyenértékű. A SELECT legegyszerűbb változatával adattábla listázását érhetjük el.

A WHERE záradékban feltételt kell megadni, és a rendszer csak a feltételnek megfelelő sorokat válogatja ki. A kifejezések elemei lehetnek oszlopok nevei, operátorok, mezőkre vonatkozó függvények. Csak azonos típusú kifejezéseket hasonlíthatunk össze (pl. numerikust numerikussal stb.). Az összehasonlításra használható operátorok: <, >, <=, >=, =, valamint nem egyenlő: != vagy <>.

Egy mező értéke, két határérték között van-e?

mező érték BETWEEN érték1 And érték2

Tartalmazást:

mező érték IN (érték1, érték2, …)

Szöveg mintaillesztése:

mező érték LIKE illesztő szöveg

Illesztő karakterek: *, ?, #, [karakterlista],   [!karakterlista]

Például listázzuk ki az auto tábla adatait!

select * from auto;

A továbbiakba tekintsük a következő adatokkal feltöltött és a relációsémának megfelelő táblát.

autó séma

rsz
tipus

szin

ar

evj

tul

abc-123

Trabi

kék

130000

1990

27110142233

bbb-222

Lada

piros

250000

1988

17812202244

dfa-333

Lada

kék

200000

1985

16612214477

A relációs algebra műveleteinek megvalósítása:
Projekció:

SELECT [DISTINCT] A1,...,An FROM T;

Példa:

SELECT DISTINCT tipus FROM auto;

Visszaadja a típusokat az auto táblából. A DISTINCT miatt csak az egyedi értékeket válogatja ki.

Szelekció:

SELECT * FROM T WHERE feltétel;

Példa:

SELECT * FROM auto ar > 200000;

Visszaadja a 200000-től nagyobb értékű autók minden adatát.

Descartes-szorzat: T1 x T2

SELECT * FROM T1,T2;

Példa:

SELECT * FROM auto, tulaj;

Megkapjuk a két tábla Descartes szorzatát.

Természetes összekapcsolás

Állítsuk elő azt az eredménytáblát, amely a tulajdonoshoz rendeli az autója rendszámát és a típusát.

SELECT tulaj.szazon, tulaj.nev, auto.rsz, auto.tipus
FROM tulaj, auto
WHERE tulaj.szazon = auto.tul;

Halmazműveletek relációk között

Unió:

(SELECT * FROM T1)
UNION
(SELECT * FROM T2);

Metszet:

(SELECT * FROM T1)
INTERSECT
(SELECT * FROM T2);

Különbség:

(SELECT * FROM T1)
MINUS
(SELECT * FROM T2);

Az eredménytábla rendezése

Bár a relációs modell nem definiálja a rekordok sorrendjét, a gyakorlatban rendszerint valamilyen rendezettségben kívánjuk látni az eredményt. Erre szolgál az
ORDER BY oszlopnév [DESC], ..., oszlopnév [DESC]
alparancs, amely a SELECT utasítás végére helyezhető, és az eredménytáblának a megadott oszlopok szerinti rendezését írja elő. Alapértelmezés szerint a rendezés növekvő sorrendben történik, ha fordítva kívánjuk, a DESC (descending) kulcsszó írandó a megfelelő oszlopnév után.

Például készítsünk egy olyan lekérdezést, amely visszaadja az auto tábla rekordjait ar mező szerint novekvő rendezettséggel.

SELECT * FROM auto ORDER BY ar;

Csoportosítás (GROUP BY, HAVING)

Ha a tábla sorait csoportonként szeretnénk összesíteni, akkor a SELECT utasítás a
GROUP BY oszloplista
alparanccsal bővítendő. Egy csoportba azok a sorok tartoznak, melyeknél oszloplista értéke azonos. Az eredménytáblában egy csoportból egy rekord lesz. Az összesítő függvények csoportonként hajtódnak végre. A SELECT után összesítő függvényen kívül csak olyan oszlopnév feltüntetésének van értelme, amely a GROUP BY-ban is szerepel.

A GROUP BY által képezett csoportok közül válogathatunk a
HAVING feltétel
alparancs segítségével,amelynél csak a feltételnek eleget tevő csoportok kerülnek összesítésre az eredménytáblába.

Összesítő függvények

Egy oszlop értékeiből egyetlen értéket hoznak létre (például átlag). Általános alakjuk:

függvénynév ( [DISTINCT] oszlopnév )

Ha DISTINCT szerepel, akkor az oszlopban szereplő azonos értékeket csak egyszer kell figyelembe venni. A számításnál a NULL értékek figyelmen kívül maradnak. Az egyes függvények:

AVG: átlagérték.
SUM: összeg.
MAX: maximális érték.
MIN: minimális érték.
COUNT: elemek száma.
Ennél a függvénynél oszlopnév helyére * is írható, amely valamennyi oszlopot együtt jelenti.

Régi fotók