Týždeň 2022-48

Spustenie ChatGPT je tou "naj" udalosťou poslednej doby. Najskôr začnem s tým, čo ChatGPT je. Je to konverzačný AI model, ktorý bol natrénovaný na datasete, o ktorom nikto nič nevie (čo nie je vlastne ani divné, lebo OpenAI vlastní Elon Musk). Je dostupný po prihlásení na https://chat.openai.com/ a dokáže veci, nad ktorými budete krútiť hlavou. Vie rozumieť kódu, vie "spúšťať" kód, vie skladať básne, vytvárať texty v štýle autora. A vie to aj v iných jazykoch ako angličtine, teda aj v slovenčine a češtine.


Toto je sprievodná diskusia k pôvodnej téme na https://blog.vyvojari.dev/vlko-week-2022-48/
1 Like

Generovanie PDF z HTML je v .NET otrava. Najmä ak wkhtmltopdf je už v podstate mŕtvy projekt a nezvláda ani troška modernejší JavaScript s lambdou. Tu sú momentálne alternatívy

Podla toho clanku alternativa je dalsi mrtvy projekt, alebo nejaky malo znamy wrapper na headless chrome. No nic moc.

Ja som pouzil

  1. na HTML to PDF playwright (oficialny microsoft package na ovladanie browserov, nielen chromium)
  2. na DocX to PDF cez Syncfusion kniznice.

DocX ma tu vyhodu, ze je k tomu pekny designer (Word :slight_smile: ) a podporuje nejaky databinding cez MailMerge, co je wordovska feature. Syncfusion kniznica sa da potom v pripade potreby lahko nahradit za inu kniznicu.

DocX to PDF je pomerne rychle, za mna idealne riesenie. Nieje to pixel perfect, ale ovela lepsie ako HTML to PDF.

Pre nas cesta cez osve designera nepripada do uvahy. Dve sablony by sa nam tazko udrziavali, tak sme viazany na ten HTML. Momentalne to tak stale nejak lepime, aby to slo cez wkhtmltopdf, ale urcite rozmyslame na headless browser. Pre nas nie je problem to urobit cez malu virtualku ako sluzbu. Ale potrebujeme aj custom hlavicky, paticky. Zatial najlepsi kandidat vyzera toto:

maju aj C# verziu

Ja tiez nemam dva templaty na jeden report.
Najprv som robil html, ale potreboval som nieco lepsie, tak som skusil ten DocX a som spokojny, lebo je to rychlejsie, dava to viac moznosti a je k tomu designer, cize si to vie user spravovat aj sam. Nevyhoda je source control - nevidis diffy.

Custom header/footer je samozrejme zaklad pri kazdom reporting systeme, ale samotne headless browsre to podporuju out of the box.

Osobne by som do nejakeho wrappera na pupeteerom/playwrightom nesiel, ale pouzil priamo tie kniznice.

Ten pupeteer-report-csharp urobi len to, ze z tvojej stranky vyreze header a footer a nastavi ho do PpfOptions.HeaderTemplate, resp PpfOptions.FooterTemplate a to nestoji za 3rd party dependency.

Pre predstavu, tu je moj narychlo zbuchany kod,ktory funguje. Musel som sa popasovat s tym, ze vysku footra treba nastavit manualne:

 async Task SetFooter(IPage page, PagePdfOptions options)
{
    IElementHandle? footerEl = await page.QuerySelectorAsync(".page-footer");
    if (footerEl == null)
    {
        return;
    }
    options.DisplayHeaderFooter = true;

    double elemHeight = await footerEl.EvaluateAsync<double>("e => e.offsetHeight");
    options.Margin.Bottom = ((int)elemHeight + 20) + "px";


    string css = await File.ReadAllTextAsync(Path.Combine(_hostingEnvironment.WebRootPath, "css/print.min.css"));
    string footerHtml = await footerEl.InnerHTMLAsync();

    // it looks like footer uses 72 dpi and content 96dpi, therefore zoom: 0.75
    options.FooterTemplate = @$"<style>{css}</style><div style='font-size: 8px; padding-left: 1cm; padding-right:1cm; width: 100vh; zoom: 0.75'>{footerHtml}</div>";
 
    await footerEl.EvaluateAsync("e => e.parentNode.removeChild(e)");
}

ChartGPT Alebo vie za vás napísať potrebný kód.

Co sa tyka kodu, tak akurat dnes som to skusal. Pise to kod ako z priemerneho prispevku na StackOwerflow. A obcas to napisalo vyslovene blbosti.

Fakt by ma zaujimalo na com to trenovali. A ci z toho uz dakto vydoloval kod po licenciu GPL.

Nezabudaj, ze je to konverzacny model, takze on najskor dava take genericke odpovede. Skus mu troska ponadavat na kod a vygeneruje ti lepsi.

Hej skusal som, ale obcas sa vyhovara (no nie na programatorske otazky).

Tak zatial sa o pracu bat nemusim, lebo stale treba “experta” na to aby tej UI ponadaval. No som si isty, ze to bude game changer a nie len v programovani.

A dost by ma zaujimalo, ako to funguje a aj na akom datasete sa ucila, ChatGPT to sam o sebe prezradit nechce :smiley:

“porozpravat sa s chatbotom, aby urobil kod/program podla mojich predstav” - nieje prave toto programovanie, len v inom jazyku?‘’

Okrem toho, ak sa programovanie vdaka AI vyrazne ulahci, prace pribudne, nie naopak. Jedoducho sa bude programovat ovela viac, ten dopyt je snad nevycerpatelny.