Jump to content

ffredyk

Majitel
  • Příspěvků

    3266
  • Registrován

  • Aktivní

  • Vítězných dnů

    63

Příspěvky posted by ffredyk

  1. před 1 hodinou, Jiu said:

    Intranet korporatu je jedna vec, deployment aplikacii pre customerov zas druha. Na pohodu moze korporat pouzivat AD, Office a Win Server na spravu internych veci a deployovat docker image do kubernetes cluster beziacom na linuxe. Cely cas som predpokladal, ze sa tu bavime iba o tej "live" casti ktora je vystavena customerom.

    S tímto s tebou souhlasím a v praxi to tak běžně je :) Díky tomu jak je docker (či specifická linuxová distra) lightweight, jsou využívaná v koprodukci s Windows servery :) já tu nehaním linux jako takový, jen haním porovnání Linux > Windows, protože oba systémy mají odlišná pozitiva a negativa a jsou navrženy na support úplně jiných druhů aplikací :)

  2. On 13. 2. 2025 at 6:58, ATomas said:

    To sice ale ale korporaty jsou fakt idioti a jedou widle, Dokonce jim nevadi mit 1x mesice servery off 2-3h kvuli aktualizacim, peklo..

    Korporáty jedou na Active Directory, Office 365 a defakto mají celé firemní IT zázemí postavené na Microsoftu z jednoho prostého důvodu - neexistuje žádná adekvátní alternativa.. Respektive, pro každý jednotlivý komponent zcela jistě najdeš adekvátní alternativní, či open-source řešení, ale dokážeš z toho poskládat ucelený environment, který prostě funguje a nebudeš kvůli tomu muset platit IT tým specialistů za nekřesťanský prachy? Nehledě na to, že Microsoftí corporate support také funguje na trochu jiné úrovni, než jsou malí hráči zvyklí a Microsoft se nebojí ohýbat jeho produkty dle požadavků jeho největší klientely

  3. On 13. 2. 2025 at 16:13, Hip said:

    jo ty 2-3 hodiny me iritovaly taky Coz o to, ze to bylo down, ale ten server se restartoval kazdy tyden, takze vzdycky vsechny sessiony smazany a musel jsem pres RDP delat vsechno znovu a nejvic me na tom sralo to, ze pri kazdym prihlaseni tam vyskakovala reklama na gamepass. To proste nepochopim, kterej deb*l vymyslel, ze na serveru bude predinstalovanej xbox gamepass s povinnou reklamou

    To smrdí amatérským adminem, než teda problém serveru :D Nám se všechny instance aktualizují 1x měsíčně za pochodu a restart necháváme na noc o víkendu.. Avšak v nových WS 2025 nás již čeká hotpatching, který zvládne aktualizovat celý OS bez restartů :) 

    Vzhledem k tomu, co out-of-the-box WS nabízí, si stále troufám tvrdit, že jeden malý restart jednou za měsíc (updaty vycházejí každou druhou středu v měsíci) je menší zlo, než nechat linuxovou černou skříňku běžet s ročním uptimem :D 

    • OMEGALUL 1
    • Nope 1
  4. před 14hodinami, Hip said:

    tak to rozjed v dockeru... Tam nikoho nezajima co to je za binarku a jen budes updatovat docker images. Kazdopadne RIP 

    Vzhledem k tomu, že jde o staré hry, tak nevím jak se budou v dockeru chovat :D můžeme to zkusit, ale nejradši bych setupnul už léta ověřené řešení :D

  5. On 4. 2. 2025 at 8:51, Hip said:

    @ffredyktak co ty, postaras se o to? Me se ten napad libi, ale chce to vudce

    HW se mi válí doma, musím najít čas to postavit.. Kdo na tom chce rozjet nějaký server pod záštitou Pawno.cz (alespoň prozatím) tak ať si připraví binárky, který mi pak naposílá - já k tomu pak setupnu nějakej basic přístup kvůli opravám, úpravám a správě. Pojede to pod Windows OS - takže windowsácké binárky :) (na linux už jsem zanevřel dávno a v corpo světě stejně Windows Server vítězí na celé čáře)

    • Smutný 2
  6. před 3hodinami, Ingnition said:

    Tohle je velice dobrá myšlenka. Jednou jsme to s klukama zkoušeli podobně oživit. Prostě staré klasiky. Neuchytilo se to. Ta dnešní herní mentalita už je úplně někde jinde. Ale když to budeš dělat formou nějakých eventů a podobně, tak by to úspěch mít mohlo. Jinak jak sám píšeš, bez eventů budou ty servery prázdné. Pár zajetých serverů v každé hře je a nikdo nemá důvod si jen tak hrát na jiných public serverech než na těch zajetých.

    A vůbec by nebylo na škodu tomu dát nějaký název, nějakou identitu, webovky... Když to bude založené na těch eventech a vše dobře zajímavě promyšlené, věřím že by se i ten "premium" mohl uchytit. Ale musí v tom být pravidelnost a aktivita. Mít jeden event měsíčně by to umřelo dříve jak začalo. To by pak stačilo si tohle prostě dělat jen sám pro sebe a pro své kamarády.

    Proto s tím jdu sem :) jestli se nás najde víc, tak se rozjede víc her :) sám se dokážu starat max o jednu až tři hry + technické zázemí.. Ale to by pak byl projekt o prdu, že? :D 

    • Líbí se mi to! (+1) 1
  7. Ahojda, za svou kariéru C# programátora mám na kontě nespočet projektů, experimentů a různých jiných tvoreb.. Většinu z nich jsem nikdy nevydal na světlo světa k údivu, a tento rok to chci alespoň mírně změnit. 

    Již v roce 2022 jsem se inspiroval jakýmsi videem někde v hlubinách internetu, ve kterém v relaxačním formátu byli vyobrazeny kámen, nůžky a papír v soubojích ikonek. Hrozně mě to chytilo a mermomocí jsem potřeboval sledovat další zápasy, tak mě napadlo, že si to naprogramuju v Unity.. Z nápadu vznikl koncept, ve kterém jsem si uvědomil, že bych se těch válek chtěl účastnit a takto se nápady jen hrnuly až vznikl tento počin.. Dostal jsem do formátu, který jsem chtěl prezentovat svému okolí a překopal jsem to do verze mobilní hry, kterou jsem pak náležitě prezentoval. Mé okolí je však fantazií zaseknuté, nenadšené a já ztratil motivaci to dotáhnout do konce.

    Již delší dobu mě mrzí, že zrovna tuto gamesku jsem nikdy nevydal a hodlám to tento rok změnit - strávil jsem poslední dva dny překopáváním původní verze do WebGL desktopového dema, které obsahuje dva základní (avšak strategicky naprosto odlišné) módy hry. V plánu mám dodělat ještě Capture the Flag (tři vlajky na poli, kámen sbírá vlajku nůžkám a brání před papírem a vice versa) + online multiplayer. Jenž bude vlastně místnost (a pokud bude hráčů až moc, tak se přidělají místnosti) s hlasováním ohledně hranných módů na omezený počet kol

    image.png

    Vyzkoušejte si ji hned :)
    https://gamecenter.ffredyk.cz/game.php?gameid=knp
    (možná ještě chytíte chybu certifikátu.. Už je vygenerován opravený, ale propagace trvá..)

    Běží to sice na archaickém PHPkovém mikrosystému, který jsem musel vykuchat apřekopat, ale pro tohle základní demo to zatím vystačí :)

    image.png

    • Líbí se mi to! (+1) 1
  8. Pro případ, že by servery (např. u Vietcongu si nedělám velké naděje) zely prázdnotou, chtěl bych to klidně udělat formou předem domluvených eventů - v kalendáři her se vybere datum, oznámí se hráčům, kteří mají zájem, že se bude hrát a v tolik se zde na pár hodin sejdeme :) Server pak sám vymře a po hodině nulových hráčů se sám vypne. Nedělám si iluze, zase tolik veteránů nás nebude, ale jednou za čas mít připravenej prostor i na tyto staré smažby, to přeci nemůže nikdo odmítnout :D 

    • Líbí se mi to! (+1) 1
  9. před 3hodinami, Army said:

     @ffredyk podle mě má smysl dělat pouze servery v kterých máš nějaký osobní zájem (například tě baví je spravovat, rozšiřovat a nebo na nich hrát), což je později prakticky i motivace je udržovat v opačném případě zpravidla zanikne vše dříve.

    Proto jsem založil tento topic :) osobně mě láká primárně CoD2, Vietcong, Arma 3 a L4D2 - avšak všechny ty další hry bych klidně také rád hrál a měl svůj domácí server kam jednou za čas zavítat, pozdravit se s lidma, poklábosit, udělat soutěž apod.. Nemám v plánu se starat o vše sám, a když už tak ať je to co nejvíce autonomní. Proto hledám další nám podobné, kteří by si pod svá křídla vzali starost o servery dalších her na společném HW pod společnou záštitou :) 

  10. Říká se to již několik let, vlastně od uvedení prvního ChatGPT, ale široká veřejnost to naplno pocítí až tento rok.

    Někteří se tématu věnujete, a jiní z vás se tomu vyhýbají. Je to stále velká neznámá, ale oproti tomu co se hlásalo ještě minulý rok, máme vlastně už celkem pojem o tom, jakým směrem se s novou technologií AI řítíme. Historie o vzniku neuronových sítí, AI a samotném technickém pozadí je na netu tuna, tomu se vyhneme. Já bych se s vámi rád podíval na reálné dopady na náš nejen vývojářský život. Prozkoumáme různé úhly pohledu a nahlédneme za oponu firmám, které AI kolotoč rozjíždějí naplno.

    AI je již úplně všude

    Možná si to stále ještě neuvědomujete, ale různé formy moderní AI už dávno fungují i v těch nejnápadnějších funkcích a nejjednodušších aplikacích. Zejména produkce od velkých hráčů, je dnes už umělou inteligencí protkaná srkz naskrz. Zejména v hudebním sektoru (např. FL studio) je většina nových pluginů zcela nebo alespoň zčásti postavena na AI. Marketing je stavěn minimálně s podporou AI, editoři a redaktoři přicházejí o práci, jsou nahrazováni efektivnější a levnější AI. Profilování zákazníků, zaměstnanců, zájemců o práci, firem a všeho co profilovat lze je dnes také primární úkol pro AI. Jsme jen krůček od kompletního řízení korporátů pomocí AI (opravdu, ohrožena je i pozice CEO, AI ji zvládá lépe, rychleji a s lepšími výsledky). CGI pomalu zvoní umíráček, AI je schopné vytvářet mnohonásobně lepší a realističtější video produkci jen z výchozího materiálu a textového vstupu, za zlomek času. Samotná produkce hudby je také v loji, AI nyní generuje celé písničky na textové přání. Moderace obsahu je třeba na YouTube kompletně řízená vlastní AI. Cenzura nejen v diskuzích na internetu, ale i ve hrách a jiném obsahu je také obstarána AI. Dokonce už existuje i AI, které hlídá jiné AI. Na ukrajině již dnes testují technologii swarmu stovek dronů, které letí blízko u sebe a každý má vlastní cíl, kterého je schopný dosáhnout každý dron individuálně. A v nejbližší době nás čeká navíc technologie Mothershipů, které tyto swarmy budou automatizovaně vypouštět bez lidské kontroly na území zamořené rušičkami a zbraněmi elektronické války.

    AI vs Programátoři

    Pělo se za prvních verzí GPT, že programátorům už odzvonilo a budou první, jenž AI nahradí. Samozřejmě, profíci z oborů a AI specialisti věděli moc dobře, že to nebude tak černobílé. Takže i já, po prostudování a hlubokého ponoření do tajů a problematiky AI, jsem naprosto vychladl. Na stejné vlně jedeme i dnes, avšak má to své ale. Juniorní pozice jsou opravdu naprosto ohroženy existencí AI. Juniora dokáže AI nahradit naprosto bravůrně, a jelikož firmy lační po optimalizacích a výdělcích, junioři jsou dnes biti, naháněni vidlemi a odmítáni ze všech stran. Je to nebezpečný precends, který se již několikrát opakoval v jiných oborech (no řekněte sami, jak jednoduché je dnes sehnat spolehlivého a kvalitního truhláře za rozumnou cenu?) a v IT nyní vzniká masivní propast, která časem bude jenom expandovat. Programátoři již dnes vydělávají sumy vysoce nad celorepublikovým průměrem (kromě mě...) a absence juniorů za pár let zákonitě zvýší hlad po seniorech. Protože důchody, vyhoření, osobní cíle apod. žejo..

    Faktem zůstává, že AI programátory nebyla schopna, není schopna a hned tak nebude schopna plnohodnotně nahradit. Dokáže vám napsat jakoukoliv jednoduchou appku, script, algoritmus, snippet, nebo najít a opravit problém. Co však není schopna, je navrhovat bezpečnou architekturu, optimalizovaný codebase, koherentní výstup většího rozměru a nedokáže plně zvládnout komplexní problémy, či kompatibilitu s hardwarem, které se v minulosti nikdy neřešily. To však vytváří zcela nový prostor pro využití AI jako nástroje v rukou programátora!

    Jako mnoho jiného, i AI je mocný nástroj, ale krutý pán

    Sám jsem nedokázal dlouhou dobu do svého zajetého režimu AI vměstnat rozumným způsobem. Při první virální explozi jsme všichni využívali AI na jakoukoliv blbost a defakto jsem sám sebe nahradil neschopným programátorem, po kterém jsem musel všechno opravovat, měnit a dá se říct, že jsem se dokázal hlavně inspirovat - nechal jsem se nasměrovat směry, které jsem původně nezamýšlel. Poté jsem na pár měsíců AI vysadil, dokud si nevytvořím ucelený obrázek o tom, jak a do jaké výše AI ovlivňuje mě a moje výsledky. Před vánoci jsem se k AI vrátil a dokázal ho úspěšně integrovat do mého workflow. Moje efektivita se nezdvojnásobila, neztrojnásobila ale zdesetinásobila! Jsem člověk bádavý, rád hledám nejlepší řešení a optimalizuji co se dá v rámci mých znalostí a schopností. Občas mě to dokáže natolik sežrat, vytočit nebo frustrovat, že pak scrapnu celý projekt a začínám od nuly. Je to něco, s čím bojuji snad přes desetiletí. Pravidlem se však stalo, že ve vývoji projektu vždy nastane chvíle záseku, narazím na problém, který sice mohu vyřešit nějakým vochcáním, ale když už jsem tak daleko a mám stále tak čistý a krásný kód, nedokážu prostě teď zkousnout zuby a napsat nějakou prasárnu. Začal jsem se tedy obracet na AI a v diskuzi dvou profíků jsme téma vždy rozebrali, našli možnosti, vyměnili si kritiku či dohledali vzájemně možné vektory selhání a světe div se! Problém, který bych normálně řešil celý týden, nyní řeším v rámci desítek minut.

    Jako příklad mohu uvést jeden z mých posledních lehčích zášprků, který mě začal deptat.. V rámci jednoho projektu vyvíjím aktualizaci, která má za úkol pracovat s IP adresami. Projekt je již zajetý a novou žádostí jest automatizace přepínání IP adres z různých rozsahů tak, aby nevznikla kolize mezi 100 stroji a každý měl přiřazenou svou IP adresu z celého poolu různých rozsahů. Není to až tak problém v kódu samotným, jako spíš že se jedná o datové peklo.. Nejhorší úkol, který můžete dát programátorovi, je práce s daty a nutnost switchovat mezi různými prostředími. K tomu všemu byla data naprosto nepoužitelná a musel jsem si extrahovat a postavit vlastní dataset. 

    Vytáhl jsem si IP adresy ze strojů, o kterých jsem věděl, že používají jiné rozsahy a pomocí kalkulaček jsem si zjistil celou subnetu. Díky tomu jsem získal také výchozí brány sítí, které jsem ve výchozím datasetu pořádně zanesené neměl. Začal jsem si data organizovat do nového Excel sheetu s tím, že zkusím zavařit rovnou v tabulkách a nebudu psát zbytečně script, který by to rozřadil za mě - měl jsem prostě náladu a chuť na nějaké to hraní s tabulkami. Po prvotní stavbě tabulky se všemi možnými IP adresami (které jsem sprostě vycucnul z kalkulačky) a manuální asociaci všech serverů k jejich IP adresám, mě napadlo postavit matici z těchto dvou sloupců a protkat je mezi sebou. To by mi vytvořilo krásný náhled na aktuální distribuci IP adres z rozsahů a námět k dalšímu plánování rozšířené distribuce. Začal jsem stavět kostru matice a napadlo mě, že excel zcela jistě nabízí nějaké nástroje, které by mi práci ulehčili - data už jsou napsaná, proč je nevyužít a netransformovat? Nastartoval jsem chat a začal se vyptávat - AI začalo flusat nápady, návrhy i s postupy jak je použít. Matice byla hotová do pár minut. 

    Nakonec jsem se rozhodl to ještě překopat do kontingenční tabulky, která bude stavět všechno dynamicky. Obarvil jsem datové pole navíc podmíněným formátováním, ve kterém mi zase AI pomohlo - to vymýšlení vzorečků (a to ještě v české lokalizaci) mě vůbec nebaví. Takže nyní jsem měl krásnou matici s IP adresami v řádcích a čísly serverů ve sloupcích. Na řádcích IP adres, které byly zneužity nějakým serverem, bylo nastaveno formátování, které zbarvilo celý řádek a napovědělo tak, že tato IP adresa již není volná. Stejně tak, pokud šlo o gateway, celý řádek se znepřístupnil rudou barvou. Krásná mapa volných IP adres s přehledným uceleným náhledem na řazení serverů byla na světě!

    image.png

    Toto celé bylo možné vzniknout za zhruba 30 minut. A to jsem ani nebyl plně soustředěn. Mám z toho však strašnou radost, mozek se mi zaplavil dopaminem a už to nikdy neotevřu.

    Díky té mapě jsem však byl schopen smysluplně rozvrhnout zbytek volných adres a přiřadit na jeden stroj 3 adresy. To jsem později na dalším listu připravil do struktury vhodné k vložení do databáze a tak jsem i učinil. Na strojích, jenž jsou určené jen k běhu jednoho programu, bylo nutno vypnout UAC (alespoň dočasně, než se dořeší runas shell celého programu). Dělat to manuálně, tak by nám brzo hráblo - máme však již zaběhlý baťák pro manuální aktualizace (pro případ, kdy automatické aktualizace selžou - většinou se tak děje, když něco poseru), který je schopen stroj vyčistit a nainstalovat od píky i na úplně čerstvém systému jak program, tak jeho dependencies (.NET runtime apod.). Napadlo mě, když to stejně budeme vše vypouštět manuálně, zda se nedá do toho baťáku nacpat právě i vypnutí toho UAC - AI hned odpovídá ano! Lze to a i celkem jednoduše, jde jen o úpravu klíče v registru! Jen je potřeba elevated runas - není problém, s pomocí AI nám teď self-elevuje skrze powershell i tento baťák! Při testování aktualizace na produkčním stroji se člověk nikdy nevyhne nečekaným problémům (aneb Windows environment) a tentokrát šlo o chybné zadání parametrů "netsh" command lajny, kterou program zneužíval k výměně IP adres (proto ten UAC disable). Byl to jen problém v názvu adaptéru.. Na testovacím prostředí je interface nazvaný "Ethernet", na produkčních mašinách "Ethernet 2" (insert facepalm), AI bylo zneužito pro rychlé dohledání parametráže netsh commandu k zobrazení názvu adaptérů - je to stále o mnoho rychlejší než stavba přes --help nebo googlení a proklikání se na první stackoverflow topic. 

    Však nahlédněte sami do mého myšlenkového procesu v práci s AI :D

    Kapitola UAC a NetSH - https://chatgpt.com/share/678983f4-e8e0-8001-aa8b-3b2c8977b0ca
    A kapitola Excel a jeho záludnosti - https://chatgpt.com/share/6789845d-7400-8001-b0fd-c360d1a121bc
    Schválně ho dávám jako druhý (i když časoprostorově vznikl jako první), protože nad některými otázkami se nejspíš pozastavíte, uculíte a půjdete dál - vězte, že nejsem Excel guru a dělám s ním dvakrát do roka, opravdu mi v závěsu jeho úchylných funkcí nedošlo, že většímenší bude i v něm o <> a čísle :D

    Pokračování na téma umělé inteligence zase třeba za týden :) rozebereme další zajímavá témata nejen o programování v režimu AI boosted - jako třeba o tom, jak AI detekovat očima člověka, jak se vypořádat s ofenzivní AI, která vás chce oškubat apod. :) 

    • Paráda! (+1) 1
  11. Baf,

    Máme nový rok, všichni v něm vítejte :D Místo vymýšlení sáhodlouhých románů (vzhledem k velkému pracovnímu vytížení) o tom co se v roce 24 povedlo či nepovedlo, budu se radši věnovat činnostem aktuálním. Tesknu, ještě s dalšími pár lidmi, po herních klasikách, na kterých jsem počínal svou kariéru gamera. S mojí herní skupinou tradičně každý rok okolo vánoc probouzíme k životu hry jako CoD2, Synergy, CSka a spoustu dalších. A vzhledem k tomu, že u mě nyní vzniká takové menší serveroviště, chci využít jednu/dvě mašiny k zprovoznění herních serverů (nejen) těchto klasik. 

    Otázka zní, je tu někdo, kdo by se toho chtěl účastnit? Ještě si pohráváme s nápady a samotným tvarem, cílem je však gameplay. Pokud by se vás tu sešlo víc, nebráním se integraci a záštitou pod Pawno.cz, případně znovuzrození portálu AltGamer (či nějaké variaci). 

    Seznam zamýšlených her:
    - Call of Duty 2 (případně 4)
    - Garry's mod?
    - SA:MP
    - Factorio
    - Minecraft
    - FiveM (primárně asi stavba RP serveru, nejspíš i EN oriented)
    - CS 1.6 (či Source nebo dvojka)
    - Vietcong
    - Arma 3 (persistent bitka s pravidelnou zeusovanou mega-opkou vázanou na aktuální battlefield)
    - Left 4 Dead 2

    Kde se dá, rozjet vlastní tvorbu (SA:MP, Arma 3), kde ne (CoD2, Minecraft) tam nacpat něco, co nás odliší alespoň mírně originálním způsobem. Financovat se to bude z dobrovolného "Premium" na měsíční bázi, který nabídne kosmetiku a prezentaci, ne však žádné herní bonusy. Kde to bude dávat smysl, lze vymyslet "Booster pack" (SA:MP = balíček prachů, pokud nebude herní mód založen na ekonomice). Nečekám však, že by šlo o nějaké zisky, spíš jen menší vykrývání ztrát

    • Paráda! (+1) 1
  12. Dnes se mi stala událost, na kterou jsem připravený čekal několik let. Náhoda tomu chtěla, abych se dnes večer podíval na Pawno (moje měsíční guilty pleasure) a Hipův revival staré nostalgie ve mě vzbudil nápad... Již delší dobu si píšu blog, který sice není nikde veřejně přístupný, ale pomáhá mi to poškrábat takové to svědění vzadu v hlavě na mojí kreativní (spisovatelský) vlnce. V IT světě již dělám přes 15 let a za tu dobu člověk nasbírá hromadu historek, zkušeností a znalostí. Jsem zastáncem názoru, že člověk se chybami učí, tak si asi dokážete představit, kolik jsem těch chyb musel nasekat já. Nicméně dnes chci zaexperimentovat a trochu více vystoupit z komfortní zóny (jako by měl každý z nás jednou za čas), podělím se s vámi o další potenciální záškrt do osobního neveřejného blogu, který bych teď psal.

    Volali mi scammeři. 

    A to ne jen tak ledajací scammeři, ale ukrajinsko/ruský mix (tak nazývám někoho s přízvukem, který nedokážu rozlišit mezi ukrajinským a ruským). Hned po zvednutí hovoru jsem se stal obětí krkolomné češtiny, snad ještě horší kvality, než byli schopni produkovat někteří vybraní členové tohoto fóra desetiletí zpětně. Kromě masáže mého řečového centra proběhla masáž i mých ušních bubínků, protože ta fren fajn na druhé straně sluchátka byla fakt kandidát do mučedních prostor zvukem. Bylo na mě vychrleno kvantum informací a pochytil jsem z toho tato klíčová slova: "Účet", "burza", "150€", "1500€", "přiděleno společností na Váš účet", "musíte vybrat", "účet zablokovaný", "zítra bude smazán". Celý proces však trval tak nějak bez mála deset minut, většinu času jsem se ptal v cyklu a používal slova jako "nerozumím", "proč?", "jakto?" a tak podobně. 

    V zkompilovaném celku bychom mohli snad i říct, že jsem si před dvěma lety registroval účet u nějaké nesrozumitelné společnosti burzy kryptoměn (jako ale fakt ten název mi baba opakovala 11x a ani jednou jsem nebyl schopen porozumět, bylo to něco jako "bllrrnnnhhmmmlllbb"). Tento účet je však nyní zablokován, zítra bude smazán a společnost, která mi přidělila na účet 1500€ mi je nyní chce mermomocí vyplatit, protože bych o ně jinak přišel. A představte si to v histerickém tónu, jako by ty prachy byly snad její a moje součinnost rozhodovala o přežití lidstva. Několikrát jsem se snažil hovor ukončit s tím, že se na to podívám, ať mi pošle nějaký e-mail s informacemi - nelze, e-mail není důvěryhodná komunikační cesta, prý (foreshadowing)

    Když jsem úspěšně absolvoval iniciační kolo, bylo mi sděleno, že mi na e-mail zasílá ověřovací odkaz, na který musím kliknout abych se mohl přihlásit do svého účtu a zadat výdej peněz na svůj účet. Vraťte se na začátek tohoto odstavce, přečtěte si ho ještě jednou. Pak se vraťte do poslední věty předchozího odstavce, přečtěte si ji ještě jednou. Ano. Přesně tak.

    No nic, v tomto bodě už jsem držel smích a nedokázal rozporovat validitu tohoto způsobu přihlášení. Přešlo se k otázce zda mám počítač, či mobilní telefon. Nemám. Proč taky, co bych s těma krámama jako ajťák sakra dělal..? Ale zřejmě přes to nejel vlak, protože se vždy po mé negativní odpovědi baba odmlčela. V jednu chvíli i na dvě minuty a to už mě přestalo bavit, tak jsem jí hluchý hovor prostě položil (oba jsme se mutovali jak na závodech mačkačů tlačítek). Do pár vteřin volala znovu (z jiného čísla) a hned se tázala, proč jsem to položil, ať to nepokládám, vždyť dostanu prachy, jde o prachy přece! Tak jsem kapituloval a s vidinou progresu k zajímavějším tématům, jsem jí řekl, ať si představí, že teda počítač mám (doslova takto jsem jí to pravil). Baba to vítězně akceptovala a pokračovala dalším řádkem jejího návodu.

    Avšak dobrovolně nyní celou plavbu ona sama zatočila směrem do zátoky "Jazyková bariéra a komunikační šum". Hned co vyplulo na povrch, že mají jakýsi neznámý e-mail podobný mému jménu u Atlasu, jsem ji korektoval, že takový e-mail není můj. Načež samozřejmě bude potřebovat e-mail aktuální, mé srdce zaplesalo a plíce v křeči drží smích. Z hlavy jsem si v průběhu několika vteřin vymyslel nejméně srozumitelný a nepochopitelný email, který bych mohl zároveň využít jako honey-pot. "Můžete mi to nadiktovat po písmenkách?" zaznělo z telefonu po mém hrdém vyhlášení mojí nové e-mailovky! Koutky mých tváří cukaly, slzy v očích začaly se třpytět, bylo to fakt těžký.. Nicméně: 

    "Géé.."
    - "Géé, jako Gabriel?" (ruskoukrajinským přízvukem)
    "Ano, Géé!"
    - "Dobže, Gé, dalej?"
    "Óóó.."
    - "Óoo, jako (nesrozumitelné, ale slyšitelně špatně)"
    "Ano.. Béé!"
    - "Bá? Barbora?" (která však zněla blíže jako Banderas)
    "Ano, Ííí!"
    - "Jako Ilja?"
    "Ano! T!"
    - "D?"
    "Ano, T.. Ááá! Zavináč, Ííí.."
    - "..."

    Chvilka ticha, pár vteřin, ale vzápětí se ozval typicky ukrajinský mužský hlas (v práci jich máme tunu), zřejmě manažer call centra, či nějaký team leader. Chtěl začít od začátku.. Nevěřil pindě, že fakt správně dokázala napsat "gobita". Tak jsem chtěl jeho potrápit ještě víc a nejdříve úmyslně, ale hned na to už neúmyslně jsem začal komolit písmena a plést E s A, T s D a sám jsem se v tom celkem zamotal :D 

    Nicméně, časovka hovoru už ukazuje 20 minut a já pomalu ztrácím trpělivost, manažer už není tak vtipnej jako baba, ani zjevně tak blbej.. Ale stupidní je stále dost, tak možná bude sranda. Po úspěšném přelouskání e-mailu gobita(a)ithead.cz se zřejmě někde v jeho hlavě aktivoval jakýsi neuron, tak přišel s dotazem:

    - "To je nějaký firemní e-mail?"
    "Ano, to je můj firemní e-mail.."
    - "A nemáte nějaký osobní?"
    "Nemám, mám jenom tento, používám ho i k osobním účelům"
    - "Aha.."

    Byl z toho chudák úplně nešťastnej. Nedokázal si představit, jak někdo může fungovat jenom na firemním mailu. No nic, red flagů jsem mu dodal dost, teď už z toho jdu fakt dělat frašku.. E-mail mi zřejmě byl odeslán, čekám, nic, stěžuji si: 

    "Já jsem stále nedostal žádný ten e-mail od Vás!"
    - "Už je na cestě, už jsem ho odeslal, hned tam bude!"

    Opravdu dorazil, ale já jsem sundal brýle na dálku, tak jsem ho přehlédl a pokračoval jsem pár minut v tvrzení, že stále nedorazil.

    - "Je to zvláštní, a vy telefon nemáte?"
    "Ne nemám, no vlastně mám, teď z něj volám, ale ten mi asi používat nepůjde"
    - "Vy nemáte smartphone?"
    "Ne, já mám takový ten starý Alcatel, tlačítkový"
    - "Proč nemáte dotykový?"
    "Já mám moc velký prsty na ty displeje, se nemůžu trefovat do těch malých písmenek a tlačítek"
    - "Aha.."

    Po klidném studiu e-mailu, který dorazil a normalizaci záchvatů smíchu (když přiblížím kontext, celý tento hovor se odehrával v kanceláři s kolegy, ti se kvůli mým odpovědím doslova váleli na zemi v kaluži slz smíchem) jsem nastartoval v klidu sandbox a odkaz v e-mailu, který odkazoval na soubor charakteru zjevně virového, otevřel v něm. Pětimegový soubor se mi nasosal do virtuálního systému a já mohl začít studium. Bylo mi už líto manažera a vycítil jsem, že už to semnou chce vzdát, tak jsem mu zase hodil kus drobku s tím, že e-mail dorazil!

    "Hurá!" ozvalo se upřímně z mého telefonu, radost byla obrovská, už jsou kousek od lapení další oběti! Po celých 25 minutách jednání s totálním BFU věřím, že už se těšil na sladký konec. To mě hřálo u srdíčka. Oba jsme věděli, že konec se blíží. Jen já však věděl, že jen já budu velmi spokojen. 

    Samozřejmě tušíte, co následovalo po oznámení, že e-mail dorazil. Avšak spouštění pofidérních souborů, i přestože spouštěno v sandboxovém prostředí, je prostě hazard. Windowsovému sandboxu prostě nevěřím natolik, abych si dovolil na své produkční stanici hazardovat s neznámým virem. Tak jsem vymýšlel kreativní řešení mojí svízelné situace, chtěl jsem z něho vymáčknout alespoň ještě poslední kousek frustrace. Vyhrál to antivirus, nebo antiviry?

    - "Stáhl se Vám soubor BTC-Connect?"
    "Ano.."
    - "Tak ho teď spusťte.." (a začal vysvětlovat, co asi nastane za efekty a famfáry)
    "Ono to spustit ale nejde a vpravo dole mi vyběhlo okno, že prý to je virus!"
    - "Cože? To není možné.."
    (doslova minutu přemýšlel a zapomněl se mutnout, tak jsem uchem vysával sluchátko telefonu)
    - "A co máte za antivirus? Avast?"
    "Ano, avasta mám, no"
    - "Tak ho zkuste vypnout"
    (následovalo úporných a značně nepříjemných 5 minut zápolení s vypnutím avasta
    - "Zkuste ten soubor spustit teď"
    "No, ale já už ho tam nemám"
    - "Tak znovu otevřte ten odkaz a on se vám stáhne"
    "Ano, už se stáhl"
    - "Tak ho otevřte"
    "On už zase zmizel a zase mám vpravo dole okýnko, tentokrát od ESETu!"
    (nastal vokální rozklad mentálního vědomí na druhé straně hovoru)
    (doslova byly občasně slyšet hlasivky vyjadřující nepochopení.. Nedokázal vůbec pobrat, jak je toto možné)
    - "Vy máte ještě ESET?"
    "Ano.. Já ho taky vypnu"
    ...
    "Tak je vypnutý, ale teď tu mám zase znovu okýnko, od AVG! Mám i ten vypnout?"
    (Jako v tomto bodě už nebyl schopen komunikace ani na základní úrovni. Byl tak 'flabbergasted', že nevydal smysluplného slova a já defakto vedl monolog)

    Klíčové bylo nepustit ho ani pořádně ke slovu. Po dokončení věty jsem nechal odmlku tak akorát pro vsugerování, že očekávám odpověď od druhé strany, ale hned vzápětí jsem pokračoval správným krokem vstříc řešení našeho masivního problému! A pak ještě jednou s Kasperskym.

    V ten moment už se mi ale rozkládalo i okolní prostředí v kanceláři a zhodnotil jsem, že již nejsem dále schopen vést tuto konverzaci a povídat si sám se sebou. Tak jsem zeptal narovinu:

    "Mohu se na něco zeptat?"
    - "Eh.. No, ano?"
    "Kolik lidí se Vám na tuhle ptákovinu chytí?"
    - "Cože? Nerozumím"
    "No kolik lidí Vám tohle sežere.. Vy zavoláte ajťákovi a čekáte, že to neprokoukne? Ale jako děkuji Vám za binárku, telefonní čísla, e-mail a doménu, to všechno se teď hodí!"
    - "Nasch.." 
    (položil hovor)

    Teď k technikáliím

    Jsme na programátorském fóru, tak Vás zcela jistě kromě sociální stránky věci zřejmě zajímá i ta technická. Tak se na ní vrhneme!

    Jistotu bezpečí mi zaručoval celou dobu Windows Sandbox, což je vlastně virtuální mašina co rozjede kopii vašeho běžícího OS. Běží na technologii HyperV a musí se nejdříve do Windows nainstalovat jako volitelná komponenta. Zároveň se musí v systému zapnout virtualizace a optimálně nastavit pár věcí. Já osobně ho však nemám podrobně nastudovaný, tak ho zneužívám jen pro základní izolaci čehokoliv, čemu nevěřím. 

    Je potřeba však brát v potaz, že ani virtualizace není stoprocentní a pokud se škodík dostane na kernel level (což by teoreticky mělo být nemožné z virtuální mašiny, ale prakticky už se to stalo), dokáže požrat celou mašinu zevnitř. Proto ani v takové virtualizaci nebezpečné binárky nespouštím, jen dekompiluji a rozebírám.

    Soubor, který mi byl poslán byl odeslán z e-mailu [email protected] a byl odeslán přes Google servery
     

    Return-Path: <office.yana.vesela@gmail.com>
    Delivered-To: [email protected]
    Received: from wes1-mx8.wedos.net ([10.36.200.5])
    	by wes1-im4.wedos.net (Dovecot) with LMTP id qWQ4AWjuTmcCewAA/yykGQ
    	for <gobita@ithead.cz>; Tue, 03 Dec 2024 12:41:28 +0100
    Received-SPF: pass (gmail.com ... _spf.google.com: Sender is authorized to use '[email protected]' in 'mfrom' identity (mechanism 'include:_netblocks.google.com' matched)) receiver=wes1-mx8-0.wes1-mx8.hosting.svc.cluster.local; identity=mailfrom; envelope-from="[email protected]"; helo=mail-yb1-f196.google.com; client-ip=209.85.219.196
    Received: from mail-yb1-f196.google.com (mail-yb1-f196.google.com [209.85.219.196])
    	(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
    	(No client certificate requested)
    	by wes1-mx8.wedos.net (Postfix) with ESMTPS id 4Y2dyv5YGCzCqjg
    	for <gobita@ithead.cz>; Tue,  3 Dec 2024 12:41:27 +0100 (CET)
    Received: by mail-yb1-f196.google.com with SMTP id 3f1490d57ef6-e3983426f80so3847964276.1
            for <gobita@ithead.cz>; Tue, 03 Dec 2024 03:41:27 -0800 (PST)
    DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
            d=gmail.com; s=20230601; t=1733226086; x=1733830886; darn=ithead.cz;
            h=to:subject:message-id:date:from:mime-version:from:to:cc:subject
             :date:message-id:reply-to;
            bh=8PY3zhfSWb94JEopnPUq0GkYrzbmuQdx7OAa3zsH0yQ=;
            b=NXAD6cQtGQb1SLVXgp3mT+mIZvcgZXuZKGjMfIMqYlfkODZ1AWKemtDTquyegVl+O/
             DKFHoVYxDpaLHgf6f2rsSfGMHGegjHL+c17TjcPBG/Unv+dGO6ECBpYo9LoYg2bFAu1s
             ZDWoU+4mFbdlS8bPI3xTFcjlQZoI6TcsztrmdKSbtGp85l1eQ4EXeKrhyWjeNlA7oCS8
             L77E0uhz+/8QI0Lcfi5cBx5yJIl4yyjNnXy3hx+aOGwebnEyZaXpx4xzTV7Iy7Bi3e5o
             Z4sYImpemmM4zNvoXuzrvsRQNlPzOoBJ0vLEWc+8+36LdQ1B7jTXrFGXyWSj7h1jhdGY
             fPmg==
    X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
            d=1e100.net; s=20230601; t=1733226086; x=1733830886;
            h=to:subject:message-id:date:from:mime-version:x-gm-message-state
             :from:to:cc:subject:date:message-id:reply-to;
            bh=8PY3zhfSWb94JEopnPUq0GkYrzbmuQdx7OAa3zsH0yQ=;
            b=odFuhFFdjCvEmBipVEA/27hoV2yL9AOHnu7hHGz1fuELaArmPbnbbJSUlvJ8yeBMSb
             0G7jreh7PYT19nxn5aIyFQ6i6Xa8NU/yj3EDyIFmRM4lZd6jjwpCXRVwDTHU6cQPYz78
             9vzaEnUPwUkogyNiwu+33NsrQ/YYLw/qZ0Lhj3FzQ/VD4zYxlOJf8inz+m6OMbL7THTO
             aAaa8G89D6kVKwOWLxoYK18rlPXGsvjcasXjuZjqRf/yACOp681Kp8+OkIKp6VZaRmXE
             jkWrp1aTk3TwmpsLnwhc/zUiWJ1QV4jNtM+Q86FZqXPxgW/fUKxN368JXMLGWxF6UkwH
             XxPQ==
    X-Gm-Message-State: AOJu0Ywq24A6T8KUp+NNgp8qczbjqiu8w3+T8dYCjLPe7lXRPKrbr0Up
    	gfjf1hEl7VcxwJfc3bIk8xpmP9K1sWX51xZ1vRLrcj2C7T9qTbpYitaj25hJuDFqBz7qMTdDOe4
    	YskNoUAA5T2UeRbVqy7M/jTGlYRUeuf4A
    X-Gm-Gg: ASbGncuNGw9dHVcudd6KHO+bVdYJ5FRTwdZNnkJMvAfY11s+kVcV6ISNziNrjn4Mz/9
    	cyGqeJHFvnGboTlkHEphm5n9czxBrcmQ=
    X-Google-Smtp-Source: AGHT+IF+JG/kkJnnqK8dkO0ju0TmzBQ5cQfhOTHaBb9GgCoGZKCGN5hUfcqZUOW8/NH3CGVGiprZiMOZP/zZu+snE7o=
    X-Received: by 2002:a05:6902:2202:b0:e29:890:c6d4 with SMTP id
     3f1490d57ef6-e39d417fb72mr1896519276.41.1733226086279; Tue, 03 Dec 2024
     03:41:26 -0800 (PST)
    MIME-Version: 1.0
    From: yana vesela <office.yana.vesela@gmail.com>
    Date: Tue, 3 Dec 2024 12:41:15 +0100
    Message-ID: <CACByOc70GuwT51bnThqWoi85kqrK0q1c97L5uoLLZtgy7Y7y5A@mail.gmail.com>
    Subject: INFO
    To: [email protected]
    Content-Type: multipart/alternative; boundary="00000000000030328f06285c2518"
    X-Spamd-Bar: --
    X-Spam-Status: No, score=-2.41
    X-Rspamd-Server: wes1-mx8-0
    X-Rspamd-Queue-Id: 4Y2dyv5YGCzCqjg
    X-Spamd-Result: default: False [-2.41 / 15.00];
    	 R_SPF_ALLOW(0.00)[+ip4:209.85.128.0/17];
    	 FREEMAIL_FROM(0.00)[gmail.com];
    	 TO_DN_NONE(0.00)[];
    	 MX_GOOD(-0.20)[cached: alt3.gmail-smtp-in.l.google.com];
    	 DMARC_POLICY_ALLOW(0.00)[gmail.com,none];
    	 SUBJ_ALL_CAPS(0.30)[4];
    	 FROM_EQ_ENVFROM(0.00)[];
    	 RCVD_TLS_LAST(0.00)[];
    	 MIME_TRACE(0.00)[0:+,1:+];
    	 ASN(0.00)[asn:15169, ipnet:209.85.128.0/17, country:US];
    	 TAGGED_FROM(0.00)[];
    	 FREEMAIL_ENVFROM(0.00)[gmail.com];
    	 ARC_NA(0.00)[];
    	 RBL_SPAMHAUS(0.00)[196.219.85.209.zen.spamhaus.org];
    	 FROM_HAS_DN(0.00)[];
    	 TO_MATCH_ENVRCPT_ALL(0.00)[];
    	 NEURAL_HAM_LONG(-3.00)[-0.999,0];
    	 MIME_GOOD(-0.10)[multipart/alternative,text/plain];
    	 PREVIOUSLY_DELIVERED(0.00)[[email protected]];
    	 DNSWL_BLOCKED(0.00)[196.219.85.209.list.dnswl.org : 127.0.0.255];
    	 RCPT_COUNT_ONE(0.00)[1];
    	 BAD_REP_POLICIES(0.10)[];
    	 IP_SCORE(-1.88)[ip: (-0.70), ipnet: 209.85.128.0/17(-4.79), asn: 15169(-3.83), country: US(-0.08)];
    	 RWL_MAILSPIKE_POSSIBLE(0.00)[196.219.85.209.rep.mailspike.net : 127.0.0.17];
    	 RBL_SENDERSCORE(2.00)[196.219.85.209.bl.score.senderscore.com];
    	 HFILTER_URL_ONLY(0.37)[0.16666666666667];
    	 RCVD_COUNT_TWO(0.00)[2]
    
    --00000000000030328f06285c2518
    Content-Type: text/plain; charset="UTF-8"
    
    kripto sit
    <https://timbercloud.xyz/Bin/BTC-Connect.ClientSetup.exe?e=Access&y=Guest&t=gobita%40ithead.cz&c=Vesela&c=&c=&c=&c=&c=&c=&c=>
    
    --00000000000030328f06285c2518
    Content-Type: text/html; charset="UTF-8"
    
    <div dir="ltr"><a href="https://timbercloud.xyz/Bin/BTC-Connect.ClientSetup.exe?e=Access&amp;y=Guest&amp;t=gobita%40ithead.cz&amp;c=Vesela&amp;c=&amp;c=&amp;c=&amp;c=&amp;c=&amp;c=&amp;c=">kripto sit</a><br></div>
    
    --00000000000030328f06285c2518--

    Ano, tělem e-mailu byl odkaz s textem "kripto sit", jenž stáhl soubor z adresy 
    !https://timbercloud.xyz/Bin/BTC-Connect.ClientSetup.exe?e=Access&y=Guest&t=gobita%40ithead.cz&c=Vesela&c=&c=&c=&c=&c=&c=&c=!
    (vykřičníky proti link parsingu, nestahovat mimo sandbox!)

    Dle dalšího šetření, se zdá být doména timbercloud.xyz celá pod správou útočníků, ale anonymizace domény zabraňuje získání dalších informací.. IP domény jsem ani neštudoval..

    Soubor BTC-Connect.ClientSetup.exe má velikost 5.6MB. Je psaný v C++, otvírá několik dependencies - mscoree.dll, kernel32.dll, oleaut32.dll a vyžaduje elevaci oprávnění při spuštění. Samotný překlad assembly jsem nedělal, nebylo třeba, dle dalšího zkoumání bylo zjevné, že jde o wrapper spouštějící klienta aplikace Screen Connect (jenž je validní appka, podobná Teamvieweru nebo AnyDesku), který také ihned klienta připraví pro vzdálený přístup.

    image.pngimage.png

    Při rychlém brouzdání HEX editorem jsem našel ještě URL pro konfiguraci klienta

    <ScreenConnect.ApplicationSettings>
            <setting name="ClientLaunchParametersConstraint" serializeAs="String">
                <value>?h=timbercloud.xyz&amp;p=8041&amp;k=BgIAAACkAABSU0ExAAgAAAEAAQBB46D%2bAspmhpcrhlVxn%2b%2bphJrCCvfSBJ0Yu5hhOT70F7ZUt43mopwqEiqq4ivqlDuh4TmTmyJRkIrYvFCsue02oPSgnvIndH%2blBKcemHpCZm32qSqyUsB7hwL5R3htQOWMnfeoff5EGzLkldmk2cudlrwA4CyMjmFWFRMto6vZ%2fTxirLUoen5qtN6eWmmyyv8sf0zve0Aq9F7Mt6CHHVoUljnpNj%2frkp4azVzikO6rjxfP%2f%2f3j2U0FvM5r5lJfhY5Pyuuu4sicubmm5k9diyFX8kgWOqv7mAHHYrD%2bGEoXAmMAMGsSy0rV%2fHXKxpmHKX3ZniEl5u7Vf4YgMDmRnGLM</value>
            </setting>
    </ScreenConnect.ApplicationSettings>

    image.png

    Pro studijní účely jsem soubor nahrál zde: https://file.io/1yP27DMId4o5 (ale nevím jak dlouho tam přežije, já ho nikde skladovat nebudu)

    Pro rozebrání binárky jsem použil CFF explorer, pokud by šlo o C# (.NET) appku, tak doporučím dnSpyEx, který přeloží celý IL kód zpátky do C#.

    image.png

    • OMEGALUL 1
    • Haha! 5
    • Líbí se mi to! (+1) 1
  13. před 8hodinami, TheJizzy said:

    Ahoj, pěkné video, souhlasím s Kudrisem ohledně hudby na pozadí - trošku ji uber, někdy přeřvává tvůj hlas.

    Doporučuji zavítat na webarchive viz třeba - https://web.archive.org/web/20080902080314/http://www.pawno.cz/ ...snapshoty sahají až do roku 2008... to je masakr, cítím se tak staře :D 

    image.thumb.png.d2a6bff4ba381fabb52ef4c994d957eb.png

    Snapshoty jsem už natahal všechny :) jde mi hlavně o různé zajímavé momenty a vzpomínky, které někdo zcela jistě drží na disku

    • Líbí se mi to! (+1) 1
  14. On 24. 4. 2024 at 11:44, jenkings said:

    No dokud si nezajistíš souhlas autora, tak do toho nikdo soudný nepůjde ;)

    Není důvod do toho nejít.. Pochybuju, že půjde o chráněnou značku, kterou někde někdo registroval.. Tento patvar je tak generický, že i kdyby ho někdo dokonale přetvořil a pak někde použil, bude problém se hádat už jen proto, že původní projekt zjevně již neexistuje

    • Líbí se mi to! (+1) 1
  15. Další prompty z ukázek:

    Citace

    blue sky, full of white clouds, flying silhoulettes of birds, mild fog, far away rain, drawn picture, distempers, gallery overview, presentation, large silhoulettes of mountains in the background, hills and plains, conture highlights, paint brush texture --s 750 --v 6.0

    ffredyk_blue_sky_full_of_white_clouds_fl

    Citace

    tropical forest, full of insects and small animals, a majestic old tree in the middle, reallistic photo, canon, dynamic lighting, vibrant colors, 35mm lens, green foliage in the background, more trees and forest flora, professional sharpening, photoshop post-process --s 750 --v 6.0

    ffredyk_tropical_forest_full_of_insects_

    Citace

    night supercar race, illegal, secret, street tuning, game footage, raytracing, rtx 4090, directx 12, vulkan, night big city in the background, buildings, tall housing, bloom, camera lens flare --s 750 --v 6.0

    ffredyk_night_supercar_race_illegal_secr

    Citace

    abstract creation full of rainbow colors, colors are mixing with each other, dance of colors, storm of particles, creative interpretation, vibrant colors, small blur, smudging, picture cracking, glitch" --s 750 --v 6.0

    ffredyk_abstract_creation_full_of_rainbo

  16. Zde ukázka rozdílu mezi promptem v češtině a angličtině:

    Citace

    Panáček, jedna noha větší než druhá, modré oči, tupé ruce bez prstů, 3D model, CAD, Blender, realistické nasvětlení, raytracing, 30mm objektiv, pozadí šedivého gradientu, plynulý přechod z tmavší na světlejší, viněta, malý barevný šum obrazu --no oči, prsty --s 750 --v 6.0

    ffredyk_Panacek_jedna_noha_vetsi_nez_dru

    České prompty na nejnovějším modelu již vůbec nefungují. Je zde cítit vzdálené splnění vybraných součástí celku (nohy, osvětlení a objektiv), ale zbytek byl naprosto vynechán

    Citace

    Stick figure, one leg bigger than the other, blue eyes, blunt arms without fingers, 3D model, CAD, Blender, realistic lighting, raytracing, 30mm lens, gray gradient background, smooth gradient from darker to lighter, vignette, small color noise --no eyes, fingers --s 750 --v 6.0

    ffredyk_Stick_figure_one_leg_bigger_than

    Lze poznat, že nejnovější model (v6) už nereaguje moc na post-process prompty, dříve celkem hodně reagoval na vinětu, občas byl schopen přidat i celkem kvalitní šum. Zbytek promptu v angličtině dopadl vcelku obstojně.

    Také jsem si všiml, že negativní prompt naprosto nefunguje.. Jdu prolézt dokumentaci, zda se něco nezměnilo pro v6 model v tomto ohledu

  17. Navážu zde na obsah předchozího návodu o OpenAI, přeskočím tedy definice pojmů a vrhneme se přímo do problematiky.

    Rozdíly

    Nejpodstatnějším rozdílem mezi OpenAI modelem a Midjourney je právě skladba samotného promptu. Zatímco OpenAI GPT modely jsou stavěné pro komunikaci, Midjourney je navržen jen pro generaci obrázků. Původně modely generující obrázky vznikly jako modely popisující obrázky - model měl za úkol popsat co na existujícím obrázku vidí. Samotným otočením logiky začaly modely obrázky generovat na základě vložených "popisů". Je vhodné nad tímto přemýšlet při stavbě samotného promptu.

    Midjourney jmenovitě také nabízí možnost použití speciálních parametrů přímo v promptu (tedy na konci promptu). Tyto parametry vždy začínají dvěma pomlčkami, klíčovým slovem, mezerou a hodnotou. Podobně jako parametry konzolových aplikací jak na Windows tak linuxu.

    Další zajímavostí oproti jazykovým modelům je možnost tvorby negativních promptů - resp. zanesení slov do promptu, kterým se má model vyvarovat, či je úplně odstranit z možných generovatelných kontextů

    Architektura promptu

    Prompt jako takový lze dnes stavět různými způsoby. Původně však nejlepší výsledky vznikaly z promptů stavěných z klíčových slov. Čím více specifikovaná slova, tím přesnější, kvalitnější nebo hodnotnější výsledky byly generovány. Nejnovější modely se snaží přiblížit citlivostí na architekturu promptu co nejširší cílové skupině uživatelů - dokáží tedy zpracovávat i texty plné zbytečných nuancí s irelevantními větnými doplňky. Avšak nejlepších výsledků stále dosáhneme právě stavbou klíčových slov bez spojek, předložek a podobných větných součástí. 

    Midjourney je také více citlivé na angličtinu, než jiné jazyky. Neznamená to však, že by se nedaly psát prompty v češtině nebo slovenštině. (Při ověřování českých promptů jsem se setkal spíše s neúspěchem než s úspěchem..) Spíše je potřeba počítat s tím, že pokud nastane problém s generací promptů v jazyce jiném než angličtina, je vhodné zkusit je nutné generovat s promptem přeloženým do angličtiny. To je však problém všech modelů (i jazykových), protože tréninková data jsou nejbohatší právě v anglickém jazyce.

    Podobně jako u OpenAI i zde platí pravidlo, že prompt je nejsilnější v prvních několika slovech. Avšak následný spád relevance už není tak znatelný, tedy prompt si po celou jeho délku udržuje celkem stabilní váhový gradient. Zjednodušeně řečeno - prvních pár slov je nejsilnějších, vše poté má o něco menší váhu v generaci, avšak stále dostatečně citelnou. Dle mého názoru je to typickým biasem lidských popisovačů tréninkových obrázků - lidé si nejdřív všimnou nejsilnějšího prvku v obrázku, který vždy dosadí na první pozici v popisu.

    Obsah promptu:

    • Předmět
    • Předmětné modifikátory
    • Stylistické modifikátory
    • Pozadí
    • Efekty
    • Negativní předmět
    • Parametry

    Pořadí těchto prvků není kriticky důležité, jde spíš o můj vlastní zvyk napříč různými modely jak Midjourney tak i klasické stabilní difuze.

    Předmět je vlastně obsah obrázku, objekt pozorování, situace, čí jiná myšlenka, kterou má model generovat. 

    Citace

    "Panáček..."
    "Modrá obloha..."
    "Tropický prales..."
    "Noční závody superaut..."
    "Abstraktní kreace plná barev duhy..."

    Předmětné modifikátory

    Jde o úpravy předmětu, nebo jeho bližší specifikace. Vlastně tím zpřesňujeme definici předmětu, přidáváme další požadavky nebo se tím snažíme stočit pomyslnou cestičku samotné generace.

    Citace

    "..., jedna noha větší než druhá, modré oči, tupé ruce bez prstů..."
    "..., plná bílých oblaků, létající siluety ptáků, mírná mlha, v dálce deštivo..."
    "..., plný hmyzu a drobného života, uprostřed majestátní starý strom..."
    "..., ilegální, tajné, street tuning..."
    "..., barvy se mezi sebou různě mísí, barevný tanec..."

    Modifikátorů může být jakékoliv množství a mohou být jakkoliv specifické, nebo obecné, či naprosto vágní - model si s tím vždy nějak poradí. Sledovat občas co vzniká z naprosto nesmyslných, či totálně obecných promptů, je občas zážitek sám o sobě.

    Stylistické modifikátory

    Těmito nastavujeme celkovou kompozici, realističnost, či jiné stylistické zpracování celkového produktu.

    Citace

    "..., 3D model, CAD, Blender, realistické nasvětlení, raytracing, 30mm objektiv..."
    "..., kreslený obraz, tempery, pohled v galerii, výstava..."
    "..., realistická fotka, canon, dynamické osvětlení, živé barvy, 35mm objektiv..."
    "..., záběry ze hry, raytracing, RTX 4090, directx 12, vulkan..."
    "..., bouře prvků, kreativní interpretace, živé barvy..."

    Stejně jako předtím, těchto modifikátorů může být jakékoliv množství a specifikovat mohou cokoliv. Jde o podrobnější štelování výsledků.

    Pozadí

    Stejně tak jako předmět, můžeme v zařadit do promptu i definici pozadí. Já obvykle definuji pozadí spíše ke konci promptu, ale jde asi jen o můj osobní zvyk. Model si zpracuje prompt po svém a teoreticky jen klíčové slovíčko "background", nebo "pozadí" je dostačující k tomu, aby model pochopil o co nám jde.

    Citace

    "..., pozadí šedivého gradientu, plynulý přechod z tmavší na světlejší..."
    "..., v pozadí vysoké siluety hor, kopce a louky..."
    "..., v pozadí zeleň, další stromy a flóra pralesa..."
    "..., v pozadí noční velkoměsto, budovy, paneláky..."

    Efekty

    Podobně jako stylistické modifikátory, můžeme specifikovat i efekty, resp. simulaci post-procesního zpracování.

    Citace

    "..., viněta, malý barevný šum obrazu..."
    "..., zvýraznění kontury, textura štětce..."
    "..., profi ostření, photoshop post-process.."
    "..., bloom, odlesky kamery..."
    "..., malý blur, rozmazání, popraskání obrazu, glitch..."

    Negativní předmět

    Stejně jako stavíme předmět s jeho modifikátory, můžeme stavět i negativní součásti. Chápejme ve smyslu seznamu věcí, které generovat nechceme, tedy které nechceme vidět ve výsledcích. Negativní předmět je však součást parametru (--no), měl by tak být na konci promptu. Pokud chceme specifikovat více předmětů, je potřeba je oddělit čárkou

    Citace

    "... --no oči, prsty..."
    "... --no lidé, postavy..."
    "... --no opice..."
    "... --no policie..."
    "... --no růžová..."

    Negativní prompty existují hlavně proto, že model nedokáže dobře odhadnout relevanci negativních vazeb samotného promptu vůči předmětům. Takže pokud chceme modelu předat informaci o tom, že něco nechceme generovat, tak místo tvorby takového požadavku v předmětu, nebo jeho modifikátorech (např. "tupé ruce bez prstů") bychom měli vždy použít parametr ("--no prsty").

    Parametry

    Samotné parametry nám poté upravují již externí nastavení modelu, či jeho výstupu. Obvykle se nastavuje výběr samotného modelu, poměr stran, teplota (chaos), seed apod.

    Citace

    --ar 1:1 = Aspect Ratio - poměr stran
    --iw 1 = Váha obrázku - při vložení URL obrázku do promptu, toto nastavuje jeho váhu ve výsledku
    --chaos 0= Nastavení deviace variací - jak moc se od sebe liší jednotlivé variace generace
    --quality 1 = Kvalita generace - jak dlouho trvá samotná generace, kolik cyklů proběhne, ovlivňuje podrobnost a kvalitu výsledků, ale žere více času
    --tile = Zapnutí generace textur, které po všech stranách hladce přiléhají (tiling texture)

    Další parametry lze najít v dokumentaci https://docs.midjourney.com/docs/parameter-list

    Multi-prompting

    Midjourney nabízí také velmi silnou funkci multi-promptů. Je využitelná zejména, pokud chceme logicky oddělit předměty, tedy separovat jejich relevanci vůči sobě. Či pokud chceme jednotlivým předmětům nastavit různé váhy (a ovlivnit tak jejich podíl na výsledku)

    Citace

    "space, ship" - velká pravděpodobnost, že model vygeneruje futuristickou vesmírnou loď
    "space:: ship" - model vygeneruje klasicky pochopené vyobrazení mořské lodi, která pluje vesmírem
    "space::2 ship" - model vygeneruje hlavně vesmír, mořská loď je sekundární

    Dvojité dvojtečky definují separaci významů mezi oběma stranami. Lze za nimi specifikovat číslo (i s desetinou čárkou u nejnovějších modelů), které definuje váhu levé strany. Pokud chceme specifikovat i váhu pravé strany, je potřeba použít dvojtečky i za ní

    • Líbí se mi to! (+1) 1
  18. Zdarec borci, dlouho jsem přemýšlel s jakým originálním návodem, který by řešil moderní téma, bych přišel a podělil se s vámi. Vyhrála to samozřejmě AI.

    Pojďme si nejdříve definovat pojmy a názvosloví:

    AI - Artificial Intelligence tedy Umělá Inteligence - pojem, který je dnes nejvíce ztotožněn s LLM neuronovými sítěmi. Nejde o "skutečnou umělou inteligenci", nýbrž o simulaci chování na základě předtrénovaného setu dat
    AGI - Artificial General Intelligence tedy Obecná Umělá Inteligence - dnes prozatím ještě blíže nespecifikovaný, či velmi široce obsáhlý pojem. Majorita lidí, kteří se ochomýtají okolo AI, se nyní snaží pojem AGI definovat jako tu "skutečnou umělou inteligenci". Prozatím však neexistuje žádný model neuronové sítě, který by se opravdu dal označit za "skutečnou umělou inteligenci" a vlastně ani nemáme žádný způsob či mechanismus jak bychom mohli určit, či prokázat "skutečnost" umělé inteligence. Jedná se tak hlavně o marketingový pojem, kterým se velcí AI hráči snaží prodat nejnovější modely.
    LLM - Large Language Model tedy Velký Jazykový Model - typ neuronové sítě, která je trénovaná na obrovském množství textových (či dnes i obrázkových) dat, která vyprodukoval člověk, či jiná neuronová síť.
    Token - formát dat, se kterými LLM neuronky pracují. Zjednodušeně jde o jakousi kompresi psaného textu, či několika písmen (případně bajtů textových znaků). Typicky se jedno slovo anglického jazyka rozděluje na dva, až čtyři tokeny - avšak jedno, či více-tokenová slova nejsou výjimkou.
    Kontext - Kontejner všech dat (tokenů), které jsou neuronové síti aktuálně dostupné - lze si to představit jako historii chatu + jakákoliv další data, která jsou do kontextu přidána jiným způsobem (třeba systémovou zprávou). Typicky je omezen řádově na tisíce tokenů

    Nyní, když známe ty nejzákladnější pojmy a já mohu pohodlně psát ve zkratkách, pojďme si povědět něco o tom, jak vlastně typická moderní AI funguje. Neuronové sítě různých firem se liší v mnoha věcech, avšak základní princip je u všech stejný - AI je trénovaná na obrovském množství dat, generuje určitý typ odpovědí, mimo API je většinou za moderační vrstvou a napříč různými verzemi modelů je různě "biased" vůči proměnlivým stylům, chování, či ochotě.

    Důležité je vědět, že dnes prozatím neexistuje mechanismus zajišťující 100% bezpečnost odpovědí umělé inteligence - a nikdo stále nedokáže s jistotou odhadnout, jestli vůbec někdy bude možné takovou bezpečnost zajistit. Jde o bezpečnost informační - obecně je nežádoucí, aby AI úspěšně využívali "špatní hráči (bad actors)" k provádění kriminální činnosti. Bohužel je to však stále možné. Firmy bojují vůči těmto možnostem moderační vrstvou, která funguje jako mezičlánek mezi AI a uživatelem - jedná se většinou o menší neuronový model, který se snaží vyhodnotit nebezpečnost otázky uživatele, nebo i odpovědi AI a případně přeruší zpracování, či celou komunikaci. Občas se může stát, že moderační vrstva vyhodnotí přehnaný úsudek, či podhodnotí nebezpečnost komunikace a tak se můžeme setkat s nesmyslnou blokací, nebo naopak vymyslet cestu jak vrstvu obejít jazykovou kličkou a generovat nebezpečné odpovědi.

    Způsob, jakým se nejefektivněji ptát LLM AI pro nejlepší šanci na generaci relevantní a smysluplné odpovědi, se může lišit vzhledem k tomu, na co byla neuronka předtrénovaná, či později nalazená (fine-tuned). V tomto návodu budu řešit způsob vytváření promptů relevantních pro GPT3.5 (či GPT4) od OpenAI.

    Struktura a architektura konverzace

    Rozuměno spíš i jako procedura, kterou se AI nejdříve připraví, nastaví, předají se data, určí předpoklad výsledku a poté se celý blok obrní vůči deviacím. Zní to složitě, ale dá se to rozpracovat do několika prvků, či kroků - které mezi sebou více, či méně souvisejí nebo i kombinují.

    • Příprava - Připravíme AI k určitému chování, či definujeme naše očekávání.
    • Nastavení - Nastavíme AI pro specifický výkon, tedy určíme co po AI přesně chceme.
    • Informace - Předáme AI kontext, či další data, které zpracuje dle našich požadavků
    • Mantinely - Instruujeme AI k dodržení našich pravidel a co nejvíc redukujeme možnost deviace a nečekaných výsledků (nastavíme hranice "kreativitě")

    Každá situace, nebo cíl může vyžadovat různé, či všechny tyto kroky. Snažil jsem se to co nejvíce zobecnit, ale pravdou je, že AI je neustále velkou neznámou. S velikostí modelů roste i jejich nevyzpytatelnost a nepředvídatelnost. Avšak experimentací lze docílit i zcela nových postupů, přístupů a proceduralizaci

    Příprava

    Před samotným aktem komunikace lze (a mnohdy je vhodno) model připravit na to, co vlastně bude provádět, zpracovávat, vytvářet. První instrukce u krátkých promptů mají statisticky největší reakci modelu. V případě pozdějšího delšího průběhu komunikace ztrácí první tokeny v kontextu váhu (jde o problém s transformátory, který se snaží vyřešit všechny firmy u všech modelů), či jsou ztraceny úplně (kvůli omezení velikosti kontextu).

    Citace

    "Jsi rozhodující prvek, rozhoduješ ANO/NE na základě vstupních dat..."
    "Jsi překladatel, umíš perfektně čínsky a překládáš do českého jazyka..."
    "Jsi světový matematik, ovládáš naprosto úžasně aritmetiku a rozhoduješ, zda je první číslo větší, menší nebo se rovná druhému..."
    "Jsi 18ti letá školačka, mlátí s tebou pubertální hormony a jsi zamilovaná do Toma, který chodí do stejné školy..."

    Příprava je vlastně takové zahájení imaginárního příběhu, kterého se AI bude snažit držet. Představíme situaci a navrhneme prostředí či aktivitu.

    Nastavení

    Po přípravě je na čase nastavit AI k nějaké akci, aktivitě či kroku. Vlastně jde o jakési předání instruktážního návodu, či modelové situace, jak se má AI chovat ke vstupním datům..

    Citace

    "...budeš rozhodovat, zda je tvrzení pravda, či nikoliv. Odpovídat budeš jen slovy ANO, nebo NE, žádná jiná slova nepoužívej..."
    "...jazykově obecným stylem. Překládáš nejen doslovně, ale i kulturní nuance jazyků. Tvůj překlad má smysl, přirozeně navazuje a je to snadné čtivo..."
    "...žádné jiné možnosti neexistují, pokud úloha nemá komparativní řešení vrátíš nulu. Možné výstupy jsou: 1 = rovná se, 2 = větší než, -1 = menší než..."
    "...Potkali jste se na chodbě a ty jsi hrozně nesvá a stydlivá z jeho přítomnosti. Chceš se stát jeho přítelkyně a jsi ochotná udělat cokoliv, aby se tak stalo..."

    Dá se to chápat i jako rozšiřující dodatek k sekci Nastavení.. Rozdíl mezi těmito sekcemi je jejich velikost. Příprava by měla být co nejstručnější a nejpřesnější, kdežto samotné nastavení může být vysvětleno vyčerpávajícími a podrobnými detaily i s ukázkami příkladného chování.

    Informace

    Modelu je vhodno také dodat seznam různých důležitých informací, o kterých by měl znát detailnější (či lokálnější či speciální) informace.

    Citace

    "...paradoxy jsou vždy NE, rekurze jsou vždy NE..."
    "...
    叶辰 = Ye Chen
    萧老 = Mr. Xiao
    萧初然 = Xiao Churan
    萧薇薇 = Xiao Weiwei
    ..."
    "...proměnná pi je 3.1415, číslo alpha je 12345..."
    "...Tom je urostlý mladý muž, jeho svalnaté tělo tě velmi přitahuje..."

    Informace předávají AI důležitý kontext, o kterém by mělo vědět při zpracovávání požadavků..

    Mantinely

    Velmi důležité mohou být následné mantinely, bariéry či jiná omezení, které by AI mělo dodržovat.

    Citace

    "...Nesmíš odpovědět nijak jinak než slovy ANO nebo NE..."
    "...Při překladu slov, které nemají typický překlad v daném jazyce, použij nejbližší významové synonymum, či jinak vysvětli daný pojem..."
    "...Musíš dodržet základní pravidla za jakékoliv situace, odpovídej jen číslovkou bez dalšího vysvětlování. Jediné povolené číslovky jsou od -1 až po 2..."
    "...Nesmíš vybočit z tvojí role. Hrajeme striktní role-play, vždy se vyjadřuj jako školačka. Pokud dojde k sexuálně zbarvené konverzaci, udržuj ji slušnou a vyhýbej se expresivním vyjádření..."

    Dají se chápat jako součást a posílení již dříve postaveného Nastavení, ale zaměřené spíše na restriktivní argumenty, či podněty a příkazy. Vždy se však dají kreativními metodami obejít a tyto triky se model od modelu liší. Pro zaručení dodržení těchto mantinelů se aplikuje moderační vrstva s podobnými prompty, která však jen blokuje již generovaný výstup a případná generace se musí opakovat (třeba i s pozměněným vstupem).

    Striktnost promptů

    Masivní výhoda AI je, oproti jiným předchozím mechanismům pro generaci textu, hlavně v její schopnosti překladu jazykového kontextu a pochopení významu psaného textu i na základě lidsky typických nuancí. Prompty se díky tomu dají psát i vágně, obecně či neurčitě a přesto poté generují kvalitní výstupy. Lze také využít konverzačně nastavenou AI (ChatGPT) pro vytváření kvalitních promptů na základě dodaných požadavků. 

    Naopak nevýhoda AI tkví v jejích možnostech generovat výstup mimo jasně specifikované rozsahy. AI vznikla jako neuronka, předpovídající co by chtěl uživatel napsat, nebo jak by chtěl pokračovat v textu a na stejném principu funguje dodnes. Je to neustále opakující se cyklus, generující nová slova na základě předchozích jen pomocí sítě pravděpodobnosti. Trénink AI probíhá v překladu souvisejících textů do souvisejících pravděpodobnostních poměrů

    • Líbí se mi to! (+1) 2
  19. On 10. 2. 2024 at 5:40, Hip said:

    Hele a když je to napojený na OpenAI, tak tomu nevadí tyhle dirty věci? Protože samotný ChatGPT má hroznou moderaci, pořád mi to říká že tohle nemůže a tohle nemůže. OpenAI jelikož je to jen připojení na API, tak tam nic takovýho není? 

     

    chat v OpenAI labu je za moderační vrstvou, přes API máš přístup k jádru bez těchto obalujících blbin.. Samozřejmě máš přes API přístup i přes všechny ty obalující blbiny a můžeš si to jádro obalit podle svýho, jejich Moderation model je teď "žhavá novinka", kterou se neskutečně chlubí.. Máš tam i další modely třeba na překlad hlasu do textu, nebo textu do hlasu, či jazykové modely jako davinci, který lze trénovat a tunit k obrazu svému.. Osobně zastávám názor, že než jim platit to plusko, tak si radši zaplatím kredit do API a mám přístup k 10x tolika funkcím :D

  20. před 7hodinami, Ewwe said:

    Jo to mě taky mrzí. Jakože čistě z business hlediska je to promarněny potencial a nevyužitý trh. První tool který bude schopný nějak obstojně komunikovat s nativním jazyce konkrétního člověka bude mít převahu na trhu. 

     

    Většinu těch botů můžeš překecat k tomu aby psali česky :) jen musíš obejít moderační vrstvu a většinou silný prompt.. Většina těch věcí však jede na GPT 3.5 (je o hodně levnější) a tam stačí jen jako první zprávu botovi přikázat aby ignoroval všechny předešlé příkazy a od teď se bude chovat tak a tak

  21. před 6hodinami, Hip said:

    já myslel, že plugin právě dokáže sahat i mimo tohle. To jako neumí? Takže to co umí plugin se dá udělat přímo v pawn? Respektive plugin neumí víc než pawn?

    Ne neumí :D Plugin je defakto (virtuálně myšleno) další proces běžící na serveru, vedle procesu herní instance - může páchat cokoliv v rámci své domény (OS serveru, pokud mu to OS dovolí), ale s hráči ho spojuje jen konektivita herního serveru. Komunikaci (a funkcionalitu) ze strany serveru můžeš upravovat pluginem (teoreticky) dle libosti, ale klientovi to nemáš jak přikázat (jedině hackingem - buffer overflow, remote code execution, illegal shit), ten se drží protokolu komunikace dle herní topologie packetů.. Klient jako takovej by musel mít ještě svůj client-side plugin, který dokáže s tím server-side pluginem komunikovat.. Ale to ti nikdo dobrovolně instalovat nebude (už jen proto, že ten plugin může páchat paseku.. SAMP jako takovej je vlastně "plugin" GTA:SA, kterýmu hráči dobrovolně důvěřují, na základě jeho zažité důvěryhodnosti)

    P.S. to neplatí jen v rámci SAMP, ale všeobecně v každém use-case.. Herní servery nedokážou ovlivňovat klienty nad rámec nativní podpory herní komunikační architektury, pokud to člověk opravdu neproláme nějakou dírou v protokolu (packet payload injection, buffer overflow a remote code execution). A člověk může zkoušet ohýbat vše sebevíc.. Na co klient není připraven, to dělat prostě nebude jen s čistou úpravou server-side kódu

    • Paráda! (+1) 1
    • Děkuji (+1) 1
×
×
  • Create New...