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


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.



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>


Prezentacje i spotkania online, potem prezentacje, a potem spotkania…

06
kwi/11
0

lemurOstatni czas był dla mnie dość obfity, jeśli chodzi o prowadzenie sesji w ramach różnych przedsięwzięć. Od ostatniego wpisu(opublikowanego po moich pierwszych dwóch spotkaniach w portalu VirtualStudy.pl) popełniłem kolejne dwie sesje online w ramach cyklu, wprowadzającego zespół wytwarzający oprogramowanie do świata Team Foundation Server. Tak więc po raz dwieście szesnasty będę się usprawiedliwiał przed samym sobą, że zaniedbuje pisanie tutaj ;)

 

 

 

VirtualStudy

Sesje te poruszały takie kwestie jak:

  • Bardziej zaawansowane mechanizmy dostępne podczas pracy z repozytorium plików, takie jak shelving, labels(etykiety), czy też check in policies(reguły umieszczania plików na serwerze)
  • Wersjonowanie baz danych
  • Zarządzanie gałęziami kodu
  • Praca z Work Itemami
  • Struktura projektów w TFS i zarządzanie uprawnieniami

Udało mi się gładko przejść do tych obszarów, które odpowiadają na pytanie “a czym się różni TFS od SVN?” i to co ważne – dało się zauważyć wyraźne zainteresowanie tymi tematami! To tylko motywuje do dalszej pracy, bo widać, że gadanie do ekranu, siedząc samemu w pokoju ma jednak sens! ;-)
Na końcu posta znajdziecie oczywiście linki do slajdów z tych spotkań.


Warszawskie Dni Informatyki

Zostałem wywołany do tablicy przez moich znajomych, organizujących konferencję Warszawskie Dni Informatyki 2011. Była to już druga edycja(w poprzedniej pomagałem w ostatniej fazie przygotowań), w tym roku poproszono mnie o poprowadzenie sesji technicznej. Wybrałem sesję, którą miałem gotową, podległa tylko delikatnemu szlifowaniu. Tytuł sesji to “ASP.NET Ajax: Dbaj o użytkownika i jego łącze! :)” i musze powiedzieć, że jak zwykle przed tą prezentacją miałem sporo obaw. Temat jest trudny do pokazania(w 75 minut pokazać najważniejsze narzędzia i podstawy pracy z AJAXem, po czym udowodnić, pokazując kilka przykładów i dobrych praktyk, że jest o co się bić, jeśli chodzi o ilość przesyłanych danych), ale z opinii, które do mnie docierały po sesji i mojego własnego samopoczucia – udało się!

Oczywiście wystąpienie pozwoliło na kilka obserwacji:

  • Stosunkowo niedużo osób nie słyszało nigdy o AJAXie – a więc faktycznie buzz związany z Web 2.0, 3.0, 216.0 robi swoje
  • … ale nadal popularność technologii AJAX jest dość marna. Na moje pytanie “kto tworzy lub wyprodukował chociaż jedną aplikację webową?” ręce podniosło ok 70% obecnych osób.
    Kolejne pytanie “a kto wykorzystuje AJAXa"?” dało odzew w liczbie 8-10% osób obecnych.

Nie wiem czy aż tak wierzymy we Flashe, Silverlighty i HaTeEmEle piąte, ale wg mnie dobry webdeveloper AJAXem posługiwać się musi i koniec. Nie musi to być ASP.Net AJAX(wg mnie wygodny i przy poprawnym wykorzystaniu wystarczająco dobry), ale jakiś framework wypada znać. Z kończącej sesję rozmowy z publicznością wnioskuję, że cel udało mi się osiągnąć: każdy słuchacz już wie, co może uzyskać stosunkowo niewielkim kosztem, więc teraz już nie ma “nie zna, nie wiedziałem” ;-)

Zainteresowanie publiczności sesją skłania mnie do planów opublikowania postów, będących jej odzwierciedleniem. Tymczasem na zachętę zostawiam slajdy :)


Najbliższe plany

Żeby nie było za wygodnie, w najbliższym czasie specjalnie mniej się nie zadzieje – w najbliższą sobotę pojawię się na Śląsku w ramach Silesian Code Camp – wprowadzając kolejnych słuchaczy w świat TFS.

Ponadto cykl w VirtualStudy trwa w najlepsze i już w najbliższy wtorek poznamy rozmaite alternatywne sposoby pracy z TFS – a więc nie samym Vistual Studio człowiek żyje ;)

Do zobaczenia!


Slajdy

VirtualStudy, Sesja 3: Pobierz

VirtualStudy, Sesja 4: Pobierz

Warszawskie Dni Informatyki, ASP.Net AJAX: Pobierz



Cykl szkoleniowy w portalu Virtual Study!

29
sty/11
0

Informacja stała się już publicznie dostępna, więc i tutaj spieszę z zaproszeniem :-) Po kilkutygodniowych uzgodnieniach prowadzonych z portalem VirtualStudy.pl, ostatecznie został dopięty harmonogram i zakres prezentacji, jakie będę prowadził online właśnie w ramach wspomnianego portalu. Dla mnie samego prowadzenie tego typu szkolenia to interesujący eksperyment i jestem bardzo ciekawy, jak bardzo różni się prowadzenie sesji online od sesji "na żywo" - mam pewne przypuszczenia i obawy, do których postaram się odnieść po pierwszych spotkaniach w VirtualStudy.

Podczas sesji będę zapoznawał słuchaczy od podstaw ze środowiskiem pracy, opartym o TFS. W międzyczasie przejdziemy do bardziej zaawansowanych zagadnień, jak dostosowywanie i rozszerzanie TFS(na przykładzie aplikacji TFSBugger i TFS Mobile Web App, które obiecałem opisywać też na blogu).

Gorąco zapraszam!

I jeszcze poniżej skopiowana informacja "promocyjna":
Harmonogram kursu(szczegóły sesji dostępne są na forum):
1.16.02.2011, godz. 20:30 - Wprowadzenie do TFS
2.01.03.2011, godz. 20:30 - Praca z TFS za pomocą Visual Studio, część 1
3.15.03.2011, godz. 20:30 - Praca z TFS za pomocą Visual Studio, część 2
4.29.03.2011, godz. 20:30 - Praca z TFS za pomocą Visual Studio część 3
5.12.04.2011, godz. 20:30 - Alternatywne sposoby dostępu i przykłady zastosowań
6.26.04.2011, godz. 20:30 - Buildy i Testy cz.1
7.04.05.2011, godz. 20:30 - Buildy i Testy cz.2
8.17.05.2011, godz. 20:30 - Dostosowywanie i rozszerzanie TFS cz. 1
9.31.05.2011, godz. 20:30 - Dostosowywanie i rozszerzanie TFS cz. 2

Na zakończenie kursu wszystkie osoby które uczestniczyły w minimum 7 z 9 spotkań otrzymają certyfikaty uczestnictwa. Będą też uprawnione do sprawdzenia wiedzy z kursu na teście. Dla osób które osiągną minimum 80% punktów portal VirtualStudy.pl potwierdzi ten fakt stosownym certyfikatem.
Na sesje można zapisać się korzystając z odnośnika, który dostępny jest na forum.



Visual Studio 2010 dostępne!

12
kwi/10
0

No tak, nie było mnie tu już ze sto lat i niestety w najbliższym czasie wiele się nie zmieni(mam delikatnie mówiąc gorący moment ;) ). To nie przeszkadza jednak, żeby poinformować wszystkich którzy jeszcze nie słyszeli - Visual Studio 2010(a wraz z nim powiązane produkty, m.in. Team Foundation Server 2010, czy też .Net Framework 4.0) zostały dzisiaj udostępnione w wersji RTM subskrybentom MSDN!! Zachęcam do posysania ;) Sam właśnie ściągam i jestem ciekawy, czy poradzono sobie z problemami, które spowodowały przesunięcie daty premiery.

VS Banner

P.S.

W sklepach podobno pojawi się 12 maja, czyli równo za miesiąc. Ale już można zamawiać.



Quick Hint: Napraw Intellisense w Visual Studio 2010 RC

27
lut/10
0

Co ja się nie nakląłem po zainstalowaniu VS 2010 RC - fajnie, odpala się szybciej, wygląda na stabilny, ale nie działał Intellisense!! Okazało się, że włączył mi się moduł rycu lame 2010 volume 1 ;)
Intellisense wyłączony został podczas migrowania ustawień z VS 2008(w którym akurat testowałem Resharpera - najwidoczniej wyłączającego standardowy intellisense).

Jak przywrócić działanie Intellisense? Opisał to wczoraj na swoim blogu ScottGu. Wystarczy wejść w Tools->Options. W otwartym oknie w drzewie rozwijamy sekcję Text Editor i dalej C#. Warto zaznaczyć pozycje Auto list members oraz Parameter information:

Aż wstyd, że sam nie spojrzałem...



Quick Hint: Zdejmowanie cudzych locków z plików w TFS

21
lut/10
1

conflict

Parę dni temu natknąłem się na następujący problem: chciałem usunąć branch z source control TFS, ale podczas próby wykonania takiej akcji, dostawałem komunikat, że jeden z developerów z zespołu posiada locki na plikach. Z pewnych względów developer ten nie mógł zdjąć swoich locków, więc musiałem mu trochę pomóc ;)


Z tego, co wiem, nie ma możliwości "wyklikania" zdjęcia czyjegoś locka, ale pakiet TSF power tools zawiera command line'owe narzędzie tf.exe, dzięki któremu możemy zdjąć czyjś lock. Przykładowa składnia polecenia(dokładnie takiego użyłem, włącznie z przełącznikiem /recursive, a więc "zejściem wgłąb"):
tf lock $/[ścieżka do unlocku] /lock:none /workspace:[Nazwa_workspace];[Właściciel workspace] /server:[Adres TFS] /recursive

Odpaliłem dumny i blady, że zaraz wywalę brancha, a tu w konsoli dostałem sporo(tj. przy wszystkich obrazkach i executablach) takich błędów:
TF10152: The item $/[TFSowa ścieżka do pliku] must remain locked because its file type prevents multiple check-outs.

Na szczęście i na to udało się znaleźć rozwiązanie: w ustawieniach Source Control(już z poziomu Visual Studio: Team->Team Project Collection Settings->Source Control File Types) włączamy opcję "file merging and multiple check outs" przy interesujących nas typach plików: