SlideShare a Scribd company logo
1 of 96
Download to read offline
DAJ SIĘ WYRĘCZYĆ 
Tomasz Dziuda 
! 
JoomlaDay Warszawa 2014
LUB PO PROSTU...
NIE DAJ SIĘ WYKOŃCZYĆ :-)
“Dlaczego chce Pan za to zlecenie XXXX złotych 
skoro korzysta Pan z gotowego szablonu?” 
–Typowy Klient po odkryciu gotowców w projekcie
NIE O TYM JEST TA 
PREZENTACJA ;-)
Źródło: (https://twitter.com/iamdevloper/status/458263644628078592)
ZŁOŻONOŚĆ PROJEKTÓW WWW ROŚNIE
A CZAS TRWANIA DOBY SIĘ NIE ZMIENIA
AUTOMATYZACJA?
AUTOMATYZACJA?
AUTOMATYZACJA?
AUTOMATYZACJA?
CO WARTO 
ZAUTOMATYZOWAĆ?
• Powtarzalne czynności
• Powtarzalne czynności 
• Zadania w których łatwo można zaprogramować 
kolejne etapy
• Powtarzalne czynności 
• Zadania w których łatwo można zaprogramować 
kolejne etapy 
• Warto zwracać uwagę na złożoność oraz 
zasobożerność rozwiązania automatycznego
JAK ŻYĆ AUTOMATYZOWAĆ?
WYGODNY EDYTOR
SUBLIME TEXT
EMMET 
ul>li*3>a 
-webkit-box-sizing: ; 
-moz-box-sizing: ; 
box-sizing: ; 
<ul> 
<li><a href=""></a></li> 
<li><a href=""></a></li> 
<li><a href=“"></a></li> 
</ul> 
-box-sizing: ;
AUTOPREFIXER
LINTER
EMMET LIVESTYLE
GUTTER COLOR
DOCBLOCKR
LESS PARSER 
[brak screena] 
On po prostu działa ;-)
PRZYDATNE WTYCZKI 
Emmet 
(http://emmet.io/) 
! 
Emmet Live Style 
(http://livestyle.emmet.io/) 
! 
AutoPrefixer 
(https://github.com/sindresorhus/sublime-autoprefixer) 
Linter 
(https://github.com/SublimeLinter/SublimeLinter) 
! 
LESS Parser 
(https://github.com/timdouglas/sublime-less2css) 
! 
Gutter Color 
(https://sublime.wbond.net/packages/Gutter%20Color) 
! 
DocBlockr 
(https://github.com/spadgos/sublime-jsdocs)
ALTERNATYWY 
Codekit 
(https://incident57.com/codekit/) 
! 
Grunt.js 
(http://gruntjs.com/) 
! 
Atom 
(https://atom.io/) 
! 
Wypasione IDE ;-)
SPÓJNA STYLISTYKA KODU
.EDITORCONFIG
# określamy katalog bazowy 
root = true 
! 
! 
! 
! 
! 
! 
! 
! 
!
# określamy katalog bazowy 
root = true 
! 
# konfiguracja dla wszystkich plików 
[*] 
end_of_line = lf 
insert_final_newline = true 
! 
! 
! 
!
# określamy katalog bazowy 
root = true 
! 
# konfiguracja dla wszystkich plików 
[*] 
end_of_line = lf 
insert_final_newline = true 
! 
# konfiguracja dla plików *.js 
[*.js] 
indent_style = space 
indent_size = 4
SCAFFOLDING
GENEROWANIE KOMPONENTU 
npm install -g generator-joomla-component 
! 
yo joomla-component
GENEROWANIE KOMPONENTU
GENEROWANIE KOMPONENTU
GENEROWANIE KOMPONENTU
SUBGENERATORY 
yo joomla-component:model “test_model”
ALTERNATYWY 
Brunch 
(http://brunch.io/) 
! 
! 
Loom 
(https://github.com/rpflorence/loom)
UNIKANIE NUDNYCH ZADAŃ
JAK TO DZIAŁA?
JAK TO DZIAŁA? 
• Tworzymy package.json
JAK TO DZIAŁA? 
• Tworzymy package.json 
• Tworzymy Gruntfile.js
JAK TO DZIAŁA? 
• Tworzymy package.json 
• Tworzymy Gruntfile.js 
• Wchodzimy do katalogu z projektem
JAK TO DZIAŁA? 
• Tworzymy package.json 
• Tworzymy Gruntfile.js 
• Wchodzimy do katalogu z projektem 
• Aktualizujemy wszystkie zależności z package.json 
poprzez npm install
JAK TO DZIAŁA? 
• Tworzymy package.json 
• Tworzymy Gruntfile.js 
• Wchodzimy do katalogu z projektem 
• Aktualizujemy wszystkie zależności z package.json 
poprzez npm install 
• Uruchamiamy zadania komendą grunt lub grunt 
<nazwa_zadania>
module.exports = function(grunt) { 
! 
! 
! 
! 
! 
! 
! 
! 
};
module.exports = function(grunt) { 
grunt.initConfig({ 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
}); 
! 
! 
! 
};
module.exports = function(grunt) { 
grunt.initConfig({ 
pkg: grunt.file.readJSON('package.json'), 
! 
! 
}); 
! 
! 
};
module.exports = function(grunt) { 
grunt.initConfig({ 
pkg: grunt.file.readJSON('package.json'), 
uglify: { 
options: { 
banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm- 
dd") %> */n' 
}, 
build: { 
src: 'src/<%= pkg.name %>.js', 
dest: 'build/<%= pkg.name %>.min.js' 
} 
} 
}); 
! 
! 
! 
};
module.exports = function(grunt) { 
grunt.initConfig({ 
pkg: grunt.file.readJSON('package.json'), 
uglify: { 
options: { 
banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm- 
dd") %> */n' 
}, 
build: { 
src: 'src/<%= pkg.name %>.js', 
dest: 'build/<%= pkg.name %>.min.js' 
} 
} 
}); 
! 
grunt.loadNpmTasks(‘grunt-contrib-uglify'); 
! 
};
module.exports = function(grunt) { 
grunt.initConfig({ 
pkg: grunt.file.readJSON('package.json'), 
uglify: { 
options: { 
banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm- 
dd") %> */n' 
}, 
build: { 
src: 'src/<%= pkg.name %>.js', 
dest: 'build/<%= pkg.name %>.min.js' 
} 
} 
}); 
! 
grunt.loadNpmTasks('grunt-contrib-uglify'); 
grunt.registerTask('default', ['uglify']); 
};
PRZYDATNE PLUGINY 
• grunt-csscss 
• grunt-jsbeautifier 
• grunt-cssbeautifier 
• grunt-contrib-jshint 
• grunt-contrib-less 
• grunt-contrib-watch 
• Więcej na: http://gruntjs.com/plugins
ALTERNATYWY 
Gulp.js 
! 
(http://gulpjs.com/)
AUTOMATYCZNE 
WYKLIKIWANIE
CASPER.JS
var casper = require('casper').create({ 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
! 
});
var casper = require('casper').create({ 
verbose: true, 
logLevel: “debug", 
! 
! 
! 
! 
! 
! 
! 
! 
! 
});
var casper = require('casper').create({ 
verbose: true, 
logLevel: “debug", 
onError: function(self, m) { 
console.log('FATAL:' + m); 
self.exit(); 
}, 
! 
! 
! 
! 
});
var casper = require('casper').create({ 
verbose: true, 
logLevel: “debug", 
onError: function(self, m) { 
console.log('FATAL:' + m); 
self.exit(); 
}, 
viewportSize: { 
'width': 1280, 
'height': 1024 
} 
});
casper.start(); 
! 
! 
! 
! 
! 
!
casper.start(); 
! 
casper.setHttpAuth('admin', ‘demo'); 
! 
! 
! 
!
casper.start(); 
! 
casper.setHttpAuth('admin', ‘demo'); 
! 
casper.thenOpen('http://domain.com/administrator/index.php', 
function() { 
this.echo('Logged to HTACCESS', 'INFO'); 
});
casper.then(function() { 
! 
! 
}); 
!
casper.then(function() { 
this.fill('#form-login', { 
'username': 'admin', 
'passwd': 'demo' 
}, true); 
! 
! 
}); 
!
casper.then(function() { 
this.fill('#form-login', { 
'username': 'admin', 
'passwd': 'demo' 
}, true); 
! 
this.captureSelector(‘admin.png', '#main'); 
}); 
!
casper.then(function() { 
this.fill('#form-login', { 
'username': 'admin', 
'passwd': 'demo' 
}, true); 
! 
this.captureSelector(‘admin.png', '#main'); 
}); 
! 
casper.run();
ALTERNATYWY 
Phantom.js 
(http://phantomjs.org/) 
! 
Slimer.js 
(http://slimerjs.org/) 
! 
Nightwatch.js 
(http://nightwatchjs.org/)
WORKFLOW
WORKFLOW 
• Generujemy strukturę z użyciem Yeomana
WORKFLOW 
• Generujemy strukturę z użyciem Yeomana 
• Dostosowujemy plik .editorconfig
WORKFLOW 
• Generujemy strukturę z użyciem Yeomana 
• Dostosowujemy plik .editorconfig 
• Kod CSS tworzymy w LESS/SASS
WORKFLOW 
• Generujemy strukturę z użyciem Yeomana 
• Dostosowujemy plik .editorconfig 
• Kod CSS tworzymy w LESS/SASS 
• W trakcie prac automatycznie optymalizujemy i testujemy kod z 
użyciem Grunta
WORKFLOW 
• Generujemy strukturę z użyciem Yeomana 
• Dostosowujemy plik .editorconfig 
• Kod CSS tworzymy w LESS/SASS 
• W trakcie prac automatycznie optymalizujemy i testujemy kod z 
użyciem Grunta 
• Przy tworzeniu kodu wspieramy się Emmetem, EmmetLive, 
GutterColor
GDZIE JESZCZE MOŻNA 
ZAOSZCZĘDZIĆ CZAS?
GDZIE JESZCZE MOŻNA 
ZAOSZCZĘDZIĆ CZAS? 
• Testy jednostkowe kodu w PHP i JS
GDZIE JESZCZE MOŻNA 
ZAOSZCZĘDZIĆ CZAS? 
• Testy jednostkowe kodu w PHP i JS 
• Własne rozwiązania testujące kod (np. z użyciem 
CasperJS, PhantomJS, SlimerJS)
GDZIE JESZCZE MOŻNA 
ZAOSZCZĘDZIĆ CZAS? 
• Testy jednostkowe kodu w PHP i JS 
• Własne rozwiązania testujące kod (np. z użyciem 
CasperJS, PhantomJS, SlimerJS) 
• Automatyczne generowanie dokumentacji z kodu
A POZA KODEM?
MARKDOWN
MARKDOWN 
# Nagłówek 
! 
[Link](http://domain.com) 
! 
* Element I 
* Element II 
* Element III
MARKDOWN 
# Nagłówek 
! 
[Link](http://domain.com) 
! 
* Element I 
* Element II 
* Element III
MARKDOWN 
# Nagłówek 
! 
[Link](http://domain.com) 
! 
* Element I 
* Element II 
* Element III 
<h1>Nagłówek</h1> 
! 
<a href=“http://domain.com”>Link</a> 
! 
<ul> 
<li>Element</li> 
<li>Element II</li> 
<li>Element III</li> 
</ul>
BOOKMARKLETY
VIEWPORT RESIZER 
http://lab.maltewassermann.com/viewport-resizer/
DOM MONSTER 
http://mir.aculo.us/dom-monster/
SUBTLE PATTERNS 
BOOKMARKLET 
http://bradjasper.com/subtle-patterns-bookmarklet/
PRZYDATNE APLIKACJE
CIEKAWE APLIKACJE 
Automator
CIEKAWE APLIKACJE 
Automator Alfred
CIEKAWE APLIKACJE 
Automator Alfred 
TextExpander
KONTAKT 
Lead Developer @ www.gavick.com 
! 
@dziudek 
! 
http://dziudek.pl

More Related Content

What's hot

Java Web Start – jak żyć z tą dziwną technologią
Java Web Start – jak żyć z tą dziwną technologiąJava Web Start – jak żyć z tą dziwną technologią
Java Web Start – jak żyć z tą dziwną technologiąMarcinStachniuk
 
Jak tworzyć motywy przyjazne użytkownikom i programistom - WordUp Silesia
Jak tworzyć motywy przyjazne użytkownikom i programistom - WordUp SilesiaJak tworzyć motywy przyjazne użytkownikom i programistom - WordUp Silesia
Jak tworzyć motywy przyjazne użytkownikom i programistom - WordUp SilesiaTomasz Dziuda
 
Jak nadążyć za światem front endu
Jak nadążyć za światem front enduJak nadążyć za światem front endu
Jak nadążyć za światem front enduTomasz Dziuda
 
Word up warszawa 2015
Word up warszawa 2015Word up warszawa 2015
Word up warszawa 2015Tomasz Dziuda
 
Czy powinniśmy się przejmować Core Web Vitals?
Czy powinniśmy się przejmować Core Web Vitals?Czy powinniśmy się przejmować Core Web Vitals?
Czy powinniśmy się przejmować Core Web Vitals?Bartłomiej Miś
 
Wtyczkowe kompendium - WordUp Warszawa
Wtyczkowe kompendium - WordUp WarszawaWtyczkowe kompendium - WordUp Warszawa
Wtyczkowe kompendium - WordUp WarszawaTomasz Dziuda
 
Wtyczkowe Kompendium - WordUp Łódź #12
Wtyczkowe Kompendium - WordUp Łódź #12Wtyczkowe Kompendium - WordUp Łódź #12
Wtyczkowe Kompendium - WordUp Łódź #12Tomasz Dziuda
 
Optymalizacja frontendu w 2022
Optymalizacja frontendu w 2022Optymalizacja frontendu w 2022
Optymalizacja frontendu w 2022Bartłomiej Miś
 
WordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistom
WordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistomWordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistom
WordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistomTomasz Dziuda
 
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
 
Zbyszek Rzepka: GameDev od zaplecza
Zbyszek Rzepka: GameDev od zapleczaZbyszek Rzepka: GameDev od zaplecza
Zbyszek Rzepka: GameDev od zapleczaGameDesire Academy
 
Websites vs Cloud Services - OLMUG
Websites vs Cloud Services - OLMUGWebsites vs Cloud Services - OLMUG
Websites vs Cloud Services - OLMUGBart Zaremba
 
Niezbednik administratora
Niezbednik administratoraNiezbednik administratora
Niezbednik administratoraBartosz Sałach
 
Jak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training DayJak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training DayTomasz Dziuda
 
(node.js) Web development - prościej (pl)
(node.js) Web development - prościej (pl)(node.js) Web development - prościej (pl)
(node.js) Web development - prościej (pl)Mateusz Kwasniewski
 

What's hot (20)

Java Web Start – jak żyć z tą dziwną technologią
Java Web Start – jak żyć z tą dziwną technologiąJava Web Start – jak żyć z tą dziwną technologią
Java Web Start – jak żyć z tą dziwną technologią
 
Jak tworzyć motywy przyjazne użytkownikom i programistom - WordUp Silesia
Jak tworzyć motywy przyjazne użytkownikom i programistom - WordUp SilesiaJak tworzyć motywy przyjazne użytkownikom i programistom - WordUp Silesia
Jak tworzyć motywy przyjazne użytkownikom i programistom - WordUp Silesia
 
Jak nadążyć za światem front endu
Jak nadążyć za światem front enduJak nadążyć za światem front endu
Jak nadążyć za światem front endu
 
Word up warszawa 2015
Word up warszawa 2015Word up warszawa 2015
Word up warszawa 2015
 
Czy powinniśmy się przejmować Core Web Vitals?
Czy powinniśmy się przejmować Core Web Vitals?Czy powinniśmy się przejmować Core Web Vitals?
Czy powinniśmy się przejmować Core Web Vitals?
 
Wtyczkowe kompendium - WordUp Warszawa
Wtyczkowe kompendium - WordUp WarszawaWtyczkowe kompendium - WordUp Warszawa
Wtyczkowe kompendium - WordUp Warszawa
 
Wtyczkowe Kompendium - WordUp Łódź #12
Wtyczkowe Kompendium - WordUp Łódź #12Wtyczkowe Kompendium - WordUp Łódź #12
Wtyczkowe Kompendium - WordUp Łódź #12
 
Optymalizacja frontendu w 2022
Optymalizacja frontendu w 2022Optymalizacja frontendu w 2022
Optymalizacja frontendu w 2022
 
WordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistom
WordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistomWordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistom
WordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistom
 
Testowanie rozwiązań serverless z LocalStack
Testowanie rozwiązań serverless z LocalStackTestowanie rozwiązań serverless z LocalStack
Testowanie rozwiązań serverless z LocalStack
 
Zbyszek Rzepka: GameDev od zaplecza
Zbyszek Rzepka: GameDev od zapleczaZbyszek Rzepka: GameDev od zaplecza
Zbyszek Rzepka: GameDev od zaplecza
 
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?
 
Websites vs Cloud Services - OLMUG
Websites vs Cloud Services - OLMUGWebsites vs Cloud Services - OLMUG
Websites vs Cloud Services - OLMUG
 
Niezbednik administratora
Niezbednik administratoraNiezbednik administratora
Niezbednik administratora
 
Websockety w PHP
Websockety w PHPWebsockety w PHP
Websockety w PHP
 
Jak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training DayJak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training Day
 
(node.js) Web development - prościej (pl)
(node.js) Web development - prościej (pl)(node.js) Web development - prościej (pl)
(node.js) Web development - prościej (pl)
 
Wordpress i frameworki
Wordpress i frameworkiWordpress i frameworki
Wordpress i frameworki
 
Behat
BehatBehat
Behat
 
JavaScript, Moduły
JavaScript, ModułyJavaScript, Moduły
JavaScript, Moduły
 

Similar to Daj się wyręczyć - Joomla Day Polska 2014

WordUp Trójmiasto - Sage 9 w praktyce
WordUp Trójmiasto - Sage 9 w praktyceWordUp Trójmiasto - Sage 9 w praktyce
WordUp Trójmiasto - Sage 9 w praktyceDawid Urbański
 
Prostota i mozliwosci symfony2
Prostota i mozliwosci symfony2Prostota i mozliwosci symfony2
Prostota i mozliwosci symfony2Natalia Stanko
 
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
 
OSGi, deklaratywnie
OSGi, deklaratywnieOSGi, deklaratywnie
OSGi, deklaratywnieCode-House
 
Automatyzacja utrzymania jakości w środowisku PHP
Automatyzacja utrzymania jakości w środowisku PHPAutomatyzacja utrzymania jakości w środowisku PHP
Automatyzacja utrzymania jakości w środowisku PHPLaravel Poland MeetUp
 
Jak zacząć, aby nie żałować - czyli 50 twarzy PHP
Jak zacząć, aby nie żałować - czyli 50 twarzy PHPJak zacząć, aby nie żałować - czyli 50 twarzy PHP
Jak zacząć, aby nie żałować - czyli 50 twarzy PHPPiotr Horzycki
 
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
 
Full Stack JavaScript case study na podstawie Maracuya Jukebox audio player
Full Stack JavaScript case study na podstawie Maracuya Jukebox audio playerFull Stack JavaScript case study na podstawie Maracuya Jukebox audio player
Full Stack JavaScript case study na podstawie Maracuya Jukebox audio playerMarek Będkowski
 
Webinar - Podstawy Node.js
Webinar - Podstawy Node.jsWebinar - Podstawy Node.js
Webinar - Podstawy Node.jsWojciech Kaniuka
 
Angular 4 pragmatycznie
Angular 4 pragmatycznieAngular 4 pragmatycznie
Angular 4 pragmatycznieSages
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkitbartosz_w
 
PHPUnit - jak zacząć pisać testy automatyczne [PL]
PHPUnit - jak zacząć pisać testy automatyczne [PL]PHPUnit - jak zacząć pisać testy automatyczne [PL]
PHPUnit - jak zacząć pisać testy automatyczne [PL]Droptica
 
Michał Dec - Quality in Clouds
Michał Dec - Quality in CloudsMichał Dec - Quality in Clouds
Michał Dec - Quality in Cloudskraqa
 
Deployment kodu z Capistrano
Deployment kodu z CapistranoDeployment kodu z Capistrano
Deployment kodu z CapistranoMichał Szajbe
 
Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16
Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16
Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16Krzysztof Synak
 
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
 

Similar to Daj się wyręczyć - Joomla Day Polska 2014 (20)

WordUp Trójmiasto - Sage 9 w praktyce
WordUp Trójmiasto - Sage 9 w praktyceWordUp Trójmiasto - Sage 9 w praktyce
WordUp Trójmiasto - Sage 9 w praktyce
 
Prostota i mozliwosci symfony2
Prostota i mozliwosci symfony2Prostota i mozliwosci symfony2
Prostota i mozliwosci symfony2
 
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
 
OSGi, deklaratywnie
OSGi, deklaratywnieOSGi, deklaratywnie
OSGi, deklaratywnie
 
Automatyzacja utrzymania jakości w środowisku PHP
Automatyzacja utrzymania jakości w środowisku PHPAutomatyzacja utrzymania jakości w środowisku PHP
Automatyzacja utrzymania jakości w środowisku PHP
 
Jak zacząć, aby nie żałować - czyli 50 twarzy PHP
Jak zacząć, aby nie żałować - czyli 50 twarzy PHPJak zacząć, aby nie żałować - czyli 50 twarzy PHP
Jak zacząć, aby nie żałować - czyli 50 twarzy PHP
 
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
 
Full Stack JavaScript case study na podstawie Maracuya Jukebox audio player
Full Stack JavaScript case study na podstawie Maracuya Jukebox audio playerFull Stack JavaScript case study na podstawie Maracuya Jukebox audio player
Full Stack JavaScript case study na podstawie Maracuya Jukebox audio player
 
Feo w-joomla
Feo w-joomlaFeo w-joomla
Feo w-joomla
 
Webinar - Podstawy Node.js
Webinar - Podstawy Node.jsWebinar - Podstawy Node.js
Webinar - Podstawy Node.js
 
Angular 4 pragmatycznie
Angular 4 pragmatycznieAngular 4 pragmatycznie
Angular 4 pragmatycznie
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
 
PHPUnit - jak zacząć pisać testy automatyczne [PL]
PHPUnit - jak zacząć pisać testy automatyczne [PL]PHPUnit - jak zacząć pisać testy automatyczne [PL]
PHPUnit - jak zacząć pisać testy automatyczne [PL]
 
Michał Dec - Quality in Clouds
Michał Dec - Quality in CloudsMichał Dec - Quality in Clouds
Michał Dec - Quality in Clouds
 
Wprowadzenie do PHPUnit
Wprowadzenie do PHPUnitWprowadzenie do PHPUnit
Wprowadzenie do PHPUnit
 
Deployment kodu z Capistrano
Deployment kodu z CapistranoDeployment kodu z Capistrano
Deployment kodu z Capistrano
 
Jaki framework wybrać
Jaki framework wybraćJaki framework wybrać
Jaki framework wybrać
 
Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16
Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16
Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16
 
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]
 
Wordpress dla każdego
Wordpress dla każdegoWordpress dla każdego
Wordpress dla każdego
 

More from Tomasz Dziuda

Wtyczkowe Kompendium - WordUp Lublin
Wtyczkowe Kompendium - WordUp LublinWtyczkowe Kompendium - WordUp Lublin
Wtyczkowe Kompendium - WordUp LublinTomasz Dziuda
 
Wtyczkowe kompendium
Wtyczkowe kompendiumWtyczkowe kompendium
Wtyczkowe kompendiumTomasz Dziuda
 
Jak Twoja strona moze wygenerować niespodziewane koszta? WordUp Kraków
Jak Twoja strona moze wygenerować niespodziewane koszta? WordUp KrakówJak Twoja strona moze wygenerować niespodziewane koszta? WordUp Kraków
Jak Twoja strona moze wygenerować niespodziewane koszta? WordUp KrakówTomasz Dziuda
 
Jak Twoja strona może wygenerować niespodziewane koszta
Jak Twoja strona może wygenerować niespodziewane kosztaJak Twoja strona może wygenerować niespodziewane koszta
Jak Twoja strona może wygenerować niespodziewane kosztaTomasz Dziuda
 
REST API - teoria i praktyka - WordUp Trójmiasto
REST API - teoria i praktyka - WordUp TrójmiastoREST API - teoria i praktyka - WordUp Trójmiasto
REST API - teoria i praktyka - WordUp TrójmiastoTomasz Dziuda
 
REST API - teoria i praktyka - WordUp Warszawa
REST API - teoria i praktyka - WordUp WarszawaREST API - teoria i praktyka - WordUp Warszawa
REST API - teoria i praktyka - WordUp WarszawaTomasz Dziuda
 
Contributor Day - WordCamp Lublin 2017 - przegląd motywów
Contributor Day - WordCamp Lublin 2017 - przegląd motywówContributor Day - WordCamp Lublin 2017 - przegląd motywów
Contributor Day - WordCamp Lublin 2017 - przegląd motywówTomasz Dziuda
 
Electron + WordPress = ❤
Electron + WordPress = ❤Electron + WordPress = ❤
Electron + WordPress = ❤Tomasz Dziuda
 
Dokąd zmierza WordPress?
Dokąd zmierza WordPress?Dokąd zmierza WordPress?
Dokąd zmierza WordPress?Tomasz Dziuda
 
Statycznie czy dynamicznie? v.2.0
Statycznie czy dynamicznie? v.2.0Statycznie czy dynamicznie? v.2.0
Statycznie czy dynamicznie? v.2.0Tomasz Dziuda
 
Webinar: 5 Tricks for WordPress web administrators
Webinar: 5 Tricks for WordPress web administratorsWebinar: 5 Tricks for WordPress web administrators
Webinar: 5 Tricks for WordPress web administratorsTomasz Dziuda
 
Jak nadążyć za światem front-endu?
Jak nadążyć za światem front-endu?Jak nadążyć za światem front-endu?
Jak nadążyć za światem front-endu?Tomasz Dziuda
 
WordUp Wrocław #3 2015
WordUp Wrocław #3 2015WordUp Wrocław #3 2015
WordUp Wrocław #3 2015Tomasz Dziuda
 
Jak tworzyć motywy przyjazne użytkownikom i programistom?
Jak tworzyć motywy przyjazne użytkownikom i programistom?Jak tworzyć motywy przyjazne użytkownikom i programistom?
Jak tworzyć motywy przyjazne użytkownikom i programistom?Tomasz Dziuda
 
Wprowadzenie do WP-API
Wprowadzenie do WP-APIWprowadzenie do WP-API
Wprowadzenie do WP-APITomasz Dziuda
 
WP-API - teoria i praktyka - WordUp Łódź #4
WP-API - teoria i praktyka - WordUp Łódź #4WP-API - teoria i praktyka - WordUp Łódź #4
WP-API - teoria i praktyka - WordUp Łódź #4Tomasz Dziuda
 
Introduction to ECMAScript 2015
Introduction to ECMAScript 2015Introduction to ECMAScript 2015
Introduction to ECMAScript 2015Tomasz Dziuda
 

More from Tomasz Dziuda (19)

Trello w praktyce
Trello w praktyceTrello w praktyce
Trello w praktyce
 
Wtyczkowe Kompendium - WordUp Lublin
Wtyczkowe Kompendium - WordUp LublinWtyczkowe Kompendium - WordUp Lublin
Wtyczkowe Kompendium - WordUp Lublin
 
Wtyczkowe kompendium
Wtyczkowe kompendiumWtyczkowe kompendium
Wtyczkowe kompendium
 
Jak Twoja strona moze wygenerować niespodziewane koszta? WordUp Kraków
Jak Twoja strona moze wygenerować niespodziewane koszta? WordUp KrakówJak Twoja strona moze wygenerować niespodziewane koszta? WordUp Kraków
Jak Twoja strona moze wygenerować niespodziewane koszta? WordUp Kraków
 
Jak Twoja strona może wygenerować niespodziewane koszta
Jak Twoja strona może wygenerować niespodziewane kosztaJak Twoja strona może wygenerować niespodziewane koszta
Jak Twoja strona może wygenerować niespodziewane koszta
 
REST API - teoria i praktyka - WordUp Trójmiasto
REST API - teoria i praktyka - WordUp TrójmiastoREST API - teoria i praktyka - WordUp Trójmiasto
REST API - teoria i praktyka - WordUp Trójmiasto
 
REST API - teoria i praktyka - WordUp Warszawa
REST API - teoria i praktyka - WordUp WarszawaREST API - teoria i praktyka - WordUp Warszawa
REST API - teoria i praktyka - WordUp Warszawa
 
Contributor Day - WordCamp Lublin 2017 - przegląd motywów
Contributor Day - WordCamp Lublin 2017 - przegląd motywówContributor Day - WordCamp Lublin 2017 - przegląd motywów
Contributor Day - WordCamp Lublin 2017 - przegląd motywów
 
Electron + WordPress = ❤
Electron + WordPress = ❤Electron + WordPress = ❤
Electron + WordPress = ❤
 
Dokąd zmierza WordPress?
Dokąd zmierza WordPress?Dokąd zmierza WordPress?
Dokąd zmierza WordPress?
 
Statycznie czy dynamicznie? v.2.0
Statycznie czy dynamicznie? v.2.0Statycznie czy dynamicznie? v.2.0
Statycznie czy dynamicznie? v.2.0
 
Webinar: 5 Tricks for WordPress web administrators
Webinar: 5 Tricks for WordPress web administratorsWebinar: 5 Tricks for WordPress web administrators
Webinar: 5 Tricks for WordPress web administrators
 
Jak nadążyć za światem front-endu?
Jak nadążyć za światem front-endu?Jak nadążyć za światem front-endu?
Jak nadążyć za światem front-endu?
 
WordUp Wrocław #3 2015
WordUp Wrocław #3 2015WordUp Wrocław #3 2015
WordUp Wrocław #3 2015
 
Jak tworzyć motywy przyjazne użytkownikom i programistom?
Jak tworzyć motywy przyjazne użytkownikom i programistom?Jak tworzyć motywy przyjazne użytkownikom i programistom?
Jak tworzyć motywy przyjazne użytkownikom i programistom?
 
JSztuczki
JSztuczkiJSztuczki
JSztuczki
 
Wprowadzenie do WP-API
Wprowadzenie do WP-APIWprowadzenie do WP-API
Wprowadzenie do WP-API
 
WP-API - teoria i praktyka - WordUp Łódź #4
WP-API - teoria i praktyka - WordUp Łódź #4WP-API - teoria i praktyka - WordUp Łódź #4
WP-API - teoria i praktyka - WordUp Łódź #4
 
Introduction to ECMAScript 2015
Introduction to ECMAScript 2015Introduction to ECMAScript 2015
Introduction to ECMAScript 2015
 

Daj się wyręczyć - Joomla Day Polska 2014