Jump to content

Tanga

Uživatel
  • Příspěvků

    1278
  • Registrován

  • Aktivní

  • Vítězných dnů

    29

Everything posted by Tanga

  1. On programuje, vy si z neho robite srandu. > 3 years later > on zaraba > vy mu dlaždite schody na chate Edit: sry , trochu som naliaty
  2. Pekny text. Este k "Mesto kde pracovat" Vela ludi si mysli ze USA je nejake Eldorado. For je v tom, ze platy su tam nizsie nez v zapadnej europe, aj v takom new yorku, lebo americky trh je presyteny programatormi. A ak mate konkretnu firmu u ktorej chcete robit a ma pobocky v inych miestach, tak aj ked je mesto kde chcete byt vacsie, neznamena to ze tam budete mat vacsi plat, poznam pripady ked je to naopak.
  3. Tanga

    pomoc Array to index

    Ak som to dobre pochopil, tak jid je ten string? Musíš teb string cez strval asi premeniť najprv na integer. Nemozes predsa jInfo[jid] ak je to string. Co podla teba by to bolo za behu? jInfo["ABCD"]?
  4. Otvaras subor spravne? Zatvaras subor spravne? Nezapisuje tri len toto alebo nic? Mas vytvoreny priecinok kde to davas?
  5. Ak sa chceš vyhnúť #pragma unused params za každú cenu, môžeš to ešte skombinovať s variabilnym počtom parametrov (tu). Tam ti nebude hlásiť, že si niečo z toho nepoužil.
  6. To som si tky myslel, ale som to otestoval práve a ukázalo sa, že ani stock ani obyčajná funkcia (ani premenné) sa neskompilujú ak ich nepoužiješ. Akurát obyčajná premenná ti hodí warning, že je nepoužitá, kdežto stock potichu zmizne.
  7. Obsah Úvod Čo sú to runtime erorry Príklad použitia Záver Úvod Pri vývoji softvéru je veľmi ľahké urobiť nejakú chybu. Na testovanie (debugovanie) sa používajú rôzne metódy, jednou z tých agresívnejších môžu byť runtime errory. Je len na Vás, či si vyberiete túto metódu s využitím runtime errorov / výnimiek / exceptions. V návode sa v podstate nenaučíte nič nové, patrí medzi "zložitejšie" len preto, že na správne využitie týchto informácií musíte mať isté programátorské myslenie a poznať peklo debugovania komplexných programov. Čo sú to runtime errory Určite ste sa stretli s tým, že Vám padol za behu server s textom Run time error 4: "Array index out of bounds" Stalo sa to, že server na pozadí pri každom priradení hodnoty kontroluje, či ste neprekročili veľkosť premennej. Server zistil, že áno a zhodil server. V momente ste vedeli, že v kóde je chyba. Keby server nepadol, čo by sa stalo? V prípade, že by nedochádzalo ku kontrole, že či nebola prekročená veľkosť pola, zapisovanie údajov by pokračovalo ďalej v pamäti (aj za danou premennou) a mohlo by sa stať, že by sa prepísali hodnoty nasledujúcich premenných / polí. Takáto chyba je prakticky nemožná na detekciu. Napíšem príklad z mojej praxe. Čo to obnáša? V prípade, že dôjde k nejakej chybe, padne server. V prípade, že tam nejaká chyba je, nájdete ju ľahšie. Prakticky platí, čim väčší mód, tým ťažšie sa hľadajú chyby a presne to uľahčujú runtime errory. V skratke teda ide len o to, že namiesto bežnej kontroly extrémnych hodnôt premenných, nevrátite "0", "-1", alebo nejakú podobnú hodnotu, ale rovno zhodíte server a poviete programátorovi, kde hľadať chybu. Samozrejme pri nasadení servera online môžete tieto runtime errory vypnúť a používať ich len pri debuggingu. Príklad použitia Pre zjednodušenie práce som dal dokopy definície runtime errorov (žiadny zložitý kód). Includ sa dá stiahnuť tu. Nezabudnite ho uložiť do pawno/include. #define DEBUGGING // povoli run time errory | pre ich vypnutie staci zakomentovat / zmazat tento riadok #include <runtime_errors> // includnut AZ ZA DEFINE DEBUGGING main() { new a = 4; TestZero(a, AMX_ERR_PARAMS, "Tento string sa nevypise kedze a nie je 0."); a = 0; TestZero(a, AMX_ERR_PARAMS, "Hodnota \"a\" nemoze mat nulu."); print("Tento string sa uz nevypise, kedze server padol v predoslom kroku."); } Výstup: ... Loaded 0 filterscripts. Hodnota "a" nemoze mat nulu. Script[gamemodes/test.amx]: Run time error 25: "Parameter error" Number of vehicle models: 0 Odkiaľ je funkcia TestZero()? To je len príklad, nemusíte ju použiť. Nachádza sa už defaultne v include. Vyzerá takto: stock TestZero(var, err, str[]) { // nazov funkcie si zmente ako chcete #pragma unused var, err, str #if defined DEBUGGING if (var == 0) { // tuto podmienku mozete zmenit, vsetko ostatne nechajte tak print(str); switchError(err); } #endif } Svoje vlastné funkcie si môžete vytvoriť na základe predlohy TestZero(), alebo akokoľvek sa rozhodnete. Odkiaľ mám hodnotu AMX_ERR_PARAMS? To sú oficiálne hodnoty vstavané do Pawn AMX, ich zoznam sa nachádza v include runtime_errors, ale na ukážku sem nejaké dám. Ich hodnoty nie sú nijak podstatné, upravujú len správu čo sa vypíše pri páde servera. Môžete tiež všade použiť AMX_ERR_NONE, čo nevypíše žiadnu ďalšiu správu o páde a vypísať svoje vlastné informácie pre uľahčené nájdenie chyby. #define AMX_ERR_NONE 0 #define AMX_ERR_EXIT 1 // forced exit #define AMX_ERR_ASSERT 2 // assertion failed #define AMX_ERR_STACKERR 3 // stack/heap collision #define AMX_ERR_BOUNDS 4 // index out of bounds Úplný zoznam errorov sa nachádza v include. Záver To, či je toto využitie dobré, alebo nie, nikto nemôže povedať. Je to jednoducho štýl programovania a "exceptions", alebo "runtime errory" sú bežnou súčasťou vyšších programovacích jazykov. Ich implementácia v Pawn je vcelku chabá, ale dá sa použiť. Ak sa však raz pre neho rozhodnete, buďte zodpovední a používajte ho všade.
    1. Matthew_Bennet

      Matthew_Bennet

      Takto dobre som sa už dlho neuvoľnil ako pri tejto zzzzznelke, zzzzznelke, zzzznelke, zzznelke, zznelke, znelke.

    2. Pán Podnikateľ

      Pán Podnikateľ

      Ty sa sakramentsky nudíš!

  8. V porovnaní s bežnými dizajnmi nič moc. V porovnaní s tým, čo sem ludia dávajú ako ich prvý dizajn, celkom to ujde.
  9. Tanga

    script Jednoduchý randomName()

    V škole sme mali nejaký name generator a bol riešený celkom zaujímavo, teda tu dávam takú jednoduchú verziu v Pawn. To "zaujímavé" je práca so samohláskami a spoluhláskami jednotlivo pomocou arrayov. Skript môžete tiež použiť len-tak vo svojom móde. Tvar stock getRandomName(minimalLength, maximalLength); Chybné vstupy nie sú ošetrené a server pri nich môže, ale aj nemusí padnúť. Skript funguje pre hodnoty minimalLength >= 3 maximalLength <= MAX_PLAYER_NAME Použitie print(getRandomName(4, 9)); // dlzka >= 4 a <= 9 print(getRandomName(3, 8)); -> Lurelo Raqu Skript // Returns a random name of minimalLength and maximalLength // incorrect values are not handled, so server might or might not crash. // for example getRandomName(-4, 9) wouldnt crash the server stock getRandomName(minimalLength = 3, maximalLength = MAX_PLAYER_NAME) { new vowels[] = "aeiou"; // optionally add "y" new consonants[] = "bcdfghjklmnpqrstvwxz"; new name[MAX_PLAYER_NAME]; new length = minimalLength + random(maximalLength - minimalLength); for (new i = 0; i < length; i += 2) name[i] = consonants[random(sizeof(consonants) - 1)]; for (new i = 1; i < length; i += 2) name[i] = vowels[random(sizeof(vowels) - 1)]; name[0] = name[0] - 32; // first letter is mayuscule return name; }
  10. Ako v tom ammunation ti niekto pvoedal, nepouzivaj tie iste materialy na rozne objekty, je to strasne.
  11. No pravdepodobne to nebude mať nič spoločné s tými hodinami, bude to iba náhoda, že práve po dvoch hodinách sa to stane. Tipujem na bugnuté cykly, zlé velkosti polí, premenných atď.
  12. Zle si tam nastavil tie hodnoty.. Skus CPU multiplier - 10 fine CPU - 0 CPU host control - enabled CPU host - 283 Pripadne overclocking sa takto nerobi. Musis proste skusat jednu hodnotu za druhou a to tak, ze pustis vsetk mozne testy 20x za sebou a ptm mas istotu ze ti to pri danej frekvencii nepadne. * Samozrejme za predpokladu že ti funguje ventilator, čiže ak ti vyschne pasta tak časom bude PC viac a viac nestabilny. Este je mozne ze tato druha doska nejak upravuje FSB a nefunguje ti ptm to nastavovanie frekvencii, ale tomu uz nerozumiem moc. neni to turbo boost, proste sa vypne uspora energie a CPU bezi na zakladnej frekvencii
  13. Tanga

    Turn me off

    Z tohoto alba Botnet

    Nový operačný systém od spoločnosti Micrococks©R - Botnet 10© ešte zrafinoval fičúru zo staršieho Windoes 8. Presne tak, hovorím o fast boot technológii, ktorá je založená na dokonalom dizajne garbage collectora .NET. Počítač dokáže bežať teoreticky bez vypnutia až neuveriteľných 2ℵ0 hodín. Je teda jasným krokom optimalizácie odstrániť nepotrebné, ergo tlačidlo na vypnutie počítača. Obr. 1: .NET garbage collector za behu - analyza memory footprintu

    © Micrococks(tm)

  14. Tanga

    Botnet

    The most popular operating system.
  15. Z tohoto alba Botnet

    Ktorý vyhľadávací nástroj poskytuje najlepšie výsledky a prečo je to Bing?

    © Windows(tm)

  16. Tanga

    ostatní Tachometer

    Pozadie strašné. Vnútro v pohode.
  17. Nazdars. Určite poznáte tú paranoju, keď ste na laptope, pozeráte napr. Shreka, či iné a máte strach, že niekto vás sleduje cez Vašu webkameru. Môžete sa síce vyhovárať na to, že máte pri kamere indikátor zapnutia (čiže by ste vedeli, že Vás sledujú), ja ho tam napr. nemám, ale keď už majú Vašu citlivú fotku, už je neskoro. Okrem teda prelepenia kamery existuje teda aj elegantnejšie riešenie a to Vám predvediem. Blokovanie driverov Spustite Device manager (Správca zariadení) cez Štart, prípadne cez Run zadajte "devmgmt.msc" Nájdite tam svoju kameru (Zariadenia na spracovanie obrázkov -> Webcam) Kliknite "Zakázať" Resetnite PC Otestovať či to funguje je jednoduché. Stačí otvoriť Skype > Nástroje > Možnosti > Nastavenie videa a uvidíte, že nič neuvidíte. Opätovne spustiť kameru sa dá kliknutím na Povoliť namiesto Zakázať. Je to bezpečné? Áno. Písal som to na viaceré stránky a hovoril som o tom viacerým ľuďom, nikto o niečom takom nepočul a teda keďže nikto to takto neblokuje, vírusy to nemajú prečo riešiť. Pre absolútnu paranoju je tiež možné odstrániť ovládače úplne. Tie sa bez admin-práv nedajú opätovne nainštalovať, vírusy tiež nemajú prístup k Windowsovej databáze driverov (tá ajtak nikdy nefunguje), tj. nevedia aký driver nainštalovať.
  18. Tanga

    ostatní [ANKETA] - Speedometer

    izometricky? Čosi, to nerob. Na 2D displej (speedometer) sa nehodí dávať 3D abo inak perspektívne obrázky. Nikde v skutočnom aute to tak nemáš z praktickych dôvodov (LEDky), skôr to tam máš z profilu (tam vidíš ktoré dvere máš otvorené) a tiež zhora.
  19. Tanga

    ostatní Diskuse na téma ... ryba

    * psychicke choroby nemaju nic spolocne s mudrostou, skor naopak, cim vacsia si deviacia od priemeru, tym skor mas aj choroby
  20. Tanga

    ostatní Diskuse na téma ... ryba

    myslis toto? [Edit:Prispevok sa vymkol kontrole, obrazok som zmazal] Akurat vcera som na to nahodou narazil na webe. Cjavim, co chces na tom diskutovat? Niekto zvedavy pride na deepweb abo ma vkontaktoch dakoho čo to už hra, na 100% (nie menej) je to socka s poruchami všetkych možnych označeni a typov. Posledny challenge musis byt velmi chory na to aby si sa na neho dal, tipujem ze tam ich aj vydieraju niektorych. Urcite maju nejake svoje undergroundove posobisko a myslim ze keby si velmi haldal, najdes to. Ostatne by to nenašli ak by to bol naozaj deepweb. A co sa tyka toho sebaposkodzovania, pri poruchach je to normalne, tje ten typicky pripad "Je lepsie citit aspon bolest nez nic."
  21. sprav si pole stringy[pocet_jazykov][max_velkost_stringu] Pošli mu vždy ten slovnesky, ale pri poslani ho nahraď za ten prislušny jazyk čo ma (vyhladaš ten string čo pošleš v slovenskom jazyku a len vratiš string z vedlajšieho stlpca (ineho jazyka). SendClientMessage(playerid, color, Translate(language(playerid), "Toto sa pošle"); .. stock Translate(Lang:lang, string[]) { for (...) { miesto = 0; // miesto je poloha slovenskeho stringu } return poleStringov[_:lang][miesto]; } .. new poleStringov[][] = {{"Toto sa pošle"}, {"This will be sent"}, {"Esto se mandará"}}; enum jazyky { SK, EN, ES }; Zaberie to viac RAM, ale bude to prehladnejšie a lahšie na upravu. Nebudeš tam mať žiadne define (MSG_EN_2), ale pri posielani textu presne uvidiš po slovensky aky to je text.
  22. "antideamx" funguje len preto, ze je bug v tom antideamx programe. Ak to pawn kompiler vie z kodu spravit .amx (a predpokladajme ze amx robi to iste co ten kod, tj. nic tam nechyba), tak je logicky mozne to opacnym procesom dostat naspat
  23. si robite prdel Akurat na hodine riesia co je to binarny subor a vysvetluju nam akot o funguje. Dufal som ze tu to nenajdem @Expres - co takto vytvorit novy a funkcny deamx? Pawn ma cjavim 50 instrukcii, za mesiac bez skusenosti to spravis, len si pozri ten pawn Implementer guide
×
×
  • Create New...