piątek, 31 stycznia 2014

Windows 8.1 Update 1 & Windows Phone 8.1 - kolejne przecieki

Kolejny post w stylu poprzedniego. Co przedostało się do świata w minionym tygodniu?

Windows 8.1 Update 1

1. Włączona domyślnie opcja bootowania do desktopu z pominięciem okna Start (dla użytkowników desktopowych). W niektórych źródłach informacja uznawana za sporną.

2. Możliwość wyświetlania desktopowego paska zadań przy pełnoekranowej aplikacji Windows Store.

windows_update_1_modern_taskbar

3.  Ułatwienie obsługi aplikacji Windows Store w środowisku desktopowym (górny access bar z przyciskiem minimalizacji i krzyżykiem do zamknięcia)

Windows 8_1 2014 Update Build Leak screenshot's Boot to desktop option selected by default (4)

4. Nowe ustawienia dla DPI. Możliwość znacznego powiększenia tekstu, co jest przydatne dla dużych urządzeń z dużymi rozdzielczościami.

35840_900

Windows Phone 8.1

1. Niezależna kontrola głośności (np. inna dla dzwonka, inna dla muzyki)

fJEa7r7ZiDvkOhFldxZv

Dla przypomnienia, wśród nowych funkcjonalności WP 8.1 w nieoficjalnych kręgach wymienia się:

  • programowe wyświetlanie przycisków sprzętowych (mniejsze wymagania dla producentów)
  • wirtualny asystent głosowy (coś ala siri)
  • centrum notyfikacyjne (mające uzupełnić kafelki i notyfikacje)

Według oficjalnego komunikatu użytkownicy telefonów z WP8 będą mogli zaktualizować system do WP 8.1.

Linki

poniedziałek, 27 stycznia 2014

Windows 8.1 Update 1 Preview - kolejne wieści z podziemia

Zaglądając na portale, które zazwyczaj mają prawdziwe informacje przed właściwym czasem (jak choćby ostatnio), natrafiłem na kilka nowych ciekawostek związanych z najbliższą aktualizacją Windows 8.1. Oto one:

1. Przypinanie do paska zadań skrótów do aplikacji Windows Store

taskbar-thumb

2. Bardziej przyjazne Metro dla posiadaczy myszy - menu kontekstowe zamiast zaznaczenia i paska aplikacyjnego. Na ekranach dotykowych zachowanie bez zmian. Ponadto aplikacje Windows Store będą wyświetlały krzyżyk dla myszy.

context-menu2

3. Przyciski szukania i wyłączania na ekranie Start

update1-leak3-hero

Windows 8.1 Update 1 zostanie wydane w tym samym czasie, co Windows Phone 8.1.  Najpierw mówiono o początku kwietnia, teraz celuje się w 11 marzec. Odświeżone 8.1 ma być pierwszym krokiem w kierunku integracji Windows i Windows Phone. Właściwa integracja nastąpi w Windows 9, który stosunkowo niewiele ma się różnić od 8.1.

Linki:

wtorek, 7 stycznia 2014

Kilka linków - BUILD 2014, C#, Windows 8.1 Update 1, Project Sienna (Visual Studio mini), emulatory WP

Na początek roku post minimalistyczny - kilka linków, które gnieżdziły się w mojej głowie ostatnio. Co dalej z Windows, Windows Phone,  C#, Visual Studio? Odpowiedź już za niecałe 3 miesiące na BUILD 2014! Pierwsze przecieki o Windows 8.1 Update 1, który ma się ukazać w marcu tuż przed BUILD (choć ciekawszy wydaje się bardziej mglisty “Threshold”). Interesujące rozważania na temat języków programowania prosto z Microsoft. Sienna - genialny przykład minimalistycznej roboczej aplikacji Windows Store, takie mobilne, mini-Visual Studio w pigułce dla ludzi nieumiejących programować na platformach Windows 8, ale znających makra w Visual Basic. Aktualizacje emulatorów dla WP.

Życzmy sobie wszyscy kolejnej porcji innowacji w nadchodzącym roku.

czwartek, 12 grudnia 2013

C# 6.0 - pierwsze pogłoski

Jaka jest przyszłość C#?  Dziś wpadł mi link http://damieng.com/blog/2013/12/09/probable-c-6-0-features-illustrated przekazany przez kolegę. Mimo, że na oficjalnych blogach nic nie znalazłem, o tyle natrafiłem na streszczenie jednej z rozmów z BUILD 2013:  http://wesnerm.blogs.com/net_undocumented/2013/07/anders-on-c-60-at-build-2013.html.  Jest to odpowiedź na wątpliwości na temat przyszłości C#, .NET i “Roslyn”. Jak wszystko dobrze pójdzie to .NET 5 będzie hulać na “Roslyn”, a C# nabierze nowych właściwości w oparciu o doświadczenia z TypeScript, a także takie języki jak F# czy Scala.

Ale wróćmy do pierwszego linka i rzućmy okiem na prezentowane propozycje składniowe.

1. Primary Constructors

Zapis   public Point(set int x, set int y) lepiej do mnie trafia. Przypomina mi konstrukcję z TypeScript. Czemu składnia nie może być tak prosta jak w tym języku?

2. Readonly auto properties

public int X { get; } = x;

Ta składnia średnio mi się podoba. Jakoś tak nadmiarowo…

3. Static type using statements

using System.Math; ... public double A { get { return Sqrt(Round(5.142)); } }

To jest super. Od zawsze publiczna statyczna metoda wydawała się tak naprawdę metodą poza klasą.

4. Property Expressions

public double Distance => Math.Sqrt((X * X) + (Y * Y));

To też mi się bardzo podoba. Jestem na tak.

5. Method Expressions

public Point Move(int dx, int dy) => new Point(X + dx, Y + dy);

Jakby coś pośredniego między wyrażeniem lambda a metodą z ciałem. Kojarzy się z TypeScript. Jestem na tak.

6. Params for enumerables

Do(someEnum); public void Do(params IEnumerable<Point> points) { ... }

Podzielam obawy zapisane przy tym punkcie. Składnia natomiast jest jasna.

7. Monadic null checking

var bestValue = points?.FirstOrDefault()?.X ?? -1;

Nie trzeba będzie już robić dużo if-ów i pomocniczych zmiennych. Fajna sprawa.

8. Constructor type parameter inference

var x = new MyClass(1, "X");

Znowu uproszczenie dla klas generycznych. Jestem na tak.

9. Inline declarations for out params

int.TryParse("123", out int x);

Też świetna sprawa. Zawsze mi przeszkadzały dwie linijki.

Ciekawe, czy nowy C# trafi do Windows 8.2 (Threshold) ? Nowy Windows ma mieć wersję na smartfony i tablety (połączenie Windows Phone i Windows RT) oraz wersje dla użytkowników stacjonarnych, w której aplikacje Windows Store będą mogły wyświetlać się w normalnym oknie z poziomu pulpitu. Tak więc szykują się ciekawe zmiany zarówno w C#, .NET, jak i w Windows.

niedziela, 1 grudnia 2013

Programista 11/2013: “Windows 8.1 okiem programisty”

Miło poinformować, że mój artykuł o Windows 8.1 został opublikowany w najnowszym świątecznym wydaniu pisma “Programista”. Gazetę można nabyć drogą elektroniczną lub tradycyjnie na półce.

Programista 11/2013 (18)  

To moja trzecia, najdłuższa publikacja na łamach tego pisma. Tym razem spojrzałem wnikliwie na Windows 8.1 zarówno z pozycji ogólnosystemowego Windows Runtime API, z perspektywy aplikacji Windows Store, jak i desktopowych. Najwięcej uwagi poświęciłem oczywiście dwóm światom Windows Store - XAML oraz HTML5. Czynię dużo aluzji do Windows 8, WPF czy Silverlight. Z takim bagażem przeszłości po prostu nie umiem spojrzeć już na najnowsze API inaczej…  W układaniu tekstu pomogły mi zarówno zmigrowane dotychczasowe rozwiązania w XAML i HTML5, jak również zupełnie nowe kawałki kodu. Cieszę, że udało mi się wszystko zrealizować, jak sobie założyłem. Powstał dość szczegółowy i precyzyjny obraz nowego systemu, oczywiście jak na gazetę. Inaczej powstałaby już książka –:) W każdym miejscu stawiałem na sedno sprawy, unikałem powtórzeń i zbytniego przegadania, chyba że trzeba było do czegoś nawiązać…

Zapraszam do lektury!

Hub1  Hub2

piątek, 15 listopada 2013

Blend dla HTML5 - animacje

Zgodnie z zapowiedzią najbliższy post miał być o animacjach w Blend i tak też będzie. Weterani XAML, do których się zaliczam, cieszyli się już przy WPF edytorem animacji w Blend, czyli 7 lat temu. W aplikacjach HTML5 animacje CSS3 często pisze się dziś ręcznie. Nie jest to trudne, ale z pewnością wygodniej byłoby je podglądać i modyfikować za pomocą narzędzi. Twórcy najnowszej wersji Blend postanowili ułatwić życie developerom aplikacji Windows Store i zaadaptowali na potrzeby CSS3 edytor znany z XAML.

Przejdźmy do konkretów. Pięć lat temu robiłem pierwsze szkolenie z Silverlight i wtedy pokazywałem animacje klatkowe. Ludzik skakał w kilku etapach, w każdym z nich z inną charakterystyką ruchu… Dziś zrobimy sobie podobne demo. Zamiast ludzika użyjemy samej głowy (o nazwie monster), którą mam zapisaną w postaci Path w SVG. Tworzymy regułę CSS dla #monster i w zakładce Animation po prawej stronie dodajemy animację. Ustawiamy dla niej kilka parametrów np. czas trwania (duration), ilość powtórzeń (iteration-count), sposób kończenia (fill-mode, wartość forwards pozostawia animowany obiekt w takim stanie, w jakim był tuż po zakończeniu animacji), kierunek (direction, opcja alternate przy większej ilości iteracji oznacza wykonywanie animacji na przemian - normalnie i w odwrotnej kolejności).

Animation1

Następnie naciskamy przycisk Edit animation i otwiera się nam edytor animacji.

Animation2

Podobnie jak w aplikacjach XAML przesuwamy suwak po timeline i edytujemy parametry obiektu w wybranych przez nas momentach czasowych np. transformacje. Dla każdego etapu możemy ustawić też inną funkcję charakteryzującą ruch w zakładce Animation. W efekcie powstał następujący opis animacji:

#monster {  
    animation-name: animation;
    animation-duration: 6s;
    animation-iteration-count: 1;
    animation-fill-mode: forwards;
    animation-direction: alternate;
    animation-play-state: running;
}

@keyframes animation {
    0% {
        transform: scale(0.3, 0.3);
        transform-origin: 0px 0px;
        animation-timing-function: linear;
    }

    33.33% {
        transform: translate(550px, 625px) scale(0.3, 0.3);
        transform-origin: 0px 0px;
        animation-timing-function: cubic-bezier(0.1, 0.9, 0.2, 1);
    }

    66.67% {
        transform: translate(850px, -12px) scale(0.3, 0.3);
        transform-origin: 0px 0px;
        animation-timing-function: step-end;
    }

    100% {
        transform: translate(1225px, 625px) scale(0.3, 0.3);
        transform-origin: 0px 0px;
    }
}

Jak widzimy, wszystko jest czystym CSS. Głowa najpierw zjeżdża ruchem jednostajnym w dół, potem szybuje w górę (mocno przyspieszając na końcu), a następnie dyskretnie znowu skacze w dół.

czwartek, 14 listopada 2013

Blend dla HTML5 - data binding

Trochę zamiłkłem. Wynikło to z różnych przyczyn. Jedną z nich było opracowanie kompleksowego artykułu o nowościach dla niemal wszystkich developerów Windows 8.1.  Napiszę o tym niedługo, jak zostanie opublikowany. Mimo, że w ramach tego przedsięwzięcia temat został praktycznie wyczerpany, to nie wszystko mogłem tam pokazać. Taki los spotkał m.in nowe edytory w Blend for Visual Studio 2013 i dlatego dwa najbliższe posty zostaną im poświęcone. Dziś krótki pokaz narzędzi do data bindingu.

Edytor data bindingu?  Każdy weteran XAML-a się uśmiechnie, bo to rzecz dość podstawowa. Ale chwila, dzisiaj mówię o HTML5. A, tu już sprawa narzędzi nie jest taka oczywista. Wiele ludzi pisze wszystko ręcznie. Twórcy najnowszego Blend postanowili przypomnieć o lepszych czasach. Poniżej mam w przykładzie ListView z podpiętym itemDataSource pod obiekt WinJS.Binding.List. Na zaznaczonym elemencie HTML otwieram, podobnie jak w XAML, edycję data bindingu. Dostaję, co prawda znacznie bardziej ubogie okienko, ale mogę w końcu wybrać interesującą mnie właściwość z kontekstu danych. Wynika to po części z nieco innej filozofii data bindingu w WinJS (i w innych bibliotekach JS), która zakłada znacznie mniejszą ilość parametrów. Konwerterem w WinJS jest funkcja, służąca do konwersji i formatowania.

DataBinding1

Teraz rzecz ciekawsza, choć też znana weteranom XAML. Chodzi o generowanie szablonu za pomocą kreatora, w którym wybieramy interesujące nas dane z kontekstu. W poniższym przykładzie przy właściwości itemTemplate wybrałem opcję <Create new template…>. Spowodowało to otwarcie okienka o takiej samej nazwie.

DataBinding2

Po wybraniu właściwości backgroundImage (rozpoznaje image!) i title, dostaję w HTML definicję szablonu:

   <div class="newTemplate" data-win-control="WinJS.Binding.Template">
        <div>
            <img data-win-bind="src:backgroundImage" height="100" width="100">
            <div data-win-bind="textContent:title"></div>
        </div>
    </div>

a w designerze na elementach listy od razu pojawiają się obrazki i tekst pod nimi. Całość, co prawda potrzebuje jeszcze ostylowania, niemniej jednak to spore udogodnienie.

Tyle na dziś. Następnym razem napiszę o animacjach.