Drupalcon Szeged 2008 második nap

A tegnapi nap igazán hasznos volt nekem. Kezdtem rober Douglas keresésről szóló előadásával, ami egész jó volt. Beszélt jópár külső megoldásról (Apache Solr, Xapian, ...)

Ami viszont igazán megragadta a figyelmemet az a legultolsó előadás, amely a webalkalmazások kliens oldali sebesség-optimalizálásáról szólt. Ezen a téren még sok tanulnivalóm van és ebből másfél óra alatt igazán sokat sikerült ledolgozni Konstantin Käfer előadásának. Tényleg csak ömlesztve a tippek:

  • csökkentsük a http kérések számát
  • CSS-t előre
  • JS-t a kód végére
  • GZip
  • CSS, JS tömörítés
  • statikus tartalmak eltérő host-on
  • CDN használata
  • Képeknél sprite-ok használata

Most megyek két jQuery-s előadásra.

UPDATE:
A második nap képei

Drupalcon Szeged 2008 első nap

Eddig nagyszerű a Szegedi Druaplcon, gondoltam a szünetek szabad perceit kitöltöm azzal, hogy röviden beszámolok.

Tegnap Rasmus Lerdorf előadása a PHP múltjáról és jelenéről, nagyon emlékezetes volt, sok humorral. Kiderült például, hogy nem szereti a keretrendszereket. :) Ezt jó tudni, egy Drupal konferencián.

A hagyományos PHP keretrendszerekkel (Simphony, CakePHP) összehasonlítva, a Drupal a leglassabb, de Drupal nem csak keretrendszer, hanem CMS is.

De az is kiderült, hogy megfelelő kódolási stílussal és szerver beállításokkal a PHP-s oldal kiszolgálása lehet akár annyira gyors is, mint egy tisza HTML oldal. Persze Rasmus-nak kicsit könnyebb ezt elérni, mint egy átlag földi halandónak, de akkor is jó tudni, hogy lehetséges.

Nem bántam meg, hogy benéztem Angie Webchick Byron előadására, amely bemutatta SimpleTest rendsztert. Ez az egy óra ráfordítás bőven megtérül majd, ebben biztos vagyok. Különösen, hogy a D7-től kötelező lesz az automatizált tesztelés. És a hangulat természetesen webchick-esen vidám volt :)

A Mametracker ismertető viszont kissé csalódást okozott. Sajnos sok külső eszközre van szüksége (python, python kiegészítők, C-ben írt modulok, stb...). Ráadásul nagyon lassú. A fejelsztője szerint kb. 950 node klasszifikációja kb.2 percig tartott a notebookján. Ez túl lassú egy éles használathoz szerintem.

Az esti buli és wecome drink is jópofa volt, csak a kiszolgálás volt szánalmas: egy bazi nagy sorban állt mindenki, ahol a piát osztották :)

UPDATE:
Az első nap képei

Milyen modult fejlesszek Nektek?

Nagyon sokat köszönhetek a Drupal-nak, és szeretnék, legalább részben, visszaadni valamit a közösségnek. Mivel programozásban vagyok járatos, a legcélszerűbb, ha készítek egy modult, és mindenki számára letölthetővé teszem a drupal.org-on. Azaz elkészítem első drupal contrib modulom.

Több ötletem is van, olyan funkciókkal, amikre nekem volt szükségerm valamikor, de nem találtam megfelelő kész modult.

Azért, hogy ebből a dolgoból, a lehető legtöbbet hozzam ki, azaz a Drupal közösség számára a lehető leghasznosabb dolgot készíthessem el, szeretném ha Ti döntenétek el, mit valósítsak meg contrib modul formájában.

Az ötleteim dióhéjban:

1. Látogatottsági és feed olvasottsági statisztika

Minden oldalletöltést naplóz a modul és egy AwStats-hoz hasonló táblázatban megmutatja a látogatottságot napi, heti, havi, évi bontásban. Emelett a feed-ek olvasottságát is naplózza és arról is mutat egy statisztikai oldalt. Néhány blokkot is biztosít a modul, egy például a feedburner widget-hez hasonlóan a feed-ekre feliratkozott olvasók számát jelenítené meg. Természetesen minden információ megjelenítése jogosultsághoz kötött, így csak azok látják akiknek erre jogot ad az oldalgazda.

2. Blokkok gyorstárazási (cache) paramétereinek szerkeszthetővé tétele

Nagy örömömre szolgált mikor megtudtam, hogy a Drupal 6-ban a blokkok gyorstárazása az egyszerű ki/be állapotnál lényegesen fejlettebb lesz: kinek és meddig mutassunk gyorstárazott információt. Lássuk be, a Drupal nem a sebességéről híres, így erre nagy szükség van.

Viszont döbbent arccal fogadtam, hogy a finomhangolást nem lehet az admin felületen elvégezni, csakis a blokkot biztosító modul fejlesztője szabályozhatja a gyrstárazási paramétereket. Szerintem ez rossz megközelítés, nem csak a blokk tartalmától, hanem a weboldal típusától is függ, hogy ezeket hogyan érdemes beállítani.

A modul egyszerűen egy admin felületet biztosít, ahol ezeket a paramétereket átállíthatjuk.

3. Képgaléria tömeges importálási lehetőséggel

Itt a nyár, az ember sokat utazik és közben kattintgatja a fényképezőt. Nagy mennyiségű kép gyűlik össze ilyenkor. Szeretnék készíteni egy olyan képgaléria megoldást, amely lehetővé teszi hogy egy zip fájl feltöltésével automatikusan importálásra kerüljenek a benne lévő képek. A feltöltés történhet webes felületen, vagy közvetlenül a tárhelyre pl. FTP-vel.

Emellett jónéhány egyéb dologra is szükség lehet: hozzáférés szabályozás jogosultságokkal, dátum szerinti galériák, hozzászólás és szavazás (a képek node-ként élenk), több méret egy képhez, esetleg EXIF adatok kinyerése.

4. Form builder adatbázis sémából

Ez egy meglehetősen régi ötlet: a szoftver fejlesztőket segítsük egy olyan eszközzel, amely a már meglévő adatbázis séméhoz automatikusan generál minden táblához listázó, beszúró, szerkesztő és törlő űrlapot.

Alapvetően hasznos segítség, meggyorsítja a munkát. Általános PHP megoldást már készítettem, ez volt a diplomamunkám. Most készítenék egy teljes mértékben Drupal-ra szabott megoldást. Több kérdés is felmerül a feladat kapcsán, a legfontosabb hogy kódgenerálással vagy API használatával jöjjenek létre a megfelelő űrlapok. A jobb testreszabhatóság miatt a kódgenerálás tűnik célravezetőbbnek, de az API-t sem vetem el első körben. Ez további kutatást igényel.

5. Felhasználói aktivitás naplózása IP szinten

A Drupal közösségi oldalakban a legerősebb. De valóban nagy forgalmú közösségi oldalak esetében a visszaélés (spam,flood,stb…) reális veszély. A modul minden regisztrált felhasználó minden tevékenységét (regisztráció, bejelentkezés, tartalom és hozzászólás beküldés, szavazás) naplózná és, hogy ez az akció milyen IP címről történt. Ennek segítségével kideríthető, hogy kik azok akik több különböző felasználálói névvel regisztráltak az oldalra, és az IP alapú tiltás hatékonyabb eszközzé válhatna.


Ennek a postnak a hozzászólásaiban várom a „szavazatokat”, hogy melyik feladatba vágjak bele. Emellett persze jöhetnek avaslatok, hogy a fenti modulokat hogyan lehetne még jobbá, használhatóbbá tenni.

A hozzászóláshoz nem kell (nem is lehet) regisztrálni, az email címeket bizalmasan kezelem, senkinek nem adom oda, és reklámot sem küldök.

Most lelépek a Szegedi konferenciára és maradok a Code Sprint-en is. Valószínüleg ott nekifogok a munkának, ha valakinek van kedve, csatlakozhat.

Pitlane widget

Nemrég összedobtam a Pitlane.hu-hoz egy weboldalakba beilleszthető JS alapú widget-et. Ilyet még nem csináltam, jó szórakozás volt összehozni: a feladatban volt egy kis JavaScript, némi CSS és persze PHP is.

Tehát, a beépítendő kód valahogy így néz ki:

<script type="text/javascript"><!--
var pitlane_widget_items = 7;
var pitlane_widget_width = 510;
var pitlane_widget_border = "617D1F";
var pitlane_widget_background = "EEEEEE";
var pitlane_widget_link = "D17921";
var pitlane_widget_link_hover = "975719";
var pitlane_widget_font_size = "10";
//-->
</script>
<script type="text/javascript" src="http://pitlane.hu/widget/widget.js"></script>

A widget.js mindössze annyit tesz, hogy beállítja a meg nem határozott változók default értékeit, majd egy újabb javascript-et emel be. Ezt az új JS-t viszont már szerver oldalon, egy PHP szkript generálja, amely GET paraméterként megkapja a fent beállított adatokat. Ez a PHP által generált JS nem tartalmaz mást, mint egy nagy document.write()-ot.

A kimenet pedig egy SCRIPT tag és néhány egymásbaágyazott DIV. Tehettem volna IFRAME-be is, de akkor kötött lenne a magassága a doboznak, én pedig mindenképpen dinamikus magasságú dobozt szerettem volna. Így viszont volt egy kis gond a karakterkódolásokkal, de a PHP htmlentities függvénye megoldotta ezt is.

Nem maradt más hátra, mint egy demó:

Pitlane.hu - Tiéd a pálya!

Az F1világ.hu kapott egy újabb kistestvért, Pitlane.hu néven.

Eredetileg csak egy modult akartunk a híroldalra, ahova a felhasználók feltölthetnek vicces képeket, vagy a képek alá humoros megjegyzéseket írhatnak. Majd kitaláltunk, hogy a videókat sem kéne kihagyni a dologból. Persze mindezt hozzászólásokkal és szavazással fűszerezve. Itt már látszott, hogy nem modul lesz, hanem önálló közösségi website.

A háttérben természetesen a Drupal 6-os verziója fut, hiszen ez roppant testehzálló feladat neki. A szavazórendszert a VotingAPI és a Fivestar modulok adják, az URL-ek olvashatóságát a Pathauto biztosítja, a tartalomtípusok pedig egyedi fejlesztésűek. Itt-ott használunk Views-t is, de ezeket jobb szeretem saját kóddal megoldani.

A látványtervből a drupal theme-et, ZEN alapokon, Ámon Tamás követte el. Köszönet érte!

A "Tiéd a pálya!" szlogent pedig én találtam ki :)

Lényeg a lényeg, elkészült az oldal és tegnap rajtolt, a fogadtatás pedig jobb, mint amire számíthattunk. Kiváncsi vagyok, hova fejlődik majd az oldal.

Oldalak

Feliratkozás Prunk-Éger Edgár RSS csatornájára