.NET i takie tam

Archive for Maj 2008

Podcasty

2 Komentarze

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:

To chyba wszystko. Jeśli ominąłem coś interesującego dajcie mi znać.

Reklamy

Written by sakowicz

Maj 18, 2008 at 12:46 am

Napisane w Misc

Pimp My IDE

leave a comment »

„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.

Written by sakowicz

Maj 17, 2008 at 11:30 pm

Napisane w Misc, Tools

Code Camp w Krakowie

leave a comment »

codecamp-logo

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!

Written by sakowicz

Maj 17, 2008 at 5:57 pm

Napisane w Misc, Spotkania

Oszczędność nie popłaca

leave a comment »

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.

Written by sakowicz

Maj 14, 2008 at 1:59 pm

Napisane w Misc

Compact Framework Profiler

leave a comment »

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.

Written by sakowicz

Maj 12, 2008 at 11:11 am

Napisane w Misc

Object Thinking

leave a comment »

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.

Written by sakowicz

Maj 7, 2008 at 11:14 am

Dino Esposito w Dublinie

leave a comment »

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.

Written by sakowicz

Maj 7, 2008 at 10:32 am

Napisane w Misc, Spotkania