W firmie od dłuższego czasu przymierzałem się do wdrożenia pewnego niewielkiego narzędzia do zautomatyzowania procesu wdrażania paczek u klientów. Wpis jest o tym jak wygląda tworzenie skryptu do automatycznego tworzenia paczek dla projektów webowych ASP.NET wraz z przykładową realizacją
Co należy zrobić, by pobawić się Roslyn syntax visualizer: Pobrać i zainstalować RoslynCTP http://www.microsoft.com/download/en/details.aspx?id=27746, Start -> Microsoft Codename Roslyn CTP -> Getting Started, Otworzyć i uruchomić (F5) solucję Syntax Visualizer Extension, W nowej instancji, która się otworzy Visual Studio wybrać Edit -> Other Windows -> Roslyn Syntax Visualizer, Stworzyć dowolny nowy projekt, na przykład aplikację konsolową, Teraz można podglądać drzewo składni p...
Na wstępie chciałbym przeprosić, że to tak długo trwało , ale ciężkie życie programisty nie zawsze pozwala mi znaleźć czas na częste blogowanie.W tej części mojego tutoriala zajmiemy się samą konfiguracją usługi log4net. Zasadniczo istnieją dwa możliwe podejścia do konfiguracji. Można stworzyć osobny plik konfiguracyjny i nazwać go np. log4net.config lub dodać sekcję do głównego pliku konfiguracyjnego aplikacji. Pierwszym przypadku należy samodzielnie odczytać plik za pomocą api konfiguracyjnego platform...
Czytając różne książki lub artykuły można się zgubić w terminologii. Szczególnie Mock oraz Stub często są używane zamiennie a ich różnica jest jednak znacząca. Nie tłumaczyłem na język polski powyższych terminów aby nie wprowadzać jeszcze większego zamieszania Zacznijmy od terminu najbardziej ogólnego – Double. Nazwa określa dowolny obiekt naśladujący realną klasę. Zatem obiektem double może być Fake, Dummy, Stub lub Mock. Innymi słowy double można podzielić na wspomniane 4 obiekty. Termin stanowi po pr...
autor: Obecnie tworze aplikację konsolową, jest to REPL dla mojego tyci-mini języka (język nie istnieje poza REPL). Postanowiłem, że istniejącą funkcję print pokryję testami jednostkowymi. Zastanawiałem się jak to zrobić. Problem polegał na tym że wynik przekazywałem na ekran i teraz miałem zagwostkę jak ten tekst przechwycić. Dowiedziałem się o klasie MemoryStream, który tworzy strumień piszący po pamięci przydzielonej dla klasy. Moją klasę PrintMethod, musiałem z modyfikować z: public override Resu...
Ignorancja to słabość Ostatnio przeglądałem T-SQL kod w którym została użyta pewna siermiężna acz użyteczna konstrukcja (użyteczna w poprzednich wersjach SQL Server'a, tak od 2005 w dół). Zapytałem się autora kodu, czy przypadkiem nie używają MS SQL Server 2008, otrzymałem pozytywną odpowiedź "nawet w wersji R2". Kod który prezentuje ogólny zarys problemu znajduje się poniżej. Przykłądowa implementacja wstawia rekord do tabeli jeśli jeszcze on nie istnieje, w innym wypadku aktualizuje wartości wybranych...
Bazy danych i XML 4793 dni, 17 godzin, 6 minut temu 258 źrodło rozwiń
W .NET 4.0 dodano (mało chyba popularną) klasę MemoryCache służącą do buforowania danych. Wcześniej programiści znali podobną klasę w ASP.NET. Od wersji 4.0 została ona wydzielona i można z niej teraz korzystać we wszystkich typach aplikacji – także WPF i WinForms. Za pomocą MemoryCache można ustawić czas ważności danych w buforze za pomocą czasu absolutnego, priorytetu, monitorów, które unieważniają dane np. na podstawie zmiany pliku na dysku lub tzw. SlidingExpiration – czasu który upłynął od ostatn...
Istnieje kilka podejść do debugowania usług systemowych. Jeśli chcemy debugować już uruchomioną usługę to możemy skorzystać z opcji Attach to process.... Sprawa jest trudniejsza jeśli chcemy podłączyć się do usługi w momencie jej uruchamiania. W takim wypadku można w kodzie usługi wywołać metodę Debugger.Brake. Są też inne sposoby, na przykład sztuczne opóźnienie startu usługi, tak aby zdążyć się do niej podpiąć. Ostatnio poznałem nowe, bardzo ciekawe podejście. Polega ono na stwor...
Opis metody rozszerzania kontrolek Telerik DataFormXXXField o nowe własności, które nie zostały udostępnione w oryginalnej wersji kontrolki. Np. ustawianie wprowadzania daty i godziny dla kontrolki DataFormDateField.
Silverlight 4797 dni, 22 godziny, 44 minuty temu 143 źrodło rozwiń
C# 4.0 dostarcza kilka nowych możliwości jeśli chodzi o parametry i ich przekazywanie. Pierwszym rozszerzeniem jest możliwość zdefiniowania opcjonalnych argumentów (dlaczego musieliśmy tak długo na to czekać?):privatevoid ShowText(string text="Hello world") { MessageBox.Show(text); } Teraz możemy wywołać metodę ShowText dostarczając własny argument lub pomijać go i wykorzystując wartość domyślną (“Hello World”):ShowText("Custom Text"); ShowText(); // również poprawne Named arguments umożliwiają prze...
Wiele osób zna zapewne CodeDOM – bibliotekę, która pozwala generować kod źródłowy przez budowanie go z „klocków” opisujących każdy element kodu: deklarację metody, przypisanie wartości do zmiennej, itp. Nie dało się jednak w łatwy sposób wykonać operacji odwrotnej, tj. zamiany tekstu na drzewo obiektów, które można by łatwo i wygodnie analizować. Problem ten doprowadził to powstania kilku parserów kodu napisanego w C# – na potrzeby kompilatora, środowiska...
XMLSerializer jest bardzo wygodnym sposobem zapisu klas w formie pliku XML. Rozważmy następujący przykład:publicinterface IData { // jakies dekleracjestring Text{get;set;} } publicclass Data: IData { publicstring Text{get{...}set{...}} } publicclass ClassA { public IData Data{get;set;} } Niestety po próbie serializacji dostaniemy wyjątek mówiący, że nie można zapisywać interfejsu. Jaka jest odpowiedź na pytanie zadanie w poście? NIE da się! W poście mam zamiar pokazać wyłącznie pewne sposob...
Autor: Naszło mnie ostatnio, żeby zebrać do kupy kilka artykułów skierowanych do początkujących programistów. Bez zbędnego gadania, oto kupa...
Niestandardowe kodowanie tekstu w Silverlight W przeciwieństwie do “standardowej” platformy .NET, Silverlight (w wersji webowej oraz na Windows Phone) dostarcza tylko dwa wbudowane kodowania: UTF-8 oraz UTF-16. Aby uzyskać inne kodowania należy napisać własną klasę Encoding...
Silverlight 4802 dni, 8 godzin, 1 minutę temu 109 źrodło rozwiń
Myślę, że każdy programista zetknął się kiedyś z tym, że chciał wywołać pojawiający wcześniej problem w aplikacji. Niestety, nie zawsze jednak pamiętamy, kiedy on wystąpił. Podobnie czasem testerzy chcieliby wysłać opis problemu w najlepszy możliwy do sprawdzenia sposób – od strony użytkownika. Ostatnio dzięki koledze z pracy dowiedziałem się o narzędziu standardowo dołączanym do systemu Windows – Problem Step Recorder. Aby uruchomić aplikację w m...
Serwis User Witajcie! po dłuższej przerwie zapraszamy na dziesiąty odcinek codingtv(); Zgodnie z planem w tym odcinku przygotowujemy serwis do klasy User. Jak zawsze serwis pokrywamy testami oraz przygotowujemy kilka mocków.
Domyślnie WPF wyświetla okno dialogowe nieobsłużonego błędu a następnie po przyciśnięciu przycisku aplikacja zostaje zamknięta. W poście zajmiemy jednak się przeładowaniem tego zachowania poprzez np. zapis błędu do pliku. W WPF możemy wykorzystać zdarzenie DispatcherUnhandledException(plik App.xaml.cs), która wywoływana jest dla nieobsłużonych wyjątków. Jeśli zatem w kodzie znajdzie się wywołanie throw bez klauzuli catch, zdarzenie DispatcherUnhandledException zostanie uruchomione. Przykład, plik app.xam...
Co można zrobić ciekawego wykorzystując tyle linii? Niewiele, ale… Rysowanie przy pomocy ołówka oraz figur: elipsa, prostokąt. Wszystko możliwe w 4 wybranych kolorach. Dodatkowo zaimplementowany mechanizm historii zdarzeń (undo-redo) bez limitu zapamiętanych „ruchów”.
Silverlight 4807 dni, 12 godzin, 16 minut temu 350 źrodło rozwiń
Jakiś czas temu napotkałem na problem podczas próby przypisania własnego kontekstu kontrolce ContextMenu. Zacznijmy może od razu od przykładu XAML: Prosty widok – zwykły Grid z kontekstowym menu. DataContext ustawiam na SimpleVIewModel a następnie binduje właściwość Text. Code-behind wygląda następująco:publicpartialclass MainWindow : Window { public MainWindow() { SimpleViewModel =new WpfApplication1.SimpleViewModel(); DataContext =this; InitializeComponent(); } ...
W poprzedniej notce opisałem technikę pozwalającą na debuggowanie dynamic assemblies przy wykorzystaniu najnowszej wersji biblioteki sosex w ramach WinDbg. Tym razem sprawdzimy skuteczność tej metody w odniesieniu do SQL-CLR. Nieco przydługawy, ale konieczny wstęp CLR pojawił się w SQL Serverze w wersji 2005 i pozostał w nim na dobre. Dzięki jego obecności można pisać triggery, procedury składowane, funkcje, agregaty oraz własne typy danych definiowane przez użytkownika i korzystać z nich w podobny sposó...