Ciekawostki

Materiały z CleanCode na TZG

Oto materiały z prezentacji, którą przeprowadziłem dziś na spotkaniu Trójmiejskiej Zawodowej Grupy .NET

CleanCodeFullppsx

 


Nokia Lumia 920 – problem z czujnikiem zbliżeniowym

W weekend zdarzyło się coś, czego za bardzo się nie spodziewałem, a przynajmniej jeszcze nie teraz :) Ale od początku.

Wiele telefonów posiada wbudowany czujnik zbliżeniowy. Jest on głównie wykorzystywany do wyłączania / przygaszania ekranu podczas rozmowy gdy trzymamy słuchawkę blisko ucha. Okazuje się, że w Lumii 920 jest on umieszczony tuż nad górną granicą ekranu, gdzie bardzo łatwo dostają się zanieczyszczenia. Konkretniej chodzi mi o to miejsce tuż nad przednią kamerą:

Nokia-Lumia-920-proximity

Po miesiącu użytkowania stało się… Telefon tuż po wybraniu numeru wygaszał ekran co uniemożliwiało jakąkolwiek kontrolę rozmowy :( Przyczyną było dostanie się tam jakiegoś paproszka, który skutecznie zakłócił działanie czujnika…

Na szczęście rozwiązanie tego problemu jest dość proste – należy wyczyścić tą szczelinę między ekranem a obudową. Można do tego użyć albo sprężonego powietrza, odkurzacza itp. W moim przypadku użyłem kawałka utwardzonej folii, która akurat mieściła się w lukę i pozwoliła ją oczyścić. Po tej operacji telefon wrócił do pełni sił :) (jednocześnie ratując się przed zwrotem gwarancyjnym – bo sprężone powietrze nie podziałało jak powinno :()

Mam nadzieję, że ten post wam pomoże jeżeli kiedykolwiek zdarzy się wam podobna sytuacja – a mam nadzieję, że nie, bo Nokia to kawał solidnej słuchawki :)


Windows 8 – szpiegujemy zainstalowaną aplikację

Jeżeli interesuje was co się dzieje z zainstalowaną aplikacją, jakie pliki tworzy i co przechowuje, to jest na to bardzo prosty sposób. Wystarczy udać się do katalogu

%SYSTEMDRIVE%\USERS\%USERNAME%\AppData\Local\Packages

w którym znajdują się informacje z których korzysta wybrana aplikacja

packages

Mamy tu do dyspozycji informacje o danych zapisanych przez aplikację lokalnie (LocalState), danych, które należy synchronizować (RoamingState), ustawieniach (Settings).

Oczywiście nie wszystkie z nich można podejrzeć, ale czasem zdarza się, że jest to dobry sposób na sprawdzenie jak się zachowała nasza aplikacja i jakie dane zapisała.

WAŻNE

Jakiekolwiek modyfikowanie tych plików może spowodować błędne działanie aplikacji, które z nich korzystają!


TZG – Scrum

Oto materiały, z których korzystałem – a właściwie z przyczyn technicznych starałem się korzystać podczas spotkania dotyczącego metodyki SCRUM.

SCRUM TZG

Polecam również zapoznanie się z checklistą, o której mówiłem na zakończenie. Można ją znaleźć (w różnych wersjach językowych!) na stronie http://www.crisp.se/gratis-material-och-guider/scrum-checklist


Kilka moich aplikacji na Windows Phone

Nadszedł czas, żeby podzielić się kilkoma moimi aplikacjami, które do tej pory opublikowałem na Marketplace. Siedzę właśnie w autobusie do W-wy, mam internet, herbatkę, ciastka w pakiecie, więc nic nie stoi na przeszkodzie, żeby spędzić czas pożytecznie :)Zatem do dzieła! BTW – jeżeli chcecie przejść do szczegółów aplikacji, to klikajcie w jej tytuł lub ikonę – tak wiem, powinienem dodać znaczek “get for windows phone”, ale … dziś będę niestandardowy :)

A6W

Moja pierwsza “poważniejsza” aplikacja opublikowana na Marketplace. Aplikacja ta wciąż utrzymuje najwyższy stosunek ilości pobrań do ilości zakupionych licencji wynoszący prawie 12% i współczynnik ten się utrzymuje. Szykuje się również update dla niej, który pozwoli wykorzystać opcje jeszcze niedostępne podczas jej tworzenia.

Situps Counter

Kolejna odsłona pomocnika ćwiczeń. Tym razem nie jest to trener, a jak wspomniałem pomocnik. Aplikacja nie wydaje poleceń, lecz zlicza ilość wykonanych (dodam, że poprawnie wykonanych i zgodnych z ustawionymi wychyleniami) brzuszków. Dodatkowo oferuje licznik głosowy oraz zapis danych i prezentację w formie tabelarycznej i wykresu. Niektórzy twierdzą, że powinna być częścią A6W, ja jednakże wciąż się upieram, żę są to dwa różne tematy :)

PinIt

Pozwala na szybkie zarządzanie ustawieniami komunikacji takimi jak WiFi, dane pakietowe, Bluetooth, Flight mode. Osobiście używam jej bardzo często i znalazła się na moim pulpicie jako obowiązkowy jego element :) Moim zdaniem bardzo przydatna aplikacja (co widać między innymi po liczbie pobrań i ocenach). Opublikowana pod koniec stycznia 2012 została do tej pory pobrana ponad 2500 razy.

CatchEggs

Klasyka :) Pamiętacie “konsole” Elektroniki? Jedna konsola, jedna gra, żadnych kart, płyt i innych bzdur :P. Teraz wiele osób nie wie już co to była “Elektronika” i po zobaczeniu tej gry zastanawia się – czemu to się tak wolno odświeża, czemu ten obraz przeskakuje? Tak… Kiedyś hit i cutting-edge technology, teraz “gdzie ten framerate” :) Dla mnie klasyka zawsze będzie aktualna, a ten game play! :) Tu akurat implementacja znanych wszystkim “jajeczek”. Postanowiłem nieco zerwać z ideą konsoli widocznej na ekranie i dać użytkownikowi jak największą powierzchnię gdy. Czy słusznie? Nie wiem, narawie gra wygląda w ten sposób, ale planuję przygotowanie dwóch trybów, które pozwolą na przełączanie widoku między normal (widać przyciski i całą konsolę) i aktualnie dostępnym fullscreen.

Co więcej aplikacja wystartowała również w ramach konkursu GeekClub na CodeGuru gdzie zdobyła wynik 1000/1000 punktów!

Parachute

Klasyki ciąg dalszy – tym razem sterujemy łodzią i ratujemy spadochoroniarzy. Co tu więcej… Wiadomo o co chodzi, zatem nie będę się rozpisywał :) Obie pte klasyczne gry oferują możliwość podzielenia się swoimi wynikami na Facebook, a już wkrótce będą dostępne również statystyki globalne – tylko w pełnej wersji gry :) Czekam na rekordy!

Female Log

Aplikacja dedykowana dla pań :) Czy wiedziałem co piszę? Tak, bo wymagania dotyczące aplikacji przekazała mi moja żona :) Stwierdziła, że to co teraz jest dostępne nie spełnia jej oczekiwań i chce mieć “… tu lista wymagań …” oraz ” … dla pewności jeszcze jedna lista … ” :) zatem przygotowałem co trzeba, dostałem grafikę i oto rezultat. Jest to moja najnowsza produkcja, jednakże rozpoczęta prawie rok temu. Dlaczego trwało to tak długo? Wiele “przerywaczy” takich jak wyjazdy, konferencje, inne pomysły i projekty nie pozwoliły mi dokończyć tej aplikacji wcześniej. Ale z drugiej strony to dobrze, bo dzięki temu miałem możliwość poddać ją testom konsumenckim i podrasować grafikę. Jak sami / same zauważycie, aplikacja całkowicie zrywa z zasadami MetroUI – tak miała ona wyglądać, taki jest jej cel i tacy są jej odbiorcy :) W przygotowaniu kolejne ulepszenia, także aplikacja doczeka się jeszcze conajmniej kilku update’ów :)

Broken Phone

Na zakończenie fenomen w mojej ocenie. Aplikacja przydatna praktycznie do niczego – no może do odreagowania, zrelaksowania się, wyładowania, oderwania, rozerwania się, zaskoczenia znajomych… Hm – dużo tego… Czyli “przydatna” :) Dlaczego fenomen? Od czasu jej opublikowania, czyli w listopadzie 2011, pobrano ją 54 tysiące razy!!! (dziennie jest pobierana ok 300 razy).

 

Jeżeli pokusicie się o przejrzenie całej listy moich aplikajcji z pewnością zauważycie, że są tam również inne aplikacje z cyklu “śmieszne, mało przydatne, dziwne”. Zastanawiacie się dlaczego tam są? Z prostej przyczyny – wiele z nich służy / służyło do weryfikacji niektórych zasad, szybkości działania i zgłaszania wyjątków na Marketplace. Dzięki temu gdy przychodzicie na moją prezentację, lub wysyłacie mi maila z pytaniem o jakiś etap procesu lub wyjątek jestem w stanie udzielić na nie odpowiedzi (a przynajmniej w większości przypadków :))


Windows Phone SDK 7.1.1 Update CTP

W związku z premierą telefonu Nokia Lumia 610 na Mobile World Congress na stronach Microsoft Download pojawiła się wersja Windows Phone SDK 7.1.1 CTP. Wychodząc na przeciw rynkowi urządzeń mobilnych system Windows Phone szerzej zagości wśród urządzeń ze “słabszymi” parametrami (tańsze procesory i 256MB RAM). Aby zapewnić, że aplikacje będą przygotowane do płynnego działania również na takich urządzeniach nowe API udostępnia dostatkowe funkcjonalności. Od razu zaznaczę, że system jest na tyle zoptymalizowany, że nie ma tu najmniejszych problemów z wydajnością.

Do nowych funkcjonalności należą:

Dwa obrazy emulatora – tym razem przy testowaniu aplikacji mamy do dyspozycji emulator z pamięcią 512MB RAM (domyślny) oraz z 256MB RAM. Opcje te widać na liście wyboru emulatora:

 

 

 

Nowe API

Gdy chcemy rozpoznać na jakim urządzeniu pracujemy wystarczy wykorzystać poniższy kawałek kodu:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
try
{
	Int64 result = (Int64)DeviceExtendedProperties.GetValue("ApplicationWorkingSetLimit");
	if (result < 94371840L)
		// IsLowMemDevice = true;
	else
	{
		// IsLowMemDevice = false;
	}
}
catch (ArgumentOutOfRangeException)
{
	// Windows Phone OS update not installed, which indicates a 512-MB device. 
}

Warunek ten jest związany z faktem, że przy standardowej konfiguracji urządzenia działająca w tym momencie aplikacja ma do dyspozycji maksymalnie 90MB pamięci RAM. W przypadku urządzeń wyposażonych tylko w 256MB pamięci operacyjnej takie zużycie zagrażałoby stabilności pozostałych mechanizmów platformy. Warto już teraz zadbać o to, by nowi odbiory byli w stanie korzystać z naszych aplikacji i w razie konieczności np ograniczyć taktowanie zegara gry lub wykorzystywać mniej zasobochłonne operacje.

Więcej szczegółów na stronach MSDN.


Windows 8 CP i Visual Studio 2011 Beta

Dziś na stronach Microsoft pojawił się do pobrania Windows 8 w wersji Consumer Preview. Oto link do bezpośredniej strony z plikami ISO: http://windows.microsoft.com/en-US/windows-8/iso

Dodatkowo jest dostępne również Visual Studio 2011 w wersji Beta! Dostępne jest pod adresem http://www.microsoft.com/visualstudio/11/en-us/downloads. Do wyboru mamy Visual Studio, TFS oraz wersje Express. Ja wybrałem VS w wersji Ultimate, do której prowadzi ten oto link: http://www.microsoft.com/visualstudio/11/en-us/downloads#ultimate – moje kopie już się pobierają :)


WP7 Emulator – Skin

Czasem pracując z jednym narzędziem przez dłuższy czas, człowiek zaczyna szukać czegoś innego. Nie musi to być od razu całkowita zmiana narzędzia na inne, alternatywne, a wystarczy chociażby inny wygląd. Najprostszym przykładem jest tapeta na pulpicie. Tak wiem – tapeta na pulpicie zmniejsza wydajność, trzeba ją zatem usunąć! Ja nie jestem aż tak konserwatywny i preferuję mieć co nieco jako tło pulpitu. Innym przykładem może być zmiana wyglądu Visual Studio…

Nie da się ukryć, że Emulator WP7 jest ubogim pod względem estetyki narzędziem… Ale można to zmienić! To co należy zrobić, to udać się do lokalizacji, w której został zainstalowany emulator. W moim przypadku jest to katalog C:\Program Files (x86)\Microsoft XDE\1.0. Obok plików wykonywalnych samego emulatora oraz szeregu configów i bibliotek znajdują się tam również pliki graficzne… WM7_Skin_Down.png oraz WM7_Skin_Up.png. Ten drugi jest domyślną skórką emulatora, natomiast pierwszy jest używany jako wzór do zmiany koloru przy naciśniętym przycisku (różnica jest w kolorze przycisków – strzałka, okienko i lupa zamiast szarych są niebieskie).

Domyślnie emulator wygląda tak:

Jednak przy pomocy prostych narzędzi (w moim przypadku Paint.NET) można zmodyfikować szary emulator. Jednym z ulubionych motywów ludzi z branży IT jest Matrix. Zatem do dzieła – szybki przegląd obrazów związanych z Matrix’em zaznacz, kopiuj, wklej, zapisz i gotowe:

Koniec z nudnym emulatorem :)

Dla osób, które chciałyby w ten sposób uprzyjemnić sobie czas przygotowałem maskę w Paint.NET, która pokrywa całą możliwą do modyfikacji przestrzeń. Wystarczy:

  1. otworzyć załączony plik, następnie dodać nową warstwę z wybranym motywem,
  2. przełączyć się na warstwę maski, zaznaczyć kolor,
  3. wrócić do warstwy z mocywem,
  4. Ctrl+C a następnie Ctrl+V w docelowym pliku :)

Proste prawda :)

W załączniku znajduje się wspomniana maska w formacie pnd, skórka “Matrix style” oraz domyślna skórka emulatora w razie gdyby ktoś chciał wrócić do szarości :)

WP7 Emulator Skin

WP7 Thetering – 7740

Niektóre osoby, z którymi rozmawiam na temat Windows Phone 7 jako główną wadę przedstawiały brak możliwości dzielenia łącza internetowego z innymi urządzeniami. Wczoraj argument ten padł! Dlaczego? Z racji najnowszej aktualizacji systemu o numerze 7740, której głównym celem była naprawa komunikacji z Exchange. Muszę tu polegać na informacji od Zune, gdyż nie używam Exchange na moim telefonie :) Ale nie o tym miało być, a o theteringu :) Co się okazuje – tuż po pobraniu aktualizacji, wskoczyła kolejna (od producenta telefonu, czyli w moim przypadku od HTC), która zawierała nową opcję…

Idąc do ustawień telefonu, w zakładce system (czyli pierszej widocznej :)) pomiędzy opcjami Bluetooth i email + accounts pojawiła się opcja o nazwie Internet Sharing, która pozwala na zestawienie połączenia z maksymalnie 5 urządzeniami “biorcami” a telefonem “dawcą”. Do skonfigurowania mamy nazwę urządzenia, typ zabezpieczeń naszej mini sieci oraz hasło zabezpieczające dostęp. Z ciekawostek – mamy dostęp do informacji ilu klientów jest aktualnie podłączonych, co może się czasem przydać, choć niektórzy mogą stwierdzić, że to zbędny bajer…

Tak czy inaczej – nowa aktualizacja i nowe możliwości platformy – oby tak dalej :)


Visual Studio IntelliSense Tip 2

Kolejna ciekawostka związana z IntelliSense w Visual Studio 2010.

Często bywa tak, że IntelliSense próbuje być o wiele mądrzejsze niż programista i na siłę dopasowuje wybrane przez siebie nazwy klas i zmiennych nawet jeżeli nie było to naszym zamiarem. Jednym z przykładów może być tu odwołanie do nieistniejącej jeszcze klasy, którą dopiero zadeklarujemy. Szybkie demo polega na wpisaniu w kodzie aplikacji słowa Time – taką właśnie klasę chciałbym za moment dodać, natomiast narazie tworzę tylko kod, który będzie wykorzystywał obiekt tego typu.

Zatem po wpisaniu Time wciskam spację, żeby kontynułować kod i … okazuje się, że Visual Studio zakłada, że wie lepiej i IntelliSense wpisuje w miejsce Time typ TimeoutException

Co w związku z tym? Ctrl + Z i piszemy dalej… ??? Nie

Tryb uzupełniania i tryb sugestii

Opisane przeze mnie zachowanie jest spowodowane tym, że IntelliSense posiada dwa tryby: uzupełniania (domyślny) i sugestii. Jak widać tryb uzupełniania może być czasem uciążliwy… Można natomiast skorzystać z drugiego trybu, czyli z sugestii… Do przełączania się pomiędzy trybami IntelliSense służy kombinacja klawiszy CTRL + ALT + SPACE. Po zmianie trybu uzyskujemy efekt widoczny poniżej:

W tym trybie po wciśnięciu spacji IntelliSense nie wpisuje niechcianego przez nas typu TimeoutException… I o to właśnie chodziło.

Powiecie “Ok, ale co jeżeli chcę jednak wpisać TimeoutException a jestem w trybie sugestii?” Drogi są dwie:
1 – Tabulator pozwala na uzupełnienie sugerowanego tekstu
2 – Strzałką wybieramy sugestią i klikamy spację.

Mi osobiście opcja ta się spodobała. Oczywiście trzeba do niej podchodzić z rozsądkiem, żeby nie okazało się, że zamiast przyspieszyć spowolni proces kodowania :)


  • 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: