W komentarzach do ostatniego posta wywiązała się dyskusja na temat "a co z metodami prywatnymi?". Odpowiedź najkrótsza z możliwych brzmi: NIC. Zainteresowanych odsyłam do tamtejszych wypowiedzi, a w niniejszej notce postaram się zawarte tam myśli rozwinąć. Zaczynając przygodę z testami jednostkowymi często stawałem przed dylematem "jak mam przetestować funkcjonalność z metod prywatnych?". Sporo się naszukałem i naczytałem o różnych rozwiązaniach, z czego dwa zdawały się być najpopularniejsze i najbardzi...
Na tak postawione pytanie aż chciałoby się odpowiedzieć: "testować wszystko, you fool!". Życie uczy jednak, że takie podejście jest bardzo niepraktyczne i na dłuższą metę nie ma sensu. Dążenie do pokrycia 100% kodu mija się z celem i jest po prostu stratą czasu. O powodach pisania testów pisałem na początku tego cyklu. Są jednak miejsca, w których koszt napisania testu jest bardzo duży, a jego wartość - znikoma. Zacznijmy więc od odpowiedzi na trudniejsze pytanie. Czego nie testować?
autor: Jakiś czas temu próbując wykonać operację merge w TFS napotkałem na bardzo irytujący problem pod tytułem: TF203015 The Item '' has an incompatible pending change. Nie robiłem nic bardzo skomplikowanego. Najpierw pobrałem do gałęzi A zmiany umieszczone na półce (ang. shelve). Następnie, przy pomocy polecenia merge, chciałem do nich dodać zmiany z changeset'a z gałęzi B i w tym momencie pojawił się powyższy komunikat. Sprawdziłem też odwrotną kolejność czyli najpierw merge z gałę...
W poprzednich wpisach opisałem ogólne zasady metodyki Scrum, przedstawiłem sposób instalacji i konfiguracji - TFS. W tym wpisie pokażę podstawowe zasady jak połączyć teorię z praktyką. Podobnie jak w poprzednich wpisach bazował będę na Team Foundation Server 11 DP, konieczne również będzie Visual Studio 11 DP.
W kilku najbliższych postach postaram się przybliżyć ideę zarządzania projektem w metodyce Scrum przy pomocy Team Foundation Server (TFS). W tym poście opiszę zasady i cechy jakimi charakteryzuje się SCRUM. W kolejnych przedstawię jak TFS może nam pomóc w prowadzeniu projektu w tej metodyce. Ponieważ, mimo posiadanego doświadczenia w niej nie czuję się ekspertem będę bardzo rad z każdego, nawet najbardziej krytycznego komentarza, który pozwoli udoskonalić mi te wpisy.
Dzisiaj kolejny przykład z życia wzięty, krótszy ale miejmy nadzieję, przydatny. Zmieniłem na swoim komputerze nazwę grupy roboczej, do której należę. Po uruchomieniu Visual Studio i próbie checkoutu pliku okazało się, że pojawił mi się komunikat o błędzie:A local workspace is required. Workspace NazwaGrupyRoboczej;Nazwa użytkownika does not reside on this computer.
Tak jak zapowiedziałem w poprzednim wpisie, część druga mojej opowieści o Scrum i TFS będzie opisywała instalację oraz wstępną konfigurację Team Foundation Server. Po tych wpisach powinno być wiadomo co chcemy robić oraz czym, część trzecia przedstawi jak.Przykłady będą przedstawione na podstawie Team Foundation Server 11 Developer Preview.
Tym razem wpis będzie poświęcony dodatkowej czynności, nie związanej bezpośrednio ze Scrum albo TFS. Pokażę prosty sposób w jaki można udostępnić swój serwer nie posiadając stałego łącza IP, łącząc się przez router. Nie uważam, że jest to opcja najlepsza, ani najbezpieczniejsza, ale jest prosta i może być punktem wyjściowym do lepszej konfiguracji.Jak zrobić, żeby można było się połączyć z serwerem gdy nie posiada on stałego numer IP? Można to zrobić przy pommechanizmu DynDNS.
Przy okazji przygotowywania bazy słów kluczowych pod nasz portal napisałem proste narzędzie, które potrafi zautomatyzować część tego żmudnego procesu. Narzędzie tworzy listę podpowiedzi z wyszukiwarki Google na dane słowo kluczowe, doklejając po kolei litery alfabetu i odpytując Google Suggestion API.
Realizacja codziennego odpalania garbage collectora gita w wygodny sposób.
Analiza aplikacji .NET Zestaw narzędzi do analizy .NET-owych aplikacji znacznie różni się od klasycznych narzędzi dla zwykłych aplikacji x86 / x64, odmienna architektura kodu wymusiła utworzenie całej gamy dedykowanych narzędzi dla plików wykonywalnych .NET, spróbuję przedstawić kilka z nich, które mogą się przydać w reversingu.Dekompilacja kodu Pierwszym i podstawowym narzędziem, które chyba zna większość osób zajmujących się analizą oprogramowania i nie tylko jest dekompilator .NET Reflector..NET Refle...
autor: Hawkeye .NET Runtime Object Editor to program, który znalazłem w sieci dobre dwa lata temu. W tym czasie wielokrotnie mi się przysłużył, a jest przydatny w szczególności tym, którzy pracują z technologią Windows Forms. W skrócie, pozwala modyfikować UI działającej aplikacji. Jego użycie jest proste. Wskazujemy myszką interesujący nas fragment aplikacji, a Hawkeye oznacza wybraną kontrolkę przy pomocy czerwonej ramki i wyświetla listę właściwości i prywatnych pól klasy, których wartości może...
Za każdym razem, kiedy kończymy tworzenie jakiejś nowej aplikacji, bądź też wypuszczamy aktualizację dla programu dobrze znanego na rynku, zachodzi konieczność utworzenia, bądź też zaktualizowania instalatora dla tejże aplikacji. Oczywiście możemy pliki wykonywalne aplikacji wraz z zasobami dostarczyć naszym użytkownikom np. w postaci skompresowanego archiwum, jednak często jest to rozwiązanie nie do końca elastyczne i wygodne - wymaga choćby użycia dodatkowej aplikacji obsługującej kompresję plików. Dl...
SyntaxWalker służy do rekursywnego odwiedzania wszystkich węzłów drzewa składni. Za pomocą SyntaxWalker można zbadać/odczytać strukturę kodu: using System; using System.Collections.Generic; using System.Linq; using Roslyn.Compilers.CSharp; namespace GettingStartedCS { class SyntaxWalkerTest { private static string source = @" using System; using System.Collections; using System.Linq; using System.Text; ...
Dziś dość nietypowy wpis, ponieważ zamiast rozwiązywać kolejne problemy ludzkości, przedstawię listę moich programów codziennego użytku, bez których moja praca byłaby mniej efektywna oraz mniej zajmująca oraz codzienne czynności bardziej uciążliwe i niezadowalające. Wpis może być o tyle ciekawy, że lubię korzystać z rzeczy nowych, w pewien sposób innowacyjnych oraz ogólnie mało znanych...
2lis/110Debugowanie Visual Studio Dziś postaram się przybliżyć rzadko stosowaną technikę wyszukiwania błędów w kodzie. Polega ona na użycia drugiej instancji Visual Studio do znalezienia błędów w pierwszej. Patrząc na ostatnie zdanie można zacząć się zastanawiać jak szukanie błędów w Visual Studio może pomóc w znalezieniu błędów w naszym programie. Należy zdać sobie sprawę, że tak naprawdę Visual Studio zawiera w sobie nasz kod. I naszym celem jest prześledzenie działania tego kodu. Sztandarowym przykład...
W poprzednim poście wspomniałem o mojej walce w Mono Cecil, dzisiaj chciałbym się podzielić moimi wrażeniami i doświadczeniem. Dodam tylko, że o Mono usłyszałem na spotkaniach wrocławskiej grupy .net, wykład prowadził Paweł Łukasik, slajdy z wykładu dostępne są na jego blogu: http://pawlos.blogspot.com. Jak zwykle zapraszam na spotkania i wykłady. Źródła które pokaże, są tylko prostym przykładem, zamysłem tego co chciałem zrobić w docelowym rozwiązaniu. Powinny jednak wystarczyć by ukazać jak działa Mon...
Co należy zrobić, by pobawić się Roslyn syntax visualizer: Pobrać i zainstalować RoslynCTP http://www.microsoft.com/download/en/details.aspx?id=27746, Start -> Microsoft Codename Roslyn CTP -> Getting Started, Otworzyć i uruchomić (F5) solucję Syntax Visualizer Extension, W nowej instancji, która się otworzy Visual Studio wybrać Edit -> Other Windows -> Roslyn Syntax Visualizer, Stworzyć dowolny nowy projekt, na przykład aplikację konsolową, Teraz można podglądać drzewo składni p...
Na wstępie chciałbym przeprosić, że to tak długo trwało , ale ciężkie życie programisty nie zawsze pozwala mi znaleźć czas na częste blogowanie.W tej części mojego tutoriala zajmiemy się samą konfiguracją usługi log4net. Zasadniczo istnieją dwa możliwe podejścia do konfiguracji. Można stworzyć osobny plik konfiguracyjny i nazwać go np. log4net.config lub dodać sekcję do głównego pliku konfiguracyjnego aplikacji. Pierwszym przypadku należy samodzielnie odczytać plik za pomocą api konfiguracyjnego platform...
Wiele osób zna zapewne CodeDOM – bibliotekę, która pozwala generować kod źródłowy przez budowanie go z „klocków” opisujących każdy element kodu: deklarację metody, przypisanie wartości do zmiennej, itp. Nie dało się jednak w łatwy sposób wykonać operacji odwrotnej, tj. zamiany tekstu na drzewo obiektów, które można by łatwo i wygodnie analizować. Problem ten doprowadził to powstania kilku parserów kodu napisanego w C# – na potrzeby kompilatora, środowiska...