Pytanie – rozwiązanie [3] – znikająca solucja w Solution Explorer

Gdy w Visual Studio 2008 tworzymy nową solucję, w której skład wchodzi jeden projekt domyślnym zachowaniem VS jest ukrycie jej w Solution Explorerze. Czy jest to problem? Tak, gdy chcemy dodać do solucji kolejny projekt… Można to obejść dodając do pustej solucji “Solution Folder”, a następnie dodawać kolejne projekty. Istnieje jednak prostsze rozwiązanie. Wystarczy wejść do menu:

Tools -> Options -> Projects and Solutions i zaznaczyć opcję “Always show solution“.

Na szczęście problem ten nie dotyczy Visual Studio 2010, gdyż opcja ta jest domyślnie zaznaczona :)


DotNetMeeting

Co?

Interesujesz się Windows Phone 7 lub XNA? Chciałbyś zobaczyć możliwości najnowszych technologii w działaniu? W imieniu organizatórów zapraszam na konferencję Dot Net Meeting. Podczas pięciu sesji podejmiemy tematy, które pozwolą bliżej poznać te właśnie technologie!

Gdzie?

Toruń, Wydział Matematyki i Informatyki UMK.

Kiedy?

26.03.2011 – sobota, więc na pewno znajdziesz czas! Startujemy już od godziny 8:30.

To wszystko?

Nie! Oprócz masy wiedzy czekają książki, nagrody i niespodzianki oraz pizza sponsorowana przez toruńską firmę AIS.PL. Szczegóły i aktualne informacje można znaleźć na stronie dotnetmeeting.pl

Nie czekaj, zarejestruj się już dziś!

(Dla pierwszych 100 osób kupon od TekPub wart 19$ – szczegóły).


Pytanie – rozwiązanie [2] WPF – przesuwanie okna z WindowState=None

W poprzednim poście z serii “Pytanie – rozwiązanie” pisałem jak można usunąć obramowanie i domyślny pasek okna. Niestety powoduje to pewien problem dotyczący przesuwania tak zdefiniowanego okna po ekranie. Szukając po sieci znalazłem rozwiązania sięgające do PInvoke i wysyłania sygnałów do okna. Całość niestety zajmowała ładnych kilkadziesiąt linii kodu. Okazuje się jednak, że jest rozwiązanie mieszczące się w dosłownie jednej linijce! Odpowiedź na pytanie “Jak przesuwać okno z ustawionym WindowState=None” składa się z trzech elementów:

a) Do okna dodajemy sobie element, który będzie odpowiedzialny za możliwość przesuwania okna
b) dodajemy do niego obsługę zdarzenia “MouseLeftButtonDown
c) we wnętrzu metody wpisujemy jedną linijkę:
DragMove();

Teraz bez najmniejszych problemów umożliwimy użytkownikowi manipulację naszym oknem nawet gdy nie ma ono górnego paska.


Windows Phone 7 – więcej darmowych aplikacji!

Do tej pory rejestrując się na marketplace była możliwość opublikowania 5 darmowych aplikacji. W dzisiejszym newsletterze ukazała się informacja, że liczba ta zostaje zwiększona z 5 do 100!
Warto tu jednak zaznaczyć jedną rzecz, a mianowicie opublikowanie aplikacji oznacza wysłanie pliku XAP, a nie jakby można było się spodziewać publikację pojedynczej aplikacji. Oznacza to tyle, że wszelkie updaty, ponowne wysyłanie po wykrytych błędach itp jest liczone jako -1 z darmowej puli. Ma to swoje uzasadnienie. “Publikacja” jest tu rozumiana jako, tak jak wspomniałem, wrzucenie do machiny weryfikacyjnej pliku XAP, co wiąże się z kosztami (po wyczerpaniu darmowego limitu opłata wynosi 20$). Nie mniej jednak zwiększenie tego limitu ułatwi zapoznanie się z marketplace oraz nie zrazi osób, które dopiero zaczynają przygodę z tą technologią.


Pytanie – rozwiązanie [1] WPF – okno bez obramowania

Postanowiłem zacząć umieszczać na blogu krótkie posty na zasadzie pytania i rozwiązania, które napotykałem podczas pisania różnych projektów.

Na początek coś prostego, ale umknęło mi to z pamięci i musiałem przeszukać właściwości okna, bo coś kojarzyłem, ale nie pamiętałem nazwy :) Odpowiedź na pytanie “Jak usunąć obramowanie okna w WPF?”  jest następująca:

We właściwościach okna ustaw WindowState=None

Dlaczego takie coś robić? Przykładem może być aplikacja, która ma wyglądać inaczej niż standardowe okienko. Zamiast tła ma ustawiony obrazek z przezroczystością. Można dzięki temu uzyskać bardzo ciekawy design, jednakże bez ustawienia WindowState=None cały efekt będzie zepsuty przez domyślny pasek okna i jego obramowanie.


Windows Phone 7 na Channel 9 i codeguru.pl – Data binding i MVVM

Dziś ukazał się trzeci już artykuł na codeguru.pl z cyklu WP7 dla programistów. Dzisiejszy odcinek poświęcony jest bindowaniu danych oraz wzorcowi MVVM. Podobnie jak poprzednio artykuł ten nawiązuje do równoległej serii webcastów dostępnej na Channel 9 w języku polskim. Autorem trzeciego odcinka jest Michał Korzunowicz.

Projekt do pobrania



Odcinek 3


MVC3 na TGD.NET

Toruńska Grupa Deweloperów .NET ma przyjemność zaprosić na 26 spotkanie, na którym Ireneusz Koszek poprowadzi prezentację pt.: “Umarł król (MVC2) niech żyje król (MVC3)”.

O czym będzie:

Podczas prezentacji poruszone będą tematy nowości jakie niesie ze sobą najnowsze wcielenie ASP.NET MVC.

Agenda:

  1. krótki wstęp do MVC
  2. razor view engine – nowy view engine by microsoft
  3. lepsze wsparcie dla javascript – remote validation, unobtrusive java script, wbudowane wsparcie dla JSON’a
  4. partial page caching
  5. nowy zestaw helperów (facebook, bing, google analytics, Chart(), WebGrid(), Crypto(), WebMail(), itd)
  6. nowe atrybuty
  7. sessionless controllers
  8. global filters
  9. dynamic ViewModel
  10. nowe ActionResult (HttpNotFoundResult, PermanentRedirectResult, HttpStatusCodeResult)
  11. nowe możliwości automatycznej walidacji modelu
  12. NuGet package manager – package manager dla ASP.NET
  13. lepsza integracja z IoC containers, extensibility points

O prelegencie:

Ireneusz Koszek – Programista od 14 lat (z zamiłowania). Większość tego czasu spędził tworząc duże systemu biznesowe (ERP). Zjadł zęby na MSSQL Server (od wersji 7). Od około 4 lat działający na własne konto jako freelancer. Interesuje się wszystkim co związane jest z programowaniem, oraz wpływem nowoczesnej techniki na codzienne życie. Lubi dzielić się zdobytą wiedzą (od czasu do czasu prowadzi autorskie szkolenia z MSSQL Servera), i myśli o zostaniu MCT. Zadaje dużo pytań (bo lubi wszystko wiedzieć, i nie lubi tracić czasu).

Gdzie i kiedy:

Spotkanie odbędzie się 22 lutego od godziny 17:00 w SALI S3 na Wydziale Matematyki i Informatyki UMK (ul. Chopina 12/18) . Wstęp na wykład jest wolny. Rejestracja na spotkanie jest obowiązkowa.

(Link dla osób korzystających z Codeguru: Rejestracja na spotkanie)

Zespół TGD.NET


Windows Phone Capability Detection Tool inaczej – UI

Capabilities – na początek trochę teorii

Przy tworzeniu aplikacji na Windows Phone w naszym projekcie dodawany jest zawsze plik WMAppManifest.xml, który znajduje się w katalogu Properties. Istotną jego częścią jest informacja na temat tak zwanych capabilities, czyli elementów platformy, z których nasza aplikacja będzie korzystać. Domyślnie zawarte tam są wszystkie możliwe wpisy widoczne na listingu 1. Należą do nich między innymi korzystanie z połączenia sieciowego, mikrofonu, akcelerometru, notyfikacji itp.

Listing 1. Capabilities

1
2
3
4
5
6
7
8
9
10
11
12
13
<Capabilities>
	<Capability Name="ID_CAP_GAMERSERVICES"/>
	<Capability Name="ID_CAP_IDENTITY_DEVICE"/>
	<Capability Name="ID_CAP_IDENTITY_USER"/>
	<Capability Name="ID_CAP_LOCATION"/>
	<Capability Name="ID_CAP_MEDIALIB"/>
	<Capability Name="ID_CAP_MICROPHONE"/>
	<Capability Name="ID_CAP_NETWORKING"/>
	<Capability Name="ID_CAP_PHONEDIALER"/>
	<Capability Name="ID_CAP_PUSH_NOTIFICATION"/>
	<Capability Name="ID_CAP_SENSORS"/>
	<Capability Name="ID_CAP_WEBBROWSERCOMPONENT"/>
</Capabilities>

Informacje te są o tyle istotne, że informują system po jakie uprawnienia będzie sięgać nasza aplikacja. W przypadku próby odwołania się do funkcjonalności, która nie jest uwzględniona w sekcji capabilities wówczas zostanie zgłoszony błąd bezpieczeństwa, a nasza aplikacja zostanie zatrzymana.

Capabilities też są wykorzystywane podczas procesu dodawania aplikacji do marketplace. W tym momencie proces ten analizuje paczkę z naszą aplikacją pod i następnie ustala ich listę usuwając zbędne elementy. Po co w takim razie jest ta informacja w WMAppManifest, skoro możnaby wychodzić z założenia – używam wszystkiego, a wy znajdździe to, czego jednak nie potrzebuję. Jeżeli weźmiemy pod uwagę, że proces weryfikacji może się w przyszłości zmienić i nie pomagać użytkownikowi w określaniu właściwych wartości, to ocena przydatności WMAppManifest ulega zmianie :) Jeżeli okaże się, że automatyczne usuwanie niepotrzebnych wpisów zosgtanie zarzucone, to te śmieci mogą mieć duży wpływ na postrzeganie naszej aplikacji. Wyobraźmy sobie prosty przykład: tworzymy prosty stoper i umieszczamy go na marketplace bez czyszczenia manifestu. W momencie gdy użytkownik znajduje naszą aplikację i zobaczy, że korzysta ona z sensorów, GPS, notyfikacji, sieci, mikrofonu itp, to podejrzewam, że zastanowi się zanim ją zainstaluje.

Koniec commandline – czyli Windows Phone Capability Detection Tool UI

Na szczęście do analizy naszej aplikacji pod kątem capabilities istnieje narzędzie dostarczane z Windows Phone Developer Tools o nazwie Windows Phone Capability Detection Tool. Jest to narzędzie dostępne z linii komend, które można znaleźć w katalogu %ProgramFiles%\Microsoft SDKs\Windows Phone\v7.0\Tools\CapDetect.

Składnia jest bardzo prosta. Wywołujemy komendę CapabilityDetection.exe podajemy plik z regułami (Rules.xml) a następnie w apostrofach ścieżkę do naszej aplikacji. Może to być ścieżka do pliku XAP, lub po prostu do katalogu, który ją zawiera. W rezultacie otrzymujemy listę używanych elementów, które powinny się znaleźć w manifeście naszej aplikacji. Przykład wykorzystania widać na rysunku 1.

Windows Phone Capability Detection Tool

Rysunek 1. Użycie CapabilityDetection.exe

Jak każde narzędzie dostępne z poziomu command line jest ono mało wygodne. W związku z tym przygotowałem nakładkę graficzną o nazwie WindowsPhoneCapabilityDetectionTool UI, która znacznie (przynajmniej w mojej ocenie) ułatwia korzystanie z tego narzędzia. Ekran aplikacji widoczny jest na rysunku 2.

Windows Phone Capability Detection Tool UI

Rysunek 2. Okno Windows Phone Capability Detection Tool UI

Jego działanie sprowadza się do wykonania czterech kroków:

  1. Wybieramy folder skompilowanej aplikacji
  2. Procesujemy aplikację
  3. Kopiujemy kod
  4. Podmieniamy sekcję capabilities

W razie problemów korzystając z lupy możemy otworzyć okno pomocy w którym opisane są wszystkie elementy niezbędne do wygodnego korzystania z tego narzędzia.

Windows Phone Capability Detection Tool UI Help

Rysunek 3. Okno pomocy Windows Phone Capability Detection Tool UI

Ważna informacja

Z racji na konieczność dodania pliku app.manifest, w którym jest wpis o dziedziczeniu uprawnień od aktualnego użytkownika (requestedExecutionLevel level=”asInvoker”) może zostać zgłoszona informacja o niebezpieczeństwie (Comodo tak robi). Nie ma się jednak czego bać :) – w razie potrzeby mogę udostępnić też źródła.

Do pobrania

binaria


Windows Phone 7 na Channel 9 i codeguru.pl – Kontrolki i style

Dziś na codeguru.pl ukazał się mój drugi artykuł na temat Windows Phone 7 – tym razem podejmuję temat kontrolek i styli. Artykuł ten nawiązuje do webcastu o tym samym tytule, który przygotował Michał Korzunowicz. Znajdziecie go tutaj.

Materiały do artykułu

Panorama w akcji - artykuł na Codeguru.pl

Odcinek 2


Niespodzianka od Codeguru.pl

Wczoraj otrzymałem przesyłkę od redakcji Codeguru.pl. Z racji na moją aktywność na portalu zostałem wyróżniony na podsumowaniu roku 2010, co jest o tyle istotne, że motywuje do dalszej pracy i aktywności na tym właśnie portalu. Główną zasługą w moim mniemaniu jest rozkręcenie działu z artykułami. Od pewnego czasu sekcja ta przeżywała stagnację. Po tym jak rozpocząłem cykl poświęcony Windows Communication Foundation dało się zaobserwować wzrost zainteresowania nie tylko czytanie artykułów, ale również ich pisaniem. Trend ten obserwujemy również i w tym roku – mam nadzieję, że się utrzyma i że będę mógł mieć w tym swój udział (pierwszą cegiełkę już dołożyłem w postaci artykułu o Windows Phone 7).

Niespodzianka 

Przesyłka zawierała dwie rzeczy. Pierwsza z nich to upominek widoczny na zdjęciu. Od razu przypadł mi do gustu – idealnie pasuje mi do wieży – mały, zgrabny i subtelny czytnik + karta  w firmowym opakowaniu portalu. Nie ukrywam, że jestem (jak pewnie większość z nas) ogromnym gadżeciarzem, a już szczególnie lubię te, które są praktyczne. Zawartość pudełka taka właśnie jest, co tym bardziej mnie cieszy :)

Drugim elementem był list z podziękowaniem. Oprócz standardowej treści zawierał on podpis Mariusza Kędziory, ale był to podpis własnoręczny (podziwiam wytrwałość!). Spodziewałem się standardowego nadruku zeskanowanego pierwowzoru, a tu widać solidną firmę :)

Plany na przyszłość

To co planuję na ten rok po części zawarłem w podsumowaniu roku 2010. Dodam jeszcze to, że oprócz pisania artykułów (w tym roku zapowiada się ich conajmniej kilka) planuję również zwiększyć aktywność na forum, czego efekty mam nadzieję już widać :) Jednocześnie chciałem podziękować wszystkim czytelnikom moich artykułów a także forumowiczom, którzy doceniają moją pomoc klikając “Pomógł mi” oraz oznaczając wątki jako rozwiązane.


  • O mnie

    Maciej Grabek

    Moje profile na:

    MVP

    Codeguru.pl GoldenLine
    Twitter CodeProject

  • english version
  • Polecam

  • Copyright © Maciej Grabek. All rights reserved.
    Powered by WordPress
    %d bloggers like this: