Git Product home page Git Product logo

aktywator's People

Contributors

emkael avatar michzimny avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

Forkers

emkael

aktywator's Issues

Nie pyta o ID :(

Jak się wgra nazwiska i zaznaczy, że ma pytać o id i nie może pytać o id, to nie pyta o id.
Innymi słowy w teamach efekt jest odmienny od oczekiwanego.

Testowałem niestety tylko w boju i przypadkiem. Zdarzyło mi się dwa razy, gdzie jeden teraz na najnowszym sofcie i firmware, wcześniejszy "test" był, mam wrażenie, ze 2-3 lata temu.

Wyświetlanie wyniku w VP dla Teamów

Wyświetlanie wyniku meczu w IMPach podaje zawsze wynik BEZ bieżącego (wybranego w Aktywatorze, domyślnie: pierwszego niezamkniętego) segmentu.

Wynik w VP pobierany jest z matches - aktualnie wyświetlana jest suma VP do wybranej w Aktywatorze rundy włącznie.

Jeśli chcemy wykluczyć możliwość przypadkowego ujawnienia bieżącego wyniku meczu zawodnikom (np. przez zostawienie auto-aktualizacji nazwisk do momentu, kiedy Webmaster zdąży zapisać wynik do tabeli matches), należałoby zmienić warunek na runda < wybranej.
Ale możemy czasem chcieć wyświetlić między segmentami meczu aktualny wynik drużyny w VP.

Która wersja jest przydatniejsza?

Wczytanie do BWS rozkładów a zbieranie danych pośrednich

Przy sprawdzaniu karty wistu, dane pośrednie nie są wysyłane.

Sprawdzić, czy to bug, czy może warto napisać do BM, żeby "dane pośrednie" w tym wypadku nie uwzględniały karty wistu (albo uwzględniały, ale bez jej sprawdzenia).

Domyślne ustawienia

Aktualnie są moim zdaniem fatalne.

Kiedyś było chyba tak, że są inne domyślne dla par i inne dla teamów. Względem domyślnych zazwyczaj musiałem zmienić może ze trzy opcje czy coś takiego. Aktualnie spędzam multum czasu na samym zmienianiu opcji.

Idąc w kierunku optymalnego rozwiązania:

  • pokazuj nazwiska powinno być zaznaczone jak coś jest w BWSie, a po wgraniu program powinien zapytać cyz włączyć pokazywanie nazwisk jeśli jest wyłącozne
  • pytaj o ID zawodników powinno być w teamach w zasadzie zawsze włączone razem z nie może być puste, a w parach powinno być właczone jeśli BWS zawiera dane rundy 1
  • pokazuj numery par zawsze włączone (nigdy nie szkodzi), aczkolwiek można wysilić się na wykrywanie czy nie ma barometru z zerowymi numerami
  • zbieranie danych pośrednich nigdy nie szkodzi
  • resetowanie bez PINu szkodzi chyba tlyko wtedy kiedy chcemy odzyskać w trybie awaryjnym dane z nowego pierniczka, a jakiś złosliwy zawodnik nam wyklika reset - nigdy sie nie zdarzy, za to zdarza się że mam pierniczek przed sobą z nie wiem jakim pinem, nie wiem z jakiego turnieju i jedyny sposób żeby go zresetować to założyć turniej z takim numerem (A231) i zgadywać kanał i firmware....
  • pokazuj liczbe do końca jest chyba nigdy szkodliwe
  • w teamach podgląd zapisów biezącej rundy, na koniec automatycznie
  • noplay zawsze chcemy potwierdzić przez sędziego (bo albo programy go nie wymagają, albo wpisanie noPlay źle się policzy)

Blokada odczytu na pliku RRT

Czasem się zdarza, że RRB pisze do pliku RRT w momencie, kiedy Aktywator chce z niego czytać.

Obsłużyć.

Długie nazwy BWS

From @emkael on November 18, 2017 8:33

Zwijają górne menu i przyciski chowają się do podmenu.
Czasem nawet sama dłuuuuuuga nazwa się nie mieści.

Copied from original issue: emkael#6

Numery wersji firmware i BCS dla konkretnych opcji BWS

Zgodnie z wcześniejszym mailem, podsuwam pomysł sygnalizowania użytkownikowi minimalnej wersji pierniczków i oprogramowania dla wybranego zestawu opcji BWS.

Na razie tylko dla zakładki z checkboksami, bo ona pokrywa zdecydowaną większość (jeśli nie całość) sytuacji, w których taka informacja jest przydatna. Tzn. nie wydaje mi się, żeby jakiekolwiek opcje nazwisk/rozkładów robiły różnicę - zwykle jest tak, że szczegóły zakładek nazwisk/rozkładów degradują funkcjonalność w jakiś zdrowy sposób, a jak było coś dopisywane (np. dane analizy w widne), to "po cichu", bez angażowania w to użytkownika.

Ogólna koncepcja:

  • rozszerzyć obiekty klasy Settings o dwa pola typu Version
  • przy ustawianiu opcji (metody save()) emitować zdarzenie, które w razie potrzeby zaktualizuje wyświetlaną gdzieś u dołu panelu opcji informację o wymaganych wersjach
  • i tyle?

Ewentualnie można pokusić się o wyszukanie w rejestrze wersji zainstalowanego BCS i ostrzeganie, jeśli do działania wszystkich wybranych opcji wymagany jest upgrade (z firmwarem tak oczywiście nie zrobimy, ale upgrade jest często powiązany, a minimalne/maksymalne wersje potrafią być wymuszane między BCS a serwerem).

Jeśli nie masz poważnych uwag lub przeciwwskazań, spróbuję coś na dniach zaimplementować.

No value given for one or more required parameters

Co to może być? Wyskakuje po otwarciu bws.

See the end of this message for details on invoking 
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.Data.OleDb.OleDbException: No value given for one or more required parameters.
   at System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr)
   at System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult)
   at System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)
   at System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult)
   at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
   at System.Data.OleDb.OleDbCommand.ExecuteScalar()
   at Aktywator.Sql.selectOne(String q, Boolean checkForRow)
   at Aktywator.Bws.convertSettingsPerSection()
   at Aktywator.Bws.convert()
   at Aktywator.MainForm.MainForm_Shown(Object sender, EventArgs e)
   at System.Windows.Forms.Form.OnShown(EventArgs e)
   at System.Windows.Forms.Form.CallShownEvent()
   at System.Windows.Forms.Control.InvokeMarshaledCallbackDo(ThreadMethodEntry tme)
   at System.Windows.Forms.Control.InvokeMarshaledCallbackHelper(Object obj)
   at System.Threading.ExecutionContext.runTryCode(Object userData)
   at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Windows.Forms.Control.InvokeMarshaledCallback(ThreadMethodEntry tme)
   at System.Windows.Forms.Control.InvokeMarshaledCallbacks()

Obsługa wyniku rozdania w turnieju na IMP

Opcje z v3 firmware'u BM2 (BM3?).

Ogarnąć, czy działają, jak działają i czy można ich użyć również w BWSach generowanych przez JFR.

Może i przez Teamy, gdybyśmy mieli taki kaprys, ale niekoniecznie - firmware obsługuje również grę meczową.

- IMP scoring added
- X-IMP scoring added
- Team games functionality added. Teams can review scores from both matches and view their match results in IMP at the end of the match.

Refaktoryzacja kodu

W kodzie jest burdel. Do tego stopnia, że jak ustawić jakiś breakpoint, to się okazuje, że np. opcje z BWSa na starcie są odczytywane trzy razy. Nie winię nikogo poza sobą.

Chciałbym wstrzymać rozwój po wersji 1.1.5 i do wersji 1.2 zrobić gigantyczny refactor kodu.
Jeśli są jakieś małe rzeczy do zrobienia/poprawienia, chciałbym je upchnąć jeszcze w wersji 1.1.5, ale nie da się tego odkładać w nieskończoność.

Wynik turniejów liczonego na IMP

Ponoć nie uwzględnia wyrównań w IMP w matches.

Pewnie należałoby wykryć, czy mamy do czynienia z turniejem bez przeliczania na VP i przy okazji wyświetlać dobry suffiks wyniku.

Bonus: BAM?

Różne rozkłady w różnych sektorach

Olo zgłaszał, że wczytywanie różnych rozkładów do różnych sektorów nie działa, przynajmniej w Teamach.

Sprawdziłem, napisałem do BM o pomoc w diagnozie.

Okazuje się, że żeby rozkłady mogły być różne, sektory muszą być w osobnych grupach maksowania.

Dla turniejów par przeważnie jest to prawdą, bo opcje maksowania są w nich dostępne, bo włączamy wyświetlanie wyników.

Proponowana poprawka: przy wczytywaniu rozkładów sprawdzać, czy są różne między sektorami - jeśli tak, wyłączać możliwość wspólnego maksowania (+ jakieś ostrzeżenie). Jeśli nie - przywracać tę opcję z poprzednio ustawioną wartością.

Zapisz ustawienia

Mogło by leżeć sobie zapisane lokalnie. Szczególnie że niektórzy maja rzeczy, które ZAWSZE chcą mieć po swojemu (choćby inny PIN).

Wersja bardziej na bogato: zapisywanie opcji jako presetów i możliwośc wybierania z rozwijanej listy dodawania nowych, usuwania starych.

Lepsza kontrola, czy użytkownik ma ustawione parametry MySQLa

Aktualnie wyznacznikiem tego, czy użytkownik wypełnił formatkę ustawień MySQL, jest niepuste hasło.

Może lepiej dołożyć do parametrów aplikacji flagę "użytkownik zapisał parametry", z domyślną wartością "nie", a przełączaną na "tak", gdy tylko użytkownik zapisze parametry, żeby program nie nagabywał użytkownika, który zapisał sobie puste hasło.

Co prawda nie testowałem nigdy, czy Aktywator działa z pustym hasłem MySQL, ale ufam, że tak.

Maksowanie sektorów

Wersja 2.3.1 BCS (czyli dawno temu) wprowadziła dla BM2 alternatywną metodę grupowania stołów/sektorów w protokołach - pole Group w tabeli Tables.

Gdy było ono używane (a jest - bo BWSy, z którymi mam styczność, ustawiają dla wszystkich stołów 1), opcja GroupSections w tabeli Settings była ignorowana.

Zaimplementowałem ponownie tę opcję, używając pola w Tables - i wygląda na działającą.
Jedyny problem to brak możliwości przełączenia między wspólnym a oddzielnym maksowaniem sektorów w trakcie trwania sesji - nie do końca wiem, dlaczego.

Mogę jedynie się domyślać, że opcje z Tables nie są przeładowywane przez serwer standardowym UpdateFromRound=997, może konieczne jest ponowne dodanie stołów do serwera, ale nie podejmuję się proponować, jak to zrobić bezpiecznie.
Niestety, również w "starej" wersji (Group w Tables ustawione na 0 i pisanie GroupSections w Settings), ustawienie nie jest odświeżane, albo nie umiem go skutecznie wymusić.

Może należałoby napisać do BM.

Obsługa BYE

Wersja dla RRB:

  • po prostu wbicie missing pair

Wersja dla Par:

  • wbicie missing pair + AP0 / A00 / A0P automatycznie

Użycie BYE na własną odpowiedzialność. Trzeba pamiętać o opcji zmiany numer pary (również na pusty) i by to się uploadowało poprawnie do serwerka.

Interfejs - UX opcji synchronizacji nazwisk

W polu "synchronizuj co" jest limit minimalnej wartości, który jest w żaden sposób niezaznaczony. Poza tym pole słabo reaguje na wpisanie błędnej wartości, a oznaczanie włączenia funkcji stanem przycisku też mogłoby być czytelniejsze.

Problemy z zapisem nazwisk przy wielu sektorach

Zgłoszenie:

Wskazałem Aktywatorowi plik .rrt, z którego ma sobie pobrać nazwiska i kliknąłem 'synchronizuj teraz' dla sektora * (miałem dwa sektory - A i B).
Początkowo wydawało mi się, że w ogóle nie zadziałało, ale okazało się, że w sektorze A nazwiska wyświetlają się prawidłowo, a tylko w sektorze B wcale.
Wybrałem więc teraz sektor B i 'synchronizuj teraz' - to do obu sektorów zassały się nazwiska z B.
A w A zawodnicy zaczęli drzeć mordy :(
Niezrażony wybrałem sektor A, 'synchronizuj teraz' i było dobrze w obu!

Olo też coś zgłaszał, że jakieś problemy z sektorami miewał.

Do ogarnięcia.

Cząstkowa konwersja BWSa

Wraz z przyrostem funkcjonalności i rozwojem samego formatu BWSów, proste rozróżnienie między plikiem BM2 a plikiem, który trzeba skonwertować do BM2, nie zawsze wystarcza.

Czasem mamy do czynienia z BWSem, który już jest formatu BM2 (w tym: jest wykrywany przez Aktywator jako BM2, więc nie jest proponowana jego konwersja), a nie zawiera całej struktury, która jest niezbędna do działania programu. Na przykład, tabela Settings może nie zawierać wszystkich pól, zwłaszcza tych wprowadzanych niedawno (bo na przykład sędzia zdążył już skonwertować BWS starą wersją Aktywatora).

Może powinniśmy rozważyć stopniowy, w dużej mierze "cichy" (przezroczysty dla użytkownika) upgrade struktury BWS? Może w związku z tym również początkowa konwersja ("do BM2") może odbywać się bez wyrażenia przez użytkownika wprost zgody?
Jak często zdarzają się jeszcze użytkownicy, którzy potrzebują użyć Aktywatora, ale jednocześnie trzymać strukturę BWS w starym formacie? (I jak bardzo możliwe, że ci użytkownicy będą korzystać z jakichkolwiek aktualizacji Aktywatora, gdy funkcje, które wprowadzamy, dotyczą BM2?)

Bezpieczeństwo PINów

Propozycja ulepszenia bezpieczeństwa PINów:

  • przy inicjalizacji BWSa dotychczas ustawiany był domyślny PIN - może być ustawiany losowy
  • losowy PIN powinno ustawiać się łatwo, bez potrzeby mentalnej symulacji PRNG
  • łatwo przewidywalne PINy (np. dotychczasowy domyślny) powinny wywoływać w użytkowniku poczucie wstydu
  • nie powinniśmy pozwalać na obecność w BWSie rozkładów przy takich PINach

random-pin

Nazwiska dla indywiduela

Grubsza Sprawa™.

Po pierwsze, odróżnianie turnieju parowego od indywidualnego może nie okazać się trywialne.

Po drugie, nie jestem pewien, czy to jest w ogóle wykonalne - w sensie, czy na poziomie BWS nazwiska nie operują numerami par, które dla turniejów indywidualnych i tak trzeba ukrywać, bo pokazują się N/E, a nie ma jak określić S/W.
Może taka funkcjonalność wymaga wręcz poważnej ingerencji w BWSa generowanego przez Pary dla indywiduelów.

Wsparcie teamów

Version: 3.0.1
Date: February 13th, 2018
Requires server: 3.0.1d USB usbs301d.exe
File name: BM2_3-0-1.BM2
Team games functionality added. Teams can review scores from both matches and view their match results in IMP at the end of the match.

GPL a zawartość README/Aktywator.txt i Mysql.data.dll

Program jest dystrybuowany na GPL.
Problem łatwy - czy to nie oznacza, że wraz z binarną postacią programu muszą być dystrybuowane jego źródła (choćby w formie linku do tego repozytorium) albo przynajmniej deklaracja ich dostarczenia?

I problem trudniejszy - w paczkach dołączamy Mysql.data.dll. Czy to jest zgodne z GPL?
Z tego, co udało mi się wyczytać [1] [2] - samo używanie zamkniętej(?*) DLLki nie jest naruszeniem GPL, o ile taka DLLka jest tzw. "System Library", co w przypadku Mysql.data.dll raczej ma miejsce.
Ale dystrybucja tej DLLki to zupełnie inna para butów, bo wyjątek dla "System Library" jest pomyślany w ten sposób, że kod może nie dystrybuować źródeł biblioteki, z której korzysta, a którą końcowy użytkownik jest w stanie łatwo zainstalować, zachowując (do)wolność instalacji tej biblioteki.

* w końcu - czy ta DLLka nie pochodzi aby z: https://dev.mysql.com/downloads/connector/net/, dystrybuowanego na GPL i nie wystarczy jedynie odnośnik w sekcji "Licencja" w README?

Interfejs - zapisz do BWS

Sądzę, że aktualnie jest nieergonomicznie (albo nieintuicyjnie).

Jak już ustawię tak jak chcę muszę (?) na dole okna kliknąć zapisz do BWS, a potem na górze okna BCS.

Dodatkowo muszę jeszcze odwiedzić inna kartę -> Nazwiska. Muszę to kliknąć na górze programu.
Otwieram turniej z JFR i zgaduję że na dole muszę kliknąć synchronizuj teraz i znowu na górę BCS.

Moim zdaniem:

  • nie powinno być tak, że workflow jest góra - dół - góra
  • pewne rzeczy powinny się dziać automatyczne

Przykładowe rozwiązanie:

  • przenieść guziki zapisz i synchronizuj wysoko
  • jeśli nie jest zsynchronizowane / zapisane to Uruchom BCS wykona najpierw zapisanie i synchronizację (nikt nie chce przecież uruchomić z innymi ustawieniami niż te co są wybrane teraz)
  • należy jakoś zrobić jasne, że kliknięcie BCS będzie skutkowało tymi czynnosciami

Nazwiska z RRB

Przymierzam się do dopisania wczytywania nazwisk z RRB.

Pytania:

  1. Integrować w jakikolwiek sposób z istniejącym interfejsem nazwisk z Par/Teamów?
    Mówię tu o zachowaniu opcji "Synchronizuj teraz", "Wymuś przesłanie wszystkich" i "Synchronizuj cyklicznie". To by wymagało pewnie wprowadzenia jakiejś warstwy abstrakcji dla listy spisu nazwisk, żeby logika prawej części panelu pozostała bez zmian, a jedynie w lewej części panelu wczytywać informacje z .rrt zamiast MySQLa.

  2. RRB oczywiście nie trzyma osobno imienia i nazwiska zawodnika. To sprawia, że trzeba zgadywać przy skracaniu imienia do inicjału.
    W CEZaRze są trzy pozycje zawierające spację w nazwisku (tj. więcej niż jedno słowo w nazwisku) oraz nikogo, kto by miał spację w imieniu - strzelam, że dlatego, że drugie imiona są trzymane osobno i nie wystawiane w CSVce. Narzuca się więc traktowanie ciągu do pierwszej spacji jako imienia, a całej reszty jako nazwiska.
    Spotkaliście się kiedyś z jakimś przypadkiem upartego uczestnika, który upierałby się przy wyświetlaniu go w wynikach jako "Anna Maria", "Jan Maria", "Jan Paweł", czy cokolwiek?
    Przy okazji patrzenia w nietypowe nazwiska, okazało się, że przydałoby się również podmienić poczciwą metodę bezOgonkow na coś, co nie będzie sprawiać problemów przy okazji różnych Jørgensenów.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.