Rozbité statistiky

Návrhy a diskuze o webových stránkách Arkhalie vč. fóra.

Rozbité statistiky

Příspěvekod siley » 11 srp 2016 10:17

Statistiky průchodů někdo ještě předtím, než mi byl svěřen server někdo totálně rozoral. Vzhledem k tomu, že pravděpodobně nebyla vedena žádná evidence změn a úprav, nelze s jistoutou říci kdy se tak stalo a kdo je za to zodpovědný, ale co je nejdůležitější nelze pořádně určit, odkdy by měl být proveden reset nebo oprava záznamů v databázi aby se z toho získala nějaká data odpovídající realitě.

Při troše zjednodušení jsem rozklíčoval, že některé z WB/DM si popletlo proměné a místo započítávání průchodů jednotlivých postav a zvyšování tohoto počítadla o jedna za každý průchod dochází od jisté doby k tomu, že existuje jenom jedno počítadlo, které se zvyšuje po každém průchodu každou postavou a to se potom ukládá jako počet průchodů jednotlivé postavy. Ale je to trochu složitější.

přiklad:
* Postavy A, B a C vlezou v tomto pořadí k bossovi poprvé, kdy tam vůbec někdo lezl.
> z toho plyne
A - počet průchodů:1
B - počet průchodů:2
C - počet průchodů: 3

ještě zajímavější je, pokud už předtím nějaké killy evidované byly
potom se základ odvíjí od první postavy, která projde průchodem, počítadlo se jí zvýší o jedna a ostatním se potom nastaví na hodnotu té první postavy a dále se zvyšuje.
takže postava X(20 průchodů), postava Y(0 průchodů) a postava Z(10 průchodů) pokud v tomto poradi projdou "pruchodem k bossovi", bude výsledkem
X - 21 průchodů
Y - 21 průchodů
Z - 22 průchodů

Myslíte si, že horší už to být nemůže? Hovno, vážení přátelé, dámy a pánové, teprve začínáme.

Pokud se totiž už jsou evidované nějaké statistiky u toho konkrétního bosse a postava, které projde počítadlem jako první zatím žádné záznamy ve statistikách nemá, potom se počítadlo nastaví na hodnotu nejvyššího počtu killů ze všech postav, které jsou již ve statistikách evidované.

Příklad > postava Q(0 průchodů), postava P(5 průchodů) a postava R(10 průchodů) projdou v tomto poradi "pruchodem k bossovi", zatímco postava H(20 pruchodu) je nekde na obede offline, bude výsledkem:
Q- 21 pruchodu
P - 21 pruchodu
R - 22 pruchodu

Navíc se to ješte v různých případech chová jinak pro postavy se jmény obsahujícím non-ASCII znaky. Tam je vytvořena konstrukce přesahující moje chápání, kdy se jméno postavy v kódování UTF-8 převede do Windows-cp-1250 a potom uloží do databáze (bez konverze) jako švédština ISO. Vzhledem k tomu, že někdy dochází k nahrávání dat z databáze a někdy se jenom zvyšuje counter již z databáze načtený. například pokud postava bez odlogu projde jeden dung několikrát po sobě, může a nemusí být vůbec správně spárován počet průchodů se správnou postavou a někdy se vezme opět nejvyšší počet průchodů ze všech postav na serveru, ačkoli postava už průchody má.

Přiznám se, že v této chvilí jsem po několika hodinách testování měl pocit, že mi vybuchne hlava a vykašlal jsem se na to. Ještě se mi někdo diví, proč jsem tak sprostej?

Ideální by bylo, kdyby se příslušný pachatel toho pekelného algoritmu vyjádřil, co tím bylo myšleno, jaký byl vůbec důvod provádět změny v těchto statistikách, které v minulosti fungovali a pod kterým řádkem začínající slovem "vylepšení ...." se tato zhovadilost skrývá v historii změn modulu, aby bylo možné alespoň odhadnout datum začátku této datové bramboračky. Předtava jak shadow, drax nebo kdo ještě k tomu měl přístup objasňuje tuto kontrukci je bohužel dosti legrační.

Navrhuji, aby statistiky průchodů byly tedy zrušeny, vymazány a dále se s nimi nijak nenakládalo.

Připomínky, připadně návrhy na řešení vítám, relevantní data zašlu na vyžádání.



PS: zde se můžete podívat na statistiky na stále běžícím starém webu aktuální přibližně k době, kdy jsem server převzal. Jistě vidíte, že u některých dungů jsou tam čísla opravdu hodně vysoko a záležitost je tedy celkem dost stará http://www.arkhalia.cz/entrystat.html
"Pokrok je jako stádo prasat na dvorku, protože z nich je maso, sádlo a špek, tak se člověk holt musí smířit s tím, že je všude nasráno."
siley
Level 26
 
Příspěvky: 423
Registrován: 30 zář 2012 23:00

Re: Rozbité statistiky

Příspěvekod siley » 11 srp 2016 17:05

A abych nebyl pouze negativni, tak statistiky killu zda se celkem funguje, alespon co se tyce vystupu z modulu do db. samotnej script, kterej delal ty stranky je totalni trash. sice asi i za urcitych okolnosti funguje a nekomu musel dat strasnou praci, takze me to skoro mrzi rict, ale porad je to hroznej trash. takze to musim prepsat do neceho, co treba i reportuje nejake chyby a pod.

Kód: Vybrat vše
#!/bin/bash

# Format configu (po polich) (poradi zaznamu => poradi na vysledne strance)
# 1: pattern jmena bossa pro grepovani z hlavniho logu (zadouci mezera pred a mozna Died; uvozovky kolem se doplni automaticky)
# 2: plne, oficialni jmeno bossa (do alt pro obrazky)
# 3: jmeno - prefix screenshotu bossa (napr. mauger_l.bmp.jpg zde bude mit "mauger"), pouziva se i jako nazev odkazu pro href v ramci stranky - MUSI TEDY BYT UNIKATNI (=> nelze pouzit pro bossa a bossa [HC] obrazek se stejnym nazvem)
# 4: nazev dungu, jak se zobrazi na strance (asi chceme kapitalkama)
# 5: tag bossa v databazi (PWDB_killy.name)
# pole se oddeluji |
# NIC NESMI OBSAHOVAT APOSTROF, UVOZOVKY NEBO DALSI SYSTEMOVE PRASARNY

# v pripade potreby menit i kod cronjobu, ktery kontroluje konzistenci PWDB_killy vuci configu tohoto skriptu

# pod DATADIR se ocekava "config" a dalsi soubory
DATADIR=/home/ark/statistiky/killstat_data
COUNT=`cat $DATADIR/config|wc -l`
LOG=/home/ark/logs.0/nwserverLog1.txt
# ve WEBDIRu se ocekavaji naplnene podadresare killstat_pics/thumbs a killstat_pics/pics; vytvori se zde a pouzije podadresar graph
WEBDIR=/home/ark/tomcat/webapps/ROOT/stats/
# WEBPAGE bude vytvorena pod $WEBDIR
WEBPAGE=killstat.html
WEBOWNER=ark
# Kolik poslednich smrti od kazde podtovry zobrazovat
DEATHNR=20
TEMP=`mktemp /home/ark/tmp/cron_killstat_XXXXXXXXXX`

renice 15 $$ >/dev/null
ionice -c 3 -p $$ >/dev/null
mkdir $WEBDIR/killstat_pics/graph &>/dev/null

for i in `seq $COUNT`; do
  BOSSTAG=`head -$i $DATADIR/config|tail -1|cut -d '|' -f 5`
  BOSSFILENAME=`head -$i $DATADIR/config|tail -1|cut -d '|' -f 3`
  sed "s:SEMPATRITAGBOSSA:$BOSSTAG:" $DATADIR/graph_gen_template.php | php -- - > $WEBDIR/killstat_pics/graph/$BOSSFILENAME.gif 2>/dev/null
done

# Precaching, at je cele grepy z logu tabulka vytvorene v co nejmensim casovem okne
cat "$LOG" > /dev/null

cat $DATADIR/page_p1 > $TEMP
echo "Sloupce zobrazují časy posledních $DEATHNR fragů. Data aktuální k `date '+%e.%m.,'|sed 's: ::g'` `date '+%k:%M'|sed 's: ::g'`.<br>" >> "$TEMP"
echo "Grafy uvádí ty nejúspěšnější drtiče dotyčných bossů; data sbírána cca od října 2010." >> "$TEMP"
#echo "<small>Počet skřetů zmasakrovaných od 1.7.2008: již </small>`grep '[sS]k.et.*Died$' $LOG | wc -l`!!" >> "$WEBDIR/run_info"

cat $DATADIR/page_p2 >> $TEMP

sed 's:^[^|]*|\([^|]*\)|\([^|]*\)|.*$:\t\t\t<a href="#\2" title="\1"><img src="killstat_pics/thumbs/\2_r.bmp.thumb.jpg"></a>:' $DATADIR/config | head -$(((COUNT/2)+(COUNT%2))) >> $TEMP

cat $DATADIR/page_p3 >> $TEMP

sed 's:^[^|]*|\([^|]*\)|\([^|]*\)|.*$:\t\t\t<a href="#\2" title="\1"><img src="killstat_pics/thumbs/\2_l.bmp.thumb.jpg"></a>:' $DATADIR/config | tail -$((COUNT/2)) >> $TEMP

cat $DATADIR/page_p4 >> $TEMP

# proste neco 8bitoveho (ne UTF), aby slo grepovat z logu, ktery je ve WIN-1250
LCORIG="$LC_ALL"
export LC_ALL="cs_CZ.ISO-8859-2"
for i in `seq $COUNT`; do
  if [ $((i%2)) -eq 1 ]; then
    head -$i $DATADIR/config|tail -1|sed 's:^[^|]*|[^|]*|\([^|]*\)|\([^|]*\)|.*$:\t<tr>\n\t<td valign="center" align="center">\n\t<a name="\1"></a>\n\t<img src="killstat_pics/pics/\1_r.bmp.jpg"></td>\n\t<td valign="center" align="center">\n\t<b><font color="#d09040" face="Courier New">\2</font><br><br>\n\t<font size=1 color="#d09040" face="Courier New">:' >> $TEMP
    BOSSGREP=`head -$i $DATADIR/config|tail -1|cut -d '|' -f 1`
    grep "$BOSSGREP" $LOG | grep -v '(PC)'|uniq|tail -n $DEATHNR|iconv -f windows-1250 -t utf8|sed 's:^\[\([^]]*\).*:\1:'|sed 's:  :\&nbsp :'|sed 's:^\(.*\)$:\1<br>:'|sed -r 's:(Mon|Tue|Wed|Thu|Fri|Sat|Sun) ::'|sed 's:Jan:\&nbsp\&nbsp leden:'|sed 's:Feb:\&nbsp\&nbsp\&nbsp únor:'|sed 's:Mar:\&nbsp březen:'|sed 's:Apr:\&nbsp\&nbsp duben:'|sed 's:May:\&nbsp květen:'|sed 's:Jun:\&nbsp červen:'|sed 's:Jul:červenec:'|sed 's:Aug:\&nbsp\&nbsp srpen:'|sed 's:Sep:\&nbsp\&nbsp\&nbsp září:'|sed 's:Oct:\&nbsp\&nbsp říjen:'|sed 's:Nov:listopad:'|sed 's:Dec:prosinec:' >> $TEMP
    head -$i $DATADIR/config|tail -1|sed 's:^[^|]*|[^|]*|\([^|]*\)|.*$:</font></b><br>\n\t<img src="killstat_pics/graph/\1.gif">\n\t</td>\n\t</tr>\n:' >> $TEMP
  else
    head -$i $DATADIR/config|tail -1|sed 's:^[^|]*|[^|]*|[^|]*|\([^|]*\)|.*$:\t<tr>\n\t<td valign="center" align="center">\n\t<b><font color="#d09040" face="Courier New">\1</font><br><br>\n\t<font size=1 color="#d09040" face="Courier New">:' >> $TEMP
    BOSSGREP=`head -$i $DATADIR/config|tail -1|cut -d '|' -f 1`
    grep "$BOSSGREP" $LOG | grep -v '(PC)'|uniq|tail -n $DEATHNR|iconv -f windows-1250 -t utf8|sed 's:^\[\([^]]*\).*:\1:'|sed 's:  :\&nbsp :'|sed 's:^\(.*\)$:\1<br>:'|sed -r 's:(Mon|Tue|Wed|Thu|Fri|Sat|Sun) ::'|sed 's:Jan:\&nbsp\&nbsp leden:'|sed 's:Feb:\&nbsp\&nbsp\&nbsp únor:'|sed 's:Mar:\&nbsp březen:'|sed 's:Apr:\&nbsp\&nbsp duben:'|sed 's:May:\&nbsp květen:'|sed 's:Jun:\&nbsp červen:'|sed 's:Jul:červenec:'|sed 's:Aug:\&nbsp\&nbsp srpen:'|sed 's:Sep:\&nbsp\&nbsp\&nbsp září:'|sed 's:Oct:\&nbsp\&nbsp říjen:'|sed 's:Nov:listopad:'|sed 's:Dec:prosinec:' >> $TEMP
    head -$i $DATADIR/config|tail -1|sed 's:^[^|]*|[^|]*|\([^|]*\)|.*$:</font></b><br>\n\t<img src="killstat_pics/graph/\1.gif">\n\t</td>\n\t<td valign="center" align="center">\n\t<a name="\1"></a>\n\t<img src="killstat_pics/pics/\1_l.bmp.jpg"></td>\n\t</tr>\n:' >> $TEMP
  fi
done
export LC_ALL="$LCORIG"

cat $DATADIR/page_p5 >> $TEMP

mv $TEMP $WEBDIR/$WEBPAGE
# BTW mktemp dela vsecky soubory u+rw
 chmod a/nebo chown zpusobuji, ze browser nepouzije nacachovany obrazky (sucks hafo)
#find $WEBDIR/killstat_pics -type f -exec chmod 644 '{}' \;
#find $WEBDIR/killstat_pics -type d -exec chmod 711 '{}' \;
chmod 711 $WEBDIR/killstat_pics/graph
chmod 644 $WEBDIR/$WEBPAGE $WEBDIR/killstat_pics/graph/*
chown -R $WEBOWNER $WEBDIR/$WEBPAGE $WEBDIR/killstat_pics
chown -R $WEBOWNER $WEBDIR/$WEBPAGE $WEBDIR/killstat_pics/graph

exit 0


nejvic me rozsekal ten comment nakonci - jakoze "sucks hafo". uplne jsem si rikal: "tak proc to delas ty vandraku, kdyz sam o tom napises, ze to sucks hafo." To je jako uvarit polivku, rict, ze se to neda zrat a poprat dobrou chut! ale to uz jen mluvim do vrby... to delal nekdo asi moc davno.
"Pokrok je jako stádo prasat na dvorku, protože z nich je maso, sádlo a špek, tak se člověk holt musí smířit s tím, že je všude nasráno."
siley
Level 26
 
Příspěvky: 423
Registrován: 30 zář 2012 23:00

Re: Rozbité statistiky

Příspěvekod siley » 11 srp 2016 21:42

Kód: Vybrat vše
$search_patt=array("~","..","!a","!e","!i","!o","!u","!y","!Y","!A","!E","!I","!O","!U","+e","+r","+t","+s","+d","+l","+z","+c","+n","+E","+R","+T","+S","+D","+L","+Z","+C","+N",".u",".U");
$replacement_patt=array("'",".","á","é","í","ó","ú","ý","Ý","Á","É","Í","Ó","Ú","ì","ø","»","¹","ï","µ","¾","è","ò","Ì","Ø","«","©","Ï","¥","®","È","Ò","ù","Ù");
"Pokrok je jako stádo prasat na dvorku, protože z nich je maso, sádlo a špek, tak se člověk holt musí smířit s tím, že je všude nasráno."
siley
Level 26
 
Příspěvky: 423
Registrován: 30 zář 2012 23:00

Re: Rozbité statistiky

Příspěvekod siley » 23 srp 2016 21:35

.
"Pokrok je jako stádo prasat na dvorku, protože z nich je maso, sádlo a špek, tak se člověk holt musí smířit s tím, že je všude nasráno."
siley
Level 26
 
Příspěvky: 423
Registrován: 30 zář 2012 23:00


Zpět na Web Arkhalie

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 1 návštěvník