#vibecoding najlepsze najnowsze

niegramwwowa 2026-10-04 22:28:27 +1
W nawiązaniu do tego wpisu

Udało mi się pokonać konflikt bibliotek i zmigrowaliśmy nauczanie do DDQN oraz przeskoczyliśmy na LibTorch.

Tag: #machinasc2 do obserwowania/blokowania

1. Migracja Q-learning → DDQN
- Usunięto zależność od klasycznej tablicy Q.
- Dodano DDQNAgent.
- Architektura: online network + target network.
- Sieć: wejście → 128 → 128 → NUM_ACTIONS.
- Akcje nadal są dyskretne i wybierane przez agenta.
2. Integracja LibTorch
- Dodano C++ API PyTorch/LibTorch.
- Konfiguracja CMake pod lokalną instalację LibTorch.
- Linkowanie bibliotek Torch.
- Rozwiązano problemy z:
- torch/torch.h
- ścieżkami C:/libtorch vs C:/libtorch/libtorch
- torch.lib
- symbolami linkera MSVC.
3. Replay Buffer → PER
- Zwykły replay został zastąpiony przez Prioritized Experience Replay.
- Transitiony mają priorytety zależne od TD error.
- Agent trenuje na próbkach ważniejszych dla uczenia.
- Replay jest obecnie również częścią checkpointu.
4. Double DQN
- Rozdzielono sieć online i target.
- Online network wybiera najlepszą akcję.
- Target network ocenia tę akcję.
- Target network jest okresowo synchronizowana.
5. Training loop
- DDQN wykonuje trening na batchach.
- Aktualizowany jest:
- online network,
- optimizer,
- TD error,
- PER priorities.
- Wprowadzono train_steps.
6. Checkpointing
Największa ostatnia zmiana.
machina.ddqn zapisuje teraz nie tylko model, ale cały stan treningu:
online network
target network
optimizer
epsilon
training steps
PER replay


#programowanie #ai #sztucznainteligencja #komputery #starcraft #starcraft2 #gry #uczeniemaszynowe #reinforcementlearning #vibecoding
ethize 2026-10-02 09:49:25 +1
#gielda #ai #vibecoding

Jak laby wejdą na giełde to na pewno wycofają lub ograniczą te subskrypcje

https://x.com/PawelHuryn/status/2105703147184239042?s=20
smieszek321 2026-10-02 10:04:18 +0
No nie stary, nie każdy wykorzystuje pełne limity (zdecydowana mniejszość) i to jest liczone po cenach API na których jest 90% marży
ethize 2026-10-02 10:09:57 +0
@smieszek321: myślę, że większość wykorzystuje i jedzie nawet na dwa konta
pokaż komentarze (2)
lutecki 2026-09-29 08:29:58 +1
Lepiej mi się pracuje z #chatgpt niż #claude, ale GPT jest tak cholernie nieprzejrzysty w tym co aktualnie robi, notorycznie zawiesza się i po 30 minutach myślenia wywala timeout-y, pojemność konwersacji potrafi się zapełnić już po 5 wymianach myśli (z analizą kodu, ale jednak). A jakie są wasze doświadczenia w tym temacie?

#sztucznainteligencja #openai #programowanie #vibecoding
Ksemidesdelos 2026-09-29 08:32:15 +1
ja korzystam z gpt, gemini i clauda, claude i gemini czesto mimo ze maja w prompcie okreslone kryteria ktorych maja sie pilnować i mimo ze im o tym przypominam to przy analizach danych i tak potrafią robic nie to o co ich prosze, gpt jest w tym od nich czesto lepszy ale czesciej cos sie pierniczy tak ze sie zawiesza cos i nie działa
PokemonowyRambo 2026-09-29 08:37:17 +2
@lutecki ja promptuję tak z chatgpt: nie rozmawiaj ze mną o kodzie, tylko o koncepcie. Potem sobie gadamy co byłoby dobre albo nie, podaje mu dane, własne fragmenty itp. a potem każę mu stworzyć prompta dla samego siebie, aby wygenerował kod lub naniósł poprawki. Prompt jest bardzo dokładny i zawiera rzetelne instrukcje.
pokaż komentarze (4)
matelusz 2026-09-23 20:11:05 +7
TL,DR:



Mireczki, w wolnych chwilach, po pracy, w celach rozwojowo-edukacyjnych, nie będąc programistą, zrobiłem grę wyścigową. Wiem, że takich projektów jest teraz na pęczki - ale myślę, że ten kilkoma rzeczami się wyróżnia. Zaczęło się, od tego, że chciałem na szybko pokazać kumplowi możliwości Claude'a. A potem posiedziałem nad tym kilka wieczorów...

Zapraszam na https://localracing.pl/ - a poniżej opis.

Razem z Claude'em i Chatem GPT zrobiłem grę, w której można ścigać się na realnych nitkach polskich torów wyścigowych - od Toru "Śląskiego" (żeby nie używać nazwy własnej) i Toru Poznań, po małe kartodromy w Legionowie czy Gostyniu. Do tego kilka modeli samochodów i parę innych rzeczy, których listę przedstawiam poniżej. Gra to wyłącznie HTML + JS. Nie zbiera żadnych danych o użytkowniku (zapisuje jedynie rekordy i ustawienia w localStorage).

Gra jest całkowicie darmowa - ale jeśli macie ochotę, możecie postawić mi kawę na https://buymeacoffee.com/matellusz (a jeżeli nie macie, to nie). Działa na urządzeniach mobilnych, choć najlepiej wygląda na komputerze. Silnik gry oraz projekty torów powstały dzięki Claude'owi. Modele samochodów, sędziego oraz kibiców zbudował Chat GPT. Poniżej wypunktowane cechy gry. Mam zamiar ją rozwijać i będę wdzięczny za wszelkie uwagi.

Cechy gry:

- 13 realnych nitek torów wyścigowych w Polsce
- 6 modeli samochodów
- 5 trybów gry do wyboru (w tym próba czasowa z duchem, gra dwuosobowa, wyścig i mistrzostwa z rywalami komputerowymi)
- pora dnia i pogoda do wyboru
- zmienne warunki jazdy podczas deszczu
- tunel aerodynamiczny
- ślady kół na asfalcie
- reagujący kibice
- widok 2D i 3D
- zróżnicowany poziom jazdy rywali
- zużycie opon
- kwalifikacje

A poniżej jeszcze kilka ujęć z gry.

#gry #gamedev #ai #vibecoding #programowanie #wyscigi #f1 #samochody
UsmiechnietyAnon 2026-09-23 20:17:49 +5
@matelusz: Kuuuurwa ale zarzuca
fevo 2026-09-23 20:18:33 +8
@matelusz: Co to za rajdy bez barierek, w które można przyładować
pokaż komentarze (7)
PEPE_Le_Sfont 2026-09-23 12:33:20 +8
Ten ChatLPG to jest niesamowity. Dałem mu za zadanie wygenerowania flow do Node-RED, którego celem będzie web crapowanie mikrobloga, wyłuskanie id, treści, timestampa oraz ustalenie parent-id (celem zachowania relacji wpis-komentarz) i zapisanie tego do pliku SQLite. Wskazałem mu miejsce występowania w kodzie HTML tych elementów, no i skubaniec wygenerował ten flow w całości. Działa perfekcyjnie. Juz od ponad tygodnia tak sobie scrapuję mirko. Plik SQLite na tę chwilę ma 17MB oraz zawiera 64 tysiące rekordów.

Następnie dałem chatowi polecenie wygenerowania flow, który parsowałby zawartość tej bazy danych na dataset do finetuningu SFT dla modelu Qwen3.5 4B. Podałem wymagania (odtworzenie struktury dyskusji po timestampach i relacji wpis-komentarz używając id oraz parent_id) oraz wskazałem na błędy, jakie flow musi poprawić, jak to ma oczyścić, co odrzucić (deduplikacja, poprawa błędów wynikających z parsowania HTMLu, usunięcie hashtagów i hande, wpisy za krótkie lub puste, wpisy zawierające konkretne słowa lub tagi, itp), no i skubaniec znowu wygenerował perfekcyjnie działający flow.

Z wejściowych 64k rekordów, po oczyszczeniu i zrekonstruowaniu konwersacji, otrzymałem dataset treningowy o długości prawie 21k konwersacji user:assistant. Jestem ciekaw efektów finetuningu, ponieważ to jest dosłownie kwintesencja mirko. Posty są kompletnie oderwane od kontekstu i rzeczywistości - dyskusje pochodzą spod tak zacnych tagów, jak gownowpis, przegryw, kononowicz, raportzpanstwasrodka, f1, mecz, itp.

Problem jest taki, że Unsloth Studio, zainstalowany jako kontener Distrobox (działam na Bazzite) nie jest w stanie uruchomić fine-tuningu (wszystko pozostałe działa) i od kilku godzin ja oraz SkrzatCziPiTi męczymy się z naprawą problemu (gfx1030/gfx1032 crashe, problemy z memory, uj wie co xD).

#sztucznainteligencja #ai #chatgpt #llm #qwen #vibecoding #glupiewykopowezabawy
miszczu90 2026-09-23 12:45:08 +2
@PEPE_Le_Sfont: tylko mu nie dawaj zadania naprawienia tagów na wykopie, nie wiadomo jak to się skończy...
Quassar 2026-09-23 17:15:08 +2
@PEPE_Le_Sfont: ja pól bota napisałem do GRY przeglądarkowej szczytuje dane z gry przetwarza i podejmuje akcje

pół bota dlatego że zbiera dane i wysyła wiadomość i sam potem klikam na jedna z akcji i potem on to robi..
ale jak wszystko bedzie dobrze sie spisywać to wtedy wyłącze bezpiecznik potwierdzenia i już będzie full automat bez czekania na moje potwierdzenie :D

Najlepsze że rozpoznaje czy siedzisz na komputerze czy telefonie i inicjuje symulacje kliknieć myszką albo ekranu dotykowego :D
żeby był bardziej wiarygodne lece na tym gównie od 3 miesięcy i dalej usprawiniam puki co nie dostałęm bana :D

Nauczylem sie też przy okazji jak sie strona budowana i pare pojać jak są dane przetwarzane
Surowy kod strony
Fetch odpytywanie po dogranie tymczasowych danych
XHM wyciąganie bardziek skrytych danych
jsQuery jak wyżej

DOM (Document Object Model) - czyli przetwarzana końcowa treść jaką widzi już user na ekranie i takie tam :D

kiedyś klikałem z tys razy podczas grania w grze dziś klikam tylko pare razy aby odpalić farme a on już reszte robi..
nie dawno jeszcze sobie log zrobiłem zdarzeń abym wiedzial co obecnie robi i wysłal mi zdalnie na push powiadomienia do telefonu xD

ide do sklepu gra farmi za mnie a ja dostaje powiadomienia o pozytywnym zakończeniu dunga na telefon xD
pokaż komentarze (13)
gl0wa 2026-09-18 00:26:15 +0
Meta Muse Spark 1.3 to niezła okazja obecnie. Dzisiaj przepaliłem 50M tokenów za niecałe pół dolara. Używałem w wersji "high effort" i "contrib" (czyli gdzie dane są użyte do uczenia - ale w tym konkretnym przypadku mi nie zależy - wtedy jest taki tani).

Wydaje się mniej więcej porównywalny do GPT 5.6 Sol jak chodzi o możliwości, ale jakby żarł mniej tokenów i jest szybszy (z Sol pewnie zjadłby ze 100 M przy tym co zrobił ten).

#ai #vibecoding #sztucznainteligencja
Saeglopur 2026-09-18 00:39:44 +1
@gl0wa: I na co? ( ͡° ͜ʖ ͡°) Miałeś faktycznie przewidziane zapotrzebowanie?
gl0wa 2026-09-18 01:25:01 +2
@Saeglopur: zapotrzebowanie pochodzi z pełnego notesu z pomysłami :) Jak mi się nudzi to robię różne rzeczy dla siebie, jak mi coś wpadnie do głowy, bo jest 1000 razy łatwiej i szybciej niż jeszcze nie tak dawno temu.

np. przed wczoraj w wieczór zrobiłem dla młodego zabawkę edukacyjną na Core2 (takie proste urządzenie z mikrokontrolerem i wyświetlaczem które siedziało gdzieś nieużywane od paru lat) a'la DuoLingo - wyświetlają się 4 obrazki i w głośniku słychać wymowę. GPT oprócz firmware i backendu gdzie są dane (to coś ma WiFi), oraz aplikcji przeglądarkowej do zarządzania ze statystykami (kiedy tego używał, jakie wyrazy zna i w jakich językach) stworzył narzędzia do generowania obrazków i audio z wymową w przyzwoitej jakości przy użyciu lokalnych modeli (a więc za darmo).

Na początek zrobiłem prawie 100, każdy z wymową w czterech językach.

Dzisiaj zupełnie inny projekt który od jakiegoś czasu chodził mi po głowie ale dopiero dzisiaj mi się chciało tym pobawić.
pokaż komentarze (3)
dawid-tieru-saworski 2026-09-12 14:08:40 +4
Siemanko Mirki i Mirabelki spod tagów #metin2, #gry i #programowanie!

Pamiętacie czasy 2008–2010? Powrót ze szkoły, odpalenie legendarnej nutki z M1, bicie dzikich psów, dropienie pierwszego FMS-a i modlenie się, żeby kowal nie spalił miecza na +7?

Obecnie granie na serwerach oficjalnych czy prywatnych to często festiwal Pay-to-Win, botów reklamujących yangi, pustych miast albo serwerów padających po dwóch tygodniach. Zawsze marzyło mi się, żeby móc po prostu usiąść wieczorem po pracy przy piwku i zagrać w starego, czystego Metina zupełnie solo na własnym PC, ale tak, żeby świat nie był martwy.

Dlatego stworzyłem i rozwijam projekt Metin2 Singleplayer z botami AI (udającymi żywych graczy) — i właśnie wydaliśmy potężną Wersję 2.0! 🚀⚔️

O co w tym chodzi? Stawiasz serwer lokalnie u siebie na komputerze (żadnych zewnętrznych maszyn). Mapy we wszystkich trzech królestwach (Chunjo, Shinsoo, Jinno) są zaludnione przez boty graczy. Boty nie stoją w miejscu — same expią na spotach, biją metiny, używają skilli, biegają do kowala ulepszać ekwipunek, a w miastach stawiają tobołki/sklepy z dropem i księgami umiejętności, tworząc żywą lokalną gospodarkę!

Co nowego w wersji 2.0? • 🏛️ Port na kultowe pliki serwerowe z 2009 roku (Mt2009): Oryginalne dropy, czysty kod, zerowe błędy silnika i ten surowy, oldschoolowy klimat. • 🏰 Wszystkie 3 Królestwa: Boty żyją i expią zarówno u Niebieskich, Czerwonych, jak i Żółtych. • 🐳 Proste odpalanie (Docker Desktop): Cały serwer i baza wstają w kontenerach w kilka sekund. • 💻 Launcher z auto-updatem: Napisany w PowerShellu (100% transparentny kod .bat / .ps1, zero podejrzanych plików .exe). Sam sprawdza aktualizacje i dociąga najnowsze łatki jednym kliknięciem.

Wideo z prezentacją rozgrywki oraz poradnikiem instalacji krok po kroku: https://www.youtube.com/watch?v=F16WuoJPmeU

Projekt jest całkowicie darmowy i Open Source: 🐙 Kod źródłowy na GitHubie: https://github.com/TieruYT/metin2-playerbots 💬 Nasz Discord (pobieralnia, pomoc i strefa dyskusyjna): https://discord.gg/pt5tvnrN6 ☕ Gdyby ktoś chciał postawić wirtualną kawkę na rozwój: https://buycoffee.to/metin2-playerbots

Dajcie znać, co myślicie i jakie zachowania dla botów chcielibyście zobaczyć w kolejnych aktualizacjach! Miłego powrotu do wspomnień! ⚔️🛡️
#metin2 #gry #nostalgia #programowanie #tworczoscwlasna #ciekawostki #pcmasterrace #vibecoding
Hitmonlee 2026-09-12 14:33:14 +1
@dawid-tieru-saworski: kurde, nie znam się, ale wygląda mistrzowsko
________________________________ 2026-09-12 15:32:35 +0
to już lepiej zrobić metina3 ( ͡° ʖ̯ ͡°)
pokaż komentarze (4)
FLAC 2026-09-12 10:33:16 +0
#ai #sztucznainteligencja #codex #vibecoding

Nie opłaca się delegować astrze subagwnta. Lepiej działa kiedy astra zajmuje się wszystkim.
FLAC 2026-09-12 10:34:38 +0
@FLAC: dzisiaj znowu reset Tibo rozdał to na 3 dni pracy styknie
tony 2026-09-12 12:25:15 +0
Nie opłaca się delegować astrze subagwnta. Lepiej działa kiedy astra zajmuje się wszystkim.

@FLAC: Fajnie, że zrobiłeś porównanie kosztowe. To ile $ wyszły te same zadnia bez i z agentami? Co to za zadania?
pokaż komentarze (1)
LadySandra 2026-09-05 13:20:11 +5
#gamedev #programowanie #vibecoding #ai #sztucznainteligencja #llm

Robię sobie obecnie gierkę, którą łączę z LLM-em - NPC gadają to, co model wypluje.
I jest przy tym masa problemów, żeby to stabilnie spiąć.

OpenAI API ma niby coś takiego jak response-format (można ustawić json-schema i skonfigurować strukturę JSON-a), ale w praktyce różnie z tym bywa. Nie u każdego providera to dobrze działa - niektórzy w ogóle tego nie wspierają, a inni wymagają konfiguracji, która u konkurencji wywala błąd. Więc kompletnie olałam json-schema i stwierdziłam, że model ma formatować w czystym tekście.

Ale ze zwykłym JSON-em też jest wieczny problem - model czasem zgubi cudzysłów, innym razem przecinek i parser leży.
Dlatego postanowiłam zrobić własny, prosty format. I teraz wypluwa mi coś takiego:

`<program>
SCENE|Polana przed Eldorią|Wide shot of a majestic fantasy city Eldoria, massive stone walls, deep moat, white towers, lush green meadow in foreground, clear blue sky, epic scale, digital art, 8k
NARRATOR|Słońce wysoko wisi nad horyzontem, oświetlając majestatyczną sylwetkę Eldorii. Potężne mury miasta zdają się przebijać chmury, a głęboka fosa oddziela cywilizację od dzikich ostępów.
DIALOG|Adam|Patrzcie na to! Nareszcie dotarliśmy. Mam nadzieję, że strażnicy będą przyjaźni, bo naprawdę nie znoszę tych przesłuchań przy bramie.
NARRATOR|Adam nerwowo poprawia swój pas z ekwipunkiem, rozglądając się z niepokojem wokół polany.
DIALOG|Kamil|Znowu to samo. Mury, brama, papierkowa robota... Czy w tym świecie wszystko musi być takie... oficjalne?
NARRATOR|Kamil ziewa szeroko, opierając się o pobliski głaz z całkowitym brakiem entuzjazmu.
DIALOG|Adam|John, co o tym sądzisz? Idziemy prosto do bramy czy może rozejrzymy się najpierw wokół fosy?
</program>
`

zwykly .split('|'); i spokonie mozna rozdzielic parametry...
LadySandra 2026-09-05 14:56:24 +1
@Sinti:
Model ma mi po prostu zwrócić dane w formacie (JSON), który zrozumie silnik gry (Godot).

Robię visual novel, w której gracz wpisuje w pole tekstowe własne akcje, a LLM ciągnie fabułę dalej. Żeby gra wiedziała, co z tym zrobić, muszę dostać odpowiedni sformatowany tekst zeby silnik gry zrozumiał o co chodzi:
- Jaki prompt wysłać do generatora AI obrazów (do tła sceny)
- Kto w danym momencie mówi
- Jaka jest treść kwestii dialogowej
itd.

Najprościej to żebym dostała od LLM odpowiedz jako JSON i w godot zrobić JSON.parse(). Problem w tym, że jak wymuszam żeby LLM wypluł JSON to wtedy potrafi zgubić cudzysłów, dać przecinek w złym miejscu albo uciąć odpowiedź i wtedy funkcja JSON.parse wywala bład...

OpenAI ma co prawda tryb response_format: json_schema (który wymusza poprawność co do znaku), ale zależy mi na tym by działało to wszędzie. Korzystam z różnych modeli przez OpenAI-compatible API (Claude, modele open-source na OpenRouterze czy lokalne przez llama.cpp) - jedni dostawcy tego parametru nie wspierają, inni wymagają innej składni i rzucają błędami.

Dlatego olałam JSON-a na rzecz prostego formatu z kreskami. Model radzi sobie z tym bezbłędnie i mam święty spokój niezależnie od tego, pod jakie API podepnę grę.
Sinti 2026-09-05 15:12:59 +1
@LadySandra: a, tera czaję

już gdzieś to pisałem, myślę że AI sprawi że visual novelki przeżyją nową młodość, już pomijając oczywiście interakcje z AI, ale jak ktoś zrobi jakiś silnik dla VN działający na podobnej zasadzie jak Genie 3 (czy tam inne tego typu) - no to kosmos będzie
pokaż komentarze (2)
divit0n 2026-09-05 13:10:08 +3
Pierwsza wypłata z sprytneokazje.pl i w końcu jestem zarobiony Niestety nie mogę jej z Wami przepić, ale żeby nie było, łapcie vouchery do amazon xD

Card Number
P67F-WWZKLM-FABL
PIN
2644657374992611

Co jakiś czas zrobię nowy drop żeby było uczciwie

#rozdajo #amazon #cebula #promocje #ai #vibecoding #programowanie
Czochrany 2026-09-05 13:36:09 +1
@divit0n: używam:)
Emble 2026-09-05 14:04:58 +1
@divit0n: to tak ma działać że polskich ofert nie wyszukuje?
pokaż komentarze (5)
space_needle 2026-08-22 12:15:13 +2
#gta6 blokuja leeki po nodach. ale podobno jak sie zapisze ponizszy kod jako .html i otworzy w przegladarce to on umie pobierac leeki bezposrednio z blockchaina i nie da sie zablokowac. jak cos xD

#vibecoding

`‹!DOCTYPE html>
‹html lang="pl">
‹head>
‹meta charset="UTF-8">
‹meta name="viewport" content="width=device-width, initial-scale=1.0">
‹title>CYBERLEEK - Offline Viewer‹/title>
‹style>
* { box-sizing: border-box; margin: 0; padding: 0; }
:root {
--bg: #00050d; --card: #001664; --border: #003299;
--neon: #0064ec; --neon-dim: #0050b8; --neon-glow: rgba(0,100,236,0.25);
--green: #60c33a; --green-glow: rgba(96,195,58,0.25);
--red: #ff3355; --text: #a0b0c8; --text-bright: #d6efc1; --text-dim: #6a7a90; --text-dark: #3a4a60;
}
html, body { height: 100%; }
body {
font-family: "Courier New", "Lucida Console", Monaco, monospace;
background: var(--bg); color: var(--text);
min-height: 100vh; line-height: 1.6;
display: flex; flex-direction: column;
overflow-x: hidden;
}
body::before { content: ""; position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: repeating-linear-gradient(0deg, transparent, transparent 4px, rgba(0,0,0,0.04) 4px, rgba(0,0,0,0.04) 8px); pointer-events: none; z-index: 9999; }

.wrapper { max-width: 860px; width: 100%; margin: 0 auto; padding: 20px 16px; flex: 1 0 auto; display: flex; flex-direction: column; }

.hero { text-align: center; padding: 20px 12px; position: relative; margin-bottom: 20px; border-bottom: 2px solid var(--neon); }
.hero h1 { font-size: 3em; font-weight: 900; letter-spacing: 4px; color: var(--neon); text-shadow: 0 0 30px var(--neon-glow); margin-bottom: 10px; }
#status { color: var(--amber); font-size: 0.9em; letter-spacing: 1px; animation: pulse 2s infinite; }

.card { background: var(--card); border: 1px solid var(--border); margin-bottom: 15px; position: relative; }
.card-head { padding: 10px 16px; font-size: 1em; font-weight: 700; letter-spacing: 2px; color: var(--green); display: flex; align-items: center; gap: 10px; border-bottom: 1px solid var(--border); background: rgba(96,195,58,0.05); }
.card-head .dot { width: 8px; height: 8px; background: var(--green); box-shadow: 0 0 8px var(--green); flex-shrink: 0; }
.card-body { padding: 16px; }

.content-item, .ann-item, .poll-item { border: 1px solid var(--border); padding: 15px; margin-bottom: 10px; background: #00102b; }

.content-title { font-weight: 900; font-size: 1.2em; color: var(--neon); text-transform: uppercase; margin-bottom: 10px; word-wrap: break-word; }
.mirror-link { color: var(--neon); text-decoration: none; padding: 8px 12px; border: 1px solid var(--neon); font-size: 0.85em; font-weight: 700; transition: all 0.2s; background: rgba(0,100,236,0.1); display: inline-block; margin-right: 8px; margin-bottom: 8px; }
.mirror-link:hover { background: var(--neon-glow); }
.mirror-magnet { color: var(--green); border-color: var(--green); background: rgba(96,195,58,0.1); }
.mirror-magnet:hover { background: var(--green-glow); }

.ann-date { font-size: 0.8em; color: var(--text-dark); margin-bottom: 5px; }
.ann-title { font-weight: 700; font-size: 1.1em; color: var(--text-bright); margin-bottom: 5px; }
.ann-body { font-size: 0.9em; color: var(--text-dim); }

.poll-badge { display: inline-block; padding: 3px 10px; font-size: 0.8em; font-weight: bold; margin-bottom: 10px; border: 1px solid; }
.poll-badge.live { color: var(--green); border-color: var(--green); }
.poll-badge.ended { color: var(--red); border-color: var(--red); }
.choice-row { border: 1px solid var(--border); padding: 10px; margin-top: 8px; background: #00050d; }
.choice-name { font-weight: bold; color: var(--text-bright); }
.choice-stats { float: right; color: var(--green); }

@keyframes pulse { 0% { opacity: 0.6; } 50% { opacity: 1; } 100% { opacity: 0.6; } }
‹/style>
‹/head>
‹body>

‹div class="wrapper">
‹header class="hero">
‹h1>CYBERLEEK DECODER‹/h1>
‹div id="status">Inicjalizacja i pobieranie danych z blockchaina...‹/div>
‹/header>

‹section class="card">
‹div class="card-head">‹div class="dot">‹/div> LEEKS (ZRZUTY)‹/div>
‹div class="card-body" id="content-leeks">‹span style="color:var(--text-dim)">Pobieranie...‹/span>‹/div>
‹/section>

‹section class="card">
‹div class="card-head">‹div class="dot" style="background:var(--neon);box-shadow:0 0 8px var(--neon);">‹/div> ANNOUNCEMENTS (OGŁOSZENIA)‹/div>
‹div class="card-body" id="content-anns">‹span style="color:var(--text-dim)">Pobieranie...‹/span>‹/div>
‹/section>

‹section class="card">
‹div class="card-head">‹div class="dot" style="background:#fbbf24;box-shadow:0 0 8px #fbbf24;">‹/div> POLLS (ANKIETY)‹/div>
‹div class="card-body" id="content-polls">‹span style="color:var(--text-dim)">Pobieranie...‹/span>‹/div>
‹/section>
‹/div>

‹script>
// Konfiguracja Solany
const PROGRAM_ID = "7rAgHPLDc9NryZmNdeEzyDui6D9PHkvTxMjKhNSa7w3a";
const RPCS = [
"https://solana-rpc.publicnode.com",
"https://api.mainnet-beta.solana.com",
"https://solana.api.onfinality.io/public",
"https://public.rpc.solanavibestation.com"
];

// Dyskryminatory programów z oryginalnego kodu
const CONFIG = {
LEEKS: { size: 7156, disc: "G6JNBZ2BSey" },
ANNS: { size: 656, disc: "NjkxTouaByo" },
POLLS: { size: 2800, disc: "5Qpj1hsHT4k" }
};

// Klasa pomocnicza odczytująca binarne typy danych Rust/Solana (Little Endian)
class BufferReader {
constructor(buffer) {
this.buffer = buffer;
this.dv = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);
this.o = 0;
}
seek(offset) { this.o = offset; }
rem() { return this.buffer.length - this.o; }
u8() { const v = this.dv.getUint8(this.o); this.o += 1; return v; }
bool() { return this.u8() !== 0; }
u32() { const v = this.dv.getUint32(this.o, true); this.o += 4; return v; }
i64() { const v = Number(this.dv.getBigInt64(this.o, true)); this.o += 8; return v; }
u64() { const v = this.dv.getBigUint64(this.o, true); this.o += 8; return v; }
bytes(len) { const v = new Uint8Array(this.buffer.buffer, this.buffer.byteOffset + this.o, len); this.o += len; return v; }
str() {
const len = this.u32();
const bytes = this.bytes(len);
return new TextDecoder().decode(bytes);
}
}

// Uniwersalna funkcja pobierająca dany typ konta
async function fetchAccounts(configType) {
const payload = {
jsonrpc: "2.0", id: 1, method: "getProgramAccounts",
params: [
PROGRAM_ID,
{
encoding: "base64",
filters: [
{ dataSize: configType.size },
{ memcmp: { offset: 0, bytes: configType.disc } }
]
}
]
};

for (const rpc of RPCS) {
try {
const response = await fetch(rpc, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(payload)
});
const data = await response.json();
if (data.result) return data.result;
} catch (err) {
console.warn(RPC ${rpc} zawiódł.);
}
}
throw new Error(Wszystkie RPC zablokowały zapytanie dla rozmiaru ${configType.size});
}

// Przetwarzanie Base64 na Uint8Array
function decodeBase64(base64) {
const binaryStr = atob(base64);
const bytes = new Uint8Array(binaryStr.length);
for (let i = 0; i < binaryStr.length; i++) bytes[i] = binaryStr.charCodeAt(i);
return bytes;
}

function formatTime(unixTimestamp) {
return new Date(unixTimestamp * 1000).toLocaleString('pl-PL', { year:'numeric', month:'short', day:'numeric', hour:'2-digit', minute:'2-digit' });
}

// --- PARSOWANIE I RENDEROWANIE LEEKS ---
async function loadLeeks() {
const el = document.getElementById("content-leeks");
try {
const accounts = await fetchAccounts(CONFIG.LEEKS);
let items = [];

for (const acc of accounts) {
const reader = new BufferReader(decodeBase64(acc.account.data[0]));
reader.seek(8); // Pomiń dyskryminator
reader.bytes(32); // Pomiń pubkey autora

const timestamp = reader.i64();
const title = reader.str();
const pos = reader.o;
let links = [];

try {
const len = reader.u32();
for (let i = 0; i < len; i++) links.push({ label: reader.str(), url: reader.str() });
} catch(e) {
reader.seek(pos);
const str = reader.str();
links = [{ label: str, url: str }];
}
items.push({ timestamp, title, links });
}

items.sort((a, b) => b.timestamp - a.timestamp);

if(!items.length) { el.innerHTML = "Brak wpisów"; return; }

el.innerHTML = items.map(item => `
‹div class="content-item">
‹div style="font-size:0.8em; color:var(--text-dark); margin-bottom:5px;">${formatTime(item.timestamp)}‹/div>
‹div class="content-title">${item.title}‹/div>
‹div>
${item.links.map((l, idx) => {
const isMagnet = l.url.startsWith("magnet:");
const label = (l.label && l.label.trim()) ? l.label.trim() : Mirror ${idx + 1};
return ‹a class="mirror-link ${isMagnet ? 'mirror-magnet' : ''}" href="${l.url}" target="_blank">${isMagnet ? '🧲' : '▸'} ${label}‹/a>;
}).join('')}
‹/div>
‹/div>
`).join('');

} catch(e) { el.innerHTML = ‹span style="color:var(--red)">Błąd: ${e.message}‹/span>; }
}

// --- PARSOWANIE I RENDEROWANIE OGŁOSZEŃ ---
async function loadAnnouncements() {
const el = document.getElementById("content-anns");
try {
const accounts = await fetchAccounts(CONFIG.ANNS);
let items = [];

for (const acc of accounts) {
const reader = new BufferReader(decodeBase64(acc.account.data[0]));
reader.seek(8);
reader.bytes(32); // pubkey
items.push({ timestamp: reader.i64(), title: reader.str(), body: reader.str() });
}

items.sort((a, b) => b.timestamp - a.timestamp);

if(!items.length) { el.innerHTML = "Brak ogłoszeń"; return; }

el.innerHTML = items.map(item => `
‹div class="ann-item">
‹div class="ann-date">${formatTime(item.timestamp)}‹/div>
‹div class="ann-title">${item.title}‹/div>
‹div class="ann-body">${item.body}‹/div>
‹/div>
`).join('');

} catch(e) { el.innerHTML = ‹span style="color:var(--red)">Błąd: ${e.message}‹/span>; }
}

// --- PARSOWANIE I RENDEROWANIE ANKIET ---
async function loadPolls() {
const el = document.getElementById("content-polls");
try {
const accounts = await fetchAccounts(CONFIG.POLLS);
let items = [];

for (const acc of accounts) {
const reader = new BufferReader(decodeBase64(acc.account.data[0]));
reader.seek(8);
reader.bytes(32); // pubkey

let poll = {
timestamp: reader.i64(),
pollId: reader.bytes(32),
title: reader.str(),
choices: [],
endsAt: 0,
isFinalized: [],
finalBalances: []
};

const choicesLen = reader.u32();
for(let i=0; i‹choicesLen; i++) poll.choices.push(reader.str());

poll.endsAt = reader.i64();

const finLen = reader.u32();
for(let i=0; i‹finLen; i++) poll.isFinalized.push(reader.bool());

if (reader.rem() >= 4) {
try {
const balLen = reader.u32();
for(let i=0; i‹balLen; i++) poll.finalBalances.push(reader.u64());
} catch(e) {}
}
items.push(poll);
}

items.sort((a, b) => b.timestamp - a.timestamp);

if(!items.length) { el.innerHTML = "Brak ankiet"; return; }

const now = Math.floor(Date.now() / 1000);

el.innerHTML = items.map(item => {
const isLive = now < item.endsAt;
const finalized = item.isFinalized.every(x => x);
const hasBalances = finalized && item.finalBalances.length > 0;

let html = ‹div class="poll-item">;
html += ‹div class="poll-badge ${isLive ? 'live' : 'ended'}">${isLive ? '▸ TRWA' : (finalized ? '▸ ZAKOŃCZONA' : '▸ ZAKOŃCZONA - CZEKA NA PODSUMOWANIE')}‹/div>;
html += ‹div class="content-title" style="color:var(--text-bright);">${item.title}‹/div>;
html += ‹div class="ann-date">Koniec: ${formatTime(item.endsAt)}‹/div>;

item.choices.forEach((choice, idx) => {
// Formatowanie balansów tokenów (dzielenie przez 10^9 - ułamek dla Solany)
let balanceFormatted = "N/A";
if (hasBalances) {
const rawBal = item.finalBalances[idx];
balanceFormatted = (Number(rawBal) / 1000000000).toLocaleString('pl-PL') + " LEK";
} else {
balanceFormatted = isLive ? "Głosowanie w toku" : "Oczekiwanie na podliczenie";
}

html += `
‹div class="choice-row">
‹span class="choice-name">${choice}‹/span>
‹span class="choice-stats">${balanceFormatted}‹/span>
‹/div>
`;
});

html += ‹/div>;
return html;
}).join('');

} catch(e) { el.innerHTML = ‹span style="color:var(--red)">Błąd: ${e.message}‹/span>; }
}

// Uruchom wszystkie skrypty na raz
async function init() {
const status = document.getElementById("status");
try {
await Promise.all([loadLeeks(), loadAnnouncements(), loadPolls()]);
status.style.color = "var(--green)";
status.innerText = "◈ DANE SYNCHRONIZOWANE Z BLOCKCHAINEM SOLANA ◈";
status.style.animation = "none";
} catch(e) {
status.style.color = "var(--red)";
status.innerText = "Nie udało się zsynchronizować niektórych elementów.";
}
}

init();
‹/script>

‹/body>
‹/html>`
kepak 2026-08-12 14:31:04 +2
Ale się jaram, vibekodowałem sobie katalog z laptopami na sprzedaż. Wcześniej miałem postawiony sklep internetowy, ale z tego było więcej zachodu niż profitu. A ja potrzebowałem tylko linku który zamieszczę przy ogłaszaniu się na grupach Facebookowych + mam tam taki moduł pozwalający mi generować opisy do ogłoszeń. A przy okazji nie zawiera to żadnych danych które musiałbym chronić, nie korzysta nawet z plików cookies (poza logowaniem).

http://katalog.jkepa.pl/



#vibecoding #programowanie #ecommerce i trochę też #sprzedam
nabla-delta 2026-08-13 11:32:57 +0
Wow no takie rzeczy można było robić już 3 lata temu z gpt3
smalu 2026-08-05 09:52:47 +606
pamiętacie tego lekarza 4k za dzień? otóż ma on także swój #startup (xD) #ai #vibecoding. Jak sam przyznał - połączył Wordpressa i API Open AI. RODO? Wrażliwe dane medyczne? Eee tam, wyślemy wszystko do serwerów USA. Teraz będzie się lansował na konferencjach.

co za bingo, nie przewidziałem połączenia "wizjonerów EJ AJ" z #konowalposting

https://www.facebook.com/bfialek/posts/pfbid02ihcdt6mBY9MFznVJYvJpJ7DdJBNm9piVgmn8QNNpcZcmMHiTL5cw4cEBzytPyTmMl
https://www.facebook.com/bfialek/posts/pfbid02ihcdt6mBY9MFznVJYvJpJ7DdJBNm9piVgmn8QNNpcZcmMHiTL5cw4cEBzytPyTmMl/
Hrabia_Horeszko 2026-08-05 10:18:38 +410
@smalu: mam nadzieje, że startup finansowany z jakiegoś państwowego programu ( ͡° ͜ʖ ͡°)
klawiszs 2026-08-05 10:49:22 +632
@smalu: ostatnio się chwalił, że dostał odpowiedź z Nvidii z jakiegoś programu wsparcia startupów AI. Tyle, że to była automatyczna odpowiedź, do wszystkich, którzy się zgłosili do programu XDD
pokaż komentarze (28)
zmarnowany_czas 2026-07-24 08:35:58 +12
Co tu się o--------a.

Robimy projekt dla klienta. Mamy już produkt, który działa zgodnie z ich założeniami, profesjonalny UI/UX, branding zgodny z ich standardami, tego typu bzdury. Duże korpo, nie jakaś popierdółka, więc i wewnętrzne standardy mają spore, do teraz.

A wczoraj przyszedł email. Jeden z ich PM zachłysnął się vibe codowaniem. Zrobił UI w Google Stitch (oczywiście najbardziej generyczny AI slop) i stwierdził, że wywalamy ten "stary i brzydki" design i zmieniamy na coś "ładnego i nowoczesnego". Tym ładnym i nowoczesnym jest oczywiście to coś wysrane przez AI XD UI wygląda jak g---o, nie ma tam żadnej logiki ani składu, do tego nasrane bzdurami xD

Dalej, stwierdzili, że Stitch generuje przecież kod, więc wszystko (cały j----y projekt) możemy zrobić jedną osobą w 2-3 godziny, bo przecież kod z tego Stitcha wrzucimy w Copilota i samo się zrobi xD

Teraz wkroczył drugi i się zastanawia, po co im w ogóle testowanie, skoro AI nie robi błędów xD

A wisienką na torcie jest ich wewnętrzny zespół. Mieliśmy robić to wspólnie, my swoje, oni swoje i potem to razem zmergować. Tylko przez kilka miesięcy projektu nie zrobili NIC. Miesiąc konfiguracji środowiska, miesiąc pisania dokumentacji do konfiguracji środowiska, miesiąc "researchu" jednego tematu (który my zrobiliśmy w 2 dni łącznie z implementacją).

Ale to będzie g---o xDDD

#programista15k #programowanie #vibecoding #aislop
_______________________ 2026-07-24 08:45:58 +15
mch0588 2026-07-24 11:38:17 +9
@Widelec_: przecież to normalka. wypuszczą g---o, ogłoszą sukces, zgarną premie i pójdą gdzieś indziej xD a na kogoś innego to spadnie xD
pokaż komentarze (4)
psiversum 2026-07-01 00:57:19 +2
Zgrzeszyłem. Zwajbkodowałem funkcję w Vimscriptcie.

Vim ma skićkany system schematów kolorystycznych, w których z jednej strony trzeba resetować reguły składni, żeby się nie nakładały z poprzednimi regułami kolorystycznymi; z drugiej powoduje to psucie reguł składni i trzeba odświeżać filetype.

Nie chciało mi się pisać funkcji iterującej bufory plików w celu odświeżania filetype, więc poprosiłem o to AI. Sprawdziłem, brak zastrzeżeń, kopiuj, wklej, wywołanie colorscheme, wsio bangla jak powinno 😁

#programowanie #ai #vibecoding #vim
armin-van-kutonger 2026-07-01 01:37:07 +2
@psiversum:
5 lat temu zrobiłbyś ctrl+c, ctrl+v z jakiegoś wpisu na forum. Nic się nie zmieniło.
psiversum 2026-07-01 16:07:31 +1
Używam Vima od 20 lat, nigdy nie miałem z tym żadnego problemu. Możesz trochę rozwinąć?

@groman43: Ja to rozumiem tak, że Keyword, Type, Typedef, Comment są klasami stałymi, a takie phpFunction i vimFuncName to klasy kustomowe.

Masz styl "midnight_starship", który ustawia kolory dla phpFunction i vimFuncName, ale chcesz zmienić na styl "morning_breeze", który ich nie ustawia, bo one i tak linkują się do klas stałych. Zmieniając styl, klasy phpFunction i vimFuncName pozostałyby z bardziej szczegółowego "midnight_starship", dlatego w "morning_breeze" jest komenda resetująca reguły syntaxów. Ta komenda usuwa wszystkie klasy kustomowe i wygląda na to, że nie rusza stałych.

Zmieniasz styl i nie widzisz, że coś nie tegez, ale gdy ponownie ustawisz na "midnight_starship" to możesz zauważyć, że coś dziwnie te kolory się ustawiły. Jeżeli "midnight_starship" również resetuje składnie to kolory będą niekompetne, bo tylko dla klas stałych. Dopiero ponowne ustawienie ":set filetype" wczyta reguły kustomowe i pojawią się wszystkie kolory.

Też na to wcześniej nie zwróciłem uwagi, ale zastanawiałem się dlaczego tak wiele stylów wcale nie wygląda jak na screenie. Zwróciłem na to uwagę dopiero, gdy zacząłem pisać własne składnie i tematy kolorystyczne, bo te drugie wywalały mi te pierwsze, którym akurat obkodowywałem kolorki.

Zapytałem też AI i też mi coś w ten deseń napisał.

Jeżeli dobrze rozumiem to warto by sobie ustawić autokomendę dla colorscheme, aby automatycznie wywoływało funkcję aktualizującą filetype dla wszystkich buforów. Ja taką funkcję wrzuciłem do tematu kolorystycznego, bo robię uproszczone kolorki, więc niektóre klasy zostawiam podlinkowane do klas stałych. W ten sposób muszę resetować składnie, żeby kolorki z poprzedniego stylu mieszały się z tym co ustawiłem i w niektórych przypadkach zamiast z klas kustomowych vim korzystał ze stałych.

Przykładem jest pisanie własnych tematów kolorystycznych, gdy jeszcze nic nie ustawiłeś, a już masz kolorki z poprzedniego stylu ustawione dla klas stałych.

Technicznie to nie wiem czy to dobrze rozumiem, ale jeżeli poprawnie wykminiłem to dziwne, że komenda :colorscheme nie czyści samych kolorów i do tego wszystkich. Może też są jakieś wersje vima, które mają to spaczowane.
pokaż komentarze (2)
marcus777 2026-06-27 21:49:12 +16
Chciałem się pochwalić. Robie usprawnienia w moim bocie do inwestycji na sektorowe ETF. Odpaliłem backtest na okresie od 2004 roku. Udało mu się zrobić zwrot całkowity -22.7%!


#heheszki #giełda #claude #vibecoding #etf
Average-CottonWorld-Enjoyer 2026-06-27 22:02:50 +7
@marcus777: Za mało transakcji pewnie
Stef444n 2026-06-27 23:14:30 +6
@marcus777: teraz wystarczy tylko odwrócić logikę i będziesz miał +22%
pokaż komentarze (4)