Notatki Deva Notatki Deva Trochę kodu, trochę gadania

SymfonyWorld 2020: podsumowanie

Minęło już trochę czasu od Symfony World 2020, a ja dopiero piszę podsumowanie. Nigdy tego nie potrafiłem. Wszelkie przemyślenia na temat konferencji czy prelekcji zostawiałem dla siebie. Tym razem spróbuję inaczej, dzieląc się spostrzeżeniami na temat wybranych wystąpień i samej konferencji.

Organizacja Symfony World 2020

Event odbył się na platformie Hopin. Wszystko pod ręką – prelekcje, rozkład jazdy, ścieżki tematyczne, miejsce dla sponsorów. Nawet opcja „networkingu”, gdzie dwie losowe osoby mogły się połączyć na żywo, porozmawiać i wymienić się spostrzeżeniami. Drobne problemy technicznie nie przeszkodziły w pozytywnym odbiorze konferencji.

Wszystkie prelekcje zostały nagrane przed rozpoczęciem konferencji, aby zapewnić jej płynny przebieg. Po zakończeniu wykładu (a często też przed), prelegenci byli dostępni i gotowi na pytania czy dorzucenie kilku informacji. Tutaj bez zmian, w porównaniu z konferencjami „on site”.

Symfony UX

Autorzy: Fabien Potencier i Titouan Galopin

Kluczowe elementy:

  • Komponenty, które wpływają na DX podczas pracy z Symfony.
  • Wiesz, że HttpKernelInterface nie zmienił się od 10 lat?
  • Symfony UX – vanilla JS, SEO friendly i nadal kompatybilne z VueJS/React i innymi.
  • Stimulus pozwala na proste odwołanie się do elementów HTML w JS.

Zaczęło się od zaprezentowania nowego dziecka: Symfony UX. Nareszcie jakieś narzędzie, które nie jest Reactem, Vue czy innym Angularem. Przyznaję, z początku byłem dość sceptycznie nastawiony. No bo po co mam używać jakiegoś dodatkowego narzędzia, skoro wystarczy mi stare dobre document.querySelector? Ale Symfony UX to nie tylko JS. To też połączenie między komponentami PHP i JS. Pod maską wszystkim steruje Stimulus.

Na dzień dobry otrzymaliśmy 5 komponentów:

I tu muszę przyznać, że połączeniem LazyImage, Dropzone i Cropper mnie kupili. No ale nie byłbym sobą, gdybym nie spróbował czegoś zrobić sam. Stwierdziłem, że skoro najprawdopodobniej będę już z tego z wymienionymi komponentami, to dlaczego czegoś nie napisać? Na pierwszy ogień poszedł prosty dropdown. Wiem, że jest już kilka implementacji z wykorzystaniem Stimulusa, ale chodziło o naukę… You know, for science!

import { Controller } from 'stimulus';

export default class extends Controller {
  static targets = ['dropdown'];

  isVisible = false;

  toggle() {
    this.dropdownTarget.style.display = this.isVisible ? 'none' : 'block';
    this.isVisible = !this.isVisible;
  }

  hide(e) {
    if (!this.element.contains(e.target) && this.isVisible) {
      this.toggle();
    }
  }
}
<button data-action="dropdown#toggle [email protected]>dropdown#hide">
    {{ user.name }}
</button>

<div style="display: none" data-target="dropdown.dropdown">
    <a href="/logout">Logout</a>
</div>

10, no może 20 linijek i mamy dropdown, który można wpiąć w dowolnym miejscu. Nic, czego nie można osiągnąć za pomocą czystego JS w podobnym czasie. Po prostu ładnie opakowane.

Nowe Symfony Security

Autor: Ryan Weaver

Kluczowe elementy:

  • Koniec z anonymous user i IS_AUTHENTICATED_ANONYMOUSLY!
  • Koniec kombinowania, czy coś jest w Auth Listener, Auth Manager czy Auth Provider.
  • Prostsza integracja 2FA.
  • Magic login links.

Od wersji Symfony 5.1 dostępny jest nowy system Security. Nowy i uproszczony. Od dawna chciałem przejść ze starego systemu na nowy i opisać to na blogu, ale nie było czasu i chęci na czytanie dokumentacji zmian. 30 minut na prelekcji i wieczorem wdrożyłem. Koniec z pisaniem 3 klas odpowiedzialnych za logowanie użytkownika. Teraz wszystko można zmieścić w 1 klasie. Co ważne, nie ma już IS_AUTHENTICATED_ANONYMOUSLY 🙌. Teraz w listach dostępu można stosować PUBLIC_ACCESS.

DDD dla początkujących

Autor: Neal Brooks

Kluczowe elementy:

  • Przystępne wyjaśnienie aggregate, aggregate root czy bounded context.
  • Przyjemne i łatwe w zrozumieniu przykłady.

Nie ma czegoś takiego, jak „szablon DDD dla mojej aplikacji”. Jednak dla kogoś, kto zna DDD tylko z teorii, przedstawienie tego w taki sposób, jak zrobił to Neal może być gamechangerem. Maksymalnie uproszczony projekt, wyjaśnienie bounded context, aggregate i aggregate root, podział na komendy i handlery, wyodrębnienie domeny, logiki. Wszystko na tacy.

Kod, który powstał do dema w prezentacji dostępne jest na GitHub.

Podsumowanie

Mimo tego, że dużo informacji na konferencji powielało się już z moją wiedzą, nie żałuję wzięcia udziału. Nawet gdy wydaje mi się, że świetnie znam temat, coś może mnie zaskoczyć. Podobała mi się każda prelekcja, w której wziąłem udział (może po prostu dobrze trafiłem?).

Wszystkie prelekcje dostępne są dla uczestników na stronie replays.

A na koniec, kilka dni po Symfony World 2020 został ogłoszony plan SymfonyTour na pierwsze półrocze 2021 roku. Kolejna edycja World już w czerwcu, a po drodze 4 edycje lokalne (czyli odpowiedniki SymfonyLive), w tym SymfonyLive Online Poland 2021. Własny wykład nigdy nie był tak blisko…


comments powered by Disqus