SlideShare une entreprise Scribd logo
1  sur  32
Debugowanie skryptów
PHP za pomocą Xdebug
Michał Pipa
Plan wystąpienia
  Wprowadzenie
  Debugowanie
  Kolorowy var_dump()
  Śledzenie wywołań funkcji
  Profilowanie
Wprowadzenie
Co to jest Xdebug?
Xdebug jest rozszerzeniem PHP stworzonym
przez Dericka Rethansa.
Wprowadzenie
Możliwości
  Dodatkowe informacje o błędach
  Kolorowanie wyjścia var_dump()
  Śledzenie stosu
  Interaktywne debugowanie
  Profilowanie
  Śledzenie wywołań funkcji
  Analiza 'code coverage'
Wprowadzenie
Instalacja
Instalacja w Debian/Ubuntu:
# apt-get install php5-xdebug
Wprowadzenie
Konfiguracja
/etc/php5/conf.d/xdebug.ini
zend_extension=/usr/lib/php5/20060613+lfs/xdebug.so
Debugowanie
Wprowadzenie
PHP z rozszerzeniem Xdebug łączy się z klientem
(NetBeans).
Debugowanie
Konfiguracja
Parametry zdalnego debugowania można
ustawiać zarówno w php.ini (globalnie),
jak i w .htaccess (dla danego katalogu).
Debugowanie
Konfiguracja
Najważniejsze parametry:
  xdebug.remote_enable
  xdebug.remote_host
  xdebug.remote_port
  xdebug.idekey
Debugowanie
Konfiguracja
W konfiguracji Xdebug musimy podać adres
klienta (xdebug.remote_host). Oznacza to, że
Xdebug musi wiedzieć do jakiego klienta ma się
podłączyć.
Debugowanie
Konfiguracja
Konieczność podania adresu klienta jest
problemem w następujących przypadkach:
  Więcej niż jeden programista chce debugować
tę samą kopię skryptu.
  Klient nie ma publicznego adresu IP (NAT).
Debugowanie
Konfiguracja
Rozwiązanie:
  Przekierowanie portów (dotyczy NAT i jest
uciążliwe).
  Zastosowanie DBGp proxy.
Debugowanie
DBGp proxy
Klient rejestruje się w proxy poleceniem 'proxyinit'
i podaje parametr idekey. Dzięki temu proxy może
skojarzyć idekey z adresem i portem klienta oraz
później przekierować do niego odpowiednie
połączenia.
Debugowanie
DBGp proxy
Przykładowa sesja z udziałem pydbgpproxy:
$ ./pydbgpproxy -i 10.254.254.254:9001 -d 10.254.254.254:9000
INFO: dbgp.proxy: starting proxy listeners. appid: 8431
INFO: dbgp.proxy: dbgp listener on 10.254.254.254:9000
INFO: dbgp.proxy: IDE listener on 10.254.254.254:9001
INFO: dbgp.proxy: Server:onConnect ('10.254.254.20', 40112) [proxyinit -p 9000 -k michal.pipa -m 0]
INFO: dbgp.proxy: connection from 10.254.254.20:42010 [<__main__.sessionProxy instance at
0x874410c>]
INFO: dbgp.proxy: Server:onConnect ('10.254.254.20', 40117) [proxystop -k michal.pipa]
Debugowanie
Konfiguracja klienta (NetBeans)
Debugowanie
Konfiguracja klienta (NetBeans)
Debugowanie
Konfiguracja klienta (NetBeans)
Debugowanie
NetBeans
Śledzenie zmiennych:
Debugowanie
NetBeans
Podgląd i edycja wszystkich zmiennych:
Debugowanie
NetBeans
Podgląd stosu:
Debugowanie
NetBeans
Pułapki:
Debugowanie
NetBeans
Pułapki:
Kolorowy var_dump()
Przykład
Bez Xdebug:
Kolorowy var_dump()
Przykład
Z Xdebug:
Kolorowy var_dump()
Konfiguracja
  xdebug.overload_var_dump
  xdebug.var_display_max_depth
  xdebug.var_display_max_children
  xdebug.var_display_max_data
Śledzenie wywołań funkcji
Wprowadzenie
Śledzenie wywołań funkcji zapisuje w czytelnym
dla człowieka formacie informacje o:
  Wywołanych funkcjach
  Czasie wykonania funkcji
  Rozmiar użytej pamięci
  Parametry przekazane do funkcji
  Wartości zwracane przez funkcję
Śledzenie wywołań funkcji
Konfiguracja
  xdebug.auto_trace
  xdebug.collect_params
  xdebug.collect_return
  xdebug.show_mem_delta
Profilowanie
Wprowadzenie
Profilowanie jest podobne do śledzenia wywołań
funkcji. Wynik jest zapisywany w postaci czytelnej
dla programów, które służą do analizy tych
danych.
Profilowanie
Konfiguracja
Włączenie profilowania:
xdebug.profiler_enable
Po włączeniu pliku profilu są zapisywane w
katalogu /tmp (xdebug.profiler_output_dir).
Profilowanie
KCachegrind
Profilowanie
Webgrind
Dziękuję za uwagę!

Contenu connexe

Tendances

"Sandbox dla PowerShell'a - zrób to sam!" - Dawid Pachowski
"Sandbox dla PowerShell'a - zrób to sam!" - Dawid Pachowski"Sandbox dla PowerShell'a - zrób to sam!" - Dawid Pachowski
"Sandbox dla PowerShell'a - zrób to sam!" - Dawid PachowskiPROIDEA
 
3Camp Tech 2016/11/15 - Front-end tooling: package managers
3Camp Tech 2016/11/15 - Front-end tooling: package managers3Camp Tech 2016/11/15 - Front-end tooling: package managers
3Camp Tech 2016/11/15 - Front-end tooling: package managersMichał Michalczuk
 
Budowa elementów GUI za pomocą biblioteki React - szybki start
Budowa elementów GUI za pomocą biblioteki React - szybki startBudowa elementów GUI za pomocą biblioteki React - szybki start
Budowa elementów GUI za pomocą biblioteki React - szybki startSages
 
[BDD] Introduction to Behat (PL)
[BDD] Introduction to Behat (PL)[BDD] Introduction to Behat (PL)
[BDD] Introduction to Behat (PL)Piotr Pelczar
 
Hugo - make webdev fun again
Hugo - make webdev fun againHugo - make webdev fun again
Hugo - make webdev fun againMarcin Gajda
 
Jak zostać mobile deweloperem w 1 dzień
Jak zostać mobile deweloperem w 1 dzieńJak zostać mobile deweloperem w 1 dzień
Jak zostać mobile deweloperem w 1 dzieńPaweł Kondraciuk
 
Vagrant - RuPy Tuesday
Vagrant - RuPy TuesdayVagrant - RuPy Tuesday
Vagrant - RuPy TuesdayGaldoMedia
 
Podstawy AngularJS
Podstawy AngularJSPodstawy AngularJS
Podstawy AngularJSSages
 
PLNOG 4: Piotr Siwczak - Zarządzanie farmami serwerów Linux
PLNOG 4: Piotr Siwczak - Zarządzanie farmami serwerów Linux PLNOG 4: Piotr Siwczak - Zarządzanie farmami serwerów Linux
PLNOG 4: Piotr Siwczak - Zarządzanie farmami serwerów Linux PROIDEA
 
Laravelowe paczki do uwierzytelniania
Laravelowe paczki do uwierzytelnianiaLaravelowe paczki do uwierzytelniania
Laravelowe paczki do uwierzytelnianiaLaravel Poland MeetUp
 
PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...
PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...
PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...PROIDEA
 
Cykl życia zapytania HTTP (pod maską)
Cykl życia zapytania HTTP (pod maską)Cykl życia zapytania HTTP (pod maską)
Cykl życia zapytania HTTP (pod maską)Laravel Poland MeetUp
 
Zabezpiecz swoją stronę w Joomla!
Zabezpiecz swoją stronę w Joomla!Zabezpiecz swoją stronę w Joomla!
Zabezpiecz swoją stronę w Joomla!Wojciech Klocek
 
Obalamy mity o wydajności frameworka Laravel cz. II
Obalamy mity o wydajności frameworka Laravel cz. IIObalamy mity o wydajności frameworka Laravel cz. II
Obalamy mity o wydajności frameworka Laravel cz. IILaravel Poland MeetUp
 
AADays 2015 - Jak to zrobic w JavaScript
AADays 2015 - Jak to zrobic w JavaScriptAADays 2015 - Jak to zrobic w JavaScript
AADays 2015 - Jak to zrobic w JavaScriptJacek Okrojek
 
Reactive programming
Reactive programmingReactive programming
Reactive programmingSunscrapers
 

Tendances (20)

"Sandbox dla PowerShell'a - zrób to sam!" - Dawid Pachowski
"Sandbox dla PowerShell'a - zrób to sam!" - Dawid Pachowski"Sandbox dla PowerShell'a - zrób to sam!" - Dawid Pachowski
"Sandbox dla PowerShell'a - zrób to sam!" - Dawid Pachowski
 
[TestWarez 2017] Architektura frameworka testowego
[TestWarez 2017] Architektura frameworka testowego[TestWarez 2017] Architektura frameworka testowego
[TestWarez 2017] Architektura frameworka testowego
 
3Camp Tech 2016/11/15 - Front-end tooling: package managers
3Camp Tech 2016/11/15 - Front-end tooling: package managers3Camp Tech 2016/11/15 - Front-end tooling: package managers
3Camp Tech 2016/11/15 - Front-end tooling: package managers
 
Budowa elementów GUI za pomocą biblioteki React - szybki start
Budowa elementów GUI za pomocą biblioteki React - szybki startBudowa elementów GUI za pomocą biblioteki React - szybki start
Budowa elementów GUI za pomocą biblioteki React - szybki start
 
Swoole w PHP. Czy to ma sens?
Swoole w PHP. Czy to ma sens?Swoole w PHP. Czy to ma sens?
Swoole w PHP. Czy to ma sens?
 
[BDD] Introduction to Behat (PL)
[BDD] Introduction to Behat (PL)[BDD] Introduction to Behat (PL)
[BDD] Introduction to Behat (PL)
 
Potęga pliku .htaccess
Potęga pliku .htaccessPotęga pliku .htaccess
Potęga pliku .htaccess
 
Hugo - make webdev fun again
Hugo - make webdev fun againHugo - make webdev fun again
Hugo - make webdev fun again
 
Jak zostać mobile deweloperem w 1 dzień
Jak zostać mobile deweloperem w 1 dzieńJak zostać mobile deweloperem w 1 dzień
Jak zostać mobile deweloperem w 1 dzień
 
Vagrant - RuPy Tuesday
Vagrant - RuPy TuesdayVagrant - RuPy Tuesday
Vagrant - RuPy Tuesday
 
Podstawy AngularJS
Podstawy AngularJSPodstawy AngularJS
Podstawy AngularJS
 
PLNOG 4: Piotr Siwczak - Zarządzanie farmami serwerów Linux
PLNOG 4: Piotr Siwczak - Zarządzanie farmami serwerów Linux PLNOG 4: Piotr Siwczak - Zarządzanie farmami serwerów Linux
PLNOG 4: Piotr Siwczak - Zarządzanie farmami serwerów Linux
 
Laravelowe paczki do uwierzytelniania
Laravelowe paczki do uwierzytelnianiaLaravelowe paczki do uwierzytelniania
Laravelowe paczki do uwierzytelniania
 
PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...
PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...
PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...
 
Cykl życia zapytania HTTP (pod maską)
Cykl życia zapytania HTTP (pod maską)Cykl życia zapytania HTTP (pod maską)
Cykl życia zapytania HTTP (pod maską)
 
Zabezpiecz swoją stronę w Joomla!
Zabezpiecz swoją stronę w Joomla!Zabezpiecz swoją stronę w Joomla!
Zabezpiecz swoją stronę w Joomla!
 
Obalamy mity o wydajności frameworka Laravel cz. II
Obalamy mity o wydajności frameworka Laravel cz. IIObalamy mity o wydajności frameworka Laravel cz. II
Obalamy mity o wydajności frameworka Laravel cz. II
 
AADays 2015 - Jak to zrobic w JavaScript
AADays 2015 - Jak to zrobic w JavaScriptAADays 2015 - Jak to zrobic w JavaScript
AADays 2015 - Jak to zrobic w JavaScript
 
Websockety w PHP
Websockety w PHPWebsockety w PHP
Websockety w PHP
 
Reactive programming
Reactive programmingReactive programming
Reactive programming
 

Similaire à Debugowanie skryptow php za pomoca xdebug

Przenieś się do kontenera, czyli korzyści z Docker i Docker Compose
Przenieś się do kontenera, czyli korzyści z Docker i Docker ComposePrzenieś się do kontenera, czyli korzyści z Docker i Docker Compose
Przenieś się do kontenera, czyli korzyści z Docker i Docker ComposeMariusz Bąk
 
PLNOG 22 - Krzysztof Załęski - Praktyczne zastosowanie narzędzi NetDevOps
PLNOG 22 - Krzysztof Załęski - Praktyczne zastosowanie narzędzi NetDevOpsPLNOG 22 - Krzysztof Załęski - Praktyczne zastosowanie narzędzi NetDevOps
PLNOG 22 - Krzysztof Załęski - Praktyczne zastosowanie narzędzi NetDevOpsPROIDEA
 
xD bug - Jak debugować PHP-owe aplikacje (Xdebug)
xD bug - Jak debugować PHP-owe aplikacje (Xdebug) xD bug - Jak debugować PHP-owe aplikacje (Xdebug)
xD bug - Jak debugować PHP-owe aplikacje (Xdebug) Laravel Poland MeetUp
 
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...The Software House
 
PLNOG 5: Bartosz Kiziukiewicz, Marcin Wójcik - Praktyczne wskazówki projektow...
PLNOG 5: Bartosz Kiziukiewicz, Marcin Wójcik - Praktyczne wskazówki projektow...PLNOG 5: Bartosz Kiziukiewicz, Marcin Wójcik - Praktyczne wskazówki projektow...
PLNOG 5: Bartosz Kiziukiewicz, Marcin Wójcik - Praktyczne wskazówki projektow...PROIDEA
 
Asynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketw
Asynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketwAsynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketw
Asynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketwLuke Adamczewski
 
Asynchroniczny PHP & komunikacja czasu rzeczywistego z wykorzystaniem websock...
Asynchroniczny PHP & komunikacja czasu rzeczywistego z wykorzystaniem websock...Asynchroniczny PHP & komunikacja czasu rzeczywistego z wykorzystaniem websock...
Asynchroniczny PHP & komunikacja czasu rzeczywistego z wykorzystaniem websock...Polcode
 
Testowanie rozwiązań serverless z LocalStack
Testowanie rozwiązań serverless z LocalStackTestowanie rozwiązań serverless z LocalStack
Testowanie rozwiązań serverless z LocalStackThe Software House
 
Uruchomienie i praca z laravel w wirtualnym kontenerze docker'a
Uruchomienie i praca z laravel w wirtualnym kontenerze docker'aUruchomienie i praca z laravel w wirtualnym kontenerze docker'a
Uruchomienie i praca z laravel w wirtualnym kontenerze docker'aLaravel Poland MeetUp
 
Laravel Poznań Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym konten...
Laravel Poznań Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym konten...Laravel Poznań Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym konten...
Laravel Poznań Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym konten...HighSolutions Sp. z o.o.
 
Programowanie Komponentowe: #C Wprowadzenie do OSGi
Programowanie Komponentowe: #C Wprowadzenie do OSGiProgramowanie Komponentowe: #C Wprowadzenie do OSGi
Programowanie Komponentowe: #C Wprowadzenie do OSGiMikołaj Olszewski
 
Codeception - jak zacząć pisać automatyczne testy do Drupala [PL]
Codeception - jak zacząć pisać automatyczne testy do Drupala [PL]Codeception - jak zacząć pisać automatyczne testy do Drupala [PL]
Codeception - jak zacząć pisać automatyczne testy do Drupala [PL]Droptica
 
Zastosowanie buildout przy wdrażaniu projektów opartych o framework Django
Zastosowanie buildout przy wdrażaniu projektów opartych o framework DjangoZastosowanie buildout przy wdrażaniu projektów opartych o framework Django
Zastosowanie buildout przy wdrażaniu projektów opartych o framework DjangoDominik Szopa
 
Deployment kodu z Capistrano
Deployment kodu z CapistranoDeployment kodu z Capistrano
Deployment kodu z CapistranoMichał Szajbe
 
Ganymede - nowoczesne technologie w grach przeglądarkowych i mobilnych
Ganymede - nowoczesne technologie w grach przeglądarkowych i mobilnychGanymede - nowoczesne technologie w grach przeglądarkowych i mobilnych
Ganymede - nowoczesne technologie w grach przeglądarkowych i mobilnychSKN Shader
 
Security B-Sides Warsaw 2014 - Network Security Treasures - Gawel Mikolajczyk
Security B-Sides Warsaw 2014 - Network Security Treasures - Gawel MikolajczykSecurity B-Sides Warsaw 2014 - Network Security Treasures - Gawel Mikolajczyk
Security B-Sides Warsaw 2014 - Network Security Treasures - Gawel MikolajczykGawel Mikolajczyk
 
Michał Dec - Quality in Clouds
Michał Dec - Quality in CloudsMichał Dec - Quality in Clouds
Michał Dec - Quality in Cloudskraqa
 
Czym jest złożoność ?
Czym jest złożoność ?Czym jest złożoność ?
Czym jest złożoność ?GOG.com dev team
 

Similaire à Debugowanie skryptow php za pomoca xdebug (20)

Przenieś się do kontenera, czyli korzyści z Docker i Docker Compose
Przenieś się do kontenera, czyli korzyści z Docker i Docker ComposePrzenieś się do kontenera, czyli korzyści z Docker i Docker Compose
Przenieś się do kontenera, czyli korzyści z Docker i Docker Compose
 
PLNOG 22 - Krzysztof Załęski - Praktyczne zastosowanie narzędzi NetDevOps
PLNOG 22 - Krzysztof Załęski - Praktyczne zastosowanie narzędzi NetDevOpsPLNOG 22 - Krzysztof Załęski - Praktyczne zastosowanie narzędzi NetDevOps
PLNOG 22 - Krzysztof Załęski - Praktyczne zastosowanie narzędzi NetDevOps
 
xD bug - Jak debugować PHP-owe aplikacje (Xdebug)
xD bug - Jak debugować PHP-owe aplikacje (Xdebug) xD bug - Jak debugować PHP-owe aplikacje (Xdebug)
xD bug - Jak debugować PHP-owe aplikacje (Xdebug)
 
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
 
PLNOG 5: Bartosz Kiziukiewicz, Marcin Wójcik - Praktyczne wskazówki projektow...
PLNOG 5: Bartosz Kiziukiewicz, Marcin Wójcik - Praktyczne wskazówki projektow...PLNOG 5: Bartosz Kiziukiewicz, Marcin Wójcik - Praktyczne wskazówki projektow...
PLNOG 5: Bartosz Kiziukiewicz, Marcin Wójcik - Praktyczne wskazówki projektow...
 
Asynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketw
Asynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketwAsynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketw
Asynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketw
 
Asynchroniczny PHP & komunikacja czasu rzeczywistego z wykorzystaniem websock...
Asynchroniczny PHP & komunikacja czasu rzeczywistego z wykorzystaniem websock...Asynchroniczny PHP & komunikacja czasu rzeczywistego z wykorzystaniem websock...
Asynchroniczny PHP & komunikacja czasu rzeczywistego z wykorzystaniem websock...
 
Torquebox
TorqueboxTorquebox
Torquebox
 
Mongodb with Rails
Mongodb with RailsMongodb with Rails
Mongodb with Rails
 
Testowanie rozwiązań serverless z LocalStack
Testowanie rozwiązań serverless z LocalStackTestowanie rozwiązań serverless z LocalStack
Testowanie rozwiązań serverless z LocalStack
 
Uruchomienie i praca z laravel w wirtualnym kontenerze docker'a
Uruchomienie i praca z laravel w wirtualnym kontenerze docker'aUruchomienie i praca z laravel w wirtualnym kontenerze docker'a
Uruchomienie i praca z laravel w wirtualnym kontenerze docker'a
 
Laravel Poznań Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym konten...
Laravel Poznań Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym konten...Laravel Poznań Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym konten...
Laravel Poznań Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym konten...
 
Programowanie Komponentowe: #C Wprowadzenie do OSGi
Programowanie Komponentowe: #C Wprowadzenie do OSGiProgramowanie Komponentowe: #C Wprowadzenie do OSGi
Programowanie Komponentowe: #C Wprowadzenie do OSGi
 
Codeception - jak zacząć pisać automatyczne testy do Drupala [PL]
Codeception - jak zacząć pisać automatyczne testy do Drupala [PL]Codeception - jak zacząć pisać automatyczne testy do Drupala [PL]
Codeception - jak zacząć pisać automatyczne testy do Drupala [PL]
 
Zastosowanie buildout przy wdrażaniu projektów opartych o framework Django
Zastosowanie buildout przy wdrażaniu projektów opartych o framework DjangoZastosowanie buildout przy wdrażaniu projektów opartych o framework Django
Zastosowanie buildout przy wdrażaniu projektów opartych o framework Django
 
Deployment kodu z Capistrano
Deployment kodu z CapistranoDeployment kodu z Capistrano
Deployment kodu z Capistrano
 
Ganymede - nowoczesne technologie w grach przeglądarkowych i mobilnych
Ganymede - nowoczesne technologie w grach przeglądarkowych i mobilnychGanymede - nowoczesne technologie w grach przeglądarkowych i mobilnych
Ganymede - nowoczesne technologie w grach przeglądarkowych i mobilnych
 
Security B-Sides Warsaw 2014 - Network Security Treasures - Gawel Mikolajczyk
Security B-Sides Warsaw 2014 - Network Security Treasures - Gawel MikolajczykSecurity B-Sides Warsaw 2014 - Network Security Treasures - Gawel Mikolajczyk
Security B-Sides Warsaw 2014 - Network Security Treasures - Gawel Mikolajczyk
 
Michał Dec - Quality in Clouds
Michał Dec - Quality in CloudsMichał Dec - Quality in Clouds
Michał Dec - Quality in Clouds
 
Czym jest złożoność ?
Czym jest złożoność ?Czym jest złożoność ?
Czym jest złożoność ?
 

Plus de XSolve

Jak migrować kod legacy do Symfony? Tips & tricks
Jak migrować kod legacy do Symfony? Tips & tricksJak migrować kod legacy do Symfony? Tips & tricks
Jak migrować kod legacy do Symfony? Tips & tricksXSolve
 
How to Create an Agile Office
How to Create an Agile OfficeHow to Create an Agile Office
How to Create an Agile OfficeXSolve
 
Xlab #10: Integracja zewnętrznych API z wykorzystaniem platformy Spring
Xlab #10: Integracja zewnętrznych API z wykorzystaniem platformy SpringXlab #10: Integracja zewnętrznych API z wykorzystaniem platformy Spring
Xlab #10: Integracja zewnętrznych API z wykorzystaniem platformy SpringXSolve
 
How to build a Tesla car for the price of a Chevrolet
How to build a Tesla car for the price of a ChevroletHow to build a Tesla car for the price of a Chevrolet
How to build a Tesla car for the price of a ChevroletXSolve
 
xlab #8 - Architektura mikroserwisów na platformie Spring Boot
xlab #8 - Architektura mikroserwisów na platformie Spring Bootxlab #8 - Architektura mikroserwisów na platformie Spring Boot
xlab #8 - Architektura mikroserwisów na platformie Spring BootXSolve
 
xlab #7 - ReactJS & NodeJS
xlab #7 - ReactJS & NodeJSxlab #7 - ReactJS & NodeJS
xlab #7 - ReactJS & NodeJSXSolve
 
How to be agile at Agile Hack?! - agilehack.pl
How to be agile at Agile Hack?! - agilehack.plHow to be agile at Agile Hack?! - agilehack.pl
How to be agile at Agile Hack?! - agilehack.plXSolve
 
PHPCon 2016: PHP7 by Witek Adamus / XSolve
PHPCon 2016: PHP7 by Witek Adamus / XSolvePHPCon 2016: PHP7 by Witek Adamus / XSolve
PHPCon 2016: PHP7 by Witek Adamus / XSolveXSolve
 
Xlab #1: Advantages of functional programming in Java 8
Xlab #1: Advantages of functional programming in Java 8Xlab #1: Advantages of functional programming in Java 8
Xlab #1: Advantages of functional programming in Java 8XSolve
 
Xlab #2: wzorce projektowe
Xlab #2: wzorce projektoweXlab #2: wzorce projektowe
Xlab #2: wzorce projektoweXSolve
 
Piątek z XSolve - TravisCI & Continuous Delivery
Piątek z XSolve - TravisCI & Continuous DeliveryPiątek z XSolve - TravisCI & Continuous Delivery
Piątek z XSolve - TravisCI & Continuous DeliveryXSolve
 
Piątek z XSolve - Bezpieczne nagłówki HTTP
Piątek z XSolve - Bezpieczne nagłówki HTTPPiątek z XSolve - Bezpieczne nagłówki HTTP
Piątek z XSolve - Bezpieczne nagłówki HTTPXSolve
 
Grafowa baza danych i integracja z symfony
Grafowa baza danych  i integracja z symfonyGrafowa baza danych  i integracja z symfony
Grafowa baza danych i integracja z symfonyXSolve
 
How to outsource Scrum projects - a guide
How to outsource Scrum projects - a guideHow to outsource Scrum projects - a guide
How to outsource Scrum projects - a guideXSolve
 
Xsolve presentation - programming, bodyleasing, e-commerce
Xsolve presentation - programming, bodyleasing, e-commerceXsolve presentation - programming, bodyleasing, e-commerce
Xsolve presentation - programming, bodyleasing, e-commerceXSolve
 
Prezentacja firmy XSolve - programowanie, e-commerce, bodyleasing
Prezentacja firmy XSolve - programowanie, e-commerce, bodyleasingPrezentacja firmy XSolve - programowanie, e-commerce, bodyleasing
Prezentacja firmy XSolve - programowanie, e-commerce, bodyleasingXSolve
 
Dlaczego git to nie svn oraz dlaczego to dobrze ?
Dlaczego git to nie svn oraz dlaczego to dobrze ?Dlaczego git to nie svn oraz dlaczego to dobrze ?
Dlaczego git to nie svn oraz dlaczego to dobrze ?XSolve
 
Programowanie zorientowane aspektowo
Programowanie zorientowane aspektowoProgramowanie zorientowane aspektowo
Programowanie zorientowane aspektowoXSolve
 
Agile estimating and planning
Agile estimating and planningAgile estimating and planning
Agile estimating and planningXSolve
 
Tailoring of PRINCE2
Tailoring of PRINCE2Tailoring of PRINCE2
Tailoring of PRINCE2XSolve
 

Plus de XSolve (20)

Jak migrować kod legacy do Symfony? Tips & tricks
Jak migrować kod legacy do Symfony? Tips & tricksJak migrować kod legacy do Symfony? Tips & tricks
Jak migrować kod legacy do Symfony? Tips & tricks
 
How to Create an Agile Office
How to Create an Agile OfficeHow to Create an Agile Office
How to Create an Agile Office
 
Xlab #10: Integracja zewnętrznych API z wykorzystaniem platformy Spring
Xlab #10: Integracja zewnętrznych API z wykorzystaniem platformy SpringXlab #10: Integracja zewnętrznych API z wykorzystaniem platformy Spring
Xlab #10: Integracja zewnętrznych API z wykorzystaniem platformy Spring
 
How to build a Tesla car for the price of a Chevrolet
How to build a Tesla car for the price of a ChevroletHow to build a Tesla car for the price of a Chevrolet
How to build a Tesla car for the price of a Chevrolet
 
xlab #8 - Architektura mikroserwisów na platformie Spring Boot
xlab #8 - Architektura mikroserwisów na platformie Spring Bootxlab #8 - Architektura mikroserwisów na platformie Spring Boot
xlab #8 - Architektura mikroserwisów na platformie Spring Boot
 
xlab #7 - ReactJS & NodeJS
xlab #7 - ReactJS & NodeJSxlab #7 - ReactJS & NodeJS
xlab #7 - ReactJS & NodeJS
 
How to be agile at Agile Hack?! - agilehack.pl
How to be agile at Agile Hack?! - agilehack.plHow to be agile at Agile Hack?! - agilehack.pl
How to be agile at Agile Hack?! - agilehack.pl
 
PHPCon 2016: PHP7 by Witek Adamus / XSolve
PHPCon 2016: PHP7 by Witek Adamus / XSolvePHPCon 2016: PHP7 by Witek Adamus / XSolve
PHPCon 2016: PHP7 by Witek Adamus / XSolve
 
Xlab #1: Advantages of functional programming in Java 8
Xlab #1: Advantages of functional programming in Java 8Xlab #1: Advantages of functional programming in Java 8
Xlab #1: Advantages of functional programming in Java 8
 
Xlab #2: wzorce projektowe
Xlab #2: wzorce projektoweXlab #2: wzorce projektowe
Xlab #2: wzorce projektowe
 
Piątek z XSolve - TravisCI & Continuous Delivery
Piątek z XSolve - TravisCI & Continuous DeliveryPiątek z XSolve - TravisCI & Continuous Delivery
Piątek z XSolve - TravisCI & Continuous Delivery
 
Piątek z XSolve - Bezpieczne nagłówki HTTP
Piątek z XSolve - Bezpieczne nagłówki HTTPPiątek z XSolve - Bezpieczne nagłówki HTTP
Piątek z XSolve - Bezpieczne nagłówki HTTP
 
Grafowa baza danych i integracja z symfony
Grafowa baza danych  i integracja z symfonyGrafowa baza danych  i integracja z symfony
Grafowa baza danych i integracja z symfony
 
How to outsource Scrum projects - a guide
How to outsource Scrum projects - a guideHow to outsource Scrum projects - a guide
How to outsource Scrum projects - a guide
 
Xsolve presentation - programming, bodyleasing, e-commerce
Xsolve presentation - programming, bodyleasing, e-commerceXsolve presentation - programming, bodyleasing, e-commerce
Xsolve presentation - programming, bodyleasing, e-commerce
 
Prezentacja firmy XSolve - programowanie, e-commerce, bodyleasing
Prezentacja firmy XSolve - programowanie, e-commerce, bodyleasingPrezentacja firmy XSolve - programowanie, e-commerce, bodyleasing
Prezentacja firmy XSolve - programowanie, e-commerce, bodyleasing
 
Dlaczego git to nie svn oraz dlaczego to dobrze ?
Dlaczego git to nie svn oraz dlaczego to dobrze ?Dlaczego git to nie svn oraz dlaczego to dobrze ?
Dlaczego git to nie svn oraz dlaczego to dobrze ?
 
Programowanie zorientowane aspektowo
Programowanie zorientowane aspektowoProgramowanie zorientowane aspektowo
Programowanie zorientowane aspektowo
 
Agile estimating and planning
Agile estimating and planningAgile estimating and planning
Agile estimating and planning
 
Tailoring of PRINCE2
Tailoring of PRINCE2Tailoring of PRINCE2
Tailoring of PRINCE2
 

Debugowanie skryptow php za pomoca xdebug