Inne rozkosze

8 marzec 2010 21:06

Dwadzieścia lat temu pewien weterynarz w średnim wieku wsiadł w Krakowie do autobusu miejskiego i zobaczył cudowną kobietę. Nie byłoby w tym nic dziwnego, wszak codziennie w Krakowie do autobusów miejskich wsiadają tysiące pasażerów i zapewne jest wśród nich co najmniej kilku weterynarzy w średnim wieku. Pięknych kobiet w autobusach także nie brakuje, jednak tym co różni naszą codzienność od podróży doktora Kohoutka, jest nie tylko brak linii pospiesznej A, skasowanej wiele lat temu, ale i dalszy ciąg zaczynającej się właśnie w ten sposób historii…

Inne rozkosze

Gdyby chcieć być kronikarzem chronologicznym, wypadałoby się cofnąć całe pokolenia Kohoutków wstecz, opowiedzieć historię wielkiej rzeźni i każdego kolejnego małżeństwa budującego ród, wyjaśnić dlaczego dobrzy protestanci nie umierają w zimie aby w końcu dotrzeć do doktora weterynarii Pawła Kohoutka, wiślańskiego – nie bójmy się tego określenia – jebaki, który na swoje łowy wymyka się do Krakowa. Tam poznaje kolejne swoje Aktualne Kobiety, jednak pech chce, że jedna z nich pakuje swoje rzeczy i wyjeżdża na zawsze do Wisły, aby tam spędzić życie z Kohoutkiem. Pomysł okazuje się być całkiem sensowny, jednakże Kohoutek boi się reakcji domowników: Omy, Matki Kohoutka, Ojca Kohoutka, Pastora, Pastorowej, Żony Kohoutka i nigdy nie określonego w książce pod kątem płci Dziecka Kohoutka.

„Inne rozkosze” reprezentują dość wczesny okres w twórczości Jerzego Pilcha. Nieco później zaczyna razić jego żonglowanie tymi samymi postaciami, tymi samymi nazwiskami i w końcu tymi samymi miejscami w Wiśle. Fakt, kontekst zawsze się zmienia, jednak w tym przypadku Wisła i jej uwarunkowania faktycznie zdają się być elementem powieści. Osobiście sięgnąłem po „Inne rozkosze” po przeczytaniu większości powieści Pilcha i uważam tą książkę za jedną z przyjemniejszych pozycji w jego twórczości. Na pewno jest to książka łatwa w odbiorze, można się przy niej pośmiać, niestety przed jednoznacznym zakwalifikowaniem jej do nurtu literatury humorystycznej broni się jej zakończenie, które trudno uznać za szczęśliwe.

Pewnym aspektem, który dla mnie osobiście jest ważny, jest Kraków, który pojawia się jedynie epizodycznie. Bohater poznaje swoją Aktualną Kobietę w autobusie pospiesznym linii A, z którego obserwuje między innymi budowę Hotelu Chopin koło Ronda Mogilskiego. Autobus ten po ruszeniu spod Dworca Głównego jechał nieprzerwanie właśnie do Ronda Mogilskiego, zatrzymując się dopiero na przystanku u wlotu ulicy Kieleckiej. Tam właśnie rozpoczyna się rozmowa bohatera z poznaną kobietą, po której oboje niebawem z autobusu wysiadają. Wysiadać mogli choćby w Czyżynach, albo na mojej rodzinnej Wieczystej. Zarówno miejsca, jak i autobus są dla mnie elementem mojej historii, mojego kresu dzieciństwa i powolnym wkraczaniem w okres nastoletni. Gargantuiczne wnętrze autobusu, to jak nić środek pojazdu Scania 111 - kilka takich (dość mocno wyeksploatowanych) autobusów było w Krakowie na linii A używane po upadku komuny.

Podsumowując – jest to książka, która warto przeczytać. Sto dwadzieścia stron stanowić może dobrą cezurę naszej skłonności do czytania Pilcha – jeśli nie polubimy go po tej powieści, może nie warto sięgać po następne jego książki. Jeśli jednak polubimy jego pijacko – erotyczny styl, nic nie stoi na przeszkodzie, aby poznawać jego twórczość dalej.

Jerzy Pilch: Inne rozkosze, Wydawnictwo a5, Kraków 2004

Wszystko już było.

3 wrzesień 2009 19:52

Kto wymyślił radio – Marconi czy Popow? Zagadnienie to per saldo dla ludzkości ma znaczenie niewielkie, interesują się tym Rosjanie oraz Włosi. Paradoksalnie bycie odkrywcą czegoś, daje największą satysfakcję samemu odkrywcy i gronu jego znajomych bądź krajan. Z perspektywy wszechświata, nie ma to żadnego znaczenia. W każdym kraju równolegle ktoś może wpaść na genialny pomysł. Cóż jednak z tego, jeśli tak naprawdę pierwszy wynalazca danego przedmiotu żył pięć milionów lat wcześniej pod słońcem innej gwiazdy?

Takie problemy stawia przed czytelnikiem Jacek Dukaj w swej mikropowieści „Córka łupieżcy”. Historia dziejąca się w pierwszej połowie XXI wieku już od pierwszej strony kopie czytelnika w twarz. Nagle znajdujemy się w zupełnie innym świecie, świecie który choć całkowicie różny, jest jednak naszym światem. Dla mnie ten obcy świat jest równocześnie całkowicie realnym dzisiejszym światem – krakowski Rynek, ulica Szewska, krakowskie tramwaje, Wieliczka czy wreszcie Beskid Niski. Wille w stylu „późny Gierek” czy koszulki z podobizną Kazika Staszewskiego. To moja codzienność, mimo że w perspektywie 30 lat półnagie dziewczyny z jędrnymi piersiami w towarzystwie opalonych, muskularnych młodych Polaków zmierzają przez rozgrzany do kilkudziesięciu stopni Celsjusza Rynek do elfiej dzielnicy Krakowa.

Córka łupieżcy

Technika kopania czytelnika w twarz jest w pewien sposób typowa dla Jacka Dukaja. Może w mniejszym stopniu występują ona w niedawnym „Lodzie” jednak we wcześniejszej jego twórczości już od pierwszej strony wciągani jesteśmy w świat powieści. Autor zwraca się do nas językiem bohaterów powieści, sami bohaterowie nie tłumaczą nam swoich przyzwyczajeń, nie spowiadają się do czego służą gadżety, których używają. Wszak czy my sami biorąc do ręki telefon komórkowy analizujemy głośno jego rozwój w ciągu ostatnich lat? Nie robimy tego, i nie robi tego także Jacek Dukaj – tajemnicze czynności i dziwne przedmioty stają się dla nas zrozumiałe w toku powieści. Paradoksalnie efektem tego jest fakt, że często pierwszy rozdział powieści Dukaja czytam po kilka razy.

Akcja „Córki łupieżcy” dzieje się w Krakowie, pod koniec pierwszej połowy XXI wieku. Rozwój cywilizacji jest niesamowity. Modyfikacje genetyczne zapewniły wszystkim chętnym piękne ciała i wysoką inteligencję. Próg pełnoletniości obniżył się do wieku dziesięciu lat, gdyż dzieci z „Generacji T” szybciej się uczyły i skończenie studiów w wieku lat kilkunastu stało się normą. Technologie produkcji ażurowych i wytrzymałych konstrukcji (zwanych z racji wyglądu „elfimi technologiami”) rozpowszechniły się na tyle, że budowa domu trwa zaledwie kilka dni. Wszechobecna, zdawało by się że przecząca prawom fizyki obecność ogólnoświatowej sieci, nie działającej jedynie w ramach komputerów, ale i w ramach istot żywych nikogo już nie dziwi.

Z tego wyścigu nowoczesności wyłamywali się niektórzy mieszkańcy wsi. Życie płynęło dla nich jak dawniej – z tym że zmieniony klimat zabijał ich swoim gorącem. Wyludnione wsie, upadłe PGRy (mimo że Dukaj wprost nie pisze o jaki rejon chodzi, to owe karpackie PGRy wskazują raczej na Beskid Niski) są dla Generacji T nową „ziemią nieodkrytą”. Polaryzacja społeczeństwa jest dość duża, w efekcie niekiedy „miastowi i nowocześni” nie zauważają nawet mieszkańców wsi, nawet jeśli mieszkańcem tym jest młody chłopak w koszulce z hologramem zespołu Kult (jest trochę racji doborze zespołu – mało który zespół trwając tak jednoczy młodych i starych jak Kult).

W tym nowoczesnym świecie Zuzanna Klajn w dzień swoich osiemnastych urodzin otrzymuje prezent od swojego zmarłego ojca. Skrupulatnie zaplanowany mechanizm prawny przekazuje jej tajemniczą szkatułkę. Cóż ciekawego może przekazać swojej córce archeolog , teoretycznie najnudniejszy człowiek na świecie?

Tylko że… wszystko już było. Królową nauk jest archeologia. Czy ma sens trudzenie się nad rozszyfrowaniem zagadek natury, skoro archeolodzy odkopią rozwiązanie owych zagadek, zanim w ogóle badania zdążą się posunąć w kierunku rozwiązania? W ziemi jest odpowiedź na każde pytanie naukowców, każdy wynalazek, jaki może przyjść nam do głowy… To archeolodzy kierują ludzkość na nowe tory…

Zuzanna w prezencie od swojego rodziciela odkrywa coś, co na zawsze zmieni jej życie. Zabierze nas ona w „podróż życia”, zobaczymy rzeczy, o których się nam nie śniło. Na końcu dowiemy się, że – jak zwykle – istnieją „oni”. Oni, którzy zawsze knują tajne spiski.

Niedawno przeczytałem wywiad z Jackiem Dukajem, w którym stwierdził on, iż powieści w stylu „Córki łupieżcy” mógłby produkować taśmowo. Miał też do tej mikropowieści stosunek raczej chłodny, zaliczając ją do mniej udanej części swojej twórczości. Nie mogę się z tym zgodzić – każdy mający choć odrobinę pokory twórca patrząc na swoje wcześniejsze dzieła jest z nich raczej niezadowolony. Jest to jednak etap, który trzeba przejść –bez „Córki łupieżcy” nie byłoby „Lodu”. Niezadowolenie musi istnieć – to nie jest cecha li tylko literatów. To samo będą czuć wszyscy twórcy, nawet ci, których twórczość nie zalicza się do kręgu literatury i sztuki, na przykład programiści. To uniwersalna cecha procesu twórczego.

Warto przeczytać „Córkę łupieżcy” także dla odkrywanych drobnych smaczków. Bogowie w tej książce są złośliwi i czytają Philipa K. Dicka – stąd Wysoki Zamek, czy tabletki ubika. Złośliwy jest także sam Dukaj – matka Zuzanny została ochrzczona w wierze „rydzykowców”, zaś elegancki model BMW nosi nazwę „Arafat”. Przytyków Dukaja do naszej rzeczywistości jest oczywiście dużo więcej, wszak kulturowo bohaterowie należą do naszej rzeczywistości. Niektóre z motywów świata są jedynie nieco przetworzonymi elementami naszego świata. Czyż zresztą mogło by być inaczej? Wszak wszystko już było…

Jacek Dukaj: Córka łupieżcy, Wydawnictwo Literackie, Kraków 2009

W obronie kohezji logicznej

17 lipiec 2009 0:05

W swej znakomitej książce „Code Complete” Steven McConnell rozważa między innymi pojęcie kohezji.  W dużym skrócie – kohezja jest miarą „spoistości” danego modułu, klasy lub funkcji. Im większa kohezja – tym mocniej dana funkcja (klasa, moduł) zorientowana jest na realizację jednego, konkretnego zadania. Perfekcyjnie kohezyjną funkcją jest funkcja sin(), spotykana w wielu językach i licząca sinus z danej wartości. Służy ona do liczenia sinusa i nie ma żadnych efektów ubocznych ani dodatkowego działania. Podobną kohezją cechują się funkcje zwane geterami lub seterami – ich zadaniem jest zwrócić, lub ustawić odpowiednią wartość zapewniając odpowiedni poziom bezpieczeństwa.

W naturze spotka się wiele rodzajów kohezji – od najsilniejszej, funkcjonalnej, gdzie działanie danej funkcji jest ściśle podporządkowane temu, co ma ona uczynić, aż po kohezję przypadkową, którego to terminu nie trzeba chyba wyjaśniać. Istnieje wiele kohezji dobrych (np. kohezja sekwencyjna, występująca wtedy, gdy ważna jest kolejność operacji, które w innej kolejności nie mają sensu), jak i złych. Jedną ze złych kohezji jest kohezja logiczna.

Podstawową ideą kohezji logicznej jest tworzenie funkcji, które wykonują różne zadania, w zależności od przesłanej do nich flagi. Wykonywane funkcje są średnio ze sobą związane, ot najważniejsza jest owa sterująca flaga. McConnell uważa taki rodzaj kohezji za generalnie nieakceptowany.

Pomimo, że generalnie zgadzam się z McConnellem, to jednak dochodzę do wniosku, że myli się on w tej sprawie. Z jednej strony mamy bowiem czystość kodu, z drugiej zaś jego użyteczność. Przypomina mi to sytuację, gdy miałem w funkcji obsługi zdarzenia kod, który w pewnym momencie prosił użytkownika o potwierdzenie. Jakiś czas później musiałem zautomatyzować tą formatkę zapewniając funkcję, która wykona to samo co wspomniana obsługa zdarzenia, klikając „Tak” na zadawane w niej pytanie. Rozwiązaniem problemu był refaktoring kodu obsługującego zdarzenie do nowej funkcji, która otrzymała dodatkowy parametr mówiący czy pokazywać potwierdzenie, czy domyślnie zakładać kliknięcie „Tak”. Funkcja nazywała się InternalSelectItem i jej wywołanie występowało zarówno w obsłudze zdarzenia OnSelectItem (parametr mówiący o potwierdzeniu miał wartość TRUE), oraz w obsłudze automatycznej, gdzie z kolei parametr miał wartość FALSE (dłuższą dyskusję można znaleźć na stackoverlow.com).

Z drugiej strony niedawno w swej pracy stanąłem przed zadaniem dodania kilku funkcjonalności na istniejącej formatce. Formatka prezentowała różne rodzaje bytów („itemów”) które mogły być klasyfikowane na różne sposoby. Istniała cała masa możliwych zmian klasyfikacji dostępnych z menu kontekstowego. Użytkownik zaznaczał sobie dane, które chciał zmienić, wybierał z menu kontekstowego co chce zrobić, a system realizował jego życzenie.

Oczywiście zanim dochodziło do wykonania  operacji, użytkownik musiał potwierdzić chęć wykonania, później należało sprawdzić, czy zaznaczono prawidłowe itemy, potem wykonywano operację, a na końcu odświeżano listę. Całość realizowana jest przez poniższy kod (tu w pseudopascalu):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
procedure TMyForm.PerformOperationOnSelected (APerformingQuery: TSomeQuery; AQuestionText: string; ALimitOperationToAssignedOnly, ALimitOperationToIgnoredOnly:boolean);
var
  li:integer;
  lItemId: integer;
  lMustRefresh:boolean;
begin
  if Grid.SelectedRecordCount = 0 then Exit ;
  if MessageDlg(AQuestionText, mtConfirmation, [mbYes, mbNo], 0) = mrNo then Exit;
  lMustRefresh:=false;
  { Iterating selected records }
  for li := 0 to Grid.SelectedRecordCount - 1 do
  begin
    { If not a valid item, use continue to jump to next iteration}
    if NOT Grid.SelectedRecords[ li ].IsValidItem then Continue ;
    if (ALimitOperationToAssignedOnly) then
    begin
      {Use continue to jump to next iteration if unassigned or igonred}
      if (NULL = Grid.SelectedRecords[ li ].Values[ cAssignmentId ]) then Continue;
      if (cIgnored = Grid.SelectedRecords[ li ].Values[cAssignmentId]) then Continue;
    end;
    if (ALimitOperationToIgnoredOnly) then
    begin
      {Use continue to jump to next iteration if assigned or unassigned – ie limit to ignored}
      if (NULL = Grid.SelectedRecords[ li ].Values[ cAssignmentId ]) then Continue;
      if (0 < Grid.SelectedRecords[ li ].Values[cAssignmentId]) then Continue;
    end;
    lItemId:= Grid.SelectedRecords[ li ].Values[ cItemId ] ;
    APerformingQuery.ParamByName(cParamName).AsInteger:= lItemId;
    APerformingQuery.Exeute();
    lMustRefresh:=true;
  end ;
  if (lMustRefresh) then acRefresh.Execute();
end;

Cóż tu się dzieje? Ano najpierw mamy pytanie do użytkownika, następnie sprawdzenie które Itemy są w ogóle właściwe do przetwarzania (może się okazać, że część wpisów to jedynie wpisy grupujące). Dopiero później w pętli dokonywane jest sprawdzenie każdego itemu na okoliczność pasowania do flagi sterującej i jeśli w wyniku sprawdzenia nie zostaniemy skierowani na następną iterację, dokonywana jest właściwa operacja za pomocą obiektu APerformingQuery przekazywanego jako parametr. Procedura dodatkowo sprawdza, czy faktycznie dokonała jakiś operacji, i wywołuje obiekt odświeżający GUI.Jest to klasyczny przykład kohezji logicznej: nie dość, że flagami sterującymi znacząco zmieniamy zbiór itemów wchodzących w zakres działania procedury, to jeszcze sam sens działania – obiekt wykonujący działanie również jest przekazywany jako parametr! Jedyne, w czym się procedura owa broni, to tekst komunikatu dla użytkownika, przekazany jako parametr – to może mieć sens choćby ze względu na możliwość zmiany języka.

Pozostaje zadać sobie pytanie, czy kod ten jest zły? Cóż, niewielka separacja logiki biznesowej od logiki interfejsu może jednak razić. Jednak biorąc pod uwagę, iż faktyczna logika biznesowa ukryta jest w obiekcie wykonującym rzeczywiste działanie, sprawa przestaje wyglądać tak brzydko.

Śmierdzą trochę flagi sterujące, ale… czyż bez nich nie byłoby konieczne implementowanie kilku różnych procedur, do obsługi każdego elementu interfejsu użytkownika z osobna? Kohezja logiczna,  mimo że generalnie niezbyt akceptowalna, potrafi czasem pomóc nam, zmniejszając ilość kodu obsługującego interfejs użytkownika i drastycznie zmniejszając ilość punktów styku logiki interfejsu i logiki biznesowej.

Microsoft i ciulanie MCP

21 czerwiec 2009 15:13

Trzy dni temu dostałem emailowy biuletyn MCP z Microsoftu (MCP to Microsoft Certified Professional, czyli ktoś, kto zdał choć jeden egzamin certyfikacyjny MS). Jako główny temat biuletynu, podano informację, że oto MS rezygnuje z wysyłki certyfikatów.

Wiadomość ta pokazała się w oficjalnym blogu „Born to learn” 1 czerwca, jednak większość z dwu i półmilionowej rzeszy MCP na świecie dowiedziała się tego dopiero 19 czerwca. Zmiana wchodzi w życie 1 lipca, więc MS zafundował swoim „wyznawcom” zaledwie jedenastodniowe vacatio legis.

Oficjalną przyczyną rezygnacji z wysyłania „Paczek powitalnych” jest chęć redukcji „carbon footprint”, czyli wydumanego wskaźnika, jak bardzo Microsoft emituje do atmosfery CO2. Niestety, przyjrzenie się temu co twierdzi Microsoft po raz kolejny pokazuje jak wielką hucpą jest światowa walka z CO2…

W dotychczasowych paczkach powitalnych z Microsoftu znajdował się zazwyczaj list z gratulacjami, ładnie wydrukowany certyfikat oraz plastikowa karta (formatu wiadomego) potwierdzająca certyfikacje jakie dany delikwent posiada. Paczka, a raczej gruba koperta przychodziła do domu pocztą, a czas oczekiwania na przesyłkę był obrzydliwie długi. Obecnie Microsoft zapowiedział, że certyfikaty będzie się pobierać z odpowiedniej strony, zaś za „drobną opłatą” będzie można je dostać do domu. Plastikowych kart już więcej nie będzie.

Przekaz jest jasny – Microsoft tnie koszty, wycierając sobie przy okazji gębę sprawą dbałości o przyszłość planety. Dodatkowo, z wielką radością podcina gałąź na której siedzi. W pewien sposób zdaje się podążać śladami Borlanda, który wypinając się parę lat temu na studentów, nieomal doprowadził do śmierci swojego flagowego produktu czyli Delphi (dopiero wejście nowego właściciela poprawiło trochę sytuację Delphi). O ile Borland odcinał sobie dopływ „świeżej krwi”, o tyle Microsoft stara się zrazić do siebie swoich najwierniejszych akolitów – czyli osoby z tytułem MCP (i wyższymi).

Przy cenie jednego egzaminu oscylującej wokół 100 dolarów (a do wielu certyfikatów trzeba zdać kilka egzaminów) koszty wysłania plastikowej karty i papierka są znikome wobec uzyskiwanego przychodu. Sam kolorowy certyfikat jest pewnym bajerem, służy często do powieszenia sobie na ścianie i cieszenia się z własnej próżności . Plastikowa karta MCP może służyć co najwyżej do rozpoznania się na branżowych konferencjach. Korzyści w postaci sklepiki MCP pomijam – kilkadziesiąt dolarów za samo przesłanie koszulki to ceny powszechnie bulwersujące europejskich MCP.

Materialne korzyści z bycia MCP są niewielkie, kartę można oczywiście podrobić, a certyfikat skopiować. Sęk w tym, że ktoś kto legitymuje się tym certyfikatem może być łatwo sprawdzony. Ranga certyfikacji, w której dostaje się coś materialnego do ręki, a takiej w której dostaje się jedynie linka jest znacząco różna. Niedawno spotkałem się z porównaniem – skoro certyfikaty są niepotrzebne, to po co uczelnie organizują uroczyste wręczenia dyplomów? Szybciej by było gdyby dziekan wysłał każdemu maila z dyplomem w PDFie…

Certyfikaty MS pobrane ze strony mają jedną, dość ciekawą cechę: podpis szefa. Nie jest on wbrew pozorom podpisem aktualnego w dniu wydawania certyfikatu CEO Microsoftu, lecz domyślnie ląduje tam Ballmer.

W całej tej historii nie chodzi jednak tyle o koszta, co o zasady i etykę. O ile spadek postrzeganej wartości certyfikacji MS jest sprawą do przełknięcia, o tyle drażni i denerwuje udział MS w hucpie związanej z „ochroną” środowiska. Wykorzystanie szlachetnej idei dla ordynarnego cięcia kosztów jest dla mnie działaniem wybitnie nieetycznym. Wysyłanie tego, co dotąd było w cenie egzaminu za dodatkową opłatą w żaden sposób nie zmniejsza emisji CO2, a zwiększa jedynie zysk Microsoftu. Nie sposób zauważyć zresztą, że sam Microsoft jest wysoce zasłużony na gruncie emisji CO2, wprowadzając na rynek coraz to nowe systemy operacyjne, których główną cecha jest coraz to większe zapotrzebowanie na moc obliczeniową, ergo: coraz to większa emisja CO2.

Oczywiście gwoli ścisłości zauważyć trzeba, iż samo zajmowanie się dwutlenkiem węgla jako główną pogarszania się stanu środowiska na planecie jest co najmniej niedorzeczne, a już próby ograniczania emisji CO2 poprzez zastępowanie zwykłych żarówek oszczędnościowymi świetlówkami zawierającymi w sobie toksyczną rtęć jest piramidalną, szkodliwą głupotą. Używanie przez firmę z branży IT argumentów z coraz mniej na serio branej krucjaty przeciwko CO2, o czym ciekawie pisał niedawno bodajże Jakub Chabik (nie mogę znaleźć wpisu) jest po prostu wynikiem mniszej odporności informatyków na nie związane z IT hype. Bo na informatyczne hype jesteśmy już generalnie uodpornieni.

Objawienie programistów Visual Studio

30 marzec 2009 10:27

Ostatnio podczas zamawiania kilku książek w Helionie w ramach promocji mogłem sobie zupełnie za darmo wybrać dodatkową pozycję. Zazwyczaj promocja taka dotyczy jakiś starych książek, opisujących dawno już wymarłe technologie. Tym razem wśród dostępnych pozycji znalazłem „100 sposobów na Visual Studio”. Nie namyślając się wiele, zamówiłem ją.

Po wstępnym przejrzeniu zrozumiałem, dlaczego książka była dodawana za darmo: opisano w niej Visual Studio w wersjach 2002, 2003 i 2005beta. Patrząc z obecnego punktu widzenia, gdzie VS 2005 jest dojrzałą technologią, zastępowaną powoli przez VS 2008 (z VS 2010 na horyzoncie za kilka miesięcy), nie należy się postępowaniu Helionu dziwić. Faktycznie, część materiału wydaje się już nieco przestarzała – autorzy omawiają czasami dodatki, które nowością mogły być 5 lat temu, a dziś zostały zastąpione przez dużo lepsze rozwiązania. Pomimo to, książka ta jest genialna.

100 sposobów na VISUAL STUDIO

Potęga tej książki objawia się, gdy przeczytamy trzy pierwsze rozdziały a następnie zechcemy wypróbować podane tam porady w naszym najnowszym Visual Studio. Dla mnie było to zaskoczenie – niektóre magiczne skróty klawiaturowe maksymalnie upraszczające życie działają w każdej wersji. Oprócz klasycznych Ctrl + literka, w VS istnieje wiele skrótów wymagających użycia kilku klawiszy, często występują też sekwencje kombinacji klawiszy, wywołujące zaawansowane funkcje. Objawieniem dla mnie było Ctrl+K, Ctrl+D – czyli sekwencja klawiszy uruchamiająca dla bieżącego dokumentu funkcje autoformatowania kodu. Rzecz maksymalnie przydatna przy edycji plików ASPX. Już dla samego opisu zaawansowanych możliwości IntelliSense opłaca się kupić tą książkę…

Oczywiście nie tylko klawisze skrótu i podpowiadanie składni jest tym, czego można się z tego poradnika nauczyć. Omówienie sposobów w jaki VS zarządza swoimi edytorami oraz związane z tym sztuczki same z siebie stanowią wartość. W podanym przykładzie autorzy uczą, jak zrobić z Visual Studio edytor do… języka PHP!

Książka omawia także dośc wyczerpująco sprawy związane z budową systemu dokumentacji i dokumentowania swojego kodu, łącznie z rzeczą tak zdawało by się banalną jak dodatek pozwalający eksportować ładnie sformatowany kod do bloga.

Obszerną (i zapewne wciąż mimo zmian w Visual Studio aktualną) część książki poświęcono na omówienie zagadnień związanych z rozszerzaniem środowiska poprzez wszelkiego rodzaju makra oraz programistyczne dodatki. Za pomocą specjalnego API możliwe jest bowiem samodzielne pisanie programów, które pozwolą nam zautomatyzować niektóre, specyficzne dla naszych zastosowań operacje. Jeśli dodać do tego krótkie wprowadzenie do programowania w Microsoft Office, obraz tej książki jako uczty sycącej każdego dewelopera Visual Studio staje się pełny.

Oczywiście aby w pełni skorzystać z tej ksiązki, wskazane jest zaopatrzenie się w nowsze wydanie ;-)

James Avery: 100 sposobów na VISUAL STUDIO, Helion, Gliwice 2005