This post is secod part of my Back to basics: on testing series.Developers writing tests People new to software, or coming from organizations where all testing is done by dedicated people often find the idea of developers doing testing bizarre. After all, we're the highly trained, educated professionals. We get payed to do the hard bits. Clicking around the UI to see if a label is misaligned or an app crashed surely ...
Strona głównaUżytkownik
Paweł Łukasik | użytkownik
Sztuka programowania 4378 dni, 18 godzin, 35 minut temu 61 źrodło rozwiń
W miniony weekend postanowiłem zaradzić coraz większemu zamulaniu pracowego laptopa. Wziąłem swój zakurzony, nieużywany od wielu miesięcy 120GB SSD OCZ Vertex2, wsadziłem jako główny dysk do Vostro i, dając się ponieść chwili, wrzuciłem nań Windows 8. Wszystko poszło zadziwiająco sprawnie i prawie bez problemów, i wreszcie komputer jest gotowy do pracy po 15 sekundach od wciśnięcia "on" a nie po 15 minutach. Ale ja nie do końca o tym...
I’ve just published a little project of mine on GitHub, called VsDebugFx. It’s a NuGet package which you can install into your .NET project and get more expressiveness during your debugging sessions inside Visual Studio. It’ll let you evaluate expressions that use C# features which are not normally allowed by the IDE, namely: lambda expressions, anonymous types, LINQ queries and implicitly-typed arrays. I don’t want to repeat myself (DRY anyone?), so if you’re interested in knowing more, go check out th...
W ostatnim czasie zapoznawałem się trochę bliżej z narzędziem o nazwie NDepend. Przez ten czas na pewno nie stałem się ekspertem w korzystaniu z NDepend, chciałbym jednak podzielić się moimi subiektywnymi odczuciami na jego temat. Nie będę tutaj wymieniał jego funkcji (można to znaleźć na stronie producenta lub w wielu innych wpisach), nie będę pisał jak zainstalować (bo to proste, choć mi się nie podobało - lubię instalować a nie rozpakowywać :) ), nie będę się zastanawiać czy warto tego narzędzia używ...
Niedawno kolega opowiedział mi o jeszcze jednym przypadku kiedy opisane przeze mnie zachowanie konstruktora statycznego w środowiskach x86/x64 doprowadziło do kłopotów. Scenariusz był dość ciekawy, dlatego go opiszę na uproszczonym przykładzie. Zacznijmy od tego, że napisaliśmy zarządzany komponent COM. Komponent ten w konstruktorze statycznym czyta wartość jakiegoś parametru konfiguracyjnego z pliku i na tej podstawie coś robi. W poniższym przykładzie, żeby nie komplikować sprawy, po p...
Of course, the problem as it is not difficult to resolve. We can use the reflection to do that and that’s all. But what will happen if we have such a class: Then, you cannot simply use reflection without the knowledge about input parameters. Of course, if it cannot work with some default values like null or string.Empty then you could put some dummy information to every argument, and after that assign during the deserialization process you will assign the proper data to fields.
Us, developers, are a bit like that comic strip (from always great xkcd): We can endlessly debate over tabs versus spaces (don't even get me started), whether to use optional semicolon or not, and other seemingly irrelevant topics. We can have heated, informed debates with a lot of merit, or (much more often) not very constructive exchanges of opinions. I mention that to explicitly point out, while this post might be per...
Sztuka programowania 4520 dni, 6 godzin, 16 minut temu 88 źrodło rozwiń
W WinForms w kilku prostych krokach można dodać kolekcję obiektów, tak aby DataGridView wygenerował za nas kolumny odpowiedniego typu i z odpowiednim nagłówkiem. W całości wykonuje to poniższa funkcja Init(). Jest ona wywoływana z konstruktora świeżo dodanej formatki Form1, która zawiera tylko dataGridView1.
Dziś przytrafiła mi się bardzo nie miła niespodzianka podczas pracy. Kiedy na zakończenie dnia chciałem pchnąć zmiany do tfs za pomocą komendy git tfs rcheckin po uprzednim ściągnięciu wszystkiego za pomocą git tfs pull i rebase, nagle z niewiadomych przyczyn rcheckin zwrócił mi kod błędu 1 i wszedł w interaktywny rebase. Za nic nie wiedziałem co jest nie tak – brak też informacji o jaki pliki chodzi (albo ja ślepy tego nie zauważyłem). Tak czy siak, skończyło się na tym, że za pomocą: git tfs ch...
Tematyka uruchamiania i debugowania aplikacji Windows 8 na zdalnym urządzeniu nie jest nowa. Niemniej jednak postanowiłem zrobić małe podsumowanie na ten temat przy okazji ukazania się finalnej wersji Windows 8. How to Create Windows 8 Bootable USB Device from ISO Image using WinUSB Maker. Mając bootowalne USB, ustawiamy w BIOS-ie kolejność bootowania, tak by pierwszym urządzeniem był nasz pendrive (przez USB podłączamy wcześniej klawiaturę). Minimalna rozdzielczość dla aplikacji Metro w Windows 8 to ...
Od jakiegoś czasu dostępny jest dokument opublikowany przez Microsoft Patterns & Practices nad którym pracowała cała rzesza community w tym i nasz Szymon Pobiega – wielkie więc gratulacje! :) może ja ślepy albo głuchy ale dowiedziałem się o tym dopiero teraz :) Tak czy siak, cały dokument jest dostępny niestety jedynie w formacie stron HTML na stronach MSDN – nie ma żadnego docx, pdf czy innego formatu o ile mi wiadomo.
Architektura 4533 dni, 8 godzin, 49 minut temu 109 źrodło rozwiń
Stop me if you know this one. You find a library/framework that does something useful to you. You start using it and then realise it doesn’t work the way you want it in certain scenario or has a missing feature. What do you do then?Abandon the library and look for alternative that is more “feature rich”? Ask the author to support your scenario/submit a pull request with the feature? Those two, from my experience, a...
Programując pod Sharepointa czy inne tego typu badziewie musimy podpisywać nasze assemblies i wrzucać je do GACa. Już dwa razy mnie to "ugryzło" i straciłem w sumie dobre kilka godzin na diagnostykę poniższego scenariusza: 1) piszę testy do funkcjonalności zawartej w podpisanej dllce 2) koduję implementację w tejże dllce 3) uruchamiam testy 4) dostaję wyjątek TypeLoadException czy coś innego w ten deseń mówiącego, że w testowanej dllce nie ma kodu który... przecież tam jest bo dopiero co go napisałem!
Żyjemy teraz w ciekawym momencie roku, kiedy to Windows 8 uzyskuje status RTM, a za nim inne produkty jak np. Visual Studio 2012, a dodatkowo mamy też SQL-a 2012, który status RTM osiągnął już na przełomie marca i kwietnia tego roku. Wielu developerów zapewne będzie robiło reinstalacje, będzie po kolei instalowało aplikacje niezbędne do pracy, a później np. mogą zobaczyć w SQL Server Configuration Manager coś takiego: Najprościej jest pamiętać aby podczas nowej instancji wykonywać ją wg poniższej kole...
W jednej z aplikacji pojawiło się wymaganie: dodać windows authentication. Nic prostszego! Zmiana na IIS, dodanie w web.config, i działa, prawda? Ano nieprawda, jeśli aplikacja stworzona jest w MVC 3.
Dostałem NDepend4 w zamian za jego opis :) Nie muszę o nim mówić w samych słodkich komentarzach, także można wpis czytać do końca. NDepend służy to statycznej analizy kodu napisanego w .NET. Potrafi ocenić kod po wieloma względami, np: ze względu na skomplikowanie, ilość linii kod czy instrukcji IL, ilość zmiennych, łatwość modyfikacji, może zasugerować zmian typów z referencyjnych na wartościowe (ref type --> value type). Sama instalacja jest banalnie prosta, ściągamy paczkę ze strony, rozpakowujemy ...
Piszemy aplikację. Uruchamiamy. Działa. Wysyłamy do klienta. Uruchamia. Nie działa. Znamy to wszyscy, prawda? Powodów może być oczywiście bez liku, od specyficznej konfiguracji konkretnej maszyny po naszą głupotę. Niekiedy jednak problem jest prozaiczny - aplikacja nie może skorzystać z wymaganych dllek! Nie zawsze (a raczej: nigdy?) to co dodajemy bezpośrednio do referencji rozwiązania jest wystarczające do poprawnego działania aplikacji. Strasznie łamałem sobie kiedyś głowę nad takim scenariuszem
Często zachodzi potrzeba zaimplementowania w bazie danych struktury hierarchicznej, np. dla kategorii. Pierwszy sposób jaki od razu przychodzi do głowy to adjacency list (lista sąsiedztwa) i polega na dodaniu do tabeli kolumny ParentId na rodzica danej kategorii. Rozwiązanie to jest bardzo proste, jednak mało optymalne gdy mamy wiele zagnieżdżeń. Alternatywą dla tej metody jest nested set (zbiór zagnieżdżony), polega na dodaniu do tabeli dwóch dodatkowych kolumn na lewy i prawy numer każdego węzła. Neste...
Bazy danych i XML 4562 dni, 1 godzinę, 26 minut temu 264 źrodło rozwiń
Widoki są tworem dość często wykorzystywanym w bazach SQL – dobrze zaplanowane bardzo ułatwiają pracę z bazą. Widoki indeksowane zapewniają lepszą wydajność zapytań. Niestety nie zawsze nasz indeks będzie brany pod uwagę podczas wykonania zapytania.
Bazy danych i XML 4564 dni, 15 godzin, 18 minut temu 115 źrodło rozwiń
Nierzadko jest tak, że aplikacja zachowuje się nieprawidłowo, jednak wszystkie wyjątki są przechwycone i nie ma żadnej informacji (czy to wizualnej, czy tez w logach) o tym, że wydarzyło się coś niepokojącego, program po prostu dalej działa. Klasyczny przykład, to ‘połykanie’ wyjątków, czyli konstrukcja typu: try {...KOD...} catch(Exception) { } czyli blok obsługi wyjątku jest puściutki :) My jednak wyczuwamy jakąś zmyłkę i chcemy dowiedzieć się, co też poszło nie tak. Systemowy mechanizm obsługi wyj...