Ukážeme si, že Doctrine není jenom ORMko a kdy jít o vrstvu níž. Jak DQL naučit věci, které v základu neumí, ale vaše databáze ano. A pár dalších tipů, jak nemít z databáze úplně hloupé úložiště.
Doctrine - Co dělat když entity nestačí [Filip Procházka] (7. sraz, Praha)Péhápkaři
Ukážeme si, že Doctrine není jenom ORMko a kdy jít o vrstvu níž. Jak DQL naučit věci, které v základu neumí, ale vaše databáze ano. A pár dalších tipů, jak nemít z databáze úplně hloupé úložiště.
Ukážeme si, že Doctrine není jenom ORMko a kdy jít o vrstvu níž. Jak DQL naučit věci, které v základu neumí, ale vaše databáze ano. A pár dalších tipů, jak nemít z databáze úplně hloupé úložiště.
Doctrine - Co dělat když entity nestačí [Filip Procházka] (7. sraz, Praha)Péhápkaři
Ukážeme si, že Doctrine není jenom ORMko a kdy jít o vrstvu níž. Jak DQL naučit věci, které v základu neumí, ale vaše databáze ano. A pár dalších tipů, jak nemít z databáze úplně hloupé úložiště.
Jak přemigrovat Slevomat na Doctrine za jedno dopoledneJosef Kříž
Rady, tipy a zkušenosti, které jsem nasbíral při migraci velkého projektu na Doctrine ORM. Ukážeme si, že přechod nemusí nutně znamenat přepis celé aplikace.
Jakub Vrána: Zkušenosti z vývoje ve FacebookuDevelcz
Asi největší odlišností při vývoji Facebooku je odkládání požadavků na
zdroje dat napříč všemi částmi aplikace. K tomu používáme dva koncepty -
tzv. Preparables a operátor yield, který jsme si přidali do našeho
kompilátoru PHP. To umožňuje použít architekturu kešování, která se umí
vypořádat i s velkým množstvím zápisu (někdo něco totiž neustále
„lajkuje“). Kupodivu to i celkem úzce souvisí s XHP, což je prostředek
ke znemožnění XSS.
Na co si dát v Javascriptu pozor? - Barcamp Hradec Králové 2015angular-cz
JavaScript je jazyk, se kterým se všichni občas potkáme, ale ne vždy se chová tak, jak bychom očekávali. Na první pohled vypadá kód v JS podobně jako v jiných jazycích, ale výsledek jeho spuštění je často jiný. Pojďme si projít odlišnosti jazyka a konstrukce, které často působí problémy a nedorozumnění. Přednášet bude Milan Lempera a Víťa Plšek (angular.cz)
Miroslav Bajtoš - Nativní async/await v Node.js - už tam jsme?Develcz
Pouze dvě nová klíčová slova, a tolik nadšení! Co je async/await, proč je to v Node.js komunitě tolik očekáváno? Jak postupuje implementace a jaký je současný stav? V přednášce se dozvíte nejenom odpovědi na tyto otázky, ale taky praktické rady jestli, kdy a jak začít používat async/await už dnes.
Technologie užívané při vývoji velkých e-shopůPeckaDesign.cz
Aby e-shop dokázal obsloužit stovky nebo tisíce požadavků za minutu, musí jeho programátoři vědět, co dělají. Nevystačí si jen se základními znalostmi PHP a MySQL, ale je potřeba využít širší portfolio technologií a technik, které mu zaručí jak dostatečný výkon, tak efektivitu řešení. Představím vám náš technologický stack, díky kterému jsme na špici." - Milan Pála
Po střední škole jsem rok pracoval na HPP a od té doby pracuji jen remote a nebo z homeoffice.
V přednášce mluvím o svých zkušenostech s remote work, proč si myslím že je to pro mě to pravé, ale řeším i proč to není vždy jen růžové.
Jak přemigrovat Slevomat na Doctrine za jedno dopoledneJosef Kříž
Rady, tipy a zkušenosti, které jsem nasbíral při migraci velkého projektu na Doctrine ORM. Ukážeme si, že přechod nemusí nutně znamenat přepis celé aplikace.
Jakub Vrána: Zkušenosti z vývoje ve FacebookuDevelcz
Asi největší odlišností při vývoji Facebooku je odkládání požadavků na
zdroje dat napříč všemi částmi aplikace. K tomu používáme dva koncepty -
tzv. Preparables a operátor yield, který jsme si přidali do našeho
kompilátoru PHP. To umožňuje použít architekturu kešování, která se umí
vypořádat i s velkým množstvím zápisu (někdo něco totiž neustále
„lajkuje“). Kupodivu to i celkem úzce souvisí s XHP, což je prostředek
ke znemožnění XSS.
Na co si dát v Javascriptu pozor? - Barcamp Hradec Králové 2015angular-cz
JavaScript je jazyk, se kterým se všichni občas potkáme, ale ne vždy se chová tak, jak bychom očekávali. Na první pohled vypadá kód v JS podobně jako v jiných jazycích, ale výsledek jeho spuštění je často jiný. Pojďme si projít odlišnosti jazyka a konstrukce, které často působí problémy a nedorozumnění. Přednášet bude Milan Lempera a Víťa Plšek (angular.cz)
Miroslav Bajtoš - Nativní async/await v Node.js - už tam jsme?Develcz
Pouze dvě nová klíčová slova, a tolik nadšení! Co je async/await, proč je to v Node.js komunitě tolik očekáváno? Jak postupuje implementace a jaký je současný stav? V přednášce se dozvíte nejenom odpovědi na tyto otázky, ale taky praktické rady jestli, kdy a jak začít používat async/await už dnes.
Technologie užívané při vývoji velkých e-shopůPeckaDesign.cz
Aby e-shop dokázal obsloužit stovky nebo tisíce požadavků za minutu, musí jeho programátoři vědět, co dělají. Nevystačí si jen se základními znalostmi PHP a MySQL, ale je potřeba využít širší portfolio technologií a technik, které mu zaručí jak dostatečný výkon, tak efektivitu řešení. Představím vám náš technologický stack, díky kterému jsme na špici." - Milan Pála
Po střední škole jsem rok pracoval na HPP a od té doby pracuji jen remote a nebo z homeoffice.
V přednášce mluvím o svých zkušenostech s remote work, proč si myslím že je to pro mě to pravé, ale řeším i proč to není vždy jen růžové.
Pokusil jsem se dát dohromady základní přehled častých chyb, na které člověk v různých webových aplikacích narazí.
Zároveň také otevírám téma striktnosti práce s typy a hodnotami, které se často ignoruje, ale každá opravdu solidní aplikace jej musí řešit.
Rychlé představení dalšího způsobu jak pracovat s daty, který vám umožňuje snadněji řešit invalidaci cache, která se velice snadno stane opravdu komplexní.
5. Eventy v Nette?
class Circle extends NetteObject
{
public $onChange = [];
public function setRadius($radius)
{
$this->radius = max(0, $radius);
$this->onChange($this, $this->radius);
}
6. Eventy v Nette?
$circle = new Circle;
$circle->onChange[] =
function($circle, $newValue) {
echo 'there was a change!';
};
$circle->setRadius(10);
7. Nette magic
class NetteObject
{
public function __call($name, $args)
{
foreach ($this->{"on$name"} as $cb)
{
call_user_func_array($cb, $args);
}
}
9. Co je problém?
class MyControl extends UIControl {
public function handleFoo() {
// logic
$this->presenter->flashMessage('Yatta!');
$this->redirect('Foo:');
}
}
10. Řešení?
class MyControl extends UIControl {
public $onSuccess = [];
public function handleFoo() {
// logic
$this->onSuccess($this, $arg);
}
}
36. Vraťme se na začátek...
public function __construct(
EntityManager $em,
NetteSecurityUser $user,
NetteHttpSession $session
){
37. … a přidejme si jeden event
class OrderProcess
public $onFinish = [];
function finish(Order $order) {
// ...
$this->onFinish($this, $order);
}
38. … a napíšeme si listenery
class OrderMailerListener
implements Subscriber {
function getSubscribedEvents() {
return [
'OrderProcess::onFinish'
];
}
39. … a napíšeme si listenery
class OrderMailerListener
function __construct(IMailer $mailer);
function onFinish(Order $order) {
// ..
$this->mailer->send($message);
}
40. … a napíšeme si listenery
class CreditsRewardListener
function __construct(
Rewarder $r, User $user);
function onFinish(Order $order) {
$this->rewarder->reward(
$this->user->id,
$order->price * 0.05);
}
41. … a napíšeme si listenery
class SmsSenderListener
function __construct(SmsSender $sender);
function onFinish(Order $order) {
// ..
$this->sender->send($message);
}