Tècniques CSS de sempre

En Jordi em passa un post de noupe força interessant que recull tècniques CSS de tota la vida. De moment només han publicat la primera part de l’article i inclou:

  • CSS Sprites
  • CSS Rounded Corners
  • Image Replacements techniques
  • Sliding Doors
  • Image Text Wrap techniques
  • Equal Height techniques
  • Turning a list into a navigation bar
  • Marking headlines with CSS
  • CSS Shadows techniques
  • CSS Transparency
  • Various link techniques

Esperarem les properes parts a veure què hi ha de nou 😉

EyeTracking: 23 ítems a tenir en compte

Scientific Web Design: 23 Actionable Lessons from Eye-Tracking Studies

Eye-tracking studies are hot in the web design world, but it can be hard to figure out how to translate the results of these studies into real design implementations. These are a few tips from eye-tracking studies that you can use to improve the design of your webpage.

10 tips per fer pàgines accessibles

El W3C dona 10 tips per fer pàgines accessibles:

  1. Images & animations: Use the
    alt attribute to describe the function of each visual.
  2. Image maps. Use the client-side map and text for hotspots.
  3. Multimedia. Provide captioning and transcripts of audio, and descriptions of video.
  4. Hypertext links. Use text that makes sense when read out of context. For example, avoid “click here.”
  5. Page organization. Use headings, lists, and consistent structure. Use CSS for layout and style where possible.
  6. Graphs & charts. Summarize or use the longdesc attribute.
  7. Scripts, applets, & plug-ins. Provide alternative content in case active features are inaccessible or unsupported.
  8. Frames. Use the noframes element and meaningful titles.
  9. Tables. Make line-by-line reading sensible. Summarize.
  10. Check your work.
    Validate. Use tools, checklist, and guidelines at http://www.w3.org/TR/WCAG

Una pàgina que no satisfà un d’aquests tips no segueix totes les recomanacions del W3C pel que fa a l’accessibilitat web.

Com enfonsar un WordPress 2.3

Avui m’he entretingut a fer proves amb WordPress 2.3, el gestor de blogs amb el que funciona aquest seti, i després de força trastejar puc confirmar que WordPress no suporta blocs grans.

Què vol dir grans?


mysql> select count(ID) from wp_posts;
+-----------+
| count(ID) |
+-----------+
|    132872 |
+-----------+

mysql> select count(cat_ID) from wp_categories;
+---------------+
| count(cat_ID) |
+---------------+
|          2071 |
+---------------+
mysql> select count(rel_id) from wp_post2cat;

+---------------+
| count(rel_id) |
+---------------+
|        132872 |
+---------------+

Estem parlant d’un blog amb un xic més de 130.000 entrades distribuïdes en poc més de 2.000 categories, el resultat es desastrós.

El element testejat és un WordPress 2.3 amb tots els plugins desactivats i el tema per defecte, en un entorn restringit on tant sols hi havia peticions a aquest WordPress que atacava un Apache que tant sols servia aquesta web i un MySQL que tant sols contenia aquesta BD. El MySQL l’he anat reconfigurant sense èxit.

Una petició a la home o a qualsevol categoria generava una slow-query de més de 140 sg. que deixava fregit el MySQL.

El motiu, les querys són massa complexes i preveuen massa casuístiques que no tenen perquè donar-se, com per exemple un Group By que ignorava qualsevol índex i que controlava que els posts mostrats en un moment X no estiguessin relacionats en diverses categories (en el meu cas, un post = una categoria).

He toquetejat una línia del codi de WordPress per adaptar-lo a les meves necessitats i el rendiment és òptim, la línia en qüestió es troba a wp-includes/query.php i el toqueteix ha consistit en passar d’això:

$request = " SELECT $found_rows $distinct $fields FROM $wpdb->posts $join
WHERE 1=1 $where $groupby ORDER BY $orderby $limits";

a això:

 $request = " SELECT $found_rows $distinct $fields FROM $wpdb->posts $join
WHERE 1=1 $where $limits";

Òbviament, es tracta d’un cas particular i que en cap cas es pot globalitzar.

Prometo explicar-vos el resultat, però de moment he reduït fullscans del MySQL i filesorts innecessaris, de manera que les slow-querys (1 sg.) han desaparegut dels logs.