Az AJAX kihívásai
A fórumban kérdés merült fel egy AJAX-szal foglalkozó könyvvel kapcsolatban, ennek apropóján szeretném megosztani a véleményemet és a tapasztalataimat a témában. Bár egyre több helyen használják a technológiát, de a felmerülő gondokkal kevés írás foglalkozik.
Jó AJAX-ot használó weboldalt/alkalmazást nehéz készíteni. Ez részben annak köszönhető, hogy az internet technológiailag rossz alapokra építkezik, valamint sokan nem fordítanak elég figyelmet a dinamikus adatcserével járó problémákra. A leggyakrabban elkövetett hibák, amelyekkel eddig találkoztam:
1. Pusztán JavaScripttel állítanak elő bizonyos tartalmakat: jó példák erre az Origó galériái. Ha magát a markupot kliensoldalon, DOM műveletekkel generálják, az egyrészt lassú, másrészt, mivel a képek nevét és elérési útvonalát ígyis-úgyis valamilyen módon (statikusan vagy dinamikusan) bele kell írni a dokumentumba, ennyi erővel helyből szerveroldalon is el lehetne készíteni a kódot, hogy a keresők, valamint a kikapcsolt JavaScripttel böngészők is meg tudják nézni az oldalt. Ez utóbbi esetben a kész markupot a megfelelő helyre innerHTML segítségével szúrják be, de ez is ellentmondásos: ha ígyis-úgyis a szerveren készül a kód, akkor pontosan mit is nyerünk az AJAX-szal? Valamennyivel kevesebb adatot kell küldeni, tehát picivel gyorsabb lesz, de ugyanezt az élményt elérhetjük cache-eléssel is (Etag
, Expires
fejlécek), amire amúgy is szükség van. Így inkább csak bonyolultabb kód lesz a végeredmény, mert a plusz JavaScript újabb hibázási lehetőséget hoz magával.
2. Bizonyos tartalmat csak AJAX kéréssel kapunk meg: például a HWSW cikkei alatti fórumhozzászólások. Ehhez mindegyiknél külön kéréssel fordulnak a szerver felé, ahelyett, hogy amit lehetett volna, már az elején kitették volna a HTML-be. A sávszélesség a legtöbb esetben a szűk keresztmetszet, ráadásul komolyabb rendszerek esetén sok kódnak le kell futnia addig, amíg elő tudja állítani a kimenetet (például több osztályt kell létrehozni a lekérdezéshez, amik az eredeti HTML készítésekor már eleve rendelkezésre állhattak). Ez egy minden szempontból erőforráspazarló elgondolás, zéró gyakorlati haszonnal.
3. Túl sok tartalmat generálnak AJAX segítségével:például az eRepublik adatlapjai (regisztráció szükséges). Amint leérkezett az oldal váza, a $(document).ready()
-ben rögtön indítanak pár kérést, hogy néhány további szekciót feltöltsenek. Ez ugye ennyi kérés, lassúak, mint azt az előző pontban kifejtettem, ráadásul sokszor JS-sel állítják elő a markupot. Ha harmadik fél szerveréhez is fordulnak (oldalletöltések számlálása, reklámok) vagy lassú a hálózat, akkor a $(document).ready()
elég későn futhat le, és az így előállított kód később villanhat be. A fentiek miatt az oldal betöltődése után rövidesen a böngésző több másodpercre „lefagy”, még görgetni sem lehet (mindezt modern browseren, pluginek nélkül).
4. Használhatósági gondok: többek között a Randivonal oldalain (regisztráció szükséges) találkoztam olyannal, hogy az AJAX-szal betöltött tartalom bizonyos paramétereit (például hol állok a listában) nem az URL-ben, hanem a munkamenetben tárolják. Így, ha egy másik fülön megnyitottam ugyanazt az oldalt, és visszaléptem az elsőre, a lista alaphelyzetbe állt. Ezek mellett sok helyen az előre-vissza gombok működése is problémát okoz, vagy frissítéskor sem azt kapom, amit várok. Vagy egy másik anomália, hogy egy cikk alatt AJAX-szal jelenítik meg a hozzászólásokat, és ha azok között ellépek az n-edik oldalra, majd megnyomom a böngésző vissza gombját, akkor mit töltsünk be: az előző hozzászólásokat vagy az előző lapot?
5. A tartalom betöltését jelző animáció: ha elég gyors a hálózat és/vagy kevés adatot kapunk, nem hordoz információt a megjelenése, így az esetek túlnyomó többségében zavaró a bevillanása. Akkor van csak jelentősége, ha nem ilyen szerencsések a körülmények, ezért én általában 1,5-2 másodperc után szoktam kitenni, hogy a felhasználó lássa, a program dolgozik. Ugyanez igaz a Flash objektumoknál is, főleg akkor, ha a betöltendő SWF már a memóriában van. Visszatérve a HTML-re, nem túl szép megoldás az sem, amikor nem adják meg a képek méreteit (még akkor sem, ha azok fixek), így egy újabb adag kép betöltésekor a tartalmi szekció „ugrál”.
Kérdések
Mielőtt AJAX-ot használó fejlesztésbe vágnánk, érdemes feltenni pár kérdést.
- Segíthet-e ez a technológia, és ha igen, miben?
- Mennyit nyerhetünk vele?
- Mennyit veszthetünk vele (pl. bonyolultabb kód, nehezebb karbantartás)?
- Mik az alternatívák? (Például fix méretű tartalom esetén egy
<iframe>
használatával egy plusz sort sem kell kliensoldalon írnunk) - Milyen használhatósági (usability) problémák merülhetnek fel?
- Meg tudom-e oldani a feladatot a célközönség által használt minden böngészőverzióban?
Ezek mellett nem szabad elfelejtkezni két kisebb csoportról: ha fogyatékkal élő látogatja meg oldalunkat, ő is tudja majd használni? Ő is be tud regisztrálni, be tud jelentkezni? Ha dinamikusan frissítem a tartalmat, miből fogja tudni, mi az, ami változott? A másik csoportba azok az emberek tartoznak, akik biztonsági okokból kikapcsolják a JavaScriptet, mert tudják, hogy a legtöbb támadást ennek a segítségével indítják.
Arról sem szabad elfelejtkezni, hogy a fejlesztők többsége nagytudású, sokszor Java alapú IDE-t használ, amelyek nem a gyorsaságukról híresek, emiatt kénytelenek az átlagnál erősebb hardveren dolgozni. Ez a tény, valamint az, hogy helyi hálózaton tesztelnek, elfeledtetheti velük azt, hogy az átlagfelhasználó messze nem rendelkezik ilyen feltételekkel. Nem ritka, hogy tíz-tizenöt szkriptet is betöltenek, biztos, hogy erre mind szükség van?
Mivel a gazdasági válságból még messze nem keveredtünk ki, ami ráadásul hazánkat még jobban érintette kiszolgáltatott helyzete miatt, technológiailag a konzervitizmus kifizetődőbb lehet. Ez különösen igaz olyan oldalaknál, amelyekből a megrendelőnek közvetlen vagy közvetett haszna van, s most különösen fontos, hogy mindenkit megfogjunk. Ne felejtsük: a weben a belépési és az elhagyási küszöb alacsony, azaz, ha valami nem úgy működik, nem azt kapják az emberek, amit elvárnának, nagyon könnyen továbbmehetnek a konkurenciához. Egy százaléknyi látogató elvesztése az internetről generált bevételt ugyanilyen mértékben csökkenti, így a sitebuildernek célszerű kétszer is meggondolni, milyen újítást szabad bevezetni, mert ez a kiesés az ő felelőssége. A cél nem feltétlenül az, hogy oldalunk látványos legyen, hanem hogy lehetőleg mindenkinél jól jelenjen meg, és jól működjön.
Kell-e?
Nem tudom, létezik-e, létezhet-e olyan weboldal vagy webes alkalmazás, ahol egyáltalán meg lehet oldani a teljesen dinamikus adatfrissítést, azaz azt, hogy ha megváltozik bármilyen állapot, mint az 4-es példában, vagy mondjuk az adatbázis bizonyos táblái módosulnak, akkor a kapcsolódó klienseknél, ahol ez szükséges, automatikusan frissítsük a megfelelő részeket (akár több megnyitott fülön). Ehhez rengeteg információt el kell tárolni a szerveren, ami eddig az URL-ben volt, vagy integrálni kell az alkalmazást az adatbázis motorjába, hogy értesüljünk a minket érintő eseményekről.
Mivel sem szabvány-, sem pedig böngészőoldalról nincs támogatása a dinamikusan frissülő tartalmaknak, jelenleg AJAX-ot használni weblapon nem tanácsolnám senkinek, mert annyit nem nyerünk vele, valamint egyszerűen annyi hibázási lehetőség van, ráadásul a technológiát használó oldalak és segédletek is szinte csak rossz példákat tudnak hozni. Egy webes alkalmazás már más tészta, de saját tapasztalatból tudom, hogy ott is óriási kihívás olyan backendet készíteni, amivel normális felhasználói élményt adhatunk a kliensen, hacsak nem lehetetlen.
■
Nem értek teljesen egyet
Azt írod, hogy a javascript lassú. Az utóbbi időben elég sokat fejlődtek a javascript motorok. 3D –s animációk egész jó sebességgel futnak a böngészőben. Ennek fényében nem gondolnám, hogy DOM manipulációk problémát okoznának. Még kis terhelést le is vehetnek szerver oldalról.
Azzal egyetértek, hogy késői ajax betöltés a felhasználó számára idegesítő lehet, és akár még vissza is fog fordulni, de ez nem a technológia hibája.
Említed a visszalépés ( history.back ) problémát. Erre ott a pushstate. A modern böngészők mind támogatják. A példákat amiket említesz, nem technológiai problémák, sokkal inkább kivitelezési.
Kell-e? Igen! Nagyon interaktív jó dolgokat lehet vele művelni.
Kell-e? Igen! Nagyon
Fenntartva azt, hogy az aszinkron kérés jó dolog, és szinte minden oldalon meg lehet találni az alkalmazási területét, én is úgy vélem, hogy nagyon sok esetben teljesen indokolatlan a használata, főleg a hátrányai tükrében.
Gyors szerveroldali alkalmazásokkal is nagyon interaktív dolgokat lehet művelni.
Persze nem arra gondolok,
Épp most találkoztam egy jó példával: Videomegosztó portál, kommentek lapozása. Nem lenne jó ha a videó nézése közben az oldal újratöltődésével, megszakadna a videó lejátszása.
Abban is biztos vagyok, hogy server oldali terhelés tekintetében is kevesebb erőforrás 5 komment leküldés, mint az egész oldalt újra generálni.
Erre tökéletes, csak nem
(Off - Most akkor a videót nézed vagy a kommenteket? : )
Off-ra reagálva. Jogos a
A saját oldalodon azt
Én sem szeretem ha
Arra gondolok, hogy inkább a felhasználás módján kellene változtatni, mintsem hogy kell -e használni vagy sem.
Gondolkodtam az elmúlt projekteken. Vajon több idő volt-e mondjuk egy form mentést ajax-szal megoldani, mint post-tal... Nem lehet időben szignifikáns a különbség, viszont a felhasználói élményben már igen.
Jaj!
Ezeket a vitákat azt gondoltam volna, hogy valamikor 2005-2006-2007 környékén már lezártuk...
A bejegyzések a szerzőik
Hát akkor nem jól lettek
Rossz a kérdés.
Viszont, ha az a kérdés, hogy használható-e hibásan/rosszul az Ajax, akkor természetesen az a válasz, hogy igen. De ezért nem a technikát kell megkérdőjelezni.
Előbb belinkeltem az alábbi videót, de ide is nagyon ideillik: http://www.youtube.com/watch?v=CvX241gK6gc
Alapvetően rossz a kérdés
Elírtam. :)
Na jó, elírtam az én kérdésemet, tehát van-e olyan probléma, amit Ajax-szal meg lehet oldani, de Ajax nélkül nem. :) És erre lásd a belinkelt videót.
Autóvezetésben is sokan meghalnak, mégis feleslegesnek érzem azt hangoztatni, hogy ne használják, pedig az valóban sokkal veszélyesebb, mint az Ajax. :)
Modern Javascript technologiak
1.-2. Segithet-e ez a technologia? Mennyit nyerhetunk vele?
Igen, segithet, nem is keveset. Megpedig azert, mert sokkal dinamikusabb, interaktivabb oldalt (alkalmazast) lehet keszinteni ezzel a modszerrel. Es itt valoban alkalmazasokrol beszelunk. Egyre inkabb afele megy a web, hogy alkalmazasok osszessege legyen, nem pedig egyszeru weboldalakrol van szo. (ez a netes media oldalakra is igaz, lasd pl: http://www.theverge.com/)
3. Mennyit veszithetunk vele? (karbantartas)
Ha normalis modon irunk javascriptet, nem pedig script kiddie-kent, akkor semmit (javascriptben is leteszik TDD, MVVP framework, etc, hadd ne soroljam, redirect a google-hoz)
4. Alternativak? Iframe?
Iframe? - Azt hiszem ezt nem is kommentelem, nincs ertelme.
5. Milyen használhatósági (usability) problémák merülhetnek fel?
A W3C WAI-ARIA recommendation. JS dialogot, focusvaltast, etc-t is meg lehet benne csinalni. Van valahol egy Google I/O video a youtube-on errol, erdemes megnezni. Nem korlatoz a jol mukodo weboldalak es webalkalmazasok elkesziteseben.
6. Kikapcsolt JavaScript
Amennyiben ok valoban celkozonseg, ebben az esetben lehet erre optimalizalni, egyebkent nem erdemes.
7. "Nem tudom, létezik-e, létezhet-e olyan weboldal vagy webes alkalmazás, ahol egyáltalán meg lehet oldani a teljesen dinamikus adatfrissítést"
HTML5 Web Socket (StackOverflow), illetve a megfelelo fallbackek hasznalataval kenyelmesen lehet ilyet csinalni.
8. Nem ritka, hogy tíz-tizenöt szkriptet is betöltenek, biztos, hogy erre mind szükség van?
Erre megint csak egy link a valaszom: RequireJS r.js optimalizacio
9. Mivel sem szabvány-, sem pedig böngészőoldalról nincs támogatása a dinamikusan frissülő tartalmaknak
A facebook, a twitter (es a tobbi aprocska alkalmazas, amit emberek 10millioi hasznalnak naponta) sem mukodnek dinamikusan.
Szerintem ennek a bejegyzesnek cca 5 evvel ezelott lett volna letjogosultsaga...
Köszönöm a válaszokat! 1, A
1, A "vadonban" nem te mondod meg, ki milyen böngészővel használhatja az oldaladat. Tudod-e biztosítani, hogy mindenki, aki az oldalra érkezik, megkapja azt, amiért jött? A megszokott eszközök használata ugyanúgy működik (frissítés, oda-vissza gombok, lapozás), mint ahogy megszokták? Ha új használati elemeket találsz ki, a felhasználót segíted a tanulásukban?
3, Ha az a ha ott ne lett volna! A bevezetőben hivatkozott könyv és a példák alapján sokaknak nem sikerült "normális módon" megoldani a feladatot.
4, Mi a baj az iframe-mel? Az, hogy sok helyen lehúzzák, mert nem tudják, hogyan kell használni? A legáltalánosabb példa: van egy fix méretű dobozod (például galéria), amiben lapozhatsz és/vagy a tartalma időnként váltakozik. Ezt megoldhatod AJAX-szal, de nem egyszerűbb egy iframe? A bemenet hasonló lesz (egy fájl, amiben tartalom van, jelen esetben HTML, amit a keresők is tudnak értelmezni), és egy sor scriptet nem kell hozzá, hogy működjön.
5, "JS dialogot, focusvaltast, etc-t is meg lehet benne csinalni." - Megcsinálta a programozó? Gondolt mindenre? Volt rá keret/idő?
6, A bejegyzés írásakor utánanéztem, világszinten 0,5-3,5% között van a kikapcsolt JS aránya, az EU-ban 2%. Ha van egy kereskedelmi oldalad, amelynek évi tízmillió forint bevétele van, ha abból 2% nem tudja használni, mert erre a csoportra nem gondolt a fejlesztő, oda fog-e menni a megrendelőjéhez, hogy: "Tisztelt megrendelő, itt van kétszázezer forint, hogy kompenzáljam a hiányosan elvégzett munkám miatt kieső bevételeit."?
7, Itt fontos továbbolvasni a bekezdést. Nem a kliensoldal frissítésével van gond, hanem azzal, hogy ha a szerveren megváltoztatsz egy adatbázisbejegyzést, akkor a klienseken, ahol az éppen meg volt jelenítve, kérdés nélkül frissüljön mindenhol.
8, Köszönöm a példát, látod, erről sem tudnak sokan.
9, Ezt nem igazán értem.
1. Mindenki =/= Celkozonseg.
3. Konyv? LoL. Internet. Ott kurrens tudas van, ami folyamatosan fejlodik. Nezz utana, kerlek, de egy par link es eszkoz, csak igy bevezetonek: BackboneJS, AngularJS, QUnit, Yeoman, RequireJS (mar linkeltem), de meg szamtalan ilyen van. Tenyleg nem mennek ebbe bele, google pls.
4. IFrame: mert letezik ra jobb megoldas. Mert a keresok nem indexelik. Mert sokkal egyszerubben meg lehet hekkelni man-in-the-middle attackkal (elvegre eleg csak az iframe src-t atirni), mint egy javascriptes appot, vagy egy ajax lekerdezest, ami csak JSON-t var, es azt dolgozza fel utana.
5. A van-e penz/ido kerdese az egyetlen dologra vonatkozik: igenye van-e a megrendelonek, illetve celkozonseg-e. Ha igen, akkor lesz ra ido es penz. Ha nem, akkor nem. Ennek semmi, de semmi koze az AJAX-hoz magahoz.
6. Lasd 1. pont. Ha Celkozonseg, akkor erre ki lesz optimalizalva az oldal. Ha nem, akkor nem.
7. Ezek szerint fogalmad sincs, hogy mirol szol a web socket. Olvasd el legalabb ezt.
8. Szivesen :)
9. Arra probaltam celozni, hogy amit irtal ezzel a mondattal, az egy netto baromsag. Elnezest kerek a serto kifejezesert, de tenyleg az, mert amit te most itt lehuzol, arra epulnek az olyan egyszeru, es keves (par 10millio) felhasznalot egyidoben kiszolgalo alkalmazasok, mint a Facebook, a Twitter, a Google.
Udv,
Sanyi
Ha fokent mobil platformot
Ha nem használható az oldalad mobilról, akkor nem fogják használni. Ugyanez igaz minden más platformra, böngészőre. És nem tudod, ezzel mekkora piactól esel el.
Ez igenyfuggo. Elkepzelheto,
1, A bankok úgy adnak hitelt
3, A weblaboron is fel szokott merülni többeknél, hogy könyvből tanulnának szívesen.
4, Ha már benn vannak az oldaladon a támadók, teljesen mindegy, hogy iframe-et vagy ajax kérést hamisítanak.
7, Ismétlem: nem az adatok frissítésének technológiai problémája, ami nehezen megoldható. Egy egyszerűsített példa: van egy felhasználód, akinél az AJAX-os alkalmazásodban nyitva van egy termék, aminek az ára 70 000 forint, amit meg szeretne rendelni. Az illető kimegy WC-re, közben az adminisztrátor módosítja 75 000-re. Ha tökéletes kiszolgálást szeretnél nyújtani, nyilvántartanád, hogy melyik felhasználódnál jelenik meg bármilyen formában ez a termék, és abban a pillanatban frissítenéd, ahogy nálad, az adatbázisban változik. De ez nem egyszerű, mert lehet, hogy egy hosszú lista közepén van ott (tegyük fel, rászűrt a 68 - 72 000 forintos termékekre), amiből elvileg azonnal ki kéne esnie, amint változott az ára.
9, Mint írtam a bejegyzésben, Magyarországon vagyunk magyar körülmények között. A bankok nem adnak hitelt, vagy csak nehezen és keveset, ebből kell kihozni a legjobbat, és én úgy vélem, jelen helyzetben a konzervatív hozzáállás több pénzt hozhat a megrendelő konyhájára.
1. Pont a leirtak miatt
3. Igen, felmerult mar, ellenben sajnos - es ezt mindenki kenytelen lesz belatni -, a legfrissebb eszkozok, az up-to-date tutorialok blogokban, a kerdesekre adott valaszok stackoverflow-n vannak. Egyesekre van konyv, de leginkabb angolul (pl a BackboneJS-re van itt, early release).
4. Nem az oldalamon vannak bent :) Es JS-ben meg kliens oldalon is tudom hitelesiteni az adatokat (ne adj' isten, ha nagyon secure akarok lenni, akkor crypto librarykkel encodeolni es decodeolni az adatokat - bar ez mar erosen elviszi a teljesitmenyt), es az esetleges fals adatokat kezelni, nem pedig nativ HTML-t tolok a user bongeszojebe, mint iframe-en keresztul.
7. Meg mindig meg lehet oldani :) Termeszetesen egy ilyen megoldast implementalni kell (pl ugy, hogy websocketen keresztul kipusholod, hogy megvaltozott egy termek ara, es JS-bol ujrafuttatod a szurest).
9. Nem ertek egyet. A megrendelo szamara az fogja a legtobb penzt hozni, hogyha jo minosegu, es az elvart kovetelmenyeknek megfeleloen alakitod ki az alkalmazast (btw egyebkent a server side-rol lehet vitatkozni, de nem hiszem, hogy terhelesbirasban akarmilyen server-side rendereles allna a sarat egy olyan szerveroldali app-pal, ami csak REST adatokat fogad es kuld, mert nincs rajta rendering terheles -> csokkeno uzemeltetesi koltsegek... a felhasznaloi elmeny fokozasaval).
Termeszetesen lehet 2005-os weboldalakat is fejleszteni, csak az valoszinuleg nem all osszhangban a megrendelo igenyeivel. Ha pedig nem ismered az eszkozoket (lasd elozo postokban linkelt eszkozok pl), akkor nyilvan nem is tudsz koltseghatekonyan fejleszteni, ami a megrendelonek is megerne, de ez ne legyen mar a technologia hibaja. Az pedig igenis a fejleszto felelossege(!), hogy megfeleloen tovabbkepezze magat (es ez a webes dolgokra gyakorlatilag napi szinten igaz - es a napi szinten meglevo up-to-date tudast nem lehet megszerezni konyvekbol), es igy a megrendelonek magas szinvonalu szolgaltatast tudjon nyujtani.
Ez a 7-es példa azért sántít,
Egyébként nagyon nehéz az ajax pont egy terméklistánál. Hiszen ha veszek egy terméket, amivel pont elfogy a raktárról, akkor egy rossz logikával én csak a kosár tartalmát frissítem, és a termék meg ott marad a listában. Abban a listában, amiben a esetleg csak a raktáron lévő és rendelhető termékeket kéne látnom.
7: Megoldható az azonnal
9: Elég furcsa azzal indokolni, hogy rossz az ajax, hogy a bankok nem adnak hitelt full ajax-os oldalak fejlesztéséhez. Jót mosolyogtam rajta... :-)
9: Elég furcsa azzal
Jó, egy kicsit kiforgattam,
:)
Megbocsájtok neki, mert ő
Haha :-)
Kár
7. pont
Irreleváns
Egy dinamikus alkalmazásnál azt mondja a fejlesztő, hogy a frissítés problémáját átvállalja magára, és akkor, ha szerencséd van, gondolt mindenre, de bizonyos kompromisszumokat mindenképp kötnie kell, mint például a 7-es pontban leírt problémánál. És akkor ez az igazából nem más, mint fegyvernek látszó tárgy.
Ennyi erővel odateszek a
A felhasználók többsége nincsen tisztában azzal, hogy ajaxos oldalt lát, ha mondjuk beteszel egy pushstate-et, akkor semmi nem jelzi nekik... Nem is igazán értik a különbséget, szóval ez a probléma fel se merül bennük, max ha egy sima html-es oldaltól is azt várják, hogy az aktuális állapotot közvetítse, ne a letöltéskorit...
+1
Mindenki =/= Celkozonseg. A
IE 5.5
Jo ez mar tenyleg csak kotozkodes, de ketlem, hogy IE 5.5 kompatibilitast el tudnal adni a megrendelonek (foleg ha ez mondjuk +2 het meloval es 0.05% novekedessel jar). De ez az en velemenyem.
Ez olyan, mint ha azért
Nem lehet, hogy a célközönséget azért így nevezik, mert ők a cél, az összes többi pedig másod-, harmad-, sokadlagos szempont?
Csak kérdezem, mert lehet, hogy az én fogalmaimmal van probléma.
Célközönség
Sosem tudod pontosan meghatározni a célközönséget. Tegyük fel, hogy a nagymama szeretné az unokáját meglepni egy csodálatos kütyüvel. Ő a célközönség? Nem. Az oldalnak fiatalosnak kell lennie? Igen, mert a legtöbben valószínűleg az unoka korosztályából nézik meg. Kell tudnia használnia a nagymamának az ősöreg böngészőjében az oldalt? Igen, mert ő is potenciális vásárló. Hány nagymama nézi meg az oldalt? Nem tudod.
Dehogynem
(Azért ne csak a nagyiról feltételezzük, hogy a böngészője (is) öreg! :))
Értem. Tehát szerinted az a
Ezt a kifordított logikát képtelen vagyok asszimilálni egyszerűen. Kiveti magából az elmém. Az általad a profitmaximalizálás jelszava alatt álcázott durva kereskedelmi és logikai bukfenc alapját tehát az mozgatja, hogy csináljunk oldalt 100-ból 2 embernek azért, mert habár a 98 másik a célközönség, mégis az a 2 is HÁTHA, MAJD, VALAMIKOR, ESETLEG ott hagy az oldalon 3 fillért. A fejlesztési költségek pedig a kereskedelmi szempontból marginálisnak számító közönség kivételkezelése végett szökjenek az egekbe! Én nem állítom azt, hogy ez a cél - azt állítom, hogy ez a végeredmény!
Nem gondolod úgy, hogy ez több, mint furcsa?
szerintem
Köszönöm
márpedig a megrendelő nem
vs. (egyből ezután)
Kérlek, meg tudnád magyarázni azt, hogy a két mondatrészben szereplő állításod logikailag hogyan kapcsolódik egymáshoz, hogyan következik az elsőből a második? Az első egy kijelentésbe burkolt feltételezés (hiszen nem tudhatod, hogy ismerheti-e a módszereket), a második pedig vagy az ügyfeleid (ügyfeleink) általános nyílt ledegradálása, vagy egy általános sallang. De ha ezektől el is tekintek, semmilyen kapcsolatot nem találok a két állítás között.
Elég sok és sokféle ügyféllel volt már dolgom - informatikailag képzettel és technológiai analfabétával egyaránt - amióta (17 éve) a szakmában vagyok. A bizonytalankodásaik sora valóban felér anyaföldünktől a csillagos égig, de olyannal még nem találkoztam, aki ne tudta volna legalább azt megmondani, hogy mi a terméke és/vagy szolgáltatása célcsoportja. Onnantól pedig, hogy a célcsoport elhangzott és adott a termék/szolgáltatás, a fejlesztő/kivitelező (jelen esetben mi, jóbitmunkásemberek) dolga ezt elfogadni és ennek megfelelően megtervezni, megvalósítani a megrendelő számára az eszközt.
Időnként persze kérdezni kell ügyféltől - van hogy gyakran - de ezt megtanulni sokkal egyszerűbb és ésszerűbb, sőt költséghatékonyabb is mint az általatok vázolt úton magabiztos lendülettel belegyalogolni abba a tipikus fejlesztői hibába, hogy "mi mindent legalább 3x jobban tudunk az ügyfél vállalkozásáról, mint ő" és aztán jönnek az "ágyúval verébre"-típusú megoldások (amik többnyire vagy nem készülnek el és átadva se lesznek, vagy félkészen kerülnek átadásra, vagy 3x annyi idő alatt készülnek el és a végén tetemes kötbérrel kerülnek átadásra).
Eléggé veszélyes dolog ez a felsőbbrendű logika, kérem.
Persze, mindenki maga választja meg azt, hogy élete során hogyan nehezíti meg a saját dolgát, de ezt még hirdetni is - főleg egy szakmai oldalon - véleményem szerint nagyon súlyos probléma.
Ennek nagy kár lenne közönséget toborozni, mert sajnos így is túl széles a tábora.
Ügyfél az esetek legalább 95%-ában tisztában van azzal, hogy mit akar áruba bocsátani és kiknek szándékszik. Az, ha ezt a szándékot a fejlesztő nem érti, nem az ügyfél hibája. Kérdezni kell és a dolgok világossá válnak. Nem szégyen kérdezni. A feltételezések, amikbe bocsátkoztok egy-egy ilyen gondolatmenet alatt ugyanis - valódi mindent tudás hiányában - sokszor nem fognak egyezni az ügyfél realitásaival.
"mi mindent legalább 3x
"ágyúval verébre" - pont az ellenkezőjét mondjuk, erre egyáltalán nincs szükség.
Egyébként nem igazán értem, miért ragaszkodsz annyira a célközönséghez. Annyit tudunk róluk, hogy böngészőt használnak. A grafikus felteszi a látványtervre a termékre jellemző képeket, esetleg keres képgyűjteményben (nem jut eszembe a pontos megnevezésük) olyan képeket, amivel a célcsoport azonosulni tud, ennyi. A kivitelezés már a fejlesztő dolga, és nem értem, miért baj, ha arra törekszünk, hogy a lehető legtöbb látogató számára legyen elérhető az oldal.
Meddő vita. Most pont azt
Ahogy a hozzászólások számát és tartalmát elnézem, egyébként sem érzem magamat egyedül azzal a legalapvetőbb problémával, hogy a bejegyzést nem sikerült megértetni, megfelelően átadni annak lényegét - ha sikerült volna, akkor nem tartanánk 80 hozzászólás fölött kb 3 nap alatt. Teljes a káosz, meg a félreértés, a félremagyarázás. Ha másból nem, ebből én biztosan arra következtetnék, hogy lenne pár dolog a gondolatmenetemben, amit érdemes lenne felülvizsgálnom, hátha valami nem stimmel benne - vagy abban, ahogyan előadtam.
Mielőtt magyaráznék
A lényeget tehát kiemelve, az összefüggés a két idézett részlet közt: a megrendelő nem szakember=>mi vagyunk a szakember=> a megrendelő nem is tudhat arról, hogy van egy része az internetnek/projektnek, amit ígyvagyúgy még figyelembe vehet, elérhet=> mi pontosíthatjuk a célcsoport fogalmát, és ha mégsem, az nem probléma, ha a célcsoporton felül más potenciális ügyfél elégedett a termékkel.
Persze, ha úgy értelmezed, hogy a szakmai tudásunk által a projekthez adott érték felsőbbrendűséget fémjelez, akkor így is kezelheted.
Ebből a szempontból az előző hozzászólásomból a "felelősségteljes önálló szakmai döntéshozás" részt szeretném kiemelni, de csak azért, hogy lásd, szerintem ezen a ponton egyezik a véleményünk (a "...3x jobban..." részre gondoltam, egyetértünk)
Tulajdonképp már nem is értem, hogy miben nem értünk egyet, a lényegben ugyanúgy gondolkozunk (a felelősségteljes, körültekintő munka, a megrendelő kéréseinek figyelembe vétele stb), talán az a különbség, hogy a "felhasználónak dolgozunk" szemlélet pozitív oldalát vagy a negatív oldalát hangsúlyozzuk-e ki :-)
Szerintem te is úgy gondolod, hogy azzal, hogy egy "nem robot" fejlesztőt kér meg a megrendelő, azzal a számára is hozzáadott érték keletkezhet, új aspektus merülhet fel (amit vagy önállóan bedolgozunk a projektbe, vagy megbeszéljük a megrendelővel -- ez is a mi szakmai felelősségünk)
A 74. hozzászólásban írtam még erről, talán abból is látszik, hogy mire gondoltam.
Szerintem ezen a ponton már szőrszálhasogatás folyik, amit akartunk, azt elmondtuk :-)
De itt igen
Kisebbség
Ha egy kicsit kevésbé veted el a sulykot, nem szidod magát a technológiát (talán nem is egyértelműen szidtad, de mindegy), illetve jobban kiemeled azt az egy-két helyzetet, amikor jobb ajax-ot használni, mint mást - nos akkor erősen javasoltam volna a cikkajánlódba is, olvasgassák csak minél többen (főleg kezdők, akiknek "menő" az "ajax-os oldal").
Így viszont kissé túlzásnak érzem, bár a helytelen használat tényleg nagy divat.
A technológiával nincs baj,
Kezd egy kicsit zavarossa valni a dolog
az en reszemrol kezd egy kicsit zavarossa valni a dolog. 6 eve dolgozol valamivel, amit a vitaindito irasban huztal le a foldig gyakorlatilag. Nyilvan vannak hibai, es lehet hibasan is hasznalni (ahogy lehet csavarhuzoval falat bontani, csak problemas - es ettol nem a csavarhuzo lesz a szar).
Ez pedig nyilvanvaloan az ott kerdezo hibaja. Vagy esetleg kezdo, es nem olvasott el minden idevago anyagot, hanem inkabb kerdezett. Vagy nem is erdekli a megoldas melye annyira, hogy belemeruljon a temaba.
Ha ugy gondolod, hogy kellene egy ilyen anyag - esetleg konyv - es van affinitasod megirni, akkor tessek, elotted a lehetoseg :) Egyebkent ha kesz vagy, es publikaltad, akkor utana fogsz rajonni, hogy mindig lesznek ilyenek, akik a legegyszerubb problemat is felteszik valamelyik forumba (itthon weblabor.hu, prog.hu, kint nem tudom, stack overflown egesz jo kerdesek szoktak lenni). Ezt nem szabad zokon venni. Vagy segitesz nekik, vagy egyszeruen figyelmen kivul hagyod.
Velemenyem szerint az ilyen forumokon mindig felulreprezentaltak lesznek a kerdezok kozott a kezdo - vagy hozza nem erto - userek, egeszen egyszeruen azert, mert egy ido utan az ember megtanul utana menni a dolgoknak, es rajon, hogy az mennyivel jobb. Illetve kesobb mar megtanul StackOverflow-n kerdezni (tudom, hogy sokat emlegetem, de jelenleg az a de facto Q&A site), azaz mar joval kevesbe fog ide lecsapodni a dolog.
Én úgy gondolom, hogy
Például az admin oldalakat legtöbb esetben csak egy szűk kör használja, akiknél meg lehet nézni, hogy van e közöttük fogyatékkal élő, ill. meg lehet beszélni velük, hogy szükség lesz javascriptre a böngészőben. A nagyközönség által látogatott oldalakat ezzel szemben fel kell készíteni arra, hogy lesz, aki javascript nélkül használja őket.
A cikkben felsorolt hibák túlnyomó többségét el lehetett volna kerülni, ha egy kicsit jobban átgondolják, hogy ki lesz a célközönség.
Az átláthatóságról annyit, hogy egy javascript kliens egy rest service-el nekem sokkal átláthatóbb, mintha html-t használok, a kliens kódját pedig vegyítem a szerver oldali kóddal.
Egyetertek
Nagyon sok hasznos dolog
Hogy mire jó?
- Az weblaphoz tartozó, de az aktuális tartalomtól kvázi független (és nem létfontosságú) tartalmak betöltése, pl itt a Friss csiripek oldalt. És ha sok ilyen van, simán berakható JSON objektumba a különböző helyre rakandó DOM. Egyéb iránt a DOM-ot mindig a szerver oldalon generálom, sose a kliens oldalon. Utóbbi csak InnerHTML-ezhet. Ha nincs JS, max ezek a tartalmak nem jelennek meg.
- Formokat is jobban szeretek AJAX-szal POST-olni, mert így könnyebben megoldható a sikeres POST vagy a hiba visszajelzés és F5-re, illetve navigáláskor nem jön fel az "Újra küldés" figyelmeztető sem. Igaz ezt ki lehet védeni a szerver oldalon egy redirecttel, de az sok esetben macerásabb. Kliens oldalon nem túl bonyolult írni egy osztályt, ami ráül az onsubmitra és összegyűjti a megfelelő form elemeit, értékeit és úgy küldi el, ahogy azt kell. (Fájl feltöltés macerásabb, de arra is vannak megoldások, lásd pl Gmail). Ha nincs JS, a form úgy működik, ahogy amúgy is működne.
- Állapot változások lekérdezése, pl. itt a Friss csiripek. Adott időközönként bekérdez a szerverre új tartalomért. Bár most, hogy kezd terjedni a websocket support az még jobb erre, mert csak egy kapcsolat nyitás történik és onnantól a szerver szól, ha van valami.
pl itt a Friss csiripek
Jól le is lessítja az oldalbetöltést.
Mire gondolsz lassú oldaltöltés alatt?
Most képzeld el, ha ez nem AJAX-szal jönne, hanem a tartalommal együtt, akkor az egész oldal egy nagy fehér paca lenne hosszú pillanatokig a twitter api válaszideje miatt. Így legalább a lényeget látod egyből, mert helyi tartalom. Én speciel a Friss blogmarkokat szoktam átnézni elsőként.
Ha viszont neked a tweetek a legfontosabbak, akkor szerintem próbáld ki, hogy a twitter.com-on is megnézed, hogy ott gyorsabban jön-e a tartalom a #weblabor-ra szűrve (nem sokkal egyébként)...
A magam részéről továbbra is kitartok amellett, hogy a Friss Csiripek blokk kifejezetten jó, hogy AJAX-szal töltődik be.
Tipikusan a reklámok
A magam részéről továbbra is
Ha lassít, akkor még mindig
Form
Függ az összetettségétől
Amúgy egy egyszerű login esetén, ahol rendszerint két mező és egy gomb van, lehet, hogy egyszerűbb eleve az egész HTML-t visszaadni (mármint a form blokkját), mint egy eredmény JSON-t a hibaüzenetekkel. Ha meg mondjuk X db hibás próbálkozás után egy Catptcha elem is bekerül extraként, akkor meg pláne jobb, ha a biztonságot szolgáló elemet nem JS-sel generáljuk az űrlapba.
Viszont vannak olyan űrlapok (pl.: sok mezős, több lépcsős regisztrációs formok), ahol érdemes mérlegelni, hogy mi a jobb megoldás.
Sablonozással megoldható a
észrevétel
én sokszor és sok esetben használok ajaxot de csak ha annak helye van, vagy másként nem lehetne nagyon egyszerűen megoldani!
az alábbi szempontokkal szoktam főként foglalkozni:
-karbantartás mennyire nehézkes, vagy nehézkesebb
-mit akar a megrendelő
-az oldalnál min lesz a főú hangsúly az effekteken és dinamizmuson vagy a biztonságos és stabil működésen
én általában egy js framework ajax apiját szoktam használni, méghozzá azét amelyiket alapból használom már az oldalnál, hogy az ajax miatt külön ne húzzak be frameworkot, bár a js-eket általában szerveroldalon php-val összegyúrom és azt töltöm be mert úgy vettem észre ez javít elég sokat ha 2 frameworko-t használsz és 8-10 plugint kell a megrendelő igényei(mert ugye idő nincs sajátot fejleszteni a problémára ami az adott oldalon az adott funkcióhoz lenne maximálisan optimalizálva) miatt használni!
amire főként szoktam az ajaxot használni:
-pl az oldalon szereplő keresőnél ajaxal lekérem azokat amikre kereshet, az ügyfél általában örül az ilyen automatikus kiegészítéseknek!
-fomroknál ha a formon belül van ismétlődő szekció pl megrendelő formnál akkor egy add product gomb pl simán ajaxxal működik, ha le van kapcsolva a js akkor az add product semmilyen módon nem működhet az oldal teljes ujratöltése nélkül ami viszont rengeteg munkát róna a szerverre mert mindig az eddigieket vissza kellene tölteni, de js-el vagy createlement-ekkel összerakom amire szükségem van(ez azárt kicsit kellemetlen), vagy jquerye vel egyszerűen appanedelek egy html kódot de ugye minek égetném bele, egyszerűen az ismétlődő részt külön fájlba kiteszem és az add product-al mindig lekérem és appendelek, egyszerű megoldás, kikapcsolt js-el egyszerre 1 terméket rendel vagy egy ajánlatot kér....(az ilyen leginkább persze az ajánlatkéréseknél van ha nem kosaras rendszerrel működik valami)!
az oldalak admin felületén szoktam még ajaxot használni mert a megbízók szeretnek ajaxos admin felületen dolgozni hiszen az oldal nem töltődik újra nekik csak a megfelelő mezőben módosítanak egy értéket és azt már küldtem is a szervernek ajax-al,mojd csak közlöm vele a siker vagy sikertelenség tényét,ha ez kell nekik és tetszik nekik akkor ezt csinálom!
-az ellenőrzések szintén szoktam ajaxot használni, pl az űrlapon természetes hogy js-el is végzek ellenőrzést formai dolgokra, de előfordulhat hogy van olyan adat aminek a hitelességét csak szerveroldalon tudom ellenőrízni igy azt lekérhetem ajax-al igy tudom előre tájékoztatni hogy elrontotta, de ettől függetlenül a z úrlap szerveroldali feldogozása még ugyanugy ellenőrzi az egészet ezáltal a kikapcsolt js nincs különösebb hatással a müködésre főként csak a kényelemre!
amire soha meg sem fordult a fejemben az ajax: űrlapok feldogozása, oldal egyes részeinek utólagos betöltése galériák utólagos letöltése és megjelíntése mert ez mind sokkal egyszerűbb eleve kigenerálni és csak láthatóvá tenni,
én nem tartom be azt hogy js nélkül ugyanugy működjön egy weboldal mint vele mert nem tartom fontosank, de azt betartom mert fontos hogy js nélkül is használhatóü legyen az oldal minden funkciója mégha a kényelmi funkciók épp nem is érhetőek el
Hasogassunk szőrszálat, js
Mivel sem szabvány-, sem
Ezen a ponton meg kell, hogy kérdezzem: a cikk szerzője készített az elmúlt öt évben bármilyen weblapot megbízásból, vagy tisztán ideológiai alapokról osztja az eszet? Mert a cikk eleje egyszerűen csak zagyvaság, de a végére olyan mértékben eltávolodik a valóságtól, hogy azzal nehéz mit kezdeni. Bármilyen kicsit is interaktív weboldal tele van olyan elemekkel, aminél egy professzionális fejlesztővel szemben (jogos) elvárás, hogy ajaxban oldja meg; tipikusan ilyen az adatbázist is igénylő form validáció (foglalt-e a felhasználónév?), a nem központi jelentőségű adatküldés (egy regisztrációs űrlapnál még elfogadható, ha az elküldése lapújratöltéssel jár, egy termékértékelő csillagos bigyónál vagy egy komment upvote/downvote-nál nem), a search suggestion, a chat integráció (nem feltétlenül ajax, de valami hasonló), a folyamatosan frissülő információk (mondjuk egy újságnál a percről-percre friss hírek), a galériák. És hát persze van egy csomó minden, ami külső szolgáltatást használ, ami feleslegesen lassítaná az oldal betöltődését, ha várni kéne rá. Twitter feed, ajánlórendszer, ami éppen.
Köszönöm a hozzászólást! a
Az említett hibák konkrét, professzionális fejlesztők által készített oldalakon léteznek.
A dinamikus tartalomcsere bevezetésével túl sok a buktató, amibe beleszaladhatunk, ezek egy részét felsoroltam az írásban, egy része a kommentekben derült ki. Ezek túlnyomó többsége egy statikus oldalon nem létezik, tehát ennyivel egyszerűbb lesz a kód, a karbantartás. A legfontosabb megállapítás, hogy a konzervatív szemlélet több látogató számára teszi elérhetővé ugyanazt a tartalmat – ez az érdeke a látogatóknak és a megrendelőknek is. Az AJAX-os megoldások hoznak-e új látogatókat?
A legfontosabb kérdést pedig a végére hagytam:
Mi nem tiszta? A példák
Az említett hibák konkrét, professzionális fejlesztők által készített oldalakon léteznek.
Nem annyira "nem tiszta", mint inkább nagyrészt hülyeség. Mennyivel lassabb például kliensoldalon összerakni egy pár tíz elemből álló DOM fát, mint szerveroldalon? Vagy honnan vetted azt a marhaságot, hogy a sávszélesség a szűk keresztmetszet? Szinte mindig az adatbázis a szűk keresztmetszet, másodsorban meg a szerveroldali kód - amin azzal lehet segíteni, ha cache-eled az oldalt, mondjuk egy reverz proxyn, és a dinamikus részt külön AJAX requesttel töltöd be. (A példának hozott HWSW nálam - külföldről, tehát sávszél szempontjából extrán hátrányos helyzetben - 4860 ms alatt jeleníti meg az oldalt, ebből 89ms, azaz kicsit kevesebb, mint 2% a kommentek betöltése.) Stb, majd minden pontodra jut valami súlyos tévedés.
Miért nem?
Túl lassú, megtöri az oldal böngészésének folyamatát, nem fogja használni senki.
Egy oldal újratöltésénél a reklámok is frissülnek, gondolt-e erre a fejlesztő?
Ha mind a három felhasználód, aki hajlandó folyamatosan kézzel frissítgetni az oldalt, hogy megkapja az új híreket, új reklámot kap minden frissítésnél, az nem valószínű, hogy pótolja a többi felhasználó elvesztésével kieső bevételt. (Arról nem beszélve, hogy a weben szinte kizárólag átkattintásért fizetnek, úgyhogy sok reklámot mutatni nem feltétlenül jövedelmező.)
Ezzel együtt van nagy magyar híroldal, ami nem tudta ezt okosabban megoldani, minthogy időnként frissíti az oldalt, de az ilyet büntetni kéne, nem jó példaként bemutatni. (Háttérben is eszi a procit, nem lehet offline használni...)
A cron-t és a szerveroldali cache-elést biztosan nem kell bemutatnom, ráadásul ha van egy nagyforgalmú site-unk, miért terhelje tízezer felhasználó a twitter szerverét feleslegesen, ha ezt mitőlünk elég egyszer megtenni?
Ha nagy forgalmú a site, akkor valószínűleg reverse proxy mögött van, amit nem akarsz invalidálni minden alkalommal, ha valaki eltwitteli magát. (Ha kis forgalmú, akkor meg igyekszel spórolni a karbantartásán, és szerveroldalon tárolni a tweeteket felesleges komplexitás.) A Twittert meg nem valószínű, hogy meghatja, hogy százezer requestet kap másodpercenként, vagy százezertizet.
Ha csupa html fájlból áll az oldalad, azt még egyszerűbb karbantartani... nem igazán ez az elsődleges szempont egy fejlesztésnél.
Tizedszázalék nagyságrendű látogatóról van szó tipikusan, azokkal összemérhető, akik nem tudják használni IE7 alatt az oldalt, mert szétesik a dizájn. Pluszmunkával meg lehet oldani, ahogy az ajax mögé is lehet pluszmunkával graceful degradationt tenni; a pluszmunka általában többe kerül, mint amennyi hasznot hoznának az extra látogatók, úgyhogy a cégek nem foglalkoznak vele.
Ez kinek az elvárása?
Azé, aki fizet a fejlesztésért, és cserébe minél több látogatót szeretne, akiknek nem okoz fájdalmat az oldal használata. Ezért érdeklődtem, hogy volt-e dolgod mostanában ilyen úriemberekhez, mert komolyan meglepődnék, ha valami komolyabb webes műhelyben dolgoznál, és ott lenyelnék ezeket az elméleteidet.
Mennyivel lassabb például
A site-ok túlnyomó többsége jQuery-t használ a dinamikus adatfrissítésre, aminek az 1.9-es verziójától már nincs rendes támogatás a régi IE-kre, máris nem csak 1-2%-ról beszélünk.
jQuery 1.9
jQueryből a 2.x széria az ami dobja old IE supportot (az általad linkelt oldalról, kiemelés tőlem):
Mennyivel lassabb például
Annyival, hogy ha gyors HTML-t szeretnél, akkor nem DOM fát kezdesz el építgetni, hanem innerHTML-lel szúrod be a kész kódot, mert sokszoros a sebességkülönbség.
Az egy teljesen akadémikus szempont, hányszoros a sebességkülönbség (vö. egy vagy két idézőjelet használjunk PHP-ben és hasonló marhaságok), a lényeg az, nyersz-e a teljes oldalmegjelenítéshez viszonyítva számottevő időt. Ha nem (és nem), akkor nem kell foglalkozni vele.
A mobilnetem inspirálta, amit, ugye, egyre többen használnak.
Mobilra külön oldalt szokás csinálni, a HWSW-nek is van. Ott nem AJAX-szal töltődnek a kommentek.
Ez valami megérzés? Az AJAX elterjedése előtt is működtek ilyenek.
Meg a WWW elterjedése előtt is lehetett internetezni gopherrel. So what? A mai oldalakkal vagy versenyben, nem a tíz évvel ezelőttiekkel, a ma elvárt szintet kell hoznod, ha azt akarod, hogy látogatóid is legyenek.
Akkor micsoda?
Hogy a fejlesztés árának és a fejlesztés által generált profitnak a különbsége maximális legyen. Ha nem fejlesztesz semmit, vagy mondjuk egy darab under construction gif az oldalad, azt például roppant egyszerű karbantartani, mégsem egy nyerő üzleti stratégia.
Európában átlagosan 1-1,5%, USÁ-ban 2% között vannak látogatók kikapcsolt JS-sel. Egy tízmilliós bevételű oldalnál ez évi 100 000 forint kiesést jelent, ami a fejlesztő felelőssége, ha JS-től vagy AJAX-tól tette függővé a vásárlást (aminek a része a regisztráció is).
Szerintem a YDN felhasználótábora nem éppen tipikus ilyen szempontból. Nem tudok más adatot (ahogy elnézem, nem is nagyon van más kimutatás), nekem egy nagyságrenddel kisebb számok rémlenek az utolsó munkahelyről, ahol láttam ilyeneket. Talán más tud pontosabb számokat.
Mindenesetre viszonyításként, 100.000 forint durván egy fejlesztő háromnapi munkájának a költsége, ha ennél több munka a teljes oldalhoz javascript-mentes fallbacket csinálni (ugye nem az AJAX az egyetlen, ami ilyenkor kiesik), akkor már negatívban vagy. Az én tapasztalatom, több különböző piacvezető e-commerce cégnél, az, hogy nem bajlódnak vele.
Az a pluszmunka. Általában egyáltalán nem csinálod meg statikusan, más HTML elemeket igényelne, külön dizájnt, külön logikát, kétszer kell tesztelni...
Itt akkor megállok, és harmadszor is megkérdezem, hogy dolgoztál-e már komolyabb cég weboldalán? :-)
a lényeg az, nyersz-e a
Akkor micsoda?«
Hogy a fejlesztés árának és a fejlesztés által generált profitnak a különbsége maximális legyen.
Te a megrendelőnek készíted
Te nem? :)
Nyilvánvaló
Nagyon irigykedem rad :)
Van is miért : )
Fejlesztői felelősség
Idézem egy feljebb zajló vita egy szálát, ami egy jó példa. A név lényegtelen, mert ez bárkivel így alakult volna:
fejlesztő: "Bármilyen kicsit is interaktív weboldal tele van olyan elemekkel, aminél egy professzionális fejlesztővel szemben (jogos) elvárás, hogy ajaxban oldja meg"
én: "Ez kinek az elvárása?"
fejlesztő: "Azé, aki fizet a fejlesztésért, és cserébe minél több látogatót szeretne, akiknek nem okoz fájdalmat az oldal használata."
én: "Te a megrendelőnek készíted az oldalt?"
A kérdést nem véletlenül tettem fel: valóban a megrendelőnek készítjük az oldalt? Valóban az ő elvárása szerint kell annak működnie?
Nem.
Ha nekem a dobostorta a kedvencem, és elmegyek pecálni, akkor a horogra a tortát fogom feltűzni?
Az oldalak a felhasználók számára készülnek. És én azt hiányolom, hogy senki sem beszél arról, hogy nekik mi az érdekük, ők mit szeretnének. Miért nem? A megrendelő belőlük él, így közvetetten mi is belőlük élünk.
A témánál maradva: a felhasználónak AJAX-ra van szüksége? A felhasználónak reszponzív oldalra van szüksége? Ezek nem véletlenül a fejlesztő kívánságai?
Mit szeretne a felhasználó? Lehet, hogy csak egy üdítőt szeretne venni, és egyáltalán nem érdekli, hogy milyen technológiával kapja meg. Engem sem érdekel, hogy ADSL-en vagy kábelen jön a net, csak jöjjön.
A megrendelőnek milyen jogon vannak technológiai elvárásai? Én megmondom a fogorvosnak, hogyan fúrjon, vagy a péknek, hogy milyen formájú kenyeret süssön? Nem, hanem választok amalgám vagy fogszínű tömés közül, de a többi a szakember dolga. De a szakmánkban ki a szakember? A fejlesztő döntsön ilyen ügyekben, aki jellemzően technológiai oldalról közelít?
Hol vannak a tanulmányok, hogy a felhasználóknak mire van szüksége? Erről miért nem beszélünk? Ez lényegtelen lenne?
Vagy egy másik, jellemző felvetés a technológiai témakörben:
"A mai oldalakkal vagy versenyben, nem a tíz évvel ezelőttiekkel, a ma elvárt szintet kell hoznod, ha azt akarod, hogy látogatóid is legyenek."
Miért? A felhasználók többsége technológiai vagy pénzügyi szempontok alapján vásárol?
Még egy szempont, újra a fentebbi idézet:
én: "Ez kinek az elvárása?"
fejlesztő: "Azé, aki fizet a fejlesztésért"
Mert a fejlesztőnek a megrendelőnek bármit meg kell tennie? Ez pont ugyanaz, mint amikor a tömegmészárlás után a katonák azt mondják, hogy parancsra cselekedtek. Ilyen hozzáállással hogy lehet jól dolgozni?
Miért nem látok sohasem ezen a fórumon komoly fejlesztőktől kérdéseket? Mindeki csak kijelent, kijelent, kijelent.
(Fontosnak tartom még egyszer megjegyezni, hogy ezzel nem egy bizonyos személyt szeretnék kritizálni, hanem általában ezt a hozzáállást tapasztalom.)
Ezzel nem tudok
Sajnos(?) olyan világban élünk, amikor elsősorban a megrendelő igényeit kell kiszolgálni.
1. Nem teszel bele többet, mint amit megrendelt, különben nem férsz bele a határidőbe
2. Nem teszel bele kevesebbet, mert morcos lesz a munkaadód.
Hogy a felhasználónak mi a jó, azt rá kell bízni a megrendelőre. Szerintem.
Lehet javaslatot tenni a megbízónak, hogy másképp kellene ezt-azt, de önkényesen eltérni tőle, mert szerinted a felhasználónak úgy jó... (mert abból amit írtál, nekem ez jött le) Hát izé... elég rossz ötletnek tartom.
---------------------
Komoly fejlesztőket általában nem találsz a fórumok kérdezői között, ahogy elnéztem. Van egy középhaladó réteg, ők kérdeznek és válaszolnak is, a többiek vagy kérdeznek vagy válaszolnak vagy hallgatnak. :)
(ezt leginkább a stackoverflow lapcsaládon tapasztaltam)
Hogy miért? Ha valamiben profinak tartom magam, akkor nagyon ritka eset, hogy olyasmibe kezdek, amiben szükségem van mások véleményére, többnyire bízom a saját ismereteimben. Ha meg valami nem tudok, akkor megkeresem a neten. Kicsi a valószínűsége, hogy valaki másnak ne okozott volna problémát. (szintén tapasztalat: ha valamire nem találok választ, akkor én keféltem el valamit, ill. úgy öt százalék eséllyel valami olyanba futottam, amire még soha, senkinek nem volt szüksége - erre van konkrét példám :D)
Részben igazad van
Az viszont nagyon is igaz, hogy mindent ne akarjon megmondani a Megrendelő, főleg technológiai dolgokat (megj.: én még nem találkoztam olyan megrendelővel, aki tudta volna, mi az ajax. Az is ritka, aki sejti, hogy "a kliens-szerver nem varázslat".) Mindenkinek magának kell eldönteni, hogy hol ez a határ, mi az, ami helyett már inkább éhenhal.
Pont azért, mert valójában (majdnem) mindenki megmondja - a Megrendelőnek is! - a tuttit, mert képvisel egy irányvonalat, és - nem utolsó sorban - pont az ilyen "új technológiákkal" győzi meg a Megrendelőt saját tudásáról, árairól, stb.
Namost, ha valaki már kellően begyakorolta ezt az észosztást (sajnos sok ilyen van), akkor jobban fél egy (saját) kérdéstől, mint a tűztől, mert tudja, hogy lényegesen kisebb a tudása, mint amit igyekszik elhitetni magáról.
Ez a mai világ, megszokod vagy megszöksz. Szándékosan nem írtam egy nevet sem, akinek nem inge, ne vegye magára.
Úgy látszik, nem fogalmaztam
Ezt most én nem értem :)
A válaszom (előbbi) két külön téma, az idézetek szerint. Lehet, hogy az nem egyértelmű? Valahogy nekem ez a reakciód (65) "nem stimmol", csak nem tudom, miért.
"A kérdést nem véletlenül
Igen.
A megrendelő azért bízott meg téged, hogy segíts neki megvalósítani a célját. Nagyon sokszor már kész megoldásokkal jön. Neked mint szakembernek segíteni kell őt abban, hogy a céljait elérje. Ha nem jó megoldást választott, javasolni kell helyette egy másikat, ami ugyan azt a célt eléri.
De a célt ő fogalmazza meg, te ezt önkényesen(szakmai szempontok miatt) nem írhatod felül. A célcsoportját, a látogatóit, ő ismeri a legjobban, nem Te.
El kell fogadnod, hogy a döntést is ő hozza. Ráadásul úgy hozza, hogy ismeri a teljes üzleti domain-t.
Ezért gondolom, hogy egy - az üzleti domain ismerete nélkül hozott - általánosító kijelentés, nem fog jó üzleti döntésre vezetni.
pp
de azt nem tudja
1: hogyan célszerű felépíteni az oldalt, hogy (akár) a célcsoporton felül több látogató elégedett legyen vele (és itt most lehet beszélni a válaszidőtől a reszponzivitáson és a régi böngészők támogatásán át a fogyatékkal élők figyelembe vételéig), (akár) minimális vagy semennyi többletmunkával,
2: hogyan alakul az internetes társadalom, hogyan érhető el a célcsoport, mik a trendek (technológiai és egyéb szempontokból),
3: mi a fejlesztő egyedi eszköztára, (technikai és mentális) ami mentén hatékonyan tudja elvégezni a munkáját
4: stb...
Vagyis egyetértek a Gáborral, hogy mindig célszerű úgy gondolkozni, hogy a felhasználóknak és nem a megrendelőnek készül a fejlesztés -- mintha a saját projektünk lenne. Ezt lehet és célszerű is menedzselni a megrendelő felé, és a tapasztalatom szerint az ilyen törekvések a megrendelő szemében is érezhető hozzáadott értéket képviselnek.
A megrendelő a legtöbb esetben csak azt hiszi, hogy tudja, hogy mi a cél. Ráadásul nagyon sok esetben nem jól, hiányosan fogalmazza meg -- ez természetes, hiszen a technikai részéhez nem ért, és nincs tisztában az optimális megvalósítással, sem a lehetőségekkel.
Sőt, sok esetben nem is kell az egyes alkalmazott technológiai megoldásokat a megrendelő orrára kötni, egyes döntéseket mi magunk hozunk meg: ha az lebeg a szemünk előtt, hogy a felhasználó számára dolgozunk, akkor az eredmény jobb minőségű lesz, mintha csak a specifikációban leírtaknak kívánunk megfelelni. Ha az ilyen, a mi kompetenciánkba tartozó döntéseket megtartjuk magunknak, akkor még az egyeztetéssel kapcsolatos felesleges köröket is megúszhatjuk (bele se íratjuk a specifikációba, esetleg csak általánosságban utalunk az ilyesmire), ezzel is időt spórolhatunk meg (minek is kössük az orrára, amikor úgysem tud objektíven dönteni kompetencia, tapasztalat hiányában?)
Mondok egy példát: a megrendelő egy szállodában velünk szeretné kialakíttatni a vizesblokkot: megbeszéljük vele, hogy milyen legyen a csempe (stb) de azt nem, hogy hol menjenek a vezetékek (stb).
Nekem nem tetszik az a stílus, hogy a specifikációt megír(at)juk és elfogadtatjuk pusztán abból a célból, hogy a munka végeztével lobogtathassuk a bérünket kérve (tessék, ezt akarta a megrendelő, kész van, mostmár fizessen!), és az utólagosan kiderült (számunkra már az elején nyilvánvaló) hozzáadandó fejlesztéseket pluszmunkaként kérhessük le.
Szóval szerintem is akkor végezzük a legértékesebb munkát, ha a projektet olyan szinten magunkévá tesszük (megismerjük és alakítjuk), hogy a megrendelő fejével (együtt és helyett) a felhasználók számára készítsük el a terméket.
Pontosan
Az első cégemnél például volt egy sitebuilder "kódex", amit egy kollegám kezdett el csinálni, és én vittem tovább, sokszor a szabadidőmből áldozva azért, hogy elkészüljön, és jól lefedjen minden fázist. De megérte, mert a munkánk könnyen ellenőrizhető volt, volt támaszpont a többiek részére, hogy mit és hogyan kell elkészíteni, ezáltal hatékonyabban dolgozott mindenki. Ezt a plusz munkát a cég a következő éves elbeszélgetéskor szép fizetésemeléssel ismerte el.
Ha én felhasználóként egy
Ezek az én (átlagos felhasználó) igényeim. A fejlesztő(k) felelőssége, hogy ezeket az igényeket kielégítsék, és az engem különösebben nem érdekel, hogy milyen technológiával. Az ilyen jellegű interakciókat tudja az AJAX hatékonyan megoldani.
Azért jó
Hagyjuk már ezt a személyeskedő ócsárolgatás-sorozatot, kérlek... szerintem ez már nem vitázás, hanem vitatkozás.
Módjával, de azért használjuk!
1) Való igaz, hogy az AJAX és a SEO nem jó barátok, nem túl okos dolog a felhasználó/keresőbot számára legértékesebb tartalmat JS-el betölteni, azonban nem minden tartalom értékes SEO szempontból - pl az szerintem nagyon is helyénvaló, hogy egy komment threadet vagy egy "súgó" tooltip tartalmát AJAX-al töltsünk csak be és csak akkor ha arra a felhasználónak szüksége van. Pl kommenteknél ha legörget odáig.
(btw az ajax-os betöltési tartalmakat is lehet keresőoptimalizálni: https://developers.google.com/webmasters/ajax-crawling/)
2) Pl egy egyszerű kapcsolati form vagy hírlevél feliratkozás kitöltésnél én utálom, ha az egész oldalt be kell újra töltenem (főleg, ha mobilról nézem, amin lassú a net), - miért nem küldhetem el csak annak a pár mezőnek az értékét (igen tudom ez megoldható rejtett iFrame-el is, erről volt is egy szép cikk it a WL-en valamikor)
3) Két általam igen kedvelt buzzwordöt hoznék fel a témával kapcsolatban Unobtrusive JavaScript és progressive enhancement
Hogy az első példából induljak ki, az AJAX-os formokat én midig úgy szoktam megcsinálni, hogy JS nélkül is tökéletesen működjenek (max nem kap a user egy olyan szép "dizájnos" animált visszaigazoló panelt, mint amit a JS-es verzióban kapna, de a lényegi funkció működik), vagy ha pl megnézed a Kirowski Isobar oldalán az "Emberek" oldalt először bekapcsolt JavaScripttel majd kikapcsolt JavaScripttel... Mindenhogy tökéletesen működik, csak JS nélkül kevésbé látványos (bár avatatlan szem észre se venné a különbséget).
Szóval szerintem nagyon is jogos ennek a technológiának a használat, és ha jól csinálod akkor komoly usability előnyre tehetsz szert, de tényleg nagyon át kell gondolni mit hogyan, ha nem akarjuk pont az ellenkezőjét elérni.
Kicsit sajnálom ezt a dolgot,
Sok hasznos dolog van a bejegyzésben, csak túl nagy a zaj, így nekem többször újra kellett olvasnom, hogy ne a (lehet hogy provokációnak szánt?) "mérges" részek maradjanak meg. Egy személyes blogon amolyan rantnek még elmenne a dolog. Szakmai vitát ugyan lehet erős érzelmi töltettel is folytatni, de az onnan kérdéses, hogy szakmai vita-e.
Én is kb. erre gondoltam
Igen, csak sajnos
Én ezzel együtt - mint korábbi kommentjeimből is kitűnik - képes voltam a mondanivalójára figyelni, ilyenkor (nekünk többieknek is) képesnek kell(ene) lennünk érzelmi töltések nélkül mérlegelni.
Még egyszer átolvastam a
Mégis sokan úgy értették
Pont ez az, a zaj miatt nem
Zárójeles, félkomoly móka: ha már arról beszélünk, hogy minden látogató fontos és mindenkinél működnie kell az oldalnak szépen jól, akkor ne fogjuk a felhasználókra (olvasókra), hogy nem sikerült megérteni a cikk lényegi mondanivalóját :).
Azért, hogy leírjuk "ne
A vita itt akörül zajlott, hogy vajon a felhozott példák fejlesztői ész nélkül használják-e az Ajaxot, vagy esetleg olyan egyéb okok miatt döntöttek az adott megoldás mellett amiről nincs tudomásunk.
Sajnos ez nem megy át.
Mindig élvezettel olvasom az
Imho a felhozott példák
Az, hogy kinél nem jelenik
Ez oké, de mi van akkor, ha
Tényleg, akkor mi van?
rel="noindex"
attribútum a comment(ek) div-jén nem lehet megoldás? (Komolyan kérdem, még csak linkről olvastam hasonlót.)Megoldás lehetne, hogy a
Éppen ezért nem tenném
Én is úgy tudom, hogy nem 100%.
két nem túl jó ötlet
Száz
Túl sokmindenhez kell már érteni!
Mikor elkezdőtött az internet mánia HTML-ben írtuk a cikkeket. Később megtanultuk a CSS-t, hogy szép is legyen amit csináltunk. Ezután jött a PhP, hogy az oldalunk "gondolkodhasson". Ezután már kell ugye a JavaScript, hogy a kliens gépe se unatkozzon. Nem rég rájöttünk hogy utóbbi kettőt össze kell kötni, mert ugye nem jó ha a két platform külön dolgozik, így megalkottuk az AJAX-ot. Holnap megint jön valami, amit hozzátoldanak a sorhoz, így az embernek egyre több, egymástól külön fejlődő nyelvet kell megtanulni. Szerintem ugrani kéne inkább egy évet és ezt az egészet egy nagy nyelvé gyúrni. Egy teljesen új nyelvet alkotni, ami ha akarom kliens oldalon dolgozik, ha akarom, akkor szerveren; ha akarom, akkor egyszerű szöveges információt jelenít meg, ha akarom, akkor villog a szöveg miközben tótágast áll a képernyőn.
Persze tudom, ezzel kukába dobhatnánk a böngészőinket és a webszervereinket, na de mi van akkor? Gondolom nem egyszerű egy ilyet megcsinálni, de ezelőtt 200 évvel váltig állítottuk, hogy repülni se fogunk. Szerintem ez lesz majd egyszer a web 3.0 addig viszont be kell érnünk ezzel:
<HTML>
<style>
<script>
<?php>
éljünk abból ami van, ez a módi
Azért ha forradalom nem is, de egy szenzációhajhász újságíró valószínűleg eladná mint forradalom.
Egy év kevés, még egy újabb nyelv csak ezért meg felesleges szerintem.
Háát kezdjük először a már létező technikákkal.
Odáig már eljutottunk, hogy JS tud szerveroldalon is futni (plö NodeJS), bár mintha lett volna ezelőtt is valami sovány próbálkozás rá. Bár asztali GUI-s alkalmazásokat (GTK, Qt, stb…) alkalmazásokat nem tudom lehet-e NodeJS-sel írni.
De ha nem a JS a barátunk, akkor még ott a Python, meg a Ruby. Létező nyelvek, lehet webes backendre használni őket, meg grafikus alkalmazások összehordására is. Ezen nyerhetnénk annyit, hogy kiszórhatnánk a webes alkalmazásfejlesztésből (pl youtube, soundcloud) a HTML-t és a CSS-t, mint dokumentumot leíró és formázó nyelveket. Ez az én vesszőparipám.
Nem feltétlenül. A webszerver maradhat, a böngésző a nehezebb eset, de lehet megúsznánk azt is egy kisebb átalakítással.
Ez esetleg egy web 823.0 lehet, de elnézve a mostani verziószámozási trendeket (chrome, firefox) lehet nincs is olyan messze. :D
A web 3.0 pedig megint csak valami apróbb puki passzátszélnek kiáltása lesz szerintem, de ne legyen igazam.
MeteorJS
Nézd meg mit csinál MeteorJS, alapvetően pontosan ezt a "ha akarom itt, ha akarom ott" -ot csinálja.
Nem egészen, ami az ő agyában
Máshol is láttam már embereket, akik valami ilyesmiről álmodoznak, de nem igazán értem, mire lenne ez jó, azonkívül, hogy kevesebbet kéne tanulni...
nem igazán értem, mire lenne
Arra, hogy mindent lehessen ömlesztett spagettikódban írni, és ha összefutsz egy ilyen projekttel, akkor felköthesd magad... :D
Vannak olyan megoldások, hogy kliens oldali kódot úgy generáltatnak szerver oldalról, mintha egy sima GUI lenne. GUI komponensek kellenek hozzá, egy sereg sablon, ennyi. Működni működnek, csak baromi lassúak, mert nagyon általánosak...
+100
És ahhoz, hogy valami értelmes végeredményt hozz létre vele (nincs lehetetlen), ahhoz már nagyon sokat kell tanulni, és min. 3x annyit dolgozni, mintha a meglévőket jól használod.
Jaja, én is kb. így értettem.
Ez jelenleg is elérhető egy busásan megfizetett webfejlesztő alkalmazásával :).
Hát végülis afelé halad a
Egyszer nekem
Persze viccnek szánta, de még ma is elgondolkodtató, mennyire igaz egyes esetekben... :)
Ez a Meteor is rajta van már
Elég kidolgozottnak tűnik,
Nekem valahogy nagyon fura a hozzáállásuk a felhasználókhoz. Se nodejs verziót nem találtam eddig, se operációs rendszert nem írnak. Úgy kezdik, hogy egy platform, amiben mindent megadhatsz js-ben. Ennyi erővel java is lehetne alatta, vagy bármilyen más nyelv, ami tud js motort használni. A helyzet az, hogy amire support van, az csak a linux, és a cucc csak nodejs-el megy, és valszeg mongodb-vel. Ennek a dokumentáció első soraiban benne kellene lennie. Innentől nekem elég gáz a dolog. A security részéről egy csomó jót írnak, hogy nagyon könnyű kezelni, automatikusan szűr, stb... Az eddigiek alapján valahogy nem tudom elhinni, hogy nincs tele sebezhetőséggel, de majd ha lesz időm jobban belemászok...
szerk:
Helyesbítek: https://github.com/meteor/meteor/wiki/Supported-Platforms
Itt írják, hogy egyelőre csak linuxra van. Mondjuk egy 0.6-os verziójú cucctól nem várok többet. Azt írják, hogy majd lesz hivatalos windows support is nem sokára. Ha eléri az 1.0-át, akkor megnézem újra, hogy van e értelme foglalkozni vele.