Jump to content
  • Announcements

    • Xmat

      Pravidlo pro postování v TTT

      Do sekce Tipy, triky, tutoriály nepatří žádné dotazy.   Postujte sem vaše návody, tipy a různé další věci jež uznáte za vhodné sdělit zdejšímu osazenstvu, ale veškeré dotazy směřujte do sekce Všeobecná diskuse.
    • Replik

      Seznam návodů a důležitých témat v této sekci

      Pro lepší přehlednost jsem vytvořil tento seznam, který vás, méně zkušené, lépe provede touto sekcí. Věřím, že zde najdete, co hledáte. Vypsané jsou návody, které jsou oficiálně uznané jako návody. Běžné diskuze, které neposkytují postupy a rady zvěřejněny nejsou.   Instalace vlastního MaNGOS Serveru Díky těmto návodům budete (měli by jste být) schopni vytvořit a následně spustit váš vlastní server. Nastavení je pro verze s i bez datadisku.   Instalace MaNGOS Serveru (bez datadisku TBC) - Autor Benny Instalace MaNGOS Serveru (s datadiskem TBC) - Autor Malfik Instalace MaNGOS Serveru v prostředí Linux - Autor charlie Instalace MaNGOS Serveru v prostředí Linux - Autor kupkoid   Chyby a jejich řešení při přihlašování k serveru - Autor Cybe   Zálohování uživatelských dat   Dávkový soubor (BAT soubor) pro vytvoření SQL záloh - Autor Replik   Kompilování - tvoření vlastních release (revizí)   Tvorba kompilací pro Win32 (MangoScript) - Autor bLuma   Ostatní - těžko zařaditelné, ale neznamená to, že nejsou dobré   VIP Systém - Autor charlie Tvorba Webových stránek pro MaNGOS - Autor zahuba Tvorba teleportačních NPC (MangoScript) - Autor Replik Registrační web (původně předělaná SPORA) Funkční pro Antrix i MaNGOS - Autor Replik Nastavení a spuštění Minimanager pro MaNGOS - Autor BlackMartin Nastavení MaNGOS Website - Autor Artorius   Samozřejmě jsou zde i jiné návody, ale tyto jsou nejvíce používané, proto věřím, že vám budou nápomocné. Tuto sekci budeme upravovat podle potřeby. Pokud by jste něco nenašli nebo si nevěděli rady, hledejte na fóru a teprve potom založte vlastní topik. Pokud nějaký autor vytvoří kvalitní návod a chtěl by ho zveřejnit i v tomto seznamu, doporučuji, aby mi napsal zprávu skrze PM.   Díky a přeji hezký den na WoWResource   Replik
    • Aristo

      Příspěvky tam, kde nemají co dělat

      Dodržujte zákaz přispívání do topiků s repaky pokud si to zakladatelé nepřejí!! Opakované psaní příspěvků bude trestáno warnem.
    • Aristo

      Používání spoilerů

      Poslední dobou má většina uživatelů fora zvláštní nutkání postovat extrémně dlouhé texty nebo kódy, které zabírají v nejedenom případu i 80% obsahu celé stránky a hodně tak zvedají nepřehlednost v topiku. Chtěl bych všechny uživatele požádat, aby při postování citací, jakýchkoliv kódů, errorů, atp... delších než 30 řádků používali funkci spoileru.   Funkci vyvoláte příkazem [spoiler] text [/spoiler]   Ukázka:  
Sign in to follow this  
Wolf Officious

Wlčí Account/Character DB Sorter (seřazení ID)

Recommended Posts

+ rep dobrá práce jaká zaslouží pochvalu :D

 

EDIT: Jaký je to font u toho nadpisku Wlezley's WoW Db Tools? :rolleyes:

Edited by Wardenicek

Share this post


Link to post
Share on other sites

Jaký je to font u toho nadpisku Wlezley's WoW Db Tools? :rolleyes:

 

řekl bych že je to Comic Sans

Share this post


Link to post
Share on other sites

Pokud jim mizí věci z důvodů o kterých tu mluvíš tak to je snad zázrak. To nevím, co by musel dělat blizz... 32 bitové číslo bez znaménka má maximální hodnotu něco přes 4 miliardy. A přesně tolik můžeš mít charakterů ve hře, aby to ještě fungovalo (stávající chování emu). A pokud by jsi tohoto čísla dosáhl, emu se vypne. Do té doby velikost čísla nemůže mít vliv na stabilitu, pokud se něco ztrácí tak je chyba jinde.

 

Btw zmiňované 64 bitové číslo (uint64/unsigned big int v mysql) dosahuje na 18446744073709551615 (1.84467441 × 10^19), což se ti zdá málo?

Share this post


Link to post
Share on other sites

To je Calibri..

 

Díky, Calibri používám a nepoznám to. Už je to se mnou špatný asi. Díky ;)

Tučnost asi dělá vše :D

Share this post


Link to post
Share on other sites

Pokud jim mizí věci z důvodů o kterých tu mluvíš tak to je snad zázrak. To nevím, co by musel dělat blizz... 32 bitové číslo bez znaménka má maximální hodnotu něco přes 4 miliardy. A přesně tolik můžeš mít charakterů ve hře, aby to ještě fungovalo (stávající chování emu). A pokud by jsi tohoto čísla dosáhl, emu se vypne. Do té doby velikost čísla nemůže mít vliv na stabilitu, pokud se něco ztrácí tak je chyba jinde.

 

Btw zmiňované 64 bitové číslo (uint64/unsigned big int v mysql) dosahuje na 18446744073709551615 (1.84467441 × 10^19), což se ti zdá málo?

No každopádně né všude jsou 64bitový hodnoty. V DB se vidí málokdy - bigint se používá snad jenom na časy. Na guid se používá unsigned int (jak asi víš, max. 4294967295). Když se ti to nelíbí, nech to bejt tak jak to je. Po tvých věcech taky nešlapu. Ber to třeba jako nástroj k údržbě..

  • Upvote 1

Share this post


Link to post
Share on other sites

BUMP!

Verze 0.55c (win32) je nyní k dispozici. :diablo:

Od předchozí verze proběhlo pár změn, hlavně rozšíření o volbu emulátoru. Tabulky v některých případech stále nemusí sedět (na nekorektních revizích se může objevit řada cyklických hlášení o chybách MySQL query/execute). Tohle vyřeším co nejdřív.

  • Upvote 1

Share this post


Link to post
Share on other sites

Zbytečnost, možná. Ale už to udělal, tak proč hledat důvody toho, proč je to zbytečné, a nehledáme raději důvody toho, k čemu je to dobré.

Čistě teoreticky... čím nižší čísla, tím vyšší rychlost, ne? (Samozřejmě v hladinách v jakých se pohybujeme asi sotva, ale teoreticky ano..) Když to přeženu, je rychlejší operovat s tří- nebo čtyř-ciferným číslem, než s deseti-ciferným.

  • Upvote 2

Share this post


Link to post
Share on other sites

Já když jsem dělával výmazy neaktivních accountů, dělal jsem tohle přečíslování jenom tak - pro pořádek. A všechno skoro ručně (SQL batch).

Viz.:

SET @CHAR_id = ;
SET @NOVE_id = ;

USE `zzz-obnova-char`;
UPDATE `character_account_data` SET `guid` = @NOVE_id WHERE `guid` =  @CHAR_id;
UPDATE `character_achievement` SET `guid` = @NOVE_id WHERE `guid` =  @CHAR_id;
UPDATE `character_achievement_progress` SET `guid` = @NOVE_id WHERE `guid` =  @CHAR_id;
UPDATE `character_action` SET `guid` = @NOVE_id WHERE `guid` =  @CHAR_id;
UPDATE `character_aura` SET `guid` = @NOVE_id WHERE `guid` =  @CHAR_id;
UPDATE `character_equipmentsets` SET `guid` = @NOVE_id WHERE `guid` =  @CHAR_id;
UPDATE `character_glyphs` SET `guid` = @NOVE_id WHERE `guid` =  @CHAR_id;
UPDATE `character_homebind` SET `guid` = @NOVE_id WHERE `guid` =  @CHAR_id;
UPDATE `character_inventory` SET `guid` = @NOVE_id WHERE `guid` =  @CHAR_id;
UPDATE `character_pet` SET `owner` = @NOVE_id WHERE `owner` =  @CHAR_id;
UPDATE `character_queststatus` SET `guid` = @NOVE_id WHERE `guid` =  @CHAR_id;
UPDATE `character_reputation` SET `guid` = @NOVE_id WHERE `guid` =  @CHAR_id;
UPDATE `character_skills` SET `guid` = @NOVE_id WHERE `guid` =  @CHAR_id;
UPDATE `character_social` SET `guid` = @NOVE_id WHERE `guid` =  @CHAR_id;
UPDATE `character_spell` SET `guid` = @NOVE_id WHERE `guid` =  @CHAR_id;
UPDATE `character_spell_cooldown` SET `guid` = @NOVE_id WHERE `guid` =  @CHAR_id;
UPDATE `character_talent` SET `guid` = @NOVE_id WHERE `guid` =  @CHAR_id;
UPDATE `characters` SET `guid` = @NOVE_id WHERE `guid` =  @CHAR_id;
UPDATE `guild` SET `leaderguid` = @NOVE_id WHERE `leaderguid` =  @CHAR_id;
UPDATE `guild_bank_eventlog` SET `PlayerGuid` = @NOVE_id WHERE `PlayerGuid` =  @CHAR_id;
UPDATE `guild_eventlog` SET `PlayerGuid1` = @NOVE_id WHERE `PlayerGuid1` =  @CHAR_id;
UPDATE `guild_eventlog` SET `PlayerGuid2` = @NOVE_id WHERE `PlayerGuid2` =  @CHAR_id;
UPDATE `guild_member` SET `guid` = @NOVE_id WHERE `guid` =  @CHAR_id;
UPDATE `item_instance` SET `owner_guid` = @NOVE_id WHERE `owner_guid` =  @CHAR_id;
UPDATE `mail` SET `sender` = @NOVE_id WHERE `sender` =  @CHAR_id;
UPDATE `mail` SET `receiver` = @NOVE_id WHERE `receiver` =  @CHAR_id;
UPDATE `mail_items` SET `receiver` = @NOVE_id WHERE `receiver` =  @CHAR_id;
UPDATE `petition` SET `ownerguid` = @NOVE_id WHERE `ownerguid` =  @CHAR_id;

USE `zzz-obnova-realm`;
UPDATE `account_extend` SET `character_id` = @NOVE_id WHERE `character_id` =  @CHAR_id;
UPDATE `f_posts` SET `poster_character_id` = @NOVE_id WHERE `poster_character_id` =  @CHAR_id;

 

I tak to trvalo hodně dlouho. Jednotlivý dosazování ID do scriptu byl hnus. ..a kdo by nechtěl mít pořádek v DB? ID seřazené krásně v řadě atd..

  • Upvote 1

Share this post


Link to post
Share on other sites

No každopádně né všude jsou 64bitový hodnoty. V DB se vidí málokdy - bigint se používá snad jenom na časy. Na guid se používá unsigned int (jak asi víš, max. 4294967295). Když se ti to nelíbí, nech to bejt tak jak to je. Po tvých věcech taky nešlapu. Ber to třeba jako nástroj k údržbě..

 

Vůbec nehodnotím tvůj program nebo jeho funkčnost, pouze reaguji na nesmysl toho, aby číslo určité velikosti způsobilo ztrátu dat. Jinak pokud bych dělal přečíslování tak začnu u itemů, tam je největší rychlost růstu id. S tím se charaktery nebo accounty rovnat nemohou. Potom přečíslováním GUID creatur nebo alespoň takových těch custom-made, u tabulek creature_template, creature_addon, creature_template_addon, item_template a některé další se ta data načítají během startu do paměti a dle maximálního entry/guid se vytváří indexové pole pro rychlé vyhledání položky v paměti. Extrémně velká čísla (stačí jediné) ti zbytečně sežere ramku. (Index je dynamicky alokované pole ukazatelů (32bit systém = 4B, 64bit = 8B na položku), entry/guid 1 000 000 -> index bude mít 3,8 MiB (na 32bit), dej si do DB entry 10M a zaplácneš zbytečně 30 MiB ram.)

 

 

Zbytečnost, možná. Ale už to udělal, tak proč hledat důvody toho, proč je to zbytečné, a nehledáme raději důvody toho, k čemu je to dobré.

Čistě teoreticky... čím nižší čísla, tím vyšší rychlost, ne? (Samozřejmě v hladinách v jakých se pohybujeme asi sotva, ale teoreticky ano..) Když to přeženu, je rychlejší operovat s tří- nebo čtyř-ciferným číslem, než s deseti-ciferným.

 

Pokud to číslo narveš naráz do registru je jedno, kolik má cifer. Zpracování bude stejně rychlé pro všechna čísla z rozsahu toho registru.

Share this post


Link to post
Share on other sites

Vůbec nehodnotím tvůj program nebo jeho funkčnost, pouze reaguji na nesmysl toho, aby číslo určité velikosti způsobilo ztrátu dat. Jinak pokud bych dělal přečíslování tak začnu u itemů, tam je největší rychlost růstu id. S tím se charaktery nebo accounty rovnat nemohou. Potom přečíslováním GUID creatur nebo alespoň takových těch custom-made, u tabulek creature_template, creature_addon, creature_template_addon, item_template a některé další se ta data načítají během startu do paměti a dle maximálního entry/guid se vytváří indexové pole pro rychlé vyhledání položky v paměti. Extrémně velká čísla (stačí jediné) ti zbytečně sežere ramku. (Index je dynamicky alokované pole ukazatelů (32bit systém = 4B, 64bit = 8B na položku), entry/guid 1 000 000 -> index bude mít 3,8 MiB (na 32bit), dej si do DB entry 10M a zaplácneš zbytečně 30 MiB ram.)

Jasně, uznávám že s tím tvrzením co tu bylo předtím, jsem šlápnul asi vedle. Nicméně je fakt, že k napsání tohoto programu mě vyprovokoval tento topic: http://www.wowresource.eu/index.php?showtopic=21240

Odtud vlastně pochází i ta myšlenka, že by ID/GUID mohlo nějak souviset právě s tím "mizením postav".. ..což je asi blbost, ale proč ses ty, blumo, nezapojil do diskuze v tom tématu? Přijít s řešením, nebo návrhem je hrozně těžký, tak to prosím nechme tak, jak to je.

 

Další věcí, co mě zaujalo již dávno (asi před rokem a půl), byla diskuze na hulákadle, kdy si někdo stěžoval na obrovské GUID postav na některé ze starších revizí (už přesně nevím o co konkrétně šlo) a měl nějaké problémy s tím. Já jsem se nikdy na žádný takový magický číslo nedostal, na to můj server neměl "koule". Ale i tak jsem se snažil to udržovat čistý. Takže na otázku jestli se to hodit bude nebo ne, si musí už odpovědět každý sám.

 

V neposlední řadě, jsem tenhle program začal psát proto, protože mi to začalo vrtat hlavou. "Jak by to šlo udělat?" "Dokázal bych to napsat?".. Experimentuju, snažím se rozvíjet v něčem, co mě ukrutně baví. :ermm:

 

PS: Za necelé 3 hodiny jsem na localhostu seřadil 11196 postav z jednoho známého serveru. Maximální ID bylo cca 16 400.

Edited by Wolf Officious
  • Upvote 1

Share this post


Link to post
Share on other sites

BUMP!

 

Verze 0.56 (win32)

(viz. první příspěvek) ZDE

 

V této verzi jsou následující změny:

  • Upgrade vzhledu GUI
  • Nový ProgressBar

Jde jen o kosmetický úpravy, ale myslím si že je to příjemnější na oko. :)

 

AKTUALIZACE 26.2.2011: Projekt byl odsunut na druhou kolej. Časem se k tomu vrátím.

Edited by Wolf Officious
  • Upvote 2

Share this post


Link to post
Share on other sites

BUMP!

 

Obnoven odkaz downloadu

(viz. první příspěvek) ZDE

 

Uvažuji nad refaktorizací kódu, přecijen je to starší záležitost a dalo by se to řešit úplně jinak.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

×