autor: Jeżdżę sobie ostatnio po TFSie jak Heniek po łysej kobyle, ale żyć z tym trzeba. Poniżej kilka tipów, które uczyniły moje życie trochę lepszym. Z przeogromną wdzięcznością poczytam w komentarzach kolejne sugestie dotyczące dalszych uproszczeń. 1. git-tfs https://github.com/git-tfs/git-tfs Ten projekcik zdecydowanie na pierwszym miejscu. Ale ostatnio o nim się osobno rozpisałem. 2. Telerik TFS Work Item Manager http://www.telerik.com/agile-project-management-tools/tfs.aspx Narzędzie mające pełn...
autor: Jak da się zauważyć - mam teraz na tapecie TFSa. I jeśli z całego tego zamieszania wyniknie choć jedna skonwertowana na gita osoba - z radości urządzę sobie kąpiel w kozim mleku i szampanie. Kilkukrotnie już wspominałem, że życie z TFS wcale nie musi oznaczać życia bez Gita. Wręcz przeciwnie - życie z TFS powinno "implicitly" kojarzyć się z wykorzystaniem Gita w celu obejścia największej porażki TFSa, czyli komponentu zajmującego się kontrolą wersji. Można to zrobić bardzo prosto. A co najlepsze...
Po zapoznaniu ze zmianami jakie na nas czekają przy budowie Content Type’ów przy pomocy Visual Studio 2011 zobaczmy jakich zmian możemy się spodziewać jeśli chodzi o tworzenie list. Zacznijmy zatem od dodania nowego elementu do projektu: Pierwszą zmianę widzimy już na tym etapie, a mianowicie nie dostajemy już wyboru, czy chcemy utworzyć List Definition czy List Instance. Miejsce tych dwóch elementów zastąpił...
Wiele z przewag Gita nad TFS wynika z zasadniczych różnic pomiędzy scentralizowanym a zdecentralizowanym podejściem do kontroli wersji. Więcej na ten temat pisałem w postach Git - rozproszony system kontroli wersji oraz Dlaczego już nie lubię SVN. Zapraszam również tam, a póki co...
Zapraszam do lektury: http://msdn.microsoft.com/pl-pl/library/prism–nawigacja-na-podstawie-zdefiniowanych-stanow.aspx
autor: Nie jest to moje pierwsze TFSowe randewu. Wcześniej korzystałem z niego dwukrotnie - zawsze babrając się jako programista tylko w kontroli wersji, bez łorkajtemów, uzerstoris etc. Efektem była gruba, kolczasta, płonąca i ociekająca żerczym kwasem ściana nienawiści między nami. Przyrzekałem sobie że "nigdy więcej", aż tu nagle... No ale, życie przynosi niespodzianki. Z pewnym zaskoczeniem zauważam, że do tej pory prawie nie poruszałem tego tematu na blogu, znalazłem raptem jeden post z tagiem "tfs...
Dziś będzie o jeszcze jednym typie breakpointu. Kiedy może się on przydać zobaczmy na przykładzie. Automatycznie właściwości Wszyscy kochamy automatyczne właściwości, oszczędzają one nam czas i redukują ilość kodu jaki musimy napisać. Jedyną (?) ich wadą jest niemożliwość ich debuggowania. Często, tego nie potrzebujemy, ale czasem przydaje się możliwość ustawienia breakpoint'a na set lub get i np. podejrzenie call stack'a. Zwykłe postawienie w tym miejscu pułapki skutkuje następującym stanem. W Visu...
Już dawno minęły te czasy, gdy javascript pełnił funkcję prostego języka w przeglądarce. Teraz duża część aplikacji webowych jest wykonywana po stronie klienta. Właśnie dla tego dziś opowiem w jaki sposób sprawdzić poprawność kodu javascript'a podczas build'owania aplikacji.
Niedawno był wpis o naprawdę wspaniałym edytorze jakim jest Sublime Text 2. Wtedy postarałem się przedstawić sporo użyteczności i ciekawostek jakie do tego czasu udało mi się zlokalizować/poznać. Dziś ciąg dalszy nowości (tak na “gorąco” bym rzekł), które poznałem w ostatnim czasie, a które wydają się naprawdę fenomenalne. W szczególności dla programistów ;]
Poprzednia część artykułu poświęconego Reactive Extensions (RX) dla .NET została zakończona prostym przykładem, w którym prostą obserwację kolekcji przeprowadzono nie tylko w ramach wątku bieżącego, ale również na odrębnym wątku. W tym celu wykorzystano jednego z wielu planistów (scheduler'ów) dostępnych w ramach RX. Przyjrzyjmy się im trochę bliżej. Otóż w Reactive Extension dla .NET można w bardzo prosty sposób sterować, na jakim wątku „pracuje” obserwowana kolekcja lub przy pomocy jakiego wątku chcem...
W ostatnim poście przedstawiłem MEF wraz z prostym przykładem. Dzisiaj przyjrzymy się dokładniej sposobom eksportu. Znamy już podstawowy sposób eksportu klasy:[Export(typeof(IMessageBoxService))] publicclass WpfMessageBoxService:IMessageBoxService { } Oprócz przekazania typu, można także użyć zwykłego string’a. Ze względu jednak na łatwość popełnienia literówki lepszym sposobem jest użycie typeof. Oprócz klas można również eksportować właściwości np.:publicclass Order { [Export("OrderValue")] ...
Nie dawno otrzymałem email z pytaniem dotyczącym tworzenia dokumentacji do kodu napisanego w C#: Poszukuje czegoś do zautomatyzowania procesu tworzenia dokumentacji dla kodu pisanego w C# i trafiłem na (..) temat odnośnie Sandcastle. Czy ten dodatek do Visual Studio pozwala tworzyć dokumentacje dla C# i jest kompatybilny z VS 2010? Spróbuję w niniejszym wpisie odpowiedzieć na to pytanie. Na temat tworzenie dokumentacji do oprogramowania pisałem już wcześniej w artykule „Tworzenie dokumentacji”. Wspomni...
Wielu programistów .NET wiedzą o istnieniu Reactive Extensions, działających w oparciu o Linq. Tutaj są opisane podobne możliwości w JavaScript.
autor: Dawno już nie pisałem nic o rozwiązaniach kolaboracyjnych, czas wrócić do kontunuacji serii. Wcześniej popełniłem dwa wpisy o: instalacji SharePoint Foundation 2010 oraz wyborach między SharePoint Foundation i Office 365. Teraz czas na instalacje “DUŻEJ” maszyny, czyli SharePoint Server 2010. W nastepnych postach przyjrzymy się już bliżej pewnych szczególnym aspektom – mając środowisko. WPROWADZENIE Zastanówmy się przez chwile jakie wersje tego środowiska mamy i czym się one różnią (poza ceną ocz...
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.