W dobie tak potężnych narzędzi jak Visual Studio programiści często zdają się całkowicie na ich funkcjonalność. Jedną z (wspaniałych zresztą) cech współczesnych IDE jest Intellisense. Czy wyobraża ktoś sobie pisanie kodu bez podpowiedzi? Zobaczmy jednak, że nie zawsze można na tym elemencie polegać w 100% ze względu na “konfigurowalność” nawet tego mechanizmu VS.Dla przykładu załóżmy dwie [...]
Czasami zdarza się, że jesteśmy świadomi istnienia jakiejś funkcjonalności, jednak wredny twórca biblioteki bezwstydnie ją przed nami ukrył. A my ją odkryliśmy na przykład przy pomocy Reflectora.Zasymulujmy taką sytuację. Wyobraźmy sobie bibliotekę z klasą Jarek oznaczoną jako internal. Klasa Jarek z kolei chowa przed nami bardzo ciekawą funkcjonalność – zakładanie konta w banku za pośrednictwem [...]
6 marca w Warszawie miała miejsce konferencja z cyklu Heroes Happen Here. Okazja: premiera trzech produktów Microsoft (Visual Studio 2008, Windows Server 2008 oraz Sql Server 2008). Całość składała się z dziesięciu dużych sesji podzielonych na dwie grupy: dev i itpro. Wysłuchałem wszystkich pięciu wykładów dla programistów i oto moje wrażenia (nie tylko zresztą moje [...]
Zdarza się, że mamy w projekcie grupę plików powiązanych ze sobą logicznie. Na przykład – jeden wygenerowany automatycznie i drugi uzupełniający go własnoręcznie napisanym kodem. Przykładem “z życia” są tu klasy form z .NET, gdzie to Visual Studio standardowo pokazuje swoją ciekawą funkcjonalność “zwijania” grupy powiązanych plików. Niestety, takie zachowanie nie jest dostępne w żaden [...]
Wraz z pojawianiem się kolejnych wersji .NET do świata programistów wchodziło coraz większe zamieszanie. Co oznacza każdy następny numerek, jakie zmiany wnosi, jak się owe zmiany mają do poprzedników? Przykładowy fakt, że piszemy program używając Visual Studio 2008 w języku C# 3.0 i korzystając jednoczeście z bibliotek w wersjach 2.0, 3.0 i 3.5, a o [...]
W .NET 3.5 (a konkretniej – C# 3.0 oraz VB 9.0) pojawił się mechanizm “extension methods”. Cel przyświecający jego autorom był zaiste godny uwagi: umożliwienie dodania nowych funkcjonalności do już istniejących, skompilowanych klas. Jedna z kilku “Ruby-like features” wprowadzonych do świata .NET. Przydatność takiego rozwiązania trudno przecenić – w ten sposób rozszerzono m.in. klasy już istniejące w .NET 2.0 [...]
BlogEngine.NET instaluje się standardowo z edytorem TinyMCE. Z kilku różnych względów nie do końca mi to odpowiadało – postanowiłem więc wstawić w jego miejsce NicEdit. Projekt jest jeszcze w fazie BETA, ale moim skromnym zdaniem zmierza prostą ścieżką prowadzącą niechybnie do sięgnięcia po tytuł “The Best WYSIWYG Editor Ever” (o ile taki powstanie). Krótka instrukcja [...]
Jeżeli chcemy wykonywać testy jednostkowe naszego kodu, ale posiadamy do dyspozycji jedynie wersję Express VS, ciągłe uruchamianie i konfigurowanie NUnit może być nieco uciążliwe. Oto krótka instrukcja ułatwienia sobie życia: 1) Z menu wybieramy Tools -> External Tools i definiujemy własne narzędzie (uwaga na wszystkie pola): 2) Po dodaniu NUnit do "External Tools" możemy przeciągnąć [...]
Jak powszechnie wiadomo – wielką zaletą wzorca MVC jest umożliwienie testowania jednostkowego logiki “wyciągniętej” z klas odpowiedzialnych za interakcję z użytkownikiem. Swego czasu śledziłem w internecie dyskusje na temat “Jak testować kontrolery, aby możliwie najbardziej odizolować je od reszty aplikacji”. O to przecież chodzi w Unit Testing… Do rzeczy. Przedstawienie problemu Kontroler pełni rolę pośrednika pomiędzy [...]
Witam na moim blogu. W niniejsze miejsce mam zamiar pompować swoje spostrzeżenia i relacje ze zmagań z technologiami MS, z którymi stykam się w życiu codziennym jako programista .NET. Dla siebie – jako notatki na przyszłość. I dla innych – jako porady uzupełniające moją działalność na portalu CodeGuru. Od tego – kategoria PRO. Zapewne okazjonalnie wrzucę coś “z zupełnie [...]
Tworzymy nowy dokument o wymiarach np. 30×10 cm 72 dpi, tło białe albo przeżroczyste. Ustawiamy kolor pisaka na jasnoczerwony (R255 G140B140) i wpisujemy tekst. Z menu Layers wybieramy Duplicate Layers Rasteryzujemy warstwę tekstową. Szukamy filtru Gaussian Blur i rozmywamy tekst (Radius 4 ÷ 6) Tworzymy selekcję klikająć z klawiszem ctrl na oryginalną warstwę tekstem. Robimy […]
Tworzymy nowy dokument (ctr+n) o wymiarach np. 30×15 cm, 72 dpi, wybieramy czarny kolor tła i wypełniamy tło (ctr+backspace). Tworzymy teksy (najlepiej duży i o szerokiej czczące), kolor dowolny ale najlepiej biały. Tworzymy nową warstwę, wybieramy ciemnobrązowy kolor tła (R99G40B0), wypełniamy warstwę (ctr+backspace). Szukamy gdzieś filtru add noise – ustawiamy (Amount 40%, Unfiform, Monochromatic). Następnie […]
Od pewnego czasu otrzymuję do obróbki skany, które są naprawdę cudowne. Oto przykład skanu przekazanego mi do obróbki, przy którym skanerzysta nieco poprzesadzał. Zdjęcie ma docelowe wymiary 21×30 cm, 350 dpi i jest skanowane ze slajdu wielkości średniego obrazka, na porządnym skanerze bębnowym. Przecież takie skanowanie woła o pomstę do nieba. Czyszczenie takiego zdjęcia to […]
Mowa tutaj o uniwersalnym selektorze jakim jest gwiazdka. Przykład użycia: * { margin: 0px; } Powoduje on, że wszystkie elementy występujące w Read More
Załóżmy, że potrzebujemy procedurę składowaną, która w zależności od zadanego parametru wyciągnie dane z tabeli podanej jako argument do procedury składowanej. Na Read More