Jump to content

ffredyk

Majitel
  • Příspěvků

    3263
  • Registrován

  • Aktivní

  • Vítězných dnů

    63

Everything posted by ffredyk

  1. 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
  2. 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)
  3. 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
  4. 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 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čí
  5. 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
  6. 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
  7. Ří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ě! 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.
  8. A budeš se o to starat? :D
  9. 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
  10. 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: <[email protected]> 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 <[email protected]>; 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 <[email protected]>; Tue, 3 Dec 2024 12:41:27 +0100 (CET) Received: by mail-yb1-f196.google.com with SMTP id 3f1490d57ef6-e3983426f80so3847964276.1 for <[email protected]>; 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 <[email protected]> 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. 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> 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#.
  11. Kamkoliv :D zabal to a kydni to třeba na wetransfer nebo google disk
  12. 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
  13. Zdravím přátelé Tentokrát místo textu promluvím k vám přímo já skrz malé/á video/a
  14. 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
  15. Zde ukázka rozdílu mezi promptem v češtině a angličtině: Č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 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
  16. 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. 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. 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. 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. Efekty Podobně jako stylistické modifikátory, můžeme specifikovat i efekty, resp. simulaci post-procesního zpracování. 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 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. 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) 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í
  17. 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). 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.. 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. 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. 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ů
  18. Tento rok první status :haha:

    1. Hip
    2. jenkings

      jenkings

      a pravděpodobně i poslední :D

  19. ffredyk

    ostatní AI Girlfriend

    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. ffredyk

    ostatní AI Girlfriend

    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. ffredyk

    ostatní AI Girlfriend

    Na tohle téma si hraju s konceptem - všechno to stejně jede na OpenAI API, takže tomu stačí jen napsat GUI a máš to samý za zlomek ceny.. Jen si platíš requesty na API
  22. 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
  23. Čistě logicky, jako SW/HW dev, musí pracovat s informacemi, které jim posílá klient.. Plugin na serveru nedokáže zjistit nic víc, než co mu klient zašle.. kombinace gpci, IP subnety a dalších specifických prvků (o kterých já už nemám šajn) dokáže celkem spolehlivě zabanovat tzv. na HW bez false-positive.. Čistě teoreticky by mohl stačit i seznam zabanovaných gpci vázaných na subnety.. Ale nevím jak moc se ten gpci hash liší mezi hráči.. Pokud instalace default folderu na každém PC vyflusne stejný hash, tak je to celkem nepoužitelný.. V tom případě se musí člověk spolehnout na další, více unikátnější data, která klient serveru zasílá..
×
×
  • Create New...