Lementünk reggelizni fél nyolckor, mert fél kilencre szerttünk volna beérni - de csak az ajtónál derült ki, hogy péntek-szombat-vasárnap csak nyolctól van reggeli. Így aztán futóverseny volt a befelé menet - főleg, hogy nekem fél kilenckor volt találkozóm... Mindegy, megoldódott.
Katherine Bailey, David Eads, Stella Power: jQuery in Drupal, part 1: jQuery basics (link)
Az utolsó negyedórára értem csak ide, mindenesetre nem maradtam le semmi érdekesről: gyakorlatilag a JS és a jQuery alapjait magyarázták, olyan kezdő szinten, hogy mit lehet csinálni a Firebuggal...
Katherine Bailey, David Eads, Stella Power: jQuery in Drupal, part 2: advanced (link)
Drupal és jQuery kapcsolata: a kis mérete, moduláris felépítése és közösségi támogatása miatt került bele 1.0.1 a d5-be; a leglényegesebb belépési pont a drupal_add_js()
. Használhatod még a drupal_to_js()
függvényt PHP változók JS-be történő átadására. A drupal.js
az egész lelke: miatta lesz JS támogatás a Drupal oldalon; a html
objektumhoz hozzáadja a js
osztályt (pl. css-ből való elrejtéshez). A Drupal.settings
való php-ből js felé történő információ-átadásra (pl.: $jpal_settings = array('effect' => $effect); drupal_add_js(array('jpal' => $jpal_settings);
a php oldalról, Drupal.settings.jpal.effect
a js oldalról). A Drupal.behaviors
-hez adott függvények a DOM betöltődésekor lefutnak. (Minderről már van doksi, de még nem a helyén - az előadó már dolgozik róla, hogy könnyebben megtalálható legyen.) A Drupal.theme
a szerver-oldali sminkek JS megfelelője: Drupal.theme('myFunction', 'elsőparaméter', 'másodikparaméter');
- stb. A Drupal.locale
a t()
megfelelője, sőt, együtt is működik vele.
Második részben jQuery pluginekről, AJAX-ról és AHAH-ról lesz szó. Azért (is) könnyű plugint fejleszteni jQueryhez, mert a névtér-ütközéseket szépen el lehet kerülni a példa első és utolsó sorában bemutatott módon (lásd a slide-okat). AJAX jQueryben: marha egyszerű: $('#element').load('foo.html');
vagy épp $('#element').load('bar.php', { value1: 'foo', value2: 'bar', });
- egyszerű, nem? ;) Adatcsere: $.post('feldolgoz.php', { text: 'Szöveg', age: 20, author: 'Mikulás' }, function() {$('#alert').html('Az adat elküldve.'); });
- ugyanez működik $.get
-tel is. Az AHAH-nál már viszont egyrészt elvesztettem a fonalat, másrészt nem tudott eléggé belemenni az idő rövidsége miatt... Kár.
Eric Gundersen: Attracting & Retaining Drupal Talent (link)
Az első fickó a Raincity Studiostól érkezett. Netkávézóként kezdték, ma már nemzetközi ügynökségként dolgoznak - az alapító a kilencvenes évek vége felé könnyűbúvárkodással foglalkozó cégnél dolgozott, amit megunt, mikor egy éve csak azzal telt el, hogy felvett vagy 40 embert. Ezért elkérte a hátizsákot, amit szoktak adni az ügyfeleknek, elment búvárkodni vagy 3 hónapra, s mikor visszajött, nem tudott mit kezdeni magával - csinált egy netkávézót. A legfőbb kulcsszavuk a nyíltság: "Drupal, vagy nem Drupal - nincs ilyen kérdés". Az irodájukban volt négy íróasztal, tehát mikor mind a hatan bent voltak, kettő kiszorult a kávézóba - viszont az ügyfelek maguk közül valónak látták őket. Úgy gondoltak magukra, mint rocksztárokra: jók vagyunk, királyok vagyunk - ergo annak is látták őket, pedig tettek magasról rá, mit gondolnak róluk. Lényeges a csapat- és közösségépítés: nincs Drupal közösség nélkül, és mivel a csapatuk nem lehet meg Drupal nélkül, hát összekötik a kettőt. Ehhez a mindenféle egyéb rendszerek csapataival való együttműködés is hozzátartozik, el egészen az üzleti kapcsolatokig. Felépítették tehát a saját márkájukat, ami köré összegyűlt egy sikeres csapat, amik mindenféle ökörségben együtt vannak - ezáltal meg tudnak felelni a legnagyobb kihívásoknak is. Természetesen előfordul, hogy a cégen belül feszültségek alakulnak ki (mikor egy reggel az asztalán csak annyit talált, hogy holnap valami konfliktuskezeléssel kapcsolatos előadásra kell mennie, vagy egy órát vitatkozott a jobb kezével, aki úgy vette rá az elmenetelre, hogy kilépéssel fenyegette meg) - ilyenkor fogják magukat, és elmennek egy lőtérre, és kiadják magukból az állatot. Ennek az lesz az előnye, hogy a különbségeket kezelni tudják - ergo többféle ügyfelükkel tudják majd megérteni egymást, akár határokon és nyelveken keresztül is. Például mikor megunta a kezdeti problémákat, "rebootolta" a céget: alapított egy irodát ~17 emberrel Kínában.
A második csaj a Palantirtól jött. Ők eredetileg egy saját CMS-t toltak, azóta viszont teljesen átálltak Drupalra: egyszerűen nem bírták tartani az iramot a saját termékükkel. Amikor a toborzásról és a munkaerő megtartásáról beszélünk, egy dologról beszélünk: a munkáról. Hogyan, kivel, milyen módon, hol, min, stb. dolgozol, dolgoztok? Tudtok-e túllátni a melón, és mondjuk az ügyfél gépén, az ő szemével nézni az eredményre? Tanulj meg egyensúlyozni, mindenféle értelemben: ne adj ki pénzt, amiért nem muszáj; menj haza, hogy tudj visszajönni; stb. Olyan cipőbe lépj, ami jó rád: olyan ügyfelekkel dolgozz, akiknek pontosan tudod az igényeit; úgy csináld meg nekik a dolgokat, hogy pontosan passzoljon az igényeikkel - mérce lehet az a nap, amikor végre olyan oldalt tudnak összerakni, ami nem hányásként néz ki. Játssz együtt a többiekkel: egyrészt nézz a melóra, mint játékra (így még többen tudnak együtt dolgozni, izé, játszani veled), másrészt tartsd be a játékszabályokat, hogy a munka élmény legyen.
A harmadik srác méginkább elgondolkodtató volt - de gyakorlatilag minden rajta van a slide-jain, bármennyire is kérdések legyenek azok elsősorban. Érdemesnek tűnik megfogadni az ott található tanácsokat is. A munka álljon pl. négy fázisból: ötletek és felépítés; gyors megvalósítás; interaktív módosítások; támogatás és apró módosítások. Mindig dolgozz csapatban: minél kisebb a csapatod, annál több a szívás. Kommunikálj sokat az ügyféllel, így hamar kiderülnek a rossz ötletei, valamint elismeréssel lesz irántad, mikor lebeszéled róluk. Számlázz havonta; ha elmarad a fizetéssel, emeld a díjat - akár naponta; tartsd magadnál az ügyfelet, hogy ha nem fizet, le tudd tiltani a honlapjához való hozzáférését. Persze ezek egyike sem egyszerű... Vigyél sok gyümölcsöt és egyéb természetes kaját a dolgozóidnak: boldogok lesznek tőle és produktívak - ellentétben a McKajával, amitől csak idegesek lesznek, és inkább otthon nézik a tévét.
Ken Rickard, Moshe Weitzman: Using Node Access (link)
Mi ez; hogy működik; milyen terminológiát használ; hogyan érdemes használni (mint API-t); stb. A slide-okról tudni kell, hogy mind ugyanazon oldalról való, a különbség csak az elérésére használt domain nevében van.
A működés alapja: ha van "tartalmak adminisztrációja", mindig hozzáférhetsz (nem is nézi tovább). Ha nincs "tartalmak hozzáférése", sosem férhetsz hozzá (nem is nézi tovább). Ezután jön a hook_access()
. Ha ez nem határoz meg hozzáférhetőséget, nézzük meg a node_access
táblát. Az egyik baj a modulokkal, hogy nem egyformák: némelyik csak read/edit/delete, mások meg create/read/edit/delete jogokat határoznak meg - ráadásul a node_access
táblában nincs is create mező... A másik baj, hogy a különböző hozzáférés-szabályozó modulok kiüthetik egymást (pl.: A: nem vehetsz pónit, B: vehetsz pónit - eredmény: ingyen póni). A node moduloknak nem kéne a "megtekintés" jogot korlátozniuk (de akkor minek kéne?) - de nem kéne írniuk sem a node_access
táblába... Jó hasznát vehetet a Devel Node Access modulnak, mikor hibát keresel ebben a táblában, mivel el is magyarázza, mi történik. Hozzáférés-szabályozó modul írásakor tartsd szem előtt, hogy Drupalban ezek a modulok megengedő vagy módon kapcsolódnak (lásd a fenti pónis példát) - van, akinek ez a módszer megfelel, van, akinek nem.
Az előadás végén felállt egy csaj, hogy talán rájött, mire való az nid=0
a node_access
táblában - amit sem az előadó nem vágott, sem a menü rendszer írója (pedig ugye az a másik sarkalatos pontja a hozzáférés-szabályozásnak).
Tobias Ratschiller: Building a Financial Web Application Using Drupal (link)
Egy kocsmában jött az ötlet, hogy domainnevek adásvételére építsenek online tőzsdét. Két hónappal később leálltak a kerék újrafeltalálásával és a Smarty használatával, és inkább Drupalt kezdtek használni - nem is annyira tartalomkezelőként, inkább keretrendszerként. A dizájnt és sminkelést kiadták alvállalkozónak, magát a rendszert pedig menet közben ismerték meg. A grafika ára: $69 logó, $109 honlap, $609 smink. A bétát meghívásos módon tették közzé (invite
modul). Megmutattak egy slide-ot, ami vagy 50 modult felsorol; felsorolták, mi mindenre volt szükségük; elmondták, miből mit használtak fel, illetve írtak át. Az egészben az volt a legnagyobb kihívás, hogy az üzleti részt (adásvétel, kőkemény pénzekkel) összehozzák a szociális hálóval, statisztikákkal - úgy, hogy ettől a szerverük se feküdjön meg. Néhány apróbb dolog: szállítási és fejlesztési ciklusok; terhelhetőség és bővíthetőség; core és modul fejlesztése; menü és cache működtetése; Drupal 6; stb. Beszéltek általános szoftverfejlesztési kérdésekről is, amiket bármelyik hasonló (pl. egyetemi) előadáson meg lehet hallgatni: "a leterhelt fejlesztő nem dolgozik jobban, csak gyorsabban" és hasonlók. Célszerű valami grafikont gyártani képes mérőeszközt alkalmazni a cache hit/miss arány mérésére - pl. rrdtoolt -, no és természetesen mindent betolni cache-be, amit csak lehet. Ha nem akarsz fejfájást, a módosításaidat küldd vissza - vagy egész egyszerűen ne módosíts pl. a core-on. A 2000-es Apache konferencián a PHP volt a nagy újdonság: használja mindenki, aki csak weboldalt akar építeni - ma PHP helyett használj Drupalt. ;)
Az előadások után a DQ-ban ettünk egy pizzát, aztán a hotelben kapcsolódtunk ki: tartottunk egy rövid kétszemélyes code sprintet.