Mi a baj a Drupaloddal

531 views

Published on

A 2012-es Drupal Hetvegen tartott eloadasom bemutatja a legtipikusabb Drupalos hibakat es hogy hogyan lehet kikerulni oket.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Mi a baj a Drupaloddal

  1. 1. MI A BAJ A DRUPALODDAL?Kizárólag mások által gyakran elkövetett hibák
  2. 2. RÓLAMDianiska BalázsAcquia tanácsadó154 946 km, 13 ország, 37 város
  3. 3. AZ ACQUIA NETWORKDrupal supportDrupalra optimalizált hostingA Drupal terjesztését segíti Drupal Commons Drupal Gardens (drupalgardens.com) Dev desktop
  4. 4. MIT CSINÁLUNKFejlesztőcsapatok beindítása (training)Architektúra tervezésProject felfedezés (discovery)AuditálásSebesség elemzésTanácsadás
  5. 5. AZ EGYENSÚLYAz oldal építésébe ÉS fenntartásába fektetett idő ésenergiaAz implementált funkcionalitásA kliens igényei
  6. 6. TARTALOMSTRUKTÚRA“Van ez a promóciós cikk tartalomtípus, ez ugyanazmint a cikk, csak a lista tetején jelenik meg”A szerkesztők nem tudják milyen tartalomtípustkészítsenekMire is való a tartalomtípus
  7. 7. MEGJELENÍTÉSKülönböző nézeteket hoztunk létre helyszínenként:nezet_budapest, nezet_becs stbTöbb nézet helyett konteksztuál filter (thxDenesSzabo)PHP kód felhasználása blokkok láthatóságára
  8. 8. MODULOKHook-ok illetlen használata (kell ez a node később,ezért betöltjük a preprocess_page-ben)Csak azért mert van rá modul, még nem kellhasználniPHP kód adatbázisból futtatvaTúl sok modul
  9. 9. A KERÉK ÚJRA FELTALÁSA“Írtunk egy modult amivel űrlapokat lehet létrehozniés az admin felhasználónak emialt küld”“A modul kitesz egy rejtett token-t spam ellen”“Szeretném megváltoztatni ezt az űrlapot, ezertbeleírtam a template-be”hook_VALAMI_alter használata
  10. 10. TÜNETEKCoding standard be nem tartásaNem megfelelő hook-ok használataAPI-k figyelmen kívül hagyása
  11. 11. CODING STANDARDA kódolási stílus nem betartása igénytelenség amitipikusan átterjed a kód minőségére is.Olvashatatlanság Nehéz auditálás, átadhatóság Hiányos dokumentáció Coder modul sem tud segíteni
  12. 12. NEM MEGFELELŐ HOOK- OKÉrzékeny hook-okban csúnya dolgok történnek hook_(pre)process_page, hook_(pre)process_html hook_init, hook_boot, hook_exit hook_node_view, hook_block_view
  13. 13. API NEM MEGFELELŐ HASZNÁLATASztringek ID-k lekódolva t(time())db_query vs db_select SELECT operációkrahook_form_alter vs hook_form_FORM_ID_alter
  14. 14. MINDEN KÓD A .MODULE FILE-BANNagy memory footprint, (lassú az oldal)Megoldás: ‘file’ attribútum használata hook_theme-ben hook_menu-ben
  15. 15. SMINKEK“Kellett egy node mező, ezért a template-be beleírtuka query-t”“Csak simán kiprinteljük a változót, baj?”“Kellett a colorbox könyvtár, ezért beleraktuk asminkbe.”“Kell egy extra css, beleírtuk a template-be.”Mi történne, ha átállnánk egy másik sminkre?
  16. 16. INFRASTRUKTÚRAA memcache daemont az adatbázis szerverre raktuk,végülis hasonló a feladatuk.Úgy hallottuk, hogy a mongodb meg nginx nagyongyors, ezért ezeket használjuk főleg.5 GB-os a git repo-nk ez baj?Hány file van a files könyvtárban? 1 millió. Miért haltmeg a fileszerver?
  17. 17. BIZTONSÁG“Ez az url úgyis kitalálhatatlan, ráadásul csak egymobile app használja, ezért aztán nincs is rajtaauthentikáció”“Igen, nekünk fontos, hogy bárki be tudjon ágyaznijavascriptet/iframet/youtube videókat a tartalomba”“Igen, készítettünk egy admin nézetet, de úgyis csakmi ismerjük az url-jét”
  18. 18. GYAKORI HIBÁKNem frissített modulok (hacked?)PHP szkriptek a docroot-banRossz konfiguráció (HTML tartalomban)File feltöltés nem szabalyozott (txt)Könnyű felhasználónév/jelszó
  19. 19. XSS$block[‘content’] = $node->field_name[‘und’][0][‘safe_value’];$override_url = $row->_field_data[nid][entity]->field_override_url[und][0][value];$terms[] = taxonomy_term_load($termid[tid]);$tag_names[] = $term->name;
  20. 20. CSRFfunction csrf_menu() { $items[‘mydelete’] = array( ‘page callback’ => ‘csrf_delete_node’, ‘access callback’ => TRUE, ‘title’ => ‘Delete node’, ); return $items;}
  21. 21. TÚLFEJLESZTÉS“Az elejen azt hittük, hogy többnyelvű lesz az oldal,de végül csak angol lett”“Jelenleg csak egyfajta felhasználónk van, de lehet,hogy a jövőben lesz más is, úgyhogy használjuk acontent access modult.”“Van 20 tartalomszerkesztőnk, úgyhogy az authcachemodullal gyorsítjuk számukra az oldalt”
  22. 22. MIT LEHET EZZEL KEZDENI?hacked, coder, security_review modulokFunkcionalitás anti-developer átnézese Lehetne egy view resze? Lehetne Display Suite? Panels-szel nem egyszerűbb összerakni az adott oldalt?
  23. 23. PERFORMANCEHatáresetek - cache clear all-kor mi tortenik? Mi is tortenik system_settings_form_submitkor?xhprof, new relicTudjuk egyáltalán, hogy mi a baj? 80% - 20% szabály
  24. 24. INNODBSELECT COUNT(nid) FROM node ...views litepager
  25. 25. CACHING - HOGYANNe mentsük túl sokszorAction based cache Views Content Cache Panels Hash Cache Cache Actions
  26. 26. CACHING - HOLMemcacheVarnishMySQL query cacheAPC
  27. 27. 404Drupal bootstrap kell nekiHiányzó képekfast 404 modul
  28. 28. DEPLOY“Csak felmásoljuk a kódot FTP-n a szerverre esátirányítjuk a docroot-ot apache configból. Mitértetek azon, hogy rollback?”“A fejlesztők csak lemásolják a szerveren levő kódot/adatbázist/fileokat”“Ja, igen azt a modult kicsit átírtuk.” - tipikusandrush up -y után
  29. 29. KARBANTARTÁSA honlapfejlesztés nem áll meg az átadássalA kódbázist igenis verziókövetni kell (git, svn)Backup, files folder NINCS verziókovetes alatt (“Óigen, 5 Gb a git repónk, mert hozzáfűztünk néhányvideót is. Baj?”)A karbantartás az egyik legalulbecsültebb feladatNem szabad elhanyagolni
  30. 30. KÖRNYEZETEKA fejlesztői szentháromság: dev, staging, productionKönnyen replikálhatóakVCS-bol deployolni bármelyik környezetreStaging és Production hasonlóakAd-hoc tesztkörnyezet load tesztekhez
  31. 31. KÖSZÖNÖM A FIGYELMET

×