Ankhsvn i automatyczne needs-lock
Nie wyobrażam sobie pracy bez systemu kontroli wersji. I niewielu znam ludzi zajmujących się programowaniem, którzy by SVN nie doceniali.
Jako serwera SVN używam VisualSVN – napisany pod Windowsa, banalny w obsłudze, posiada GUI.
Podstawowy kient SVN – TortoiseSVN – do wszelkich commitów z dysku, dla świetnego narzędzia DIFF.
Do Visuala natomiast niesamowita wtyczka – ankSVN – bohater dzisiejszego szybkiego wpisu. Jeśli używasz Visuala i SVN a nie używasz Ankha – robisz sobie niepotrzebną robotę ;) Polecam zapoznać się z tym rozwiązaniem, dzięki któremu oszczędzam rocznie pewnie około miliona kliknięć ;)
Sprawa, o której łatwo zapomnieć a która skutecznie potrafi popsuć nerwy: needs-lock. Dzięki temu małemu atrybutowi mamy pewność, że tylko jedna osoba w danej chwili może edytować plik. Tzn. oczywiście może “złamać” czy “skraść” locka ale zrobi to świadomie.
Po ciężkiim tygodniu nastał weekend :)
Skupiłem się dziś na czytaniu Training Kit’a do egzaminu 70-536.
Rewolucji żadnej póki co ta książka nie wnosi. Owszem – dość dobrze porządkuje całą zdobytą wiedzę, jednak zagadnienia są dość akademickie.
Muszę jednak przyznać, że to jedna z lepszych publikacji MS jakie mam okazję czytać. Pisana jest bez zbędnego nadęcia a autor pozwala sobie nawet na rozbawiające wstawki w rodzaju: “doskonała znajomość wyrażeń regularnych zapewne ucieszyłaby Twoich kolegów, mających świra na punkcie Linuxa ale nie oszukujmy się – na egzaminie wymagamy ich podstawowej znajomości” ;)
Zdziwiony też jestem lekkością, z jaką czyta się tak ogromną cegłę (waży chyba ze 2,5kg). Przebrnąłem przez ponad 200 stron – value types, reference types, collections, serialization – i nie czuję się nawet zmęczony.
Zobaczymy co bedzie dalej – właśnie zaczynam rozdział o Graphics i uświadomiłem sobie, że nigdy chyba w C# niczego nie narysowałem “ręcznie’. Także spora luka do nadrobienia ;)
Druga sprawa – framework MVC.
Kiedyś coś o nim słyszałem, jednak jakoś nie miałem okazji używać. W firmie, w której pracuje korzystamy z własnego frameworka, w “prywatnym” programowaniu też miałem jakieś własne rozwiązania ze “starych” czasów.
Przypomniałem sobie o MVC kilka dni temu, przy okazji robienia niewielkiego projektu w.. uwaga – PHP ;) Użyłem do tego frameworka Kohana opartego o ten sam wzorzec. Praca z tym frameworkiem była dość przyjemna. Banalna konfiguracja i nareszcie możliwość utrzymania względnie czystego i czytelnego kodu sprawiły, że nareszcie jestem zadowolony z własnego kodu napisanego w PHP ;)
W przypływie zachwytu postanowiłem więc w wolnej chwili przyjrzeć się temu, jak do sprawy MVC podszedł Microsoft. Cóż – w pierwszej chwili czułem się totalnie zdezorientowany.
Dziwnie czuje się człowiek, któremu wydaje się, że “coś tam wie” a jednocześnie nie wie nagle jak coś działa. Setki atrybutów przy metodach, klasach, DataContext, brak kontrolek.
Po kilku godzinach, na które złożyło się oglądanie Video Tutoriali, odpalenia NerdDinner, czyli przykładowej aplikacji od MS opartej o MVC muszę przyznać, że spodobało mi się!
Trochę mnie to martwi, gdyż zapewne najbliższe tygodnie przeznaczę na oglądanie kolejnych video-tutoriali i czytaniu wszystkiego co popadnie. W połączeniu z chronicznym brakiem czasu skończy się niejedną zarwaną nocką ;) Mam już sporo “pytań” dotyczących połączenia z bazą danych. Do tej pory używałem własnej klasy opakowującej frameworkowe SQlConnection w połączeniu z procedurami składowanymi. Ciekawe, czy da się łatwo użyć tych, istniejących już, procedur w DataContext.
Takie luźne przemyślanie.. A jak wyglądało Wasze spotkanie z MVC? Jakie projekty zrealizowaliście przy jego pomocy? Co polecicie do poczytania, niekoniecznie tylko w internecie? Na co denerwującego się natknęliście i możecie przestrzec przed tym innych?
Wczoraj wpis o klonowaniu a dziś zauważyłem, że powstał klon najlepszego moim zdaniem społecznościowego(?) serwisu programistycznego – stackoverflow.com.
Z tego co zauważyłem premiera devpytania.pl miała miejsce 3 stycznia. Ja jednak dopiero dziś wpadłem na informację o tym startupie.
Pytanie tylko – czy się to przyjmie? Stackoverflow.com ma niesamowitą siłę rażenia. Ilość pytań (i dobrych odpowiedzi) jest ogromna a chyba język angielski w przypadku programowania to żadna bariera.
Uważam jednak, że sama idea jest niezła. Polska “społeczność” osób związanych z programowaniem powoli wychodzi z ukrycia ;) Oby tylko z tego serwisu nie zrobił się śmietnik.
Dla mnie najwspanialsza w tego typu serwisach jest czytelność. Każda odpowiedź ma ocenę i od razu widać, co jest wartościowe. Niesamowicie to pomocne w codziennym pędzie.
Sam chętnie będę zaglądał i (być może) służył radą tam i ówdzie ;)
W każdym razie – powodzenia.
Niesamowicie spodobał mi się wpis dotyczący programowania, zamieszczony na nonsensopedii.
Polecam zapoznanie się przy porannej kawie:
http://nonsensopedia.wikia.com/wiki/Programowanie
Mam nadzieję, że poprawi humor, podniesie biorytm i odpędzi złe duchy ;)
Rozróżnia się dwie możliwości klonowania obiektów:
- shallow copy – tzw. płytka kopia. Najczęściej wykonywana przy użyciu metody MemberwiseClone z klasy Object.
- deep copy – tzw. głęboka, pełna kopia. Przyjrzymy się jednej z możliwości jej realizacji – wykorzystania serializacji do strumienia w pamięci.
Zapewne wszyscy wiedzą o istnieniu metody MemberwiseClone w klasie Object.
Pozwala ona na wykonanie tzw. “shallow copy”, czyli “płytkiej kopii” obiektu. Kopia taka nie radzi sobie jednak z typami referencyjnymi zagnieżdżonymi w klonowanym obiekcie. Potrafi poprawnie kopiować tylko Value Types.
Najprostsze rozwiązania często są w Visual Studio sprytnie ukryte. Takie czasem odnoszę wrażenie. Jedną z rzeczy, na które narzekałem przy debugowaniu np. WebService’ów czy aplikacji współdzielących niektóre zasoby był brak możliwości ustawienia jako “Startup” kilku projektów w ramach jednej solucji. Okazuje się jednak, że jest to banalnie proste..
Uzupełniam ostatnio braki w wiedzy, dotyczące synchronizacji wątków. Gdzieś w podrozdziale dotyczącym tego tematu przykuł moją uwagę Mutex. Mutex to, obok monitorów i semaforów, jedna z “prymitywnych” metod synchronizacji. Ma jednak bardzo ciekawą właściwość, odróżniającą ją od kolegów po fachu…


