20.05.2008

Przegraliśmy pietruszkę

Tradycyjnie nasi środkowi pozawodzili i na meczu ze środkowych był tylko Wygos. Jednak skoro stawka spotkania nie była duża, więc zastosowaliśmy najzabawniejszy możliwy wariant i w ten sposób pierwszy raz w tym sezonie zagrałem na środku.
Bawiłem się świetnie, pamięć krótkotrwałą uszkodziłem sobie na popijawie po meczu, a od samego meczu parę dni minęło, więc większość szczegółów mi umknęła, dlatego nie będę się rozpisywał o przebiegu meczu. Wygraliśmy pierwszego seta, schrzaniliśmy początek drugiego (z 1-7 ciężko się goni), przegraliśmy trzeciego, wygraliśmy czwartego po świetnej końcówce, kiedy przegrywaliśmy 19-21 i marzyłem tylko o tym, żeby nikt nie zagrał w moją stronę. Jakim cudem nie zrobiłem w końcówce żadnego błędu nie wiem, piłka odbijała się we właściwą stronę widocznie. Przy 23-23 Czajnik poszedł na zagrywkę i przeleciało mi przez głowę, że ta zagrywka zdecyduje o wszystkim. Czajnik trafił asa, a w następnej piłce zatrzymałem atak na prawym skrzydle i powtórkę na lewym (choć powtórka była już w taśmę).
Wyglądało na to, że nasza taktyka na tie-break działa. Piter zmienił Wygosa w drugiej linii, weszła mu zagrywka i strony zmienialiśmy prowadząc 8-3. Wystarczyło dowieźć przewagę do końca i wszystko wskazywało na to, że się uda. było już 13-9 kiedy na zagrywkę wszedł niejaki QBA i urządził rzeź niewiniątek. Lolek 2 razy wpuścił piłkę w pole a kolejną przebił na drugą stronę, Wygos zamiast skończyć przechodzącą lub zostawić ją Czajnikowi, podbił ją możliwie daleko od Winiego, a jedyne dobre przyjęcie skończyło się widowiskowym atakiem Wygosa w siatkę. Czajnik dostał bloka, a Szyba zdjął mi piłkę z rąk i nie dałem rady jej podbić, więc przy meczowej ja zdjąłem piłkę z rąk Szybie i wygranego tie-breaka przegraliśmy...
Pocieszająca w naszej grze była bardzo duża ilość podbitych piłek w obronie, zmartwić za to musiało kiepskie przyjęcie - z pewnością zbyt kiepskie jak na potrzeby Winiego.
Oceny (dziś w duchu po reformie oświaty ocena opisowa):
  • Wini - poprawnie jak na rekonwalescenta. Szybkość mu się nie poprawiła, nie zawsze był dokładny, ale i tak zagrał lepiej niż jego nieudolny zastępca w dwóch ostatnich meczach. W tie-breaku nie przyznał się do bloku przy bardzo ważnej piłce - skutecznie.
  • Czajnik - świetnie. 3/4 piłek kierowane było do Czajnika, a to, ile asów Czajnik zdobędzie w serii przesądzało o zwycięstwie lub przegranej. On sam ma do siebie pewne pretensje za nieudany skrót, czapę i coś tam jeszcze, ale to nie zmienia faktu, ze gdybyśmy wygrali tie-breaka, to on byłby bezsprzecznie graczem meczu.
  • Szyba - chyba dobrze. Trudno mi powiedzieć, bo nie do mnie trafiały piłki po przyjęciu a ataki i tak szły do Czajnika, więc trudno mi podać odpowiednie przykłady. W pamięci utkwił mi jedynie śliczny atak z mojej wystawy i 2 obrony piłek, które powinienem wziąć a mnie tam nie było.
  • Lolek - nierówno. Przez cały mecz narzekał, że nie dostaje piłek i, jak to zwykle on, brylował w zabawnych choć nie trafionych usprawiedliwieniach. Wytłumaczeniem czemu nie odebrał dwóch asów było, że nie chciał, by Wini biegał... Przez cztery sety miał za mało okazji, by się wykazać, a w piątym został wybrany na jelenia i potulnie się z tej roli wywiązał.
  • Piter - całkiem dobrze - wzmocnił 2 razy przyjęcie (nie tak bardzo jak byśmy chcieli ale zawsze), zawalczył na zagrywce, parę razy zagrał ładnie w obronie.
  • Wygos - tak sobie. Coś tam robił na siatce, coś skończył, przyjmował nieźle. Ale 2 (de facto) zepsutych w końcówce piłek mu nie mogę darować.
  • Gorzki - trudno powiedzieć. Z jednej strony 4 bloki punktowe, 3 podbite i 4 wybloki, 1 as, parę fajnych obron spod samej siatki i świetne przyjęcie (chyba 2 trudne dla Winiego, jedna przebita do przeciwników od razu a reszta dobrych). Z drugiej strony 2 piłki w ataku oddane gratis, 1 przebita i 1 stracona z sytuacyjnych, i 3 przegrane piłki na siatce. Do tego obrony były wynikiem tego, że czatowałem na nie pod siatką, a dalekie piłki wybierał za mnie Piter z Szybą.

11.05.2008

Ponoć najgorszy nasz mecz w tym roku

Niby wygraliśmy, ale jakoś mało radości sprawiła ta wygrana.
Pierwszy set zaczęliśmy tragicznie, z sześcioma punktami w plecy przy stanie 12-18. Mimo wszystko udało nam się wyrównać na 23-23, ale niestety straciliśmy potem 2 punkty z rzędu i całego seta 23-25.
Cały drugi set siedzieliśmy przeciwnikom na piętach aż do końcówki (19-20) kiedy ze zdenerwowania zapomniałem, że w pierwszej linii mam Czajnika i Pitera. Z konieczności więc 4 piłki z rzędu dostał Wygos (i wszystkie skończył). Dopiero przy setowej uświadomiłem sobie, że to Czajnik jest naszym głównym atakującym, więc rzuciłem piłkę na prawe skrzydło.... do Pitera. ;P
Na początku trzeciego seta uznałem, że jak Piter skończył, to może i zacząć i zaczął dobrze. Wyglądało na to, że zmiażdżymy przeciwników aż... cóż, obiecałem nie narzekać na przyjęcie, ale dwie piłki, do których biegłem z lewej bocznej linii po to, żeby je podbić zza prawej linii, były symptomatyczne dla tego krótkiego okresu czasu, kiedy prowadzenie 7-1 zamieniliśmy na 7-9. Tym razem jednak Czajnik nie chciał czekać na to kogo wybiorę na bohatera końcówki i tradycyjnie dla siebie w okolicach piętnastego punktu dołożył serię zagrywek aż przeciwnicy ratowali się czasem... dając Czajnikowi tak przydatną chwilę odpoczynku. Dzięki temu trzeci set padł naszym łupem.
Czwarty set miał się obyć bez historii i spokojnie prowadziliśmy zdobywając punkt po punkcie... Niestety w końcówce dziewczyny (i jeden inwalida) uparli się by zapewnić sędziemu emocjonującą końcówkę. Przeciwnicy doszli nas na 23-23 i dopiero wtedy przestaliśmy się wygłupiać. W końcu udało nam się zakończyć ten mecz wygrywając czwartego seta 27-25.
Oceny:
  • Gorzki może i nastąpiła znacząca poprawa w porównaniu z poprzednim występem, ale oznacza to jedynie tyle, że popełniałem mniej błedów, bo nie dostawałem tyle piłek co do tej pory i tyle. Chociaż jeden pozytyw - wreszcie trafiałem jako tako do Wygosa. 3+
  • Czajnik co dostał to (poza dwoma przypadkami) skończył, zaliczył ładne serie zagrywek. Co najważniejsze - zwrzeszczał wszystkich naprawdę skutecznie, bez czego pewnie dostalibyśmy widowiskowo w tyłek. 4+
  • Piter zagrał fajnie w ataku, ale kiepsko w przyjęciu, a zagrywka mu raczej nie siedziała. 3+
  • Szyba w odbiorze chyba podobnie do Pitera, ale radził sobie z moimi szybkimi piłkami gdy miał dostać normalną, z wysokimi za antenkę gdy miał dostać szybką i zaliczył 2 fajne bloki. 4-
  • Paweł widać że jeszcze trochę się obawia o swoją nogę po kontuzji, a i do pełni formy nie wrócił. Z Pawłem niestety problem jest taki, że trzeba umieć z nim grać, więc nie miał okazji by się popisać. 3+
  • Wygos skuteczność miał naprawdę niezłą, a co najważniejsze - radził sobie nawet kiedy dostał piłkę ponad metr za plecy i na wysokość swojej głowy. W bloku musi się jeszcze nauczyć skakać przodem do siatki a nie prawym bokiem. 4+
  • Rafał Ponoć zagrał paskudnie w odbiorze (co w wypadku libero chyba jest ważne), ale z drugiej strony parę razy fajnie coś wyciągnął... powiedzmy 3

7.05.2008

Specyfikacje throw(...) i bezpieczeństwo wyjątków

Czy pisać specyfikacje throw()? To pytanie zadawało sobie wielu ekspertów. Oprę się na wnioskach Herba Suttera (stąd):
  • Moral #1: Never write an exception specification.
  • Moral #2: Except possibly an empty one, but if I were you I’d avoid even that.
Czyli nie piszemy specyfikacji throw()... No to w takim razie olewać co funkcje rzucają? Lepiej nie. Sensowne wydaje się pisanie tego w komentarzu.
Warto zawrzeć informacje:
  • jeśli to funkcja wirtualna, to warto napisać, jakiej klasy funkcję zastępuje /** @note @e overrides Klasa */
  • jeśli funkcja nie jest wirtualna i przesłania inną, również warto to napisać /** @note @e hide Klasa */
  • co funkcja może rzucać /** @throws co kiedy */
  • jak się zachowa w razie wyjątku, czyli bezpieczeństwo wyjątków /** @note @e safety --- */ (o tych --- za chwilę)
Ponownie powołam się na Herba Suttera, który fajnie opisał tę sprawę.
Opis bezpieczeństwa w razie wyjątku składa się z 3 części:
  • Atomicity - niepodzielność. 3 możliwości: 1) [-] brak, 2) [a] niepodzielność - czyli całość albo wcale, 3) [A] na pewno całość - czyli gwarancja powodzenia operacji.
  • Consistency - spójność. 3 możliwości: 1) [-] brak, 2) [c] w razie niepowodzenia system pozostaje spójny, 3) [C] niezależnie od powodzenia lub nie, system pozostaje spójny. W kontekście programowania, ma sens rozpatrywanie tylko możliwości 3) [C] - każda funkcja musi po sobie pozostawiać program w stanie spójnym, niezależnie od tego czy wystąpił błąd, czy nie.
  • Isolation - brak skutków ubocznych. 3 możliwości: 1) [-] skutki uboczne występują niezależnie od powodzenia operacji, 2) [i] skutki uboczne występują tylko w przypadku powodzenia operacji, 3) [I] całkowity brak skutków ubocznych
Sutter pisze jeszcze o Durability - jak to z modelu baz danych - ale my się tym nie będziemy zajmować. Rzadko w programowaniu będziemy pilnować, czy wynik działania operacji przetrwa w razie jakichś kataklizmów typu upadek systemu...
Oznaczenia: Każdą z wymienionych powyżej 3 części opisu bezpieczeństwa będziemy oznaczać zależnie od poziomu bezpieczeństwa przy pomocy 3 znaków, z których każdy będzie odpowiadał jednej z części.
Przykłady:
  • /** @note @e safety AC- */ oznacza, że operacja zawsze się powiedzie (ekwiwalent throw()); może emitować skutki uboczne.
  • /** @note @e safety -CI */ oznacza, że w razie niepowodzenia, obiekty pozostaną w stanie spójnym[C], ale nie wiadomo jakim; niezależnie od powodzenia, nie wystąpią żadne skutki uboczne.
  • /** @note @e safety aCi */ oznacza silną gwarancję Abrahama, czyli w razie niepowodzenia system będzie w takim stanie, jakby wywołanie funkcji nie nastąpiło; dotyczy to także skutków ubocznych.