Online 207 uživatelů Přihlášení | Registrace | Zaslat heslo | Prohlížení bez přihlášení

 

Lama lamě, lamy sobě: HTML, CSS, XHTML, PHP, SQL, JS a všechno kolem NETU [ ID: 22883 ] - [ Počítače (hardware, software) / Co se jinam nevešlo ]
1 / 42
Mini Home

co zrovna programujete?


řešení banálních problémů při programování pro internet, které obtěžují zkušené programátory v jiných klubech


klub je určen především začínajícím programátorům a uživatelům, kteří  programují ze záliby nebo nějaké potřeby aniž by měli ambice stát se programátorem




kód prosím vkládejte do tagu pre,  ať  je čitelnější

DAN1   23:35:04 14.01.2023
DZODZO [ 16:32:34 11.01.2023 ]:  LEIWULONG [ 22:11:09 13.01.2023 ]: NO, ani já jsem jej úplně nepochopil (se přiznám), ale už jsme to asi dali dohromady. Doporučil jsem mu Electron JS, pokud by mermomocí chtěl psát desktop apku. Jenže z něj vylezlo, že spojení se zařízením (mobil, počítač) není přes WiFi, ale přes Bluetooth. Takže jsem mu řekl, aby si nejdříve zprovoznil nějaký BT terminal a vyzkoušel si ovládání skrze jednoduché příkazy. Osobně si myslím, že u této varianty i zůstane ::D Ale zkusím mu navrhnout, aby se kouknul i na to ESP Home
LEIWULONG   22:11:09 13.01.2023
DAN1 [ 17:36:00 09.01.2023 ]: Nevím, jestli jsem dotaz správně pochopil - potřebuje ten lokální program na ovládání? Nad ESP jsem sám nic nestavěl, ale mám tu několik chytrých zásuvek a spínaču, ktere běží na ESP, jsou flashnute na ESP Home a všechny mají automaticky webové rozhraní, kde můžu číst udaje a ovládat je.
ale jestli si proto psal komplet vlastní SW, tak to tam asi mít nebude. Ale pochopil jsem, že programátor není, tak bych tam něco jako ESP Home očekával. Tam pak stačí spustit ten webserver a jede to samo, případně includnout css a js, pokud by to chtěl nějak upravovat
DZODZO   16:32:34 11.01.2023
s takou aplikaciou som sa v praxi este nikdy nestretol, HTML/JS su sami o sebe multiplatformne, pretoze kazda platforma potrebuje mat nainstalovany nejaky runtime pre to prostredie, t.j. napr. phpko vo windows alebo linuxe, to same java
DAN1   17:36:00 09.01.2023
Možná stupidní dotaz: dnes se mě student ptal, jestli je možné pomocí HTML a JS vytvářet multiplatformní aplikace. Na mysli měl něco co se dá zkompilovat do EXE, APK nebo i Linux balíčku. Nedokázal jsem mu odpovědět, neb toto vůbec nevím. Vím, jen že pár let zpátky se hovořilo o univerzálních aplikacích postavených nad HTML a JS... zbytek šel okolo mě, já zůstal u PHP. Je tedy možné realizovat nějakou univerzální (kompilovatelnou?) HTML/JS aplikaci? Tak aby se dala tvořit zároveň jak pro Windows (případně Linux), tak pro Android?

Kontext: student je šikovný elektrotechnik, má zajímavou meteostanici postavenou nad ESP, ale chtěl by ji dálkově ovládat. Není to ale žádný super programátor, vládne trošku HTML a JS, protože to probírali v rámci ICT. V programování měli jenom Céčko (zpravidla vše v konzoli). Rád by se zúčastnil SOČ (soutěž), ale chce mít dořešeno dálkové ovládání stanice (z mobilu/tabletu/počítače). Navrhl jsem mu webovou aplikaci v PHP, ale nechce webserver. Stanice nemá být dostupná do internetu (v budoucnu při reálném nasazení) a hlavně chce, aby to fungovalo i na uzavřené síti bez internetu (nevím teď úplně jak má tu stanici připojenou k síti, tak dobře jsem se s jeho prací neseznámil). Napadl mě Kotlin multiplatform, ale to je vlastně "převlečená Java" a nevím jestli je možné kompilovat desktopové aplikace + student o Javě/Kotlinu nic neví (potřebuje spíše jednoduché řešení). Potom mě ještě napadl Flutter, ale tam vůbec netuším jak to funguje a čemu je to podobné. Přiznám se, že nevím co studentovi říct/poradit a proto jsem si sám přišel pro radu sem.
DZODZO   17:10:47 31.03.2022
DAN1 [ 19:48:14 30.03.2022 ]: ja teda mam vacsinou pristup do OS, takze mozem upravit konfigurak webserveru, ale asi sa da pouzit aj nieco taketo:

https://www.codewall.co.uk/increase-php-script-max-execution-time-limit-using-ini_set-function/

ale teda musim sa priznat, ze som to nikdy neskusal
DAN1   19:48:14 30.03.2022
Řešili jste někdy "pokračování" skriptu kvůli execution time? Např. Moodle jsem schopný nainstalovat i na webhostingu, kde je execution time 30 s, přitom instalace trvá i několik minut. Přiznám se, že netuším, jak to dělají ::D

Pracuju na jedné "sranda" aplikaci (simulace těch fotbalových utkání), která poběží na nějakém free webhostingu, takže počítám s ET 30 s a právě uvažuji, jak to překonat v případě potřeby.
PAULSMITH   10:40:36 22.12.2021
DAN1 [ 09:02:12 21.12.2021 ]: Skvělé, chytrému stačí napovědět :)
DAN1   09:02:12 21.12.2021
PAULSMITH [ 23:31:28 13.12.2021 ]: vím, že píšu se zpožděním, ale díky moc ;:) ::ANO pro ty co neví, tak tady jsou i krásné příklady https://www.phptutorial.net/php-tutorial/regex-lookahead/
PAULSMITH   23:31:28 13.12.2021
DAN1 [ 15:55:08 13.12.2021 ]: hledáš lookahead
DAN1   15:55:08 13.12.2021
Řeším problém s regulárními výrazy. Mám textové řetězce, u nichž jsou proměnné typu: [%person#2-I], [%person#5-you] ,[%person#5-your] a mnoho dalších. Vždy jsou v hranatých závorkách a začínají procentem.

Pro svou potřebu potřebuju celou proměnnou (tedy celou hranatou závorku) nahradit tím, co je za pomlčkou (tedy I, you, your ...). Tohle mi pokrývá následující vzor \[%p\w+#\w+-(\w+)\], což funguje téměř dokonale. Problém nastává, když jsou za pomlčkou vybraná slova (surname, hidden), která ale zaměnit nechci. U nich totiž potřebuji, aby tam zůstala celá ta proměnná.

A tohle se mi vůbec nedaří vymyslet. Někdo nějaká rada prosím?
DZODZO   08:49:06 02.10.2020
tuto prikladam jeden navod JAK NE :10)

IMG:https://i.nyx.cz/files/00/00/21/99/2199809_7348a8e1411febe65852.jpg?name=EjGM49zXcAErKmA.jpeg
LEIWULONG   21:24:49 17.08.2020
DAN1 [ 18:48:04 17.08.2020 ]: Ani já nejsem v OOP profík, data jako objekty jsme začili v práci pomalu používat teprve nedávno, dřiv to taky bvylo pole :D A z toho, jak to chápu já, tak by samostatný třídy měli být spíš na opakující se data. Takže class player určitě, ale v class team pak nemusíš mít 11 proměných typu player, ale můžeš je tam mít klidně jako pole těch tříd. Záleží, jak k tomu chceš / potřebuješ přistupovat. Zrovna v tomhe konkrétním případě, kdy jich máš vždycky 11, dává asi větší smysl 11 proměnných...
DAN1   18:48:04 17.08.2020
LEIWULONG [ 17:29:15 17.08.2020 ]: Takže ideální přepsat vše na objekt?

A měl bych to udělat tak, že si vytvořím class pro každou složitější položku? Tzn. že pokud mám pole o 11 hráčích, tak si vytvořím class player pro jednoho hráče a v rámci class team pak budu mít 11 vlastností (proměnných) typu player?

Přiznám se, že OOP není moje nejsilnější stránka, tak snad se neptám úplně stupidně.
LEIWULONG   17:29:15 17.08.2020
DAN1 [ 19:15:43 16.08.2020 ]: Minimálně to bude mít tu výhodu, že ti to pak bude IDEčko napovídat, nebo označovat, co máš špatně. Ať už z hlediska překlepů nebo datových typů.
DAN1   19:15:43 16.08.2020
Možná to bude blbý dotaz, ale řeším datovou strukturu. Momentálně si data v rámci třídy ukládam do pole, ale zajímalo by mě, jestli má cenu to přepsat na objekty? Bude to pak mít nějakou konkrétní výhodu pro mě?

"Hotová" implementace Soccer-Decoder je tady https://gitlab.com/vonTrips/soccer-decoder-php
DAN1   15:38:25 05.08.2020
Netuším, jestli to někoho zajímá, ale předchozí problém jsem vyřešil pomocí jednoduché utility https://gist.github.com/irazasyed/f41f8688a2b3b8f7b6df jen si pro ni musím předpřipravit vstupní data (nepatrné zvýšení paměťových nároků - 2x3 pole), ale po otestování mohu říct, že funkce funguje správně.

Momentálně jsem tak dokončil celou základní implementaci soccer-decoder, kdyby někdo měl zájem zkouknout, třída Match zde: https://codeshare.io/5ojeLX

Pokud mi k tomu někdo poskytne zpětnou vazbu, nebudu se bránit. Samozřejmě vím, že to asi není nejčistější kód, zvláště ty zanořené pole, ale fakt nevím jak jinak to udělat. Jestli to chce někdo otestovat, stačí se podívat do předchozího kódu co jsem tu sdílel, tam jsou i formáty těch vstupních dat pro simulaci.

V tuto chvíli asi budu řešit, JAK DÁL? Zůstat u implementace pomocí PHP? Řešit si vše úplně samostatně nebo přejít na framework? Tady bych asi zvolil Nette, nebo něco jiného?

A pár poznámek k hotovému kódu:
- simuluje zápasy dvou týmů v závislosti na jejich skillech, z nichž počítá aktuální ratingy
- skilly i ratingy se upravují v závislosti na stáří hráče, jeho fyzičce a zkušenostech (mladý hráč bez zkušeností se zpravidla unaví rychleji, než ten starší, protože ten tam neběhá jako splašený zajíc)
- ratingy (které se porovnávají) se snižují po každé rozehře (bitvě)
- ideální počet bitev je momentálně 100 (možná bude nutné zvednout časem)
- každý rating projde Erlangovou distribucí => i nižší rating může vést k vítězství v bitvě
- dochází k více zakončením, než kolik nakonec padne branek (u dřívějšího tomu tak nebylo)
- přidal jsem ještě další zónu, která určuje to, že dochází k zakončení
- při změně držení míče (mimo krajní zony, zakončení) se již hra nepřesouvá automaticky do středu hřiště
- hra je připravena pro implementaci protiútoků (counter attack), ale zatím mi to nepřišlo jako důležité

V zápasovém engine zatím není, ale určitě by mělo být:
- implementace protiútoků (obecně)
- boj o pozici nemusí nutně vést k posunu dál nebo změně držení míče (tzv. dobývání šestnáctky)
- implementace různých herních stylů (např. držení míče, přímočarý, obranný, protiútoky atd. - tohle bude nejhorší vymyslet, protože bude těžké vyvážit výhody a nevýhody každého stylu)
- vliv prostředí na týmový výkon (doma hrajou týmy lépe než venku; na špatném terénu se špatně kombinuje atd.)
- zranění, střídání, vyloučení
DAN1   23:07:01 03.08.2020
Už jsem se opět dostal dále, ale nastal jeden problém, se kterým si lámu hlavu už několik dní, třeba někdo poradí...

Dostal jsem se do fáze, kdy už vím, že tým A má šanci (zakončení) proti týmu B. U týmu B je to jednoduché, zde se pracuje s ratingem brankáře, ale u týmu A netuším, jak co nejefektivnější a nejjednodušeji zvolit konkrétního hráče!

Umím určit, na jaké pozici hraje hráč, který bude zakončovat. Ale nevím, jak jednoduše určit toho jednoho konkrétního hráče, který má zakončovat šanci. Řekněme, že zakončovat bude jeden ze záložníků (cca 30 % všech šancí) a těch mám na hřišti 4.

Úvaha je taková, že ti s nejlepším ratingem mají mít nejvyšší šanci se do zakončení dostat (prostě když budu mít 3 pepíky a jednoho Pavla Nedvěda, tak do zakončení se dostane pravděpodobněji Nedvěd). Ale pro další zpracování nepotřebuji znát jen rating zakončujícího hráče, ale jeho jméno (id). A hráči, kteří jsou momentálně na hřišti jsou uvedeni v poli pod indexy 1 až 10 (s tím, že pozice pod indexy jsou různé dle rozestavení, např 4-5-1 = jeden útočník; 4-3-3 = 3 útočníci atd.).

Jak  tedy co nejjednodušeji získat index konkrétního zakončujícího hráče, samozřejmě náhodně zvoleného, ale tak, aby pravděpodobnost byla určena ratingem (v rozsahu cca 5.0 až 9.9)? Ve výše uvedeném příkladu, tedy jak zvolit jednoho ze čtyř záložníků? Zvláště, když potřebuji jen získat index pole.
SYSTEM   06:43:01 28.07.2020
Automaticky generovaná zpráva:
Klubová anketa byla vynulována.
DAN1   19:59:40 22.07.2020
Pokud by to náhodou bylo pro někoho zajímavé, tak úplně základní implementace soccer-decoder (moje implementace pomocí PHP) je k vidění tady https://codeshare.io/5zOkON a 49 zápasů generuji za cca 0,08 s

Ale je to teprve začátek, ještě tam bude zapotřebí implementovat spoustu věcí, jako je vliv fyzičky, věku, formy atd.
DAN1   16:27:52 21.07.2020
PAULSMITH [ 11:10:56 21.07.2020 ]: díky za zpětnou vazbu, je to spousta otázek k zamyšlení...

Než na to zareaguji, tak chci jen říct, že jsem něco podobného viděl napsáno v Reactu, což mě zaujalo - https://fd-sim.surge.sh/ Běhá to docela rychle, ale vývoj toho je pomalý a běží to na velmi jednoduchém algoritmu, kdy se prostě jen provnávají ratingy, sčítají body a ty pak určí vítěze.

Ad1) Jelikož moje implementace bude založená na veřejné práci (soccer decoder), tak mi nevadí, že se na to někdo koukne. Dokonce to možná zveřejním i na GitHubu
Ad2) Jak náročné zápasy budou zatím netuším... je to na mnohem hlubší analýzu, ale základní algoritmus má 100 opakování, kdy se spolu něco porovnává, generují se náhodná čísla určuje se další průběh. Jenže!
a) Netuším, kde se vzalo to číslo 100, tohle se ještě může změnit (je třeba to nějak vybalancovat), klidně těch opakování může být víc
b) Algoritmus v základu řeší pohyby po hřišti, ale chybí tam vliv hřiště, trenéra, únavy, taktiky atd. - tohle udělá časem celý výpočet složitější (kolikrát, zatím nevím)
c) Chtěl bych tímto algoritmem počítat nejen své zápasy, ale všechny zápasy soutěže (8 až 10 utkání na jednu ligu), ne jak jiné hry, které ostatní zápasy "odrbou"
d) Rád bych časem simuloval více soutěží, řekněme že třeba 5 soutěží po 20 týmech = 50 utkání v jednom kole, které by se počítaly "najednou"
e) A to tady ještě nemám vymyšlená střídání, zranění, vyloučení atd. => zase složitější výpočet i vyšší nároky na data

Z toho všeho vyplývá, že by pro každý zápas a tým mělo být k dispozici 17 hráčů, celkově možná i víc, třeba 20. Při dvaceti týmech je to jen v základu 400 hráčů na ligu + nějací volní hráči. Při 5 ligách už by to bylo 2000 hráčů + volní. Časem taky nějací geneři, jako příchod mladých hráčů (řekněme 5 až 8 mladých každou sezónu), takže se databáze (ať už bude SQL nebo jiná) bude nadále rozrůstat s každou sezónou.
K výpočtům je zapotřebí získat data (nejspíše z databáze), kdy se načtou potřebné údaje o hráčích, spočítají se počáteční ratingy atd.

A k tomu zbytku se nevyjádřím, neboť tomu sám moc nerozumím.
1 / 42