Jako Vinnetou a Old Shatterhand
Refaktoruj nenávistv přátelství!
Tomáš Votruba, @votrubaTwww.tomasvotruba.cz
PHPLive11.-12. května 2016
Ahoj, já su Tomáš Votruba
● Používám Nette, Symfony a Doctrine
● Konzultuju, radím, školím
● Buduju Symfony komunitu u nás
● Rád sbližuju
Co vám dneska povím
● Jak správně hejtovat?
● Jak využít něco, čemu nerozumím?
● Jak si užívat na plno a nevázat se
● Kam to může jít s Nette a Symfony dál?
Co tady kdo používáte?
● P
● N
● S
● L
● ?
1. Hejtování 101
Jak vypadá správný hejt?
● Cílený na člověka, ne na kód/feature
● Nekonstruktivní
● Nejednoznačný a matoucí
● Srovnávejte, vytvořte nevraživost
tl;dr: Najdetě si hůl a bijte psa.
1. Hejtování 101
“Framework … vůbec neumí. Autoři jsou za
opicema. Tenhle je lepší a dělá to už dlouho
správně.”
“Těchto 10 řádků opravdu nechápu. Celý framework
... je špatný a nepřehledný.”
“Laravel je statické peklo. #blesmrt Nepoužívejte
ho.”
1. Hejtování 101 - trollení
1. Hejtování 101 - proč hejtujeme
● Frustrace
● Nepochopení konceptu
● Strach
● Práce nás nebaví, ale šéf by nás vyhodil,
kdybychom hejtovali jeho
1. Hejtování 101 - positivní dopad
● Nám se konečně uleví - WIN!
● Stres opadne, našli jsme viníka.
● Za všechno stejně můžou uprchlíci.
● Je to přece strašná sranda.
1. Hejtování 101 - negativní dopad
● Bolí to (“ty máš zase menstruaci, viď”)
● Žádný konstruktivní feedback
● Není prostor pro změnu nebo zlepšení
● Demotivace, cokoliv změnit
● Hejtování a trollení zpátky
● Vytváří k vám negativní očekávání
1. Hejtování 101 - opravdový cíl
● Něco změnit!
● Vyřešit problém
● Pochopit, jak to dělat líp a snáz
● Naučit se něco
● Někomu to vrátit za minule
1. Hejtování 101 - vytěžit dobro
● Častá situace v open-source: issue/bug => fix
● “Stačí si uvědomit, že ten správce je někdo, koho
bys měl motivovat k tomu, aby to opravil."
1. Hejtování 101 - vytěžit dobro
1. Hejtování 101 - vytěžit dobro
1. Hejtování 101 - vytěžit dobro
1. A co sranda?
1. Positivní trolení - WTF?
2. Seberozvojem k poznání
● Jak poznat jiné technologie?
● Nejlíp v práci.
● Když to jde, super!
2. Seberozvojem k poznání
2. Zkuste open-source
2. Proč open-source?
● 0 Kč
● Positivní extranalita => x Kč
● Můžete vyzkoušet cokoliv
● Žádný deadline
● Volná pracovní doba
● Chuť bleeding edge
● Experimentování - Learn fast, drop fast
2. Můj první větší open-source
● 2014
2. Berserkr mód open-source
2. Co mi dalo za 0 Kč?
● Před ApiGenem: fulltime Symfony hater
● A po?
○ Symfony komponenty + Nette\DI
○ Trvalá udržitetnost sofwtare
○ CI/testy/coverage
○ Github a jeho open-source ekosystém
○ Jméno v komunitě, sebevědomí...
2. Co jsem pochopil - podobnosti?
● DependencyInjnection ⇔ DI
● EventDispacher ⇔ Events
● Controller ⇔ Presenter
● Twig ⇔ Latte
● HttpKernel ⇔ Application
● HttpFoundation ⇔ Http
● SwiftMailer ⇔ Mail
2. Nette a Symfony se obohacují
● práce s Requstem
● Console
● práci s processy (rm -rf *)
● Security
● OptionsResolver (např. ApiGen s 20 CLI
argumenty)
2. Nette a Symfony se obohacují
Nejen kódem, ale i komunitně
● Konference
● Srazy
● Knížky
● Architektura
● LIDI!
2. Nemáte rok času na OS?
2. Přijďte na PHP konferenci
2. Běžte na sraz toho, co neznáte
● Nette PoSoboty po celé ČR
● Symfony srazy po celé ČR
● Často se ani o Nette/Symfony nemluví
2. U mě nic není :(
“If there is no php group in the town, you are the
leader of it.”
● Tak vlastně vznikla Symfony komunita
● A Python komunita - Pyvo.cz
Jak na to? Ozvěte se mi, rád vám s tím pomůžu.
2. Sejděte s tím, koho obdivujete
2. Tak informace u máme
3. Užívejte na plno a nevažte se
● IT je permanetní hype
○ používá se to, o čem se mluví,
○ ne tolik to, co je objektivně kvalitní nebo
nejlepší
● To že je Vinnetou cool dnes, neznamená,
že za 5 let si ho bude někdo pamatovat
● Jeden z nejrychlejších oborů, které se mění
3. Sexy technologie na 1. pohled?
2015-2017 - Symfony HYPE!?
3. Pozor na vendor lock
3. Každá jednou umře
3. Jak si užít naplno? Adaptér!
class MyFileSystem
{
public function delete($file)
{
// Nette\Utils, Symfony\FileSystem…?
}
}
3. Bezpečnost především
● Všude v aplikace použiješ třídu
MyFileSystem
● Její vnitřnosti si můžeš libovolně změnit
● Umře knihovna? Nevyvíjí se, jak potřebuješ?
Vyměníš ji na 1 místě a ještě dál
3. Nezávazný protip: Delegator!
● Pattern tříd, které jsou jen entry pointem
● Třídy typu...
○ Controller/Presenter
○ Command (do Console)
○ EventSubscriber
● ...jenom volají služby/model
3. Užívej si to, co už je
● Už je tu open-source, který Nette a Symfony
vzájemně integruje
○ Nebo aspoň jejich features
● Vyzkoušejte ho ve svém oblíbeném
frameworku, a uvidíte
3. Integrace Symfony do Nette● https://github.com/kdyby
○ Console
○ Translation
○ Validator
● https://github.com/symnedi
○ Security
○ EventDispatcher
○ SymfonyBundlesExtension - bundle => DI
3. Integrace Nette do Symfony
● https://github.com/symfonette
○ Neon do Symfony\DependencyInjection
○ TBA: HttpBridge
● https://github.com/kutny/tracy-bundle
○ Tracy (Laděnka)
● http://gtihub.com/symplify/controller-autowire
○ Autowiring pro Controllery
4. Podporujte zdravou rivalitu
● Nenechme je usnout na vavřínech!
● Není nic horšího než monopolní projekt
● Když není konkurence, tak:
○ roste technický dluh
○ vznikají mrtvá issues a PR (Doctrine)
○ opadá adrenalin u maintainerů
● A chlapi rádi soutěží :)
4. Hybridní balíčky
- Moje vize: hybrid balicky s DI lepidly do frameworku
Takže co jsem vám chtěl sdělit?
● Hejtovat jde i hezky a dokonce z toho i něco
vytěžit
● Je spousta cest, jak se zadarmo vzdělávat a
využít Nette i Symfony ve svůj prospěch
● Zbytečně se na ně nevažte (pamatujte Nšo-či)
● Podporujte zdravou rivalitu, ta žene vývoj!
Je to na nás!