Kontynuując temat z poprzedniego wpisu, obecnie przedstawię, w jaki sposób wypełnić plik, aby odpowiadał obrazowi pamięci oczekiwanemu przez aplikacje nie napisane w .NET (napisane w kodzie niezarządzanym). W tym wypadku swoją rolę ponownie odegrają klasy BitConvert oraz Encoding. W obu wypadkach użyte zostaną metody o takiej samej nazwie: GetBytes...
Sztuka programowania 4567 dni, 18 godzin temu 84 źrodło rozwiń
Gdy już kończymy pisać program na którym zarobimy pierwszy milion większość z nas chciałaby stworzyć do niego własny instalator. Oczywiście możesz spakować aplikację i pozwalać użytkownikom ściągać gotowy plik wykonywalny, ale co gdy zajdzie potrzeba wprowadzenia np. Klucza sprawdzającego oryginalność nabytego programu lub zwykłej rejestracji użytkownika w serwisie?Setup Wizard Zacznijmy więc od stworzenie prostego instalatora aplikacji. W Solution Explorer dodajemy nowy projekt: Add -> New Pr...
Sztuka programowania 4567 dni, 18 godzin temu 147 źrodło rozwiń
Kilka miesięcy temu w tym poście http://premium-hands.blogspot.com/2011/11/walidacja.html przedstawiałem różne sposoby walidacji jakie są dostępne na platformie Silverlight. Jako, że ostatnio mam więcej czasu aby pisać jakieś proste aplikacje pod Windows Phonem potrzebowałem mechanizmu walidacji działającego pod tą platformą. Według MSDN-u wszystkie metody walidacji przedstawione we wspomnianym wcześniej poście powinny działać. Niestety po przerzuceniu mechanizmu z Silverlighta na Windows Phona okazało s...
Mobile development 4568 dni, 9 godzin, 57 minut temu 74 źrodło rozwiń
Pisząc moją małą aplikację pod Windows Phone po raz kolejny natknąłem się na problem. Pod WP7 nie ma tak przydatnej rzeczy jaką jest DataTemplateSelector znany nam bardziej, lub mniej z Silverlighta oraz WPF-a.Na szczęście napisane własnego DataTemplateSelector-a nie jest specjalnie skomplikowane. Jak zwykle w takich przypadkach liczy się pomysł - jak dobrze, że jest Google. Nasz customowy DataTemplateSelector zostanie oparty o kontrolkę ContentControl. Po pierwsze stwórzmy klasę bazową DataTemplateSelec...
Mobile development 4568 dni, 9 godzin, 57 minut temu 53 źrodło rozwiń
Dziś po długim wprowadzeniu teoretycznym, mającym na celu wyjaśnienie “zaawansowanych” mechanizmów synchronizacji czas przyszedł na pokazanie pierwszej struktury danych. Przed pojawieniem się asynchronicznych kolekcji, najczęściej korzystało się z prostego lock’a jak:lock(_Sync) { _list.Add(newElement); } Rozwiązanie mało wygodne i przede wszystkim niewydajne. Nowe kolekcje zawierają mechanizmy synchronizacji omówione w poprzednich postach takie jak:SpinLock SpinWait SemaphoreSlim CountdownEvent ...
Sztuka programowania 4569 dni, 2 godziny, 6 minut temu 163 źrodło rozwiń
Ten wpis jest częścią cyklu o moich przygodach w tworzeniu gier XNA dla Windows Phone. Ustawienia gry takie jak:Efekty dźwiękowe on/offPoziom głośności muzykiWibracja on/offWybrany język to coś co każda (a jeśli nie to większość) gier powinna posiadać. Ustawienia mają charakter globalny dla aplikacji więc powinno się do nich łatwo dobierać i dobrze jeśli będą się same zapisywać po zmianach. W tym celu tworzę statyczną klasę Settings ze statycznymi właściw...
Mobile development 4570 dni, 1 godzinę, 28 minut temu 51 źrodło rozwiń
Windows 8 Release Preview–wrażenia Pod koniec zeszłego tyg. Microsoft udostępnił nam nową wersję Windows 8 oznaczoną jako Release Preview. Jest to wersja która nie równi się za mocno od finalnej. Oznacza to nie mniej nie więcej że to co widzimy nie różnić się będzie mocno od wersji finalnej. Przejdźmy więc do wrażeń jakie mam po instalacji nowego systemu.Częściowe spolszczenie Podstawowe aplikacje metro są spolszczone między innymi: Zdjęcia, Muzyka, Poczta, Kalendarz. SkyDrive to jedna z aplik...
Jestem w miarę świeżo po przeczytanie Programowania Windows 8 (w wersji preview) napisanej przez pana który się nazywa Charles Petzold. Krótka recenzja: Aktualnie książka zawiera siedem rozdziałów, w nich omówienie XAML, mechanizmu wiązań, kontrolek, layout i krótko o WinRT. Jeśli ktoś z was pisał już w WPF czy SL nie znajdzie w niej (przypominam że mówię ciągle o wersji preview) nic ciekawego. Prawie nic, otóż są dwie nowości warte uwagi wprowadzone w nowszej wersji .NET. CallerMemberName oraz async/...
Sztuka programowania 4571 dni, 18 godzin, 31 minut temu 178 źrodło rozwiń
Dla tych, którzy są zainteresowani Windows 8 oraz nowym API IO w WinRT: http://msdn.microsoft.com/pl-pl/library/obsluga-operacji-na-plikach-w-winrt.aspx
Jak wiadomo wszystkie dane platformy .NET są przechowywane w postaci obiektów [...], więc siłą rzeczy sposób przechowywania tychże danych jest ukryty przed programistą (obiekty są wszak hermetyczne). Jest to całkowicie odmienne podejście do przechowywania danych w stosunku do stosowanego przed erą .NET. Tam typy proste były zwyczajnie obszarem pamięci, który był odpowiednio interpretowany przez oprogramowanie (dbał o to kompilator)...
Sztuka programowania 4571 dni, 18 godzin, 31 minut temu 132 źrodło rozwiń
Nie ma nic bardziej frustrującego dla zapalonego gracza, gdy po 2 godzinach grania mierzy się z ostatnim bossem, już prawie go zabija… gdy nagle… dzwoni mama! Gra zostaje przerwana i cały postęp gry leci w kosmos… Wiem! Ktoś powie, że w Mango mamy Fast Application Switching (FAS) i stan aplikacji jest w pamięci i gra zostanie automatycznie wznowiona. Tak, ale jeśli nasz...
Mobile development 4573 dni, 18 godzin, 37 minut temu 146 źrodło rozwiń
W dzisiejszym wpisie zajmę się tematem śledzenia zmian i kontroli danych w obiekcie DataTable. Jest to możliwe dzięki temu, że wiersze tabeli będące obiektami typu DataRow przechowują informacje o swoich wersjach. Obiekty DataRow posiadają także szereg metod związanych z modyfikacją danych, a co za tym idzie ze zmianą ich wersji.
Jest już nowe Visual Studio – chyba każdy o tym wie. Pierwsza rzecz, od której bolą (mnie) zęby to duże litery w menu. To tak jak by Visual cały czas na mnie krzyczął. Więc jeśli nie podoba Ci się default: I wolisz tak: To wystarczy dodać w rejestrze: HKCU\Software\Microsoft\VisualStudio\11.0\GeneralSuppressUppercaseConversion DWord o wartości 1 Link do odpowiedniego Connect-a, może zmienią to do RTM-a http://connect.microsoft.com/VisualStudio/feedback/details/745676/capital-uppercase-me...
W ostatnim poście pisałem o różnych mechanizmach opartych o Spin. Zachęcam do przejrzenia ostatnich wpisów ponieważ bez tego trudno będzie zrozumieć dzisiejszy post. SpinWait jest strukturą, w której najważniejsza metoda to SpinOnce. SpinOnce przez pierwsze 10 wywołań wykonuje klasyczny Spin (patrz poprzednie posty) dzięki czemu nie musimy obawiać się koszty związanego z uśpieniem wątku, zmianą kontekstu itp. SpinOnce jest jednak na tyle inteligentny, że po 10 wywołaniach zmienia swoje zachowanie:Po 10...
Programowanie rozproszone 4574 dni, 19 godzin, 43 minuty temu 54 źrodło rozwiń
Mimo, że późno to niedziela jeszcze nie minęła więc kolejny niedzielny tip – prosta funkcja wyszukująca wśród dzieci danej kontrolki, dzieci o danym typie...
Silverlight 4575 dni, 37 minut temu 131 źrodło rozwiń
Zgodnie z obietnicą przedstawię parę moich pierwszych wrażeń po zainstalowaniu i krótkiej zabawie z Windows 8 Release Candidate.
Dziś kolejny mechanizm potrzebny do zrozumienia struktury SpinWait, którą opiszę w następnym poście. Thread.Yield oddaje wątek z powrotem do CPU. Wywołanie mówi, że nie mam nic więcej do roboty i jeśli CPU ma coś lepszego do zrobienia to niech to zrobi a po tym dopiero wątek macierzysty zostanie wznowiony. Innymi słowy jeśli wątek A wywołuje Thread.Yield wtedy CPU zawiesza go, wykonuje inny i potem z powrotem powraca do wątku A. Jednak należy zaznaczyć, że w przypadku Yield, może zostać wybrany wątek wył...
Sztuka programowania 4577 dni, 14 godzin, 57 minut temu 141 źrodło rozwiń
Posted by slanto on Załóżmy, że mamy zdefiniowaną stałą listę dostępnych pół formularza: imię, nazwisko, data urodzenia, płeć. Pola te mogą być wyświetlane w różnych konfiguracjach, np. Imię z nazwiskiem, nazwisko z datą urodzenia lub tylko płeć. Pomijając fakt że z reguły typy wyliczeniowe łamią zasadę Open/Closed principle (http://pl.wikipedia.org/wiki/Zasada_otwarte-zamkni%C4%99te) i zastosowanie ich w tym przypadku może nie jest najlepszym pomysłem, to jednak chcąc pokazać jak zachowuje się typ...
Sztuka programowania 4577 dni, 14 godzin, 57 minut temu 221 źrodło rozwiń
W SQL Server 2012 polecenie EXECUTE rozszerzone zostało o dodatkową opcję WITH RESULT SETS. Pozwala ona na określenie oczekiwanej struktury danych zwracanych przez zapytanie lub procedurę składowaną. Jeżeli zwrócony wynik nie będzie zgodny z określoną definicją wygenerowany zostanie wyjątek. Omawiana opcja umożliwia także nadanie własnych nazw kolumnom wynikowego zbioru danych.
Bazy danych i XML 4579 dni, 12 godzin, 39 minut temu 188 źrodło rozwiń
Dziś kolejny post z ostatniego cyklu o o wielowątkowości. Myślę, że Thread.Sleep jest znany każdemu – służy po prostu do uśpienia wątku. Na przykład:
Sztuka programowania 4579 dni, 12 godzin, 39 minut temu 161 źrodło rozwiń