#posobota, s02e01 – pandemická – online stream 28. 3. 2020

chemix
Nette Core | 1310
+
+24
-

posobota je pravidelným místem setkání všech fanoušků programování webových aplikací, ať už to jsou odborníci nebo amatéři. Cestujeme po republice, kde se dá.

Program

15:00 🎤 Přednášky

  • Jakub Englický – Komplexní vývojářský stack pro Nette aplikaci v Dockeru (PHP, MariaDB, Redis, Elasticsearch)
  • Jan Kuchař – Event Sourcing 101 / Proč event sourcing? Co to je? Kdy se to hodí? A jak se v tom neuvařit?
  • Matouš Němec – Latte a typy I., praktický průvodce jak na to.
  • David Grudl – Latte a typy a tipy II.

Záznamy z posoboty najdete na YouTube 📺


posobotu nám pomáhají tvořit partneři děkujeme

Golden partners
IDE partner
Ivorius
Nette Blogger | 119
+
0
-

Paráda

MajklNajt
Člen | 493
+
+6
-

bude aj pivo po prednáškach? :)

chemix
Nette Core | 1310
+
+1
-

program hotov ;-)

chemix
Nette Core | 1310
+
0
-

ale ty palive obedy budem muset nejak vyresit :-) jsem se tesil na nejakou indickou kuchyn ;-)

chemix
Nette Core | 1310
+
+1
-

časový harmonogram

15:00 – zahájení vysílání

15:10 – Jakub Englický – Komplexní vývojářský stack pro Nette aplikaci v Dockeru (PHP, MariaDB, Redis, Elasticsearch)
16:00 – 16:10 – otázky

16:15 – 17:00 — Jan Kuchař – Event Sourcing 101 / Proč event sourcing? Co to je? Kdy se to hodí? A jak se v tom neuvařit?
17:00 – 17:10 — otázky

17:15 — 17:45 — Matouš Němec – Latte a typy I., praktický průvodce jak na to.
17:45 – 17:55 — otázky

18:00 – 18:30 – David Grudl – Latte a typy a tipy II.
18:30 – 18:40 – otázky

18:40–19:00 – panelová diskuse – otázky z publikace + poznámky z publika

19:00 – 19:05 – rozloučení

spagr
Člen | 17
+
+1
-

Máte někdo tip na hosting, který by byl cenově přijatelný na osobní a nekomerční projekty a dal se tam provozovat Docker?

chemix
Nette Core | 1310
+
0
-

pouzijme tento prostor pro dalsi otazky, na ktere nezbyl cas ve streamu

chemix
Nette Core | 1310
+
0
-

@spagr asi nejaka levna VPS ? ale musis si to resit sam. Nebo pak nejakej k8s? Vim ze rosti.cz ma hosting v dockeru … ale myslim ze to maji udelane jen tak pro izolaci uzivatelu, nez ze by ti umoznili doinstalovavat vlastni docker balicky

chemix
Nette Core | 1310
+
+1
-

Dotaz @HonzaKuchař existuje neco jako „Doctrine“ nebo obecne „ORM“ tak nejakej PHP system na vykopnuti a usnadneni techto event style ukladani entit? Nebo to mas nejak magicky napojene na Doctrine?

Hologos
Člen | 19
+
0
-
  1. Proč je třída DefaultTemplate final? Takhle si budu muset generovat všechny std. property u každé *Template, a pokud se přidá další std. property, tak to bude celkem otročina to přidat do všech *Template tříd.
  2. Ohledně té featury {formPrint}, v tom výsledném kódu chybí vypsání chyb z $form->addError(). V jednom formuláři mi to chybělo a uživatelé pak netušili, co se děje, že se jim nedaří vytvořit objednávka.

Editoval Hologos (28. 3. 2020 23:20)

David Grudl
Nette Core | 8218
+
0
-

Nemusíš si generovat všechny standardní property u každé template, generuj jen ty, které opravdu používáš. Sám používám občas $basePath, $user, $flashes a vyjímečně $presenter. A ten má navíc v každé šabloně jiný typ.

ad formPrint: dobrý postřeh, doplním

chemix
Nette Core | 1310
+
0
-
F.Vesely
Člen | 369
+
+2
-

@Hologos Vsak pouzij svuj vlastni BaseTemplate, jak ukazoval David ve videu.

Hologos
Člen | 19
+
0
-

F.Vesely napsal(a):

@Hologos Vsak pouzij svuj vlastni BaseTemplate, jak ukazoval David ve videu.

Nakonec mi to taky došlo, ale už jsem to tu nechal :-)
Správnější řešení ale nejspíše bude to, co psal David. Tedy posílat tam opravdu jen to, co má pro danou šablonu smysl.

Díky za nasměrování.

Editoval Hologos (29. 3. 2020 12:58)

kuba.englicky
Člen | 3
+
+7
-

Ahoj,
díky za sledování mé včerejší přednášky. Hodil jsem ukázku kódu, který jsem včera použival na Github, tak se můžete podívat na kompletní konfiguraci, a případně si to sami vyzkoušet. https://github.com/…a-pandemicka


Co se týká hostingu pro provoz docker appek. Já jsem používal CloudVPS u Forpsi a nyní používám DigitalOcean.

Petr Parolek
Člen | 455
+
0
-

Ahoj, zkouším rozjet stack z githubu, ale skončím s chybou:

Pulling console (posobota_web:)...
pull access denied for posobota_web, repository does not exist or may require 'docker login': denied: requested access to the resource is denied

Jak mám prosím vytvořit image posobota_web?

Editoval ppar (1. 4. 2020 19:03)

CZechBoY
Člen | 3608
+
0
-

@ppar Nejspíš docker-compose build

jiri.pudil
Nette Blogger | 1029
+
0
-

chemix napsal(a):

Dotaz @HonzaKuchař existuje neco jako „Doctrine“ nebo obecne „ORM“ tak nejakej PHP system na vykopnuti a usnadneni techto event style ukladani entit? Nebo to mas nejak magicky napojene na Doctrine?

Používáme řešení zčásti vlastní, zčásti postavené na balíčcích Prooph – zejména prooph/pdo-event-store, což je právě ta část persistující události, na kterou se ptáš. Vedle Prooph existuje mj. ještě Broadway, ale to jsem jen zahlédl, nemám s tím nemám zkušenosti.

F.Vesely
Člen | 369
+
+1
-

@ppar Docker compose defaultně pojmenovává image, který builduje, jako <nazev-slozky>_<nazev-sluzby>. Takže si to buďto hoď do složky posobota, nebo si do služby web přidej image: posobota_web.

Petr Parolek
Člen | 455
+
+1
-

@FVesely díky moc, s dockerem si občas hraju léta. Pořád pro mě je docker velká magie.

CZechBoY
Člen | 3608
+
+1
-

Aha, já koukám proč potřebuješ zrovna tohle jméno… No jo, to někdo nedopsal image do hlavního docker-compose.yml :-)

roman.campula
Člen | 60
+
0
-

Ahoj,
David ukazoval v přednášce Latte a typy a tipy (https://youtu.be/WjQEKw186zc?…) jak jdou vytvořit šablony k různým view a tyto šablony dědí od obecnější BaseTemplate. Pěkná věc, to se mi líbí. Podařilo se mi to zprovoznit, ale narazil jsem na problém s vlastními funkcemi vyžadujícími další závislosti. Umím si vytvořit vlastní funkci assetGlobal, která je dostupná ze všech view. Pokud však potřebuji v dané funkci nějakou závislost (zde třídu obsahující obecné parametry), tak to už nevím, jak ji tam předat. Přes konstruktor mi to nejde.

Můžeme mi prosím poradit, jak si mám do BaseTemplate předat nějaké závislosti, které budu následně vyžívat pro tvorbu obecných funkcí a filtrů?

Díky

TestPresenter.php

class TestPresenter extends Nette\Application\UI\Presenter {
  function __construct() {
    parent::__construct();
  }

  function renderDefault() {
    $template = $this->createTemplate(TestDefaultTemplate::class);
    $this->sendTemplate($template);
  }
}

class TestDefaultTemplate extends WebModule\Templates\BaseTemplate {
  use Nette\SmartObject;
}

BaseTemplate.php

class BaseTemplate extends Nette\Bridges\ApplicationLatte\Template {
  use Nette\SmartObject;

  public AppModule\Model\Parameters $parameters;

  function __construct(Latte\Engine $latte) {
    parent::__construct($latte);

    $this->addFunction("assetGlobal", function ($file) {
      $fileResult = $file . "?domain=" . $this->parameters->domain; // zde potřebuji získat závislost na parameters

      return $fileResult;
    });
  }
}

default.latte

{assetGlobal('/system/ajax/nette.ajax.min.js')}

Editoval roman.campula (26. 5. 2020 20:03)

Honza Kuchař
Člen | 1662
+
0
-

chemix napsal(a):

Dotaz @HonzaKuchař existuje neco jako „Doctrine“ nebo obecne „ORM“ tak nejakej PHP system na vykopnuti a usnadneni techto event style ukladani entit? Nebo to mas nejak magicky napojene na Doctrine?

Promiň, přehlédl jsem e-mail. Na ukládání eventů používáme obyčejnou tabulku s json-encoded eventy. Odkazy na inspiraci můžeš nalézt zde: https://gitlab.grifart.cz/…er/README.md Zároveň plánuji časem zveřejnit (když mi napíšete, dáte tím vědět, že je o to zájem) systém na serializaci a generování kódu, který se při aplikace této architektury velmi hodí.

Případně velmi minimalisticky pojaté ukládání v ES aplikaci najdeš v této přednášce z Nette Campu. https://www.facebook.com/…52243854364/

Editoval Honza Kuchař (26. 8. 2020 12:32)