SlideShare uma empresa Scribd logo
1 de 90
Joomladagen 2014Joomladagen 2014
Bugs, patches &
fun
Peter Martin, www.db8.nl. twitter: @pe7er
Joomladagen.nl/2014 – 22+ 23 maart 2014
Joomladagen 2014Joomladagen 2014
Peter Martin
● Joomla website specialist
Marketing + Communicatie
achtergrond & technische
affiniteit
● Vrijwilliger Joomla:
– Global Moderator
– Community Leadership
Team
● Open Coffee Nijmegen
● Linux User Group Nijmegen
Interesses:
● Open Source Software
● Linux sinds 2007
(Ubuntu → Debian → Arch
Linux → Debian)
● Raspberry Pi
● Muziek (Vinyl)
● Filmhuisfilms
Website: www.db8.nl – e-mail: peter at db8.nl
LinkedIn: http://www.linkedin.com/in/pe7er – Twitter: @pe7er
Joomladagen 2014Joomladagen 2014
Overzicht Presentatie
>>> Sheets via: www.db8.nl <<<
a)Introductie
b)Bugs & Patches
c)“Mijn” bug
d)Pizza, Bugs (& Beer) & Fun
e)Bugtracker Process
f) Test, Test, 1, 2, 3
g)Demonstratie
h)Vragen?
Joomladagen 2014Joomladagen 2014
b) Bug & Patches
Joomladagen 2014Joomladagen 2014
Een software bug
● Fout in een computer
programma
– Onjuist of onverwacht
resultaat, of
onbedoelde gedrag
– Door programmeur
gemaakte fouten in de
bron code (source
code) van het
programma.
Joomladagen 2014Joomladagen 2014
Joomla bron code
index.php regel 1-30
<?php
/**
 * @package    Joomla.Site
 *
 * @copyright  Copyright (C) 2005 ­ 2013 Open Source Matters, Inc. All rights reserved.
 * @license    GNU General Public License version 2 or later; see LICENSE.txt
 */
if (version_compare(PHP_VERSION, '5.3.1', '<'))
{
die('Your host needs to use PHP 5.3.1 or higher to run this version of Joomla!');
}
/**
 * Constant that is checked in included files to prevent direct access.
 * define() is used in the installation folder rather than "const" to not error for PHP 5.2 and lower
*/
define('_JEXEC', 1);
if (file_exists(__DIR__ . '/defines.php'))
{
include_once __DIR__ . '/defines.php';
}
if (!defined('_JDEFINES'))
{
define('JPATH_BASE', __DIR__);
require_once JPATH_BASE . '/includes/defines.php';
}
Joomladagen 2014Joomladagen 2014
Bron code – kleine bug
index.php
require_once JPATH_BASE . '/includes/framework.php';
// Mark afterLoad in the profiler.
JDEBUG ? $_PROFILER­>mark('afterLoad') : null;
// Instantiate the application.
$app = Jfactory::getApplication('site');
// Initialise the application.
$app­>initialise();
                        ug
                       b
                      g           bug
                      u        bug
      bugbug          b       g
            bug      bugbug bu
               bug  bugbugbugbugbugbug
  bug   bug   bugbugbugbugbugbugbugbugb
     bug   bug bugbugbugbugbugbugbugbugbu
   bugbugbugbu gbugbugbugbugbugbugbugbugbu
  bugbugbugbug
   bugbugbugbu gbugbugbugbugbugbugbugbugbu
     bug   bug bugbugbugbugbugbugbugbugbu
  bug   bug  gbugbugbugbugbugbugbugbugb
               bug  bugbugbugbugbugbug
            bug      bugbug  bu
      bugbug          b        g
                      u         bug
                      g            bug
                       b
                        ug
Joomladagen 2014Joomladagen 2014
Bron code – grote bug
index.php
// Mark afterIntialise in the profiler.
JDEBUG ? $_PROFILER­>mark('afterInitialise') : null;
                       ""$o               o$""
                         ""$o           o$"                      o
   "$""""o                  "o         $"                 o""" $"
         "$o                "$o" $o "  $                 o$"
          "$o               $$$o$$$$o$$$$               $"
            "oooo      o "" ""$$$$$$$$""o"" oo     oooo"
             "$$$$$$oo"oo$$$o" o$$$$oo" o$$$o "o$$$$$$$
                   "$ $$$$$$$$$oo   o$$$$$$$$$o"$"
                   $ $$$   $$$$$$  o$$$$$$  "$$o"o
                  $ $$$$o  $$$$$$  $$$$$$$  $$$$o"o
                 $  $$$$$  $$$$$"   "$$$$$ $$$$$$ $
                  $o""""" """"         """ """"""$"
                 $  o$$$$$"""$$$$$"$$$$$""$$$$$ooo"o
                 $  o"$o $$$$$$$$oo$$$$$$$$o $$""  $
              oo$     "$$$$$$$$$$$$$$$$$$$$" o" o $oo
           o$$$"$ $$o"o $$$$$$$"" "$$$$$$$    o$$ $$$$o      UN BUG
         o$$$$" $ $$$$ o "$$$$$oo o$$$$$$  "o$$$$ $ $$$$$
        o$$""    $ $$$$$o" "$$$$$$$$$$$$$ o o$$$$$o$   "" $$
        $$"      $ $$$"  o"o$$$$$$$$$$$$   " "$$$ $       $$o
       o$$       "o $$    "  $$$$$$$$$$$"o    "$$ $       $$$
       $$$      oo$ $       o""$$""$$$o "      $"o$o      $$$o
      o$$$$   o$$$"o"$oo$$$$o" o     $o $$$$$oo$ $$$$o    $$$$
      $$$$   $$$$" $ $$$$$""   $$  o$$$ """$$$$"o" "$$$o  "$$$o
      $$$" o """    $ $$$oo   $$$$o" $$   o$$$"o"   """"$  o$$$
   o$"     $$$       $ "$"" o$"o"$$o$$$$  "$$"o"      o$$     "$oo
 $ "        $$o       $ "oo$"o$$$"o$o"$$$$o" o"       $$$       ""$o
$$          $$$o       "o$$o$"$$"$$o$$o$$"$$o"       $$$          ""o
             $$$        ""$$$ $$$$$$ $$$$ $"        $$$$            $$
             $$$$           $$$$"$$$o$ $""          $$$
              $$$$             "$$$ """            $$$$
              $$""                                 "$$
           oo$"                                       $ooo
          $                                             "$$
Joomladagen 2014Joomladagen 2014
Bron code – hele grote bug
index.php
// Route the application.
$app­>route();
// Mark afterRoute in the profiler.
JDEBUG ? $_PROFILER­>mark('afterRoute') : null;
     .. ..oooo.....ooo...
  .odSS4PYYYSSOOXXXXXXXXXOodbgooo.
 /SSYod$$$$SSOIIPXXXXXXXXXYYP.oo.*b.
($$Yd$$$$SSSOII:XXXXXXXX:IIoSSS$$b.Y,
 Yd$$$$SSSOII:XXXXXXXXXX:IIOOSSS$$$b
  d$$$$SSSOOI:XP"YXXXXXXXX:IIOOSSSS$$$
  Y$$$SSSOOII:XbdXXXXXP"YX:IIOOOSS$$$$)
  'Y$$$SSSOI:XXXXXXXXXbodX:IIOOSS$$$$$/
   "Y$$$SSSOI(PoTXXXXXTo)XXIIOOOSS$$$*'
     ""*Y$S(((PXXXXXXXY))dIIOSSS$$dP'
        "*'()P;XXXXXXXXY)IIOSSS$P".oS,
        (S'(P;XXXXXXXP;Y)XXYOP".oSSSSb
       (S'(P;'XXXXXXX';Y).ooooSSSSSSSS)
       (S'(P;'XXXXXXP';Y).oSSSSSSSSSSSP
       (SS'Y);YXXXXX';(Y.oSSSSSSSSSSSSP
        YSS'Y)'YXXX".(Y.oSSP.SSSSSSSSY
         YSS'"" XXX""oooSSP.SSSSSSSSY
         SSSSSS YXXX:SSSSP.SSSSSSSSY
         SSSSSP  Yxb:SSSP.S"SSSSSSP
         S(OO)S   YXb:SY    )SSSSS
         SSSSO    )YXb.I    ISSSSP
         YSSSY    I."YXXb   Y(SS)I
         )SSS(    dSSo.""*b  YSSSY
         OooSb   dSSSSP      )SSS(
                 dSSSY       OooSS
                 OooSP
Joomladagen 2014Joomladagen 2014
Bron code – “zombie bug”
index.php
// Route the application.
$app­>route();
// Mark afterRoute in the profiler.
JDEBUG ? $_PROFILER­>mark('afterRoute') : null;
                 .....                                                  
                 C C  /                                                  
                /<   /     
 ___ __________/_#__=o          
/(­ /(_________          
 )  )_      o             
/| /|       |'     |                                                   
              |     _|                                                   
              /o   __                                                   
             / '     |                         
            / /      |                                                   
           /_/______|                                                   
          (   _(    <                                                    
                                                                      
                    |    
             ________                          
             ________                 
Joomladagen 2014Joomladagen 2014
Bron code – “ninja bug”
index.php
// Route the application.
$app­>route();
// Mark afterRoute in the profiler.
JDEBUG ? $_PROFILER­>mark('afterRoute') : null;
Joomladagen 2014Joomladagen 2014
Een software patch
● Stukje software om
probleem op te lossen
– Verhelpen van
foutmelding
– Verhelpen van
beveiligingsprobleem
– Het verbeteren van de
gebruiksvriendelijkheid of
prestaties
● .diff patch
– Een bestandje dat de
verschillen met
voorgaande versie
beschrijft
Joomladagen 2014Joomladagen 2014
Foutmeldingen & patches beheren
● Bijhouden van de gemelde
fouten in de software:
– Rapporteren
– Communicatie
– Patches delen
– Status van fout
– Statistieken
● git
– Versiebeheer software
● github.com
– Opslagplaats &
versiebeheer
Joomladagen 2014Joomladagen 2014
Joomla & Patches
● Joomla 1.5 = EOL (einde
oefening)
– Geen patches
– Geen nieuwe functies
● Joomla 2.5 = LTS (Lange
termijn ondersteuning)
– Wel patches
– Geen nieuwe functies
● Joomla 3.x = STS (Korte
termijn ondersteuning)
– Wel patches
– Ook nieuwe functies
Joomladagen 2014Joomladagen 2014
c) “Mijn” Bug
Joomladagen 2014Joomladagen 2014
“Mijn” Bug
● 7 februari 2013,
rond 10:00 uur
● Joomla 3.0.3 testen voor
gebruik bij een klant
Joomladagen 2014Joomladagen 2014
Installatieprocedure, stap 3
Joomladagen 2014Joomladagen 2014
Het probleem aanmelden
● Niet echt een bug, wel verwarrend...
● 7 februari 2013, om 10:29 uur (en 35 seconden)
bug aangemeld
op Joomla's Issue Tracker:
http://joomlacode.org/gf/project/joomla/tracker/?
action=TrackerItemEdit&tracker_item_id=30077
Joomladagen 2014Joomladagen 2014
Het probleem aanmelden
Joomladagen 2014Joomladagen 2014
Werken aan een oplossing
● Lokale Joomla installatie van laatste 3.0 versie
● In Joomla's broncode zelf de functionaliteit
toegevoegd
● 7 februari 2013, 11:38 uur
mijn code toegevoegd als proof-of-concept:
http://joomlacode.org/gf/project/joomla/tracker/?
action=TrackerItemEdit&tracker_item_id=30077
Joomladagen 2014Joomladagen 2014
Werken aan een oplossing
● Februari 2013: reacties van anderen,
paar opmerkingen en suggesties
● 27 Maart 2013:
“can not download sample.php. Please zip it.”
– → Joomlacode.org accepteert uit veiligheidsoogpunt
geen .php bestanden...
● April 2013:
paar opmerkingen & suggesties
● Mei 2013:
….. niks, nada, nothing, ничего, kitu, ‫,لش شيء‬ ไม่มีอะไร
Joomladagen 2014Joomladagen 2014
Joomladagen 2014Joomladagen 2014
Werken aan een oplossing
Zaterdag 1 juni 2013:
Joomla Bug Squad Night
bij JandBeyond (internationaal Joomla congres)
in Noordwijkerhout, Nederland
http://www.youtube.com/watch?v=v6YdZJtzJxo
Joomladagen 2014Joomladagen 2014
Joomladagen 2014Joomladagen 2014
Werken aan een oplossing
Op Joomla Bug Squad Night:
– Meest recente Joomla versie (“master branch”)
geïnstalleerd vanaf GitHub
– Keuze opties bij installatie van Joomla getest
– Mijn proof-of-concept verandering geprogrammeerd
– Een “diff patch” gemaakt (dank aan Andrea Tarr!)
– De .diff patch toegevoegd aan Joomla Issue Tracker
– Biertje gedronken
Resultaat: Zaterdag 2 juni 2013, 00:30 uur
“I've created a patch 30077.patch ready to test.”
Joomladagen 2014Joomladagen 2014
Joomladagen 2014Joomladagen 2014
Werken aan een oplossing
Zaterdag 2 juni 2013, patch “30077”
00:54 uur @test (Hans Kuijpers)
00:56 uur @test (Olaf Offick)
patch tested successfully
01:05 uur @test (Mike Veeckmans)
tested succesfully #jab13
01:05 uur (Andrea Tarr)
Multiple good tests - moving to rtc
Joomladagen 2014Joomladagen 2014
Joomladagen 2014Joomladagen 2014
Werken aan een oplossing
Zaterdag 2 juni 2013, patch “30077”
01:31 uur (Michael Babker)
Merged at https://github.com/joomla/joomla-
cms/commit/37843e88ceae995ffa73f245f7abcd45d01
5cb9a
Daarna verder verbeterd door anderen:
– Generieker gemaakt: versie informatie verwijderd (Jean-Marie
Simonet)
– Betere layout voor tooltips
Joomladagen 2014Joomladagen 2014
Oplossing – Joomla 3.1.5
Joomladagen 2014Joomladagen 2014
“Mijn” Bug
Joomladagen 2014Joomladagen 2014
Joomladagen 2014Joomladagen 2014
d) Pizza, Bugs (& Beer) & Fun
Joomladagen 2014Joomladagen 2014
"Pizza, Bugs & Fun"
Vrijdag 12 juli 2013
– Wereldwijd georganiseerd
– Nederland → Eindhoven:
Josien Verreijt, Marijke Stuivenberg,
Roland Dalmulder & Peter Martin
Joomladagen 2014Joomladagen 2014
Joomladagen 2014Joomladagen 2014
Joomladay Germany 2013
● Zondag 15 september 2013
Bug Squashing und Accessibility Codesprint (David
Jardin & David Hurley)
Joomladagen 2014Joomladagen 2014
Joomladagen 2014Joomladagen 2014
Joomladay UK 2013
Zaterdag 5 oktober 2013
Joomla BugSquashing session
(Javier Gómez)
Joomladagen 2014Joomladagen 2014
Joomladagen 2014Joomladagen 2014
Joomladagen 2014Joomladagen 2014
Joomladagen 2014Joomladagen 2014
Joomladagen 2014Joomladagen 2014
Joomladagen 2014Joomladagen 2014
Joomladagen 2014Joomladagen 2014
Joomla World Conference 2013
Zaterdag 9 november 2013
Bugs, Beer & Fun
Joomladagen 2014Joomladagen 2014
e) De Bugtracker Issue Tracker
Joomladagen 2014Joomladagen 2014
Joomladagen 2014Joomladagen 2014
Joomladagen 2014Joomladagen 2014
Joomladagen 2014Joomladagen 2014
Status:
1.Open
2.Confirmed
3.Pending
4.Ready to commit
5.Fixed in SVN/GitHub
Joomladagen 2014Joomladagen 2014
BT Proces: 1. Open
● Nieuwe bug?
– Probleem te
reproduceren met Joomla
“Master Branch”?
– Rapporteren: “Add new
Tracker Item”
● Category
● Status: “Open”
● Build: “master”
● How to reproduce...
● Summary & Details
(PHP / Browser /
Database
/ Webserver)
Tracker Team
Joomladagen 2014Joomladagen 2014
BT Proces: 2. Confirmed
● Probleem bevestigd?
– Andere gebruikers
kunnen de fout
reproduceren met de
Joomla “Master
Branch”
→ patch ontwikkelen
Coding Team
Joomladagen 2014Joomladagen 2014
BT Proces: 3. Pending
● Patch voor bug beschikbaar
● Moet eerst op Joomla
“Master Branch” getest
worden:
– Test bug voor installatie
patch
– Patch installeren
– Test of probleem is
opgelost
– Test of er geen nieuwe
problemen zijn ontstaan
Testing Team
Joomladagen 2014Joomladagen 2014
BT Proces: 4. Ready to Commit
● Patch voor bug
– Twee succesvolle tests:
● Commentaar: @test
● Commentaar: @test
– Ready To Commit
(RTC) = gereed om
aan de Joomla core
code toegevoegd te
worden
Testing Team
Joomladagen 2014Joomladagen 2014
BT Proces: 5. Fixed in SVN/GitHub
● RTC → Commit Patch
= samengevoegd met
Joomla “Master
Branch”
– In volgende (sub)versie
beschikbaar in de
Joomla download van
joomla.org
PL Team +
Joomladagen 2014Joomladagen 2014
f) Test, Test, 1, 2, 3
Joomladagen 2014Joomladagen 2014
Testen – Benodigdheden
● Lokale webserver (voor Joomla)
– XAMP/MAMP/LAMP
● Git
– Distributed revision control and source code management
(soort van “Wikipedia” voor broncode)
● Joomla “Master Branch”
– Meest recente Joomla version met alle patches & nieuwe
features
– https://github.com/joomla/joomla-cms/
● Browser
– Chrome (incl Inspector) of FireFox + FireBug addon
● (Integrated Development Environment (IDE))
Joomladagen 2014Joomladagen 2014
Testen – download Joomla “Master Branch”
in /var/www/
$ git clone https://github.com/joomla/joomla­cms 
Cloning into joomla­cms...
remote: Counting objects: 381082, done.
remote: Compressing objects: 100% (128076/128076), done.
remote: Total 381082 (delta 271874), reused 357127 (delta 
249654)
Receiving objects: 100% (381082/381082), 95.79 MiB | 5.79 
MiB/s, done.
Resolving deltas: 100% (271874/271874), done.
Joomla website: /var/www/joomla­cms/
Joomladagen 2014Joomladagen 2014
Testen – Joomla installeren
● Browser
– Ga naar je lokale Joomla map http://localhost/joomla-
cms/
– Volg normale installatie procedure, maar kies:
● Sample Data: Test English (GB) Sample Data
= voorbeeld inhoud met daarin menu's met links naar alle
Joomla componenten en modules → makkelijker testen
– Verwijder bij de laatste stap de installatie folder NIET!!
Joomladagen 2014Joomladagen 2014
Testen – Joomla installeren
Joomladagen 2014Joomladagen 2014
Testen – voorbeeld
“Bug” in /administrator/components/com_banners/models/banner.php
“Hardcoded SQL” in regel 511:
$db = Jfactory::getDbo();
$db->setQuery('SELECT MAX(ordering) FROM #__banners');
$max = $db->loadResult();
Joomlacode:
[#32194] Banner model has hardcoded SQL
Joomladagen 2014Joomladagen 2014
Testen – voorbeeld
Joomladagen 2014Joomladagen 2014
Testen – voorbeeld
Joomlacode: [#32194] Banner model has hardcoded SQL
Github.com: patch [#2200]
De “hardcoded SQL“:
$db = Jfactory::getDbo();
$db->setQuery('SELECT MAX(ordering) FROM #__banners');
$max = $db->loadResult();
vervangen met Joomla's $query object:
$db = Jfactory::getDbo();
$query = $db->getQuery(true)
->select('MAX(ordering)')
->from('#__banners');
$db->setQuery($query);
$max = $db->loadResult();
Joomladagen 2014Joomladagen 2014
Testen – voorbeeld
Github: https://github.com/joomla/joomla-cms/pull/2200
Joomladagen 2014Joomladagen 2014
Testen – voorbeeld
Travis: https://travis-ci.org/joomla/joomla-cms/builds/12365303
Joomladagen 2014Joomladagen 2014
Testen – voorbeeld
Joomlacode: [#32194] Banner model has hardcoded SQL
Patch: https://github.com/joomla/joomla-cms/pull/2200.diff
Joomladagen 2014Joomladagen 2014
Testen – voorbeeld
[#32194] Banner model has hardcoded SQL
● Before:
● After:
$ curl https://github.com/joomla/joomla­cms/pull/2200.diff | git apply
% Total    % Received % Xferd  Average Speed   Time   Time     Time  Current          
                       Dload  Upload   Total  Spent    Left  Speed
100   691  100   691    0     0   1448      0 ­­:­­:­­ ­­:­­:­­ ­­:­­:­­  1930
Joomladagen 2014Joomladagen 2014
Testen – voorbeeld – git commando's
Command line:
● Controleer & vraag informatie over patch status op:
curl https://github.com/joomla/joomla-cms/pull/2200.diff | git apply --check
● Patch uitvoeren op jouw lokale Joomla installatie
curl https://github.com/joomla/joomla-cms/pull/2200.diff | git apply
● Patch verwijderen:
curl https://github.com/joomla/joomla-cms/pull/2200.diff | git apply -R
● Controleer of patch is verwijderd:
git status
# On branch master
nothing to commit (working directory clean)
Joomladagen 2014Joomladagen 2014
Testen – voorbeeld – git commando's
● “Hard reset” – verwijder alle veranderingen
git reset --hard HEAD
● Informatie over de veranderingen, commits etc
git log
git log --pretty=oneline
● Joomla “Master Branch” = heel dynamisch. Importeer
de meest recente veranderingen via:
git pull
Joomladagen 2014Joomladagen 2014
Dat was makkelijk? Toch?.....
Joomladagen 2014Joomladagen 2014
Testen zonder command line git
Joomladagen 2014Joomladagen 2014
Testen dmv component
http://docs.joomla.org/Component_Patchtester_for_Testers
Joomladagen 2014Joomladagen 2014
Testen dmv component
Joomladagen 2014Joomladagen 2014
Testen dmv component
Joomladagen 2014Joomladagen 2014
Testen dmv component
Joomladagen 2014Joomladagen 2014
Testen dmv component
Joomladagen 2014Joomladagen 2014
Testen dmv component
Joomladagen 2014Joomladagen 2014
f) Demonstratie
Joomladagen 2014Joomladagen 2014
i e
Joomladagen 2014Joomladagen 2014
Vragen?
● Presentatie beschikbaar via www.db8.nl
Peter Martin
e-mail: info at db8.nl
website: www.db8.nl
twitter: @pe7er
Joomladagen 2014Joomladagen 2014
Gebruikte foto's 1/2
● First Aid Plaster 1 - Gokhan Okur http://www.sxc.hu/photo/782775
● Moth - Therese Branton http://www.sxc.hu/photo/901692
● ASCII Bugs: http://www.asciiworld.com/
● Executivo 3 - Ivan Soares Ferrer http://www.sxc.hu/photo/215592
● Joomla Sticker + Stroopwafel photo - Paul Orwig
● Night moth - Irina Naumets http://www.sxc.hu/photo/1047402
● Bandaid Bandage - Pam Roth http://www.sxc.hu/photo/291573
● JAB13 Bug Squad, Pizza, Bugs & Fun (Eindhoven, NL), JDDE13 Bug
Squashing & JWC13 foto's - Peter Martin
● JDUK13 Bug Squashing photos - Paul Orwig
● Moth 1 - Irina Naumets http://www.sxc.hu/photo/1059828
Joomladagen 2014Joomladagen 2014
Gebruikte foto's 2/2
● Count on us - Laura Leavell http://www.sxc.hu/photo/1206290
● Checkbox - bzuko22 http://www.sxc.hu/photo/1335487
● Hands: Thumbsup - J. Henning Buchholz http://www.sxc.hu/photo/238119
● Hands: Peace - J. Henning Buchholz http://www.sxc.hu/photo/238133
● Multimeter - Maxime Perron Caissy http://www.sxc.hu/photo/498477
● mathematic formulas - Tomasz A. Poszwa http://www.sxc.hu/photo/214561
● Police protecting the demonstration - Michal Zacharzewski
http://www.sxc.hu/photo/559518
● signs signs - Jason Antony http://www.sxc.hu/photo/751034
Bronnen:
● Bug Tracking Process - Marijke Stuivenberg http://tinyurl.com/slides-PBFnl
● Werken met de Joomla Master Code - Roland Dalmulder
http://tinyurl.com/handleiding-PBFnl

Mais conteúdo relacionado

Mais procurados

Joomla backend-beheer vereenvoudigen - Joomladagen 2016
Joomla backend-beheer vereenvoudigen - Joomladagen 2016Joomla backend-beheer vereenvoudigen - Joomladagen 2016
Joomla backend-beheer vereenvoudigen - Joomladagen 2016Rick Spaan
 
Going live with a Checklist
Going live with a ChecklistGoing live with a Checklist
Going live with a ChecklistRené Kreijveld
 
Linux command-line-magic-jdnl15
Linux command-line-magic-jdnl15Linux command-line-magic-jdnl15
Linux command-line-magic-jdnl15Peter Martin
 
Versimpel beheer met Joomla modules
Versimpel beheer met Joomla modulesVersimpel beheer met Joomla modules
Versimpel beheer met Joomla modulesEmiel Kwakkel
 
Data optimaliseren voor tablet en mobiel
Data optimaliseren voor tablet en mobielData optimaliseren voor tablet en mobiel
Data optimaliseren voor tablet en mobielRené Kreijveld
 
Daarom Joomla! - Makkelijk content publiceren
Daarom Joomla! - Makkelijk content publicerenDaarom Joomla! - Makkelijk content publiceren
Daarom Joomla! - Makkelijk content publicerenSander Potjer
 
Presentatie ark extensions inline edit and mediamanagment
Presentatie ark extensions inline edit and mediamanagmentPresentatie ark extensions inline edit and mediamanagment
Presentatie ark extensions inline edit and mediamanagmentJoris Stolker
 
Een autodealer website bouwen met Form2Content
Een autodealer website bouwen met Form2ContentEen autodealer website bouwen met Form2Content
Een autodealer website bouwen met Form2ContentRené Kreijveld
 
Complexe pagina's gebruiksvriendelijk (Joomla Page Builders)
Complexe pagina's gebruiksvriendelijk (Joomla Page Builders)Complexe pagina's gebruiksvriendelijk (Joomla Page Builders)
Complexe pagina's gebruiksvriendelijk (Joomla Page Builders)Sander Potjer
 
Mijn eerste Joomla! plugin
Mijn eerste Joomla! pluginMijn eerste Joomla! plugin
Mijn eerste Joomla! pluginStudioDeOorzaak
 
Beter vindbaar met Onpage SEO - Maurice Lehr - #jd15nl
Beter vindbaar met Onpage SEO - Maurice Lehr - #jd15nlBeter vindbaar met Onpage SEO - Maurice Lehr - #jd15nl
Beter vindbaar met Onpage SEO - Maurice Lehr - #jd15nlJoomla!Days Netherlands
 
Jug010 120320-templates
Jug010 120320-templatesJug010 120320-templates
Jug010 120320-templatesHerman Peeren
 
Nllgg Presentatie 2 Februari 2008
Nllgg Presentatie 2 Februari 2008Nllgg Presentatie 2 Februari 2008
Nllgg Presentatie 2 Februari 2008Wilco Jansen
 
Joomla! gebruiksvriendelijker. 10 tips!
Joomla! gebruiksvriendelijker. 10 tips!Joomla! gebruiksvriendelijker. 10 tips!
Joomla! gebruiksvriendelijker. 10 tips!Sander Potjer
 
Joomladagen 2016: Top 10 joomla SEO bloopers
Joomladagen 2016: Top 10 joomla SEO bloopersJoomladagen 2016: Top 10 joomla SEO bloopers
Joomladagen 2016: Top 10 joomla SEO bloopersSimon Kloostra
 

Mais procurados (16)

Joomla backend-beheer vereenvoudigen - Joomladagen 2016
Joomla backend-beheer vereenvoudigen - Joomladagen 2016Joomla backend-beheer vereenvoudigen - Joomladagen 2016
Joomla backend-beheer vereenvoudigen - Joomladagen 2016
 
Going live with a Checklist
Going live with a ChecklistGoing live with a Checklist
Going live with a Checklist
 
Linux command-line-magic-jdnl15
Linux command-line-magic-jdnl15Linux command-line-magic-jdnl15
Linux command-line-magic-jdnl15
 
Versimpel beheer met Joomla modules
Versimpel beheer met Joomla modulesVersimpel beheer met Joomla modules
Versimpel beheer met Joomla modules
 
Data optimaliseren voor tablet en mobiel
Data optimaliseren voor tablet en mobielData optimaliseren voor tablet en mobiel
Data optimaliseren voor tablet en mobiel
 
Daarom Joomla! - Makkelijk content publiceren
Daarom Joomla! - Makkelijk content publicerenDaarom Joomla! - Makkelijk content publiceren
Daarom Joomla! - Makkelijk content publiceren
 
Presentatie ark extensions inline edit and mediamanagment
Presentatie ark extensions inline edit and mediamanagmentPresentatie ark extensions inline edit and mediamanagment
Presentatie ark extensions inline edit and mediamanagment
 
Een autodealer website bouwen met Form2Content
Een autodealer website bouwen met Form2ContentEen autodealer website bouwen met Form2Content
Een autodealer website bouwen met Form2Content
 
Complexe pagina's gebruiksvriendelijk (Joomla Page Builders)
Complexe pagina's gebruiksvriendelijk (Joomla Page Builders)Complexe pagina's gebruiksvriendelijk (Joomla Page Builders)
Complexe pagina's gebruiksvriendelijk (Joomla Page Builders)
 
JUGs Presentatie - #jd15nl
JUGs Presentatie - #jd15nlJUGs Presentatie - #jd15nl
JUGs Presentatie - #jd15nl
 
Mijn eerste Joomla! plugin
Mijn eerste Joomla! pluginMijn eerste Joomla! plugin
Mijn eerste Joomla! plugin
 
Beter vindbaar met Onpage SEO - Maurice Lehr - #jd15nl
Beter vindbaar met Onpage SEO - Maurice Lehr - #jd15nlBeter vindbaar met Onpage SEO - Maurice Lehr - #jd15nl
Beter vindbaar met Onpage SEO - Maurice Lehr - #jd15nl
 
Jug010 120320-templates
Jug010 120320-templatesJug010 120320-templates
Jug010 120320-templates
 
Nllgg Presentatie 2 Februari 2008
Nllgg Presentatie 2 Februari 2008Nllgg Presentatie 2 Februari 2008
Nllgg Presentatie 2 Februari 2008
 
Joomla! gebruiksvriendelijker. 10 tips!
Joomla! gebruiksvriendelijker. 10 tips!Joomla! gebruiksvriendelijker. 10 tips!
Joomla! gebruiksvriendelijker. 10 tips!
 
Joomladagen 2016: Top 10 joomla SEO bloopers
Joomladagen 2016: Top 10 joomla SEO bloopersJoomladagen 2016: Top 10 joomla SEO bloopers
Joomladagen 2016: Top 10 joomla SEO bloopers
 

Semelhante a Joomla Bugs, Patches & Fun - Joomladagen 2014

JMonitoring, powertool voor Joomla!
JMonitoring, powertool voor Joomla!JMonitoring, powertool voor Joomla!
JMonitoring, powertool voor Joomla!René Kreijveld
 
Trello, git, gitlab, gitlab-ci
Trello, git, gitlab, gitlab-ciTrello, git, gitlab, gitlab-ci
Trello, git, gitlab, gitlab-ciZhann_
 
Joomla10 Joomla15 Migratie
Joomla10 Joomla15 MigratieJoomla10 Joomla15 Migratie
Joomla10 Joomla15 MigratieWilco Jansen
 
Programmeren van Plugins voor Joomla 1.5
Programmeren van Plugins voor Joomla 1.5Programmeren van Plugins voor Joomla 1.5
Programmeren van Plugins voor Joomla 1.5Peter Martin
 
Willem van de Wetering - Master template Grip: Synchronisatie binnen Rijkswat...
Willem van de Wetering - Master template Grip: Synchronisatie binnen Rijkswat...Willem van de Wetering - Master template Grip: Synchronisatie binnen Rijkswat...
Willem van de Wetering - Master template Grip: Synchronisatie binnen Rijkswat...Relatics
 
Tussentijdse presentatie maart 2013
Tussentijdse presentatie maart 2013Tussentijdse presentatie maart 2013
Tussentijdse presentatie maart 2013Tim Ameye
 
Tussentijdse presentatie 22/11/2012
Tussentijdse presentatie 22/11/2012Tussentijdse presentatie 22/11/2012
Tussentijdse presentatie 22/11/2012Tim Ameye
 
XSPlatforms met PDM naar grote hoogte • Directie stream
XSPlatforms met PDM naar grote hoogte • Directie streamXSPlatforms met PDM naar grote hoogte • Directie stream
XSPlatforms met PDM naar grote hoogte • Directie streamEnginia
 

Semelhante a Joomla Bugs, Patches & Fun - Joomladagen 2014 (8)

JMonitoring, powertool voor Joomla!
JMonitoring, powertool voor Joomla!JMonitoring, powertool voor Joomla!
JMonitoring, powertool voor Joomla!
 
Trello, git, gitlab, gitlab-ci
Trello, git, gitlab, gitlab-ciTrello, git, gitlab, gitlab-ci
Trello, git, gitlab, gitlab-ci
 
Joomla10 Joomla15 Migratie
Joomla10 Joomla15 MigratieJoomla10 Joomla15 Migratie
Joomla10 Joomla15 Migratie
 
Programmeren van Plugins voor Joomla 1.5
Programmeren van Plugins voor Joomla 1.5Programmeren van Plugins voor Joomla 1.5
Programmeren van Plugins voor Joomla 1.5
 
Willem van de Wetering - Master template Grip: Synchronisatie binnen Rijkswat...
Willem van de Wetering - Master template Grip: Synchronisatie binnen Rijkswat...Willem van de Wetering - Master template Grip: Synchronisatie binnen Rijkswat...
Willem van de Wetering - Master template Grip: Synchronisatie binnen Rijkswat...
 
Tussentijdse presentatie maart 2013
Tussentijdse presentatie maart 2013Tussentijdse presentatie maart 2013
Tussentijdse presentatie maart 2013
 
Tussentijdse presentatie 22/11/2012
Tussentijdse presentatie 22/11/2012Tussentijdse presentatie 22/11/2012
Tussentijdse presentatie 22/11/2012
 
XSPlatforms met PDM naar grote hoogte • Directie stream
XSPlatforms met PDM naar grote hoogte • Directie streamXSPlatforms met PDM naar grote hoogte • Directie stream
XSPlatforms met PDM naar grote hoogte • Directie stream
 

Mais de Peter Martin

Developing new feature in Joomla - Joomladay UK 2016
Developing new feature in Joomla - Joomladay UK 2016Developing new feature in Joomla - Joomladay UK 2016
Developing new feature in Joomla - Joomladay UK 2016Peter Martin
 
JCE editor optimaliseren (Joomla Den Bosc­h 2016)
JCE editor optimaliseren (Joomla Den Bosc­h 2016)JCE editor optimaliseren (Joomla Den Bosc­h 2016)
JCE editor optimaliseren (Joomla Den Bosc­h 2016)Peter Martin
 
Internet of Things - Linux Usergroup Nijmegen
Internet of Things - Linux Usergroup NijmegenInternet of Things - Linux Usergroup Nijmegen
Internet of Things - Linux Usergroup NijmegenPeter Martin
 
Joomla: 10 years of progress (jd15fr)
Joomla: 10 years of progress (jd15fr)Joomla: 10 years of progress (jd15fr)
Joomla: 10 years of progress (jd15fr)Peter Martin
 
Joomla 10-jaar-vooruitgang-jdnl15
Joomla 10-jaar-vooruitgang-jdnl15Joomla 10-jaar-vooruitgang-jdnl15
Joomla 10-jaar-vooruitgang-jdnl15Peter Martin
 
GNU Radio & digitaal vliegtuig spotten
GNU Radio & digitaal vliegtuig spottenGNU Radio & digitaal vliegtuig spotten
GNU Radio & digitaal vliegtuig spottenPeter Martin
 
Help mijn website is gehackt - Joomla User Group Den Bosch 2014
Help mijn website is gehackt - Joomla User Group Den Bosch 2014Help mijn website is gehackt - Joomla User Group Den Bosch 2014
Help mijn website is gehackt - Joomla User Group Den Bosch 2014Peter Martin
 
Music Trackers - Linux Usergroup Nijmegen 2014
Music Trackers - Linux Usergroup Nijmegen 2014Music Trackers - Linux Usergroup Nijmegen 2014
Music Trackers - Linux Usergroup Nijmegen 2014Peter Martin
 
linux-commandline-magic-Joomla-World-Conference-2014
linux-commandline-magic-Joomla-World-Conference-2014linux-commandline-magic-Joomla-World-Conference-2014
linux-commandline-magic-Joomla-World-Conference-2014Peter Martin
 
How IT works - Joomladay UK 2014
How IT works - Joomladay UK 2014How IT works - Joomladay UK 2014
How IT works - Joomladay UK 2014Peter Martin
 
Developing a Joomla 3.x Component using RAD/FOF - Joomladay UK 2014
Developing a Joomla 3.x Component using RAD/FOF - Joomladay UK 2014Developing a Joomla 3.x Component using RAD/FOF - Joomladay UK 2014
Developing a Joomla 3.x Component using RAD/FOF - Joomladay UK 2014Peter Martin
 
Joomla multilingual website without 3rd party extensions - Joomladay UK 2014
Joomla multilingual website without 3rd party extensions - Joomladay UK 2014Joomla multilingual website without 3rd party extensions - Joomladay UK 2014
Joomla multilingual website without 3rd party extensions - Joomladay UK 2014Peter Martin
 
Developing a Joomla 3.x Component using RAD FOF- Part 2: Front-end + demo - J...
Developing a Joomla 3.x Component using RAD FOF- Part 2: Front-end + demo - J...Developing a Joomla 3.x Component using RAD FOF- Part 2: Front-end + demo - J...
Developing a Joomla 3.x Component using RAD FOF- Part 2: Front-end + demo - J...Peter Martin
 
Developing a Joomla 3.x Component using RAD FOF- Part 1: Back-end - Joomladay...
Developing a Joomla 3.x Component using RAD FOF- Part 1: Back-end - Joomladay...Developing a Joomla 3.x Component using RAD FOF- Part 1: Back-end - Joomladay...
Developing a Joomla 3.x Component using RAD FOF- Part 1: Back-end - Joomladay...Peter Martin
 
Troubleshooting Joomla! problems - Joomladay Germany 2014
Troubleshooting Joomla! problems - Joomladay Germany 2014Troubleshooting Joomla! problems - Joomladay Germany 2014
Troubleshooting Joomla! problems - Joomladay Germany 2014Peter Martin
 
How IT works - Joomladay Germany 2014
How IT works - Joomladay Germany 2014How IT works - Joomladay Germany 2014
How IT works - Joomladay Germany 2014Peter Martin
 
Linux Nijmegen - Webserver (LAMP stack) opzetten met VirtualbBox & Vagrant
Linux Nijmegen - Webserver (LAMP stack) opzetten met VirtualbBox & VagrantLinux Nijmegen - Webserver (LAMP stack) opzetten met VirtualbBox & Vagrant
Linux Nijmegen - Webserver (LAMP stack) opzetten met VirtualbBox & VagrantPeter Martin
 
Problemen oplossen in Joomla - Joomladagen 2014
Problemen oplossen in Joomla - Joomladagen 2014Problemen oplossen in Joomla - Joomladagen 2014
Problemen oplossen in Joomla - Joomladagen 2014Peter Martin
 
Joomla 3 Component programmeren met RAD - Joomladagen 2014
Joomla 3 Component programmeren met RAD - Joomladagen 2014Joomla 3 Component programmeren met RAD - Joomladagen 2014
Joomla 3 Component programmeren met RAD - Joomladagen 2014Peter Martin
 
Basis Linux (aan de hand van LPIC-1)
Basis Linux (aan de hand van LPIC-1)Basis Linux (aan de hand van LPIC-1)
Basis Linux (aan de hand van LPIC-1)Peter Martin
 

Mais de Peter Martin (20)

Developing new feature in Joomla - Joomladay UK 2016
Developing new feature in Joomla - Joomladay UK 2016Developing new feature in Joomla - Joomladay UK 2016
Developing new feature in Joomla - Joomladay UK 2016
 
JCE editor optimaliseren (Joomla Den Bosc­h 2016)
JCE editor optimaliseren (Joomla Den Bosc­h 2016)JCE editor optimaliseren (Joomla Den Bosc­h 2016)
JCE editor optimaliseren (Joomla Den Bosc­h 2016)
 
Internet of Things - Linux Usergroup Nijmegen
Internet of Things - Linux Usergroup NijmegenInternet of Things - Linux Usergroup Nijmegen
Internet of Things - Linux Usergroup Nijmegen
 
Joomla: 10 years of progress (jd15fr)
Joomla: 10 years of progress (jd15fr)Joomla: 10 years of progress (jd15fr)
Joomla: 10 years of progress (jd15fr)
 
Joomla 10-jaar-vooruitgang-jdnl15
Joomla 10-jaar-vooruitgang-jdnl15Joomla 10-jaar-vooruitgang-jdnl15
Joomla 10-jaar-vooruitgang-jdnl15
 
GNU Radio & digitaal vliegtuig spotten
GNU Radio & digitaal vliegtuig spottenGNU Radio & digitaal vliegtuig spotten
GNU Radio & digitaal vliegtuig spotten
 
Help mijn website is gehackt - Joomla User Group Den Bosch 2014
Help mijn website is gehackt - Joomla User Group Den Bosch 2014Help mijn website is gehackt - Joomla User Group Den Bosch 2014
Help mijn website is gehackt - Joomla User Group Den Bosch 2014
 
Music Trackers - Linux Usergroup Nijmegen 2014
Music Trackers - Linux Usergroup Nijmegen 2014Music Trackers - Linux Usergroup Nijmegen 2014
Music Trackers - Linux Usergroup Nijmegen 2014
 
linux-commandline-magic-Joomla-World-Conference-2014
linux-commandline-magic-Joomla-World-Conference-2014linux-commandline-magic-Joomla-World-Conference-2014
linux-commandline-magic-Joomla-World-Conference-2014
 
How IT works - Joomladay UK 2014
How IT works - Joomladay UK 2014How IT works - Joomladay UK 2014
How IT works - Joomladay UK 2014
 
Developing a Joomla 3.x Component using RAD/FOF - Joomladay UK 2014
Developing a Joomla 3.x Component using RAD/FOF - Joomladay UK 2014Developing a Joomla 3.x Component using RAD/FOF - Joomladay UK 2014
Developing a Joomla 3.x Component using RAD/FOF - Joomladay UK 2014
 
Joomla multilingual website without 3rd party extensions - Joomladay UK 2014
Joomla multilingual website without 3rd party extensions - Joomladay UK 2014Joomla multilingual website without 3rd party extensions - Joomladay UK 2014
Joomla multilingual website without 3rd party extensions - Joomladay UK 2014
 
Developing a Joomla 3.x Component using RAD FOF- Part 2: Front-end + demo - J...
Developing a Joomla 3.x Component using RAD FOF- Part 2: Front-end + demo - J...Developing a Joomla 3.x Component using RAD FOF- Part 2: Front-end + demo - J...
Developing a Joomla 3.x Component using RAD FOF- Part 2: Front-end + demo - J...
 
Developing a Joomla 3.x Component using RAD FOF- Part 1: Back-end - Joomladay...
Developing a Joomla 3.x Component using RAD FOF- Part 1: Back-end - Joomladay...Developing a Joomla 3.x Component using RAD FOF- Part 1: Back-end - Joomladay...
Developing a Joomla 3.x Component using RAD FOF- Part 1: Back-end - Joomladay...
 
Troubleshooting Joomla! problems - Joomladay Germany 2014
Troubleshooting Joomla! problems - Joomladay Germany 2014Troubleshooting Joomla! problems - Joomladay Germany 2014
Troubleshooting Joomla! problems - Joomladay Germany 2014
 
How IT works - Joomladay Germany 2014
How IT works - Joomladay Germany 2014How IT works - Joomladay Germany 2014
How IT works - Joomladay Germany 2014
 
Linux Nijmegen - Webserver (LAMP stack) opzetten met VirtualbBox & Vagrant
Linux Nijmegen - Webserver (LAMP stack) opzetten met VirtualbBox & VagrantLinux Nijmegen - Webserver (LAMP stack) opzetten met VirtualbBox & Vagrant
Linux Nijmegen - Webserver (LAMP stack) opzetten met VirtualbBox & Vagrant
 
Problemen oplossen in Joomla - Joomladagen 2014
Problemen oplossen in Joomla - Joomladagen 2014Problemen oplossen in Joomla - Joomladagen 2014
Problemen oplossen in Joomla - Joomladagen 2014
 
Joomla 3 Component programmeren met RAD - Joomladagen 2014
Joomla 3 Component programmeren met RAD - Joomladagen 2014Joomla 3 Component programmeren met RAD - Joomladagen 2014
Joomla 3 Component programmeren met RAD - Joomladagen 2014
 
Basis Linux (aan de hand van LPIC-1)
Basis Linux (aan de hand van LPIC-1)Basis Linux (aan de hand van LPIC-1)
Basis Linux (aan de hand van LPIC-1)
 

Joomla Bugs, Patches & Fun - Joomladagen 2014

  • 1. Joomladagen 2014Joomladagen 2014 Bugs, patches & fun Peter Martin, www.db8.nl. twitter: @pe7er Joomladagen.nl/2014 – 22+ 23 maart 2014
  • 2. Joomladagen 2014Joomladagen 2014 Peter Martin ● Joomla website specialist Marketing + Communicatie achtergrond & technische affiniteit ● Vrijwilliger Joomla: – Global Moderator – Community Leadership Team ● Open Coffee Nijmegen ● Linux User Group Nijmegen Interesses: ● Open Source Software ● Linux sinds 2007 (Ubuntu → Debian → Arch Linux → Debian) ● Raspberry Pi ● Muziek (Vinyl) ● Filmhuisfilms Website: www.db8.nl – e-mail: peter at db8.nl LinkedIn: http://www.linkedin.com/in/pe7er – Twitter: @pe7er
  • 3. Joomladagen 2014Joomladagen 2014 Overzicht Presentatie >>> Sheets via: www.db8.nl <<< a)Introductie b)Bugs & Patches c)“Mijn” bug d)Pizza, Bugs (& Beer) & Fun e)Bugtracker Process f) Test, Test, 1, 2, 3 g)Demonstratie h)Vragen?
  • 5. Joomladagen 2014Joomladagen 2014 Een software bug ● Fout in een computer programma – Onjuist of onverwacht resultaat, of onbedoelde gedrag – Door programmeur gemaakte fouten in de bron code (source code) van het programma.
  • 6. Joomladagen 2014Joomladagen 2014 Joomla bron code index.php regel 1-30 <?php /**  * @package    Joomla.Site  *  * @copyright  Copyright (C) 2005 ­ 2013 Open Source Matters, Inc. All rights reserved.  * @license    GNU General Public License version 2 or later; see LICENSE.txt  */ if (version_compare(PHP_VERSION, '5.3.1', '<')) { die('Your host needs to use PHP 5.3.1 or higher to run this version of Joomla!'); } /**  * Constant that is checked in included files to prevent direct access.  * define() is used in the installation folder rather than "const" to not error for PHP 5.2 and lower */ define('_JEXEC', 1); if (file_exists(__DIR__ . '/defines.php')) { include_once __DIR__ . '/defines.php'; } if (!defined('_JDEFINES')) { define('JPATH_BASE', __DIR__); require_once JPATH_BASE . '/includes/defines.php'; }
  • 7. Joomladagen 2014Joomladagen 2014 Bron code – kleine bug index.php require_once JPATH_BASE . '/includes/framework.php'; // Mark afterLoad in the profiler. JDEBUG ? $_PROFILER­>mark('afterLoad') : null; // Instantiate the application. $app = Jfactory::getApplication('site'); // Initialise the application. $app­>initialise();                         ug                        b                       g           bug                       u        bug       bugbug          b       g             bug      bugbug bu                bug  bugbugbugbugbugbug   bug   bug   bugbugbugbugbugbugbugbugb      bug   bug bugbugbugbugbugbugbugbugbu    bugbugbugbu gbugbugbugbugbugbugbugbugbu   bugbugbugbug    bugbugbugbu gbugbugbugbugbugbugbugbugbu      bug   bug bugbugbugbugbugbugbugbugbu   bug   bug  gbugbugbugbugbugbugbugbugb                bug  bugbugbugbugbugbug             bug      bugbug  bu       bugbug          b        g                       u         bug                       g            bug                        b                         ug
  • 8. Joomladagen 2014Joomladagen 2014 Bron code – grote bug index.php // Mark afterIntialise in the profiler. JDEBUG ? $_PROFILER­>mark('afterInitialise') : null;                        ""$o               o$""                          ""$o           o$"                      o    "$""""o                  "o         $"                 o""" $"          "$o                "$o" $o "  $                 o$"           "$o               $$$o$$$$o$$$$               $"             "oooo      o "" ""$$$$$$$$""o"" oo     oooo"              "$$$$$$oo"oo$$$o" o$$$$oo" o$$$o "o$$$$$$$                    "$ $$$$$$$$$oo   o$$$$$$$$$o"$"                    $ $$$   $$$$$$  o$$$$$$  "$$o"o                   $ $$$$o  $$$$$$  $$$$$$$  $$$$o"o                  $  $$$$$  $$$$$"   "$$$$$ $$$$$$ $                   $o""""" """"         """ """"""$"                  $  o$$$$$"""$$$$$"$$$$$""$$$$$ooo"o                  $  o"$o $$$$$$$$oo$$$$$$$$o $$""  $               oo$     "$$$$$$$$$$$$$$$$$$$$" o" o $oo            o$$$"$ $$o"o $$$$$$$"" "$$$$$$$    o$$ $$$$o      UN BUG          o$$$$" $ $$$$ o "$$$$$oo o$$$$$$  "o$$$$ $ $$$$$         o$$""    $ $$$$$o" "$$$$$$$$$$$$$ o o$$$$$o$   "" $$         $$"      $ $$$"  o"o$$$$$$$$$$$$   " "$$$ $       $$o        o$$       "o $$    "  $$$$$$$$$$$"o    "$$ $       $$$        $$$      oo$ $       o""$$""$$$o "      $"o$o      $$$o       o$$$$   o$$$"o"$oo$$$$o" o     $o $$$$$oo$ $$$$o    $$$$       $$$$   $$$$" $ $$$$$""   $$  o$$$ """$$$$"o" "$$$o  "$$$o       $$$" o """    $ $$$oo   $$$$o" $$   o$$$"o"   """"$  o$$$    o$"     $$$       $ "$"" o$"o"$$o$$$$  "$$"o"      o$$     "$oo  $ "        $$o       $ "oo$"o$$$"o$o"$$$$o" o"       $$$       ""$o $$          $$$o       "o$$o$"$$"$$o$$o$$"$$o"       $$$          ""o              $$$        ""$$$ $$$$$$ $$$$ $"        $$$$            $$              $$$$           $$$$"$$$o$ $""          $$$               $$$$             "$$$ """            $$$$               $$""                                 "$$            oo$"                                       $ooo           $                                             "$$
  • 9. Joomladagen 2014Joomladagen 2014 Bron code – hele grote bug index.php // Route the application. $app­>route(); // Mark afterRoute in the profiler. JDEBUG ? $_PROFILER­>mark('afterRoute') : null;      .. ..oooo.....ooo...   .odSS4PYYYSSOOXXXXXXXXXOodbgooo.  /SSYod$$$$SSOIIPXXXXXXXXXYYP.oo.*b. ($$Yd$$$$SSSOII:XXXXXXXX:IIoSSS$$b.Y,  Yd$$$$SSSOII:XXXXXXXXXX:IIOOSSS$$$b   d$$$$SSSOOI:XP"YXXXXXXXX:IIOOSSSS$$$   Y$$$SSSOOII:XbdXXXXXP"YX:IIOOOSS$$$$)   'Y$$$SSSOI:XXXXXXXXXbodX:IIOOSS$$$$$/    "Y$$$SSSOI(PoTXXXXXTo)XXIIOOOSS$$$*'      ""*Y$S(((PXXXXXXXY))dIIOSSS$$dP'         "*'()P;XXXXXXXXY)IIOSSS$P".oS,         (S'(P;XXXXXXXP;Y)XXYOP".oSSSSb        (S'(P;'XXXXXXX';Y).ooooSSSSSSSS)        (S'(P;'XXXXXXP';Y).oSSSSSSSSSSSP        (SS'Y);YXXXXX';(Y.oSSSSSSSSSSSSP         YSS'Y)'YXXX".(Y.oSSP.SSSSSSSSY          YSS'"" XXX""oooSSP.SSSSSSSSY          SSSSSS YXXX:SSSSP.SSSSSSSSY          SSSSSP  Yxb:SSSP.S"SSSSSSP          S(OO)S   YXb:SY    )SSSSS          SSSSO    )YXb.I    ISSSSP          YSSSY    I."YXXb   Y(SS)I          )SSS(    dSSo.""*b  YSSSY          OooSb   dSSSSP      )SSS(                  dSSSY       OooSS                  OooSP
  • 10. Joomladagen 2014Joomladagen 2014 Bron code – “zombie bug” index.php // Route the application. $app­>route(); // Mark afterRoute in the profiler. JDEBUG ? $_PROFILER­>mark('afterRoute') : null;                  .....                                                                    C C  /                                                                   /<   /       ___ __________/_#__=o           /(­ /(_________            )  )_      o              /| /|       |'     |                                                                  |     _|                                                                  /o   __                                                                 / '     |                                      / /      |                                                               /_/______|                                                              (   _(    <                                                                                                                                                |                  ________                                        ________                 
  • 11. Joomladagen 2014Joomladagen 2014 Bron code – “ninja bug” index.php // Route the application. $app­>route(); // Mark afterRoute in the profiler. JDEBUG ? $_PROFILER­>mark('afterRoute') : null;
  • 12. Joomladagen 2014Joomladagen 2014 Een software patch ● Stukje software om probleem op te lossen – Verhelpen van foutmelding – Verhelpen van beveiligingsprobleem – Het verbeteren van de gebruiksvriendelijkheid of prestaties ● .diff patch – Een bestandje dat de verschillen met voorgaande versie beschrijft
  • 13. Joomladagen 2014Joomladagen 2014 Foutmeldingen & patches beheren ● Bijhouden van de gemelde fouten in de software: – Rapporteren – Communicatie – Patches delen – Status van fout – Statistieken ● git – Versiebeheer software ● github.com – Opslagplaats & versiebeheer
  • 14. Joomladagen 2014Joomladagen 2014 Joomla & Patches ● Joomla 1.5 = EOL (einde oefening) – Geen patches – Geen nieuwe functies ● Joomla 2.5 = LTS (Lange termijn ondersteuning) – Wel patches – Geen nieuwe functies ● Joomla 3.x = STS (Korte termijn ondersteuning) – Wel patches – Ook nieuwe functies
  • 16. Joomladagen 2014Joomladagen 2014 “Mijn” Bug ● 7 februari 2013, rond 10:00 uur ● Joomla 3.0.3 testen voor gebruik bij een klant
  • 18. Joomladagen 2014Joomladagen 2014 Het probleem aanmelden ● Niet echt een bug, wel verwarrend... ● 7 februari 2013, om 10:29 uur (en 35 seconden) bug aangemeld op Joomla's Issue Tracker: http://joomlacode.org/gf/project/joomla/tracker/? action=TrackerItemEdit&tracker_item_id=30077
  • 20. Joomladagen 2014Joomladagen 2014 Werken aan een oplossing ● Lokale Joomla installatie van laatste 3.0 versie ● In Joomla's broncode zelf de functionaliteit toegevoegd ● 7 februari 2013, 11:38 uur mijn code toegevoegd als proof-of-concept: http://joomlacode.org/gf/project/joomla/tracker/? action=TrackerItemEdit&tracker_item_id=30077
  • 21. Joomladagen 2014Joomladagen 2014 Werken aan een oplossing ● Februari 2013: reacties van anderen, paar opmerkingen en suggesties ● 27 Maart 2013: “can not download sample.php. Please zip it.” – → Joomlacode.org accepteert uit veiligheidsoogpunt geen .php bestanden... ● April 2013: paar opmerkingen & suggesties ● Mei 2013: ….. niks, nada, nothing, ничего, kitu, ‫,لش شيء‬ ไม่มีอะไร
  • 23. Joomladagen 2014Joomladagen 2014 Werken aan een oplossing Zaterdag 1 juni 2013: Joomla Bug Squad Night bij JandBeyond (internationaal Joomla congres) in Noordwijkerhout, Nederland http://www.youtube.com/watch?v=v6YdZJtzJxo
  • 25. Joomladagen 2014Joomladagen 2014 Werken aan een oplossing Op Joomla Bug Squad Night: – Meest recente Joomla versie (“master branch”) geïnstalleerd vanaf GitHub – Keuze opties bij installatie van Joomla getest – Mijn proof-of-concept verandering geprogrammeerd – Een “diff patch” gemaakt (dank aan Andrea Tarr!) – De .diff patch toegevoegd aan Joomla Issue Tracker – Biertje gedronken Resultaat: Zaterdag 2 juni 2013, 00:30 uur “I've created a patch 30077.patch ready to test.”
  • 27. Joomladagen 2014Joomladagen 2014 Werken aan een oplossing Zaterdag 2 juni 2013, patch “30077” 00:54 uur @test (Hans Kuijpers) 00:56 uur @test (Olaf Offick) patch tested successfully 01:05 uur @test (Mike Veeckmans) tested succesfully #jab13 01:05 uur (Andrea Tarr) Multiple good tests - moving to rtc
  • 29. Joomladagen 2014Joomladagen 2014 Werken aan een oplossing Zaterdag 2 juni 2013, patch “30077” 01:31 uur (Michael Babker) Merged at https://github.com/joomla/joomla- cms/commit/37843e88ceae995ffa73f245f7abcd45d01 5cb9a Daarna verder verbeterd door anderen: – Generieker gemaakt: versie informatie verwijderd (Jean-Marie Simonet) – Betere layout voor tooltips
  • 33. Joomladagen 2014Joomladagen 2014 d) Pizza, Bugs (& Beer) & Fun
  • 34. Joomladagen 2014Joomladagen 2014 "Pizza, Bugs & Fun" Vrijdag 12 juli 2013 – Wereldwijd georganiseerd – Nederland → Eindhoven: Josien Verreijt, Marijke Stuivenberg, Roland Dalmulder & Peter Martin
  • 36. Joomladagen 2014Joomladagen 2014 Joomladay Germany 2013 ● Zondag 15 september 2013 Bug Squashing und Accessibility Codesprint (David Jardin & David Hurley)
  • 38. Joomladagen 2014Joomladagen 2014 Joomladay UK 2013 Zaterdag 5 oktober 2013 Joomla BugSquashing session (Javier Gómez)
  • 45. Joomladagen 2014Joomladagen 2014 Joomla World Conference 2013 Zaterdag 9 november 2013 Bugs, Beer & Fun
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54. Joomladagen 2014Joomladagen 2014 e) De Bugtracker Issue Tracker
  • 59. Joomladagen 2014Joomladagen 2014 BT Proces: 1. Open ● Nieuwe bug? – Probleem te reproduceren met Joomla “Master Branch”? – Rapporteren: “Add new Tracker Item” ● Category ● Status: “Open” ● Build: “master” ● How to reproduce... ● Summary & Details (PHP / Browser / Database / Webserver) Tracker Team
  • 60. Joomladagen 2014Joomladagen 2014 BT Proces: 2. Confirmed ● Probleem bevestigd? – Andere gebruikers kunnen de fout reproduceren met de Joomla “Master Branch” → patch ontwikkelen Coding Team
  • 61. Joomladagen 2014Joomladagen 2014 BT Proces: 3. Pending ● Patch voor bug beschikbaar ● Moet eerst op Joomla “Master Branch” getest worden: – Test bug voor installatie patch – Patch installeren – Test of probleem is opgelost – Test of er geen nieuwe problemen zijn ontstaan Testing Team
  • 62. Joomladagen 2014Joomladagen 2014 BT Proces: 4. Ready to Commit ● Patch voor bug – Twee succesvolle tests: ● Commentaar: @test ● Commentaar: @test – Ready To Commit (RTC) = gereed om aan de Joomla core code toegevoegd te worden Testing Team
  • 63. Joomladagen 2014Joomladagen 2014 BT Proces: 5. Fixed in SVN/GitHub ● RTC → Commit Patch = samengevoegd met Joomla “Master Branch” – In volgende (sub)versie beschikbaar in de Joomla download van joomla.org PL Team +
  • 64. Joomladagen 2014Joomladagen 2014 f) Test, Test, 1, 2, 3
  • 65. Joomladagen 2014Joomladagen 2014 Testen – Benodigdheden ● Lokale webserver (voor Joomla) – XAMP/MAMP/LAMP ● Git – Distributed revision control and source code management (soort van “Wikipedia” voor broncode) ● Joomla “Master Branch” – Meest recente Joomla version met alle patches & nieuwe features – https://github.com/joomla/joomla-cms/ ● Browser – Chrome (incl Inspector) of FireFox + FireBug addon ● (Integrated Development Environment (IDE))
  • 66. Joomladagen 2014Joomladagen 2014 Testen – download Joomla “Master Branch” in /var/www/ $ git clone https://github.com/joomla/joomla­cms  Cloning into joomla­cms... remote: Counting objects: 381082, done. remote: Compressing objects: 100% (128076/128076), done. remote: Total 381082 (delta 271874), reused 357127 (delta  249654) Receiving objects: 100% (381082/381082), 95.79 MiB | 5.79  MiB/s, done. Resolving deltas: 100% (271874/271874), done. Joomla website: /var/www/joomla­cms/
  • 67. Joomladagen 2014Joomladagen 2014 Testen – Joomla installeren ● Browser – Ga naar je lokale Joomla map http://localhost/joomla- cms/ – Volg normale installatie procedure, maar kies: ● Sample Data: Test English (GB) Sample Data = voorbeeld inhoud met daarin menu's met links naar alle Joomla componenten en modules → makkelijker testen – Verwijder bij de laatste stap de installatie folder NIET!!
  • 68. Joomladagen 2014Joomladagen 2014 Testen – Joomla installeren
  • 69. Joomladagen 2014Joomladagen 2014 Testen – voorbeeld “Bug” in /administrator/components/com_banners/models/banner.php “Hardcoded SQL” in regel 511: $db = Jfactory::getDbo(); $db->setQuery('SELECT MAX(ordering) FROM #__banners'); $max = $db->loadResult(); Joomlacode: [#32194] Banner model has hardcoded SQL
  • 71. Joomladagen 2014Joomladagen 2014 Testen – voorbeeld Joomlacode: [#32194] Banner model has hardcoded SQL Github.com: patch [#2200] De “hardcoded SQL“: $db = Jfactory::getDbo(); $db->setQuery('SELECT MAX(ordering) FROM #__banners'); $max = $db->loadResult(); vervangen met Joomla's $query object: $db = Jfactory::getDbo(); $query = $db->getQuery(true) ->select('MAX(ordering)') ->from('#__banners'); $db->setQuery($query); $max = $db->loadResult();
  • 72. Joomladagen 2014Joomladagen 2014 Testen – voorbeeld Github: https://github.com/joomla/joomla-cms/pull/2200
  • 73. Joomladagen 2014Joomladagen 2014 Testen – voorbeeld Travis: https://travis-ci.org/joomla/joomla-cms/builds/12365303
  • 74. Joomladagen 2014Joomladagen 2014 Testen – voorbeeld Joomlacode: [#32194] Banner model has hardcoded SQL Patch: https://github.com/joomla/joomla-cms/pull/2200.diff
  • 75. Joomladagen 2014Joomladagen 2014 Testen – voorbeeld [#32194] Banner model has hardcoded SQL ● Before: ● After: $ curl https://github.com/joomla/joomla­cms/pull/2200.diff | git apply % Total    % Received % Xferd  Average Speed   Time   Time     Time  Current                                  Dload  Upload   Total  Spent    Left  Speed 100   691  100   691    0     0   1448      0 ­­:­­:­­ ­­:­­:­­ ­­:­­:­­  1930
  • 76. Joomladagen 2014Joomladagen 2014 Testen – voorbeeld – git commando's Command line: ● Controleer & vraag informatie over patch status op: curl https://github.com/joomla/joomla-cms/pull/2200.diff | git apply --check ● Patch uitvoeren op jouw lokale Joomla installatie curl https://github.com/joomla/joomla-cms/pull/2200.diff | git apply ● Patch verwijderen: curl https://github.com/joomla/joomla-cms/pull/2200.diff | git apply -R ● Controleer of patch is verwijderd: git status # On branch master nothing to commit (working directory clean)
  • 77. Joomladagen 2014Joomladagen 2014 Testen – voorbeeld – git commando's ● “Hard reset” – verwijder alle veranderingen git reset --hard HEAD ● Informatie over de veranderingen, commits etc git log git log --pretty=oneline ● Joomla “Master Branch” = heel dynamisch. Importeer de meest recente veranderingen via: git pull
  • 78. Joomladagen 2014Joomladagen 2014 Dat was makkelijk? Toch?.....
  • 79. Joomladagen 2014Joomladagen 2014 Testen zonder command line git
  • 80. Joomladagen 2014Joomladagen 2014 Testen dmv component http://docs.joomla.org/Component_Patchtester_for_Testers
  • 88. Joomladagen 2014Joomladagen 2014 Vragen? ● Presentatie beschikbaar via www.db8.nl Peter Martin e-mail: info at db8.nl website: www.db8.nl twitter: @pe7er
  • 89. Joomladagen 2014Joomladagen 2014 Gebruikte foto's 1/2 ● First Aid Plaster 1 - Gokhan Okur http://www.sxc.hu/photo/782775 ● Moth - Therese Branton http://www.sxc.hu/photo/901692 ● ASCII Bugs: http://www.asciiworld.com/ ● Executivo 3 - Ivan Soares Ferrer http://www.sxc.hu/photo/215592 ● Joomla Sticker + Stroopwafel photo - Paul Orwig ● Night moth - Irina Naumets http://www.sxc.hu/photo/1047402 ● Bandaid Bandage - Pam Roth http://www.sxc.hu/photo/291573 ● JAB13 Bug Squad, Pizza, Bugs & Fun (Eindhoven, NL), JDDE13 Bug Squashing & JWC13 foto's - Peter Martin ● JDUK13 Bug Squashing photos - Paul Orwig ● Moth 1 - Irina Naumets http://www.sxc.hu/photo/1059828
  • 90. Joomladagen 2014Joomladagen 2014 Gebruikte foto's 2/2 ● Count on us - Laura Leavell http://www.sxc.hu/photo/1206290 ● Checkbox - bzuko22 http://www.sxc.hu/photo/1335487 ● Hands: Thumbsup - J. Henning Buchholz http://www.sxc.hu/photo/238119 ● Hands: Peace - J. Henning Buchholz http://www.sxc.hu/photo/238133 ● Multimeter - Maxime Perron Caissy http://www.sxc.hu/photo/498477 ● mathematic formulas - Tomasz A. Poszwa http://www.sxc.hu/photo/214561 ● Police protecting the demonstration - Michal Zacharzewski http://www.sxc.hu/photo/559518 ● signs signs - Jason Antony http://www.sxc.hu/photo/751034 Bronnen: ● Bug Tracking Process - Marijke Stuivenberg http://tinyurl.com/slides-PBFnl ● Werken met de Joomla Master Code - Roland Dalmulder http://tinyurl.com/handleiding-PBFnl