Slidy k přednášce Tomáše Votruby z konference PHP<live> spring 2016.
Pamatuješ Vinetůovky? Takový ten běloch a indián, kteří se nejdřív chtěli zabít, ale pak spolu hráli ještě v další desítce filmů bok po boku jako bratři? Nette a Symfony hrají v současném světě podobnou roli. Co vede k vzájemnému nepochopení? Jak ho otočit v symbiotický prospěch? Ukážu ti, že jsou si docela podobné a jak se snadno naučit ten druhý. Líp pak porozumíš rozdílům a nástrojům, které ti každý z nich přináší.
Ostatně, všichni jsme jedno – PHP programátoři.
Tomáš Votruba – Jako Vinnetou a Old Shatterhand – refaktoruj nenávist v přátelství!
1.
2. Jako Vinnetou
a Old Shatterhand
Refaktoruj nenávist
v přátelství!
Tomáš Votruba, @votrubaT
www.tomasvotruba.cz
PHPLive
11.-12. května 2016
3. 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
4. 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?
6. 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.
7. 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.”
9. 1. Hejtování 101 - proč hejtujeme
● Frustrace
● Nepochopení konceptu
● Strach
● Práce nás nebaví, ale šéf by nás vyhodil,
kdybychom hejtovali jeho
10. 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.
11. 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í
12. 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
13. 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."
22. 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
25. 2. Co mi dalo za 0 Kč?
● Před ApiGenem: fulltime Symfony hater
● A po?
○ Symfony komponenty + NetteDI
○ Trvalá udržitetnost sofwtare
○ CI/testy/coverage
○ Github a jeho open-source ekosystém
○ Jméno v komunitě, sebevědomí...
26. 2. Co jsem pochopil - podobnosti?
● DependencyInjnection ⇔ DI
● EventDispacher ⇔ Events
● Controller ⇔ Presenter
● Twig ⇔ Latte
● HttpKernel ⇔ Application
● HttpFoundation ⇔ Http
● SwiftMailer ⇔ Mail
27. 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)
28. 2. Nette a Symfony se obohacují
Nejen kódem, ale i komunitně
● Konference
● Srazy
● Knížky
● Architektura
● LIDI!
34. 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í
35.
36.
37. 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.
40. 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í
45. 3. Jak si užít naplno? Adaptér!
class MyFileSystem
{
public function delete($file)
{
// NetteUtils, SymfonyFileSystem…?
}
}
46. 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
47. 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
48. 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
50. 3. Integrace Nette do Symfony
● https://github.com/symfonette
○ Neon do SymfonyDependencyInjection
○ TBA: HttpBridge
● https://github.com/kutny/tracy-bundle
○ Tracy (Laděnka)
● http://gtihub.com/symplify/controller-autowire
○ Autowiring pro Controllery
51. 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ěží :)
54. 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!