MikoAndras.hu

Mikó András személyes oldalai

Amit minden webfejlesztőnek tudnia kellene

Saját tapasztalatból és baráti beszélgetésekből tudom milyen kérdések hangoztak el – és hangoznak el most is – egy-egy interjú során. Ezek azok, amikkel a leendő munkaadó a pályázó felkészültségét próbálja lemérni.

A tendencia aggasztó. Sok olyan emberrel találkoztam, akinek a gépén van lamp vagy hasonló környezet, telepített már egyszer Joomla-t, és azt gondolja, hogy most majd nagy pénzeket fog keresni webfejlesztéssel.

A szakma jó hírének védelmében megpróbálok egy képet adni arról, hogy az “Install-Next-Next-Next-Finish” egyszerűségével szemben mennyi mindent érdemes ismeretanyagként beépíteni, ha valaki erre a pályára kíván lépni.

A leírások során lesznek olyan részek, ahol feltételezek meglévő tudást. A célom az, hogy aki már valamilyen szinten biztonságosan mozog a számítógépek világában, de szeretne webfejlesztővé válni, az tudja hol kezdjen hozzá, és mi mindennek érdemes utánaolvasnia.

A leírások minden esetben személyes véleményen alapulnak, nem áll mögöttük semmilyen társaság vagy bizottság – mint például az RFC-k vagy a webes szabványok esetében -, így az itt leírtak a saját tapasztalataim szerint kialakult “érdemes tudni” dolgok gyűjteménye.

Áttekintés

Weboldal megjelenítés résztvevői

Weboldal megjelenítés résztvevői

A sorozat végére az utolsó elemig tiszta lesz mindenkinek melyik darab mit jelent a fenti képen, és az is, hogy miért van szükség rá. Ezenkívül mindenki képes lesz megszámozni a gépek közötti kommunikációt jelző vonalakat, a beszélgetés sorrendjében.

Itt most röviden végigfutok a részleteken, a tényektől a vélemény jellegűek irányába.

DNS – a számítógépek telefonkönyve

DNS szerver

DNS szerver

Mivel a Neumann-alapokra épülő számítógépek számokkal dolgoznak, az url beírását követő első lépés a domain név átalakítása számokká. Ezek a számok határoznak meg egy számítógépet az Interneten, ezért mondhatjuk ezt a telefonszámának is.

Az Internet – akkor még Arpanet – kezdetén egyetlen file-ban tárolták a nevek és címek listáját, amit mindenki letölthetett a saját gépére, hogy használni tudja és hogy naprakészen tartsa. Ez a megoldás azonban egy bizonyos számú számítógép hálózatba kapcsolása esetén már tarthatatlanná válik.

A DNS első specifikációja 1983-ban készült el, azóta is folyamatos bővítésnek esik alá az új technológiák és új igények felmerülésével közel egyidőben. Az egyik legjobb példa erre az IPv6 bevezetése volt, amihez a DNS-specifikációt is módosítani kellett.

Egy név-cím megfeleltetés során megesik, hogy nem egyetlen DNS-szerverrel kerülünk kapcsolatba, hiszen a túlterhelés elleni védelem egyik lehetősége az elosztott rendszerek kialakítása. Egyetlen számítógép sem ismeri az összes domain nevet, és a hozzájuk tartozó címet.

A megfelelő struktúra alapján zónákra vannak osztva a nevek, és egy-egy szerver csak a neki megfelelő zóna adataiért felelős. Ettől függetlenül ideiglenesen tárolhatják más zónák adatait is, de csak meghatározott ideig.

A domain neveket hierarchiájuk szerint jobbról balra kell olvasni a tágabbtól az egyre pontosabb szűkítés felé. A .hu. például az összes Magyarországon bejegyzett domain név zónája.

Gyakran látogatott oldalaknál a böngésző a DNS szerver felé irányuló kérést elhagyhatja, mivel a domain névhez ismert a cím, és a bejegyzés még nem járt le.

A mikoandras.hu. domain névhez tartozó címre vonatkozó lekérdezés eredménye – a cikk írásának idején:

kms@localhost:~$ host mikoandras.hu.
mikoandras.hu has address 195.70.48.76

A böngészőnek a kért url-t tehát erre a címre kell elküldenie, majd várni a válaszra.

A DNS-rekordnak nem ez az egyetlen bejegyzése, és nem csak egy féle típusú bejegyzés létezik. Később részletekbe menően összeszedem, mi mindent tud ma egy DNS-rekord, és azon keresztül egy DNS szerver.

Kliens-szerver kommunikáció

Kliens-szerver kommunikáció

Kliens-szerver kommunikáció

A két gép közötti kommunikációnak csak a tényleges adatforgalom tekinthető, a fejlécek és az üzenettörzs összeállítása a szerveren más lépésnek számít.
Egy kérés minden esetben a metódus / erőforrás / verzió formával kezdődik, majd ezt követik a további fejlécek:

GET /wp-content/uploads/2012/09/www_load_members-300x201.jpg HTTP/1.1
Host: mikoandras.hu
Connection: close
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9) Gecko/2008052906 Firefox/3.0
Accept-Charset: ISO-8859-1,UTF-8;q=0.7,*;q=0.7
Cache-Control: no-cache
Accept-Language: de,en;q=0.7,en-us;q=0.3

A fenti kérés értelmében a böngésző a megnevezett képet szeretné megkapni a mikoandras.hu szervertől, mely kiszolgálása után a kapcsolat bezárható, nincs szükség a fenntartására.

Az erre érkező válasz fejléceinek első sora verzió / státuszkód / indoklás formában adja meg a kérés eredményét, amely a helyzettől függően változhat. Amennyiben megvan a kép, a válasz a következő:

HTTP/1.1 200 OK
Server: Apache
Date: Sat, 28 Sep 2012 10:05:56 GMT
Content-type: image/jpg
Pragma: no-cache
Connection: close

Maga a kép ezután érkezik a válasz törzsében.

Minden szervertől kért file – html, css, képek, flash, … – ezekkel a párbeszédekkel érkezik meg a klienshez. A beszélgetés etikáját mindkét félnek – kliensnek és szervernek egyaránt – ismernie kell, és be is kell tartania.

Szerencsére minden ismert webszerver ennek szellemében íródott, és nem kell attól tartanunk, hogy valamelyik kilóg a sorból.

A böngésző-fejlesztők legnagyobb sajnálatára azonban ennél jóval átgondoltabb a kommunikáció, több elágazást és kiértékelést tartalmaz, valamit a státuszkódok számossága sem fél tucat.

Webszerverek

Az ismertség és haszálat tekintetében listavezető az apache, majd ezt követik – nem feltétlen ebben a sorrendben – a többiek: IIS, nginx, lighttpd, és mások.

Webszerverek megoszlása domain-ek szerint

Webszerverek megoszlása

Első és egyetlen feladatuk az érkező kérések kiszolgálása. Önálló szolgáltatásként futnak a szerveren, és egy meghatározott port-on várják a bejövő kéréseket.

PORT: kommunikációs végpont a számítógépen futó alkalmazások vagy szolgáltatások eléréséhez.

Az ő feladatuk a megfelelő file-ok kiszolgálása a kliens felé. Ez történhet azonnali kiszolgálással, de – főleg dinamikus oldalak esetén – feldolgozás utáni kiszolgálással is.
Mindez azt jelenti, hogy a képeket, stíluslapokat, statikus html oldalakat egyszerűen átmásolják a forrás-file-ból a kommunikációs csatornába; a kódnyelvi szöveggel íródott file-okat azonban először értelmezik, az abban megadott utasításokat végrehajtják, és az ezen műveletek során nyert végeredményt adják tovább a felhasználó felé.

Weben használatos nyelvek

Mik is azok a dinamikus weboldalak?

Azok a honlapok, amelyek a megjelenítendő tartalmat valamilyen bemeneti információ alapján változtatják, dinamikus weboldalnak nevezzük (a saját definícióm a fogalomra).

Ez a bemeneti információ lehet a böngésző által elküldött fejlécek egyike:

Accept-Language: de,en;q=0.7,en-us;q=0.3

Ebben az esetben például a felhasználó számára előnyben részesített nyelven tudunk tartalmat megjeleníteni úgy, hogy a felhasználónak nem is kellett kiválasztania semmit.

Ez csak egy kis részlete a lehetőségeknek. A feldolgozás kiterjedhet egyéb állapotfüggő változások kezelésére – például webáruházak esetében a kosár tartalmának folyamatos követése -, dátum szerinti adatok kiválasztására – névnap megjelenítése a honlapon -, de akár egy féltucat előreprogramozott köszöntőszövegből való véletlenszerű választás is valamilyen programozási nyelv haszálatát követeli meg.

A lehetőségek száma elég sok, de vannak jobban elterjedt és weben kevésbé alkalmazott nyelvek. A bérelt tárhelyeken általában a PHP valamilyen verziója található meg, emellett említést érdemel a python és a ruby on rails, ami talán a legújabb címre is esélyes.

UPDATE: Vasó hívta fel a figyelmemet, hogy a perl is elég gazdagon ad lehetőséget ügyeskedésre, ezért említésre méltó.

Ahol engedélyezett a cgi szkript-ek futtatása, ott szerepelhet a c. A Microsoft jóvoltából találkozhatunk ASP nyelven megírt honlapokkal – ezek fellelhetősége általában intranetes oldalakra korlátozódik mivel erősen integrálható Internet Explorer-en keresztül a vállalati rendszerekkel. A Java pártolói sem maradnak ki a sorból, Java Server Pages (jsp) nyelven Ők is hamar a webfejlesztők népes táborában találhatják magukat.

A második részben az adatbázisok és a nyomkövetés rövid áttekintése mellett további három témakörről lesz szó.

Pages: 1 2

,

4 thoughts on “Amit minden webfejlesztőnek tudnia kellene

Hozzászólás a(z) Csaba bejegyzéshez Kilépés a válaszból

Email cím (nem tesszük közzé) A kötelezően kitöltendő mezőket * karakterrel jelöljük

*

*

A következő HTML tag-ek és tulajdonságok használata engedélyezett: <a href="" title="" rel=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>