wajrou

wajrou

@wajrou

učím se terraformovat planety ;-) google hangouts» wajrou (na) gmail (tečka) com

Jan 23, 2021

Re: Laravel testy databáze

wajrou dal hlas Re: Laravel testy databáze

Zalezi od nastavenia, ci tam mas transakcie a rollbacky, alebo migrujes hore dole a tiez kedy sa do tych tabuliek pozeras. Kazdy test by mal zacinat cerstvou DB a byt nezavisly na inych testoch. Ak sa pozeras do DB pri transakcnom spracovani, tam commit nejde nikdy, takze v tabulkach data neuvidis.

Idealne je na testy pouzit SQLite :in_memory:, obcas ale mozes narazit na problem, ze SQLite nepodporuje uplne celu mnozinu (My)SQL dotazov. Ak je testovanie kriticke a testov bude vela - rychlost bude dolezita, je dobre to prisposobit uz v ramci aplikacie a zjednodusit si robotu. Inak potom druha pouzitelna moznost zo skusenosti je in-memory engine MySQL(MariaDB) a transakcie.

Re: Laravel testy databáze

wajrou dal hlas Re: Laravel testy databáze

Nejde na to pouzit assertEquals?

// insert 25 users

$this->assertEquals(25, $users->count());

Co viem, tak priamo nad DB Laravel ponuka len existencne asserty, teda assertDatabaseHas a assertDatabaseMissing...

Dec 14, 2019

Re: Nefunguje registrace

wajrou dal hlas Re: Nefunguje registrace

Registracia cez Twitter aj priama registracia (email&pass) by uz mali fungovat.

Re: Nefunguje registrace

wajrou dal hlas Re: Nefunguje registrace

Tak to aby som sa na to zajtra pozrel! Diky za report.

Moja povodna myslienka bola drzat to ako public repo na githube, ale pokial by som na tom robil sam, tak to uplne nedava zmysel. Za predpokladu ze by sa nasli dalsi dobrovolnici, ktori by realne prispeli do codebase, by som do toho siel. Kludne email na info at domena... :)

Dec 7, 2019

Re: Ako sa dostanem k uloženým cookies?

wajrou dal hlas Re: Ako sa dostanem k uloženým cookies?

A ako pracujes s cookie Ty?

Tipujem, ze cookie len vyrobis, ale neodosles ju v ramci odpovede. Dolezite je uvedomit si zakladnu vec - cookie sa ukladaju v prehlidaci navstevnika/uzivatela. V runtime nemozes ulozit cookie do prehliadaca navstevnika. Cookie potrebujes vyrobit A nasledne poslat s HTTP odpovedou. Jedine to je cesta ako susienku zapisat.

Samotna metoda Cookies::make() sa postara o vytvorenie cookie, ale tu este musis odoslat. Na to mozes pouzit bud

return response('Hello World')->cookie($cookie);

alebo cookie vyrobis a odlozis na odoslanie s najblizsou odpovedou

Cookie::queue('name', 'value', $minutes);

Metoda Cookie::queue() prijma v argumente aj instanciu cookie vytvorenu Cookie::make()

Cookie::queue(Cookie::make('name', 'value', $minutes));

K takto vytvorenym cookies potom pristupujes v ramci aktualneho requestu ako $request->cookie('name'), alebo pouzijes fasadu Cookie tak ako to pravdepodobne robis teraz, pomocou Cookie::get('my_cookie').

Tiez si treba uvedomit, ze ak posles cookie v odpovedi, tak dostupna v requeste bude az v najblizsom HTTP cykle, teda v dalsej poziadavke, ktora ti pride.

Snad to pomoze.

Ako sa dostanem k uloženým cookies?

wajrou odpovedal v téme Ako sa dostanem k uloženým cookies?

Kdykoli chci použít cookies tak se nad tím znovu zamyslím... a nakonec použiji session (dočasné nastavení pro aktuální sezení) nebo databázi (trvalé nastavení pro všechna uživatelova sezení). Session využívá jedinou autentizační cookie (víc cookies zvětšuje HTTP hlavičky pro každou HTTP odpověď), o kterou se Laravel postará sám. Takto uložená data jsou k dispozici i v aktuálním požadavku kdy byla session vytvořena, programátor není omezován na použití jen před odesláním těla odpovědi...

https://laravel.com/docs/6.x/session

// Retrieve a piece of data from the session...
$value = session('key');

// Specifying a default value...
$value = session('key', 'default');

// Store a piece of data in the session...
session(['key' => 'value']);

Laravel Cheatsheet

wajrou vytvoril tému Laravel Cheatsheet

https://learninglaravel.net/cheatsheet/

Sice pro verzi 5, ale většina věcí funguje stejně... Až narazím na aktualizovanější a takto obsáhlý, tak jej tu upravím ;)

Laravel v6 už v auguste 2019

wajrou dal hlas Laravel v6 už v auguste 2019

Dnes len stručne, pretože detaily zatiaľ nepoznáme.

Každopádne, Taylor Otwell na svojej laravelovskej konferencii Laracon (NY) oznámil, že nová verzia Laravelu pôjde na svetlo sveta už v auguste tohto roka. Laravel v rámci releasu verzie 6.0 príde s novým brandingom aj webom. Okrem toho budú ďalšie vydania nasledovať pravidlá sémantického verzovania.

Noviniek bude samozrejme omnoho viac, na tie si však budeme musieť počkať do skončenia Laraconu.

The server requested authentication method unknown to the client [caching_sha2_password]

wajrou dal hlas The server requested authentication method unknown to the client [caching_sha2_password]

Ake riesenie "workaround" pouzivate pre connection Laravel '6.0' s DB MySql '8.0.18'?

V tejto kombinacii hadze php artisan migrate error :

  Illuminate\Database\QueryException  : SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client (SQL: SHOW FULL TABLES WHERE table_type = 'BASE TABLE')

  at /Users/lacike/www/bookingsystem/vendor/laravel/framework/src/Illuminate/Database/Connection.php:665
    661|         // If an exception occurs when attempting to run a query, we'll format the error
    662|         // message to include the bindings with SQL, which will make this exception a
    663|         // lot more helpful to the developer instead of just the database's errors.
    664|         catch (Exception $e) {
  > 665|             throw new QueryException(
    666|                 $query, $this->prepareBindings($bindings), $e
    667|             );
    668|         }
    669| 

  Exception trace:

  1   PDOException::("PDO::__construct(): The server requested authentication method unknown to the client [caching_sha2_password]")
      /Users/lacike/www/bookingsystem/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70

  2   PDO::__construct("mysql:host=127.0.0.1;port=3306;dbname=booking", "root", "SystemUser1", [])
      /Users/lacike/www/bookingsystem/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70

Artisan: Progress bar

wajrou dal hlas Artisan: Progress bar

Pozrime sa na okrajovú záležitosť pre fajnšmekrov, ktorá sa môže hodiť práve vám.

V mnohých projektoch som si všimol, že na zobrazenie aktuálneho stavu vykonávania určitej operácie sa používa vypisovanie na štandardný výstup do konzoly. Je to klasické riešenie, ktoré funguje dobre. Pri rozsiahlejších operáciach však môže dochádzať ku generovaniu neprimerane dlhých výstupov a tým pádom "špineniu" konzoly.

Laravel ponúka veľmi elegantnú možnosť, ako takú situáciu riešiť pomocou progress baru. Riešenie je požičané zo Symfony a funguje naozaj perfektne.

$posts = App\Posts::all();

$bar = $this->output->createProgressBar(count($posts));

foreach ($posts as $post) {
    $this->updatePost($post);

    $bar->advance();
}

$bar->finish();
  1. createProgressBar() vytvorí inštanciu progress baru. Ako parameter definujete celkový počet krokov, ktoré sa budú vykonávať.
  2. V tele cyklu zavoláte advance() zakaždým, keď vykonáte jeden krok
  3. Na záver zavoláte finish(). Zabezpečí, že progress bar bude na 100%.

Poznámka: v prípade, že chcete inkementovať progress bar o viac krokov naraz, stačí metóde advance parametrom predať počet krokov.

Viac infomrácií k progress barom nájdete v dokumentácii Laravelu alebo Symfony

Laravel 6 je vonku

wajrou dal hlas Laravel 6 je vonku

Team okolo Laravelu včera s malým sklzom vypustil do sveta novú verziu frameworku - 6.0.

Okrem sémantického verzovania, spomenutého aj v krátkej správe tu na webe, prichádza v6 s kompatibilitou pre Laravel Vapor a mnohými ďalšími vylepšeniami ale aj úplne novými funkciami.

Zásadnou správou je fakt, že Laravel 6.0je LTS verziou, ktorá bude oficiálne podporovaná do 3.9.2021, resp. 2022 (bugy/bezpečnosť).

Verzia 6.0 nie je prelomovou verziou, a plynule nadväzuje na vylepšenia verzie 5.8. Viac informácií nájdete v oficiálnych release notes.

Zároveň dávam do pozornosti upgrade guide, ktorý obsahuje len minimum zásadných zmien, ktoré sa dotknutú naozaj každého 5.8 projektu.

Upgradu sa netreba báť, naozaj nejde o zásadnú zmenu.

Laravel 6 je vonku

wajrou odpovedal v téme Laravel 6 je vonku

Dlouho jsem odkládal upgrade z předchozí LTS 5.5 (již upgradované z 5.3 a 5.4) s nadšením a očekáváním zajímavých změn... a zabralo mi to nakonec 2 týdny. Upgrady na 5.6, 5.7 a 5.8 jsem měl hotové za pár hodin, ale jen podle uveřejněných změn v Upgrade Guide. Průběžně jsem to ručně testoval a vše vypadalo funkčně. U 6.x jsem se rozhodl projít to opravdu důsledně (diffy proti oficiálnímu repozitáři) a narazil na celou řadu změn, které nikde dokumentované nebyly, a které mi při upgradu na 6.x zajistily spoustu zábavy ;-). Za všechny uvedu pro ukázku jen zrušení příkazu ./artisan app:name (https://github.com/laravel/framework/issues/29810), což mi přišlo již po dřívějších úvahách naprosto logické např. kvůli jednoduššímu rozšiřování kódu aplikace balíčkama (když je vyloženě potřeba plugin, který rozšiřuje kód aplikace, např. class PackageController extends App\Http\Controllers\Controller a nejen pomocí ./artisan vendor:publish)... Překvapilo mne však (a to nejen u téhle změny), že po značném promování této feature ve starších verzích (i v tutoriálech na laracasts.com) to zmizí z nové verze beze slova.

Upgrady jsou důležité pro udržení přehledu v novinkách, objevování architektonických zlepšení (zvlášť když vás to již napadlo než se to dočtete v oficiálních zdrojích nebo jste o tom dokonce diskutovali v issues na githubu s komunitou)... ale někdy to nemusí být až tak pohodlné jak to vypadá na první pohled. Obzvlášť když máte větší projekt nebo dokonce závislosti na laravel balíčkách, které ještě nejsou upgradované.

Re: The server requested authentication method unknown to the client [caching_sha2_password]

wajrou dal hlas Re: The server requested authentication method unknown to the client [caching_sha2_password]

Nastavit pre mysql uzivatela nativne (stary sposob prihlasovania) heslo

alter user 'username'@'localhost' identified with mysql_native_password by 'password';

pripadne pouzit starsiu verziu mysql, alebo mariadb

Dec 6, 2019

Nefunguje registrace

wajrou vytvoril tému Nefunguje registrace

Ahoj, právě jsem se pokoušel zaregistrovat, tak reportuji bugy.

Registrace emailem, uživatelským jménem a heslem vyhodila po timeoutu Whooops. Registrace twitterem mne přesměrovala na 404. Registrace githubem nakonec zafungovala ;)

Docela dlouho očekávám vznik nějaké CZ/SK Laravel komunity, taky jsem si říkal, že zkusím něco vytvořit, ale konečně to vypadá, že už není potřeba ;-) Dobrý počin kontaktovat Taylora. Pokud budete chtít vývoj tohoto webu dělat komunitně, rád čas od času přidám pomocnou ruku.