Jaký webový framework zvolit?

Re:Jaký webový framework zvolit?
« Odpověď #30 kdy: 06. 09. 2018, 22:29:10 »
neslysel jsi o opcache a fpm?

EDIT: a ne kazdy projekt je velikosti FB/wikipedie
« Poslední změna: 06. 09. 2018, 22:31:34 od to_je_jedno »
Děkuji za možnost editace příspěvku.


xxx

Re:Jaký webový framework zvolit?
« Odpověď #31 kdy: 06. 09. 2018, 22:35:28 »
a to v takovem smyslu ze v Praze najdes tak 5 mist kde neco aktualne delaji v nakym python web frameworku.

Jasně, a proto pravidelně chodí na pražské PyVo kolem stovky lidí.

Jen v Praze se Django používá např. v CZ.NICu, v několika startupech (např. https://www.twisto.cz/kariera/django-vyvojar/ , https://www.cocuma.cz/job/backend-developer/ , https://tech.showmax.com/open-positions/1295946-python-developer/https://stackoverflow.com/jobs/companies/energomonitor), mnoha agenturách a dokonce jsem byl nedávno osloven 2 velkými společnostmi (1.000+),  že u nich teď mají nějaké projekty v Djangu.

Pokud bychom to zobecnili na Python, tak už těch firem je tolik, že to nemá smysl vyjmenovávat, v čele s např. Seznam.cz

Django ma sice jako mnozi tvrdi spickovou dokumentaci ale neni absolutne dobre pro zacatecniky, django je extremne overengineered coz by nevadilo kdyby django tlacilo jednu cestu jak to neco udelat, ale vono vzdy tech cest nabizi 5.

Přesně naopak, Django se drží Zen of Python "There should be one-- and preferably only one --obvious way to do it." Naopak na to narážím při školení lidí z jiných frameworků a jazyků, kteří se na něj snaží napasovat svůj navyklý přístup k věci, místo aby přijali, že Django je "opiniated framework" a věci s v něm dělají určitým způsobem. Ostatně proto bych ho tazateli doporučoval, protože ho ten framework rovnou vede k určitým návykům (které jsou imho dobré).

Naopak v javascriptových projektech, na kterých jsem se podílel (Node.js nebo React), se dost naráželo na to, že existuje příliš mnoho možností a není jasné, kterou z nich zvolit (pro někoho to samozřejmě může být výhoda).

Jano7

Re:Jaký webový framework zvolit?
« Odpověď #32 kdy: 06. 09. 2018, 22:47:04 »
Citace
budete překvapeni, o čem dnes PHP je.
...
Sám moc dobře víte, že každý jazyk má své slabiny a že pro každý se dá
udělat seznam věcí, které prostě nefungují dobře.

Súhlasím s tým, že PHP urobilo veľký kus práce dopredu: opravili sa mnohé nedostatky, je tu composer, frameworky ako Symfony a Laravel, PHP sa výrazne zrýchlil. PHP je veľmi jednoduché nasadiť.

Pretrvávajú však početné nedostatky. Väčšina vznikla preto, lebo sa jazyk vyvíjal hurá štýlom, bez akéhokoľvek plánovania. Veď PHP pôvodne vzniklo ako súbor Perl scriptov, čož teda rozhodne nie je dobrý začiatok. :)

Spomeniem zopár PHP podivností: FALSE, false, true, TRUE. FALSE a TRUE sa dajú predefinovať (!?),
echo true vypíše 1, echo false nevypíše nič. Väčšina jazykov má rôzne typy kolekcií, trebárs zoznamy, slovníky, množiny a pod. PHP má všetko v jednej kolekcii array. Nikdy som nepochopil rozdiely medzi require, require_once, include, include_once.
PHP má nekonzistentné názvoslovie funkcií (Laravel kvôli tomu vytvára špeciálne svoje knižnice), nekonzistentné poradie argumentov funkcií.

Je to veľká škoda, lebo inak by to bol omnoho lepší jazyk.

PetrN

Re:Jaký webový framework zvolit?
« Odpověď #33 kdy: 06. 09. 2018, 23:18:53 »
No, je to zajímavé, jak PHP funguje na některé lidi jako červený hadr na býka, nechtěl bych vidět ty lidi, co dělají v případě Javascriptu a jeho momentální oblíbenosti (frontend, server, mobilní aplikace), to jim asi při veškerém tom chaosu, co se kolem Javascriptu děje, musí prasknout srdce.

PHP
« Odpověď #34 kdy: 06. 09. 2018, 23:30:00 »
Citace
Pretrvávajú však početné nedostatky. Väčšina vznikla preto, lebo sa jazyk vyvíjal hurá štýlom, bez akéhokoľvek plánovania. Veď PHP pôvodne vzniklo ako súbor Perl scriptov, čož teda rozhodne nie je dobrý začiatok.

Ty nedostatky jsou tu proto, že PHP nemá psaný standard jazyka.

Programovací jazyk C byl nic moc, dokud nepřišel jeho psaný ANSI standard. Programovací jazyk C++ byl nic moc, dokud se neustanovil standard C++98. Atd. Java/Python má také své standardy, jinak se nic v jazyce neděje.

Citace
Spomeniem zopár PHP podivností: FALSE, false, true, TRUE. FALSE a TRUE sa dajú predefinovať (!?),
echo true vypíše 1, echo false nevypíše nič.

To je historická záležitost. Byly doby, kdy neexistoval v PHP ani datový typ "boolean" ani "null". Z historických důvodů byl false prázdný řetězec a true celé číslo s hodnotou 1. Echo tuto věc dodnes emuluje.

Pamatuji si doby, kdy null hodnota v MySQL tabulce se vracela v PHP jako false.

Citace
Väčšina jazykov má rôzne typy kolekcií, trebárs zoznamy, slovníky, množiny a pod. PHP má všetko v jednej kolekcii array.

V PHP je všechno řízeno jako "array". Autoři si to prostě zjednodušili ad absurdum.

1) Datový typ "array" je asociativní pole, kde klíč je int/string.

2) Objekt je to samé asociativní pole.

3) Funkce je zase asociativní pole, které nese proměnné.

Citace
Nikdy som nepochopil rozdiely medzi require, require_once, include, include_once.
PHP má nekonzistentné názvoslovie funkcií (Laravel kvôli tomu vytvára špeciálne svoje knižnice), nekonzistentné poradie argumentov funkcií.

Require udělá fatální chybu, když vkládaný soubor neexistuje - a zastaví celý program. Include při neexistenci souboru vyvolá jen warning a program pokračuje.

Cokoli s _once ignoruje vložení, pokud už byl soubor někdy předtím vložen.

Citace
Je to veľká škoda, lebo inak by to bol omnoho lepší jazyk.

Chybí mu málo k dokonalosti. Ale zřejmě jim chybí vývojáři.


Martin

Re:Jaký webový framework zvolit?
« Odpověď #35 kdy: 07. 09. 2018, 05:29:41 »
Tak zatím nejlépe mi z toho vychází node.js. Sice je pravda že nasazení JS na serveru se mi zdá dosti zvláštní, ale většinou o tom všude čtu samou chválu. Python bych ale ještě taky úplně neodepisoval.
O PHP jsem se toho dozvěděl trochu víc než jsem chtěl  :D a tak bych byl rád kdyby mi zde raději někdo porovnal Python a Node.js (a to jak z technické stránky tak i po stránce uplatnění těch technologií v praxi apod...)
Případně navhrněte i nějakou další alternativu.

Re:Jaký webový framework zvolit?
« Odpověď #36 kdy: 07. 09. 2018, 08:16:34 »
Tak ono záleží, co od toho člověk chce... Nicméně pokud jsi doteď dělal v php, tak doporučuji ten JavaScript/Nodejs. Je to zase něco jiného - asynchronní - a jako programátora tě to zase trošku posune. :)

PetrN

Re:Jaký webový framework zvolit?
« Odpověď #37 kdy: 07. 09. 2018, 08:19:38 »
Citace
Tak zatím nejlépe mi z toho vychází node.js
Tak si přečtěte pár článků o node.js a případně komentáře pod nimi. Javascript na serveru je mnohem kontroverznější téma než PHP, Python, atd. :-)

Martin

Re:Jaký webový framework zvolit?
« Odpověď #38 kdy: 07. 09. 2018, 08:40:02 »
Citace
Tak zatím nejlépe mi z toho vychází node.js
Tak si přečtěte pár článků o node.js a případně komentáře pod nimi. Javascript na serveru je mnohem kontroverznější téma než PHP, Python, atd. :-)

To je mi jasné a pár článků jsem o tom již přečetl. Jejich autor je často z node.js bezmezně nadšen. V komentářích se pak objevují zmínky o tom že JS na server nepatří a že celý node je vlastně úplně k ničemu. Myslím že pravda bude někde uprostřed.

Jano7

Re:Jaký webový framework zvolit?
« Odpověď #39 kdy: 07. 09. 2018, 10:50:42 »
Citace
Require udělá fatální chybu, když vkládaný soubor neexistuje - a zastaví celý program. Include při neexistenci souboru vyvolá jen warning a program pokračuje.

Cokoli s _once ignoruje vložení, pokud už byl soubor někdy předtím vložen.

Tomu chápem, akurát to pozajtra zabudnem. Python má jeden import, PHP má na výber štyri možnosti, a teraz programátor musí uvažovať, ktorú si má zvoliť. Je to čo mu sa tuším hovorí zbytočný mental burden.

Ďalšia vec, ktorú som si včera všimol. PHP má podobne ako JavaScript dva operátory na porovnanie, == a ===.
Operátor == má množstvo problémov, napr:

Kód: [Vybrat]
<?php

$x 
'12a';
$y 12;

echo (
$x == $y) ? 'equal' 'not equal';

Príklad vypíše equal. Číslo 12 a string '12b' sú podľa tohoto operátora rovnaké.

Operátor === sa odporúča používať, má odstraňovať problémy ==. Pritom prináša ďalšie problémy, trebárs:

Kód: [Vybrat]
<?php

$x 
100;
$y $x 0.0e0;

echo (
$x ==  $y) ? 'equal' 'not equal';
echo (
$x === $y) ? 'equal' 'not equal';

Pri pripočítaní nuly s desatinnou čiarkou dôjde k situácii, kde operátor === vráti 'not equal'.


Jano7

Re:Jaký webový framework zvolit?
« Odpověď #40 kdy: 07. 09. 2018, 11:31:03 »
Citace
No, je to zajímavé, jak PHP funguje na některé lidi jako červený hadr na býka...

Ja nehatujem PHP, teraz si robím svoj projekt z vlastného rozhodnutia v Symfony. Ako PHPčkar, skús nám radšej povedať, čo s nasledovnými problémami:

a) Máme Symfony controller a v ňom sa pripájame cez DBAL na databázu. Je potrebné nejako explicitne
uzatvoriť objekt connection?
Vraj netreba, lebo PHP má všetko na konci cyklu request/response uzavrieť, ale nejako sa mi to nezdá. V Jave poctivo voláme na objekte connection close metódu.

Kód: [Vybrat]
/**
 * @Route("/getdata", name="getdata")
 */
public function data(Connection $conn)
{
    $data = $conn->fetchAll("SELECT * FROM countries LIMIT 5");

    return $this->json([
        'data' => $data
    ]);
}

b) Nasledujúci kód je  populárnej PHP knihy od Robina Nixona,
https://www.amazon.com/Learning-PHP-MySQL-JavaScript-Javascript/dp/1491978910/ref=dp_ob_title_bk

Kód: [Vybrat]
<?php
$fh 
fopen("testfile.txt"'r') or die("File does not exist or you lack permission to open it");
$line fgets($fh);
$fclose($fh);

$echo $line;

Žiadne ošetrenie chybových stavov. Prepokladám, že die() funkciu nebudeme volať pri webovom projekte, v CLI by to šlo. Zrejme treba ošetriť chybové stavy testovaním návratových hodnôt funkcií fopen, fgets, a fclose. Ako z toho urobiť kóšer príklad?

c) Používať try/catch v kotrolleri alebo nie? Podľa PHP delusions https://phpdelusions.net/delusion/try-catch treba
použiť try/catch len v zriedkavých prípadoch, inak to treba nechať doplávať do systémového kódu, ktorý by mal vygenerovať error page.

Kód: [Vybrat]
$fs = new Filesystem();

try {
    $pd = $this->get('kernel')->getProjectDir();
    $content = file_get_contents($pd . '/templates/' . $filename);

    return $this->render('admin/edit_article.html.twig',
        ['aid'=> $aid, 'title'=>$title, 'slug'=> $slug, 'filename'=>$filename,
        'tags'=> $tags, 'content'=>$content]);

} catch (IOExceptionInterface $ex) {

    $ermsg = "Cound not find the file to edit" . $ex->getPath();

    return new Response($ermsg,  Response::HTTP_CONFLICT,
        ['content-type' => 'text/plain']);
}

Ja som primárne Javista. V Java sa viem obvykle dopátrať ku best practices, v PHP sa mi to zdá viac zamotané .


blahblablah

Re:Jaký webový framework zvolit?
« Odpověď #41 kdy: 07. 09. 2018, 11:35:40 »
a to v takovem smyslu ze v Praze najdes tak 5 mist kde neco aktualne delaji v nakym python web frameworku.

Jasně, a proto pravidelně chodí na pražské PyVo kolem stovky lidí.

Jen v Praze se Django používá např. v CZ.NICu, v několika startupech (např. https://www.twisto.cz/kariera/django-vyvojar/ , https://www.cocuma.cz/job/backend-developer/ , https://tech.showmax.com/open-positions/1295946-python-developer/https://stackoverflow.com/jobs/companies/energomonitor), mnoha agenturách a dokonce jsem byl nedávno osloven 2 velkými společnostmi (1.000+),  že u nich teď mají nějaké projekty v Djangu.

Pokud bychom to zobecnili na Python, tak už těch firem je tolik, že to nemá smysl vyjmenovávat, v čele s např. Seznam.cz

Django ma sice jako mnozi tvrdi spickovou dokumentaci ale neni absolutne dobre pro zacatecniky, django je extremne overengineered coz by nevadilo kdyby django tlacilo jednu cestu jak to neco udelat, ale vono vzdy tech cest nabizi 5.

Přesně naopak, Django se drží Zen of Python "There should be one-- and preferably only one --obvious way to do it." Naopak na to narážím při školení lidí z jiných frameworků a jazyků, kteří se na něj snaží napasovat svůj navyklý přístup k věci, místo aby přijali, že Django je "opiniated framework" a věci s v něm dělají určitým způsobem. Ostatně proto bych ho tazateli doporučoval, protože ho ten framework rovnou vede k určitým návykům (které jsou imho dobré).

Naopak v javascriptových projektech, na kterých jsem se podílel (Node.js nebo React), se dost naráželo na to, že existuje příliš mnoho možností a není jasné, kterou z nich zvolit (pro někoho to samozřejmě může být výhoda).

Jo ja si prosel nedavno vetsinu mist kde se nabizi delat Django (flask nikde nedelaj) - nabizi delat ne dela, o pythonu se vubec nebavime, ten se dela "vsude" jako doplnek jinych veci.

jak sem vyse psal a vy ste to nasledne potvrdil peti linkama, nad vice nez 5 mist se nedostanete, a to je pri vyberu prace zalostne malo, opet to napisu znova, v php/jave/.netu je tady toho "NASOBNE" vice a proto delat v CR (WEB!!!!!) python je uplny nesmysl pro karieru.

Python jako jazyk povazuju za skvelou volbu obecne, ale o tomhle debata vubec neni.

Pokud si jen letmo projedete net, tak vsude se NAOPAK pise ze Django neni VUBEC pythonicke, a s tim naprosto souhlasim. KDYBY existoval klasicky moderni MVC framework v pythonu (napriklad v hodne ohledech podobny railsu) ktery by byl popularni a battletested, pak se tady nebavime co za webovy framework, pac volba by byla jasna.

Django nabizi 5 cest jak udelat hello world. 2 z tech cest jsou archaicke, 1 cesta wannabe unopinionated (vetsinou v dokumentaci), 1 cesta opinionated, 1 cesta  na ktere se za roky vyvoje shodla komunita a vy to musite vyvestit z kristalove koule.

to je to srandovni - djano o sobe pise ze prave je opinionated (souhlas), nacez v dokumentaci se snazi mlzit a nabizet nejake unopinionated pristupy. Opet napisu co jsem psal vyse - Django neumi rict jak to samo chce abys to delal.

Zjistit to trvalo nekolik mesicu a prolezeni nekolika desitek projektu, kde byly ty veci samozrejme uplne jinak nez v dokumentaci (ok, docs jsou schvalne jednoduchy) ale hlavne ty "spravne" veci v dokumentaci vubec ani zminene nejsou, kdybych nasledne mel v dokumentaci vyhledat nejaky komplexni postup na reseni ABC podle vzoru toho jak to maji v nejakem profesionalnim projektu, tak to v te dokumentaci absolutne nenajdu.

Django je psane stylem "ahoj, ty delas 5 roku django? tady mas dokumentaci, urcite uz spoustu veci znas", to je velmi spatne.



blahblablah

Re:Jaký webový framework zvolit?
« Odpověď #42 kdy: 07. 09. 2018, 11:41:26 »
jo a samozrejme se bavime o tom ze clovek pise naprosto standardizovany kod, zamenitelny s kazdym jinym django projektem na svete aby se dalo vubec leveragovat to ze je to framework.

Naprasit v tom nejakou mrdku, kterou nikdo jiny nez jeden dva lidi z jednoho teamu v jedne firme v jednom projektu nerozumi, to umi kazdej lopata, je snad zrejmy ze se bavim o tom jak psat Django idiomaticky.

Re:Jaký webový framework zvolit?
« Odpověď #43 kdy: 07. 09. 2018, 11:43:59 »
Operátor === sa odporúča používať, má odstraňovať problémy ==.

Předpokládám, že to bude jako v JavaScriptu. "Používejte ===, pokud nevíte, co děláte." Samozřejmě nejlepší je vědět. Nicméně ten druhý příklad je wtf! To se jim moc nepovedlo (v JS s tím problém není).  :o

gll

  • ****
  • 429
    • Zobrazit profil
    • E-mail
Re:Jaký webový framework zvolit?
« Odpověď #44 kdy: 07. 09. 2018, 11:44:15 »
to je to srandovni - djano o sobe pise ze prave je opinionated (souhlas), nacez v dokumentaci se snazi mlzit a nabizet nejake unopinionated pristupy. Opet napisu co jsem psal vyse - Django neumi rict jak to samo chce abys to delal.

příklad?