• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    LUCIENVibe coding
    Diskuze věnovaná vibe codingu. Někdo ho nenávidí, jiní ho milují. Je to jen buzzword, nebo budeme za 10 let všichni vajbkódovat?

    Cílem diskuze nebude flame, ale praktické rady a ukázky. V práci AI a obecně vibecoding pomalu začleňujeme do procesů, protože správné použití zdá se skutečně může určité flows dost zrychlit a usnadnit. Pokud se teda člověk nedostane do loopu.

    Jak ho používáte vy?
    rozbalit záhlaví
    DWICH
    DWICH --- ---
    SKAFF: Me spis zajima, jak to v praxi mas zapojene do workflow a jaky nastroje na to pouzivas. Delas to rovnou behem vyvoje? Hlidas pak neco v CI? Mas tam na to nejakej feedback loop, kdyz AI udela novou cast kodu, tak to muze dostat zpatky k prepracovani, protoze to neodpovida pozadavkum na kvalitu?
    REFLEX
    REFLEX --- ---
    SKAFF: jake AI to zprasilo?
    SKAFF
    SKAFF --- ---
    Jako nedev co vytváří a udržuje midsize React/Typescript appky (30k LOC+) neschopnej dělat code review (protože reálně tomu rozumim v konceptech, moc ne v kódu) jsem si musel udělat nějakou stukturu pro průběžnou statickou analýzu kvality a hygieny kódu, kterou AI často tvoří blbě kvůli změnám modelů, kontext driftu i použitím různých toolů v čase (a špatnýmu promptingu:)

    Což jsem udělal pozdě, a teď trávim hromadu času narovnáváním, protože to prostě už driftuje a začíná bejt neudržitelný. Možná to někomu pomůže, ať už jste v podobný fázi, nebo použít jako inspiraci pro vstup pro na začátku, jako mantinely / code standards, ke kterým se vracet

    můj static matrix v "industry standard" taxonomii
    --
    Maintainability Index - obecná metrika pro vyhodnocení složitosti a struktury, "udržitelnost"
    Cyclomatic Complexity - branching v kódu, milion featur v jedné komponentě, složitost testovatelnosti
    Cognitive Complexity - čitelnost kódu pro člověka, 10 vnořených ifů a podobně
    Code Duplication / Clones - opakující se identický bloky kódu (70x if (error) throw error after něco)
    Type Safety & Type Coverage Analysis - chybějící / nekorektní types
    Dead Code / Unreachable Code Detection - nevolané funkce, neimportované variables a podobný bordel
    Dependency Analysis (Coupling & Cohesion) - vazby jednotlivých modulů na sebe a riziko "změním něco v A a rozsype se mi B", nebo třeba když feature importuje něco přímo z jiné feature
    Code Churn & Hotspot Analysis - složitý a zároveň často updatovaný části kódů (podle gitu), kde je vyšší riziko průseru

    Dělat analýzu AI kódu využitím AI mi samo přijde jak hasit oheň dřevem, ale lepší, než to neřešit vůbec. A každej version bump u Opusu to zpřesňuje
    WOJTISHEK
    WOJTISHEK --- ---
    QWWERTY: nice, podělíš se někde na githubu?
    QWWERTY
    QWWERTY --- ---
    konecne jsem nasel vyuziti pro prehistoricke RasPi 1B
    $3.2 za 4.7 Opus, 3x planning a 1x act prompt. dal to na prvni pokus

    RUTHER
    RUTHER --- ---
    Cože? Fórum o vibe-codingu!

    QWWERTY
    QWWERTY --- ---
    ad nedavno diskutovany Lovable - [FARIN @ Artificial Intelligence AI]
    TOM
    TOM --- ---
    kdybyste chtěli vidět kapitoly markdownu v Notepad++ panelu Functions, tak tady jsem si dovolil z vlastní zahrádky .cmd skript (je pak potřeba Windows logout/login):
    @@ setlocal
    @@ set PS_WRAPPER_PATH=%~f0
    @@ set PS_WRAPPER_ARGS=%*
    @@ if defined PS_WRAPPER_ARGS set PS_WRAPPER_ARGS=%PS_WRAPPER_ARGS:"="%
    @@ PowerShell -sta -NoProfile -Command Invoke-Expression $('$args=@(^&{$args} %PS_WRAPPER_ARGS%);'+[String]::Join([Environment]::NewLine,$((Get-Content '%PS_WRAPPER_PATH%' -Encoding UTF8) -notmatch '^^@@^|^^:'))) & endlocal & exit /b
    
    $ErrorActionPreference = "Stop"
    
    # Explicit assembly loading
    Add-Type -AssemblyName System.Windows.Forms
    Add-Type -AssemblyName System.Drawing
    
    function Show-Error {
        param([string]$Message)
        [void][System.Windows.Forms.MessageBox]::Show(
            $Message,
            "Notepad++ Markdown Function List - Error",
            [System.Windows.Forms.MessageBoxButtons]::OK,
            [System.Windows.Forms.MessageBoxIcon]::Error
        )
    }
    
    function Show-Info {
        param([string]$Message)
        [void][System.Windows.Forms.MessageBox]::Show(
            $Message,
            "Notepad++ Markdown Function List",
            [System.Windows.Forms.MessageBoxButtons]::OK,
            [System.Windows.Forms.MessageBoxIcon]::Information
        )
    }
    
    function Find-NotepadPlusPlus {
        # Try registry first (default value on the Notepad++ key holds the install path)
        $regPaths = @(
            "HKLM:\SOFTWARE\Notepad++",
            "HKLM:\SOFTWARE\WOW6432Node\Notepad++",
            "HKCU:\SOFTWARE\Notepad++"
        )
        foreach ($regPath in $regPaths) {
            if (Test-Path $regPath) {
                try {
                    $key = Get-Item -Path $regPath -ErrorAction Stop
                    $installPath = $key.GetValue("")
                    if ($installPath -and (Test-Path (Join-Path $installPath "notepad++.exe"))) {
                        return $installPath
                    }
                } catch {}
            }
        }
    
        # Fall back to common install locations
        $commonPaths = @(
            "$env:ProgramFiles\Notepad++",
            "${env:ProgramFiles(x86)}\Notepad++",
            "$env:LOCALAPPDATA\Programs\Notepad++"
        )
        foreach ($path in $commonPaths) {
            if ($path -and (Test-Path (Join-Path $path "notepad++.exe"))) {
                return $path
            }
        }
    
        return $null
    }
    
    function Test-NppRunning {
        try {
            $proc = Get-Process -Name "notepad++" -ErrorAction SilentlyContinue
            return ($null -ne $proc)
        } catch {
            return $false
        }
    }
    
    try {
        # ---- 1. Locate Notepad++ installation ----
        $nppPath = Find-NotepadPlusPlus
        if (-not $nppPath) {
            Show-Error ("Notepad++ installation was not found.`n`n" +
                        "Checked:`n" +
                        "  - Registry (HKLM/HKCU\SOFTWARE\Notepad++)`n" +
                        "  - $env:ProgramFiles\Notepad++`n" +
                        "  - ${env:ProgramFiles(x86)}\Notepad++`n" +
                        "  - $env:LOCALAPPDATA\Programs\Notepad++`n`n" +
                        "Please install Notepad++ first, then re-run this script.")
            exit 1
        }
    
        # ---- 2. Ensure user config folder exists ----
        $userConfigPath = Join-Path $env:APPDATA "Notepad++"
        if (-not (Test-Path $userConfigPath)) {
            Show-Error ("Notepad++ user config folder not found:`n  ${userConfigPath}`n`n" +
                        "Please launch Notepad++ at least once so it creates its config folder, " +
                        "then re-run this script.")
            exit 1
        }
    
        $functionListPath = Join-Path $userConfigPath "functionList"
        if (-not (Test-Path $functionListPath)) {
            [void](New-Item -Path $functionListPath -ItemType Directory -Force)
        }
    
        # ---- 3. Write the parser file (udl_markdown.xml) ----
        $parserXmlPath = Join-Path $functionListPath "udl_markdown.xml"
        $parserXml = @'
    <?xml version="1.0" encoding="UTF-8"?>
    <NotepadPlus>
      <functionList>
        <parser id="udl_markdown.xml" displayName="Markdown (preinstalled)" ext="md" commentExpr="(?ms)^\h*\x60{3,}.*?^\h*\x60{3,}">
          <function mainExpr="(?-s)^[ \t]*(#{1,6}[ \t].+)$">
            <functionName>
              <nameExpr expr="(#{1,6}[ \t].+)"/>
            </functionName>
          </function>
        </parser>
      </functionList>
    </NotepadPlus>
    '@
    
        $utf8NoBom = New-Object System.Text.UTF8Encoding $false
        [System.IO.File]::WriteAllText($parserXmlPath, $parserXml, $utf8NoBom)
    
        # ---- 4. Create or merge overrideMap.xml ----
        $overrideMapPath = Join-Path $functionListPath "overrideMap.xml"
        $udlNames = @("Markdown (preinstalled)", "Markdown (preinstalled dark mode)")
        $backupPath = $null
        $overrideMapHandled = $false
    
        if (Test-Path $overrideMapPath) {
            # Back up whatever is there before touching it
            $backupPath = "$overrideMapPath.bak"
            Copy-Item -Path $overrideMapPath -Destination $backupPath -Force
    
            try {
                [xml]$overrideXml = [System.IO.File]::ReadAllText($overrideMapPath)
    
                $npp = $overrideXml.SelectSingleNode("/NotepadPlus")
                if ($null -ne $npp) {
                    $funcList = $npp.SelectSingleNode("functionList")
                    if ($null -eq $funcList) {
                        $funcList = $overrideXml.CreateElement("functionList")
                        [void]$npp.AppendChild($funcList)
                    }
    
                    $assocMap = $funcList.SelectSingleNode("associationMap")
                    if ($null -eq $assocMap) {
                        $assocMap = $overrideXml.CreateElement("associationMap")
                        [void]$funcList.AppendChild($assocMap)
                    }
    
                    foreach ($udlName in $udlNames) {
                        $existing = $assocMap.SelectSingleNode("association[@userDefinedLangName='$udlName']")
                        if ($null -ne $existing) {
                            $existing.SetAttribute("id", "udl_markdown.xml")
                        } else {
                            $newAssoc = $overrideXml.CreateElement("association")
                            $newAssoc.SetAttribute("id", "udl_markdown.xml")
                            $newAssoc.SetAttribute("userDefinedLangName", $udlName)
                            [void]$assocMap.AppendChild($newAssoc)
                        }
                    }
    
                    $overrideXml.Save($overrideMapPath)
                    $overrideMapHandled = $true
                }
            } catch {
                # Malformed XML - fall through to write a fresh file (backup preserved)
            }
        }
    
        if (-not $overrideMapHandled) {
            $overrideContent = @'
    <?xml version="1.0" encoding="UTF-8" ?>
    <NotepadPlus>
        <functionList>
            <associationMap>
                <association id="udl_markdown.xml" userDefinedLangName="Markdown (preinstalled)" />
                <association id="udl_markdown.xml" userDefinedLangName="Markdown (preinstalled dark mode)" />
            </associationMap>
        </functionList>
    </NotepadPlus>
    '@
            [System.IO.File]::WriteAllText($overrideMapPath, $overrideContent, $utf8NoBom)
        }
    
        # ---- 5. Build confirmation message ----
        $nppRunning = Test-NppRunning
        $runningMsg = if ($nppRunning) {
            "`n`nWARNING: Notepad++ is currently running. Close and restart it for changes to take effect."
        } else {
            "`n`nStart Notepad++, open a .md file, then: View > Function List"
        }
        $backupMsg = if ($backupPath) {
            "`n`nExisting overrideMap.xml backed up to:`n  $backupPath"
        } else {
            ""
        }
    
        Show-Info ("Setup complete.`n`n" +
                   "Notepad++ install: $nppPath`n`n" +
                   "Files written:`n" +
                   "  - $parserXmlPath`n" +
                   "  - $overrideMapPath" +
                   $backupMsg +
                   $runningMsg)
    
    } catch {
        Show-Error ("An unexpected error occurred:`n`n" +
                    "$($_.Exception.Message)`n`n" +
                    "At: $($_.InvocationInfo.PositionMessage)")
        exit 1
    }
    
    STEMBUS
    STEMBUS --- ---
    TADEK: pres VPN by to nedal asi nikdo z nich, uz takhle je vsechny na dalku pres syna navigovat jakou musej mit verzi a jak si zadat custom server je vcelku challengeb😁😅 takže je to vystaveny na verejce no
    TADEK
    TADEK --- ---
    STEMBUS: to je super, pritom takova blbost! to ti bezi doma na nejaky verejny IP nebo tam kiddos pristupujou pres VPN?
    STEMBUS
    STEMBUS --- ---
    taky se přidám s jedním mým "seznamovacím" projektem - seznamování s vibecodingem a Claude Codem (nikdy sem nic neprogramoval, max v assembleru na vejšce :))

    udělal sem si self-hosted web appku pro monitoring mého vlastního minecraft serveru (který provozuju pro syna a jeho kámoše :) - minecraft server, stejně tak jako tahle app hostovaný jako DOCKERy na Synology NASu

    Cílem bylo aby na základě herní aktivity na serveru appka automaticky generovala denní reporty toho co se na serveru dělo, v podobě "kroniky" která bude čitelná a zábavnáí hlavně pro děcka ;)

    Po Claude Code sem to chtěl udelat celé šité na míru synology prostředí, běžící v container manageru atd, takže i ten Docker ve kterém to vše běží jsem dělal sám s pomocí Claude (můj první vlastní docker :)

    Stack: Python / FastAPI backend, Jinja2 HTML šablony, SQLite databáze

    Na Minecraft serveru mi běží CoreProtect plugin, což je jakási ochrana před tím když by se někdo rozhodl ve hře celý svět (v MC) zničit, plugin obsahuje vlastní DB, kterou jsem využil právě pro tvorbu těch reportů

    Čili python skript si každý den z té DB vytáhne data a dá jim nějakou strukturu (abych ušetřil tokeny a mohl Gemini využívat ve free tieru), kterou pak přes API posílá do Gemini - v APPce existuje proměnná "styl" která ovlivňuje výsledný "styl" reportu, které na základě odeslaných dat daného dne Gemini vrátí jako výsledek toho API volání - to je pak převedeno do html výstupu a publishnuto na web serveru onoho synology :)

    Původně sem chtěl jen ty reporty, nakonec k tomu mám komplet i backend s admin rozhraním, všechny reporty editovatelné, s možností je přegenerovat atd atd, nějaké základní hráčské statistiky, bezpečnost atd atd ... byla to zábava :) Dle Claude Code mě to vyšlo na cca $200 - věřím, že by to šlo udělat za 1/3 s více zkušenostma s CC - cenu sem neřešil, mám korporátní přístup...




    Já vim, je to pí*ovina, ale než si s těma tooluma hrát beze smyslu, tak sem si vymyslel něco co mělo cíl, díky tomu sem si musel projít skutečně celým "cyklem" vývoje takové věci :)
    VDB
    VDB --- ---
    TADEK: jasny, o tu migraci ven z lovable bych neměl větší obavu pokud tam nemáš nějaký super custom integrace externích tools. Co se ceny tejká, tak nemyslím hosting, ale cenu za tokeny. Zatím jsem lovable zaplatil v Kč nižší desítky tisíc a je to z principu dražší (přepíná to modely, ale default je myslím claude sonnet) než LLM na kterejch to jede. Pohodlnost je v tom, že nemusím řešit voprcávky kolem, například když v únoru anthropic snížil /effort v claude code, tak uživatelé co to netušili, si začali stěžovat na horší výstupy, ale já v lovable nic nezaznamenal a to jsem u toho seděl každej den x hodin...
    TADEK
    TADEK --- ---
    VDB: diky. na Redditu nedvno vysel docela legit manual, jak migrovat z toho Lovable Cloudu do normalni (ci self-hosted) instance Supabase btw - ja se toho bojim trochu, ale mam jednu malou appku kterou pouziva doslova JEDEN uzivatel a tam to taky jedu v Lovable Cloudu ale tam m nevadi, ze bych prisel o data / nemel bych je vubec. a je Lovable drahy? ja to neumim moc porovnat, ja mam predplaceny Pro s 200 kreditama za $50/m a parkrat (na zacatku) jsem musel dokupovat ale tedka s tim vystacim - kdyz si vezmu ze v tom mam cely ten ekosystem, defakto hosting tak za me spoko cena.
    VDB
    VDB --- ---
    TADEK: na tý produkci jedu právě úplnej lovable default magical sandbox:D jejich supabase, hosting taky u nich. Rozchodil jsem si to pro jistotu lokálně (supabase + celej environment) jelikož se nevědělo zda to bude chtít zákazník na vlastním HW nebo ne. Ale už to jede půl roku u lovable (samozřejmě propojeno přes vlastní doménu) a zatím úplně bez problémů. Co se toho projektu na docházku týká, tak zatím se na pár zaměstnancích + adminech testuje čistě manuální vkládání (dělníci na stavbě to zadávaj přes optimalizovaný web rozhraní na mobilech), admini to spravujou přes desktopy. Čipy nejsou plánované, takže celkem easy + časem přibude nějaký generování faktur a nahrávání fotek do pracovního deníku, ale to jsou prkotiny. Takže nic složitýho, ale nějakej traffic to generuje, furt to nějak upravuju dle požadavků zákazníků a furt nenacházím žádné slabé místo (musím zaťukat). Až se to posere a pošlou na mě právníky, dám vědět:D Na nějaký menší side kšefty používám Claude Code CLI a Codex plugin ve VS Codu, takže mám srovnání. Lovable je sice drahý, ale na komerční projekty si to můžu s přehledem dovolit a je to prostě super pohodlný...
    TADEK
    TADEK --- ---
    No vida!

    VDB: db pouzivas Supabase nebo neco jinyho? Pokud ano tak Supabase.com a nebo si to selfhostujes? Pouzivas na dochazku nejaky karty/buttony/cipy a nebo casy in/out se vkladaji manualne? Pouzivas tam nejak branching? Ja sem tam taky nenarazil na sebemensi problem - navic se to za tech 9 mesicu dost zlepsilo - ale je pravda ze tam delam relativne easy.
    VDB
    VDB --- ---
    Já dělám v lovable interní crm/docházkový systémy. Jeden větší projekt pro cca 100 zaměstnanců už mi jede v produkci a další je teď ve fázi testování. Furt čekám kdy se začne něco sypat, ale zatím dobrý:D
    NAILER
    NAILER --- ---
    A souběžně vedle toho v Macaly
    NAILER
    NAILER --- ---
    Dělám v Lovable hry pro děti, když si třeba chtěj zahrát tetris nebo mahjong a nechci jim dávat appku plnou reklam, coinů nebo podobných sraček :)
    TADEK
    TADEK --- ---
    LUCIEN: diky! pracuju ve filmovym prumyslu a v lete jsme na jeden projekt potrebovali vyrobit appky ala Instagram/Facebook ale s vlastnim "brandingem" kvuli IP (tzn misto Instagramu jsme meli Picturegram atp) a vlastnim contentem (reziser to chtel delat takto a ne blue/grey screen, coz je standartni postup). Hledal jsem co s tim, az jsem se pres Reddit dostal k Lovable - fungovalo to skvele, ty appky byly hotovy v radech minut, slozitejsi v radech desitek minut kde jsme resili, aby to jakoze psalo zpravy, herci na to mohli reagovat atd. Je to nastroj na vibecoding, ktery bezi ve webbrowseru, ze ktereho to muzes rovnou deploynout na internety (pripadne tam rovnou dat svoji domenu/subdomenu), maji primo integraci do Supabase (Postgre databaze kde je pod jednou strechou auth, db, storage, edge funkce, cron) takze nemusis nikam posilat manual SQL prikazy, napojeni two-way na GitHub (takze si to muzes z druhy strany nechat kontrolovat treba Claudem), integraci na platebni branu Stripe (platby mas hotovy v ramci minut), ma to svoje AI (pouzivaji Gemini) na analyzu/OCR obrazku. Jses schopny tam nasekat demo appku behem chvilky, postupem casu ti to uz nestaci takze to muzes deploynout treba na Vercel/Cloudflare/Render a pripadne to rozsirovat dal - ja to stale jedu pres Lovable protoze mi vyhovuje prima integrace na Supabase.

    Podobne sluzby jsou treba Replit nebo Bolt44, ale co jsem si zjistoval, tak Lovable je v tomdle leader.
    LUCIEN
    LUCIEN --- ---
    TADEK: Grats! Můžeš trochu rozvést co je Lovable, proč sis ho vybral?
    TADEK
    TADEK --- ---
    cus, pridam svoji trosku do mlyna.

    pro interni potreby / just for fun jsem si na podzim pres Lovable zacal vibecodit SaaS na spravu/obeh faktur pro pouziti v jednom specifickym/niche prumyslu. jelikoz firem, co to vyuzije je omezene mnozstvi a cast z nich primo znam tak jsem jim to primo zacal nabizet, do appky se neda dostat nijak verejne - pouze na pozvani, tudiz odpada potreba SEO a nejaky potencionalni problem se skalovatelnosti, protoze nexistuje, ze by to nekdy pouzivalo vic nez vyssi desitky lidi. aktuane to pouzivaj uz tri firmy, dalsi se ozyvaji. zit bych z toho nedokazal, ale aktualne mi to generuje mesicne fajn penize na pivo (skoda ze nepiju) nebo tzv. na prilepsenou.

    "stack": Lovable, vlastni doena, Supabase, Resend, Gemini AI pro cteni faktur/uctenek. pres Upwork jsem si najmul typka aby mi pomohl s RLS v Supabase a dalsiho na redesign, at to nevypada genericky jako vsechny ostatni AI generated veci. audit pres Aikido a pres ruzny dalsi weby (nektere placene, nektere free). dokonce mam tyvole i PWA mobilni appku na skenovani uctenek, ktery pak padaj rovnou do systemu.

    neveril bych, ze takova vec bude nekdy vubec mozna!
    SKAFF
    SKAFF --- ---
    OBĚD
    https://obidek.nakashi.org/

    stahovatko denních menu v vybraného okolí
    Kliknutím sem můžete změnit nastavení reklam