W ostatnim poście opisałem przebieg pewnej rekrutacji, w której uczestniczyłem, aż do rozmowy z kierownikiem projektu. Post ten stanowi dokończenie tego tematu, a w szczególności zawiera odpowiedź na pytania jakie pojawiły się w komentarzach. Po jakimś czasie po rozmowie z kierownikiem projektu, w tej chwili już nie pamiętam szczegółów, zostałem zaproszony do kolejnego etapu rekrutacji. Tym razem musiałem pofatygować się do innego miasta na serię rozmów z przedstawicielami firmy z ...
« Wywołanie orkiestracji z poziomu usługi WCFCustom functoid – od A do Z Mapowania z wykorzystaniem Scripting functoid są dość uciążliwe jeśli odwołujemy się do własnych metod napisanych w C#, ponieważ musimy za każdym razem wskazywać:Script assembly,Script class,Script method. W tym poście chciałbym pokazać w jaki sposób można stworzyć własny functoid, który będzie wykonywał metodę napisaną w C#. Do tego celu należy utworzyć projekt typu Class Library, w którego właściwościach ustawiamy Build Events:Po...
W swojej dotychczasowej karierze wziąłem udział w wielu rekrutacjach. W przeważającej liczbie przypadków zostałem zaproszony na rozmowę ale czasami skończyło się na wysłaniu CV. Bardzo często zaproszenie na rozmowę poprzedzone było wywiadem telefonicznym. Wielokrotnie rozwiązywałem różnego rodzaju testy, dużo rzadziej byłem proszony o wykonanie pracy domowej. Część rekrutacji organizowana była przez firmy HR'owe inne bezpośrednio przez zatrudniającą firmę. Spośród tych wszystkich rekrutac...
Typowa, prosta klasa Person. Cztery propercje i konstruktor. Gdy w dowolnym miejscu programu zostanie utworzona instancja klasy Person, a następnie debuggerem zatrzyma się wykonywanie kodu, można sprawdzić stan naszego obiektu. Nagłówek obiektu wyświetla nazwę klasy, a jego rozwinięcie wyświetli poszczególne składowe i ich wartości. Podobny efekt jest widoczny jeśli utworzy się kolekcję obiektów P...
Niedawno oglądałem nagranie z sesji Advanced Debugging with Visual Studio 2010, która prowadził Ingo Rammer. Bardzo fajna sesja, świetnie prowadzona. Pojawiły się na niej ciekawe informacje, które pozwalają ułatwić i urozmaicić sobie sesje w debuggerze Visual Studio. Zainspirowany tematem, postanowiłem na własnej skórze przetestować pokazywane rozwiązania. Poprzednio pokazywałem jak można manipulować wyświetlaniem ...
Autor: Ostatnio, przez ponad pół roku, wraz z Wojtkiem Poniatowskim, Mirkiem Pragłowskim, Tomkiem Wiśniewskim prowadziliśmy kurs C# na portalu VirtualStudy. Kurs przeznaczony był dla osób początkujących ale dzięki temu miałem możliwość zobaczenia jakie elementy .NET i C# sprawiają najwięcej trudności osobom, które dopiero zaczynają swoją przygodę z tą technologią. Jeśli masz choć trochę doświadczenia z .NET to zapewne nie znajdziesz tu zbyt wielu przydatnych informacji. Tak czy inaczej zapraszam do czyta...
blackfoot.pl, autor:Ostatnio wpadła mi w ręce książka The Art of Unit Testing: with Examples in .NET autorstwa Roy’a Osherove’a. Muszę przyznać, że mam nieco mieszane uczucia po jej przeczytaniu. Minusy: Książka liczy około 280 stron, ale czytając ją miałem wrażenie, że ta liczba jest mocno naciągnięta – olbrzymie marginesy, bardzo szeroka czcionka, dużo niezagospodarowanego miejsca itp. Samym formatowaniem można by było zaoszczędzić przynajmniej kilkadziesiąt stron – ile drzew mogłoby wciąż rosnąć! Pie...
Wielojęzyczność aplikacji www można rozwiązać na kilka sposobów. Jedne strony mają rysuneczki flag symbolizujących język, w jakim chcemy widzieć teksty (i nie tylko) i pamiętają to w cookie. Inne pozwalają to ustawić w profilu użytkownika i pamiętają ustawienie w bazie. Ostatnio pisałem rozwiązanie, które ustawia odpowiednią kulturę aplikacji na podstawie informacji wysyłanych przez przeglądarkę podczas żądania.
Dziś kilka słów o tym, czego możemy spodziewać się po .NET jeśli idzie o niektóre możliwości systemu plików. - Panie Michale, to JEDNYM słowem, jak to jest z tym wsparciem dla niektórych rzadziej używanych funkcji systemu plików w .NET? - Dobrze. - A dwoma słowami? - Nie dobrze. Nudne wprowadzenie Wszystkie programy .NET są jednocześnie aplikacjami Win32, co oznacza, że pracują w ramach podsystemu Windows, który realizowany jest przez proces csrss.exe. Jego nazwa rozwija się do Client/Server Run-Time...
Wczoraj miałem przyjemność poprowadzić sesję o testach jednostkowych na spotkaniu studenckiej grupy .NET na PB. Już dobre półtora roku temu postanowiłem sobie, że takie wystąpienia to rzecz nie dla mnie i że więcej nie będę próbował sprawdzać się w ten sposób. Jednak gdy dostałem zaproszenie od Justyny Iwanowskiej, białostockiej SC, zdecydowałem "a co mi tam". Jednocześnie dziękuję za owo zaproszenie:).
« Promowanie pól w schemacieWywołanie orkiestracji z poziomu usługi WCF Coraz częściej zachodzi potrzeba wywołania orkiestracji z usługi WCF. Do tego celu wykorzystywana jest opcja Public – no limit w ustawieniach Receive Port Type. Po opublikowaniu aplikacji na serwerze BizTalk w której ustawiliśmy Access Restrinctions na Public, należy uruchomić BizTalk WCF Publishing Wizard. Za pomocą tego narzędzia wygenerujemy oraz opublikujemy usługę WCF na IIS, która wywoływać będzie orkiestrację: 1. W sekcji WC...
Zdarzenia oraz delegaty (tak to chyba się tłumaczy?) pełnią podobną funkcje w C#. Jaka jest jednak różnica? Przyjrzyjmy się sposobowi ich użycia:class Program { publicstaticevent EventHandler SimpleEvent =null; publicstatic EventHandler SimpleDelegate =null; staticvoid Main(string[] args) { SimpleEvent+=new EventHandler(EventMethod); SimpleDelegate +=new EventHandler(DelegateMethod); SimpleEvent(null, null); SimpleDelegate(null, null); } staticvoid D...
Pisać testy jednostkowe do wszystkiego? Celować w 100% unit-test-code-coverage? Stosować TDD dla każdego rodzaju kodu? Na te pytania bardzo łatwo znaleźć w internecie odpowiedź i brzmi ona: TAK. Niestety nie jest to odpowiedź prawidłowa. Czasem lepiej testu nie napisać, niż go napisać. Czasem lepiej test skasować, niż go po raz dziesiąty poprawiać po zmianie w kodzie.
Czasem przeglądając kod .NET Framework, czy to bezpośrednio w Visual Studio, czy też za pomocą Reflectora (ponownie darmowego ;)), ILSpy, tudzież innych narzędzi do dezasemblacji kodu natrafiamy na kawałek kodu opatrzony atrybutem MethodImpl, np. (dla przykładu System.Object): [MethodImpl(MethodImplOptions.InternalCall)] internalstaticexternint InternalGetHashCode(object obj); I na tym przeglądanie kodu się kończy, a przecież tyle ciekawych rzeczy jest jeszcze do rozpoznania! Lecz gdzie tego szukać?! Zg...
W poprzedniej notce pisałem o implementacji lock’a i do zilustrowania pewnych szczegółów użyłem metody GetHashCode analizowanego obiektu. Tym razem przyjrzymy się bliżej samej metodzie GetHashCode, dziedziczonej przez wszystkie klasy z bazowej klasy Object i często traktowanej po macoszemu, lub też bez właściwego zrozumienia. Niestety potrafi się to zemścić, a w jaki sposób, to spróbuję za chwilę zademonstrować, po czym postaram się podać kilka rad co z tym fantem począć. O tym, że metoda GetHashCode jes...
Dzisiaj króciutki psot na temat różnic między słowem kluczowym const a read-only. Oba słowa służą do deklarowania zmiennych niemodyfikowalnych. Jaka jest więc różnica? const:Nie może być deklarowane z modyfikatorem static – stanowiłoby to pewną nadmiarowość ponieważ stałe odwołują się w końcu do całej klasy a nie instancji (skoro nie mogą być zmodyfikowane nie ma sensu istnienia kopii dla każdej z instancji).Wartość jest przypisywana w czasie kompilacji.Wartość można ustawiać wyłącznie w deklaracji (co ...
« Debugowanie biblioteki pomocniczejPromowanie pól w schemacie Wypełnienie pola w wiadomości z poziomu orkiestracji odbywa się za pomocą wypromowanych pól. W tym celu za pomocą designera schematu należy: 1. Kliknąć prawym na schemacie i wybrać Promote -> Show Promotion 2. Następnie z listy dostępnych pól wybrać pole, które będziemy promować 3. Kliknąć Add, następnie OK Odwołanie się do wypromowanego pola z poziomu orkiestracji odbywa się za pomocą bloczka Message Assignment, w którym wpisujemy:
We wcześniejszych wpisach pojawiły się informacje na temat kompilacji assembly na różne platformy oraz narzędzi, które pozwalają sprawdzić na jaką platformę assembly zostało skompilowane. W tym wpisie znajdą się informacje jak to można zrobić z poziomu kodu źródłowego. Sprawdzenie podczas działania Aby sprawdzić podczas działania programu/procedury, to czy jest on/ona uruchomiona w kontekście 32, czy 64-bitowym w czasach przed .NET 4.0 należało posłużyć się pewnym trick'iem, a mianowicie (tak jak już to...
W poprzednim wpisie pojawiły się informacje na temat sposobów skompilowania assembly, tak by działała jako kod 64 lub 32 –bitowy. W tym wpisie znajdą się informacje na temat tego jak można sprawdzić, na jaką platformę zostało skompilowane assembly (czyli znajdą się tu m.in. informacje na temat narzędzia CorFlags, IL Disassembler'a).CorFlagsNarzędzie CorFlags.exe(NET CorFlags Conversion Tool) pozwala na sprawdzenie lub konfiguracje wykonywalnego assembly, tak by było one traktowane jako 64 lub 32 – bito...
W 64-bitowych systemach Windows mogą działać aplikacje skomplikowane na platformę 64-bitową, jak też w trybie symulacji 32-bitowe (skompilowane na platformę x86, ale ... aplikacja 64-bitowa może korzystać tylko z 64-bitowych komponentów (np. bibliotek), a aplikacja 32-bitowa może korzystać tylko z 32-bitowych komponentów. Do tego na platformie .NET dochodzi jeszcze kompilacja typu „Any CPU”, co w konsekwencji może spowodować nie małe zamieszanie.... Przyjrzyjmy się może tym zagadnieniom. W niniejszych ro...