Warsaw Official .Net User Group–Wystartowaliśmy!

14
lis/11
1
WODNUG_LOGO

9 listopada odbyło się pierwsze spotkanie WODNUG(Warsaw Official .Net User Group) – nowopowstałej grupy pasjonatów technologii .Net z województwa mazowieckiego!

Podczas spotkania, poza omówieniem kwestii organizacyjnych, wystąpił Bartek Zass, częstując nas sokiem z Mango własnej roboty(a więc najważniejszymi informacjami zarówno dotyczącymi rozpoczęcia developmentu dla platformy Windows Phone 7 i 7.5, jak i ciekawostkami technicznymi dotyczącymi zastosowanych i dostępnych dla programistów mechanizmów).

Paradoksalnie, dużą wartością prezentacji dla mnie stanowił fakt, że Bartek doszedł do… 2 slajdu :)) Jego wystąpienie odbyło się w luźnej formie, gdzie kolejne obszary były dostosowywane do toczącej się dyskusji, pytań z sali i próśb o zaadresowanie danego obszaru. Zdecydowanie warto było tam być offline ;)

Spotkanie z Normanem Judah, Chief Technology Officer w Microsoft

Podczas spotkania inauguracyjnego obiecałem zapewnienie ciekawych prelegentów, również od samego patrona merytorycznego naszej Grupy, czyli firmy Microsoft.
Bartek Zass był pierwszym reprezentantem, a już za 2 tygodnie kolejna szansa na wysłuchanie prezentacji gościa specjalnego, jakim będzie Norm Judah, CTO w Microsofcie! Więcej informacji o nim znajdziecie tutaj.

Tak tak, już 28 listopada o godzinie 18:00 odbędzie się spotkanie z Normanem – wstęp oczywiście jest bezpłatny :)

Rejestrujcie się więc gromadnie na Codeguru: http://www.codeguru.pl/kalendarium/podglad-wydarzenia/spotkanie-z-normanem-judah-cto-microsoft,5669 
I koniecznie przekażcie info znajomym!

Zapraszam na WODNUG!

Kończąc posta bardzo mocno zapraszam do uczestnictwa w spotkaniach naszej grupy! Planujemy spotykać się w każdą drugą środę miesiąca, w siedzibie Microsoft przy Al. Jerozolimskich 195A w Warszawie.

W ramach zachęty wklejam poniżej opis WODNUG, jaki znajdziecie również pod adresem http://wodnug.pl

WODNUG, czyli Warsaw Official .Net User Group, jest społecznością pasjonatów technologii .Net z województwa mazowieckiego. Celem istnienia grupy jest wspólny rozwój realizowany poprzez poszerzanie wiedzy, wymianę doświadczeń, jak i zawieranie znajomości z pasjonatami o podobnych zainteresowaniach.
Do realizowanych i planowanych form funkcjonowania grupy należą:

  • Regularne comiesięczne spotkania - w każdą drugą środę miesiąca

    Podczas spotkań będzie okazja zapoznać się z prezentacjami wygłaszanymi zarówno przez znane osobistości ze świata IT(np. Bartłomiej Zass - ISV Developer Evangelist, czy też Norman Judah - Chief Technology Officer, obaj pracujący w firmie Microsoft).

    Spotkania sprzyjają również dyskusji z innymi uczestnikami - takie "offline'owe forum" jest doskonałą okazją do znalezienia rozwiązania dla problemu, z którym borykasz się aktualnie w projekcie

  • Konferencje, realizowane min. raz w roku
  • Warsztaty techniczne
  • Konkursy wewnętrzne, np. Speaker Idol

Podstawową ideą działalności WODNUG jest przeniesienie obszaru szeroko pojętego wytwarzania oprogramowania z poziomu tylko codziennej pracy do poziomu wspólnie rozwijanej pasji. Grupa jest otwarta zarówno dla osób zajmujących się już zawodowo technologiami Microsoft, ale także dla tych, którzy rozpoczynają swoją karierę i pragną nadać jej przyspieszenia.

Pamiętaj, do zobaczenia w siedzibie Microsoft już w najbliższą drugą środę miesiąca! :-)



Artykuły na polskim MSDN

17
sie/11
1
signs

Jakoś tak się złożyło, że zapomniałem wspomnieć na blogu o materiałach mojego autorstwa na polskim MSDNie. Współpracując z Tomaszem Kopaczem przygotowałem 4 artykuły:

 
 
 
 
 
 
 
 

Oczywiście gorąco zapraszam do lektury :-)



Własna reguła do check-inów: praktyczny przykład

10
lip/11
0
signsJedną z mocno przydatnych mechanizmów TFSa jest podstawowa kontrola jakości umieszczanych zmian PRZED ich faktycznym zaistnieniem w repozytorium. Mechanizm ten nazywa się Check in policies (luźne tłumaczenie: reguły check-inów) i standardowo z instalacją dostarczone mamy implementacje takich zasad jak np. “wymagany komentarz do check ina”, czy też “wymagane podpięcie work itema”.
Co jednak, gdy chcemy zaimplementować własny algorytm, weryfikujący specyficzne wymagania naszego zespołu? Wtedy z pomocą przychodzi TFS API i klasa abstrakcyjna PolicyBase, po której dziedzicząc i wypełniając implementacje dosłownie kilku metod, wprowadzamy do naszego zespołu automat spełniający nasze konkretne wymagania dotyczące check-inów.
W poniższym przykładzie pokazuję, jak sprawić, przy wszystkie umieszczane w repozytorium pliki projektowe z rozszerzeniem .csproj zawierały w sobie konkretną frazę(często firmy wprowadzają konkretną konwencję nazewniczą dla projektów, przeważnie jednym z członów jest nazwa firmy).

1.) Tworzymy projekt…


…typu Class Library i dodajemy w nim referencje do biblioteki Microsoft.TeamFoundation.VersionControl.Client. Następnie proponuję zmienić nazwę klasy Class1 na naszą, np. ProjectNameValidator i oznaczyć ją jako serializowalną.

2.) Dziedziczymy i implementujemy…

Klasę ProjectNameValidator odziedziczmy po klasie PolicyBase. Gdy poprosimy Visual Studio o “zaimplementowanie” wymaganych metod i właściwości, zobaczymy dosłownie kilka miejsc do wypełnienia. Najważniejsza metoda to Evaluate, zawierająca logikę naszego sprawdzenia. Poniżej wklejam przykładową implementację(na końcu posta jest też link do kompletnej solucji):
[Serializable]
    public class ProjectNameValidator : PolicyBase
    {
        /// <summary>
        /// fraza do weryfikacji w plikach o rozszerzeniu .csproj
        /// </summary>
        private const string _requiredString = "CompanyName";

        /// <summary>
        /// Opis reguły - pojawi się w oknie dodawania reguły
        /// </summary>
        public override string Description
        {
            get { return string.Format("Dokonujemy sprawdzenia, czy wszystkie pliki .csproj zawierają w sobie fragment \"{0}\"", _requiredString); }
        }

        /// <summary>
        /// Informacja pokazana użytkownikowi, gdy nie ma zainstalowanej biblioteki z regułą na swojej maszynie
        /// </summary>
        public override string InstallationInstructions
        {
            get { return "Nie masz zainstalowanej reguły sprawdzenia nazw projektów - proszę pobrać z http://..."; }
        }

        /// <summary>
        /// Wykorzystywane, gdy chcemy edytować istniejącą regułę.
        /// </summary>
        /// <param name="policyEditArgs"></param>
        /// <returns></returns>
        public override bool Edit(IPolicyEditArgs policyEditArgs)
        {
            return true;
        }

        /// <summary>
        /// Główna metoda dokonująca walidacji
        /// </summary>
        /// <returns></returns>
        public override PolicyFailure[] Evaluate()
        {
            var failures = new List<PolicyFailure>();

            // iterujemy po każdym ZAZNACZONYM pliku
            foreach (var file in base.PendingCheckin.PendingChanges.CheckedPendingChanges)
            {
                if(file.FileName.EndsWith(".csproj") && file.FileName.IndexOf(_requiredString) == -1)
                    failures.Add(new PolicyFailure(string.Format("Plik {0} nie zawiera w sobie fragmentu {1}!", 
                                                        file.FileName, 
                                                        _requiredString), 
                                                    this));
            }

            return failures.ToArray();
        }

        /// <summary>
        /// Pokazana administratorowi podczas dodawania reguły dla danego projektu w TFS
        /// </summary>
        public override string Type
        {
            get { return "ProjectNameValidator"; }
        }

        /// <summary>
        /// Szczegółowy opis pokazany administratorowi podczas dodawania reguły dla danego projektu w TFS
        /// </summary>
        public override string TypeDescription
        {
            get { return string.Format("ProjectNameValidator - dokonuje sprawdzenia, czy wszystkie pliki .csproj zawierają w sobie fragment \"{0}\"", _requiredString); }
        }
    }

3.) Instalujemy…

Instalacji możemy dokonać na dwa sposoby:
A. ręcznie dodać wpis do rejestru(najłatwiej wyszukać klucza “Checkin policies”, bo z tego co zauważyłem, ścieżka może być różna w zależności od konfiguracji. U mnie jest to np. HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\TeamFoundation\SourceControl\Checkin Policies).
Dodajemy nową wartość stringową, gdzie nazwa to prostu nazwa naszej zasady, a wartość to pełna ścieżka do wynikowej dllki naszego projektu z implementacją z powyższych punktów.
B. stworzyć projekt VSIX(Visual Studio SDK wymagane do jego obsługi!) i za jego pośrednictwem umieścić wpis w rejestrze – załączony na końcu posta projekt uwzględnia właśnie instalację z VSIXa.
 
Po instalacji, restarcie VS i przejściu do właściwości Source Control dla danego projektu(Team –> Team project settings –> Source Control –> [zakładka] Check-in Policy –> Add), na liście powinniśmy zobaczyć naszą nową zasadę.
dodanycheckin
Od chwili jej dodania jako obowiązującej, wszyscy programiści będą musieli się do niej stosować. Gdy którykolwiek z programistów nie będzie posiadał zainstalowanej na swojej maszynie biblioteki z naszą zasadą, otrzyma komunikat, jaki wypełniliśmy we właściwości InstallationInstructions. Tak więc check in zostanie uniemożliwiony każdemu, kto nie przeszedł zadanego przez nas warunku lub zwyczajnie nie ma zainstalowanej naszej reguły :)

4.) Wymagamy! ;)

Jak widać poniżej, reguła faktycznie wymusza, aby wszystkie pliki .csproj zawierały fragment z nazwą firmy. Naturalnie zaproponowana implementacja jest dość podstawowa, mamy możliwość wytworzenia bardzo wyszukanych algorytmów. Pamiętajmy tylko, że wprowadzanie odpowiednich zasad ma nam pomóc w codziennej pracy! Nakładanie zbyt rygorystycznych albo zwyczajnie upierdliwych restrykcji może obniżyć wydajność zespołu, albo spowodować, że check iny będą dokonywane znaczniej rzadziej(co nie zawsze jest pożądanym efektem).
eval
 
Kompletna solucja: ProjectNameValidator.zip


TFS Power Tools i modyfikacja Work Itema

06
lip/11
0

gears

Case: Dwa dni temu w ramach jednego z projektów w Billennium przyszedł do mnie kolega z pytaniem o możliwość wyświetlenia dat w szczegółach zadań w TFS. Zadania zostały zaimportowane przeze mnie z MS Projecta i faktycznie daty rozpoczęcia i zakończenia domyślnie nie pokazywały się nigdzie na formularzu zadania ani na liście zadań(screeny poniżej).

Na szczęście z pomocą TFS Power Toolsów udało mi się sprawnie temat ogarnąć i poniżej prezentuję rozwiązanie.

Najpierw widok standardowy, przed rozpoczęciem tweakowania(click na obrazku znacznie ułatwia sprawę;) ):

Jak widać, brakuje gdziekolwiek informacji o oczekiwanych datach rozpoczęcia i zakończenia zadania…

Na szczęście bardzo sprawnie i “na żywym organizmie”(czyli w locie, bez żadnych restartów, zmian w bazie danych i innych cudów) można zmodyfikować Work Itema, żeby zaczął pokazywać pożądaną informację. W tym celu wchodzimy w menu Tools->Process Editor->Work Item Types-> Open WIT from Server i po wskazaniu właściwego projektu i typu Work Itema przechodzimy do zakładki Layout. Na niej w odpowiednim miejscu (ja dla zmyłki w sekcji Classification) klikamy prawym i wybieramy opcję New Control. Następnie wypełniamy właściwości nowododanej kontrolki analogicznie jak na poniższym screenshocie:

Możemy w każdej chwili skorzystać z przycisku “Preview Form”, żeby upewnić się, ze osiągamy zamierzony efekt. Jak już wszystko będzie w porządku wykonujemy zwyczajny zapis(Ctrl+S) i zmiany natychmiast wędrują na serwer. Po przeprowadzeniu takiej przyjemnej i szybkiej akcji, formularz zadania jest wyposażony w dodatkowe pola(u mnie w trybie read only, ponieważ chcę je edytować wyłącznie z poziomu MS Projecta):

Tym samym szybciutko i bez większych problemów udało się pokazać bardzo istotna informację na formularzu.

Dodatkowo naturalnie w Work item queries można w Column Options dodać kolumny Start Date i Finish Date, żeby pokazywać w liście zadań ich terminy. Ale nadal to tylko połowa szczęścia :)



Otrzymałem tytuł Microsoft MVP: Visual Studio ALM

02
lip/11
3

mvp

Co łączy osoby: Jordan, Lebron, Bryant, Magic Johnson, Nowitzki, Rycaj, Pawlik, Subik?

Wszyscy przynajmniej raz zostali wyróżnieni tytułem MVP! :-)
No już dobra, dobra trochę mnie poniosło z tym porównaniem(dla niezorientowanych, pierwsze 5 osób to gracze NBA) ;))
Ale fakt faktem, Microsoft zdecydował się docenić moje działania z ostatnich 12 miesięcy w obszarze Visual Studio ALM, a więc głównej tematyki tego bloga, moich wystąpień na konferencjach, artykułów na MSDN i generalnie codziennych zajęć.

Gratulacje dla Asi i Piotra, MVP właśnie wyjętych ze mną z piekarnika(a więc świeżo upieczonych ;) ). Mam nadzieję, że te literki, tak jak na mnie, również na Was wpłynął motywująco i przerodzą się w Move Very Powerfully.

Gratuluję też wszystkim osobom renominowanym, a więc:

  • Grzegorz Tworek (Enterprise Security)
  • Jacek Doktór (System Center Configuration Manager)
  • Jakub Skałbania (Dynamics CRM)
  • Karol Stilger (Setup & Deployment)
  • Marcin Szeliga (SQL Server)
  • Paweł Pławiak (Directory Services)
  • Paweł Potasiński (SQL Server)
  • Tobiasz Koprowski (SQL Server)

A skoro i tak już jestem chwalipiętą, to jeszcze fragment maila, który zafundował mi banana na twarzy:

Dear Grzegorz Rycaj,
Congratulations! We are pleased to present you with the 2011 Microsoft® MVP Award! This award is given to exceptional technical community leaders who actively share their high quality, real world expertise with others. We appreciate your outstanding contributions in Visual Studio ALM technical communities during the past year.

The Microsoft MVP Award provides us the unique opportunity to celebrate and honor your significant contributions and say "Thank you for your technical leadership."
Toby Richards
General Manager
Community & Online Support

I na koniec kilka linków nt. wyróżnienia MVP:

Strona oficjalna: http://mvp.support.microsoft.com/

Opis programu MVP w Polsce: http://www.wss.pl/Coulisse/10369.aspx

mvp_hor



Podsumowanie ostatnich prezentacji i spotkań

28
maj/11
0

lemur_thumb3I ponownie, podobnie jak w poście napisanym przed miesiącem z kawałkiem, trochę się ostatnio działo, jeśli chodzi o moje wystąpienia na różnych konferencjach i festynach ;). Przede wszystkim regularnie spotykamy się online w ramach cyklu w portalu VirtualStudy.pl, w między czasie wybrałem się do Katowic na Silesian Code Camp, popełniłem też kilka slajdów na Lubelskich Dniach Informatyki i Białostockim IE9 Community Launch. OK, 5 linków w 2 zdaniach oznacza, że nic więcej tu nie wymyślę i czas streścić krótko co tak naprawdę tam się działo ;-)

 

 

 

VirtualStudy

Od ostatniego wpisu odbyły się kolejne 4 spotkania, w których gadałem radośnie do ekranu :) W trakcie jednej z sesji zaginął gdzieś mój głos i dopiero po 5 minutach uczestnikom udało się do mnie dotrzeć z informacją, że na pewno dobrze mi idzie, ale nikt nic nie słyszy :-)))

Za to jak już było mnie słychać, to rozmawialiśmy sobie na tematy:

  • Różne sposoby dostępu do TFS i ich zastosowania
  • Praca z buildami i testami w Visual Studio ALM(celowo piszę i mówiłem o VS ALM, jako, że nawet bez TFS możemy sporo czerpać z możliwości, jakie daje nam Visual Studio w zakresie testowania). Pokazałem wybrane(najciekawsze wg mnie) rodzaje “wbudowanych” testów wraz z ich automatyzacją w procesie builda. A sam proces też sobie wspólnie modyfikowaliśmy ;-)
  • Dostosowywanie TFS do swoich potrzeb – w części 1 tego tematu omówiłem możliwości modyfikacji szablonu procesu, na co warto zwrócić szczególną uwagę i kiedy mocno się zastanowić przed naciśnięciem Ctrl+S ;) W drugiej części(w najbliższy wtorek, 31.05) będę omawiał API, za pomocą którego napiszemy własną aplikację całkiem nieźle dogadującą się z TFS

Tradycyjnie już, na końcu posta znajdziecie oczywiście linki do slajdów z tych spotkań.

Silesian Code Camp

Społeczność Leonów zawodowców ze Śląska zaprosiła mnie na tegoroczny Code Camp, w ramach którego odbywały się równolegle 2 ścieżki – SQLowa i Programistyczna. Ja otwierałem naturalnie tę drugą i naturalnie na temat Team Foundation Servera. Ponownie, ciekawe jest to, że na pytanie zadane na początku sesji o świadomość istnienia TFS(“czy słyszałeś/słyszałaś…”) mało osób się przyznaje, a z drugiej strony po sesji wiele osób przychodzi po dodatkowe informacje i wskazówki, czyli faktycznie jest zapotrzebowanie na to narzędzie i materiały o nim.

Ciekawy jest też fakt, że nadal licencjonowanie stanowi “barierę”, przeważnie czynnikiem zniechęcającym jest wyobrażenie o olbrzymich kosztach do poniesienia. Zgadzam się, że da się mało efektywnie zaplanować wdrożenie środowiska z TFS w roli głównej :)
Ale już opierając się o partnerstwo z Microsoftem, przy naprawdę przystępnej opłacie rocznej(na poziomie 1300 euro rocznie) zapewniamy licencje przynajmniej dla core’u drużyny :)

Dla osób zainteresowanych szczegółami licencyjnymi, załączam link do dokumentu(tak, wiem, dla ułatwienia ma 46 stron;)), wyjaśniającego zasady: http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&FamilyID=2b1504e6-0bf1-46da-be0e-85cc792c6b9d


Lubelskie Dni Informatyki

9 maja 2011 wesoło(naprawdę wesoło, jazda tą drogą w poniedziałek rano jest 500 razy przyjemniejsza niż w piątek wieczorem) pokonałem 160 km trasy Warszawa-Lublin, żeby pojawić się na Lubelskich Dniach Informatyki. Jako, że Billennium ma swój oddział właśnie w Lublinie, staramy się regularnie wspierać takie inicjatywy jak LDI.

Wystartowałem z moim ulubionym tematem, czyli wprowadzeniem do TFS. Pod koniec wystąpienia wywiązała się ciekawa dyskusja nt. licencjonowania całego środowiska, możliwości(granic) wydajnościowych i porównania z innymi platformami ALM. Widać więc, że coraz częściej wykorzystujemy coraz mocniej zintegrowane narzędzia, pokrywające szeroko proces wytwarzania oprogramowania, chociaż myślę, że nadal jest to tylko początek migracji do nich.

IE 9 Community Launch – Białystok

Wczoraj przed północą wróciłem z Białegostoku, gdzie Grupa .Net z Politechniki Białostockiej, we współpracy z Białostocką Zawodową Grupą .Net organizowała wydarzenie Internet Explorer 9 Community Launch. Z Warszawy wybieraliśmy się z Rafałem Czupryńskim na pociąg o 8:35 i przejazd w tamtą stronę zaczął się od absolutnego no-stress stwierdzenia Pani z informacji PKP, że “dzisiaj pociąg odjeżdza o 8:52”. Niby to niecałe 20 minut, ale podejście tej kobiety było tak olewcze, że równie dobrze mogliśmy usłyszeć, że “dzisiaj ten pociąg nie jedzie, any problemz madafakazzz?”.

Grupa Białostocka ma to do siebie, że jakie wydarzenie by się tam nie odbywało, to zawsze:

  • Organizatorzy “dają radę”, tzn. podejście jest z nastawieniem full pro mode on
  • Na sali frekwencja jest liczona w setkach… osób
  • Jest naprawdę przyjemnie przyjść, korytarze są obklejone i oplakatowane, z daleka wiadomo gdzie chcemy iść, sama obsługa przy rejestracji zasługuje na osobnego posta :)
  • itd.
  • itd.
  • i jeszcze ;)
  • i oh ah na koniec

Moja sesja była poświęcona buildom i testom w TFS, czyli pokazaniu jak łatwo wprowadzić praktykę Continous Integration w naszych projektach i jak zdecydowanie ułatwić sobie pracę, wykorzystując odpowiednie narzędzia.

Po samym wydarzeniu przenieśliśmy się ze znajomkami na obiad do jakiejś doskonałej restauracji greckiej, która została zarekomendowana jako 2D – Dużo i Dobre. Po wizycie tam wiemy już, że jest 3D – Długo(czekaliśmy chyba z godzinę na podanie dań), Dużo i Dobre. Jak będę miał kiedyś zapas czasu, to może jeszcze wrócę ;-)

Obiad zakończyliśmy przenosinami do Domu Weselnego Gracja(tak, wiem, grubo), w którym spędziłem fantastyczne 15 minut… :] Rafi dławił się ze śmiechu, że piłowałem pół Białegostoku dla 15 minut(za to sam planował wracać pociągiem o pogańskiej godzinie 4 rano następnego dnia, hehe).
Niestety, wcześnie następnego dnia musiałem być w Warszawie, a ostatni pociąg z Białegostoku odjeżdza o 19:41… Tzn. planowo, bo nasz miał opóźnienie, co w mnie szalenie boli(zamiast 15 minut mogłem wyjść z gracją z Gracji po 30 uuuu).

Żałuję, bo zanosiło się na RÓJ atrakcji, ale to jeszcze nadrobiiimy. Tak czy siak duże gratulacje i brawa dla Organizatorów + dziękuję za upominki ;p


Najbliższe plany

No dajcie żyć… ;)

 

Slajdy

VirtualStudy, Sesja 5: Pobierz

VirtualStudy, Sesja 6: Pobierz

VirtualStudy, Sesja 7: Pobierz

VirtualStudy, Sesja 8: Pobierz



Poznaj TFS! Instalacja serwera

10
maj/11
5

Z lekkim opóźnieniem wracamy do cyklu poznawania Team Foundation Servera :)  Zgodnie z prośbą Andrzeja, dzisiaj kilka słów na temat samej instalacji. Nie chciałbym się jednak powtarzać z publikowanymi przeze mnie już wcześniej materiałami, dlatego najpierw odsyłam Cię, drogi Czytelniku do:

1.) Materiału mojego autorstwa, który ukazał się 22 kwietnia w portalu MSDN:

http://msdn.microsoft.com/pl-pl/library/team-foundation-server-2010—instalacja

Opisuję w nim etap przygotowań do instalacji(wymagania sprzętowe i systemowe), przejście przez proces instalacyjny, razem ze scenariuszem “zaawansowanym” i poświęcam kilka słów możliwościom rozbudowy środowiska np. o dodatkowy serwer aplikacyjny(w celu rozłożenia obciążenia/zapewnienia wysokiej dostępności)

2.) Posta na tym blogu, stworzonego na etapie TFS 2010 BETA2. Tak naprawdę sam proces instalacji nie zmienił się specjalnie od tamtego czasu, więc post też może być przydatny(chociaż traktujmy go jako opcjonalny po lekturze powyższego materiału z MSDN):

http://vsts.pl/post/Instalujemy-TFS-2010-Beta-1.aspx

A teraz kilka słów dodatkowych

TFS 2010 jest pierwszym produktem w serii, posiadającym instalator typu “Next, next, next, thank you”. Wcześniejsze edycje(2005 i 2008) wymagały sporo uwagi i w obu przypadkach zdecydowanie polecam Instalation Guide’y(dostępne pod linkami: 2005 / 2008).

Wizard w 2010 przyjemnie nas prowadzi za rękę przez cały proces, w zasadzie trudno zrobić błąd. Gdy stawiamy pierwszą instalację, radzę nie pchać się w scenariusz zaawansowany, podstawa nam w zupełności wystarczy. Mamy też inną możliwość. Ze stron Microsoftu możemy pobrać TRIAL TFS 2010 w postaci maszyny wirtualnej z zainstalowanymi dla nas odpowiednimi komponentami.

Do pracy z TFS 2010 możemy zaprząc wszystkie wersje Visual Studio 2010 poza Express, jak również większość Visual Studio 2005 i 2008(również poza Express). Wszystko, czego potrzebujemy, to zainstalowany dodatek Team Explorer. Gdybyście nie mieli go w swoim Visual Studio, to poniżej podaję linki:

Dodatkowo, dla 2005 i 2008 należy pobrać tzw. Compatibility Packi, dostępne pod adresami: 2005 / 2008

No tak, sporo tego, ale tylko w przypadku chęci skorzystania z TFS 2010 z poziomu VS 2005/2008. Przy VS 2010 wszystko powinniście mieć na pokładzie zaraz po instalacji środowiska :) Wymagania doinstalowania dodatków biorą się ze zmian, jakie zaszły w TFS 2010 pod względem organizowania projektów – wg mnie są to zmiany zdecydowanie na lepsze, nieco później w naszym cyklu dowiemy się, jakie to konkretnie różnice.

Tak czy siak, niezależnie od wybranej wersji Visual Studio dążymy do uzyskania widoku zbieżnego z poniższym screenshotem:

image

Uprawnienia w TFS

TFS pozwala nam zarządzać uprawnieniami na wielu poziomach – zaczynając od poziomu serwera, przechodząc przez kolekcje projektów, projekty, buildy, katalogi(w tym gałęzie), wreszcie na pojedynczych plikach kończąc. Jeśli któryś z poziomów jest dla Ciebie niezrozumiały(np. “kolekcje projektów”) – to nic straconego! Na pewno w ramach naszego cyklu poruszę ten temat.

Zarządzanie uprawnieniami na każdym z poziomów wygląda bardzo podobnie, do czynienia możemy mieć tylko z nieco innymi uprawnieniami(np. na poziomie kolekcji projektów będziemy ustawiali, kto może tworzyć nowe projekty – naturalnie na poziomie projektu takiego uprawnienia już nie będzie :)).

Przykładowy zestaw uprawnień dla kolekcji projektów został zaprezentowany poniżej:

Uprawnienia

Nie należy się przerażać, widząc te pozycje(nawet jeśli w pierwszej chwili nie wiemy co oznaczają)! TFS zaraz po instalacji ma ustawione pewne standardowe wartości, dzięki którym możecie śmiało zacząć pracę z systemem. A z czasem dojdziecie też do tego, jak sobie zorganizować uprawnienia w Waszym zespole.
Uprawnienia przydzielamy w sposób analogiczny do uprawnień w NTFS – możemy je nadać/odebrać użytkownikowi lub grupie(można je stworzyć “lokalnie” w TFS lub oprzeć o istniejące grupy w Active Directory lub na serwerze TFS – niekoniecznie musi być w domenie). Z praktyki zdecydowanie polecam konfigurowanie uprawnień w oparciu o grupy. Włączenie nowej osoby do zespołu oznacza wtedy dołączenie do odpowiedniej grupy. Naturalnie czasem nie chcemy nadawać pełnych uprawnień, natomiast nadal da się tak rozplanować liczbę grup i ich możliwości, żeby spędzać potem nad nimi bardzo mało czasu :-)

Gdzie faktycznie szukać odpowiednich pozycji konfiguracyjnych? Zawsze tam, gdzie znajdziecie tekst “Security” lub “Group Membership”. Najłatwiej je znaleźć eksperymentując i klikając prawym przyciskiem myszy na różnych elementach w Team Explorerze lub w Source Control Explorerze :-)
Łatwo je też znajdziemy w menu Team –> Team Project Settings / Team Project Collection Settings

  • Group Membership – to tu tworzymy sobie nowe grupy i dokładamy do nich nowych członków(uwaga: grupa może się też zawierać w innej grupie!). Jeden użytkownik może naturalnie należeć do wielu grup. Poniżej widzimy konfigurację grupy “Administratorzy projektu”, do której należy obecnie jeden użytkownik.
    Mam jednak możliwość dołożenia grupy TFSowej albo użytkownika/grupy Windowsowej i po wykonaniu takiej akcji wskazani użytkownicy nabiorą odpowiednich uprawnień(jakie to uprawnienia przeczytamy w kolejnej kropce)
grupa
  • Security – to właśnie tam określamy co może a czego nie dana grupa/użytkownik.
    Jak widać, tutaj też możemy dodać grupę lub użytkownika. Jest to łudząco podobne do tego, co mamy przy zarządzaniu grupami, jednak tutaj mówimy już tylko o stworzeniu na liście nowej pozycji, dla której chcemy nadawać uprawnienia. Na tym ekranie  nie ma mowy o dodaniu nowego członka do grupy “Project Collection Administrators”.
Uprawnienia2

Ważna uwaga odnośnie uprawnień

Opisane powyżej mechanizmy zarządzania uprawnieniami dotyczą wyłącznie części TFSowej – nie propagują się automatycznie na zintegrowane systemy, jak np. Sharepoint Server, czy też Reporting Services. Należy więc oddzielnie ręcznie dodać uprawnienia w odpowiednich miejscach. Tutaj znowu wracam do praktyki zarządzania przez grupy. Jeśli skonfigurujemy sobie sprytnie grupy Windowsowe i wykorzystamy je przy określaniu uprawnień do TFS, Sharepointa i Reporting Services, to potem nadanie uprawnień nowej osobie, czy też zmiana uprawnień dla istniejącego zespołu, zajmie nam dosłownie kilka minut.



Poznaj TFS! Widok Team Explorer w Visual Studio

17
kwi/11
5

Na początek wytłumaczę, dlaczego jednak jeszcze nie piszę o instalacji TFSa(pod poprzednim postem Andrzej zaproponował właśnie napisanie kilku słów nt. instalacji i nadawania uprawnień) – już za moment(w tym tygodniu) na MSDN ukaże się mój artykuł na temat instalacji i wtedy rozpiszę tutaj jego uzupełnienie :)

Poprzednio udało nam się poprawnie podłączyć do TFS. Dzisiaj lecimy więc z przeglądem przystawki Team Explorer w Visual Studio. Dla przypomnienia, ekran, jaki otrzymaliśmy wygląda tak:

image

Być może ekran, jaki Wam się pojawił jest nieco inny i już za moment dowiemy się, dlaczego. Idąc pokolei, co my tu mamy:

  • Ulubione – czyli możliwość przypięcia najczęściej używanych elementów(jednak nie wszystkich). Jak przypiąć? Za momencik się dowiemy :-)
  • Work Item Templates – jest to funkcjonalność, którą dostajemy po doinstalowaniu dodatku TFS Power Tools. Bez niego nie zobaczycie tej pozycji. Co nam daje? Pozwala na szybsze i łatwiejsze zarządzanie tzw. Work Itemami, czyli Jednostkami Roboczymi. O Work Itemach porozmawiamy sobie jeszcze nie jeden raz
  • Work Items – no właśnie, i znowu Work Itemy ;) mówiąc najprościej, Work Item to porcja informacji, za pomocą której w TFS reprezentujemy informacje o naszym projekcie. Codeplex pozwala nam na przechowywanie Work Itemów, które przyjmują jeden z trzech typów: Funkcjonalność, Zadanie i Problem. Aby dodać nowy Work Item, klikamy prawym przyciskiem myszy na węźle Work Items i wybieramy pozycję New Work Item->Typ.
    Kilka linijek niżej jeszcze powiemy nieco więcej.
  • Builds – TFS pozwala na zautomatyzowanie procesu budowania i testowania naszych aplikacji. To właśnie w tym miejscu spędzimy czas konfigurując ten mechanizm.
  • Team Members – kolejna funkcjonalność, doinstalowywana ze wspomnianym pakietem TFS Power Tools. Pozwala po prostu na podgląd i zarządzanie współpracownikami w danym projekcie
  • Source Control – nic innego, jak repozytorium. Aby rozpocząć pracę z nim, klikamy dwukrotnie właśnie w tym miejscu. W centralnej części ekranu pojawia się widok Source Control Explorer, za pośrednictwem którego możemy przeglądać repozytorium i pobrać kod w odpowiednie miejsce na nasz dysk(prawy klawisz w odpowiednim miejscu i polecenie “Get Latest Version” pozwolą nam wskazać miejsce na lokalnym dysku do którego zostanie pobrany kod):
image

 

No dobrze, ale Codeplex kryje malutkie oszustwo… A właściwie nie tyle oszustwo, co po prostu obcięcie funkcjonalności :( Dlatego poniżej wklejam zrzut ekranowy z prawdziwego, pełnego TFSa:

image

Jakie mamy różnice: przede wszystkim, widzimy dwie nowe gałęzie: Documents i Reports. Instalując Team Foundation Server, mamy możliwość zintegrowania go z MS Sharepoint’em i platformą raportową MS Reporting Services. Team Explorer daje nam szybki dostęp do obu tych miejsc – Documents pozwala na przeglądanie dokumentów składowanych na naszym zespołowym Sharepoincie, a Reports uruchamia w trzech kliknięciach raport dotyczący projektu. Oczywiście zajrzymy do tego za kilka odcinków.

A teraz wracając jeszcze do samego Source Control i pobranego kodu(bo przecież o to nam na początku chodzi, prawda?) – plik solucji możemy odpalać albo od nas z dysku(z podanej wcześniej lokalizacji), albo prosto z Source Control Explorera(SCE). Gdy po dokonaniu zmian chcemy je umieścić w repozytorium, klikamy na odpowiednim miejscu w repozytorium(w następnych odcinkach wyjaśnię, co mam na myśli pisząc o "odpowiednim" miejscu) i wybieramy opcję “Check-in”.



Quick Hint: WebAccess i otwieranie elementów w nowym oknie

12
kwi/11
0

Podczas dzisiejszej sesji Virtual Study dostałem pytanie o możliwość zmiany standardowego zachowania modułu TFS Web Access. Chodziło o zablokowanie wyskakiwania nowych okien w formie popupów i otwieranie ich w postaci nowych tabów w przeglądarce.

Nigdy nie spotkałem się z narzekaniem na te popupy, ale zadane pytanie było na tyle interesujące, że postanowiłem temat zbadać samodzielnie. Przekopałem się trochę przez mechanizmy i mam pierwsze rozwiązanie, działające z racji zabezpieczeń niestety tylko w Internet Explorerze(chociaż Web Access generalnie i tak warto przeglądać z poziomu IE). Kroki jakie należy wykonać:

1.) Znajdź na serwerze miejsce, gdzie leży TFS Web Access. Pomóc nam tu może konsola IIS i wskazanie ścieżki:

image

2.) W podanej ścieżce znajdź plik /UI/Masters/Content.master

3.) Prawie na samym końcu pliku, tuż przed tagiem </body> dostaw fragment:

<a id='fakeClick' target="_blank" href='#' style="display:none">fakeLink</a>
<script type="text/javascript">
    WindowManager.openWindow = function(url, name, features)
    {
        var fake = document.getElementById('fakeClick');
        fake.href=JsUtility.fixUrl(url);
        fake.click();
        return null;
    }

</script>


Zaczynamy cykl krótkich how-to: Poznaj Team Foundation Server!

11
kwi/11
2

aczyty_TFSMoje ostatnie prezentacje, spotkania online i dyskusje ze znajomymi pozwoliły mi wyciągnąć wniosek, że mój temat, czyli Team Foundation Server jest w Polsce mało popularny. Przeważnie na pytanie “kto z Was używał kiedykolwiek TFS” ręce podnosi max 10-15% osób. Podobnie było wczoraj podczas Silesian Code Camp, a liczba pytań w trakcie i po mojej prezentacji sprawiły, że pomysł, jaki od pewnego czasu się wykluwał, przeradza się właśnie w działanie :)

Na blogu powstanie nowa kategoria, która jeśli zasłuży, to dorobi się swojego linka w głównym menu ;)) Kategoria będzie nosiła nazwę “Poznaj TFS”, a posty prezentowane w jej ramach będą miały charakter krótkich poradników, ot, takie krótkie piłki ;-)
Liczę na to, że cykl spotka się z zainteresowaniem również starych TFSowych wymiataczy – zachęcam do współpracy, nigdy nie wiadomo, czy nie dowiemy się wzajemnie czegoś od siebie! Tam, gdzie to możliwe, będę się posługiwał codeplexem, co powinno Wam ułatwić przyswojenie i przetestowanie danego tematu. Zaczynamy już dzisiaj, oczywiście od podłączenia do serwera :)

 

Tworzenie połączenia, logowanie do serwera

Wszyscy na pokładzie? No to startujemy na bogato ;), od razu odpalamy Visual Studio. Dopuszczalne są wszystkie wersje poza Express. Codeplex wspierany jest przez TFS 2010, więc gdybyśmy zechcieli pracować z poziomu Visual Studio 2005 lub 2008, to będziemy potrzebowali tzw. compatibility packów: odpowiednio dla wersji 2005 i 2008. Microsoft rozwijając serwer nie chciał sie po prostu blokować wsteczną kompatybilnością(i bardzo dobrze!), dostaliśmy po prostu paczki do starszych wersji Visual Studio.

Po uruchomieniu Visual Studio szukamy widoku Team Explorer(View->Team Explorer). Jeśli by go tam nie było(w wersjach 2005 i 2008 nie będziecie go mieli na 90%, w wersji 2010 powinien już być), to też niestety trzeba będzie dociągnąć. Znowu wybieramy odpowiedni link dla odpowiedniej wersji: 2005, 2008, 2010. Czysty i goły Team Explorer wygląda tak:

 

image

Dodajmy pierwszy serwer! Klikamy w jedyną dostępną ikonkę – tak, to ta pierwsza z prawej z plusikiem. Dostajemy nowe okno, w którym możemy wybrać jeden ze zdefiniowanych serwerów. Ponieważ jeszcze żadnego nie mamy, dodajmy nowy! Klikamy w przycisk servers, a następnie Add. Wpisujemy kilka informacji dotyczących Team Foundation Servera, z którym chcemy się połączyć. Dla uniknięcia problemów polecam wpisanie pełnego adresu URL, czyli w przypadku mojego projektu codeplex: https://tfs.codeplex.com/tfs

image

Jeśli podaliśmy właściwy adres, zostaniemy spytani o dane dostępowe(chyba, że pracujemy w domenie i system nas rozpozna i uwierzytelni automatycznie). Po ich podaniu mamy możliwość wybrania projektów, z jakimi chcemy pracować. W moim przypadku jest to:

image

Do tematu kolekcji projektów(lewa kolumna) i samych projektów(prawa) jeszcze wrócimy w kolejnych odcinkach. Kończymy wybór klikając “Connect” i dziękujemy – podłączyliśmy się właśnie do TFS i aż nas korci, żeby zacząć pracę ;-) Aaaale o tym już w następnym odcinku.

Na zachętę tylko screenshot widoku Team Explorer po poprawnym skonfigurowaniu połączenia:

image