SDJ.189.2010.09.pdf

(10808 KB) Pobierz
Windows phone
333479528.019.png
9/2010 (189)
SPIS TREŚCI
BIBLIOTEKA MIESIĄCA
Phone 7. Dokonano zmiany całej platformy, co zrewolu-
cjonizowało pisanie aplikacji na urządzenia mobilne. Fir-
ma Microsoft pokazała także urządzenie prototypowe,
które spełniało wszystkie podstawowe wymagania, jakie
postawiła firma. Przyjrzyjmy się zatem, co tak napraw-
dę się zmieniło i co najważniejsze, czy te zmiany pomogą
Nam, programistom.
4 STL w praktyce: Wyszukiwanie.
Efektywne wyszukiwanie obiektów przy pomocy
biblioteki STL.
Rafał Kocisz
Programisto C++! Czy jesteś pewien, że wykorzystujesz
w praktyce potencjał swojej wspaniałej biblioteki standar-
dowej? Jeśli chcesz się przekonać, czy Twoja wiedza na
temat operacji wyszukiwania oferowanych przez STL jest
pełna, to koniecznie przeczytaj ten artykuł!
36 Windows Phone – Pierwsze kroki.
Prosta aplikacja do Twittera.
Dariusz Gunia
15 lutego 2010 roku, na konferencji Mobile World Congress,
Steve Balmer (CEO firmy Microsoft) ogłosił nowy mobilny
system operacyjny Windows Phone 7 Series (obecnie ofi-
cjalna nazwa brzmi: Windows Phone 7). Bardzo ciekawy
jest fakt, że WP7 od strony technicznej nie ma prawie nic
wspólnego z poprzednimi wersjami platformy (Windows
Mobile), bowiem firma Microsoft postanowiła, że system
ten zostanie napisany od podstaw. Producenci smartfonów
(np. HTC) zapowiadają pierwsze telefony z WP7 pod ko-
niec bieżącego roku, ale programiści już teraz mogą two-
rzyć oprogramowanie na nowy system operacyjny.
KLUB TECHNICZNY
14 Technologie Progress OpenEdge – Część 10.
Web serwisy w OpenEdge – Pobieranie usług
innych dostawców.
Piotr Tucholski
Web serwisy są środkiem do szybkiego osiągnięcia in-
tegracji i elastyczności aplikacji w zgodzie z architekturą
SOA. Oferują wymierne korzyści, jak łatwość użycia i nie-
zależność od języka programowania i platformy systemo-
wej. OpenEdge oferuje możliwości zarówno wykorzysta-
nia Web serwisów oferowanych przez innych dostawców,
jak i wystawianie własnych usług. W niniejszym odcinku
zajmiemy się pierwszym z powyższych aspektów.
46 Metody Synchronizacji Bazy Mobilnej SQL
Server Compact z SQL Server 2008.
Na przykładzie Remote Data Access.
Daniel Dudek
Pomimo iż firma Microsoft na konferencji MIX 2010 za-
prezentowała nowy system mobilny Windows Phone 7,
to oznajmiła jednocześnie, że poprzednia wersja systemu,
Windows Mobile 6.5, będzie nadal wspierana. Duża ilość
aplikacji mobilnych z sektora biznesowego i/lub przemy-
słowego czy medycznego stosuje systemy Windows Mo-
bile 5.0, 6.0, 6.1, jak również 6.5. W dzisiejszych czasach
nie można sobie wyobrazić aplikacji działającej bez dostę-
pu do bazy danych. W artykule pokażę, jak wykonać kopię
bazy firmowej do wersji mobilnej, oraz jak przekazać wpro-
wadzone zmiany z powrotem na serwer firmowy.
PROGRAMOWANIE C++
22 Stałość
Stałość logiczna i stałość fizyczna.
Robert Nowak
Oznaczanie obiektów, argumentów, metod i składowych
jako stałe zwiększa czytelność kodu oraz dostarcza dodat-
kowych warunków poprawności.
PROGRAMOWANIE URZĄDZEŃ
MOBILNYCH
PROGRAMOWANIE PYTHON
54 Kurs Pythona. Odcinek 3: Model obiektowy.
Łukasz Langa
Dwa pierwsze odcinki miały za zadanie zapoznać nas
z podstawowymi cechami języka i środowiska Python.
Ostatnią wielką niewiadomą pozostały dla nas klasy. Po
ich poznaniu będziemy mogli uznać, że rozumiemy funda-
menty Pythona. Do dzieła!
26 Rozpocznij przygodę z Windows Phone
– Zobacz, jak to się robi w technologii Microsoft.
Daniel Dudek
Na konferencji MIX 2010 w Las Vegas firma Microsoft za-
prezentowała swój nowy system operacyjny Windows
2
9/2010
2
333479528.020.png
 
SPIS TREŚCI
SPIS TREŚCI
APLIKACJE BIZNESOWE
narzędzia do opracowywania, które współpracuje z .NET
Framework 2.0 i kolejnymi wersjami.
58 Zwinna jakość. Strategie testowania
i zapewnienia jakości w Agile.
Karolina Zmitrowicz
W ostatnich latach zapanowała prawdziwa moda na lek-
kie metodologie wytwarzania oprogramowania. Szcze-
gólnie podejścia zwinne, Agile, takie jak Scrum, zdoby-
wają sobie coraz więcej zwolenników. Szybko, tanio,
bez zbędnej biurokracji, działające oprogramowanie na
końcu każdej iteracji – ale czy przy zachowaniu wyso-
kiej jakości?
FELIETON
20 Outsourcing IT
Czyli polska szansa na sukces.
Michał Gronowski
Polski rynek IT zmienia się dynamicznie, jednak ciągle
ma duże perspektywy rozwoju. Coraz częściej stosowa-
nym rozwiązaniem wsród wielu przedsiębiorstw jest out-
sourcing IT. Centra usług IT (świadczące usługi zarówno
dla polskich, jak i zagranicznych klientów) działają prężnie
w naszym kraju. Jako przykład można podać ośrodek Ac-
centureTechnology Solutions w Łodzi.
Z ŻYCIA ITOLOGA
70 Scrum – Nowa metoda zarządzania projektami.
Mariusz Chrapko
Zajęcia z WF-u – tak średnio wspominam. Rzucanie piłką
lekarską o dziwo nawet mi nieźle wychodziło (czułem się
jak jakiś Gigant w walce z bogami Olimpu), ale już na przy-
kład palantówka, biegi dookoła szkoły, skoki przez kozła,
stanie na rękach, przewroty – mógłbym być bohaterem
programu: „O ludziach, którzy przeżyli własną śmierć”.
A Gry Zespołowe? A, to co innego, zwłaszcza siatka. Tu
się naprawdę realizowałem: dwie drużyny, rywalizacja,
wspólny cel… Może dlatego tak lubię Scrum – Grę w Pro-
jekt, z dużym zapasem zdrowego rozsądku.
80 Make IT Green!
Roger Zacharczyk
Biznes i ekologia? Czemu nie… Również firmy z bran-
ży IT mogą wiele zrobić, aby połączyć swoją działalność
z ochroną środowiska. Jak? Odpowiedzią jest Green IT,
do niedawna tylko moda, a od jakiegoś czasu koniecz-
ność, wymóg nakładany na firmy przez Unię Europejską,
ale także inne organizacje. Brzmi strasznie? Na szczęście
– jak to się mówi – nie taki diabeł straszny jak go malują.
Miesięcznik Software Developer’s Journal
(12 numerów w roku)
jest wydawany przez Software Press Sp. z o.o. SK
EFEKTYWNOŚĆ PRACY
Redaktor naczelny:
Łukasz Łopuszański lukasz.lopuszanski@software.com.pl
Skład i łamanie:
Tomasz Kostro www.studiopoligraficzne.com
74 Najprostsze możliwe środowisko – O potędze
prostoty.
Michał Bartyzel, Mariusz Sieraczkiewicz
Kto nie uwielbia tych wspaniałych chwil, kiedy projekt na-
biera kształtu, kolejne funkcjonalności pojawiają się jedna
za drugą i nie możemy się nacieszyć wspaniałym, progra-
mistycznym dziełem. A diabeł czyha …
Kierownik produkcji:
Andrzej Kuca andrzej.kuca@software.com.pl
Adres korespondencyjny:
Software Press Sp. z o.o. SK,
ul. Bokserska 1, 02-682 Warszawa, Polska
tel. +48 22 427 36 91, fax +48 22 224 24 59
www.sdjournal.org cooperation@software.com.pl
PRZEGLĄD NOWOŚCI
Dział reklamy: adv@software.com.pl
Redakcja dokłada wszelkich starań, by publikowane
w piśmie i na towarzyszących mu nośnikach informacje i programy
były poprawne, jednakże nie bierze odpowiedzialności za efekty
wykorzystania ich; nie gwarantuje także poprawnego działania
programów shareware, freeware i public domain.
78 Generator raportów dla .Net (Visual Studio)
FastReport.NET 1.4.
FastReport.Net – generator raportów z wieloma funkcjami
dla deweloperów, korzystających z Microsoft Visual Stu-
dio 2005 oraz 2010, Delphi Prism lub z dowolnego innego
Wszystkie znaki firmowe zawarte w piśmie są własności odpowiednich firm.
Zostały użyte wyłącznie w celach informacyjnych.
Osoby zainteresowane współpracą prosimy o kontakt:
cooperation@software.com.pl
333479528.021.png 333479528.001.png 333479528.002.png 333479528.003.png 333479528.004.png
BIBLIOTEKA MIESIĄCA
STL w praktyce:
Efektywne wyszukiwanie przy pomocy biblioteki STL
Programisto C++! Czy jesteś pewien, że wykorzystujesz
w praktyce potencjał swojej wspaniałej biblioteki
standardowej? Jeśli chcesz się przekonać, czy Twoja wiedza
na temat operacji wyszukiwania oferowanych przez STL jest
pełna, to koniecznie przeczytaj poniższy artykuł!
Dowiesz się:
• Jakie klasy sekwencji obsługuje STL;
• W jaki sposób STL porównuje ze sobą obiekty;
• Jakie opcje wyszukiwania obiektów oferuje STL.
Powinieneś wiedzieć:
• Solidna znajomość podstaw języka C++;
• Solidna znajomość podstaw biblioteki STL.
wiecie, co posiadacie. Mam wrażenie, że to
mądre, polskie przysłowie jak ulał pasuje do
niektórych użytkowników biblioteki STL. A przecież
Standard Template Library uważana jest w różnych
kręgach za jedną z najlepiej zaprojektowanych biblio-
tek w całej historii informatyki. Jej autorom udało się
zrealizować zadanie iście karkołomne: zaprojektować
oprogramowanie wielokrotnego użytku, łatwo rozsze-
rzalne i jednocześnie bardzo wydajne. Jak połączyć
te wykluczające się cechy oprogramowania? Odpo-
wiedzią jest paradygmat programowania uogólnione-
go (ang. generic programming ), który można stoso-
wać dzięki takim właściwościom języka C++ jak wzor-
ce funkcji i klasy szablonowe.
Jedną z pułapek czyhających na użytkowników STL
jest jej pozorna łatwość. Problem w tym, że wiele do-
stępnych w sieci samouczków opera się na pobież-
nym rozważaniu prostych przykładów użycia tej biblio-
teki, które rozwodzą się nad tym, jak łatwo można pod-
mienić w kodzie wektor ( std::vector ) na listę ( std::
list ). Okazuje się, że rzeczywistość jest o wiele bar-
dziej złożona.
Głównym natchnieniem do rozpoczęcia cyklu arty-
kułów traktujących o bibliotece STL stało się dla mnie
szkolenie, które przeprowadziłem latem br. dla grupy
zawodowych programistów języka C++. Szkolenie za-
tytułowałem Efektywne wykorzystanie biblioteki STL ,
zaś jego celem było omówienie zestawu praktycznych
idiomów, których stosowanie pozwala korzystać z STL
w sposób poprawny i co ważne – efektywny. Idąc na
to szkolenie, bałem się trochę, czy aby nie zanudzę
moich słuchaczy (spora część prezentowanych mate-
riałów odnosiła się do elementarnej wiedzy na temat
STL). Ku mojemu zdziwieniu, materiał, który przygoto-
wałem, okazał się dla większości uczestników bardzo
cennym uzupełnieniem ich wiedzy na temat standardo-
wej biblioteki wzorców.
Wtedy właśnie wpadłem na pomysł opisania i przed-
stawienia na łamach kolumny Biblioteka Miesiąca cy-
klu artykułów zatytułowanego Praktyczny STL , w któ-
rym znalazłoby się szczegółowe omówienie podsta-
wowych aspektów korzystania z tej biblioteki. Na po-
czątek postanowiłem opisać, jakie mechanizmy wy-
szukiwania elementów w sekwencjach oferuje nam
standardowa biblioteka wzorców. W kolejnych odsło-
nach cyklu, które pojawiać się będą co jakiś czas na
stronicach Software Developer's Journal , omówię rów-
nież metody sortowania sekwencji i usuwania elemen-
tów z sekwencji. Oddzielny artykuł poświęcony będzie
kontenerowi std::vector , kolejny zaś – kontenerom
asocjacyjnym.
STL: krótka klasyfikacja kontenerów
Pytanie jest proste: jak można wyszukiwać za pomocą
biblioteki STL? Okazuje się, iż odpowiedź na to pytanie
wcale już taka prosta nie jest. Jeśli jedyne, co przycho-
dzi Ci do głowy, to odpowiedź w stylu: no cóż, można
4
9/2010
Wyszukiwanie
C udze chwalicie, swego nie znacie, sami nie
333479528.005.png 333479528.006.png
 
333479528.007.png 333479528.008.png 333479528.009.png 333479528.010.png 333479528.011.png
Wyszukiwanie przy pomocy biblioteki STL
zapewne użyć algorytmu std::find()... , to zdecydowanie
powinieneś przeczytać poniższy artykuł!
Zanim udzielę odpowiedzi na postawione wyżej py-
tanie, chciałbym przypomnieć kilka podstawowych fak-
tów na temat biblioteki STL. Zacznijmy od przypomnie-
nia sobie sprawy najbardziej elementarnej. Trzy głów-
ne filary biblioteki STL to:
Listing 1. Czy żądany element występuje w sekwencji
nieposortowanej?
#include <algorithm>
#include <cassert>
#include <iterator>
#include <list>
#include <vector>
kontenery – obiekty, które pozwalają przechowy-
wać inne obiekty,
algorytmy – funkcje służące do przetwarzania
obiektów przechowywanych w kontenerach,
iteratory – obiekty, które pozwalają traktować kon-
tenery jako sekwencje obiektów; stanowią swoisty
klej pomiędzy kontenerami i algorytmami.
#include <boost/assign/std/list.hpp>
#include <boost/assign/std/vector.hpp>
using namespace boost :: assign ;
using namespace std ;
Ważnym pojęciem w nomenklaturze STL jest sekwen-
cja . Sekwencja to – mówiąc prosto – ciąg obiektów,
po którym można się na różne sposoby poruszać.
O tym, w jaki sposób to poruszanie się wygląda, decy-
dują klasy iteratorów opisujących sekwencje. Na przy-
kład, jeśli sekwencja opisana jest parą iteratorów wej-
ścia (ang. Input Iterators ), to jedyne, na co możemy
sobie pozwolić, to przejście przez wszystkie elementy
sekwencji, po kolei, bez możliwości żadnych skoków
czy powrotów.
W kontekście tematu, który nas dziś szczególnie in-
teresuje (tj. wyszukiwanie elementów w sekwencjach),
niezwykle istotna jest cecha sekwencji zwana uporząd-
kowaniem . Sprawa jest prosta: sekwencje występujące
w STL mogą być nieuporządkowane tudzież uporząd-
kowane (mówiąc innymi słowami: posortowane wedle
określonego kryterium). Ciekawe jest to, że taka kla-
syfikacja sekwencji przenosi się bezpośrednio na jed-
ną z klasyfikacji kontenerów, które można podzielić na
dwie kategorie:
template < class Iter , class T >
bool hasValue ( Iter irst , Iter last , const T & val )
{
Iter found = ind ( irst , last , val );
return found != last ;
}
int main ()
{
vector < int > vec ;
vec += 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ;
assert ( hasValue ( vec . begin () , vec . end () , 3 ));
assert ( hasValue ( vec . begin () , vec . end () , 5 ));
assert ( hasValue ( vec . begin ()+ vec . size () / 2 ,
vec . end () , 8 ));
assert (! hasValue ( vec . begin () , vec . end () , 13 ));
assert (! hasValue ( vec . begin () , vec . end () , 15 ));
assert (! hasValue ( vec . begin () ,
vec . begin ()+ vec . size () / 2 , 8 ));
kontenery sekwencyjne ( std::vector , std::list ,
std::deque i std::string ) – ich zawartość domyśl-
nie nie jest uporządkowana;
kontenery asocjacyjne ( std::set , std::multiset ,
std::map i std::multimap ) – ich zawartość zawsze
jest uporządkowana.
list < int > lst ;
lst += 2 , 4 , 6 , 8 , 10 ;
assert (! hasValue ( lst . begin () , lst . end () , 3 ));
Kategoryzacja ta jest bardzo ważna dla każdego użyt-
kownika biblioteki STL. Dlaczego? Otóż dlatego, że
pierwsza część odpowiedzi na pytanie jak można wy-
szukiwać za pomocą biblioteki STL? brzmi: to zale-
ży od tego, czy chcesz przeszukiwać sekwencję upo-
rządkowaną czy nieuporządkowaną .
list < int >:: const_iterator it ( lst . begin ());
advance ( it , lst . size () / 2 );
assert ( hasValue < list < int >:: const_
iterator >( lst . begin () , it , 4 ));
Co to znaczy „szukać”?
Skoro znamy już pierwszą część odpowiedzi na na-
sze pytanie, warto poszukać kolejnej. Okazuje się, że
będzie ona... kolejnym pytaniem. W tym miejscu moż-
return 0 ;
}
www.sdjournal.org
5
333479528.012.png 333479528.013.png 333479528.014.png 333479528.015.png 333479528.016.png 333479528.017.png 333479528.018.png
 
Zgłoś jeśli naruszono regulamin