Witam W dzisiejszym wpisie postaram się przedstawić w jaki sposób lokalizować treści aplikacji typu Silverlight oraz WindowsPhone. Założenie jest takie, że chcemy zbudować multiplatformową aplikację, która będzie obsługiwała platformę Silverlight oraz Windows Phone. Rozsądnym zatem podejściem jest trzymanie wszystkich tłumaczeń w jednym miejscu - najlepiej aby mechanizm tłumaczenia był obsługiwany zarówno przez Windows Phona jak i Silverlighta. W pierwszym kroku musimy doinstalować do środowiska Visua...
Silverlight 4024 dni, 22 godziny, 46 minut temu 52 źrodło rozwiń
Nieprawidłowa obsługa wyjątków może przynieść więcej problemów niż pożytku. O obsłudze błędów można byłoby napisać artykuł, jednak w poście chciałbym skupić się wyłącznie na kilku aspektach. 1. Pierwszym problemem jest fakt, że część programistów używa wyjątków do sytuacji po prostu niewyjątkowych. Jak sama nazwa mówi, wyjątek powinien być zastosowany gdzie może zdarzyć się coś niespodziewanego. Spójrzmy więc na poniższy fragment:int number; try { number =int.Parse(text); } catch { numbe...
Architektura 4025 dni, 18 godzin, 38 minut temu 462 źrodło rozwiń
Raven DB to dokumentowa baza danych, przedstawiciel trendu NoSQL, opracowana przez Ayende i jego zespół. Całkiem niedawno bo w październiku 2011 Ayende był zresztą w Polsce i opowiadał o swoim dziecku. Kilka miesięcy temu w jednym ze swoich pet project postanowiłem zmienić technologię dostępu do danych i wybór padł właśnie na Raven DB. Kilka słów wstępu Projekt ten to program LanguageTrainer wspomagający naukę słówek. Pomysł jego napisania narodził się ponad rok temu kiedy "ponownie" rozp...
Bazy danych i XML 4026 dni, 8 godzin, 21 minut temu 230 źrodło rozwiń
Wiele z przewag Gita nad TFS wynika z zasadniczych różnic pomiędzy scentralizowanym a zdecentralizowanym podejściem do kontroli wersji. Więcej na ten temat pisałem w postach Git - rozproszony system kontroli wersji oraz Dlaczego już nie lubię SVN. Zapraszam również tam, a póki co...
autor: W poprzednim wpisie pisałem o tym, że zamiast wyznaczać ścieżki do obrazków, lepiej umieścić je w zasobach. Temat wydawał mi się prosty, ale w komentarzach pojawiła się odrobinę odmienna opinia: "Nie, obrazków nie trzyma się w zasobach. Ikony, czasem, jak potrzeba, jeden, dwa obrazki, ale nie więcej. One są za duże - EXE-k puchnie, robi się bałagan, trzeba rekompilować, by zmienić obrazek, a i krótsze nie jest. Tą linijkę równie dobrze można zapisać jako: ImageBrush brush = new ImageBrush(...
Często spotykamy się, że różne programy, w których wyświetlają się okna dialogowe (pop-up) można zamykać m.in klawiszem ESC. Jest to fajne, szybkie i intuicyjne. Natomiast denerwuje mnie, gdy jakiś program nie ma takiej funkcjonalności i trzeba wycelować kursorem w krzyżyk albo klawisz Close. W tym poście opiszę jak przy pomocy kawałka kodu zamykać okna w Silverlight’cie, aczkolwiek w ten lub analogiczny sposób można to zrobić to WPF czy np. WindowsForms.
Silverlight 4028 dni, 22 godziny, 23 minuty temu 233 źrodło rozwiń
Zapraszam do lektury: http://msdn.microsoft.com/pl-pl/library/prism–nawigacja-na-podstawie-zdefiniowanych-stanow.aspx
autor: Nie jest to moje pierwsze TFSowe randewu. Wcześniej korzystałem z niego dwukrotnie - zawsze babrając się jako programista tylko w kontroli wersji, bez łorkajtemów, uzerstoris etc. Efektem była gruba, kolczasta, płonąca i ociekająca żerczym kwasem ściana nienawiści między nami. Przyrzekałem sobie że "nigdy więcej", aż tu nagle... No ale, życie przynosi niespodzianki. Z pewnym zaskoczeniem zauważam, że do tej pory prawie nie poruszałem tego tematu na blogu, znalazłem raptem jeden post z tagiem "tfs...
Jakiś czas temu pokazałem w tym artykule sposób rozszerzenia możliwości obiektu zalogowanego użytkownika (Context.User). Problemem tamtego rozwiązania jest to, iż na końcu każdego żądania tworzony jest na nowo obiekt CustomPrincipal, co w finalnym efekcie znacząco wpływa na wydajność aplikacji. Oczywiście jest to zależne od ilości rzeczy implementowanych przez nasz obiekt. W celu naprawy tego niedociągnięcia należy nieznacznie zmodyfikować kod klasy z pliku Global.asax.cs - zapras...
Dziś będzie o jeszcze jednym typie breakpointu. Kiedy może się on przydać zobaczmy na przykładzie. Automatycznie właściwości Wszyscy kochamy automatyczne właściwości, oszczędzają one nam czas i redukują ilość kodu jaki musimy napisać. Jedyną (?) ich wadą jest niemożliwość ich debuggowania. Często, tego nie potrzebujemy, ale czasem przydaje się możliwość ustawienia breakpoint'a na set lub get i np. podejrzenie call stack'a. Zwykłe postawienie w tym miejscu pułapki skutkuje następującym stanem. W Visu...
Już dawno minęły te czasy, gdy javascript pełnił funkcję prostego języka w przeglądarce. Teraz duża część aplikacji webowych jest wykonywana po stronie klienta. Właśnie dla tego dziś opowiem w jaki sposób sprawdzić poprawność kodu javascript'a podczas build'owania aplikacji.
Zapraszam do poczytania o komendach i zdarzeniach dostarczonych przez framework PRISM: http://msdn.microsoft.com/pl-pl/library/zdarzenia-i-komendy-w-prism
Jak zdeserializować plik XML jeżeli nie posiadamy klasy, która została zserializowana.
Bazy danych i XML 4032 dni, 16 godzin, 1 minutę temu 198 źrodło rozwiń
autor: Ostatnio przeglądając kod udało mi się znaleźć następujący fragment:lock(this){// Do something} Do zsynchronizowania dostępu do współdzielonego zasobu używany jest obiekt, w którym występuje ten fragment kodu. Teoretycznie fragment ten jest poprawny. Co więcej w programie nie wystąpił żaden problem z zakleszczeniem. Przeglądając literaturę możemy natrafić na następujące przykłady: 1. W O’Reilly Programming C# można spotkać następujący przykład użycia słowa kluczowego ...
Programowanie rozproszone 4032 dni, 18 godzin, 6 minut temu 395 źrodło rozwiń
Czy na pewno code review to strata czasu? Cóż może być nudniejsze i bardziej kosztowne niż przeglądanie cudzego kodu źródłowego? Chyba już tylko poprawnianie w nim błędów. Jeszcze kilka lat temu koncepcja przeglądania mojego kodu przez kolegów z zespołu była dla mnie totalną abstrakcją. Aczkolwiek, z czasem zrozumiałem, że w tym szaleństwie jest metoda. W kilku punktach chciałbym przedstawić benefity, które może wprowadzić Code Review do Twojego ekosystemu projektowego drogi Czytelniku. Edukacja M...
Ostatnio pod wpisem: "[WPF 3D] Malujemy scenę 3D pędzlem" dostałem w ramach komentarza pytanie związane z obrazkami w WPF i ścieżkami w nich. Nie jest to wielki problem, ale postaram się odpowiedzieć. Otóż problem wyglądał następująco: czytelnik tworzył pędzel przy pomocy kodu: ImageBrush brush = new ImageBrush(new BitmapImage(new Uri(BaseUriHelper.GetBaseUri(this), "Images/test.png"))); Niestety tak utworzony pędzel nie zawsze generował obraz, taki jak to było oczekiwane. Jak temu zaradzić. Otó...
Klasa Barrier umożliwia synchronizacje kilku wątków. Mechanizm bardzo znany np. z Ady pozwala dopuścić wykonanie kodu wyłącznie jeśli inne wątki na to się zgadzają. Załóżmy, że mamy 4 wątki robiące równoległe jakieś obliczenia. Po ich zakończeniu chcemy scalić wynik ale musimy poczekać aż wszystkie zadania zostaną ukończone. W C# 4.0 można wykorzystać tzw. taski, ale w tym artykule skupimy się na Barrier, która służy to dużo bardziej skomplikowanych zadań. Przypuśćmy, że nasz algorytm składa się z kilku...
Macie czasem tak, że podczas długiej sesji z debuggerem, wiedząc, że jakiś breakpoint nie wskoczy prędko przełączacie się z VS aby później zorientować się, że breakpoint już dawno czekan na waszą reakcję a wy po prostu nie zauważyliście tego małego migoczącego znaku VS w pasku? O właśnie o ten mrygacz chodzi :) Jeśli tak to ten post jest dla was - jeśli nie poczytajcie jak wkurzyć kolegów :) Okazuje się, że VS prócz standardowych opcji, które możemy ustawić w Tools->Options posiada kilka dodatkowyc...
Nowy emulator dla Windows Phone dostarcza możliwość testowania aplikacji wykorzystujących akcelerometr. Okazuje się, że możemy przy jego pomocy uruchamiać sekwencje zmian wektora grawitacji, co pozwala uprościć proces testowania. Jak to zrobić? W dodatkowym panelu emulatora w zakładce Accelerometer mamy dostęp do sekcji Recorded Data. Domyślnie zawiera ona jedną możliwą wartość i nazwie Shake. Jest to predefiniowany zestaw danych, które są przetwarzane i przesyłane do naszej aplikacji podczas uruchomien...
Mobile development 4036 dni, 21 godzin, 23 minuty temu 96 źrodło rozwiń
Na wstępie skrótowo wytłumaczę, co rozumiem pod pojęciami zawartymi w tytule. Programowanie imperatywne polega na tym, że kod programu składa się z instrukcji (czyli rozkazów). Najbardziej typowe instrukcje to przypisania, wywołania procedur / metod, instrukcje warunkowe czy pętle. W programowaniu imperatywnym zmieniający się stan programu jest czymś naturalnym, a niedeterministyczne działanie procedur i metod - czymś często występującym. Zupełnie innym podejściem jest programowanie deklaratywne. W ...