• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    LUCIENVibe coding
    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í
    RUTHER
    RUTHER --- ---
    Dungeona
    unununu / dungeona · GitLab
    https://gitlab.com/mtatton/dungeona
    20260325 dungeona 015 [ 132 x 36 ]
    https://www.youtube.com/watch?v=Wwe3Yus2hu4

    Dungeona Editor a vlastní mapa
    20260325 dungeona editor 025
    https://www.youtube.com/watch?v=_fIuXDEtW3Y
    MUXX
    MUXX --- ---
    WOJTISHEK: Jo neumim cist. Takze rano kafe a makat misto meetingu.
    Kliknutím sem můžete změnit nastavení reklam