poniedziałek, 17 marca 2014

Szata kolorystyczna Visual Studio (VS color theme)

Przez bardzo długi okres czasu, programowałem na standardowych ustawieniach kolorów Visual Studio. Niedawno zobaczyłem u kolegi zupełnie inne ustawienie motywu graficznego, tj. kolorowe litery na czarnym tle. Poszukałem nieco po necie i znalazłem kilka stron, z gotowymi motywami:
galeria z motywami na blogu Scota Hanselmana
galeria z motywami na studiostyle.es

Interesuje okazało się pytanie na forum stackoverflow.com, które doprowadziło mnie do postu na blogu Jeffa Atwooda, z bardzo interesującą skórką zenburn. Jak na razie, ta skórka mi się podoba najbardziej, ponieważ jasno można odróżnić 0 od O oraz I od 1 (kolorami), a przy tym, kolory są bardzo stonowane (oszczędzają wzrok przy dłuższej pracy).

Git

Czym jest Git, mam nadzieję, że każdy szanujący się programista doskonale wie, a pozostałym przypomnę, że jest to rozproszony system kontroli wersji. Git powszechnie uważany jest, za najlepszy, dostępny na rynku system kontroli wersji. Porównanie Git-a z TFS, jakiś czas temu napisał mój ulubiony bloger .NET, czyli Maciej Aniserowicz -> 'w-czym-git-jest-lepszy-od-tfs'

Pomijając już wszelkie 'ohy i ahy' Maćka, które wygłasza za każdym razem, gdy tylko ktoś pozwoli mu się odezwać, Git ma kilka zalet, które na chwilę obecną bardzo mi się podobają:
- możliwość pracy off-line -> niestety w przeszłości, zdarzyła nam się syt., w której padł nam dysk na serwerze, na którym mieliśmy nasz serwer SVN. Dysk, a dokładniej dane dało się w końcu odzyskać, jednak te kilka dni programowania bez kontroli wersji do najprzyjemniejszych, a przynajmniej do najbardziej komfortowych nie należały. Wrzucając kod na git-a, można pracować 'off-line', a po podłączeniu się 'on-line' mamy pewność, że serwery będą działały tak jak należy i nie musimy się martwić o "spalenie się dysku"
- możliwość umieszczenia mojego kodu źródłowego w bardziej przyjaznej programiście formie, niż wklejanie go tutaj, co delikatnie mówiąc było lekko "wieśniackie".

Jako hosting, na pierwszy ogień poszedł GitHub ponieważ dla publicznych repozytoriów, jest darmowy link. Owszem, Github nie jest monopolistą i  istnieje konkurencja w postaci Bitbucket, który w dodatku pozwala na kilka prywatnych repozytoriów, ale od czegoś trzeba zacząć. Zawsze najpierw trzeba zrobić ten pierwszy krok.

Możliwe, że kiedyś się przeniosę na Bitbucket, albo inne podobne rozwiązanie, ale puki co, zapraszam na moje konto na github, gdzie w miarę możliwości będę się starał wrzucać moje programistyczne wypociny.

czwartek, 6 marca 2014

Przekierowanie poczty MS Exchange

Tak jak już wspomniałem w moim poprzednim wpisie nt. tworzenie konta mailowego w ms-exchange jako jedno z dodatkowych zadań dostałem opiekę administracyjną nad serwerem, na którym oprócz aplikacji CRM, zainstalowany jest również serwer pocztowy Exchange.

W poprzednim poście opisałem jak utworzyć nowe konto, oraz dodać je do grupy. W tym opiszę przypadek przekierowywania (forwardowania) maili do innej skrzynki pocztowej.

Jeżeli chcemy zrobić forward dla klienta wewnątrz domeny, to dobrze jest dla niego utworzyć konto w AD, jeżeli jednak mamy do czynienia forwardem do skrzynki pocztowej po za naszym AD, wtedy należy utworzyć nowy kontakt mailowy.

Na pocz. otwieramy klienta ms exchange i przechodzimy do zakładki "Recipient Configuration", gdzie tworzymy nowy kontakt mailowy ("New mail contact"). Uwaga: wykonujemy to na zakładce  'Recipient Configuration", a nie "Mail":

New contact, next, a nast. w oknie wpisujemy odpowiednie dane:

Teraz wchodzimy we właściwości (properties) istniejącego kontaktu, dla którego chcemy dołożyć forward.
Z opcji wybieramy "Mail Row Settings", a nast. zaznaczamy "Delivery Options" i właściwości (Properties). W nowo utworzonym okienku wybieramy "Browse", a nast. utworzony przez nas przed chwilą kontakt mailowy:

Nast. zaznaczamy (lub nie) checkbox z, czy maile mają przychodzić na obie skrzynki pocztowe, czy tylko na nową skrzynkę ("Deliver message to both forwarding address and mailbox").

Ok. Apply i... już działa nam nasz forward wiadomości.


wtorek, 4 marca 2014

Tworzenie konta mailowego w MS Exchange

Od pewnego czasu, jako jedno z moich zadań pobocznych dostałem "opiekę administracyjną" nad zewnętrznym serwerem, na którym oprócz aplikacji CRM jest również zainstalowany serwer mailowy. "Opieka administracyjna" obejmuje również opiekę nad serwerem "exchange", czyli serwer pocztowy.

W niniejszym wpisie, opiszę procedurę tworzenia/konfigurowania nowego użytkownika, ponieważ co jakiś czas zachodzi taka potrzeba, a podręczny manual z instrukcją obsługi zawsze lepiej mieć, niż nie mieć ;).

Zaczynamy od otworzenia aplikacji do zarządzania użytkownikami oraz komputerami 'Active Directory". W tym celu, w "kafelkach" w wyszukiwarce wpisujemy "active", a nast. wybieramy odpowiedni program:


W programie "Użytkownicy i komputery usługi Active Directory" do grupy "Users" dodajemy nowego użytkownika:

i uzupełniamy jego dane

na 'moim' serwerze był problem z 'wygasaniem' haseł, więc zaznaczam opcję, aby hasło nigdy nie wygasało:

Później już tylko okienko z podsumowaniem i zatwierdzenie stworzenia nowego usera.

Teraz otwieramy aplikację do usługi serwera pocztowego Exchange:

W ustawieniach serwera pocztowego tworzymy nową skrzynkę pocztową:


nast, wybieramy "User Mailbox",
Existing users, a nast. usera którego wcześniej utworzyliśmy:


później już tylko "next, next" i... mamy gotowe poczto kontowe.


Konto pocztowe możemy przetestować za pomocą przeglądarki internetowej wpisując do adresu przeglądarki:
https:/webmail.myexchangeemail.com/owa/
W moim konkretnym przypadku było to:
https://mail.nazwaHosta.pl/owa/auth/logon.aspx

 Blog, na którym bardziej szczegółowo opisano jako zrobić opisane jest tutaj. Do logowania się, przez przeglądarkę używamy samego loginu konta (bez małpy).

Teraz, kiedy mamy utworzone i działające konto pocztowe powiązane z kontem w AD, może zajść potrzeba dodania usera do grupy np. "wszyscy", "działX", "departamentY". Jeżeli grupy zostały utworzone w podobny sposób, to możemy to zrobić w AD:

Wybieramy naszego użytkownika, prawy przycisk myszy na "właściwości, a nast. zakładka "Członek grupy"
Wybieramy przycisk "Dodaj...", w polu tekstowym wpisujemy nazwę naszej grupy, nast. klikamy przycisk "Sprawdź nazwy" (jeżeli grupa istnieje, to jej nazwa w polu tekstowym zostanie podkreślona)
oraz "OK".

Teraz we właściwościach wybranego użytkownika, w zakładce "Członek grupy" powinna się pojawić nazwa grupy, do której użytkownik został dodany.



P.S. Jestę adminę  :-D

AutoMapper

    Jednym z ćwiczeń praktycznych podczas "Zaawansowanego szkolenia z .NET 4.0" organizowanego przez Comarch (opis szkolenia tutaj), było napisanie własnego "AutoMappera" na kilka możliwych sposobów (refleksja, dynamic).
    A czym właściwie jest "AutoMapper"? AutoMapper to biblioteka, która udostępnia funkcjonalność automatycznego przepisywania wartości pól jednej klasy do drugiej. Potrzeba posiadania takiej funkcjonalności często zachodzi w sytuacji wykorzystywania w projekcie ORM. Zamiast pisać kod, służący do mapowania pól/właściwości z jednej klasy do drugiej, lepiej jest wykorzystać gotowe, darmowe rozwiązanie jakim jest AutoMapper, szczególnie, że jego wykorzystanie jest banalnie proste:

Najpierw, przed pierwszym użyciem tworzymy konfigurację mapowania (w jednym miejscu dla całego AppDomain). Najczęściej będzie to 'global.asax' lub 'bootstraper', ale może być też bezpośrednio przed metodą:
public static IMappingExpression<TSource, TDestination> CreateMap<TSource, TDestination>();
np.: Mapper.CreateMap<ClassA, ClassB>();

a nast. w kodzie produkcyjnym do mapowania wykorzystujemy metodę Map:
public static TDestination Map<TDestination>(object source);
np: ClassA classAB = Mapper.Map<ClassA>(classAA);  
//classAA will be copied to classAB and both will have values of classAA

Testowanie:
Najpierw musimy zainicjować konfigurację mapowania (np. poprzez wywołanie Bootstrapera), a nast. wywołać metodę:
Mapper.AssertConfigurationIsValid();

Linki:
Kod źródłowy znajduje się na github, a udost. jest na licencji MIT.
AutoMapper Getting-started
Artykuł na Visual Studio Magizne opisujący bardziej zaawansowane przypadki użycia: link