• This is a usual time of the year for summaries so let’s keep the tradition alive and write one. Here’s my 2017 achievements split between months. January Blogging for 18 days straight – nothing near gutek’s achievement (whole year!) but still a nice streak Microsoft MVP title (thx Konrad Kokosa for pointing this one ;)) February […]

  • “Advent of Code is a series of small programming puzzles for a variety of skill levels.” Each day was a fun an interesting coding challenge. I’ve decided to practice and code this in python to learn the skill. Some of them might not be the best python scripting as I was short on time in […]

  • Some time ago I’ve attended a .net developer days 2017 conference. I was quite busy since (traveling, teaching .net, working) that only now I got some time to share some thoughts about it. As a bonus I’m including a short interview I did during the event. I need to state here, just to be clear, […]

  • We developers don’t like documentation. We don’t like to read it, and we even more we don’t like to write it. But sometimes it is worth to read it. Like when you find out that by using datetime in SQL DB you got a milliseconds precision but only if it ends on 0,3,7 (link). That […]

  • In the previous post we’ve removed some of the technical debt that could be found in our NetDeveloperPoland Website application. In this one we will remove it even more. We can even maybe reach a B? Let’s see where we’ll end up at the end of this part.

Po wielu trudach i niezliczonych problemach udało się udostępnić filmy ze spotkań KGD.NET. Aby je obejrzeć konieczna jest rejestracja (i późniejsze zalogowanie) do grupy KGD.NET. Na chwilę obecną dostępne są dwa filmy z 41. spotkania, ale już niedługo powinno pojawić ich się więcej.

Podczas 41. spotkania zostały wygłoszone dwie ciekawe prelekcje:

Dawid Łaziński – ADO.NET Data Services dawniej Astoria
Marcin Książek – Techniki zabezpieczania kodu .NET

Link do strony z filmami (wymaga zalogowania) – 41. spotkanie KGD.NET

Zachęcam do zalogowania i obejrzenia.

Wyobraźmy sobie poniższy kawałek kodu…

using (var connection = new SqlConnection(@””))

{

    connection.Open();

    var userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;

    var isLoggedCommand = new SqlCommand(

          string.Format(“select isLogged from Users WHERE Name = ‘{0}'”, userName),

          connection);

    isLoggedCommand.ExecuteScalar();

}

Dla osób znających się w temacie już na pierwszy rzut oka widać potencjalny SQL Injection w linii z selectem. Jednak czujność naszą może uśpić fakt jak dostarczana jest wartość zmiennej userName. Do głowy mogą przychodzić myśli taki jak:

Nie dostajemy jej z zewnątrz. Mamy ją z systemu…
Użytkownik nie może nam jej zanieczyścić…
Jesteśmy bezpieczni…

Nic bardziej mylnego, bo kto przecież powiedział, że konto użytkownika musi nazywać się: tata, jurek czy komputer-kuchnia. Nasz kod będzie podatny na SQL Injection bo konto o nazwie ‘ delete Users– (zaczynające się od apostrofu a kończące na podwójnym myślniku) jest dopuszczalne a SQL server poprawie wykona oba zapytania na bazie. Z naszą tabelą Users będziemy mogli się pożegnać.

Na szczęście atakujący ma ograniczone możliwości. Nazwa użytkownika może składać się do 20 znaków oraz nie może zawierać znaków takich jak: /\[]”:;|+=?*. Jak widać jednak nawet bez tych znaków skuteczny atak jest możliwy.


Ponieważ dopiero styczeń i jeszcze staram się wypełniać moje postanowienia noworoczne tak więc opiszę pokrótce książkę którą właśnie skończyłem czytać.

Mowa tu o Clean Code – A handbook of Agile Software Craftmanship – Robert C. Martin. Jeśli często patrząc na swój bądź cudzy kod nie do końca jesteście przekonani, że tak to powinno wyglądać lub jeśli code review waszego kody, wygląda jak ten rysunek po prawej

to możecie śmiało kupić tę książkę. Autor stara się przekazać zasady odnośnie pisania dobrego kodu. Sporo przykładów pokazujących opisywane rozwiązania sprawia, że książkę dobrze się czyta i nie trzeba się długo zastanawiać “co poeta miał na myśli”.

Szczególnie mi się podobała klasyfikacja błędów (Smells and Heuristics), które powodują, że kod nie jest czysty. Na liście znajduje się 66 pozycji a wśród nich takie powody jak:

  • zakomentowany kod
  • redundancja komentarza
  • martwy kod
  • unikanie negatywnych warunków
  • niewystarczające testy
  • i wiele innych…

A zatem podsumowując…

Wady:
– przykłady w Javie więc trochę trzeba myśleć jak to ma się do świata .NET

Zalety:
– przykłady w Javie więc wychodzimy trochę ze światka .NET
– lista “Smells and Heuristics”
– poprawianie “cuchnącego” kodu – krok po kroku i dużo przykładów

Zatem zabieram się za kolejną pozycję – Silverlight 2.0 in Action

Wszyscy dookoła robią postanowienia noworoczne, tak więc i ja postanowiłem podsumować odchodzący rok oraz co nieco sobie przyrzec na ten nowy 2009. Oczywiście tu, ograniczę się do moich postanowień związanych z moją aktywnością zawodową, pozostawiając sprawy osobiste na uboczu 🙂

Co było dobrego w 2008 roku:
– pomoc przy polskiej edycji poland.silverlightchallenge.eu (to po części 2007 rok)
– zdanie egzaminu 70-528 Web-Based Client development
– pomoc przy codecamp.pl
– prelekcja o ASP.NET MVC w ramach KGD.NET (choć nad jakością i sposobem dostarczenie muszę popracować)
– organizacja szkolenia o MOSS
– większa aktywność na tym blogu
– większa aktywność na forach technicznych

Co w 2009 roku:
– więcej udziału w społecznościach .NET ( organizacja konferencji, spotkania grup)
– przeczytać 6 książek związanych z tym czym się zajmuję
– większa aktywność na portalach CodeGuru/Goldenline/Profeo itp.
– większa otwartość na inne technologie i języki (w .net jak i nie tylko)
– rozwój poza programowaniem – np. kursy na SSE
– większa aktywność na tym blogu – co najmniej tyle samo postów co w roku 2008.
– zdanie egzaminu z WPF – 70 – 502 (bo już niedługo 9-latki depczą po piętach)
– odwiedzić jedną dużą konferencję poza polskimi – aktualnie zapatruję się na TechEd EMEA 2009 w Berlinie (ale zobaczymy jak to wyjdzie)

Szczęśliwego Nowego 2009 (11111011001b, 7D9h) roku.

Zapraszamy do wzięcia udziału. Więcej informacji – poniższa notka.

Mamy przyjemność zapowiedzieć konferencję C2C’09 – Communities to Communities 2009, która odbędzie się 14 marca 2009 r. w Warszawie. Ruszamy z trzema ścieżkami (.NET, SQL, IT PRO) – czyli każdy znajdzie coś dla siebie 🙂

Podobnie jak przy edycji konferencji C2C 2008 tak i teraz zapraszamy do uczestnictwa w konkursie Speaker Idol organizowanym przez Warszawską Grupę .NET w ramach ścieżki .NET. 22 stycznia 2009 r., na 38. spotkaniu WG.NET wszyscy zainteresowani będą mogli przedstawić propozycję sesji, którą chcieliby poprowadzić w czasie konferencji. Warunkiem uczestnictwa w konkursie jest nadesłanie swojego zgłoszenia dnia do 8 stycznia 2009r. na adres si[no*sp4m]@c2c.org.pl. Czas prezentacji: 5 minut.

Jeśli nie możesz uczestniczyć w konkursie Speaker Idolu osobiście to jeszcze nic straconego!!! Do 18 stycznia 2009 r. czekamy na 5-minutowe webcasty z propozycjami sesji. Prezentacje prosimy nadsyłać na adres si[no*sp4m]@c2c.org.pl

Zapraszamy.


Miło mi poinformować, że ruszyły prace nad konferencją Community 2 Community ’09, w przygotowaniu której mam swój mały udział (głównie strona oparta na CMS’ie Telerik‘a Sitefinity).

Planowane są trzy ścieżki: .NET, SQL oraz ITPro.

Planowany termin konferencji to: 14.03.2009. Więcej informacji stronie konferencji: http://c2c.org.pl.


Najwyraźniej programista tego sklepu internetowego, tę pozycję ma jeszcze przed sobą :).

KGD.NET po ostatnim 41. spotkaniu ryszuł konkurs (w zasadzie jeszcze trwają przygotowania). Polega on na pisaniu i łamaniu crack-me’s napisanych w technologii .NET. Celem jaki ma zostać przez to osiągnięty to poszerzanie wiedzy o zabiezpieczeniach aplikacji pisanych w .NET.

Więcej szczegółów na stronie konkursu:
Konkurs CrackMe

Na razie strona CrackMe jest publiczna, ale aby wziać udział w konkursie należy się zarejestrować do grupy KGD.NET.

Na stronie dostępne jest przykładowe CrackMe wraz z rozwiązaniem.

Z małym poślizgiem, ale w końcu….
Na stronach poświęconych konferencji MTS 2008 pojawiły się już webcasty z sesji, które mieliśmy okazję wysłuchać podczas tegorocznego MTS’a. Warto odświeżyć sobie co po niektóre sesje, lub też obejrzeć te, które z jakichś powodów nie znalazły się w naszym planie.

Na chwilę obecną dostępnych jest 58 webcastów.
Link: Materiały z MTS2008

Update: Czy tylko ja mam problemy z odtwarzaniem sesji z MTS2008? Np. sesja – Architektura i wykorzystanie usług oprogramowania w chmurze ucina mi się po jakiejś minucie trwania?

Dziś krótko o nowości jaką wypatrzyłem w Visual Studio 2010. Nazywa się to “debug history” i wygląda na jakiegoś rodzaju analizera. Zbiera dane, które później można, już na chłodno, analizować.
Na razie trochę trudno mi się w tym operuje i średnią użyteczność tego widzę. Przyciężkie trochę, ale zobaczymy może coś się z tego rozwinie.

DOPISANO: Po ponownym obejrzeniu tej sesji z PDC ta funkcjonalność stała się trochę bardziej zrozumiała.
Służy ona do otrzymania staniu aplikacji, gdy wystąpił wyjątek. Wraz z nowym VS testerzy podczas testów aplikacji będą mogli przesłać stan w jakim się aplikacja znajdowała gdy błąd wystąpił. Dzięki Debug History będzie można wejść w tryb debug “w chwili” gdy wyjątek wystąpił. Zapowiada się ciekawiej, niż na początku sądziłem.

Poniżej, krótki screencast z tej funkcjonalności: