Archiwum dla maj 2008
Podcasty
Moja lista subskrybowanych podcast’ów wydłuża się. Właśnie ukazał się drugi odcinek, nowego show – ALT.NET Podcast. ALT.NET jest społecznością skupiająca deweloperów zainteresowanych technikami TDD & Agile – więcej można znaleźć tutaj.
Poniżej lista technicznych programów, których słucham:
- Hanselminutes – chyba każdy kojarzy Scott Hanselman’a.
- DNR TV – screncast’y obracające się wokół technologii .NET.
- .NET Rocks! – Carl Franklin & Richard Campbell prezentują.
- Polymorphic Podcast – technologia .NET z naciskiem na ASP.NET
- Dr. Dobb’s Ask Udi Podcast – programiści pytają Udi odpowiada.
- Agile Toolkit Podcast – jak sama nazwa wskazuje tematyka agile.
- Software Engineering Radio – generalnie o programowaniu.
- RunAs Radio – kolejna produkcja panów z PWOP Productions.
- Rubiverse Podcast – Ruby.
- Java Pose – wieści ze świata Javy.
- IT Conversations – generalnie świat i życie w kontekście IT.
- Geek Brief – videocasty, wiadomości, gadżety etc.
- Mondays – technicznie nie technicznie, ale całkiem niezła dawka humoru w amerykańskim wydaniu. Cóż śmiech jest zaraźliwy
To chyba wszystko. Jeśli ominąłem coś interesującego dajcie mi znać.
Pimp My IDE
“Pimp My IDE”: 101 Visual Studio tips, tricks, and add-ins – czyli wszystko, co najlepsze dla Visual Studio. Tak na marginesie to się zastanawiam, kiedy chłopaki z JetBrains w końcu wydadzą nowego ReSharper’a. Jak na razie można korzystać z 30 dniowych wersji Early Access Program (EAP), ale są to mniej lub bardziej działające, nocne build’y teamu deweloperskiego. Więcej informacji można znaleźć tutaj.
Code Camp w Krakowie
W czerwcu, w Krakowie będzie miał miejsce CodeCamp. Jeśli się nie mylę to pierwsza impreza pod tym szyldem w Polsce. Całość zapowiada się interesująco i mam nadzieję, że będę mógł w niej uczestniczyć. Trzymajcie kciuki!
Oszczędność nie popłaca
Jestem świeżo po sesji z debuggerem. Ostatnio aktualizowałem bazę danych SQL CE z wersji 3.1 do 3.5, w wyniku czego pojawiły się dziwne problemy z wstawianiem danych. Otóż raz na jakiś czas dane binarne dodawane do bazy były uszkodzone.
Gdzie tkwił problem? Ano w oszczędności znaków (czytaj: lenistwie). Przykładowo definiując parametr dla obiektu SqlCeCommand, w sposób:
cmd.Parameters.Add(new SqlCeParameter(“FileData”, question.FileData));
Nie określamy w sposób jawny jego typu. Silnik SQL CE musi niejako sam go sobie zgadnąć i akurat w tym przypadku robił to błędnie. Zamiast zdefiniowanego w tabeli typu Image stosował varbinary(8000). Dlatego też gdy rozmiar danych będzie mniejszy lub równy 8000 bajtów wszystko działa bez zarzutu. Jednak jeśli rozmiar przekroczy magiczną wartość 8000, dane zostaną, że tak się wyrażę ‘przycięte’ i w ten sam sposób uszkodzone. Rozwiązaniem oczywiście jest jawne zdefiniowanie parametru:
SqlCeParameter fileDataParameter = new SqlCeParamete(“FileData”, SqlDbType.Image);
cmd.Parameters.Add(fileDataParameter);
fileDataParameter.Value = question.FileData;
No to zaoszczędziłem sobie dwie linie kodu.
Compact Framework Profiler
Firma EQATEC wydała profiler przeznaczony dla aplikacji pisanych na .NET Compact Framework. Program umożliwia jedynie pomiar czasów wykonania poszczególnych procedur i nie podaje żadnych dodatkowych informacji jak np. stan pamięci.
Sama obsługa programu jest dziecinnie prosta, kompilujemy naszą aplikację a następnie wskazujemy profilerowi pliki które chcemy przebadać. Profiler dodaje co potrzebuje do naszych plików i możemy rozpocząć testowanie na naszym urządzeniu. Po zakończeniu, wyniki zapisywane są do pliku xml, którego zawartość możemy przeanalizować w specjalnej przeglądarce. Program udostępniany jest za darmo i dostępny jest tutaj.
Object Thinking
Będąc w Galway wysłuchałem prezentacji ‘Object Thinking’ Alan’a Deana. Początek prezentacji, trzeba to powiedzieć, był zniechęcający, pojawiło się sporo akademickich formalizmów, mających nikłe odzwierciedlenie w codziennym życiu. Przykładowo przydługawe, dywagacje o tym który z terminów jest właściwy: software developer czy software engineer? Dość mistrzu, nie po to tu przyszedłem, nawijaj o obiektach.
Jednak gdy doszliśmy do meritum prezentacji, przestałem ziewać i zacząłem słuchać . Otóż padła propozycja aby odrzucić dotychczasowy sposób myślenia o klasach jako o zbiorze pól i właściwości, no i metod ale o nich za chwilę, i zastąpić je koncepcją samo-opisywalności. Zgodnie z propozycją, najprostsza, definicja klasy wyglądała by następująco:
public class Customer : Dictionary<Uri, Object> {}
Ciekawe prawda, ot taki pojemnik na wszystko. Metody, rzecz jasna, pozostają a ich celem jest opisywanie intencji klasy.
Uzasadnieniem takiego podejścia do klas, jest twierdzenie, że zdecydowana większość modyfikacji jakie, jesteśmy zmuszeni wprowadzać, dotyczy właśnie sposobu reprezentacji danych. Oczywiście tego typu zmiany zwykle, powodują reakcję łańcuchową i pociąga modyfikacje w innych klasach. Więc po co się z tym męczyć? Umożliwmy przechowywanie dowolnych danych i wszyscy będą szczęśliwi.
No chyba niezupełnie. Nie twierdzę, że idea jest pozbawiona sensu, bo widzę logikę tego rozumowania, jednak dostrzegam również kilka potencjalnych problemów.
Przede wszystkim porzucamy strong typing, wszystko może być obiektem więc konieczna jest walidacja elementów przechowywanych w naszym pojemniku. Oczywiście bez jawnego określenia typów, intellisense Visual Studio, przestanie nas ostrzegać o potencjalnych problemach. Dalej z punktu widzenia bazy danych, tabele też miały by zostać tylko pojemnikami na dane? Żadnych kluczy, indeksów etc. ? Już widzę jak przystają na to administratorzy baz danych.
Kolejnym problemem może być czynnik ludzki i nie chodzi mi tu o mentalne reperkusje przestawienia się na nowy sposób myślenia, a czysto pragmatyczne podejście. Nie oszukujmy się większość ludzi jest leniwa, a programiści to już w szczególności;) . Wcale nie jest takie nieprawdopodobne, że niektóre wartości mogą być przechowywane w klasie po kilka razy (szczególnie jeśli pracujemy w zespole). Co może prowadzić do wszelakiej maści problemów.
Jak na razie nie oceniam, czekam, aż tęższe głowy od mojej wypowiedzą się w tej sprawie. Może za jakiś czas pojawią się jakieś study case, projektów wykorzystujących to podejście. Poczekamy zobaczymy. Tymczasem dla zainteresowanych slajdy i przykłady z prezentacji są dostępne tutaj.
Dino Esposito w Dublinie
27 maja w hotelu Alexander, odbędzie się całodniowa sesja zatytułowana: ‘A pattern-oriented look at LINQ and LINQ-to-SQL from within Web and Silverlight applications‘. Poprowadzi ją nikt inny jak Dino Esposito. Więcej informacji na temat wydarzenia można znaleźć tutaj.
DDD Ireland, Galway
Właśnie wróciłem z słonecznego Galway gdzie odbyło się DDD Ireland.
Wrażenia, jak najbardziej pozytywne. Przeszło 20 prezentacji podzielonych na 6 ścieżek, Super spikerzy, dobra organizacja i co najważniejsze świetna atmosfera która panowała od rozpoczęcia części oficjalnej do aż, późnych godzin nocnych. Jak zwykle w tego typu przypadkach miałem dylemat, które z prezentacji wysłuchać. Wybrałem następujące:
- Using Workflow Foundation in a Service Oriented Architecture – Maurice de Beijer
- WCF In Action: Tips & Tricks – Christian Weyer & Dominick Baier
- My Favourite Patterns – Gary Short
- Object Thinking – Alan Dean
Muszę przyznać, że niezależnie w ilu prezentacjach uczestniczę zawsze znajduję coś, co zmusza mnie do przemyśleń i w efekcie do udoskonalenia mojego warsztatu. Połączmy to z możliwością uzyskania natychmiastowych odpowiedzi na wszelkie trapiące nas wątpliwości a otrzymamy odpowiedź – czemu warto uczestniczyć w tego typu wydarzeniach.


