Month: February 2016

Twilight Struggle online – jak ustawić

Posted on

Ku pamięci jak grać w TS online gdy po jakimś czasie do niej wracam.
http://boardgamegeek.com/thread/961856/how-to-play-twilight-struggle-on-vassal

Cały watek jak grać jest fajny.

1. Make a folder somewhere called ‘Vassal for Twilight Struggle’
2. Go to the release archive here: http://www.vassalengine.org/releases/
3. Get Vassal-3.1.19-windows.exe and save it in your ‘Vassal for Twilight Struggle’ folder. (Remember, we’re doing this because Twilight Struggle only works on the 3.1.19 version, not the latest one).
4. Then go to the module page: http://www.vassalengine.org/wiki/Category:Modules
5. Navigate to Twilight Struggle, on the ‘T’ page.
6. Download ‘Twilight Struggle-Deluxe-3.0.10a.vmod’ to the ‘Vassal for Twilight Struggle’ folder.
7. Open your ‘Vassal for Twilight Struggle’ folder. Double click the Vassal install file, and install it (I did in the same folder to keep it neat)
8. Start Vassal.
9. From the file menu, open module. Choose Twilight Struggle. Let it do its thing.

Gramy Original with optional cards.

Option zamiast wzorca TryGetValue(…, out value)

Posted on

Przedstawię dziś klasę całkiem naturalną z punktu widzenia programisty funkcyjnego. Gdyby to przełożyć na język bliski naturalnemu to jest to konstrukcja, która “albo posiada wartość zadeklarowanego typu, albo tej wartości nie ma”. Posłużę się od razu przykładami.

Są przypadki, gdzie nie wiemy czy dostaniemy wartość czy nie. Klasyczny przypadek to parsowanie. Gdy korzystamy z wzorca TryGetX kod wygląda:

int value;
if(int.TryParse(currentLine, out value))
{
    // happy path
}
else
{
    // else path
}

Typ ten można przekazywać dalej do innych funkcji lub zwracać z aktualnej funkcji. Dzięki temu dalej w flow działania aplikacji nie potrzebujemy 2 różnych funkcji przyjmujących raz happy path a raz failure path. Ostatecznie na końcu i tak trzeba “rozpakować” tą wartość, ale po drodze mogą zdarzyć się na przykład funkcje logujące, albo obsługujące wspólnie “brak danych” jak np HTTP 404. W przykładzie z TryGetX() wiadomość o sukcesie mamy tylko

var maybeResult = GetResults(data);
if(maybeResult.HasValue == false)
{
    return HttpStatusCode.NotFound; // 404
}

Jak na przykład może wyglądać taka klasa (inne nazwy to Maybe):

Debiuty szachowe

Posted on Updated on

Po wielu latach wracam do gry w szachy. Tym razem jednak podchodzę do sprawy bardziej profesjonalnie. Czytam książkę i jeszcze bardziej uczę się debiutów.

https://gameknot.com/chess-opening/ – dużo debiutów, najczęściej korzystam

http://www.chessgames.com/index.html – obok każdego możliwego ruchu jest ilość gier które poszły tym wariantem. Dzięki temu uczę się tych bardziej grywanych ruchów.

Dodatkowo wybiorę się na kółko szachowe, gdzie porozmawiam sobie z trenerem czego i jak należy się uczyć.