Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - registrovany123

Stran: [1] 2 3 ... 39
1
Vývoj / Re:Framework vs. čistý kód
« kdy: 17. 08. 2025, 21:28:36 »
Každý framework má nějaké části, které nejsou ideální, někdy i úmyslně z důvodu, že se jedná o experimentální složku frameworku a vy jste testeři.

Nebudu tady říkat, co třeba má Spring, se kterým denně dělám, ať se tu zase nepřetahuju zbytečně s Jirsákem.

Mimochodem, není tak velký rozdíl v principu používání mezi Reactem a třeba vanilla PHP. Těch rozdílů není zase tolik, jak by se mohlo zdít, když je mým cílem udělat fungující web. Hlavní a zásadní rozdíl vidím v tom, že React mi umožňuje definovat model pro moje formuláře (tím je JS objekt), kdežto v PHP musím ručně vepisovat "name" atributy (definuju si je jako konstanty).

Tohle umí řešit frameworky, jako např. v Pythonu by to bylo Django a v Javě thymeleaf, které mi umožní si definovat modelové třídy pro jednotlivé formuláře. Bohužel v případě Djanga přichází i řada více méně vnuceným "magic" features, jako je jejich in-built orm a další.

Jakmile ale mám podporu pro to, že si definuju modelovou třídu a ve formáři už používám tento model, tak už je to velice blízké Reactu, kde toho samého dosáhnu "přirozeně" přes JSON.

Co mě hodně sejre je to, že výše uvedené uměl ASP.NET od Micosoftu už dávno jakožto tzv. WebForms, podle robota už od roku 2003. Dělal jsem v tom jen kdysi na výšce, takže nevím, co tam harpuje nehapruje (Jak už jsem řekl, haprující podpora pro templaty v iDE mě už totálně dneska točí).

V Javě to nebyli schopni něco podobného udělat až do vzniku Thymeleafu, a i Thyemeleaf má problémy s fragmaenty a jejich podporou v IDE, kde pro takto zásadní a elementární věc nefunguje ani našeptávání parametrů do fragmentu. To mě brutálně točí.


A proč to říkám a proč mě to tak sejre. Protože tím, že všechno to byly kompromisní technologie, kde jedna měla haprující to a druhá zase ono, tak kvůli tomu je všechny převálcoval React, který má vesměs všechno Done right. A jeden z důvodů, proč je React všechny převálcoval, jsou "ty kecy a kydy" co se tady dlohá desetiletí šířily, že backing kód musí být v separátním souboru, a do template si musím všechno připravit předem a ani Math.round si tam asi nesmím v tom template zavolat. Jedním ze šiřitelů těchto polopravd a frází je mimochodem i Jirsák.

Dneska už jsou ty výše uvedené technologie podle mě na odpadlišti dějin (snad možná kromě PHP), podporu pro Thymeleaf už nikdo nikdy v IDE nefixne a fragmenty nikdo nespraví, je to minulost, všechno už se zaměřilo na React a podobné JS frameworky a v JetBrains to asi moc dobře ví a soustředí podporu tady na tohle.

Bohužel ve světě těch web technologii vzniklo totální odpadiště, a jeden ze strůjců je neschopná firma Oracle a komunita kolem. To co se dělo za těch 30 let v Javě to je totální šílenství a binec.

2
Vývoj / Re:Framework vs. čistý kód
« kdy: 31. 07. 2025, 21:43:42 »
No, to je jedno, každopádně faktem zůstává to, že JSP, JTE a PHP mají 100% fungující IntelliSense a to jako jediné frameworky. Všechno ostatní má IntelliSense s výhradami. React a JS obecně má lepší IntelliSense než Thymeleaf. A největší katastrofa a zklamání je Freemaker, který sice má plně funkcí Intelli Sense pro všechno, co jsem ve Spring MVC controlleru dovniř do template, ale už ten plugin nedokáže zachytit ani to, že si udělám třeba ControllerAdvice, kde si chci vložit svoje util metody pokaždé do modelu. Takže nepoužitelné. A to už je to tady 30 let.

Poučení které z toho pro mě plyne - jakmile uvidím nějaký šablonovací systém, co má IntelliSesnse založený na dedukci toho, s čím se kdesi ve zdrojácích volá render metoda, tak zdrhám pryč. Protože je jasné, že to bude fungovat jako na baterky.

Já už mám pokrk nefungujícího našeptování v templates.

3
Vývoj / Re:Framework vs. čistý kód
« kdy: 29. 07. 2025, 13:34:44 »
Ještě jednou pro méně chápavé, takto vypadá "Šablona je kód". Mám v PHP (JSP,ASP) tohle:

Kód: [Vybrat]
<h1>Seznam uživatelů</h1>

<ul>
<?php foreach ($users as $user): ?>
    <li><?= htmlspecialchars($user['name']) ?></li>
<?php endforeach; ?>
</ul>

A přeloží se to na tohle:

Kód: [Vybrat]
<?php
echo "<h1>Seznam uživatelů</h1>\n";
echo 
"<ul>\n";
foreach (
$users as $user) {
    echo 
"    <li>" htmlspecialchars($user['name']) . "</li>\n";
}
echo 
"</ul>\n";
?>


Není divu, že IDE, které má 100% podporu pro PHP, tak bez potíží i dokáže mít 100% podporu pro výše uvedené, aby se v tom dalo zcela bez výhrad refaktorovat.

4
Vývoj / Re:Framework vs. čistý kód
« kdy: 29. 07. 2025, 13:15:42 »
Jirsák nekecej. JSP se tranformovalo do Servletu, dokonce v Eclipse šlo na JSP soubor kliknout a nechat si zobrazit ten vygenerovaný Java Servlet.

Thymeleaf a podobné to dělá kdoví jak, ale určitě jinak, protože IDE jim pořádně nerozumí.

Takhle Jirsoš funguje "Šablona je kód ®":


Mám PHP. Tohle je PHP kód:

Citace

<?php
    $furtTrableSJirsakem = true;
?>

A pak mám výraz:

Kód: [Vybrat]
<?= Util::localize("Filtr", "Filter") ?>

Který se přeloží vždycky takto:

Kód: [Vybrat]
<?php 
    
echo Util::localize("Filtr""Filter");
?>


Done. Hotovo. Kapiš to? To je celé.

A teď se poď znovu hádat o tom, jak v IDE není řádná podpora pro 100% fungující refactoring v Thymeleaf nebo v čemkoliv podobném, co vymýšlí jakési svoje konstrukce.

5
Vývoj / Re:Framework vs. čistý kód
« kdy: 29. 07. 2025, 12:23:04 »
To je zbytečné bych tu něco psal, nikdo jiný než Kite nebo Jirsák se tu už do diskuze nezapojí.

ještě jednou - řeším tady podporu pro refaktoring pro šablonovací jazyky v IDE, která je špatná, vyjma šablonovacích jazyků psaných ve stylu "šablona se transformuje do kódu" jako JSP, PHP, ASP, JTE.

XSLT nevyhovuje, protože:

1. Musel bych si napsat generování XSD schémat, abych měl při psaní XSLT funkční Intelli Sense pro přístup k modelovým třídám
2. Generování XSD mi zpomalí start aplikace a bude s tím opruz
3. Ikdyž bych to udělal, pořád mi nebude fungovat refaktoring - tzn. když změním atribut v modelové třídě, tak IDE změnu nepropíše automaticky i do XSLT souborů.
4. Funkce sice z XSLT volat můžu, ale musel bych vyrábět další XSD, kde je budu muset ručne definovat, katastrofa
5. A opět mi ani u funkcí nebude automaticky fungovat refaktoring názvů těch funkcí.

Katastrofa. XSLT v ničem z toho, co tu řeším, nepomůže.

6
Vývoj / Re:Framework vs. čistý kód
« kdy: 29. 07. 2025, 11:57:54 »
To je zajímavý nápad, ale vyžadovalo by to generátory XSD schémat, abych mohl psát domain model třídy v tom jazyce, kterém pracuju, takže Python nebo Java.

- Bez těch XSD nebudu mít přístup k Intelli Sense v IDE

Další problém je, že si nemůžu bez toho XSLT pokud vím zavolat třeba nějakou util metodu z Backendu, takže bych musel všechno pedantsky připravit předem v Controlleru.

7
Vývoj / Re:Framework vs. čistý kód
« kdy: 29. 07. 2025, 10:22:23 »
Takhle má vypadat řádný šablonovací jazyk, a přesně takhle fungovaly JSP a 30 let podobně funguvaly PHP, to co vzniklo po JSP je oproti tomu slabota:

https://github.com/casid/jte



https://www.youtube.com/watch?v=K5DALXwOe0s

8
Vývoj / Re:Framework vs. čistý kód
« kdy: 29. 07. 2025, 10:01:04 »
Tohle nefunguje? https://www.jetbrains.com/help/idea/thymeleaf.html
Samozřejmě že funguje. Funguje tam jak napovídání kódu samotných šablon, tak napovídání dat, kterými se šablona plní.

Samozřejmě že nefunguje, lenivý teoretiku Jirsáku, co si to ani nezkusíš sám zapnout, když Ideu Ultimate určitě máš. Funguje perfektně Kitovo PHP, funguje JSP a JTE, ale Thyemeleaf ani žádný jiný custom-language templatovací jazyk perfektně nefungují. A možná by nám i někdo z JetBrains dokázal vysvětlit, proč ani fungovat třeba nemůžou, protože v těch custom jazycích nich třeba něco nesedí, hapruje nebo chybí.

Fungují Šablona-Je-Kód typy templates, ale Šabloje-Je-Můj-Nový-Zbrusu-Nový-Kód templates nefunugje ani jeden.

9
Vývoj / Re:Framework vs. čistý kód
« kdy: 29. 07. 2025, 09:40:37 »
Funguje to asi nejlpíp z šablonovacích jazyků které jsem zkoušel, ale nefunguje to tak dobře, abys udělal refaktor a nemusel se jít podívat case to case co všechno sedí. IDE tomu Thymeleaf totiž 100% nerozumí.

100% fungují jen PHP, prvotní varianta JSP bez EL, nové JTE, fungoval by i JS + React refactor, ale IDE tam 100% nerozumí věcem které se týkají importů souborů, je tam kolem toho nějaký mess.

Refaktor musí fungovat na 100%, ne na 90%, protože jinak musím pokaždé ručně prolízat závislosti a ručně opravovat.


Navíc hrůza je, že nefunguje napovídání vstupních parametrů do fragmentu, a není oživená ani reference že by fungoval proklik na fragment:

Kód: [Vybrat]
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org" lang="cs">
<head><title>Users</title></head>
<body>
<h1>All Users</h1>
<a href="/users/add">Add User</a>
<ul>
    <li th:each="user : ${users}">
        <div th:replace="user_card :: userCard(${user.name}, ${user.email})">${user.email}</div>
        <div th:text="${user.email}"></div>


        <strong th:text="${user.name}">Name</strong> - <span th:text="${user.email}">Email</span>

        <span th:text="${T(com.example.demo.constant.UserConstant).MY_CONST_1234}"></span>
    </li>
</ul>
<span th:text="${@stringUtil.parse123('ahoj')}"></span>
</body>
</html>


A toprosím po 15 letech vývoje. A i tak má ten Thymeleaf asi nejlepší podporu v IDE, co momentálně je. A prřsto nfungují elementární věci, co i v React JS fungují.

10
Vývoj / Re:Framework vs. čistý kód
« kdy: 29. 07. 2025, 09:14:17 »
A ještě refaktor zjevně funguje spolehlivě pro nejnovější Java JTE, protože rovněž je to přímo kód jazyka, jako to měly JSP  ;)

Teoretik Jirsák se z toho zblázní, až se vítr zase otočí a všem dojde, že ty prvotní JSP to dělaly dobře. Thymeleaf je i po 15 letech vývoje a nejlepší možné podpoře ze strany IDE co asi jde udělat, pořád větší shit na refaktoring, než React s Javascriptem. A to je co říct. A proč to tak je? No protože React + JS + HTML (JSX) je taky "šablona-je-kód-systém" stejně tak, jako to měly ty JSP, nebo jako to už 30 let má PHP.

11
Vývoj / Re:Framework vs. čistý kód
« kdy: 29. 07. 2025, 08:47:45 »
To mi chceš říct, že jsi to "podělal", a na PHP, které má skvělou podporu v IDE pro refaktoring všeho, tak jsi tam úplně zbytečně dal šablonovací systém typu Thymeleaf, který má vymyšlené svoje tagy? Takže se to v IDE opět rozbije a nebude nad tím fungovat IntelliSense?
PHP má vymyšlené svoje tagy úplně stejně, jako Thymeleaf. Resp. ještě víc – Thymeleaf je navržen tak, že šablonu v Thymeleafu můžet eudělat tak, že je to pořád HTML soubour zobrazitelný v prohlížeči. To s PHP neuděláte. A IDE mají podporu pro Thymeleaf – pokud nějaké IDE podporu nemá, je to problém toho IDE.

Jirsák, už mi řekneš co ty jsi kdy udělal za web?

Přestaň tady žvatlat ty svoje teorie a otevři si v IntelliJ Ultimate 1 projekt v PHP, 1 projekt v Thymeleaf a k tomu 1 projekt ve starých JSP, a začni refaktorovat.

Takových hlp, co říkají, že něco je problém IDE, už jsem narazil hromadu. Naposledy takoví hlupáci, co podělají Maven build nebo Gradle build, v IntelliJ to je pořád rozbité, a pak říkají, že za to může IntelliJ a ne oni.

IntelliJ je nejlepší IDE na světě, a když něco nepodporuje ani IntelliJ, tak máš smůlu.

Běž a udělel si plugin do IntelliJ, běž a naprogramuj si vlastní Lexer, Parser a ty další věci. To všechno se musí udělat. Když refactor ani v IntelliJ nefunguje spolehlivě pro Thymeleaf, tak to znamená, že to nejde udělat, aby funguoval. Refaktoring spolehlivě funguje pouze pro JSP (ty prvotní verzi bez EL) a PHP, protože je to přímo kód jazyka.

12
Vývoj / Re:Framework vs. čistý kód
« kdy: 29. 07. 2025, 08:16:39 »
Tohle uděláš jak?

Kód: [Vybrat]
<?php foreach ($users as $user): ?>
    <?php if ($user === 'Bob'): ?>
        <li><strong><?= $user ?></strong></li>
    <?php else: ?>
        <li><?= $user ?></li>
    <?php endif; ?>
<?php endforeach; ?>

To mi chceš říct, že jsi to "podělal", a na PHP, které má skvělou podporu v IDE pro refaktoring všeho, tak jsi tam úplně zbytečně dal šablonovací systém typu Thymeleaf, který má vymyšlené svoje tagy? Takže se to v IDE opět rozbije a nebude nad tím fungovat IntelliSense?

13
Vývoj / Re:Framework vs. čistý kód
« kdy: 29. 07. 2025, 07:46:57 »
Akorát jedna věc, co mi vadí na PHP, je že když chci udělat komponentu, tak k ní chci přistupovat jako k funkci, tzn. žebere na vstup nějaké parametry a něco vrací.

Pokud to udělám pomocí include, tak nemám našptání vstupních paremtrů. A pokud si udělám svoji funkci a budu volat tu funkci, tak mi v PHP chybí nějaká pěkná podpora pro multiline html stringy ve stylu JSX. Takže to potom vypadá takto (z DokuWiki)

Kód: [Vybrat]
    public static function fatalException($e)
    {
        $plugin = self::guessPlugin($e);
        $title = hsc(get_class($e) . ': ' . $e->getMessage());
        $msg = 'An unforeseen error has occured. This is most likely a bug somewhere.';
        if ($plugin) $msg .= ' It might be a problem in the ' . $plugin . ' plugin.';
        $logged = self::logException($e)
            ? 'More info has been written to the DokuWiki error log.'
            : $e->getFile() . ':' . $e->getLine();

        echo <<<EOT
<!DOCTYPE html>
<html>
<head><title>$title</title></head>
<body style="font-family: Arial, sans-serif">
    <div style="width:60%; margin: auto; background-color: #fcc;
                border: 1px solid #faa; padding: 0.5em 1em;">
        <h1 style="font-size: 120%">$title</h1>
        <p>$msg</p>
        <p>$logged</p>
    </div>
</body>
</html>
EOT;
    }

To má 2 problémy:

1. Nevypadá to tak pěkně jako JSX v Reactu
2. Nedají se do toho psát pěkně další foreache atd

Dá se to však obejít a udělat toto:

Kód: [Vybrat]
    function renderUserList($users) {
        ob_start();
        ?>
        <ul>
            <?php foreach ($users as $user): ?>
                <li><?= htmlspecialchars($user['name']) ?></li>
            <?php endforeach; ?>
        </ul>
        <?php
        
return ob_get_clean();
    }

A tohle už je docela hustý, ikdyž mi tochu vadí ten ob_clean. Dá se to dát úplně pryč a udělat jen:

Kód: [Vybrat]

    function renderUserList($users) {
        ?>
        <ul>
            <?php foreach ($users as $user): ?>
                <li><?= htmlspecialchars($user['name']) ?></li>
            <?php endforeach; ?>
        </ul>
        <?php
    
}


Ale z toho se mi trochu chcou zbláznit barvy v IDE (to bych asi pořešil) ale není tam ta výhoda toho return. Ale možná to ničemu nevadí?

14
Vývoj / Re:Framework vs. čistý kód
« kdy: 29. 07. 2025, 07:40:10 »
No ale to v tom případě my o voze a ty o koze... V PHP Framework nepotřebuješ nutně mít, na to jsme přišel taky. PHP je snad jediný jazyk do dneška, co už ve vanilce je dělaný ve stylu JSP nebo ASP, nebo JS + HTML, tzn. že PHP kód se dá psát přímo do HTML "templatu" (Jestli se tomu teda vůbec dá říkat template).

A PHP za těch 30 let má naprosto skvělou podporu ve WebStorm, funguje plně refaktoring všeho. A ten refaktoring všeho funguje i díky tomu, že to není jen nějaký zasr* template jako Thymeleaf nebo Jinja nebo Django, ale že je to 1:1 převeditelné na kód. V JSP taky pokud vím fungoval refaktoring, než tam přidali ty tagy.

PHP je do dnešních dnů snad jediná webová technologie, která se drží a je pro ní plný refaktoring. Ikdyž teď přišly nové technologie, v Javě je to JTE, a v .NET myslím že se to jmenuje Blazor, kterými se navrátilo psaní kódu přímo do "templates", jako to bylo za dob JSP.

PHP to tak má už 30 let.

Někdy uvažuju, že bych můj projekt předělal do PHP, ale další jazyk na naučení už nedám, protože už dělám v Javě, Pythonu a JS.

15
Vývoj / Re:Framework vs. čistý kód
« kdy: 29. 07. 2025, 06:26:33 »
Kit, ty jsi jak tajemný hrad v karpatech. Neděláš náhodou v PHP?

Stran: [1] 2 3 ... 39