diff options
-rw-r--r-- | template/content/2019/01/03/generating-and-verifying-boards-with-squaredeal.tpl | 276 |
1 files changed, 206 insertions, 70 deletions
diff --git a/template/content/2019/01/03/generating-and-verifying-boards-with-squaredeal.tpl b/template/content/2019/01/03/generating-and-verifying-boards-with-squaredeal.tpl index 04c2ef9..864bfda 100644 --- a/template/content/2019/01/03/generating-and-verifying-boards-with-squaredeal.tpl +++ b/template/content/2019/01/03/generating-and-verifying-boards-with-squaredeal.tpl @@ -5,7 +5,7 @@ </a> </div> -<div class="panel panel-defualt"> +<div class="panel panel-defualt container"> <div class="panel-body"> <p>Artykuł ma na celu pokazanie obsługi programu SquareDeal.</p> <p>SquareDeal dostępny jest do ściągnięcia za darmo <a href="https://www.xs4all.nl/~sater/SquareDeal.zip">ze strony producenta</a>.</p> @@ -18,149 +18,241 @@ </div> <div class="panel-body"> <div class="row"> - <div class="col-4"> + <div class="col-sm-2"> + <a href="/_img/generating-and-verifying-boards-with-squaredeal/01-01.png"> + <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/01-01.png"> + </a> </div> - <div class="col-8"> + <div class="col-sm-10"> + Uruchamiamy SquareDeal po raz pierwszy. Program nie wykrył żadnych turniejów, dla których mielibyśmy generować rozdania. Wybieramy opcję utworzenia nowego turnieju, wpisując <kbd>+</kbd>. </div> </div> <div class="row"> - <div class="col-4"> + <div class="col-sm-2"> + <a href="/_img/generating-and-verifying-boards-with-squaredeal/01-02.png"> + <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/01-02.png"> + </a> </div> - <div class="col-8"> + <div class="col-sm-10"> + Nadajemy naszemu turniejowi nazwę - prefiks plików generowanych przez SquareDeal (ale nie prefiks generowanych plików z rozkładami): <kbd>test</kbd>. </div> </div> <div class="row"> - <div class="col-4"> + <div class="col-sm-2"> + <a href="/_img/generating-and-verifying-boards-with-squaredeal/01-03.png"> + <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/01-03.png"> + </a> </div> - <div class="col-8"> + <div class="col-sm-10"> + Dostajemy możliwość ustawienia informacji o zawodach. Nadajemy turniejowi opis/nazwę, wybierając opcję <kbd>1</kbd> i podając: <kbd>Testowy Turniej</kbd>. </div> </div> <div class="row"> - <div class="col-4"> + <div class="col-sm-2"> + <a href="/_img/generating-and-verifying-boards-with-squaredeal/01-04.png"> + <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/01-04.png"> + </a> </div> - <div class="col-8"> + <div class="col-sm-10"> + Opcja <kbd>2</kbd> pozwala ustawić opis <em>informacji opóźnionej</em>. My wybraliśmy wyniki losowania Lotto, zapisane jednym ciągiem, a opis ten zapisaliśmy bez polskich znaków. Uwaga: opis ten jest używany zamiast <em>informacji opóźnionej</em> jeśli nie ustawimy jej przed wygenerowaniem rozdań. </div> </div> <div class="row"> - <div class="col-4"> + <div class="col-sm-2"> + <a href="/_img/generating-and-verifying-boards-with-squaredeal/01-05.png"> + <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/01-05.png"> + </a> </div> - <div class="col-8"> + <div class="col-sm-10"> + W końcu, opcja <kbd>3</kbd> pozwala na określenie struktury naszych zawodów. Nasz przykładowy turniej ma strukturę znaną z GPP Par - 50 rozdań, granych w kolejności 1-30, 1-20. Dodajemy pierwszą fazę, złożoną z <kbd>1</kbd> <em>sesji</em> (w nazewnictwie SquareDeal: jednego pliku PBN) liczącej <kbd>30</kbd> rozdań. </div> </div> <div class="row"> - <div class="col-4"> + <div class="col-sm-2"> + <a href="/_img/generating-and-verifying-boards-with-squaredeal/01-06.png"> + <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/01-06.png"> + </a> </div> - <div class="col-8"> + <div class="col-sm-10"> + Uzupełniamy prefiks dla generowanych plików PBN (<kbd>test1</kbd>) oraz opis pierwszej fazy zawodów. Wszystkie wpisane tu informacje trafią do pliku upublicznianego przed wygenerowaniem rozkładów na zawody. </div> </div> <div class="row"> - <div class="col-4"> + <div class="col-sm-2"> + <a href="/_img/generating-and-verifying-boards-with-squaredeal/01-07.png"> + <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/01-07.png"> + </a> </div> - <div class="col-8"> + <div class="col-sm-10"> + Powtarzamy operację dla drugiej fazy turnieju - <kbd>1</kbd> <em>sesja</em>, licząca tym razem <kbd>20</kbd> rozdań. </div> </div> <div class="row"> - <div class="col-4"> + <div class="col-sm-2"> + <a href="/_img/generating-and-verifying-boards-with-squaredeal/01-08.png"> + <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/01-08.png"> + </a> </div> - <div class="col-8"> + <div class="col-sm-10"> + W dowolnym momencie możemy zakończyć pracę programu, wybierając opcję <kbd>0</kbd> i potwierdzając <kbd>ENTER</kbd>em. Wszystkie zmiany zostaną zapisane. </div> </div> <div class="row"> - <div class="col-4"> + <div class="col-sm-2"> + <a href="/_img/generating-and-verifying-boards-with-squaredeal/01-09.png"> + <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/01-09.png"> + </a> </div> - <div class="col-8"> + <div class="col-sm-10"> + SquareDeal utworzył dla naszego turnieju dwa pliki: <code>test.sqd</code> i <code>test.sqk</code>. Ten pierwszy zostanie niedługo podany do publicznej wiadomości, tego drugiego <strong>nie możemy ujawniać</strong> aż do rozegrania rozdań. </div> </div> <div class="row"> - <div class="col-4"> + <div class="col-sm-2"> + <a href="/_img/generating-and-verifying-boards-with-squaredeal/01-10.png"> + <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/01-10.png"> + </a> </div> - <div class="col-8"> + <div class="col-sm-10"> + Plik <code>SQD</code> (<em>SQuare deal Definition</em>) zawiera ustalone przez nas, publicznie znane, parametry rozgrywanych zawodów: wybraną przez nas liczbę sesji, liczbę rozdań dla każdej sesji i ich opis oraz zadeklarowaną przez nas <em>informację opóźnioną</em>. </div> </div> <div class="row"> - <div class="col-4"> + <div class="col-sm-2"> + <a href="/_img/generating-and-verifying-boards-with-squaredeal/01-11.png"> + <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/01-11.png"> + </a> </div> - <div class="col-8"> + <div class="col-sm-10"> + Plik <code>SQK</code> (<em>SQuare deal Key</em>) zawiera <strong>poufne</strong> dane losowe, które posłużą (w połączeniu z <em>informacją opóźnioną</em>) do wygenerowania rozdań w poszczególnych sesjach. </div> </div> <div class="row"> - <div class="col-4"> + <div class="col-sm-2"> + <a href="/_img/generating-and-verifying-boards-with-squaredeal/01-12.png"> + <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/01-12.png"> + </a> </div> - <div class="col-8"> + <div class="col-sm-10"> + Jeśli zdecydowaliśmy, że struktura turnieju (i deklarowana przez nas <em>informacja opóźniona</em>) już się nie zmieni, przygotowujemy pliki turnieju do publikacji, wybierając opcję nr <kbd>4</kbd>. Program automatycznie zakończy po tej operacji pracę. </div> </div> <div class="row"> - <div class="col-4"> + <div class="col-sm-2"> + <a href="/_img/generating-and-verifying-boards-with-squaredeal/01-13.png"> + <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/01-13.png"> + </a> </div> - <div class="col-8"> + <div class="col-sm-10"> + W pliku <code>SQD</code> pojawiła się informacja (<kbd>PU</kbd> w linii 6), że plik jest gotowy do publikacji. </div> </div> </div> </div> -<div class="panel panel-default"> +<div class="panel panel-default contaienr"> <div class="panel-heading"> <h2>Wprowadzenie informacji opóźnionej, wygenerowanie rozdań (przed turniejem)</h2> </div> <div class="panel-body"> <div class="row"> - <div class="col-4"> + <div class="col-sm-2"> + <a href="/_img/generating-and-verifying-boards-with-squaredeal/02-01.png"> + <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/02-01.png"> + </a> </div> - <div class="col-8"> + <div class="col-sm-10"> + Ponowne uruchomienie programu i wybraniu naszego turnieju, otrzymujemy teraz (po ustawieniu flagi publikacji) zupełnie inny zestaw opcji do wyboru. </div> </div> <div class="row"> - <div class="col-4"> + <div class="col-sm-2"> + <a href="/_img/generating-and-verifying-boards-with-squaredeal/02-02.png"> + <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/02-02.png"> + </a> </div> - <div class="col-8"> + <div class="col-sm-10"> + Wybór opcji nr <kbd>1</kbd> pozwala ustawić wartość naszej <em>informacji opóźnionej</em>. Wpisujemy więc wyniki zadeklarowanego przez nas wcześniej losowania Lotto: <kbd>62024334447</kbd>. </div> </div> <div class="row"> - <div class="col-4"> + <div class="col-sm-2"> + <a href="/_img/generating-and-verifying-boards-with-squaredeal/02-03.png"> + <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/02-03.png"> + </a> </div> - <div class="col-8"> + <div class="col-sm-10"> + Możemy przystąpić do generowanie rozdań. Wybieramy opcję nr <kbd>2</kbd>. Generujemy najpierw plik dla pierwszej (<kbd>1</kbd>) fazy turnieju. Mamy w niej zdefiniowaną jedną <em>sesję</em> (plik PBN), więc możemy wygenerować wszystkie (<kbd>*</kbd>) sesje. </div> </div> <div class="row"> - <div class="col-4"> + <div class="col-sm-2"> + <a href="/_img/generating-and-verifying-boards-with-squaredeal/02-04.png"> + <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/02-04.png"> + </a> </div> - <div class="col-8"> + <div class="col-sm-10"> + Przy pierwszej okazji program (właściwie: sam BigDeal) zapyta nas o parametry konfiguracji generowania rozdań. Najpierw - o formaty plików, jakie chcemy otrzymać. Domyślny wybór (<code>dup,pbn</code>) wygeneruje po dwa pliki dla każdego zestawu rozkładów i pozwoli obsłużyć oba popularne w Polsce typy maszyn do powielania. Jeśli potrzebujemy jedynie plików <code>PBN</code>, możemy wpisać na tym etapie tylko <kbd>pbn</kbd>. </div> </div> <div class="row"> - <div class="col-4"> + <div class="col-sm-2"> + <a href="/_img/generating-and-verifying-boards-with-squaredeal/02-05.png"> + <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/02-05.png"> + </a> </div> - <div class="col-8"> + <div class="col-sm-10"> + Następnie BigDeal spyta, czy ma za każdym razem pytać o formaty plików, jakie chcemy generować. Domyślna wartość to <kbd>no</kbd> ("nie"). </div> </div> <div class="row"> - <div class="col-4"> + <div class="col-sm-2"> + <a href="/_img/generating-and-verifying-boards-with-squaredeal/02-06.png"> + <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/02-06.png"> + </a> </div> - <div class="col-8"> + <div class="col-sm-10"> + W końcu - BigDeal spyta nas o nasz identyfikator sędziego (np. imię i nazwisko). Wartość ta była używana w tradycyjnej wersji BigDeal jako część danych losowych służących do generowania rozdań. SquareDeal, dając możliwość wygenerowania (weryfikacji) tych samych rozdań wielu osobom, z tej wartości nie korzysta. </div> </div> <div class="row"> - <div class="col-4"> + <div class="col-sm-2"> + <a href="/_img/generating-and-verifying-boards-with-squaredeal/02-07.png"> + <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/02-07.png"> + </a> </div> - <div class="col-8"> + <div class="col-sm-10"> + Analogicznie, generujemy rozdania dla wszystkich (<kbd>*</kbd>) <em>sesji</em> fazy turnieju nr <kbd>2</kbd>. </div> </div> <div class="row"> - <div class="col-4"> + <div class="col-sm-2"> + <a href="/_img/generating-and-verifying-boards-with-squaredeal/02-08.png"> + <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/02-08.png"> + </a> </div> - <div class="col-8"> + <div class="col-sm-10"> + W katalogu programu utworzone zostały pliki <code>test1.pbn</code> i <code>test2.pbn</code> - to nasze rozkłady na turniej, możemy je przekazać do powielarni. </div> </div> <div class="row"> - <div class="col-4"> + <div class="col-sm-2"> + <a href="/_img/generating-and-verifying-boards-with-squaredeal/02-09.png"> + <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/02-09.png"> + </a> </div> - <div class="col-8"> + <div class="col-sm-10"> + Możemy też zakończyć działanie SquareDeal. Jeżeli nie zrobiliśmy tego wcześniej, program zapisze ustaloną już wartość <em>informacji opóźnionej</em> do pliku <code>SQD</code>. </div> </div> <div class="row"> - <div class="col-4"> + <div class="col-sm-2"> + <a href="/_img/generating-and-verifying-boards-with-squaredeal/02-10.png"> + <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/02-10.png"> + </a> </div> - <div class="col-8"> + <div class="col-sm-10"> + Gdyby na tym etapie ktokolwiek poza generującym rozkłady (tj. posiadaczem pliku <code>SQK</code>) próbował uruchomić SquareDeal i wybrać do edycji ściągnięty plik <code>SQD</code>, program nie pozwoli na żadne operacje - brakuje bowiem pliku <code>SQK</code>, niezbędnego do wygenerowania rozdań. </div> </div> </div> @@ -172,69 +264,113 @@ </div> <div class="panel-body"> <div class="row"> - <div class="col-4"> + <div class="col-sm-2"> + <a href="/_img/generating-and-verifying-boards-with-squaredeal/03-01.png"> + <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/03-01.png"> + </a> </div> - <div class="col-8"> + <div class="col-sm-10"> + Po turnieju przekazaliśmy zawodnikom również plik <code>SQK</code>. Po umieszczeniu go w katalogu programu, tym raze SquareDeal pozwala operować na nim dokładnie tak samo, jak pozwalał dotychczas rozdającemu. Wita nas dokładnie to samo menu. </div> </div> <div class="row"> - <div class="col-4"> + <div class="col-sm-2"> + <a href="/_img/generating-and-verifying-boards-with-squaredeal/03-02.png"> + <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/03-02.png"> + </a> </div> - <div class="col-8"> + <div class="col-sm-10"> + Możemy (a nawet: musimy) ustawić ustaloną <em>informację opóźnioną</em>, za pomocą opcji nr <kbd>1</kbd>. </div> </div> <div class="row"> - <div class="col-4"> + <div class="col-sm-2"> + <a href="/_img/generating-and-verifying-boards-with-squaredeal/03-03.png"> + <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/03-03.png"> + </a> </div> - <div class="col-8"> + <div class="col-sm-10"> + Możemy również, w dokładnie taki sam sposób, wygenerować rozkłady dla poszczególnych sesji turnieju. Jak dotychczas, służy do tego opcja nr <kbd>2</kbd>. </div> </div> <div class="row"> - <div class="col-4"> + <div class="col-sm-2"> + <a href="/_img/generating-and-verifying-boards-with-squaredeal/03-04.png"> + <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/03-04.png"> + </a> </div> - <div class="col-8"> + <div class="col-sm-10"> + Dla naszego hipotetycznego zawodnika sprawdzającego wiarygodność rozkładów, jest to pierwsze uruchomienie programu, więc również i on musi przejść przez konfigurację BigDeala, opisaną powyżej. </div> </div> <div class="row"> - <div class="col-4"> + <div class="col-sm-2"> + <a href="/_img/generating-and-verifying-boards-with-squaredeal/03-05.png"> + <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/03-05.png"> + </a> </div> - <div class="col-8"> + <div class="col-sm-10"> + Wybieramy najmniej natarczywą opcję... </div> </div> <div class="row"> - <div class="col-4"> + <div class="col-sm-2"> + <a href="/_img/generating-and-verifying-boards-with-squaredeal/03-06.png"> + <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/03-06.png"> + </a> </div> - <div class="col-8"> + <div class="col-sm-10"> + ...a także ustawiamy inne niż dla rozdającego dane identyfikujące - pokażemy, że nie wpływają one na możliwość weryfikacji rozkładów. </div> </div> <div class="row"> - <div class="col-4"> + <div class="col-sm-2"> + <a href="/_img/generating-and-verifying-boards-with-squaredeal/03-07.png"> + <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/03-07.png"> + </a> </div> - <div class="col-8"> + <div class="col-sm-10"> + Generujemy również rozkłady dla fazy turnieju nr <kbd>2</kbd>. </div> </div> <div class="row"> - <div class="col-4"> + <div class="col-sm-2"> + <a href="/_img/generating-and-verifying-boards-with-squaredeal/03-08.png"> + <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/03-08.png"> + </a> </div> - <div class="col-8"> + <div class="col-sm-10"> + Po wygenerowaniu rozdań, jesteśmy w stanie stwierdzić, że są one identyczne z tymi, które wygenerował i powielił na turniej organizator. </div> </div> <div class="row"> - <div class="col-4"> + <div class="col-sm-2"> + <a href="/_img/generating-and-verifying-boards-with-squaredeal/03-09.png"> + <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/03-09.png"> + </a> </div> - <div class="col-8"> + <div class="col-sm-10"> + Możemy również sprawdzić, co by było, gdyby w Lotto wypadły inne numery. Udowodni to, że organizator nie był w stanie przewidzieć (więc: zmanipulować) rozkładów turnieju. Założmy, że w losowaniu padły numery: <code>4</code>, <code>8</code>, <code>15</code>, <code>16</code>, <code>23</code>, <code>42</code>. Zgodnie z przyjętą konwencją, <em>informacja opóźniona</em> przyjmuje wtedy wartość <kbd>4815162342</kbd>. </div> </div> <div class="row"> - <div class="col-4"> + <div class="col-sm-2"> + <a href="/_img/generating-and-verifying-boards-with-squaredeal/03-10.png"> + <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/03-10.png"> + </a> </div> - <div class="col-8"> + <div class="col-sm-10"> + Generujemy teraz ponownie rozdania... </div> </div> <div class="row"> - <div class="col-4"> + <div class="col-sm-2"> + <a href="/_img/generating-and-verifying-boards-with-squaredeal/03-11.png"> + <img class="img-thumbnail" src="/_img/generating-and-verifying-boards-with-squaredeal/thumbs/03-11.png"> + </a> </div> - <div class="col-8"> + <div class="col-sm-10"> + ...i widzimy, że faktycznie różnią się od tych, którymi grany był turniej! </div> </div> </div> |