Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

dpsidebar - programowanie w windows cz.1

inspiracja

1. «natchnienie, zapał twórczy»
2. «wpływ wywierany na kogoś, sugestia»

Nie będę się migał. Zainspirował mnie webnull do napisania tego kilkuczęściowego (mam nadzieję) bloga. Dokładniej wpisem o dpnotify. Pomysł prosty i, co tu dużo ukrywać, ciekawy. Postanowiłem, że zrobię podobny ficzer dla windows. Dlaczego więc kilkuczęściowy? Ponieważ sama aplikacja (choć to duże słowo) jest łatwa do napisania i nie ma się czym za bardzo interesować. Ot, 5 funkcji i działa. Ale przy okazji przedstawię "cykl życia" aplikacji rozwijanej na poważnie.

Wymagania biznesowe

Od tego tak naprawdę się zaczyna... Co będzie robić nasza aplikacja?

  • Wyświetlać skrót najnowszego komentarza pod wskazanym artykułem (blog, news)
  • Możliwość dynamicznego definiowania nowego newsa/bloga do monitorowania
  • Możliwość dynamicznego usuwania monitorowanego artykułu
  • Możliwość łatwego definiowania czasu odświeżania
  • Informowanie o nowym komentarzu
  • Wyświetlanie pełnej treści komentarza
  • Możliwość włączenia/wyłączenia awatarów

Zasoby technologiczne

Aplikacja dpsidebar, jak pewnie można się domyślać, będzie działać jako gadget windows. Funkcjonalność tę poznaliśmy wraz z windows vista, działa aktualnie na systemach windows vista, 7 oraz windows server 2008. Jaki język wykorzystują gadgety? To zwykłe strony www, napisane w html+javascript+css. Jako rozwiązania od MS wspierają także komponenty ActiveX. Nam wystarczy tylko html+js+css oraz użyjemy istniejących komponentów ActiveX, nie będziemy ich tworzyć. Na dodatek na poziome pół śmiesznym.

Podczas tworzenia aplikacji na profesjonalnie weryfikacja zasobów technologicznych jest drugim krokiem po zebraniu wymagań funkcjonalnych. Na tym etapie decyduje się, czy posiadane zasoby są wystarczające, czy nie ma potrzeby outsource`ować tych zasobów, a nawet przenieść tworzenie aplikacji na inny podmiot.

W naszym przypadku wszystkie funkcjonalności jesteśmy w stanie zrealizować właśnie na przy użyciu gadgetów.

UX

Odrobina kreacji... Choć nie... najpierw jeszcze trochę o samych gadgetach. Jak już wspomniałem - gadget to lekki html, który dzięki JS może stać się naprawdę rozbudowaną i satysfakcjonującą aplikacją. W ciele gadgeta możemy wyselekcjonować trzy instancję:

  • Body - czyli dokładnie to co widać po uruchomieniu gadgeta. "Główne okno".
  • Settings - czyli dodatkowe okienko, które pojawia się po wybraniu "Opcje" (ikonka klucza). Okienko to wymaga osobnego pliku HTML i jest deklarowane w głównym oknie (obiekt System.Gadget)
  • flyout - czyli dodatkowe okienko "dolepiane" do głównego okna. Również deklarowane, można je dynamicznie chować i pokazywać z poziomu Body oraz samego flyout.

[img=flyout]

Teraz kreacja. Jak będzie działać nasz gadget? Na stronie body będą pojawiały się nowe komentarze. Na tej samej stronie będzie możliwość dodania kolejnego artykułu do monitorowania. Będzie to szybkie i wygodne. Na flyoucie będzie można przeczytać cały komentarz, w settings zmienić czas odświeżania, wyłączyć/włączyć awatary oraz usuwać monitorowane artykuły oraz zdecydować, czy gadget ma zmienić kolor tła, gdy wykryje nowy komentarz.

Wymagania technologiczne

Wymagania technologiczne są krokiem pośrednim między kodowaniem aplikacji a wymaganiami biznesowymi. Często krok ten jest pomijany, co nie jest błędem, zwłaszcza przy okazji rozwijanych stale aplikacjach. Jednak tym razem pokuszę się o taką analizę.

  • Wyświetlanie komentarzy - jakoś musimy je pobrać. Do tego posłużymy się kontrolką ActiveX Msxml2.XMLHTTP. Oczywiście jeśli będzie dostępna, jeśli nie posłużymy się już nieco starą wersją Microsoft.XMLHTTP. Kontrolka ta pozwala na wysłanie requesta HTTP na wskazany adres i zwraca (między innymi) response. Dostaniemy więc stronę WWW dobrychprogramów, która następnie przeanalizujemy wyrażeniem regularnym w poszukiwaniu newsów. TIP: strona blogów i artykułów może się różnić, więc przy dodawaniu kolejnego artykułu trzeba weryfikować czy to blog czy art. Być może konieczny będzie inny pattern.
  • Możliwość dynamicznego definiowania nowego newsa/bloga do monitorowania - Najlepiej do bazy by to wrzucać, lecz szkoda mi nieco podłączać obsługę sqlite do JS. Zamiast tego posłużymy się zapisem do pliku tekstowego, który przechowywać będzie obiekt konfiguracji. Dodawaniem do obiektu konfiguracji powinien zajmować się konkretny obiekt tak, by nie następowało nadpisanie a tylko dodanie. Dodawanie odbywać się będzie z poziomu body, konieczne jest więc dodanie inputa.
  • Możliwość dynamicznego usuwania monitorowanego artykułu - analogicznie jak wyżej, ale usuwanie odbywa się w flyout. Konieczne wyświetlenie listy z checkboxami do usunięcia wielu na raz
  • Możliwość łatwego definiowania czasu odświeżania - opcja w settingsach, należy skorzystać z metody System.Gadget.Settings.write
  • Informowanie o nowym komentarzu - przez zmianę koloru tła. Należy skorzystać z metod JS. Możliwość wyłączenia w settings.
  • Wyświetlanie pełnej treści komentarza - obiekt komentarza powinien posiadać także pełną treść komentarza by można go było wyświetlić dodatkowo w flyout.
  • Możliwość włączenia/wyłączenia awatarów - opcja w settingsach, należy skorzystać z metody System.Gadget.Settings.write

No cóż... wypadało by zejść jeszcze niżej. Zaznaczyć, że główna metoda pobiera komentarze i obiekt, który zwraca powinien być weryfikowany. Jednak te wszystkie niejasności przydadzą mi się w dalszych częściach bloga, więc na razie zostanie jak jest.

Struktura gadgetów

Gadget, jak wspominałem kilka razy do HTML. Dodatkowo w folderze głównym aplikacji znajdować się powinien plik manifestu gadgeta. Jego struktura jest bardzo prosta, o szczegółach napisze w kolejnej części. Dodam tylko ważną rzecz - nie potrzebujesz niczego poza notatnikiem (wbudowanym w system windows) aby uruchomić swój gadget oraz niczego poza zipem, by utworzyć paczkę instalacyjną. Paczka instalacyjna bowiem to tylko spakowany folder z gadgetem z rozszerzeniem zmienionym na .gadget. Tyle. Gadgety są lokalne dla maszyny (instalacja tylko z uprawnieniami administratora) oraz lokalne dla usera (bez uprawnień), po wystartowaniu uruchamiają się z uprawnieniami użytkownika, w kontekście którego działają. To będzie mieć znaczenie przy zapisywaniu do pliku.

Zakończenie

Tyle w tej części. W przyszłej zaczniemy coś już tworzyć, jakiś prosty hello world plus stworzenie pierwszego obiektu komentarza. Jeśli jesteście zainteresowani ciągiem dalszym bardzo proszę o info w komentarzu. Może jakieś dodatkowe oczekiwania wobec gadgetu? Cokolwiek?  

programowanie

Komentarze

0 nowych
SalcefiX   8 #1 06.09.2012 14:47

Ciąg dalszy mile widziany. Dodaj jeszcze pomijanie komentarzy wybranych użytkowników. Czasami pozwala to oszczędzić trochę niepotrzebnych nerwów, bo jakoś zawsze je czytam.

oprych   13 #2 06.09.2012 14:55

@SalcefiX
Też kiedyś myślałem, że taka opcja byłaby fajna, ale na dłuższą metę niepraktyczna. Czasami dowiesz się naprawdę czegoś ciekawego, a jak nie, to chociaż się pośmiejesz z komentarzy niektórych osób ;)

A co samego. Pisz dalej tfl, ja jestem ciekaw jak wygląda takie "tworzenie", a piszesz całkiem przyjemnie i rzeczowo

Autor edytował komentarz.
SalcefiX   8 #3 06.09.2012 14:58

@oprych - no w zasadzie trochę racji masz. Jest taka wtyczka do Opery ale niestety nie używam już tej przeglądarki, przynajmniej na laptopie, bo na telefonie to jak na razie nie ma nic równie dobrego.

Autor edytował komentarz.
qasx   6 #4 06.09.2012 15:13

Już chciałem płakać, że nie będzie działać w ósemce, bo dla zwykłego zegarka zainstalowałem Rainmeter, ale chyba znalazłem (http://8gadgetpack.bplaced.net/), więc pozostaje czekać na następne części.

kwpolska   6 #5 06.09.2012 17:08

flyout*?

tfl   8 #6 06.09.2012 17:15

@kwpolska, dzieki! nie wiem gdzie mialem glowe, gdy tak pisalem.

tomimaki   6 #7 06.09.2012 17:41

Microsoft praktycznie ubił gadżety i zalecają wyłączenie ich.
http://technet.microsoft.com/en-us/security/advisory/2719662
Strona z gadżetami już nie istnieje (nie wiem, dlaczego zlikwidowali).

Autor edytował komentarz.
tfl   8 #8 06.09.2012 17:45

@tomimaki

" In addition, Gadgets installed from untrusted sources can harm your computer and can access your computer's files, show you objectionable content, or change their behavior at any time. "

W tym przypadku akurat sami sobie piszemy program, wiec co najwyzej sami sobie mozemy zaszkodzic. Pisalem tez, ze "po wystartowaniu uruchamiają się z uprawnieniami użytkownika, w kontekście którego działają". trudno obwiniac microsoft, ze ktos uruchamia program z niepewnego zrodla...

robert-km   4 #9 06.09.2012 23:34

Obowiązkowa lektura dodana. Dzięki, czekam na następne części.

Kot-ek   10 #10 29.09.2012 19:00

Ciągle brakuje trzeciego screen'a - [img=flyout].