Akihabara.cz

Ostatní => Počítače => Téma založeno: Gurthfin 05. Květen 2011 - 11:00:56

Název: Programování
Přispěvatel: Gurthfin 05. Květen 2011 - 11:00:56
O důvod víc, proč nemusím hry na toto téma... Ale bavilo by mě pracovat u společnosti, která tyhle hry vyrábí, jako programátor.

veru aj mna by to bavilo.. moje pokusy o hru vzdy skoncili na tom, ze som nedokazal urobit engine.. cele spravcovanie nahravania suborov a vytvorenie grafickeho okna. Naprogramovat funkcie bojov, kuziel, prepoctov, skratka praca s uz nacitanymi vecami s korymi mozem pracovat pomocou pointerov mi problem nerobili...


Inak je tu aj moznost pouzit RPGMaker.. hry co som hral - Broken Hearts a Forbidden Saga boli vazne skvosty

// josi: Aby nebyla diskuse úplně smazána, přesunuta do obecně pojatého tématu.
Název: Re:Programování
Přispěvatel: josi 05. Květen 2011 - 11:26:31
Gurthfin: Člověk nemusí všechno programovat od základů, dost funkčnosti se dá poskládat z existujících věcí. Herní vývojář ani nemá programovat enginy, herní vývojář má dělat hry. Grafický, zvukový, doplňte-libovolný engine už udělal někdo jiný, stačí tedy najít ten správný, v případě potřeby upravit a propojit se zbytkem ekosystému.

U profesionálních a velkých projektů musí tento proces „splácávání“ poněkud promyšlenější a finální výtvor musí mít hlavu a patu, ale nováčci na poli herního vývoje nepotřebují za každou cenu mířit za skvostně navrženým elegantním optimalisovaným kódem, protože náročnost procesu detailního plánování a následné implementace je jedině odradí a nedokončí ani první projekt, bude jim tedy chybět motivace pracovat dál. Jakmile úspěšně podle svých představ něco dokončí a vydají, pak se mohou zabývat zlepšováním věcí pod kapotou, třeba u nového skvělého projektu (nebo přepisováním alespoň částí toho předchozího, pokud za to stojí). Toto ovšem neplatí jen v programování.

I pro tvorbu VN pár nástrojů existuje, není tedy třeba od základů vyvíjet něco nového (k čemuž dospěl i Benda_11).
Název: Re:Programování
Přispěvatel: Gurthfin 05. Květen 2011 - 12:03:59
 josi: ja vim, len este som nenasiel nikoho, kto by tie ostatne veci robil.. vsetci kamosi presedlali na C# (ja pracujem v C++), a ked som sa pytal na nejakych forach, tak som nedostal jedinu odpoved. Zaujimal som sa trochu o OpenGL a DarkGDK, ktore sluzia na vytvorenie grafickeho okna, ale nakoniec som tak maximalne rozbehal to okno a jednu pohybujucu postavicku bez animimacii.
Je mi jasne, ze sam bez ludi tazko nieco zmozem, ale ani neviem, kde mam niekoho najst.. lebo toto je skor beh na dlhsiu trat, nez vhupneme do toho a uz vsetko pojde.
Název: Re:Programování
Přispěvatel: josi 05. Květen 2011 - 13:35:18
DarkGDK bych já osobně okamžitě vyloučil kvůli vazbě na jedinou platformu (Windows). Pro 3D hry existují velice kvalitní otevřené enginy, např. OGRE nebo Irrlicht, které bych se nebál použít ani ve velkém projektu, 2D enginů je také habaděj. Psát kód přímo pro OpenGL/Direct3D podle mě nemá v dnešní době u nezávislých týmů cenu.

Pokud hledáš nějaký tým, do kterého by ses mohl zkusit přidat, projdi si fórum Českých her, třeba na něco zajímavého narazíš (neptej se na fóru, kontaktuj konkrétní týmy):
Kód: [Vybrat]
http://www.ceske-hry.cz/forum/index.phpDění na české herní vývojářské scéně je ale poslední dobou docela zoufalé.

I dnes, kdy se mladí vývojáři učí programovat v .NET místo Pascalu, má stále C/C++ své místo, jelikož má vývojář větší kontrolu nad děním (což mám rád). A aby v paměti nebyly blbosti je nutné ohlídat i v .NET; proč by tam jinak existovala NullReferenceException?
Název: Re:Programování
Přispěvatel: Druid 05. Květen 2011 - 15:28:02
Já ještě doporučím Game Maker, ve kterém se dá udělat cokoliv od visuální novely po hardcore rpg. Program je sice placený ale stojí za to. Já ho mám už nějaké 2 roky a jsem s ním spokojen. Dál existuje program scirra construct (http://www.scirra.com/) který je zdarma a vznikají v něm opravdu skvosty. Co se týče komunit tak vás všechny rád uvidím na Krevetě (http://kreveta.net/) a Velkym Chytrákovi (ten je zaměřen hlavně na gm - http://www.velkejchytrak.cz/)

A nakonec ukázka - VN engine v game makeru http://www.yoyogames.com/games/167138-amnesia-engine-demo

Název: Re:Programování
Přispěvatel: Gurthfin 05. Květen 2011 - 16:46:19
ja sem chvilu pracoval s RPG Makerom.. najviac sa mi pozdaval RPGMaker XP.. ale neni to ono. Uz je skoro vsetko hotove, vlastne sa len vymysla mapa a dialogy. Nejako to nepotesilo moje srdce programatora. Radsej sa babrem vo funkciach a objektoch nez pridavam objekty na plochu lebo skladam efekty pre kuzla.

Inak ten engine na vn si neviem predstavit... pre mna by to bolo nacitat obrazky do pola, kazdemu policku priradit napriklad pocit( p[0] normal, p[1] sad, p[2] laugh...) a potom pri citani textu(to, co sa ma zobrazit), by boli v texte odlisene pocity(napriklad <sad>), ktore by vlastne ukazovali na dane pole a zobrazil by sa obrazok v poli. BG by boli robene rovnako, hudba tiez, uz len nejako schemu pribehu... nad tym trochu porozmyslat a nemal by to byt problem. Co sa viac potrebuje?
Název: Re:Programování
Přispěvatel: josi 05. Květen 2011 - 17:55:50
Vidíš to docela jednoduše, že? Ono načtení spritů a jejich vykreslení je prkotina (použití statických polí je z hlediska flexibility pro změnu v tomto případě hloupost), kterou Ti naprogramuji během pár chvil, ale žádný designér Ti nikdy nebude psát příběh v programovacím jazyce, třeba takto:
Kód: [Vybrat]
http://www.renpy.org/doc/html/quickstart.html#imagesBude chtít nástroje:
Kód: [Vybrat]
http://adonthell.berlios.de/doc/index.php/Tools:Dlgedit:Editing
http://www.chat-mapper.com/
http://www.visualnovelty.com/about.html
A naprogramovat systém pro nelineární příběhy také nejde bez chvíle přemýšlení:
Kód: [Vybrat]
https://github.com/ksterker/adonthell/blob/bdf68645241c547634604b7d49fbc26f93196f18/src/rpg/dialog.ccU visuálních novel si program navíc musí pamatovat, které texty ve které větvi příběhu již zobrazil, pamatovat si, ve které větvi vlastně je, a to všechno dělat pokud možno optimálním způsobem.

Toto mě jen teď narychlo napadlo a problémů k řešení je jistě více. Neříkám však, že udělat samotný engine pro VN je závratně těžké, nikoliv.

Pro inspiraci kód Ren'Py:
Kód: [Vybrat]
http://bazaar.launchpad.net/~renpytom/renpy/main/files/head:/renpy/
Název: Re:Programování
Přispěvatel: Gurthfin 05. Květen 2011 - 21:32:49
Citace
Vidíš to docela jednoduše, že?

Prave to je moja vyhoda a aj najvacsia nevyhoda. Vdaka tomu, ze vidim vsetko jednoducho, dokazem teoreticky vyriesit akykolvek problem. Pocas riesenia sa mi ukazuju dalsie a dalsie problemy a ja ich riesim, dokym to nevyriesim cele (niekedy su moje riesenia fakt bizardne, ako pri maturitnej praci, ked som urobil pointer na pole poinetrov a to som mal za sebou len strvtrok C a k pointerom sme sa ani nedostali, len som o nich cital). Problem je v naslednom programovani, kde potom musim naprogramovat cele mechanizmi, ktore som este nerobil. Dokazem efektivne pracovat s kopiami prog. kodu, ktore viem ako funguju(skratka ked som mieco niekde videl, dokazem si zapamatat princip a predpovedat chovanie). Ale ak robim nieco, co som este nevidel, mam s tym problemy (neviem ho presne zapisat, neverim mu, snazim sa ho po castiach prepisovat a skusat a casto z toho vznika zhatlanina, popripade vymyslim uplne iny koncept daneho kodu)
Název: Re:Programování
Přispěvatel: Benda_11 05. Květen 2011 - 21:37:04
Gurthfin: To mě připomíná moje programování na záchodě :D Často když nevím, tak jsem schopnej nadeklarovat hafo proměnných a klidně ve 20ti promněných mám stejnou hodnotu a to jen díky tomu, že se mě nedaří. Tak si jdu odskočit na záchod a ještě před usednutím na mísu vím jak to celé vyřešit. A takhle to funguje se mnou asi pořád. :D Ale tohle se mě stává jen, když jsem nepřipravený a někdo mě nutí programovat.

Jinak pokud mám čas na rozmyšlenou, tak klidně měsíc chodím a programuju si kód jen čistě v hlavě a pak kompiluju, tím že si ho v hlavě procházím a čekuju jestli dává smysl a jestli nemůže nastat někde nějaká chyba. Tohle dokážu i s kódy, které jsem kdysi naprogramoval a někdy když spím, tak dřívější kódy taky procházím a druhým den se třeba probudím se zjištěním, že při konkrétní situaci dokážu celou aplikaci schodit.
Asi jsem moc přepracovanej.

Ale často se mě stává, že někdy něco píšu a sám nevím co to píšu, tak nechám ruce pracovat a pak jen vidím výsledek, kterému někdy ani sám nerozumím.
Název: Re:Programování
Přispěvatel: Xenotaku 05. Květen 2011 - 21:52:29
Pokud by někdo měl zájem tak se hledá programátor ke hře Fantager.
http://www.fantager.net/
Potřebujeme tam teď odstranit spamování robota ve fórech
a současnej Admin (2 v pořadí) nemá čas.
Pokud se na to chce někdo kouknout tak dejte vědět.
Ta stovka lidí co to hraje bude nadšením bez sebe
a já taky :D
Název: Re:Programování
Přispěvatel: Gurthfin 05. Květen 2011 - 22:33:27
ja to mam tak podobne, len ked sa na niecom vazne zaseknem (moze to byt hocico, aj napriklad v nejakej hre neviem porazit bosa, alebo nieco prelozit) tak idem spat a vo sne to vyriesim. Ked sa zobudim, a suksim to urobit tak isto, funguje to. Vo filme Počátek bolo povedane, ze pri spani nas mozog pracuje rychlejsie, nemusi sa zatazovat zrakom (ten zabera az 70 percent mozgovej aktivity) a inymi vplymi, takze pracuje rychlejsie, ale nedokazeme tento proces ovladat. Mala otazka, programuje (alebo cinnost pri ktorej musite pouzivat mozog) sa vam lepsie(lahsie/efektivnejsie) v noci alebo cez den?

Xenotaku: ak to nema nieco spolocne s C++, tak ja som pass
Název: Re:Programování
Přispěvatel: Benda_11 05. Květen 2011 - 23:05:56
Já u sebe zjistil, že abych dokázal programovat na 50% své aktivity, tak musím doma sedět v křesle, pustit si hudbu nebo AMV a vypnout ICQ... Ještě nikdy jsem nedokázal programovat na svůj plný výkon, docela se toho stavu i bojím... V práci, pokud u sebe nemám co potřebuju, tak programuju ani ne zhruba na 10%. Mám pocit, že je to ještě prostředím, zkoušel jsem v práci hudbu i dobré křeslo a stejně ze mě nelezlo nic kloudného. A na čase nějak nezáleží... Rád spíše programuju přes den, jelikož v noci se rád dívám na anime... Dívat se na anime přes den mě přijde moc blbý.

Nejhorší je scriptovat kódy pro xlsko, které mají počítat a zacházet s datama na burze. To je mor. Nerad pracuju s něčím čemu nerozumím... Klient po vás chce tohle a tohle... Vy na něj čumíte jak na vola, jelikož vůbec nechápete, proč to potřebuje a jak se to vlastně počítá. A ve finále zjistíte, že jednoduchá rovnice a + b * c se dá počítat pouze tehdy pokud je splněno několik podmínek, jinak se má počítat úplně něco jiného a tyhle zásadní informace z klienta prostě nevylezou. To většinou zjistíte, až vám to vrátí, že to počítá špatně.

Trochu mě to teď připomnělo klienta na helpdesku. Mě zavolal kvůli internetu, že nejde, tak zkouším běžné diagnostické nástroje a k tomu ping od klienta. A když mu říkám, aby mě přečetl, co mu to vypsalo, tak všechny podstatné čísla a informace přeskočil ve čtení :D
Název: Re:Programování
Přispěvatel: Gurthfin 07. Červenec 2011 - 16:23:01
zasa som sa po dlhom case vrhol na programovanie, teraz skusam jednoduchy program na efekt v titulkoch, potreboval by som poradit ako vytlacit znak \ do suboru a nastavit, aby sa mi vytlacali cisla v dvojciselnom formate - namiesto 10.05 sa mi vytlaci 10.5 (co mi prehravac berie ako 10.50) kde kod vyzera  fout << int << "." <<  int;
Jedna sa o C++ kod.
Název: Re:Programování
Přispěvatel: josi 07. Červenec 2011 - 16:46:44
Kód: [Vybrat]
fout << int << '.' << std::setw(2) << std::setfill('0') << int;
setw nastaví minimální šířku, setfill znak výplně. Je třeba vložit hlavičku iomanip.

Ještě přihodím referenci:
Kód: [Vybrat]
http://www.cplusplus.com/reference/iostream/manipulators/
Název: Re:Programování
Přispěvatel: Benda_11 07. Červenec 2011 - 16:52:24
Gurthfin: sice v C++ nevyznám a netuším, jak se to v tom dělá, ale doufám že ti moje teorie pomůže...
Co se týče znaku "\", tak vím, že většina programovacích jazyků používá zpětnousekvenci, takže tohle by mělo teoreticky fungovat "\\"
A co se týče toho čísla, tak bych šel na to trochu vietnamským řešením a to je parsoval jeden znaky za druhým (předpokládám, že to číslo je nejdříve ve formě stringu) a pak do proměnné na číslo vkládal něco typu 1 * 10 + 0 * 1 + 0 * 0.1 + 5 * 0.01 = 10.05
A nebo ještě mě napadlo si to číslo oddělit na dvě čísla v stringu, to je před tečkou a to co je zatečkou a spojit to pak jako čísla :) "10" a "05" takže "10" převedeš na 10 a "05" převedeš na 5 * 0.01, kde 0.01 zjistíš délkou řetězce "05"
Název: Re:Programování
Přispěvatel: Gurthfin 07. Červenec 2011 - 17:27:35
 josi: funguje diky

Benda_11: naozaj vietnamske riesenie..xDD ale vdaka za \\.. funguje.

EDIT: tak uz je moj Subtitle Shaker hotov, kto by chcel roztriast svoje titulky, ako to mame v OP Steins;Gate, tak mu mozem poslat pomocku, co to vyrazne zlahci
Název: Re:Programování
Přispěvatel: Tigr 07. Červenec 2011 - 23:42:37
Gurthfin: Chápu to správně, že lepíš floating-point číslo ze dvou intů? Nebylo by lepší to číslo mít jako float/double i „uvnitř“ a tisknout to pomocí fout << fixed << setprecision(2) << cislo? Nevím, co tam s tím počítáš, ale takhle se mi to zdá podobný Saigon jako to, co navrhl Benda :-)
Název: Re:Programování
Přispěvatel: Benda_11 07. Červenec 2011 - 23:46:44
Gurthfin: Co že jsi to udělal? Nějak to moc nechápu... A nebo pokud jo, tak to má být prográmek na karaoke? Jestli jo, docela by mě to zajmalo, jelikož něco podobného s karoke jsem si dělal i já za pomůcku... Sice s tím nedokážu dělat fapulózní karaoke jako dělá Ayako, ale i tak se s tím dají dělat psí kusy.
Název: Re:Programování
Přispěvatel: Gurthfin 08. Červenec 2011 - 00:28:03
len to nahodne meni suradnice o 1 od stredu na vsetky smery (+/-)  na casovej osi. Cize to vytvori napriklad 30 riadkov, kde kazdy riadok bude posunuty o vami zvoleni cas a nahodne sa mu hodi pozicia v rozsahu absolutna 1.
Priklad:
Pociatocna pozicia (500,300)
Pociatocny cas: 1 minuta, 30 sekund, 54 milisekund
Pocet skokov: 30
Interval skoku: 5ms

Vystup:
Kód: [Vybrat]
Dialogue: 0,0:1:30.54,0:1:30.59,Credits,,0000,0000,0000,,{\pos(501,299)}Priklad
Dialogue: 0,0:1:30.59,0:1:30.64,Credits,,0000,0000,0000,,{\pos(500,300)}Priklad
Dialogue: 0,0:1:30.64,0:1:30.69,Credits,,0000,0000,0000,,{\pos(501,301)}Priklad
Dialogue: 0,0:1:30.69,0:1:30.74,Credits,,0000,0000,0000,,{\pos(499,301)}Priklad
Dialogue: 0,0:1:30.74,0:1:30.79,Credits,,0000,0000,0000,,{\pos(500,301)}Priklad
Dialogue: 0,0:1:30.79,0:1:30.84,Credits,,0000,0000,0000,,{\pos(501,301)}Priklad
Dialogue: 0,0:1:30.84,0:1:30.89,Credits,,0000,0000,0000,,{\pos(500,299)}Priklad
Dialogue: 0,0:1:30.89,0:1:30.94,Credits,,0000,0000,0000,,{\pos(500,300)}Priklad
Dialogue: 0,0:1:30.94,0:1:30.99,Credits,,0000,0000,0000,,{\pos(500,299)}Priklad
Dialogue: 0,0:1:30.99,0:1:31.04,Credits,,0000,0000,0000,,{\pos(499,301)}Priklad
Dialogue: 0,0:1:31.04,0:1:31.09,Credits,,0000,0000,0000,,{\pos(499,299)}Priklad
Dialogue: 0,0:1:31.09,0:1:31.14,Credits,,0000,0000,0000,,{\pos(501,301)}Priklad
Dialogue: 0,0:1:31.14,0:1:31.19,Credits,,0000,0000,0000,,{\pos(500,299)}Priklad
Dialogue: 0,0:1:31.19,0:1:31.24,Credits,,0000,0000,0000,,{\pos(499,300)}Priklad
Dialogue: 0,0:1:31.24,0:1:31.29,Credits,,0000,0000,0000,,{\pos(501,300)}Priklad
Dialogue: 0,0:1:31.29,0:1:31.34,Credits,,0000,0000,0000,,{\pos(501,301)}Priklad
Dialogue: 0,0:1:31.34,0:1:31.39,Credits,,0000,0000,0000,,{\pos(501,301)}Priklad
Dialogue: 0,0:1:31.39,0:1:31.44,Credits,,0000,0000,0000,,{\pos(499,300)}Priklad
Dialogue: 0,0:1:31.44,0:1:31.49,Credits,,0000,0000,0000,,{\pos(501,301)}Priklad
Dialogue: 0,0:1:31.49,0:1:31.54,Credits,,0000,0000,0000,,{\pos(500,300)}Priklad
Dialogue: 0,0:1:31.54,0:1:31.59,Credits,,0000,0000,0000,,{\pos(501,299)}Priklad
Dialogue: 0,0:1:31.59,0:1:31.64,Credits,,0000,0000,0000,,{\pos(501,300)}Priklad
Dialogue: 0,0:1:31.64,0:1:31.69,Credits,,0000,0000,0000,,{\pos(499,301)}Priklad
Dialogue: 0,0:1:31.69,0:1:31.74,Credits,,0000,0000,0000,,{\pos(499,299)}Priklad
Dialogue: 0,0:1:31.74,0:1:31.79,Credits,,0000,0000,0000,,{\pos(501,301)}Priklad
Dialogue: 0,0:1:31.79,0:1:31.84,Credits,,0000,0000,0000,,{\pos(501,300)}Priklad
Dialogue: 0,0:1:31.84,0:1:31.89,Credits,,0000,0000,0000,,{\pos(500,299)}Priklad
Dialogue: 0,0:1:31.89,0:1:31.94,Credits,,0000,0000,0000,,{\pos(499,299)}Priklad
Dialogue: 0,0:1:31.94,0:1:31.99,Credits,,0000,0000,0000,,{\pos(501,300)}Priklad
Dialogue: 0,0:1:31.99,0:1:32.04,Credits,,0000,0000,0000,,{\pos(500,300)}Priklad

staci to len skopcit a vlozit do titulkov. Skratka pozicia titulkov sa meni kazdych 5ms, cize to vyzera ako by sa triasli. Hovorim jednoducha vecicka. Zajtra asi pridam moznost nie len o 1 ale o zolenu hodnotu by sa mohli posuvat.

EDIT: teraz pozeram, ze minuty a hodiny sa zapisuju nie zle, lebo som to skusal a islo, ale nie v dvojciselnom stave... hmm.. musim nad tym este zapracovat.
Název: Re:Programování
Přispěvatel: Tigr 08. Červenec 2011 - 15:48:17
Hmm, to mi připomíná titulkový framework v Pythonu, na kterém teď dělám :-) Asi bych na to šel přes políčko Effect, kam bych si u titulku napsal třeba „shake:1,50“, program by mi ten titulek zakomentoval a za něj by mi rozkopíroval kusy po 50 ms, které vyplní čas toho původního titulku, s náhodným posunutím o 1 px. Myšlenka je taková, že si to v Aegisubu nastavím a pak to jen „naslepo“ proženu programem, nemusím otevírat texťák nebo ručně počítat, jak počet skoků mám dát, abych se trefil do konce titulku.

Mimochodem, ty skoky, co jsi napsal, jsou po 5 cs = 50 ms.
Název: Re:Programování
Přispěvatel: Gurthfin 08. Červenec 2011 - 16:56:08
nevedel sem, ze sa to da aj cez efekty. V podstate o karaoke nic neviem, a toto bola len nahoda. V podstate som chcel urobit nieco, co by sa priblizilo creditsu u openingu Steins;Gate, lebo ten efekt co je tam rozhodne neviem urobit. Mno, len najprv som to robil rucne .. do 700 riadkov vlazat pozicie nie je sranda. Aspon som si precvicil C++.  Skusim nieco tazsie.

diky za opravu casu, ani ma to netuklo, ze sa to rovna vlastne 50ms
Název: Re:Programování
Přispěvatel: Gurthfin 10. Červenec 2011 - 18:03:40
predtym, nez sa do niecoho pustim sa radsej spytam. Ako sa da upravit casovanie u .ass ak su "akcelerovane" titulky (chyba pri prepocte FPS) To znamena, ze ze kazdy casovy usek je posunuty o konstantny cas. cize casovy usek 1 = 0, cas usek 2 = +1, cas usek 3 = +2, cas usek 4 = +3... cize jednoduche posunutie o -1 nepomoze. Mozem napisat program, ktory si vypocita rozdiel medzi aktualnym casovanim a skutocnym casovanim, z toho podla vzorca urobi koeficient a nim potom vynasobia vsetky casy, cim by sa malo docielit zrovnanie.
Název: Re:Programování
Přispěvatel: Benda_11 10. Červenec 2011 - 18:09:12
Titulky bych exportnul do srt...
Vzal bych třeba obyčejný subtitleswork a je tam nástroj na zkorektování fps, napíšeš původní a pak nové a on ti to projede a všechny časy přepočte...
Takže teorická rovnice by měla být asi následovná ((starý_čas * staré_fps) / nové_fps) = nový_čas
A pak by mělo klasické +1 a nebo -1 na sekundách fungovat dle libosti.
Název: Re:Programování
Přispěvatel: Gurthfin 10. Červenec 2011 - 18:40:41
ale takto pridem o kopu vymozenosti v ass. Niekto si dal pracu s efektami, poznamkami atd. tak mu to nechcem zabit konverziou do srt.
Název: Re:Programování
Přispěvatel: Tigr 10. Červenec 2011 - 22:04:43
Aegisub: File > Export > Transform framerate.
Název: Re:Programování
Přispěvatel: FaraonX 11. Červenec 2011 - 03:05:23
Gurthfine, co se týče tvorby karaoke, tak většinou se v .ass dělají jen lehké věcičky a tam kde lidé koulí očima a slintají si na klávesnici, tak to se dělá v after effectu.
Ale samozřejmě i s .ass se dají dělat opravdu hezká karaoke. Ti trošku starší ví, že Prasátko jednou napsal (nebo někde sehnal) a hodil na web necelých 100 různých .ass generátorů karaoke celé napsané v PHP. Taky proč se s tím dělat v C++, když PHP je o tolik lehčí, že? ;-) Když tak jsem ti poslal link na PM.
A taky si pročti Aegisubský fórum, ušetříš si tak dost práce.

Jinak ta vaše řešení jsou vskutku zajímavá a to jsem si myslel, že píšu kódy jak prase. Tohle ale dává věcem novou dimenzi. :D
Název: Re:Programování
Přispěvatel: Gurthfin 11. Červenec 2011 - 14:13:50
Jinak ta vaše řešení jsou vskutku zajímavá a to jsem si myslel, že píšu kódy jak prase. Tohle ale dává věcem novou dimenzi. :D

To je caro programatorskej roboty. Ked programatorovi nieco nejde, alebo nieco nevie za pouzitia standartnych prostriedkov, tak si predsa nezufa. Naprogramuje to vlastnym sposobom... ;D

Na ten generator sa pozriem.. urcite si v tych prikladoch nieco najdem, nieco pokombinujem a nieco z toho vylezie.  S touto vetou ale nemozem suhlasit "Taky proč se s tím dělat v C++, když PHP je o tolik lehčí, že? ;-) " Lebo o PHP viem len to, co mi povedal spoluziak a ze sa to podoba C++. Inak o nom nemam sajnu, lebo na strednej ma namiesto do vypoctarskej triedy supli do telekomunikacii, takze PHP a SQL ma obisli, za co by som im teraz vykrutil krky.  >:( :(

Ak by mal niekto nejaky napad na program na upravu titulkov, ale nieco lahke a uzitocne, tak mi ho popiste, potrebujem si trochu precvicit C++ a hlavne Input/Output zo suboru, lebo na to som lavy, lebo na tu (v knihe poslednu) kapitolu som sa skoro nikdy nedostal. A taktiez programatori, ak by ste mali nejake teoreticke rady ohladne tejto tematiky, rad by som sa nechal poucit.


Název: Re:Programování
Přispěvatel: Benda_11 11. Červenec 2011 - 15:46:31
To mě tak připomíná, že bych si do svého karaoke programu mohl dát offsetové pozicování a časování pro statické skákání písma...

FaraonX: Ani nevíš jak je někdy něco lehčí udělat ťamanským řešením (20řádků kódu) než na to použít specializovanou funkci.
Název: Re:Programování
Přispěvatel: Gurthfin 05. Září 2011 - 14:14:36
http://vtm.zive.cz/stanford-nabizi-zdarma-kurzy-umele-inteligence
Název: Re:Programování
Přispěvatel: Benda_11 05. Září 2011 - 23:44:55
Hodím to do tohoto tématu... Zdá se mě blbost na můj požadavek zakládat nové téma...

Mám otázku: Pod jakou licencí mám zveřejňovat své programy a kde tu licenci mohu najít? Programuju v C# a jedná se mě o to, že moje programy jsou všechny freeware, ale nejsou opensource (zdrojáky mám jenom já), může je používat prakticky kdokoliv (jak právnická a nebo fyzické osoba), ale jen v tom případě, že nikterak se nesnaží hackovat/modifikovat moje programy.
Název: Re:Programování
Přispěvatel: Gurthfin 06. Září 2011 - 00:12:12
Nie je to nahodou GNU General Public Licence co hladas?

hop stranka:
Kód: [Vybrat]
http://www.gnu.org/copyleft/gpl.html
Název: Re:Programování
Přispěvatel: Geont 06. Září 2011 - 08:36:02
Nie je to nahodou GNU General Public Licence co hladas?

hop stranka:
Kód: [Vybrat]
http://www.gnu.org/copyleft/gpl.html

GNU GPL není pro něho vhodná. Součástí GPL je totiž i možnost modifikace SW, což Benda_11 zrovna nechce.

Osobně bych asi doporučil freeware licenci, ale bohužel se mi nepodařilo najít její přesné znění. Asi bude nutné využít znění freeware licence z nějakého jiného programu a akorát ji modifikovat, aby se týkala vlastního programu.
Název: Re:Programování
Přispěvatel: Benda_11 06. Září 2011 - 08:43:58
Tak GNU padá...

Čirou náhodou nebude ta licence pod označení EULA? Problém je že já se v licencí vůbec nevyznám...
Název: Re:Programování
Přispěvatel: Geont 06. Září 2011 - 09:14:49
Tak GNU padá...

Čirou náhodou nebude ta licence pod označení EULA? Problém je že já se v licencí vůbec nevyznám...

EULA (End User License Agreement) by tomu mohla vyhovovat. Jedná se teda o licence, která jako poslední definuje, co uživatel může a nemůže, a může doplňovat jinou licenci (GPL, CDDL atd.).
Název: Re:Programování
Přispěvatel: Benda_11 06. Září 2011 - 09:29:57
Je někde k dostání šablona pro EULA? Protože se mě to moc nechce psát...

Jinak co jsem se porozhlížel, tak bych mohl použít i Apache License 2.0
Je to licence z roku 2004, dlouho neaktualizovaná. Sice zavádí strašné pojmy, ale pak je pro mě přívětivá.
Nevymezuje si právo, aby se můj program vztahoval pak pod novou verzí - třeba kdyby vyšla někdy Apache License 3.0, která by po mě chtěla poplatky, tak se můj program na ní nebude vztahovat, protože je pod Apache License 2.0.
A do přiloženého souboru s označení NOTICE mohu napsat své dodatky, jako že k dispozici není zdrojový kód a že užití je možné jak pro osobní účely, tak i pro účely ve firmě.
A dává mě právo/zakazuje uživateli, aby modifikoval můj program...

Ale teď se rozhodnout co je lepší...
Název: Re:Programování
Přispěvatel: Benda_11 06. Září 2011 - 09:35:51
Tak jsem našel super šablonu pro EULA:

Kód: [Vybrat]
1.    You have no rights
2.    Please read carefully 1

Ta se mě líbí :D
Název: Re:Programování
Přispěvatel: TIwdaym 06. Září 2011 - 11:44:22
Myslím, že najlepšie urobíš, keď si o tom niečo prečítaš na nete. V podstate pri každej licencii je základ EULA - tam si môžeš napísať čo chceš. Freeware je inak aj closed source program, alepo tak nejak. Všetko sú to relatívne pojmy. Presné kritérium na koncove práva si vyhradzuje vždy majiteľ a tvorca, takže nejakú šablónu moc nenájdeš. AK pracuješ ale na nejakých externých softoch, tak len odporúčam čítať a čítať a čítať (a nezblázniť sa z toho)

Edit:
Ešte by som dodal, že ja som robil jeden programík pre ukážku kódu a dával som ho ako opensource na sourceforge a hodil som tam taký jednoduchý reaqdme s licencioi - vlastnoručne zbúchanou - mal by byť niekde pri súboroch už sa mi to nechce hľadať, je to staré asi rok a nerobil som s tým, tak moc nepamätám
Kód: [Vybrat]
http://snakegameinpure.sourceforge.net/
Název: Re:Programování
Přispěvatel: Mt_Terror 06. Září 2011 - 11:53:14
Myslím že by se dala použít licence Creative Commons:
Kód: [Vybrat]
http://creativecommons.org/choose/by tam mělo jít nastavit zda to můžou upravovat či ne.
Název: Re:Programování
Přispěvatel: Geont 06. Září 2011 - 12:00:57
Myslím že by se dala použít licence Creative Commons:
Kód: [Vybrat]
http://creativecommons.org/choose/by tam mělo jít nastavit zda to můžou upravovat či ne.

Co vim, tak CC se nedoporučuje používat pro software viz http://wiki.creativecommons.org/FFAQ#Can_I_license_software_using_CC_licenses.3F
Název: Re:Programování
Přispěvatel: Gurthfin 07. Únor 2012 - 10:45:06
pri behu programu(c++) potrebujem vytvorit a mat otvoreny textovy subor, aby som donho v pripade chyby zapisal poslednu poziciu. Lenze ak prebehne program v poriadku, ten subor nepotrebujem. Nie je nejaky sposob, ako by ten pomocny subor program vymazal sam?
Název: Re:Programování
Přispěvatel: Tigr 07. Únor 2012 - 19:29:14
pri behu programu(c++) potrebujem vytvorit a mat otvoreny textovy subor, aby som donho v pripade chyby zapisal poslednu poziciu. Lenze ak prebehne program v poriadku, ten subor nepotrebujem. Nie je nejaky sposob, ako by ten pomocny subor program vymazal sam?
Tak určitě můžeš zavolat system("rm -f muj_soubor") nebo něco takového, jenže to není přenositelné. Řešením by bylo použít nějakou knihovnu (Boost::filesystem?).

Druhá možnost je udělat vypisování líné. Můžeš to celé vypsat třeba až na konci programu, pokud to dřív nepotřebuješ. V tu chvíli také víš, jestli vlastně něco vypisovat chceš. V pseudo-C++:

Kód: [Vybrat]
class ErrorReporter {
public:
    ErrorReporter(path)
        this->path = path
   
    ~ErrorReporter()
        if this->data:
            otevři soubor this->path pro zápis
            zapiš do něj obsah this->data
   
    void report(string)
        this->data << string

protected:
    string       path;
    stringstream data;

};

Anebo mě napadá třetí možnost – v C++ vypisovat na stderr a přesměrovat si to do souboru v shellu. Asi nejjednodušší možnost, pokud je to potřeba jen pro vývoj a ne pro finální aplikaci:

Kód: [Vybrat]
muj_program 2>muj_soubor
Název: Re:Programování
Přispěvatel: Gurthfin 16. Únor 2013 - 12:24:10
da sa nejako ofajat velkost fronty argv[]? Mne dovoli nejakych 320 zaznamov(potom vypise chybu), ale velmi casto sa stretavam so situaciou, kedy potrebujem viac.
Název: Re:Programování
Přispěvatel: Tigr 16. Únor 2013 - 20:21:08
da sa nejako ofajat velkost fronty argv[]?
Zdá se, že na Windows (http://msdn.microsoft.com/en-us/library/windows/desktop/ms682425%28v=vs.85%29.aspx) je limit 32 KiB a na Linuxu (http://www.in-ulm.de/~mascheck/various/argmax/) 1/4 velikosti stacku, tedy nějaký megabajt a víc. Na Windows má cmd.exe ještě vlastní omezení na 8 KiB (http://support.microsoft.com/kb/830473/en-us). Nevypadá to, že by se to dalo nějak ovlivnit.

Zamyslel bych se nad tím, jestli opravdu potřebuji všechny ty argumenty předat najednou, nebo jestli by nešlo opakovaně spouštět daný program třeba jen s jedním argumentem. Pokud ne, řešením je načítání ze souboru. Pokud ano, tak stačí zařídit, aby se program opakovaně volal. Několik příkladů, jak na to (v Bashi, tj. na Linuxu nebo v MinGW na Windows):

Kód: [Vybrat]
$ find . -type f -name '*.jpg' >soubory.txt
$ while read line; do muj_program $line; done <soubory.txt
Kód: [Vybrat]
$ for line in `find . -type f -name '*.jpg'`; do muj_program $line; done
Kód: [Vybrat]
$ find . -type f -name '*.jpg' | xargs -n 1 -P 4 muj_program
Poslední příklad nechá běžet až 4 instance programu naráz.
Název: Re:Programování
Přispěvatel: Gurthfin 16. Únor 2013 - 21:10:31
ts.. blby windows, musi nas tak obmedzovat. No nic, vyriesene to mam, len takto by to slo ovela rychlejsie a hlavne som to chcel vyuzit pri viacej programkoch. Ostava mi uz len vytvorit vlastnu fronu a pomocou vnutornych funkcii to posietal do cmd.
Název: Re:Programování
Přispěvatel: Gurthfin 28. Duben 2013 - 05:43:35
No vdaka ClassicShell sa uz nemusim obmedzovat, ten to ma krasne a rychlo vyriesene, ale zase mi nastali nejake problemy:

1. ClassicShell pouziva pri volani "silent mod" pre command line. Cize ak pouzijem prikaz PicConv.exe %3 (kde PicConv.exe je moj program a %3 je C:\Users\ADMINI~1\AppData\Local\Temp\cei1FB2.tmp) tak sa mi nezobrazi okno vystupu. Skusal som pouzit v mojom programe cout, cerr, system("echo on"), ale nic nepomohlo. Nie je nejaky sposob ako vynutit zobrazenie vystupu?

2. Unicode (presnejsie japonske znaky). Nejdu volat programy s argumentami obsahujucimi unicode znaky (coz je prirodzene), tak mam vyvinut snahu a opytat sa, ako naprogramovat taky program, alebo bude ovela lahsie len prehodit subory zo zlozky, ktorej meno obsahuje unicode znaky do nejakej, ktora ich neobsahuje?

Název: Re:Programování
Přispěvatel: Tigr 30. Duben 2013 - 23:22:52
Citace
1. ClassicShell pouziva pri volani "silent mod" pre command line. Cize ak pouzijem prikaz PicConv.exe %3 (kde PicConv.exe je moj program a %3 je C:\Users\ADMINI~1\AppData\Local\Temp\cei1FB2.tmp) tak sa mi nezobrazi okno vystupu. Skusal som pouzit v mojom programe cout, cerr, system("echo on"), ale nic nepomohlo. Nie je nejaky sposob ako vynutit zobrazenie vystupu?
Pokud máš stdout a stderr přesměrovaný někam "do zelí", tak to musíš řešit s tím programem, který to tak nastavil, když tvůj program spouštěl; s tím ze svého programu nic nezmůžeš (respektive: můžeš si je samozřejmě přesměrovat na jiný soubor, ale okno konzole si snadno nevytvoříš). Anebo si můžeš vytvořit nějaký log soubor a do něj to vypisovat.

Citace
2. Unicode (presnejsie japonske znaky). Nejdu volat programy s argumentami obsahujucimi unicode znaky (coz je prirodzene), tak mam vyvinut snahu a opytat sa, ako naprogramovat taky program, alebo bude ovela lahsie len prehodit subory zo zlozky, ktorej meno obsahuje unicode znaky do nejakej, ktora ich neobsahuje?
Pro práci s Unicode argumenty nebo otevírání souborů s Unicode názvy je potřeba použít WinAPI. Snazší je se tomu vyhnout. V opačném případě můžeš začít tady: http://msdn.microsoft.com/en-us/library/windows/desktop/bb776391%28v=vs.85%29.aspx
Název: Re:Programování
Přispěvatel: Gurthfin 01. Květen 2013 - 02:10:59
tak Unicode sa teda vyhnem.. sice by argumenty boli v poriadku podla toho clanku, ale system() mi aj tak nezozral unicode nazvy..

Tak neviem, ako to maju riesene.. ak pouzijem %2 co je oznaceny jeden subor, tak sa mi okno ukaze, ale ak pouzijem %3, co je textovy subor so vsetkymi oznacenymi subormi, tak sa uz neukaze. Pytal som sa aj u nich na fore, ale poradili mi iba, ze mam spustit nove okno a v nom by sa mali ukazovat prikazy, no bohuzial sa mi otvorit este jedno okno nijako nepodarilo. Log uz mam, ale ten ma neupozorni na ukoncenie procesu. Nastastie ma napadlo celkom partyzanske riesenie - na koniec programu som dal zvukovy signal.

Tak ma este napadlo.. je lepsie pouzivat cout / printf ? A string, alebo char *s?
A tiez kolko tak potrebujem vediet, aby som sa mohol zamestnat ako programator.. akosi ma to programovanie bavi (ist rano o 8 spat po celonocnom programovani s nadavkami "ktory debil vymyslel spanok" je celkom dobry dokaz).
Název: Re:Programování
Přispěvatel: FaraonX 01. Květen 2013 - 13:50:35
Tak ma este napadlo.. je lepsie pouzivat cout / printf ? A string, alebo char *s?
To záleží na úhlu pohledu. Většinou je to jedno. Cout je lidovější, ten si ten výstup přebere sám, printf je striktnější. Printf je třeba mnohem lepší využít při rozvláknování programu, kdybys použil cout, tak ti to pak bude vypisovat zkomolený nesmysli, díky zpoždění, které vzniká zjišťováním co za typ dat to vlastně vypisuje. A string s char pointerem? No hmm... tak string je opět taková přívětivější nadstavba. Ale jako příklad, kde bys string nemohl použít, je tuším třeba komunikace přes TCP a UDP, ale ruku do ohně bych za to nedal. :-)

A tiez kolko tak potrebujem vediet, aby som sa mohol zamestnat ako programator.. akosi ma to programovanie bavi (ist rano o 8 spat po celonocnom programovani s nadavkami "ktory debil vymyslel spanok" je celkom dobry dokaz).
No tak vědomosti jsou při hledání práce až na druhém místě. :-) Hlavní je sebevědomí a vychválit se až na půdu. Ale základy bys měl ovládat. :-)
Název: Re:Programování
Přispěvatel: Gurthfin 02. Květen 2013 - 01:54:24
ako velmi mozem verit zoradeniu suborov vo windowse? Napriklad podla nazvu.. nacitam zo suboru .txt zoznam suborov na spracovanie, ktory vytvara ClassicShell zo zakliknutych suborov. Zvycajne oznacujem subory pomocou Select All, ale niekedy ich musim vybrat myskou. A prave vtedy sa zapisu v poradi, akym som ich zaklikol. Cize ak dam zoradit nazvy suborov (string) pomocou compare, budu v takom poradi ako ich vidim vo windowse? (ide mi hlavne o to, ze nazvy obsahuju cisla a povolene znaky ako .-_ atd.,)

No tak vědomosti jsou při hledání práce až na druhém místě. :-) Hlavní je sebevědomí a vychválit se až na půdu. Ale základy bys měl ovládat. :-)
Prave sebavedomie je to, co mi chyba najviac.. nikdy som nebol nejaky socialny typ. Takze mi ostalo skor rychle naucenie sa.
A k zakladom.. staci nieco taketo ako zaklad (program, co posledny tyzden robim)?
Kód: [Vybrat]
http://www.mediafire.com/view/?m987dbgq7f7h2ow
http://www.mediafire.com/view/?3oj8imhtg429lha
http://www.mediafire.com/view/?cwnkxka9ak2cah9
Název: Re:Programování
Přispěvatel: FaraonX 02. Květen 2013 - 14:22:38
ako velmi mozem verit zoradeniu suborov vo windowse? Napriklad podla nazvu...
To po mě chceš moc, otestuj uvidíš. :-)

Prave sebavedomie je to, co mi chyba najviac.. nikdy som nebol nejaky socialny typ. Takze mi ostalo skor rychle naucenie sa.
A k zakladom.. staci nieco taketo ako zaklad (program, co posledny tyzden robim)?
Tak ono je i blbí to, že čím víc toho člověk ví, tím víc i zjišťuje kolik toho mám k učení před sebou, tudíž je skromnější v hovoru o svých schopnostech. Pak ti přijde nějaký trouba, co je rád, že alespoň odhadem ví jak funguje "while" a "if", všude vykřikuje jak všechno umí a vše se hladce doučí, tak ten pak, ne zřídka, dostane přednost. Je to smutné, ale je to tak.
Ono i některé ty požadavky na pracovní pozice jsou občas silně absurdní, takže to člověk musí brát s rezervou.

Nejsem žádný personalista, takže ti fakt neřeknu co komu stačí. Záleží na dost faktorech, třeba čím menší město tím mají většinou nižší nároky, protože se pracovníci shánějí mnohem hůře. Někdo klade důraz na tamto, jiný zase na tohle. Jediná cesta jak to zjistit je, že to prostě někde zkusíš a uvidíš zda tě přijmou nebo ne. Čím víc budeš mít referencí tím to vždycky vypadá líp. Takže pokud tě to baví, tak se nenech odradit a programuj si dle libosti.
Ale co jsem koukal, tak ten kód máš hezky psaný.
Název: Re:Programování
Přispěvatel: Modrovous 02. Květen 2013 - 18:14:23
Nesnáším amatéry .-). Sháním posledního člena do týmu někoho kdo umí s blenderem .. skype : Domicuc
Ahoj :-D.
Název: Re:Programování
Přispěvatel: matteas 02. Květen 2013 - 19:50:25
A k zakladom.. staci nieco taketo ako zaklad (program, co posledny tyzden robim)?
Kód: [Vybrat]
http://www.mediafire.com/view/?m987dbgq7f7h2ow
http://www.mediafire.com/view/?3oj8imhtg429lha
http://www.mediafire.com/view/?cwnkxka9ak2cah9

Přímo v C++/C# se nevyznám, ale dovolil bych si nějakou tu radu.

Ze všeho nejdůležitější, komentáře. Komentáře jsou někdy možná i důležitější než samotný kód. Samozřejmě, že když člověk píše něco sám, tak má přehled, co a jak funguje, ale při práci ve skupině ti druzí nemusí mít ponětí, co jednotlivé části vlastně dělají a jak to dohromady funguje, když to nebude patřičně vysvětleno v komentářích. A i když něco člověk píše sám, tak se k tomu může třeba za rok vrátit a to pak už pravděpodobně nebude mít tak jasno a komentáře mu v tu chvíli velice pomůžou. Správně by teda každá funkce, každá třída měla mít komentář a klidně i některé atributy, pokud jejich funkce nejde dobře vystihnout v jejich názvu.

Druhá věc. Přimlouval bych se u některých proměnných k jinému názvu. Člověku by mělo být po přečtení názvu proměnné zhruba jasno, co v ní bude. Lepší dlouhý, ale jasný název než na znaky úsporný ale nic moc neříkající. Platí tady to samé jako u těch komentářů.

Jinak struktura vypadá pěkně členěně a přehledně a jednotlivé funkce nejsou nijak extra dlouhé, což je taky dobře.
Název: Re:Programování
Přispěvatel: Valada06 02. Květen 2013 - 20:53:28
Vím, že se tu zabýváte hlavně hrami, ale chtěl bych vás požádat o pomoc, nenaprogramoval by mi prosím někdo takový ten boxík, ve kterém je znázorněno, kolik procent překladu je hotovo? Má to třeba Edna.cz, nebo Sunsub. Za případnou pomoc děkuji.  :)
Název: Re:Programování
Přispěvatel: Gurthfin 02. Květen 2013 - 22:39:18
Valada06: samotny boxik by namlo byt tazke urobit.. mas to len obrazok s alphou(napr. v prostriedku mas priehladny obdlznik o sirke 100) a pod nim len posuvas pozadie s inou farbou, alebo rozdelis pozadie na 2 casti a pravu das napr. ciernou a lavu bielou, pricom vzdy zmenis sirku casti.. Problem je skor ako to chces implementovat. Ak ti staci, ze vzdy musis vstupit do kodu a natvrdo nastavit pozadie (ciz uz sirku, alebo posuv), tak princip to hore ti staci, ale ak to chces mat naviazane trebars na databazu, tak to chce kodu trochu viac. Navyse vacsina stranok pouziva skor nejake systemy, kde su taketo funkcie preddefinovane, takze sa administratori velmi snazit nemusia a len na stranku hodia widget.

matteas: pre vlastnu potrebu komenty nepotrebujem, staci mi precitat si kod a som spat v obraze. Ale ak by som mal robit program pre niekoho ineho, tak urcite okomentujem, co sa da. Ako to ale myslis s menami premennych? Na tomto som sa snazil, aby som mal mena citatelne(aspon pre mna urcite su), tak napis nejaky navrh nech sa niecomu priucim.. ;D
Název: Re:Programování
Přispěvatel: Valada06 02. Květen 2013 - 22:49:46
Valada06: samotny boxik by namlo byt tazke urobit.. mas to len obrazok s alphou(napr. v prostriedku mas priehladny obdlznik o sirke 100) a pod nim len posuvas pozadie s inou farbou, alebo rozdelis pozadie na 2 casti a pravu das napr. ciernou a lavu bielou, pricom vzdy zmenis sirku casti.. Problem je skor ako to chces implementovat. Ak ti staci, ze vzdy musis vstupit do kodu a natvrdo nastavit pozadie (ciz uz sirku, alebo posuv), tak princip to hore ti staci, ale ak to chces mat naviazane trebars na databazu, tak to chce kodu trochu viac. Navyse vacsina stranok pouziva skor nejake systemy, kde su taketo funkcie preddefinovane, takze sa administratori velmi snazit nemusia a len na stranku hodia widget.

No, já bych si takový widget také rád našel, což o to.  ;D Problém je spíše v tom, že nevím, jak to nazvat, takže nemůžu logicky nic najít.  :)
Název: Re:Programování
Přispěvatel: FaraonX 02. Květen 2013 - 23:07:03
No, já bych si takový widget také rád našel, což o to.  ;D Problém je spíše v tom, že nevím, jak to nazvat, takže nemůžu logicky nic najít.  :)
Hledej pod heslem "progress bar".

Valada06: samotny boxik by namlo byt tazke urobit.. mas to len obrazok s alphou(napr. v prostriedku mas priehladny obdlznik o sirke 100) a pod nim len posuvas pozadie s inou farbou, alebo rozdelis pozadie na 2 casti a pravu das napr. ciernou a lavu bielou, pricom vzdy zmenis sirku casti...
Chudák malej on chtěl jen pomoc ne strašit. :-D

matteas: pre vlastnu potrebu komenty nepotrebujem, staci mi precitat si kod a som spat v obraze. Ale ak by som mal robit program pre niekoho ineho, tak urcite okomentujem, co sa da. Ako to ale myslis s menami premennych? ...
Až budeš psát dlouhý kódy, tak budeš za komentáře možná i rád, aby sis rozpomněl jak si danou věc zamýšlel. A rozhodně se vyhýbej stylu "okomentovat co se dá". Na "pm" ti hodím jak by se to asi mělo dělat, ať to tu moc nezaděláváme.
Co se týče názvů proměnných, těžko říct jestli to má cenu se v tom nějak šťourat. Hlavně aby to neměly být nesmyslný názvy a mělo by to víceméně vystihovat to co to má dělat. Ale každej druhej si to pojmenuje trošku jinak.  Tady je jeden moc hezký a vystihující obrázek, jak se hodnotí dobrý a špatný kód. :-)
(http://www.algoritmizace.cz/wp-content/uploads/2010/05/wtfm.jpg)
Název: Re:Programování
Přispěvatel: matteas 02. Květen 2013 - 23:21:42
matteas: pre vlastnu potrebu komenty nepotrebujem, staci mi precitat si kod a som spat v obraze. Ale ak by som mal robit program pre niekoho ineho, tak urcite okomentujem, co sa da. Ako to ale myslis s menami premennych? Na tomto som sa snazil, aby som mal mena citatelne(aspon pre mna urcite su), tak napis nejaky navrh nech sa niecomu priucim.. ;D

Ale jo, když na to koukám znova, tak je to většinou jasné. Jen někdy když máš třeba ty názvy jako name, path, mode a podobně, tak by určitě šly ještě obohatit. Například pictureName, playerName, picturePath, destinationPath, heuristicsMode, searchMode, atd. Prostě přidat do názvu té proměnné nějaké informace, co tě k ní napadnou. Sice člověku celkově přibyde několik úhozů na klávesnici navíc, ale celkově je to pak lépe a rychleji pochopitelné.
Název: Re:Programování
Přispěvatel: Gurthfin 03. Květen 2013 - 09:08:20
ted to uz nebudem prepisovat, ale urobil som aspon hlavickovy subor aj s komentami, tak sa pozrite
Kód: [Vybrat]
http://www.mediafire.com/view/?05j8gty9k8gvvl1(anglictinu si pre vsetkych svatych nevsimajte, nejako som zblbol a ked som sa uvedomil, jednu triedu som mal uz okomentovanu  ::) )

matteas: s menami si mal pravdu, teraz pri pisani komentov som si vsimol, ze v texte to naozaj vyzera blbo a lahko sa daju spliest mena premennych a normalny text
Název: Re:Programování
Přispěvatel: matteas 03. Květen 2013 - 13:43:16
Ještě k těm komentářům. Nevím, jak je to třeba u C++, ale je dobré držet se při psaní komentářů nějakého standardu, pokud existuje. Například v Javě si pak člověk může vygenerovat Javadoc s popisem všech tříd, jejich atributů, konstruktorů a metod, který se vytvoří právě z Javadoc komentářů, když člověk dodržuje správný styl. Jak tak koukám na ty komentáře v tom .h, tak bych si tipnul, že C++ bude mít něco podobného.
Název: Re:Programování
Přispěvatel: FaraonX 03. Květen 2013 - 16:13:11
ted to uz nebudem prepisovat, ale urobil som aspon hlavickovy subor aj s komentami, tak sa pozrite
Kód: [Vybrat]
http://www.mediafire.com/view/?05j8gty9k8gvvl1
Popravdě zkus to ještě trochu předělat. :-) Třeba řádky 24-32 jsou úplně naprd jen to znepřehledňují. U proměnných bohatě stačí hned vedle nich na řádek napsat  třeba"File name", "File path". Kde máš třeba napsaný co ti vrací funkce "Swap"? Řádek 51 "@param can be input from" no to je hezký, ale k čemu mi je tahle informace dobrá? Si klidně ten pointer může vytáhnout z ucha vysloužilého gestapáka. To je naprosto jedno. ;) Tam je důležité co by ti tam mělo přijít za věc? Znělka ze Šmoulů? Cesta k souboru? Chápeme se?
Jinak řečeno, dokumentace se nedělá stylem, něco tam napiš, hlavní je aby tam něco bylo. Naopak máš se snažit co nejkratším možným způsobem a co nejpřesněji vystihnout celou funkci nebo proměnnou.
Takže třeba budeš mít, co já vím:
Kód: [Vybrat]
/**
    * Funkce invertuje všechny barvy v obrázku
    * @param path Cesta k souboru
    * @param picture Pointer na obrázek
    * @return Ježky v kleci a plno errorů.
    */
Prostě stroze, přesně, výstižně.

Jak tak koukám na ty komentáře v tom .h, tak bych si tipnul, že C++ bude mít něco podobného.
Ani nemusíš moc tipovat, všechny alespoň trochu rozumné programovací jazyky mají nějaký program, na vygenerování dokumentace z komentářů,  k dispozici.
Název: Re:Programování
Přispěvatel: Valada06 03. Květen 2013 - 19:23:00
No, tak ten progress bar se mi moc nedaří, škoda.
Název: Re:Programování
Přispěvatel: Tigr 03. Květen 2013 - 19:30:48
Ani nemusíš moc tipovat, všechny alespoň trochu rozumné programovací jazyky mají nějaký program, na vygenerování dokumentace z komentářů,  k dispozici.
Dodám, že v případě C++ je takovým programem např. Doxygen.
Název: Re:Programování
Přispěvatel: Aurielle 03. Květen 2013 - 20:37:21
U PHP je nejlepší ApiGen (aneb phpDoc ani náhodou).
Název: Re:Programování
Přispěvatel: matteas 04. Květen 2013 - 00:31:07
Ani nemusíš moc tipovat, všechny alespoň trochu rozumné programovací jazyky mají nějaký program, na vygenerování dokumentace z komentářů,  k dispozici.

Jn, ale ne vždycky to funguje jak má. Když jsem zkoušel něco vygenerovat pro kód ve Scheme R5RS, tak se to nepovedlo. Ale věřím, že kdybych potřeboval a hledal, tak něco fungujícího najdu.

Jinak pěkný Javadoc pro Javu vygeneruje NetBeans, což by se i dalo od takového programu očekávat.
Název: Re:Programování
Přispěvatel: casino12 08. Květen 2013 - 18:46:43
Tak niečo z lahšieho súdka snad niekto pomôže :).

Mám tu starší program ktorý ma z zadanáho čísla nájsť všetký prvočísla
Citace
#include <iostream>
using namespace std;
 
 int main(int argc, char *argv[])
{
    int pocet, i = 1;
 
    cout << "Do kterého prvočísla chceš načítat prvočísla? ";
    cin >> pocet;
    while (i <= pocet)
    {
        bool prvocislo = true;
        for (int j = 2; j*j <= i; j++)
        {
            if (i % j == 0)
            {
                prvocislo = false;
                break;   
            }
        }   
        if (prvocislo) cout << i << " ";
        i++;
    }   
    system("PAUSE");
    return EXIT_SUCCESS;
}

A potreboval by som spraviť program ktorý vygeneruje 20 čísiel a stých vybere provčísla. Dostal som sa max k niečomu takémuto (myslím že toto je menej funkčna verzia ku ktorej som sa dopracoval ale ani tie ostatné neboli onič lepšie).
Citace
#include <cctype>
#include<ctime>
using namespace std;

const int pocet = 10;

void generuj (int [], int);
int prvocisl (int [], int);

int main()
{
   
    int pole [pocet];
    generuj (pole, pocet);
    prvocisl (pole, pocet);
    getchar();
    return 0;
}
   
void  generuj (int pole[], int pocet)
{
      cout << "Generovane cisla: ";
      for (int i = 0; i < 21; i++)
      {
          pole = rand()%500 - 1;
          cout << pole << " , ";
          }
}
int  prvocisl (int pole[], int pocet)
{
     int i = 0;
     while (i <= pole )
    {
        bool prvocislo = true;
        for (int j = 2; j*j <= i; j++)
        {
            if (i % j == 0)
            {
                prvocislo = false;
                break;   
            }
        }   
        if (prvocislo) cout << i << " ";
        i++;
    }
 
     
}

Vedel by mi niekto a vysvetliť čo môže byť zle (ako a prečo to spraviť tak či onak)?
Diky moc.
Název: Re:Programování
Přispěvatel: matteas 08. Květen 2013 - 22:59:17
While cyklus ve funkci prvocisl je spatne. Promenna pole je ukazatel na pole intu. Mela by tam misto toho byt ta promenna pocet, ktera udava pocet cisel, coz by melo byt 20 jestli dobre chapu. Bude to tedy cyklus, ktery probehne 20x.
Jak tak koukam na ten puvodni kod, tak to je hodne naivni zpusob jak vygenerovat list prvocisel. Lepsi je udelat si eratostenovo sito do nejvyssiho cisla, ktere clovek chce, a pak by slo toho i vyuzit a jen porovnavat, jestli ty cisla vygenerovana jsou prvocisla nebo ne.

anebo neco stylu

Kód: [Vybrat]
int isPrime(int number) {

    int i = 2;
    if (number % i == 0) return 0;
    for (i = 3; i*i <= number; i = i + 2) {
        if (number % i == 0) return 0;
    }
    return 1;

}

pak staci kazde cislo v poli vygenerovanych cisel otestovat touhle funkci, a kdyz vrati true, tak si to cislo zas treba ulozit do noveho pole
Název: Re:Programování
Přispěvatel: FaraonX 09. Květen 2013 - 01:16:33
Popravdě se mi nechce věřit, že to vůbec jde skompilovat. :-D

Sice jsem línej nad tím moc přemýšlet, ale napadlo mě asi to co mattease. Jen se mu někam zatoulalo ošetření, kdyby mu tam přišla čistá dvojka nebo jednička, jestli mé unavené oko dobře vidí.
Název: Re:Programování
Přispěvatel: Gurthfin 09. Květen 2013 - 05:32:52
1. do programov sa vacsinou nepise diakritikou, vyzera to zle v cmd..
2. int main(int argc, char *argv[]) je zbytocne staci int main( )
 
Citace
const int pocet = 10;
int pole [pocet];
...
      for (int i = 0; i < 21; i++)
      {
          pole = rand()%500 - 1;
          cout << pole << " , ";
          }
a. ten for ti vygeneruje 21 prvkov, nie 20 (pocita sa od 0)
b. do pola o 10 prvkoch nevrazis 21 prvkov (alebo by to nebolo priliz bezpecne)
c. taktiez nemozes napisat   pole = rand()%500 - 1; ale skor pole[ i ] = rand()%500 - 1; (alebo *( pole + i ) = rand()%500 - 1; ) a nie - 1 ale + 1; tiez cout << pole[ i ]
d. na konci funkcie pouzi endl (cout << endl;) Skoci ti to vo vypise na novy riadok. Takto by sa ti vypisali vsetky cisla za sebou a bol by v tom zmatok.


3. Okopirovanie stareho programu ti nepomoze, lebo ten robi nieco ine ako mas zadane (presnejsie generuje prvocisla, ty ich ale mas hladat). Navyse pracujes s polom, takze nemozes urobit zapis:
Citace
     while (i <= pole )
ale skor i < pocet (lebo premenna pocet vyjadruje velkost pola)
Název: Re:Programování
Přispěvatel: matteas 09. Květen 2013 - 11:47:44
Popravdě se mi nechce věřit, že to vůbec jde skompilovat. :-D

Sice jsem línej nad tím moc přemýšlet, ale napadlo mě asi to co mattease. Jen se mu někam zatoulalo ošetření, kdyby mu tam přišla čistá dvojka nebo jednička, jestli mé unavené oko dobře vidí.

Máš pravdu. Na speciální případ pro 1 a 2 jsem zapomněl.
Název: Re:Programování
Přispěvatel: Gurthfin 14. Květen 2013 - 20:27:33
poradi niekto ako napisat prikaz pre Trigger v SQL databaze(phpMyAdmin)? Mam 3 columy - isborrow, date, return. Date je datum pozicania knihy a do return sa ma zapisat pocet dni od pozicania (trigger sa ma spustat pri Update isborrow=3). Mozem to riesit pomocou PHP, ale ak je sposob, aby sa vyhnut zbytocnemu spracovavanie a zaroven sa naucit nieco uzitocne do buducnosti, tak preco sa nespytat..
Název: Re:Programování
Přispěvatel: matteas 14. Květen 2013 - 21:49:31
poradi niekto ako napisat prikaz pre Trigger v SQL databaze(phpMyAdmin)? Mam 3 columy - isborrow, date, return. Date je datum pozicania knihy a do return sa ma zapisat pocet dni od pozicania (trigger sa ma spustat pri Update isborrow=3). Mozem to riesit pomocou PHP, ale ak je sposob, aby sa vyhnut zbytocnemu spracovavanie a zaroven sa naucit nieco uzitocne do buducnosti, tak preco sa nespytat..

Přesně jsem nepochopil, co myslíš tím update isborrow=3, ale asi chceš něco takovéhohle:

Kód: [Vybrat]
CREATE TRIGGER name
    AFTER UPDATE ON table
    FOR EACH ROW
    BEGIN
    SET NEW.return = DATEDIFF(day, GETDATE(), OLD.date)
    END;

Pokud jsi myslel, že se má ten počet dní zapsat pouze, pokud je v isborrow hodnota 3, pak asi:

Kód: [Vybrat]
CREATE TRIGGER name
    AFTER UPDATE ON table
    FOR EACH ROW
    BEGIN
    IF OLD.isborrow == 3 THEN
        SET NEW.return = DATEDIFF(day, GETDATE(), OLD.date)
    END IF
    END;

Možná to bude chtít vyladit, ale nějak takhle by to mělo asi vypadat.
Název: Re:Programování
Přispěvatel: Gurthfin 17. Květen 2013 - 20:09:50
matteas: hlasi mi to chybu.. skusal som si pozriet manual, ale rozbolela ma z neho hlava..xD

teraz som narazil na iny problem:
Kód: [Vybrat]
if ( $select == "accept" )
{
$query = mysql_query("UPDATE borrows SET isborrow='1' WHERE userid = '$userid' AND bookid = '$bookid' AND isborrow = '2'");
if (!mysql_query($query))
{
mysql_close();
header( 'Location: ./index.php?stranka=error&error=er021' );
}
$query = mysql_query("UPDATE library SET borrow = '1' WHERE bookid = '$bookid' AND borrow = '2'");
if (!mysql_query($query))
{
mysql_close();
header( 'Location: ./index.php?stranka=error&error=er022' );
}
mysql_close();
header( 'Location: ./index.php?stranka=error&error=succes_borrowed' );
}

hlasi mi to spravne vykonanie (succes_borrowed) ale druhy UPDATE sa nevykona (borrow ostava 2) a neviem preco... (prvy je vykonany tak ako ma)
Název: Re:Programování
Přispěvatel: matteas 17. Květen 2013 - 21:44:07
Ja rikal, ze to bude chtit vyladit. Co to hlasi?

Ad druhy problem:
Zkontroluj, jestli ti sedi typy. Jestli treba nehledas char v integer sloupci. To se mi taky uz stalo.
Mimochodem, je volani tech dotazu opravdu dobre? S PHP nedelam, ale troufam si tvrdit, ze mysql_query uskutecni dotaz na databazi, ktery tomu das jako parametr, a v pripade update, insert, ci delete ti vrati true nebo false. Pak bys tedy v te podmince mel : if(!mysql_query(true/false)) , pokud tedy PHP nijak nevybocuje z norem. Takze bych se primluvil spis za if (!query).
Název: Re:Programování
Přispěvatel: Gurthfin 17. Květen 2013 - 21:54:41
hlasi to:
Kód: [Vybrat]
Pri zpracovaní požadavky došlo k niekoľkým chybám:

    Nasledujúci dopyt zlyhal: "CREATE TRIGGER `setReturn` AFTER UPDATE ON `borrows` FOR EACH ROW BEGIN IF OLD.isborrow == 3 THEN SET NEW.return = DATEDIFF(day, GETDATE(), OLD.date) END IF END; "

    MySQL hlási: #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '== 3 THEN SET NEW.return = DATEDIFF(day, GETDATE(), OLD.date) END IF END' at line 2

s tim if si mal tusim pravdu, ted som dal oba prikazy za sebou a isli. Chyba bola asi v predchadzajucej funkcii v ktorej som mal
Kód: [Vybrat]
$sql = "INSERT INTO borrows ( isborrow, userid, bookid, date ) VALUES ( 2,'$userid','$bookid', CURDATE())";
if (!mysql_query($sql))
tak som if instinktivne okopiroval. :-[


este mi poradte, ako sa robi take zavesenie na net, lebo zatial ficim doma na Wampe. Staci najst nejaky free hosting a tam len nakopcit zlozky www(tam mam .php subory) a mysql? Alebo sa mam uz teraz radsej chytit za hlavu a otrieskat si ju o stenu.. ;D
Název: Re:Programování
Přispěvatel: matteas 18. Květen 2013 - 13:29:50
No jasne. V SQL je operator rovnosti jednoduche rovna se, ne dvojite. Pak si jeste nejsem jisty, jestli v MySQL musi byt to END IF na konci podminky. Musel jsem ted delat semestralku v PostgreSQL, kde to takhle je.

Dobre je, kdyz hosting ma nejake podpurne rozhrani pro operaci s databazemi. Nemam ale zkusenosti s tim, jak na tom jsou v tomhle ohledu free hostingy.
Název: Re:Programování
Přispěvatel: Gurthfin 18. Květen 2013 - 23:25:51
asi by som nemal dal meno stlpca v db "return" ze?
tento prikaz mi vyhadzuje chybu
Kód: [Vybrat]
$query = mysql_query( "UPDATE borrows SET return = '10' WHERE bla bla blazatial co
Kód: [Vybrat]
$query = mysql_query( "UPDATE borrows SET warnings = '10' WHERE bla bla blafunguje.

Teraz ma tak napada, ze aj preto nemusi ist ten trigger...
Název: Re:Programování
Přispěvatel: matteas 19. Květen 2013 - 00:27:01
Je mozne, ze return je keyword. Pokud to druhe funguje a v databazi je to ulozene jako stejny typ, tak by to tomu nasvedcovalo. Ale ta error hlaska o kousek vys upozornuje na to ==, takze to je potreba kazdopadne zmenit na =.
Název: Re:Programování
Přispěvatel: Akimi 19. Květen 2013 - 21:24:07
Zabal "return" do `` (Alt+7). Tím by se to mělo escapovat.
Název: Re:Programování
Přispěvatel: Skogen 23. Květen 2013 - 12:16:14
http://en.cppreference.com/w/cpp/language/escape

Co říká Benda, by mělo fungovat.

-------------

Já bych měl taky dotaz. Udělal jsem si v PHP jednoduchou ochranu proti opakovanému přístupu pomocí kontroly IP, ajpinu ukládám do souboru, kde ve vzniklém řetězci ajpinu přistupujícího porovnávám pomocí regulárního výrazu. Pokud žádná část řetězce neodpovídá, přidá se IP na konec.

Zajímalo by mě, jestli to má nějaké omezení co do délky záznamu. Tedy, jak dlouhý řetězec vůbec můžu v souboru vytvořit a jak dlouhý řetězec je možné a účelné regulárním výrazem porovnávat.
Název: Re:Programování
Přispěvatel: Aurielle 23. Květen 2013 - 13:07:53
A ten regulár používáš přesně proč?
Název: Re:Programování
Přispěvatel: Skogen 23. Květen 2013 - 13:38:37
A ten regulár používáš přesně proč?

Aby mi vyhledal shodu proměnné (s přiřazenou IP návštěvníka) v uloženém řetězci v souboru (ip/ip/ip/ip/ip/) a pokud nenajde, připsal aktuální IP do souboru - za podmínky, že proběhla definovaná funkce.

Nemám ale zkušenost s tím, jak by to probíhalo v objemnějším souboru - obsah se načítá to proměnné, takže to asi bude žrout času.

EDIT: Tak už jsem si to odzkoušel. Zdá se to v pohodě, po určitém počtu znaků to nechám přepsat a pojede se od začátku (což zas až tolik nevadí)...
Název: Re:Programování
Přispěvatel: Aurielle 23. Květen 2013 - 20:36:04
Nevidím jediný důvod, proč regulár použít.
Kód: [Vybrat]
if (strpos(file_get_contents('ip.log'), $ip) === FALSE)
{
    file_put_contents('ip.log', ',' . $ip, FILE_APPEND);
}
Název: Re:Programování
Přispěvatel: matteas 23. Květen 2013 - 20:42:50
Dovolím si přidat, proč nepoužívat regexy tam, kde to není potřeba: http://lzone.de/articles/php-string-search.htm
Název: Re:Programování
Přispěvatel: Skogen 23. Květen 2013 - 21:00:55
Taky už nevidím důvod, proč používat reg. výraz. Tu funkci jsem neznal.
Název: Re:Programování
Přispěvatel: Gurthfin 24. Květen 2013 - 17:57:25
da sa nejako ofajat switch v php?

potrebujem nieco taketo:
switch ($action){
   case "history": kod;
                         break;
   case             : kod;        -Ak nie je history, tak sa vzdy vykona (bez ohladu na obsah $action)
   case "pozicane": kod;
                           break;
   case "vratene": kod;
                         break; 
}


pred switch mam echo html kod na vytvorenie formulara a vo switch sa mi tam vklada select tlacitko na rozne akcie a po switchi sa cely formular ukoncuje. Problem je, ze volba history nepotrebuje ziaden formular, pretoze nema ziadnu akciu. Preto by som dal rad zaciatok formulara do case za case"history" lebo obsahuje break, cim ukonci switch. Ak by bol formular za a bez breaku, switch by pokracoval dalej a urobil by svoju funkciu. Problem je, ci sa da urobit case, ktory sa vzdy vykona?

A este.. nema niekto nejaky univerzalny obrazok na temu knihomol, ktory by som mohol hodit ako obrazok pri zobrazeni profilu? Najlepsie nieco na sposob starca v kniznici, alebo cloveka za kopu knih, ktoremu je vidiet len hlava?
Název: Re:Programování
Přispěvatel: matteas 24. Květen 2013 - 19:01:22
Jestli to dobře chápu, tak máš nějaký formulář, který nemá smysl pro case history, správně? Tak co to provést nějak takhle:

Kód: [Vybrat]

if (action equals "history") {
    do something
} else {
    make form
    switch (action) {
        case "borrow":  do something
        case "return":  do something
}
Název: Re:Programování
Přispěvatel: matteas 30. Květen 2013 - 23:40:00
Napsal jsem si krátký kód na překlad textu z angličtiny do jazyku Ente Isla (a zpět) používaném v Hataraku Maou-sama. Vysvětlení pro ty, kteří buď nekoukají na Hataraku Maou-sama nebo nevědí, jak jazyk, kterým v tomto anime mluví, funguje. Jazyk Ente Isla je angličtina s abecedou s opačným pořadím souhlásek. B -> Z, C -> Y, D -> X, F -> W,...
Kód je napsaný v Haskellu a zabere pouhých několik řádek, neboť funkcionální programování si s něčím jako je nahrazení prvků v seznamu poradí jednoduše a elegantně. Tímto se snažím dělat i reklamu funkcionálnímu programování w

Kód: [Vybrat]

http://pastebin.com/Y7nDpKyv
http://ideone.com/Noxqoo
Název: Re:Programování
Přispěvatel: Benda_11 31. Květen 2013 - 13:39:00
Nemá někdo zkušenosti s tvorbou MMO? Potřeboval bych nějak zrealizovat funkčnost serveru pro online hraní hry.

Můj námět je asi takovýhle jak by mohl fungovat server pro předávání informací:

Spustím si privátní IRC se zahlesovaným kanálem. Při vstoupení do kanálu, budu kontrolovat názem klienta a číslo verze hry. Projistotu budu klientovi posílat kontrolní kód (náhodně vygenerovaný), na který podle určitých pravidel musí odpovědět, jinak dostane kick. Takže obyčejný uživatel s obyčejným klientem se tam nepřihlásí. Na straně serveru bude bot, který bude také přihlášen na irc kanál a bude mít op práva. Bude zároveň sloužit pro komunikaci s mysql databází. Skrze něj by mohli probíhat jak autentizace tak i registrace.

Proč jsem zorvna vybral IRC jako komunikační kanál? Tak jako tak potřebuju rozhraní, kde by si všichni klienti navzájem vyměňovali online informace, kde se nachází a co dělají. A jelikož tyto informace se musí (nebo aspoň je to můj názor) posílat v textové podobě, tak IRC kanál je dobrá volba. Odpadla by starost tvorby vlastního komunikačního portálu na bázi tcp.

Jen zatím nevím, jaké to bude mít nároky na server. Jelikož když nad tím zauvažuju, tak na straně serveru budu mít tři aplikace pro běh hry. MySQL, IRC a Bota pro komunikaci s IRC a MySQL. Kdybych teoreticky vzato vyvinul vlastní rozhraní, tak mě odpadně IRC jako takové a zůstalo by mě MySQL a nějaký klient pro spojení na bázi TCP a komunikaci s MySQL. Ale když nad tím zapřemýšlím do důsledku, tak vlastně bot by byl jen plugin do IRC, takže v celkovém důsledku kdybych tvořil vlastní komunikační rozhraní, tak bych nejspíše musel udělat nějaké komplexní řešení, které defakto funguje na bázi IRC.

Ale tohle vše je jen můj čistý odhad, jak by to mohlo teoreticky fungovat. Zatím mám plány jen v hlavě a chtěl bych si potvrdit a nebo vyvrátit, jestli tato varianta je reálná nebo ne. Nemáte s tímto někdo nějaké zkušenosti? Jak by jste to řešili vy?

Předem upozorňuju, že moje programovací schopnosti jsou omezeny na C#. Takže jako framework pro tvorbu hry využiju opensource Monogame (rádoby odnož XNA). Zkušenosti s tímto rozhraním už mám. Zatím jsem dělal jen drobné blbůstky, ale podniknout něco většího je jen o času. Na linuxovém serveru (debian) už jsem si rozběhal podporu C# v consolovém rozhraní a běhá docela obstojně. Teď jen vytvořit klienta na straně uživatele a bota na straně serveru.
Název: Re:Programování
Přispěvatel: FaraonX 31. Květen 2013 - 18:54:33
Abych řekl pravdu, tak jsem dělal pouze kravinku přes TCP a ještě něco přes UDP, takže ti neporadím, ale zvědavost mi nedá nepoložit pár stupidních otázek.

To by měla být čistě jen textová hra? Nebo se tam dá dělat i něco složitějšího?
A sice ti asi IRC ulehčí dost práce, ale kdo ho dnes ještě vůbec využívá nebo ho vůbec kdy využívat začal? Dnes jsou lidé zhýčkaný hraním oddechovek pomocí Flashe nebo zatím pomaličku rozvíjejících se her vytvořených pomocí HTML 5 (Canvas, WebGL). Tedy se nabízí otázka, co navíc by jim nainstalování IRC přineslo? Na druhou stranu zase nemusím být cílová skupina, takže na to můžu koukat úplně zcestně.
Název: Re:Programování
Přispěvatel: aw3147 31. Květen 2013 - 19:46:01
pokud jsem to spravne pochopil tak irc je vyuzivan jenom jako prostrednik pro komunikaci (neco jako "Hrac1: pohyb_na(4;3), utok_na(Hrac2)"), proste jako komunikacni prostredi mezi klientem a serverem, ne ze by se hralo primo z IRC klienta...
Název: Re:Programování
Přispěvatel: FaraonX 31. Květen 2013 - 20:11:23
pokud jsem to spravne pochopil tak irc je vyuzivan jenom jako prostrednik pro komunikaci (neco jako "Hrac1: pohyb_na(4;3), utok_na(Hrac2)"), proste jako komunikacni prostredi mezi klientem a serverem, ne ze by se hralo primo z IRC klienta...
No sice mi to furt není jasný, ale netřeba si zbytečně zatěžovat mysl. Pokud to jde nějak i bez instalace IRC, tak mi to jako odpověď na druhou otázku bohatě stačí.

A teď ještě tu první otázku. :-) Docela by mě zajímalo jak by se to přesně hrálo.
Název: Re:Programování
Přispěvatel: Benda_11 01. Červen 2013 - 14:15:56
Představ si 2D plošinovku, třeba Herousy, a chtěl bych na to nasadit MMO, tak aby vznikla MMORPG. Kde na straně klienta (hráče) bude exe soubor, který se spustí a buď pomocí šipek a nebo myši bude ovládat 2D grafickou hru. Samozřejmě aby mohlo fungovat MMO, tak musíš mít server, ke kterému se klient připojí a tam bude vysílat požadavky HráčID jdi na pozici x,y z pozice a,b. A mě jde o to jak udělat komunikační server, protože jsem četl, že to musí být na udp, je rychlý, ale ztrácí se data a člověk potřebuje důlmyslný algoritmus, který dokáže předpovídat pohyby, atp., a nebo na tcp, kde může docházet k lagováním. A může se člověk hádat jak chce, ale některé MMO jsou postavené na UPD a některé na TCP a nikdo v tom nemá jasno, co je lepší. A IRC je jen prostředek, který by sloužil pro onu výměnü dat.l
Název: Re:Programování
Přispěvatel: Gurthfin 01. Červen 2013 - 19:12:37
o tomto neviem skoro nic, len moj uhol pohladu..
Podla mna, ak je spracovanie dat na strane servera, tak pouzit udp, ale na strane klienta, tak tcp. Ak ti server zatazuju vypocty, je lepsie pouzit rychlu komunikaciu, ak len posielas data z databazy, tak dobre navrhnuta tcp komunikacia nebude mat problem. Herny system je podla mna v tomto dolezity.. ak urobis system, ktory sa nemusi permanentne pripajat na server kvoli informaciam, pouzi tcp. (napriklad mapa rozdelena na oblasti. Ak sa hrac pohybuje v oblasti, nemusi serveru hlasit poziciu. Bude len upozorneni na prichod/odchod ineho hraca. Informacia o pozicii sa zmeni len ak prejde do inej oblasti.)

Inak, nejde mi do hlavy strata informacii, moze mi to niekto vysvetlit?
Název: Re:Programování
Přispěvatel: matteas 01. Červen 2013 - 19:51:08
UDP nepoužívá žádný handshaking, má kratší hlavičku než TCP a nemáš jistotu, že se ti packet neztratí při přenosu nebo že některý packet nepředběhne jiný packet. Cesta z jednoho místa na druhé je trnitá a bez kontroly prostě nemáš záruku, že to, co pošleš, druhá strana přijme. Pro zajištění spolehlivého přenosu bez ztrát a ve správném pořadí se pak dají použít různé protokoly, například Selective Repeat ARQ. To ti zajistí, že všechny packety dojdou k příjemci a také se seřadí ve správném pořadí. Tady je pěkné demo, na kterém je vidět, jak to funguje http://media.pearsoncmg.com/aw/aw_kurose_network_4/applets/SR/index.html
Název: Re:Programování
Přispěvatel: FaraonX 01. Červen 2013 - 22:03:21
Představ si 2D plošinovku, třeba Herousy, a chtěl bych na to nasadit MMO, tak aby vznikla MMORPG. Kde na straně klienta (hráče) bude exe soubor, který se spustí a buď pomocí šipek a nebo myši bude ovládat 2D grafickou hru. Samozřejmě aby mohlo fungovat MMO, tak musíš mít server, ke kterému se klient připojí a tam bude vysílat požadavky HráčID jdi na pozici x,y z pozice a,b. A mě jde o to jak udělat komunikační server, protože jsem četl, že to musí být na udp, je rychlý, ale ztrácí se data a člověk potřebuje důlmyslný algoritmus, který dokáže předpovídat pohyby, atp., a nebo na tcp, kde může docházet k lagováním. A může se člověk hádat jak chce, ale některé MMO jsou postavené na UPD a některé na TCP a nikdo v tom nemá jasno, co je lepší. A IRC je jen prostředek, který by sloužil pro onu výměnü dat.l
No ono jde asi nejspíš o to, jaký druh hry zamýšlíš dělat. Pokud potřebuješ získat data za každou cenu a tvůj server je stabilní tedy nehrozí skoro furt nějaký time outy(což by ti hráče kicklo pryč) atd. tak je vhodnější ten TCP. Pokud ti jde ale o nějakou real-time hru(např. Counter-strike na tom tuším jede), tak je rozhodně lepší UDP, protože tam ti jde většinou o čas, takže nějaký ten ztracený packet je z herního hlediska v pohodě. Bohužel tam zase musíš oproti TCP ošetřit nějaký kraviny jako je bezpečnost, řazení přijatých dat a ACK, jestli si správně pamatuji. Ale to stejně asi znáš. Jsem tuším někde zahlídl, že Aki by měla být snad přes UDP napíchlá na Anidb.

No ale kdyby to byli Anime Herousy, tak to bych si i zahrál. :-D A to chceš dělat tu hru sám? Když si člověk vezme naprogramování samotný funkcionality, nějakou tu grafiku, možná zvuky, nějaké drobné dialogy třeba u NPC postav, informační popisky věcí nebo co já vím co všechno do her ještě jde dát, tak bych řekl že toho pak budeš mít dost nad hlavu.
Název: Re:Programování
Přispěvatel: Benda_11 02. Červen 2013 - 00:38:28
Tak třeba wovko běží na tcp a line age běží na upd, stejné hry, ale jinak řešené. A když si vezmu, že já vcelku potřebuju si předávat pozice na mapě a pak souboj bude stylem tahovky, tak tcp protokol by to měl utáhnout.

Co se týče mé hry, tak já mám čistě za úkol programatorskou stránku věci, hudbu a grafiku dělá jinej člověk a ten kdo píše hlavní přběh nás všechny pojí dohromady, není divu, když dělá manažera v jedné firmě na postu IT.

Princip hry by měl být na něco jako jsou pokémoni po stránce hratelnosti, z herousů styl akce, z ultimy styl tvorby map a příběhů na daleko vyšší úrovni bez znalosti scriptování. A grafika zatím nevím nemám jěstě podklady, ale mělo by se to přiblízǐt anime stylu.
Název: Re:Programování
Přispěvatel: Gurthfin 02. Červen 2013 - 01:16:00
Tak uz konecne viem, preco som line age po hodine vymazal, lebo mi postava nedokazala ani zliezt zo schodov.. ;D ;D

Na tahovku daj tcp. Reakcna doba cloveka posuvajuca jednotku je radovo v sekundach, na to ma databaza a protokol dost casu reagovat, ci uz budu vypocty na strane klienta alebo serveru (samozrejme, netreba to prehanat).

EDIT: neviem, aku graficku podobu zamyslate, ale ak nieco na styl rpg makerov, tak mam kopec charakterov, efektov a priseriek povytahovanych z hier(aj take tie obrazky, co sa pouzivaju na animaciu). V pripade zaujmu to uploadujem.
Název: Re:Programování
Přispěvatel: Gurthfin 11. Červen 2013 - 12:42:09
ako opravim, ked mi stranka pise: Access denied for user 'uid67106'@'195.210.29.10' (using password: NO)?
co vsetko musim nakonfigurovat, aby som sa pripojil na databazu na serveri? Zatial som vsetko riesil len vo wampe a localhoste. Teraz mi clovek, co riesi stranku obce napisal, ze stranka je na serveri http://izahori.sk/ a databaza na http://db**.websupport.sk/ a ked spustim moju stranku, tak mi to vypise hlasku hore.
Název: Re:Programování
Přispěvatel: FaraonX 11. Červen 2013 - 16:02:03
ako opravim, ked mi stranka pise: Access denied for user 'uid67106'@'195.210.29.10' (using password: NO)?
co vsetko musim nakonfigurovat, aby som sa pripojil na databazu na serveri? Zatial som vsetko riesil len vo wampe a localhoste. Teraz mi clovek, co riesi stranku obce napisal, ze stranka je na serveri http://izahori.sk/ a databaza na http://db**.websupport.sk/ a ked spustim moju stranku, tak mi to vypise hlasku hore.
Pro správnou funkčnost bys měl mít vyplněno: hostname, username, password, databaseName a pokud to ženeš přes PDO, tak ještě "dbdriver", což u tebe bude určo "mysql". Všechny přihlašovací údaje k správnému připojení k databázi má zaručeně správce účtu, takže pokud jím ty nejsi a ten člověk tomu moc nerozumí, tak mu řekni ať ti udělá screenshot dané stránky a ty si to už přebereš. :-)
Název: Re:Programování
Přispěvatel: Gurthfin 12. Červen 2013 - 16:42:37
FaraonX: diky, screen naozaj pomohol a uz to ide..xD

bohuzial nemam pristup k suborom stranky, takze to musim riesit cez typka, tak by som to chcel nejako ofajat. Chcel som urobit nieco taketo
Kód: [Vybrat]
<?php
if(isset( $_GET["page"] ) && substr_count($_GET["page"], "/") < 1)
$page = $_GET["page"];

$open = $page . ".php";

echo $open;

$file=fopen( $open,"r");


while (!feof($file))
{
echo fgetc($file);
}

fclose($file);
?>
aby som videl subor, lenze mi to nefunguje pri .php suboroch (.txt mi to zobrazi). Poradi mi s tim niekto? Popripade, ak by som potreboval prepisat cely subor, ako by som to mal urobit.. (len ma este napada, ci nebyva taka funkcia zablokovana)
Název: Re:Programování
Přispěvatel: FaraonX 12. Červen 2013 - 18:54:28
Mi přijde trošku zvláštní, že ti nevygeneruje individuální přihlašovací údaje na připojení se přes FTP. No ale budiž, zkusíme pracovat s tím co je. Abych řekl pravdu, tohle jsem zatím nikdy nepotřeboval dělat. :-) Takže... asi předpokládám, že pokud dáš načíst seznam souborů z dané složky, tak ti to soubory s .php koncovkou najde všechny, že? Takže bych si asi od oka tipl, že ten kód se vloží a vykoná. Zkus odstranit speciální znaky a uvidíš co ti to napíše.
Kdyby furt nic, tak bych začal otročit a zkusil po otevření souboru, zda se do proměnné opravdu něco uložilo, tedy asi to nacpat do "empty" a kdyby tam něco bylo, ale nezobrazilo se to, tak bys mohl ještě data uložit do nějakého pokusného .txt souboru a uvidíš co na tebe vybafne.

Kdyby si ani tímhle nic nového nezjistil, tak můžeš zkusit prolistovat kód Wordpressu, protože jak asi víš, tam po přihlášení, jako admin, můžeš libovolně editovat .php šablony.
Název: Re:Programování
Přispěvatel: Aurielle 12. Červen 2013 - 19:15:00
Zkusil bych funkci highlight_file() + testovat existenci toho souboru. A snad nemusím zdůrazňovat, že je to obrovská díra.
Název: Re:Programování
Přispěvatel: Gurthfin 12. Červen 2013 - 21:02:41
dobre, ziskal som pristup..

ale zase sa objavila dalsia chyba - blbne mi
Kód: [Vybrat]
mysql_real_escape_string( );mam napriklad
Kód: [Vybrat]
$url = mysql_real_escape_string( $url );potial mi echo $url ukazuje dobre, ale za timto prikazom uz nic. Takze ho musim odstavit, potom mi script ide v pohode. Zvlastne je, ze ked sa pripajam z domu, kde mam vsetko na lokale, tak to ide, ale ak sa pripojim zo stranky na webe, tak uz nie.
Název: Re:Programování
Přispěvatel: FaraonX 12. Červen 2013 - 22:45:04
ale zase sa objavila dalsia chyba - blbne mi
Kód: [Vybrat]
mysql_real_escape_string( );mam napriklad
Kód: [Vybrat]
$url = mysql_real_escape_string( $url );potial mi echo $url ukazuje dobre, ale za timto prikazom uz nic. Takze ho musim odstavit, potom mi script ide v pohode. Zvlastne je, ze ked sa pripajam z domu, kde mam vsetko na lokale, tak to ide, ale ak sa pripojim zo stranky na webe, tak uz nie.
Za prvé, dávej si bacha, tohle i další "mysql_..." příkazy budou od PHP 5.5 zakázaný. Místo toho máš nově "mysqli" nebo mnohem praktičtější "PDO" nebo si můžeš natáhnout jiný externí ORM nástroj.
Za druhé, kdybys využíval nějaký Framework, tak tohle ani nemusíš řešit. :-)

Vzhledem k tomu, že na serveru bude mít majitel zatím určitě max. PHP 5.4, tak je to vážně záludná otázka, protože tam není co zkazit. Napadá mě jedině, že bys tohle zkoušel dělat ještě předtím než se připojíš k databázi. To by ti pak hodilo "False". Ale třeba někoho napadne něco chytřejšího.
Název: Re:Programování
Přispěvatel: Gurthfin 13. Červen 2013 - 01:57:26
tusim ti honim karmu (nechces byt na temnej strane len tak nahodou..?)
mal si pravdu, volal som to pred pripojenim na databazu. Na localhoste mi to fungovalo a este aj funguje (teraz uz nepouzivam db na locale, ale tu na serveri), tak som to nebral ako chybu.

a este som nasiel jednu chybu, tusim a dufam, ze uz poslednu - nejde mi header( ); napr.
Kód: [Vybrat]
header( 'Location: ./index.php?stranka=error&error=er014' ); skratka mi tam neskoci.
Název: Re:Programování
Přispěvatel: FaraonX 13. Červen 2013 - 03:33:25
tusim ti honim karmu (nechces byt na temnej strane len tak nahodou..?)
mal si pravdu, volal som to pred pripojenim na databazu. Na localhoste mi to fungovalo a este aj funguje (teraz uz nepouzivam db na locale, ale tu na serveri), tak som to nebral ako chybu.

a este som nasiel jednu chybu, tusim a dufam, ze uz poslednu - nejde mi header( ); napr.
Kód: [Vybrat]
header( 'Location: ./index.php?stranka=error&error=er014' ); skratka mi tam neskoci.
Temná strana je mocná, já to pak nějak doženu. :-)

Myslíš jako, že ti nefachá redirect v http hlavičce? Pokud jo a máš to takhle zapsaný, tak problém je více než zřejmý. Zde musí být cesta absolutní, nejde to dělat relativně jako "hyperlink". Tedy místo tečky na začátku odkazu tam nasoukej např.
Kód: [Vybrat]
http://www.example.czA já se mohu jít v klidu dokoukat, jestli Boston udrží vítězství v prvním finálovém zápase. :-D
Název: Re:Programování
Přispěvatel: Benda_11 13. Červen 2013 - 11:45:21
Jen dodám vsuvku, za každý header musí přijít příkat exit protože jinak se zpracuje i ta další část scriptu, která je za headerem, což pak může vykazovat chyby, zbytečné spojení na databázi, atp. Script nekončí když dorazí na header, jen si to zapamatuje, že se má přesměrovat, zpracuje další příkazy a až na konci scriptu provede přesměrování.
Název: Re:Programování
Přispěvatel: Gurthfin 13. Červen 2013 - 20:12:27
Myslíš jako, že ti nefachá redirect v http hlavičce? Pokud jo a máš to takhle zapsaný, tak problém je více než zřejmý. Zde musí být cesta absolutní, nejde to dělat relativně jako "hyperlink". Tedy místo tečky na začátku odkazu tam nasoukej např. ...

Ak by to bolo az tak lahke, nemusel by som sa pytat.. problem bude niekde inde.

Název: Re:Programování
Přispěvatel: FaraonX 13. Červen 2013 - 22:10:32
Pokud jsi ještě neudělal, to co říkal Benda, tak tam ten
Kód: [Vybrat]
exit; za to ještě foukni. Nic tím nezkazíš, ale má pravdu, že tě to ochrání před případnými problémy.

V čem to ale vázne, dle mě bude ten ošklivý "ampersand" v odkazu. Koukal jsem na to i prve, ale asi to s ním fakt neprojde ani tu. :-) Vyescapuj ten znak a mělo by začít fachat jestli se nepletu.
Název: Re:Programování
Přispěvatel: Gurthfin 13. Červen 2013 - 23:12:48
ampersandem to neni.. na skusanie mam test.php a v nom:
Kód: [Vybrat]
<?php
header
'Location: http://izahori.sk/obeczavod/index.php?stranka=result2' );
exit;
?>
a nejde ani tak...

alebo idem pozriet este iny sposob redirectovania, snad nieco najdem..
Název: Re:Programování
Přispěvatel: FaraonX 13. Červen 2013 - 23:31:52
ampersandem to neni.. na skusanie mam test.php a v nom:
Kód: [Vybrat]
<?php
header
'Location: http://izahori.sk/obeczavod/index.php?stranka=result2' );
exit;
?>
a nejde ani tak...

alebo idem pozriet este iny sposob redirectovania, snad nieco najdem..
Tak jedině mě snad ještě napadá, jestli bys neměl mít místo těch jednoduchých uvozovek '...' mít ty složitější "..." i když to je asi blbost, ale jinak fakt netuším. Když to není ani speciálním znakem, tak tam nic nekorektního už nevidím. Určitě to tam dáváš před načtením samotné html stránky?
Název: Re:Programování
Přispěvatel: Gurthfin 14. Červen 2013 - 00:05:15
co myslis tim nacitanim html stranky? Mam ten index.php, kde je kostra stranky(cize aj html kod) a pomocou stranka=test vkladam(include) do nej test.php..

inak podarilo sa mi najst
Kód: [Vybrat]
echo '<META HTTP-EQUIV="Refresh" Content="0; URL=index.php?stranka=result2">'; exit; a funguje to...

Název: Re:Programování
Přispěvatel: FaraonX 14. Červen 2013 - 00:32:31
co myslis tim nacitanim html stranky? Mam ten index.php, kde je kostra stranky(cize aj html kod) a pomocou stranka=test vkladam(include) do nej test.php..

inak podarilo sa mi najst
Kód: [Vybrat]
echo '<META HTTP-EQUIV="Refresh" Content="0; URL=index.php?stranka=result2">'; exit; a funguje to...
No míním tím tohle:
Kód: [Vybrat]
<?php
header
(...);
?>

// Odtud generuji(načítám) html stránku
<html>
...
...
</html>
Tedy ten redirect, aby se prostě dělal předtím, než se začne načítat samotná stránka nebo vypíše nějaké "echo".

Ale když ti to už nějak fachá, tak to necháme být. Je to traumatizující. I když fakt by mě zajímalo na čem to vázne, to ti povím heh. ;D
Název: Re:Programování
Přispěvatel: Gurthfin 14. Červen 2013 - 12:30:29
tak radost predcasna.. dalsia trauma na dusi.. nejdu $_SESSION
Kód: [Vybrat]
<?php
//Test.php

session_start();

$dbid "starosta";
$dbuser "starosta";
$dbrights "admin";

$_SESSION['userid']=$dbid;
$_SESSION['username']=$dbuser;
$_SESSION['rights']=$dbrights;

echo 
"$dbuser <p>";
echo 
$_SESSION['rights'];

echo 
'<META HTTP-EQUIV="Refresh" Content="0; URL=index.php">';
?>

echo $_SESSION['rights']; vypise spravne "admin", co by mi na index.php malo spristupnit panely pre spravu, ale nestane sa nic. 
Název: Re:Programování
Přispěvatel: Aurielle 14. Červen 2013 - 14:29:39
Problém musí být u tebe, ten kód je normálně funkční. Podívej se, jestli před <?php nemáš nějaký znak, zapni zobrazování všech chyb a zkontroluj konfiguraci PHP.
Session musíš inicializovat před zahájením jakéhokoliv výstupu, není problém v tom? (Poznámka o zapnutí zobrazování všech chyb platí stále.)
Název: Re:Programování
Přispěvatel: Gurthfin 14. Červen 2013 - 14:41:27
diky moc.. na zaciatku index.php bolo ""(edit:zeby ten "byte order mark").. neviem ale preco, lebo doma sa mi v Notepade++ nic nezobrazuje. Vsimol som si, ze ked upravujem nejaky subor cez webove rozhranie, tak mi tam vie naskocit nejake &nsb.. a ako pozeram, aj v inom subory to bolo... radsej si vsetko skontrolujem.
Název: Re:Programování
Přispěvatel: Aurielle 14. Červen 2013 - 14:49:14
Jj, přesně tyhle znaky jsou BOM.
Název: Re:Programování
Přispěvatel: Gurthfin 14. Červen 2013 - 16:02:00
ako vidim, mam rozhodene tusim cele kodovanie, takze musim opravit vsetky html casti ktore nie su medzi <?php?>, taktiez pridam vsetky exit;

ak by niekoho napadla este nejaka rada na taketo zaciatocnicke chyby, napiste. V ramci prechadzania celeho scriptu by som to chcel opravit co najviac...
Název: Re:Programování
Přispěvatel: Benda_11 30. Červen 2013 - 23:43:27
Jak to funguje s připojením k MySQL? Už jsem relativně dokončil serverovou část pro svoji hru. Mám to dělané tak, že v každém vlákně, ve kterém je připojen klient k serveru se provádí dotazy k mysql. Script je postaven, tak že při každém dotazu vytvoří nové spojení, které se po dotazu automaticky zavře. Z technických důvodů nelze, aby v každém vlákně bylo vytvořené pernamentní spojení. To by zachvilku databáze totálně zkolabovala. A moje otázka zní, co je lepší, jestli to nechat tímhle způsebem a nebo vytvořit nové vlákno, ve kterém by bylo pernamentní spojení s databází a z ostatních vláken by se sem posílali dotazy, které by se zpracovávali postupně.  Jelikož když si to vezmu, tak při každém dotazu se zamkne tabulka, do které se šahá, a další dotaz se zpracuje až potom, co se tabulka odemkne. Tak proto si říkám, že druhý způsob by byl efektivnější. Avšak na úkor toho, že ve vlákně, kde jsem odeslal dotaz na databázi, by se musela vytvořit čekací fronta, která by teoreticky mohla zpomalit odezvu ke klientovi - klient by mohl teoreticky vzato čekat o chlup delší čas, než by vlákno poznalo, že úloha pro spojení s databází by se zpracovala. Příklad: ve frontě je dejme tomu 300 dotazů, které se mají zpracovat, a klient by musel čekat, než co se všechny dotazy před ním zpracují. Ve skutečnosti zase na druhou stranu dotaz na databázi není nikterak dlouhý a zabírá několik málo nanosekund, což při malé frontě nemusí být tolik znát, ale nabízí se otázka, co když by bylo těch dotazů ne v řádu stovek, ale tisíců až-li desetitisíců? Ale zase ve druhém příkladě bych ulehčil hodně databázi, mysql by nemuselo samo vyhodnocovat zda-li je tabulka zamknutá nebo není. Př: do jedné tabulky pošlu naráz 300 dotazů na vyhodnocení a stejně se každý dotaz musí zpracovat postupně, jelikož se tabulka s každým novým dotazem zamkne a další dotaz se zpracuje až po úspěsňe předešlém zpracovaném dotazu. Navíc ve druhém způsobu spojení bych také ulehčil databázi neustálým ověřováním, při novém spojení, když bych měl jedno pernamentní spojení. Oba způsoby spojení mají své výhody i svá úskalí. Teď jen nevím co je lepší.
Název: Re:Programování
Přispěvatel: Gurthfin 01. Červenec 2013 - 14:15:01
volil by som server <-> databaza permanentne a klient <-> server fronta. (alebo pre mna lakavejsia moznost server <-> databaza fronta a klient <-> server fronta a samostatneho agenta na monitorovanie a spravovanie oboch front). O databazu by som sa nebal, lebo celu zataz ponesie server (spracovanie spojenia, volanie db, spracovanie vysledkov db, a spat ku klientovi). A ked ti to nehodou nebude stihat, nikto ti do programovania nevidi, tak preco nepouzit Stand Alone Complex a trebars zobrat posledny vysledok a ten pouzit. (Priklad - HentaiVerse, ked sekam nejaku priserku, tak naco sa pripajat na databazu kvoli kazdemu seku, ked moje statistiky sa nemenia - cize seknem 10x za sebou, tak naco sa 10x pripajat na db, ked hodnoty seku priblizne rovnake, tak kazdy 3 sek sa pouzije hodnota predchadzajuceho upravena o malu random hodnotu. Usetri sa tak cas na db, ak je fronta plna)
Název: Re:Programování
Přispěvatel: Benda_11 01. Červenec 2013 - 15:53:46
Takže je teda lepší a výhodnější použít mé druhé řešení.
Jinak samozřejmě neplánuju s každou akcí sahat do databáze. Všechny změny se budou ukládat do proměných v konkrétním vláknu, ve kterém je připojen daný klient. Změní polohu, to se uloží do proměné. A plánoval jsem, že jednou za čas tyto informace uložím do databáze (a nebo při ukončení spojení s klientem se všechny informace uloží). Bude to sloužit jako rychlá cache paměť. Mě šlo jen o to, jeslti vytvářet paralelní spojení na databáze, kde se musí vždy každé spojení ověřit s databází (jméno a heslo) a nebo jen vytvořit jedno spojení na databázi, pro všechny klienty/spojení a tam vytvářet frontu.
Název: Re:Programování
Přispěvatel: FaraonX 01. Červenec 2013 - 22:58:47
Já bych asi taky řekl, že ta druhá možnost by měla být lepší.
Název: Re:Programování
Přispěvatel: Gurthfin 08. Září 2014 - 16:10:03
Tak vraciam sa spat ku kniznici, a kedze je to dost dlho, co som na nej nerobil, asi par veci od zakladu prepisem. Ako prve ma napadlo, ci by mi niekto nevysvetlil rozdiel medzi vykreslenim stranky pomocou
Kód: [Vybrat]
https://anime.akihabara.cz/anime/Ore-no-Nounai-Sentakushi-ga-Gakuen-Lovecome-o-Zenryoku-de-Jama-Shiteiru-2013 a
Kód: [Vybrat]
http://forum.akihabara.cz/index.php?action=post;topic=2063.120;last_msg=29534ten druhy sposob pouzivam ..index.ph?action=post;topic=2063.120.. takze tomu chapem, ale ako funguje to prve volanie?
Název: Re:Programování
Přispěvatel: aw3147 08. Září 2014 - 19:47:46
Kód: [Vybrat]
http://en.wikipedia.org/wiki/Semantic_URL
zkus googlit navody na pretty url, clean url apod
Název: Re:Programování
Přispěvatel: Gurthfin 02. Červenec 2015 - 18:18:01
ako naprogramujem, aby sa mi po 30 dnoch automaticky poslal vyhrazny email na vratenie pozicanej knihy?
Název: Re:Programování
Přispěvatel: aw3147 02. Červenec 2015 - 19:14:19
cron?
Název: Re:Programování
Přispěvatel: Gurthfin 02. Červenec 2015 - 21:10:29
takze sa to nerobi cez php/sql, ale cez program, ak tomu dobre chapem..
Název: Re:Programování
Přispěvatel: aw3147 02. Červenec 2015 - 21:41:42
v zásadě ano, za predpokladu ze provozujes prave nejakou webovou aplikaci na LAMP, tak pro periodické spusteni nejakeho skriptu je nejsnazsi pouzit cron ktery je beznou soucasti kazdy linux distro a ktery podporuje i kazdy slusny webhosting.

v zasade napises nejaky skript, do cronu pridas prikaz jako kdybys to chtel spustit pres prikazovou radku a voila skript se ti bude opakovane vykonavat dle zadanych casovych parametru...

pres tohle si treba doma updatuju TT-Rss kazdou hodinu
Kód: [Vybrat]
@hourly /usr/bin/php /var/www/tt-rss/update.php --feeds --quiet
takze staci napsat skript ktery ti zkontroluje stari vypujcek k casu spusteni a zasle emaily vsem kteri maji knizku vypujcenou uz moc dlouho. pak staci uz jenom spustet tento skript opakovane :)

asi by se to dalo resit spoustou dalsich ruznych workaroundu ale toto je nejsnazsi a nejcastejsi reseni. afaik php ani sql nema na tohle zadnou nativni fci.
Název: Re:Programování
Přispěvatel: Gurthfin 01. Srpen 2015 - 19:49:37
co mam urobit, aby mi sli posielat maily (napriklad pri zaregistrovani)? Viem si zatial max. napisat prikaz v php ( mail( bla bla bla) ) dalej co? (Nieco nakonfigurovat? Poziadat admina o nejake udaje?...)
Název: Re:Programování
Přispěvatel: Skogen 01. Srpen 2015 - 22:46:17
- Ani to nemusí být přes Cron. Jestli se denně nějaký PHP skript uživatelsky spouští (přihlášení do administrace?), může vypůjčky prověřit on.

- Fce mail() by měla poslat email do fronty mailserveru poskytovatele, takže záleží na něm, co na webhostingu umožňuje. Případně použít jiný mailserver pomocí MX záznamu.
Název: Re:Programování
Přispěvatel: Akidzuki 03. Srpen 2015 - 15:51:48
- Ani to nemusí být přes Cron. Jestli se denně nějaký PHP skript uživatelsky spouští (přihlášení do administrace?), může vypůjčky prověřit on.

Osobně myslím že cron je pro periodicky se spouštějící script lepší volba a hlavně čistější, vázat funkčnost na jinou, nesourodou funkcionalitu je vysoce riskantní (menší přehlednost / čitelnost kódu, větší šance zanést chybu, složitější debug, dominový efekt)
Název: Re:Programování
Přispěvatel: Skogen 04. Srpen 2015 - 01:48:00
Osobně myslím že cron je pro periodicky se spouštějící script lepší volba a hlavně čistější, vázat funkčnost na jinou, nesourodou funkcionalitu je vysoce riskantní (menší přehlednost / čitelnost kódu, větší šance zanést chybu, složitější debug, dominový efekt)

Určitě ano, ostatně právě proto cron existuje. Navíc by bylo třeba spouštění skriptu omezit, aby neprobíhal při každém přihlášení, refreshi, a tak dále. S přehledností a čitelností už to tak tragicky nevidím, není třeba matlat dohromady, může se nainkludovat ze samostatného souboru stejně jako se mohou připojit komentáře. Je to zkrátka možnost a doplnění, nic víc.
Název: Re:Programování
Přispěvatel: Akidzuki 04. Srpen 2015 - 12:28:24
Určitě ano, ostatně právě proto cron existuje. Navíc by bylo třeba spouštění skriptu omezit, aby neprobíhal při každém přihlášení, refreshi, a tak dále. S přehledností a čitelností už to tak tragicky nevidím, není třeba matlat dohromady, může se nainkludovat ze samostatného souboru stejně jako se mohou připojit komentáře. Je to zkrátka možnost a doplnění, nic víc.

Samozřejmě, že nemluvím o tom aby tam byl ten kód přímo vlomený, to by byla ultra prasárna :D Ale s tou čitelností jsem to myslel spíš v tom, že je to takové volání od nikud a bůh ví kdy, takže se kolikrát v takovém kódu po někom hodně špatně orientuje  ;)
Název: Re:Programování
Přispěvatel: Skogen 04. Srpen 2015 - 20:26:24
Samozřejmě, že nemluvím o tom aby tam byl ten kód přímo vlomený, to by byla ultra prasárna :D Ale s tou čitelností jsem to myslel spíš v tom, že je to takové volání od nikud a bůh ví kdy, takže se kolikrát v takovém kódu po někom hodně špatně orientuje  ;)

Že se skript spouští cronem a k čemu je dobrý, ovšem taky musíš zakomentovat nebo dokumentovat, pokud tedy nevede tvá první cesta k propátrávání nastavení plánovače na webhostingu. Takže přehlednost a čitelnost e-e, to s tím nesouvisí. Jiné výhrady, tedy důsledky podřízenosti spuštění skriptu akcí uživatele, to už je věc jiná. Stále ale zcela mimo pochybnosti platí, že to možnost je. Prasárna, to je takové moc módní slovo, které používají psáči kódu, když z toho chtějí udělat společenskou událost :) I já jsem ho někdy použil. Třeba když se jednu dobu právě z těchto kruhů oslavoval xhtml strict, který je tak gentlemanský a čitelný, až člověka omezuje :)

Tím bych to s dovolením ukončil.
Název: Re:Programování
Přispěvatel: Gurthfin 12. Srpen 2015 - 18:33:13
da sa nejako vratit nepodareny zapis do databazy? Lebo som nam stalo, ze pri pouziti UPDATE prikazu s nevhodnym parametrom sa prepisali vsetky nazvy knih v db na rovnake meno. Stalo sa to na lokalnom pc s wamp serverom.  Mam nejake subory v mysql zlozke - mysql-bin.000169(az po 000001), mysql-bin.index, ibdata1, ibdata1.log atd. ci by tie nepomohli...
Název: Re:Programování
Přispěvatel: 8B3CE273 12. Srpen 2015 - 18:44:06
jedině obnovit ze zálohy
Název: Re:Programování
Přispěvatel: Gurthfin 12. Srpen 2015 - 18:47:14
stara 1 mesiac..  :'(

citam prave nieco o mysqlbinlog.exe, ze sa to da pouzit s mysql-bin.000169 subormi na obnovu.. s tim nema niekto skusenosti?

EDIT: Ide to.. spojil som vsetky subory do jedneho .sql pomocou mysqlbinlog.exe a teraz len to len precesavam kvli chybam.

Mam ale zase problem s Notepad++ - ked mazem ohraniceny blok prikazov (begin.... end) tak to dlho trva. Neviete ako vypnut automaticke vytvaranie blokov? Ked mazem riadok je to hned, ale ak chcem zmazat cely blok, tak sa kusne aj na 30 sekund
Název: Re:Programování
Přispěvatel: Gurthfin 14. Srpen 2015 - 12:42:39
teraz som si vsimol, ze mi
Kód: [Vybrat]
$query = mysql_query("SELECT * FROM library WHERE bookname LIKE '%....%' ") neberie niektore pismena ako ľ č ť ď ň. Pismena ako ž á í ó ú ý š to ale berie.. Mam aj prikaz
Kód: [Vybrat]
mysql_query("SET CHARACTER SET utf8") or die(mysql_error()); a databaza je v utf8_slovak_ci

Priklad
Kód: [Vybrat]
SELECT * FROM library WHERE bookname LIKE '%Žena z dún%' AND autor LIKE '%Kóbó Abe%' ide, ale
Kód: [Vybrat]
SELECT * FROM library WHERE bookname LIKE '%Priateľstvo%' nejde, prtiom ta kniha tam je, lebo ju dokazem zobrazit podla jej cisla
Název: Re:Programování
Přispěvatel: Keiiko 14. Srpen 2015 - 14:12:42
zkus utf8_unicode_ci a taky zkus do databze vlozit novou knihu s problemovymi znaky s kodovanim utf8 a pak to s tim stejnym kodovanim nacist; kdysi mi to delalo podobny problem
Název: Re:Programování
Přispěvatel: Gurthfin 28. Září 2015 - 19:54:09
je nutne nejake zabezpecenie, ak chcem userovi poslat udaje ako username a password na email pomocou mail() funkcie?
Název: Re:Programování
Přispěvatel: 8B3CE273 28. Září 2015 - 20:48:12
lepší by bylo heslo neposílat.

email je plain text a nechá se kdekoliv zachytit. pak je možnost použít šifrování přes PGP nebo S/mime, ale to skoro nikdo nepoužívá.

pokud si uživatel nemůže zadat vlastní heslo při registraci, tak ho alespoň donutit to heslo změnit po prvním přihlášení
Název: Re:Programování
Přispěvatel: Gurthfin 31. Prosinec 2015 - 20:41:28
ako si nejako nepracne nastylizovat mail? Nie je na to nejaky program, co mi to hodi zaroven aj do php kodu (html do php, nech nemusim vsade pridavat \" a osetrovat to)?
Název: Re:Programování
Přispěvatel: 8B3CE273 01. Leden 2016 - 14:26:26
na newslettery atd. jsme používali mailchimp. mělo by to podporovat i export šablony