Usuniecie kierowcy powinno jedynie wiazac sie z jego ukryciem w liscie kierowcow kasowanie calkowite na poczatku sezonu dopiero
Reklamy
PiotreQ
2003-07-28, 11:13 SkinControl
Ale po co usuwać ???
Wystartował raz, zdobył punkty więc niech siedzi w tabelkach do końca sezonu.
Ewentualnie na WYRAŹNE żądanie danego delikwenta można jego ksywkę zamienić na "deleted" i już
MaXyM
Dołączył: 17 Sie 2001
Posty: 6289
Miasto: Kraków GG:1905678
2003-07-28, 11:21 SkinControl
Zawsze można usunąć z SQLa. Jednak włąśnie ze względu na bezpieczeństwo bym nie dawał możliwości usuwania tego z poziomu GUI - nawet z 2 potwierdzeniami 'czy aby na pewno jesteś pewien' można się machnąć. I jak taka pomyłka będzie po parunastu wyścigach to uzupełnianie danych mogłoby być koszmarem
MaXyM
Dołączył: 17 Sie 2001
Posty: 6289
Miasto: Kraków GG:1905678
2003-07-28, 12:06 SkinControl
OK. Skończyłem liczenie punktów - uwzględnione są punkty i kary.
Czyli można powiedzieć że wszystko jest zrobione i czeka na gruntowne testy.
Zostanie tylko przystosowanie tego do DIV1/2. Jakieś sugestie? mam nadzieję że nie będziecie chcieli robić kontroli kto jest w której dywizji? MOżna po prostu założyć 2 równoległe serwisy ale to by wymagało podwójnej rejestracji, uploadowania skinów etc.
ja bym proponowal jedna liste kierowcow i 2 oddzielne serwisy punktacji. Przyniesie to skutek ze w div1 i 2 nie moga byc takie same numery startowe i kierowcy z div1 i 2 beda posiadac swoje skiny, ktore przeydadza sie podczas treningow bo nie wiadomo jak sie beda one odbywac ale zapewne bedza one wspolne... a moze nie
MaXyM
Dołączył: 17 Sie 2001
Posty: 6289
Miasto: Kraków GG:1905678
2003-07-28, 14:25 SkinControl
OK.
Mc, mógłbyś wypełnić tabelę kar ich definicjami?
Trochę trochę zboczę z tematu, ale do kogo teraz zgłaszać chęć startów w lidze, czy tak jak na nascar.pl do Richiego czy rejestrować się u Ciebie MaXyM i będzie to dalej przekazywane odpowiednim osobom.
Soory za może głupie pytanie ale się już zakręciłem.
Pozdr.
MaXyM
Dołączył: 17 Sie 2001
Posty: 6289
Miasto: Kraków GG:1905678
2003-07-28, 15:17 SkinControl
W serwisie który tworzę możesz się rejestrować bez przeszkód (ale sprawdź najpierw na www.nascar.pl czy nr który chcesz mieć nie jest uzywany żeby potem nie było problemów).
Serwis ten (pod tym adresem) ma charakter testowy więc robisz to na własną odpowiedzialność. Jednakże staram się żeby dane nie ulegały usunięciu. Potem zostaną one przeniesione do bazy danych z której będzie czerpać oficjalny serwis.
Co do dopuszczenia do ligii jak i podziału na Div1/Div2, decydować będzie Szefostwo pewnie gdzieś w okolicy września. Do tego czasu możesz w moim serwisie sam się aktywować w panelu sędziego.
Ma to tę zaletę że będziesz mógł już ludziom udostępnić swojego skina, i brać udział w wakacyjnych treningach ze swoim malowaniem.
BTW (do Kierownictwa ): kiedy stanie serwer z N2003?
Dołączył: 17 Sie 2001
Posty: 6289
Miasto: Kraków GG:1905678
2003-07-29, 01:00 SkinControl
Hehe. A zaokrąglanie miało być takie proste.
Szkoda tylko że MySQL pod RedHatem zaokrągla połówki do liczb parzystych
ROUND(1.5) = 2
ROUND(2.5) = 2
ROUND(3.5) = 4
Pod windowsami zaokrągla w dół.
Zadanie dla ambitnych: napisac algorytm zaokrąglania nie korzystając z ROUND. Można z CEILING, FLOOR, TRUNCATE
Oczywiscie można stosowac warunki.
Ja napisałem ale nie wiem czy nie można prostszego alg. Już późno. Idę spać.
BTW: dzięki McLarenowi za pomoc w testowaniu serwisu.
Nogal
Dołączył: 18 Sie 2001
Posty: 5672
Miasto: Kraków
2003-07-29, 06:39 SkinControl
No to jesli liczba = 1.5, 2.5 etc. to dodaj 0.01 i zaokraglaj. Zeby sprawdzic czy jest to 1.5, 2.5 etc. podziel przez 0.5 i sprawdz czy wynik jest liczba calkowita.
MaXyM
Dołączył: 17 Sie 2001
Posty: 6289
Miasto: Kraków GG:1905678
2003-07-29, 07:26 SkinControl
Hehe. No a jak bedzie 1.49 ?? to po dodaniu 0.01 bedzie połówka i co wtedy? Poza tym to musi się zmieścić w zapytaniu SQLowym.
Ja to zrobiłem tak:
IF (Liczba-0.5<TRUNCATE(Liczba, 0), FLOOR(Liczba), CEILING(Liczba))
co oznacza "jeśli Liczba-0.5 jest mniejsza od Liczby po odcięciu ułamka (całkowitej) to wynikiem jest nawięjsza liczba całkowita mniejsza od Liczby (FLOOR), w przeciwnym razie najmniejsza liczba całk. większa od Liczby (CEILING).
Problem w tym że w moim konkretnym wypadku
Liczba = PenaltyPoints * PenaltyFactor / 100. Więc mamy 4 razy takie samo wyrażenie na dodatek z dzieleniem i mnożeniem. Stąd konkurs na wydajniejszy algorytm
PiotreQ
2003-07-29, 07:45 SkinControl
Ale przecież Liczba jest wyliczana tylko raz, a nie za każdym wywołaniem.
MaXyM
Dołączył: 17 Sie 2001
Posty: 6289
Miasto: Kraków GG:1905678
2003-07-29, 08:29 SkinControl
Poniżej mały SQL (nie mogłem się powstrzymać ) liczący sumy punktów kar dla kierowcy w danym wyścigu. Czy wartość PenaltyPoints * PenaltyFactor / 100 jest wyliczana raz? Może optymalizator faktycznie o to zadbał ale prawdę powiedziawszy mam wątpliwości.
Oczywiście to czysto akademicka dyskusja, bo obciążenie maszyny takimi obliczeniami będzie znikome tym bardziej biorąc pod uwagę częstotliwość odświeżania strony z takimi zestawieniami.
SELECT *,
SUM(IF(PenaltyPoints * PenaltyFactor / 100 - 0.5 < TRUNCATE (PenaltyPoints * PenaltyFactor / 100,0), FLOOR(PenaltyPoints * PenaltyFactor / 100), CEILING(PenaltyPoints * PenaltyFactor / 100))) AS PenaltySum
FROM (RacePenalties
LEFT JOIN Penalties ON RacePenalties.IDpenalty = Penalties.IDpenalty)
LEFT JOIN N2003_drivers ON RacePenalties.IDcar = N2003_drivers.IDcar
WHERE RacePenalties.IDcar=8 AND IDrace=4
GROUP BY RacePenalties.IDcar;
PiotreQ
2003-07-29, 09:10 SkinControl
Czemu nie zastąpisz całego wyrażenia PenaltyPoints * PenaltyFactor / 100 jedną znienną wyliczaną tylko raz ?
Będzie szybciej