Otaczają nas zewsząd. Na pierwszy rzut oka niewidoczne, ukryte

Wielkość: px
Rozpocząć pokaz od strony:

Download "Otaczają nas zewsząd. Na pierwszy rzut oka niewidoczne, ukryte"

Transkrypt

1

2

3

4 OD REDAKCJI Otaczają nas zewsząd. Na pierwszy rzut oka niewidoczne, ukryte w kieszeniach mijających nas przechodniów, zamknięte w teczkach bądź neseserach. Cały czas aktywne, tworzą gigantyczną, ruchomą sieć, która oplata nasz świat. Dzięki nim, możemy porozumiewać się niemalże bez ograniczeń i mieć nieprzerwany dostęp do informacji czy rozrywki... Czy to wstęp do powieści typu science-fiction? Oczywiście, że nie: łatwo odgadnąć, iż mowa tu o nowoczesnych urządzeniach mobilnych. Kiedy myślimy o przytoczonych powyżej faktach, dochodzimy do wniosku, iż przyszło nam żyć w niesamowitych czasach rozkwitu Ery Informacji. W przeciągu ostatnich 30 lat byliśmy świadkami szalonego boomu komputerów osobistych, rewolucji internetowej, zaś ostatnio lawinowego rozwoju urządzeń przenośnych. Jednakże kolejne lata obserwacji kolejnych nowinek technologicznych utwierdzają nas w przekonaniu, iż dziedzina Informatyki, a szczególnie działka wytwarzania oprogramowania - jest ciągle tym smolistym grzęzawiskiem nie do pokonania, o którym pisał w 1975 roku Frederick P. Brooks Jr. w swoim bestsellerze p.t. Mityczny osobomiesiąc. Odpowiedź na pytanie 'dlaczego?' jest prosta: czynnik ludzki. Po prostu nie da się raz zaprojektować i stworzyć miliona kopii idealnego programisty tak jak to się z robi z procesorami czy innymi układami elektronicznymi. Kolejne pokolenia inżynierów oprogramowania trzeba żmudnie i nieustannie edukować i wychowywać ciągle od nowa i od nowa. Jednakże, o dziwo cały czas znajdują się chętni do tego aby brnąć we wspomniane wcześniej grzęzawisko, uczyć się i ujarzmiać niezbadane dotąd obszary informatycznej wiedzy oraz praktyki. Dlaczego tak się dzieje? Może dlatego, że programowanie daje Człowiekowi niespotykane dotąd możliwości kreowania otaczającej go rzeczywistości, co z kolei niesie niesamowitą satysfakcję. Może to właśnie ten entuzjazm napędzany poprzez kolejne pokolenia informatyków sprawia, iż ta młoda dziedzina wiedzy rozwija się tak dynamicznie... Drogi Czytelniku, mamy zaszczyt oddać do Twoich rąk pierwszy, pilotażowy numer SDJ: Biblia Programisty Programowanie Urządzeń Mobilnych. Nie bez przyczyny tematem przewodnim tej nowej serii zostało programowanie urządzeń mobilnych. Na kartach pisma, które trzymasz w ręku znajdziesz rozwiązania szeregu problemów, z którymi tu i teraz zmagają się programiści, ujarzmiający nowinki technologiczne ukryte w naszych kieszeniach. Prezentowany materiał został dobrany przekrojowo, tak abyś miał okazję przekonać się o różnorodności rozwiązań mobilnych. Wierzymy, iż niezależnie od tego czy jesteś doświadczonym programistą czy też świeżo upieczonym studentem informatyki, przedstawione tu informacji pokażą Ci nowe kierunki i pomogą pewniej poruszać się po technologicznych meandrach programowania nowoczesnych telefonów komórkowych. Mamy również nadzieję, iż przedstawione artykuły będą dla Ciebie bodźcem do zgłębiania nowych zagadnień i poszerzania swojej wiedzy. Na koniec chcieliśmy podkreślić, iż Redakcji SDJ bardzo zależy na zapoznaniu się z Twoją opinię o niniejszym numerze, zarówno w odniesieniu do prezentowanej treści jak i formy. Jeśli zechciałbyś podzielić się Twoimi uwagami w tym temacie, to zapraszamy do kontaktu. Łukasz Łopuszański Redaktor naczelny Rafał Kocisz Redaktor prowadzący 4 SDJ Extra 34 Biblia

5

6 SDJ Extra 34 Biblia SPIS TREŚCI 10 Opis DVD PROGRAMOWANIE WINDOWS MOBILE 12 RIL API w sercu telefonu Przemysław Mogaj Radio Interface Layer (RIL) jest kluczowym elementem odpowiadającym za komunikacje pomiędzy systemem Windows Mobile a siecią GSM. W środowisku programistów WM panuje opinia, że API do obsługi RIL jest niejasne i trudne w użyciu. W artykule postaramy się pokazać, jak powiada przysłowie nie taki diabeł straszny jak go malują. 24 RAPI Współpraca komputerów desktop z Windows CE i Mobile Daniel Stoiński Czasami podłączamy urządzenie mobilne wyposażone w Windows CE/Mobile do komputera stacjonarnego, aby skopiować pliki, połączyć się z Internetem czy wygodnie wysłać z klawiatury kilka SMS-ów. W świecie mobilnych urządzeń Microsoftu te i wiele innych ciekawych funkcji dostępnych jest za pośrednictwem biblioteki RAPI. Nie tylko dla MS Windows. 40 Rozpocznij Przygodę z Windows Mobile Zobacz, jak to się robi w technologii Microsoft Daniel Dudek Firma Microsoft od wielu lat wspiera programistów aplikacji mobilnych, dając im coraz nowsze i lepsze narzędzia. Z roku na rok programiści mają dostęp do większej ilości zasobów urządzeń mobilnych, a prostota, z jaką można tworzyć takowe aplikacje w chwili obecnej, nie odstrasza już nowych adeptów tej sztuki. 46 MS SQL SERVER CE 3.5 Jak wykorzystać w swojej aplikacji silnik SQL Servera CE 3.5. Łukasz Strąk Dzięki nowej wersji SQL Servera CE możesz zarządzać danymi poprzez zapytania bez konieczności instalacji dodatkowych usług i bez dostępu do Internetu. Ułatwia to dystrybucję oprogramowania. W artykule znajdziesz informacje, które pozwolą Ci rozpocząć pisanie aplikacji wykorzystujących SQL Server CE. 56 Moc pod kontrolą Efektywne zarządzanie zasilaniem w aplikacjach dla systemu Windows Mobile Marian Witkowski Odwiecznym problemem i wyzwaniem dla konstruktorów urządzeń mobilnych była możliwość ich długiej pracy z wykorzysta- 6 SDJ Extra 34 Biblia

7 Miesięcznik Software Developer s Journal (12 numerów w roku) jest wydawany przez Software Press Sp. z o.o. SK niem zasilania bateryjnego. Cel ten został w dużej mierze osiągnięty, ale mimo wszystko źle napisana aplikacja potrafi zmusić użytkownika do częstszego używania ładowarki. Dyrektor wydawniczy: Anna Adamczyk Redaktor naczelny: Łukasz Łopuszański Redaktor prowadzący: Rafał Kocisz PROGRAMOWANIE SYMBIAN OS 62 Obsługa akcelerometru na platformie Series60 Wykorzystaj w pełni możliwości telefonu komórkowego! Rafał Kocisz, Wojciech Gasek Akcelerometr, bądź inaczej sensor ruchu, od stosunkowo niedawna jest wykorzystywany jako rozszerzenie technologicznych możliwości nowoczesnych telefonów komórkowych. Artykuł pokazuje, jak oprogramować akcelerometr w aplikacjach Symbian OS, działających na platformie S60, oraz jak w praktyce wykorzystać potencjał tego urządzenia. 78 SDL na Symbianie Cztery porty Bartosz Taudul W jaki sposób można wykorzystać jedną z najlepszych i najszerzej wykorzystywanych bibliotek ułatwiających tworzenie gier? Czy jest dostępna jej implementacja na Symbiana? Na co należy zwrócić szczególną uwagę podczas jej użytkowania? Odpowiedzi na wszystkie te pytania (i nie tylko) znajdują się w artykule. PROGRAMOWANIE ANDROID 90 Android Market bliżej dewelopera Stworzenie aplikacji to dopiero początek. Dowiedz się, jak ją sprzedać! Adam Skrzyszewski Głównym zmartwieniem deweloperów planujących sprzedaż swoich programów jest dotarcie do odpowiedniej grupy odbiorców. Android Market, jako oficjalna platforma dystrybucyjna, zakłada nieograniczony dostęp do wszystkich posiadaczy urządzeń z oprogramowaniem Google. Czy zastanawiałeś się, jak wykorzystać ten ogromny potencjał? 98 Android na przykładzie: geotagging zdjęć Praktyczne wykorzystanie najciekawszych funkcji mobilnej platformy firmy Google Piotr Buła Android to nowa, otwarta platforma mobilna od Google. W artykule przedstawiono ciekawsze jej możliwości, na przykładzie aplikacji umożliwiającej geotagging zdjęć wykonanych za pomocą telefonu komórkowego opartego na tej platformie. Korekta: Tomasz Łopuszański Projekt okładki: Agnieszka Marchocka Monika Grotkowska Skład i łamanie: Monika Grotkowska Tomasz Kostro Dział produkcji i kolportażu: Alina Stebakow Kierownik produkcji: Andrzej Kuca Nakład: egz. Adres korespondencyjny: Software Press Sp. z o.o. SK, ul. Bokserska 1, Warszawa, Polska tel , fax Dział reklamy: Obsługa prenumeraty: EuroPress Polska Dołączoną do magazynu płytę DVD przetestowano programem AntiVirenKit firmy G DATA Software Sp. z o.o. 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. Uszkodzone podczas wysyłki płyty wymienia redakcja. Wszystkie znaki firmowe zawarte w piśmie są własności odpowiednich firm. Zostały użyte wyłącznie w celach informacyjnych. Redakcja używa systemu automatycznego składu Osoby zainteresowane współpracą prosimy o kontakt: Druk: ArtDruk Wysokość nakładu obejmuje również dodruki. Redakcja nie udziela pomocy technicznej w instalowaniu i użytkowaniu programów zamieszczonych na płycie DVD dostarczonej razem z pismem. Sprzedaż aktualnych lub archiwalnych numerów pisma po innej cenie niż wydrukowana na okładce bez zgody wydawcy jest działaniem na jego szkodę i skutkuje odpowiedzialnością sądową. 7

8 SDJ Extra 34 Biblia 118 Google Android Programowanie z wykorzystaniem Google Maps Igor Kruk W artykule JME MIDlet Przelicznik walut na podstawie kursów NBP opisuje architekturę JME oraz prezentuje sposób, w jaki można rozpocząć przygodę z programowaniem z wykorzystaniem tej technologii. Artykuł poświęcony jest platformie Android, na której można tworzyć zaawansowane aplikacje m.in. z wykorzystaniem Google Maps. 124 Google Android Programowanie interfejsu użytkownika pod Android OS Tomasz Milczarek Artykuł jest wprowadzeniem do programowania interfejsu użytkownika (UI User Interface) na platformie Google Android. Omawia podstawowe komponenty interfejsu i sposoby rozmieszczania ich na ekranie. Przedstawia również tworzenie formularzy, przenoszenie danych między formularzami oraz interakcję między różnymi ekranami użytkownika. PROGRAMOWANIE JAVAME 148 JME na przykładzie Przelicznik walut na podstawie kursów NBP Igor Kruk Jeszcze kilka lat temu obsługa technologii Java była informacją, która miała zachęcić do zakupu telefonu komórkowego. Przez tych kilka lat nastąpił znaczny rozwój komórek i choć obecnie większość z nich posiada własny system operacyjny i nie służą już tylko do wykonywania rozmów i przesyłania wiadomości, to technologia JME jest nadal popularna. 154 Klasyczna platformówka na komórkę Piszemy grę bazującą na platformie Java Micro Edition Cezariusz Klonkowski Tworzenie każdej gry, nawet najprostszej, łączy w sobie wiele wyzwań, z którymi musi uporać się programista. Tworzenie aplikacji dla platformy mobilnej niesie dodatkowe problemy. Jednak satysfakcja z napisania własnej, nawet bardzo prostej gry na telefon komórkowy, jest bezcenna! Jeśli chciałbyś poczuć taką satysfakcję, to przeczytaj ten artykuł. PROGRAMOWANIE IPHONE OS 132 Poznajemy iphone SDK Pierwsze kroki Tomasz Dubki Nikt nie zaprzeczy, że jednym z najpopularniejszych urządzeń mobilnych ostatnich 12 miesięcy jest iphone. Doskonały wygląd zewnętrzny, przejrzysty graficzny interfejs użytkownika oraz bogata funkcjonalność to tylko niektóre jego cechy. W niniejszym artykule przedstawimy to urządzenie z punktu widzenia programisty. 140 Objective-C kontra Java i C++ Wprowadzenie do języka Rafał Kocisz Java i C++ panują niepodzielnie w działce technologii mobilnych. Język Objective-C jest stosunkowo nowym graczem na tym rynku, stoi jednak za nim potężna marketingowa siła platformy Apple iphone/ itouch. Niniejszy artykuł zawiera szybkie wprowadzenie do Objective-C oraz porównanie jego możliwoci z językami Java i C Testowanie aplikacji na platformie JME Zbieranie informacji debugowych w ograniczonym środowisku uruchomieniowym Marcin Maciejewski ROZWIĄZANIA MOBILNE 172 Lotus Notes Traveler Andrzej Olsztyński W tym roku, zgodnie z danymi IBM, po raz pierwszy w historii, więcej ludzi na świecie będzie miało telefon komórkowy niż stacjonarny. Wiele produktów IBM jest dostępnych na platformach mobilnych. Ostatnim ważnym wydarzeniem w tym zakresie było wprowadzenie oprogramowania Lotus Notes Domino, czyli pakietu IBM do pracy grupowej na iphone. 8 SDJ Extra 34 Biblia

9 178 Stary software nowa platforma Kamil Kowalski, Artur Chruściel W jednym z numerów SDJ (2/2009) przybliżyliśmy profil prac zespołu zajmującego się rozwojem oprogramowania dla radiotelefonów systemu TETRA w krakowskim centrum Motoroli. Dziś przyjrzymy się problemom, przed którymi stanęliśmy w ostatnich latach w związku z migracją na nowe platformy sprzętowe. 182 Oracle SPATIAL Opis podstawowych funkcjonalności opcji Oracle SPATIAL dedykowanej dla systemów GIS Tomasz Murtaś Poprzez opcję SPATIAL baza danych zyskuje możliwość zarządzania danymi o charakterze przestrzennym. To zupełnie nowy wymiar pozwalający jeszcze precyzyjniej odwzorowywać rzeczywistość, modelować dane i analizować zależności. 186 Wzorce projektowe w Java Card Leszek Siwik, Krzysztof Lewandowski, Adam Woś Tworzenie oprogramowania wymaga starannego projektu i dużej dokładności. Platforma Java Card do tej pory pozostawała swego rodzaju skansenem, gdzie szeroko akceptowany był kod, który w innych obszarach byłby absolutnie nieakceptowalny. Z pewnością warto więc poświęcić czas na zapoznanie się z dobrymi praktykami projektowania i programowania 206 Flash Lite Grzegorz Trubiłowicz, Mateusz Pietrek, Karol Bednarz Flash Lite pomimo kilku lat na rynkach całego świata nadal pozostaje nieodkrytym środowiskiem. Jest to jednak rozwiązanie dające ogromne możliwości, dlatego warto się mu bliżej przyjrzeć. FELIETONY 214 Raport większości Arkadiusz Merta Technologie mobilne otwierają nowe możliwości być może jeszcze bardziej rewolucyjne niż zjawisko Internetu. W odróżnieniu od Sieci tort jest dzielony na innych zasadach, i to przez znacznie większą ilość graczy. 217 Ruch jest wszystkim [cel niczym] Arkadiusz Merta Co napędza rozwój technologi mobilnych? Czy to nasze potrzeby, czy potrzeba zwiększenia naszej efektywności. 192 Open GL ES 1.x Fakty i mity Krystian Kostecki Programowanie aplikacji na urządzenia przenośne jest fascynującym zajęciem. Dodanie im trzeciego wymiaru sprawia jeszcze większą satysfakcję. Czy tworzenie efektownej, ale i wydajnej grafiki na te malutkie urządzenia nie jest abstrakcją lub mitem? Jak wykorzystać moc krzemu, który mieści się w dłoni? Czy można wierzyć standardom? Oceńcie sami. 9

10 Opis CD Kursy WINDOWS MOBILE Kurs podstaw tworzenia aplikacji na Windows Mobile (kurs w języku angielskim). Szkolenie zostało podzielone na 7 działów: wprowadzenie emulatory podstawy programowania aplikacji okienkowych zaawansowane aplikacje Windows Forms wykorzystanie baz danych bezpieczeństwo programowanie mobilnych aplikacji internetowych W każdym z działów możemy wybrać jaki sposób podania tych samych zagadnień jest dla nas najwygodniejszy dokument, laboratoria hands-on-lab, webcast z prezentacją czy screencast z kodem. Mobile development is growing fast, and Windows Mobile is at the forefront with over 18 million phones shipped last year and many more cutting-edge devices on the way. Visual Studio developers have tremendous opportunities in this space. Why? Developing for a Windows Mobile phone leverages your existing coding experience and takes it to new heights. In this track, we ll go through the fundamentals of building mobile applications. You ll learn how to set up Visual Studio with the latest SDK and device emulators, and you ll see how to build, deploy and debug applications. We ll also explore AJAX capabilities that offer the richness of the desktop for mobile devices. Level 1: Mobile Development Introduction Level 2: Device Emulators Level 3: Mobile Windows Forms Development Level 4: Advanced Mobile Windows Forms Development Level 5: SQL Server CE Introduction Level 6: Security and Deployment Level 7: Mobile Web Development Google Android Programowanie interfejsu użytkownika pod Android OS Screencast jest wprowadzeniem do programowania interfejsu użytkownika (UI User Interface) na platformie Google Android. Omawia podstawowe komponenty interfejsu i sposoby rozmieszczania ich na ekranie. Przedstawia również tworzenie formularzy, przenoszenie danych między formularzami oraz interakcję między różnymi ekranami użytkownika Google Android charakteryzuje się bogatym zestawem komponentów pozwalającym na realizację nawet najbardziej skomplikowanych interfejsów. W przypadku developerów niezbyt zadowolonych ze standardowej biblioteki, zawsze pozostaje możliwość rozszerzania istniejących już komponentów. Z racji tego, że Android tworzony jest przez firmę Google, istnieje łatwy dostęp do takich komponentów jak MapView czy WebView, umożliwiających korzystanie w tworzonych aplikacjach z Google Maps oraz pozwalających na łatwe przeglądanie zawartości Internetu. To znacznie poszerza krąg pomysłów na aplikacje, już na starcie pozwala uczynić je bardziej ciekawymi i konkurencyjnymi. Można sądzić, że powyższe zalety (prostota tworzenia interfejsów, duży wybór komponentów, łatwe wykorzystanie Google Maps i Internetu) spowodują, że Android OS umocni swoją pozycję w świecie platform programistycznych na urządzenia mobilne. Dzięki temu tutorialowi dowiesz się, jak poprawnie rozmieścić komponenty komponenty użytkownika na ekranie, jak tworzyć poszczególne widgety, jak ekrany użytkownika współpracują ze sobą. Pierwsza część screencasta stanowi omówienie idei stojącej za powstaniem Google Android OS, podstawowych zasad, które przyjęli twórcy tego systemu oraz przedstawiona jest jego architektura. Omówione zostały typowe kontrolki i ich zastosowanie. Druga część screencasta przedstawia przykład tworzonej aplikacji realizującej wykresy biorytmów. Tworzenie aplikacji zostało pokazane w następujących krokach: tworzenie nowego projektu w środowisku Eclipse ADT (Android Development Toolkit); konfiguracja projektu; tworzenie podstawowej klasy akcji; tworzenie layoutu; definiowanie widoków w plikach XML; oprogramowywanie kontrolek; oprogramowywanie zdarzeń w Google Android; interakcja pomiędzy kontrolkami a klasą typu Activity; stworzenie przejścia między dwoma ekranami użytkownika; przesyłanie danych między ekranami; stworzenie własnego widoku. Narzędzia Windows Mobile 6.5 Developer Toolkit Wydana na początku czerwca 2009 dokumentacja, przykładowy kod, nagłówki, biblioteki oraz emulatory do najnowszej wersji systemu Windows Mobile 6.5. Dostępne są dwie wersje w zależności od tego czy interesuje nas pisanie aplikacji dla systemu Windows Mobile Professional czy Standard. 10 SDJ Extra 34 Biblia

11 Opis CD Toolkit wymaga instalacji Windows Mobile 6 SDK (do pobrania bezpłatnie ze stron Microsoftu). Aplikacje Consumer Solution Accelerator Consumer Solution Accelerator jest wzorcową aplikacją dla Windows Mobile napisaną w językach C# i C++, w oparciu o.net Compact Framework 3.5. Aplikacja ma na celu ułatwić użytkownikowi dotarcie na spotkanie prezentuje mapy wykorzystując nawigację GPS, szacuje czas przejazdu, informuje uczestników spotkania w razie ewentualnego spóźnienia. Wraz z kodem aplikacji czytelnicy otrzymują zestaw dokumentów opisujących krok po kroku poszczególne etapy tworzenia danej aplikacji. Od wprowadzenia, przez dobór architektury aż po dodawanie do projektu kolejnych elementów kodu. Czytelnicy mogą sami stworzyć aplikacje na podstawie dokumentów lub uczyć się przez czytanie gotowego kodu. Materiały dodatkowe do artykułów Redakcja nie udziela pomocy technicznej w instalowaniu i użytkowaniu programów zamieszczonych na płytach CD-ROM dostarczonych razem z pismem. Jeśli nie możesz odczytać zawartości płyty CD, a nie jest ona uszkodzona mechanicznie, sprawdź ją na co najmniej dwóch napędach CD. W razie problemów z płytą, prosimy pisać pod adres: 11

12 Programowanie Windows Mobile RIL API w sercu telefonu Radio Interface Layer (RIL) jest kluczowym elementem odpowiadającym za komunikacje pomiędzy systemem Windows Mobile a siecią GSM. W środowisku programistów WM panuje opinia, że API do obsługi RIL jest niejasne i trudne w użyciu. W tym artykule postaram się pokazać, że jak powiada przysłowie nie taki diabeł straszny jak go malują. Dowiesz się: Czym jest Radio Interface Layer; Jak używać RIL API; W jaki sposób stworzyć serwis systemowy Windows Mobile; W jaki sposób korzystać z rejestrów systemu Windows Mobile. Poziom trudności Powinieneś wiedzieć: Jak programować w języku C++; Podstawy WINAPI. Pamiętam jakby to było wczoraj: dostałem do analizy kod źródłowy, należało stwierdzić, czy flow programu jest zgodny z przyjętą koncepcją. Kod ani długi, ani krótki, zadanie wydawało się więc proste, i uznałem, że to nagroda za wcześniejszy okres wytężonej pracy... Kilka godzin i kaw, później niebezpiecznie blisko zbliżyłem się do granicy załamania nerwowego, a moje myśli skakały pomiędzy planem zamachu na osobę, która wymyśliła, że wszystko dzieje się asynchronicznie, a rozważaniami na temat sposobów na skrócenie swoich cierpień. Tak właśnie wyglądał mój pierwszy kontakt z RIL'em. Niestety, a może właśnie stety od tamtego czasu nader często przyszło mi pracować w oparciu o wspomniane API. Swoimi doświadczeniami postaram się podzielić w tym artykule, a ponieważ w moim odczuciu najlepiej uczyć się na bazie przykładów, dlatego też, aby zobrazować podstawowe mechanizmy, pokażę Ci drogi czytelniku, jak stworzyć prostą aplikację, która pozwoli na blokowanie połączeń telefonicznych, a dodatkowo wyśle informacyjnego SMS'a do osoby, która próbowała się z Tobą skontaktować. Ale po kolei... Wiem, że najchętniej uruchomiłbyś IDE i zaczął pisać kod, na początek warto jednak powiedzieć słów kilka o tym, czym jest RIL. Pomyśl teraz chwilę o urządzeniach z systemem Windows Mobile można wymienić dwie ich główne linie rozwojowe. Po pierwsze są to urządzenia klasy PDA (ostatnimi czasy na wymarciu), z drugiej zaś strony urządzenia, które można sklasyfikować jako tzw. Smartphony. Jaka jest pomiędzy nimi różnica? Oczywiście te drugie pozwalają na szeroko rozumianą komunikację pomiędzy urządzeniem a siecią GSM/UMTS. I tu na scenę wchodzi właśnie RIL (Radio Interface Layer). Mówiąc o RIL, mamy na myśli pewne warstwy abstrakcji, które oddzielają sprzęt od systemu myślę, że jak najbardziej będzie tu na miejscu porównanie do sieciowego modelu OSI zostało to pokazane na Rysunku 1. Na samym szczycie hierarchii mamy aplikacje wchodzące w bezpośrednią komunikację z użytkownikiem i dostarczające mu funkcjonalność związaną z telefoniczną stroną urządzeń z WM (zauważ, że pod pojęciem OEM nie kryją się tylko aplikacje dostarczane przez producenta telefonu, ale również twoje). Szczebel niżej kryje się tzw. RIL Proxy to właśnie z nim będziesz miał do czynienia, tworząc aplikacje oparte o Radio Interface Layer. Wywołując funkcje wchodzące w skład RIL API, tak naprawdę wysyłasz zapytania do Proxy, w odpowiedzi otrzymując wyniki. RIL Proxy tłumaczy twoje zapytania na odpowiednie polecenia typu DeviceIOControl, i wysyła je do sterownika modemu (radia). Następnie te polecenia tłumaczone są na komendy AT, które wędrują do urządzenia, by tam zostać odpowiednio przetworzone. Taka architektura ma wiele zalet. Po pierwsze wymaga na producentach sprzętu radiowego stworzenie sterowników w taki sposób, aby były kompatybilne z RIL API- (jak już wspomniałem, cała komunikacja w systemie WM jest oparta właśnie o RIL'a). To z kolei pozwala producentom telefonów na wybór szerokiej gamy podzespołów, bez przejmowania się narzutem czasu niezbędnym do wypuszczenia produktu na rynek. Inną zaletą jest fakt asynchroniczności do- RIL: Szybki start Aby tworzyć aplikacje w oparciu o RIL API, musisz mieć dostęp do symboli znajdujących się w pliku RIL.DLL na urządzeniu. Można go uzyskać w sposób dwojaki. Pierwszą drogą jest użycie funkcji LoadLibrary, a następnie zmapowanie potrzebnych symboli. Innym rozwiązaniem jest dołączenie do projektu statycznej biblioteki RIL.LIB oraz załączenie pliku nagłówkowego RIL.H. Ponieważ pliki te nie wchodzą w skład Windows Mobile SDK, konieczne jest zdobycie ich z innych źródeł. Microsoft dołącza je do OEM Adaptation Kit(OAK) zestawu bibliotek i plików nagłówkowych przeznaczonych do współpracy z pakietem Platform Builder. Niezbędne pliki można również pobrać z tej strony: ~itsme/projects/xda/ril.html. Przed kompilacją musisz pamiętać, aby do dodatkowych bibliotek linkera dodać bibliotekę RIL.LIB. 12 SDJ Extra 34 Biblia

13 RIL API w sercu telefonu stępu do sprzętu pozwala to na uniknięcie sytuacji, w której jedna aplikacja zawłaszcza modem, odcinając dostęp do niego pozostałej części systemu. Do 2004 roku RIL API przeznaczone było do wewnętrznego użytku Microsoftu, a nawet po tej dacie Microsoft zalecał, aby używać API takich jak TAPI, SMS API, SIM API... Ostatnio jednak certyfikowany trener Microsoftu stwierdził, że to podejście jest już nieaktualne, i gigant z Redmond poprosił swoich trenerów, aby spopularyzowali bezpośrednie korzystanie z Radio Interface Layer. Jakie może to Tobie, jako programiście, przynieść korzyści? Po pierwsze może się to przyczynić do wzrostu wydajności Twojej aplikacji(wszystkie wspomniane powyżej API są tylko wrapperami na RIL). Po drugie wydaje mi się, że każdy, kto był zmuszony do pracy z chociażby z TAPI, doceni prostotę RIL. Kolejnym argumentem jest to, że przy użyciu jednego API jest się w stanie kontrolować całość telefonicznej strony systemu. Pozwala to zaoszczędzić czas, zostaje bowiem zdjęta z programisty konieczność przyswajania wielu różniących się architekturami metod dostępu do poszczególnych funkcji. Mimo że RIL API zostało upublicznione, to jednak pliki nagłówkowe nie są niestety dołączone do Windows Mobile SDK. Aby dowiedzieć się skąd je zdobyć oraz jak zacząć pracę, spójrz proszę do ramki RIL: Szybki Start. Najtrudniejszy pierwszy krok Spójrzmy na aplikację okiem przysłowiowego Kowalskiego. Przeciętny użytkownik nie jest świadom tego, jak wiele skomplikowanych działań podejmowanych jest za tzw. frontendem dla niego aplikacja jest tożsama z tym, co może zobaczyć na wyświetlaczu. W tym artykule skupię się jednak na tym, co się dzieje w tle programowanie interfejsu użytkownika pozostawiając innym autorom. Aby jednak nie stawiać Cię przed koniecznością ręcznego edytowania rejestrów (dlaczego właśnie rejestrów, niech pozostanie jeszcze przez chwilę tajemnicą), stworzyłem bardzo prostą aplikację, której ekran można zobaczyć na Rysunku 2 (kod aplikacji znajduje się na płycie DVD). Aplikacja ta daleka jest od doskonałości i przewidziana jest do użytku na platformie WM Professional, wydaje mi się jednak, że stanowić będzie dobry starter do dalszych działań. We wstępie określiliśmy mniej więcej, co będzie robić nasza aplikacja. Pora zastanowić się teraz nad znalezieniem odpowiedzi na pytanie jak? na to pytanie odpowiadać będziemy krok po kroku, w myśl zasady po nitce do kłębka. Rejestry systemowe Rozpocznijmy od znalezienia sposobu na zapisywanie konfiguracji naszej aplikacji. Przez konfigurację będziemy tu rozumieć trzy rodzaje informacji. Po pierwsze czy nasza aplikacja powinna być aktualnie aktywna, czy nie? Po drugie czy powinniśmy odrzu- Rysunek 1. Schemat architektury RIL Rysunek 2. Przykładowy interfejs użytkownika Rejestry Typy wartości REG _ SZ łańcuch tekstowy zakończony znakiem końca łańcucha( /0); REG _ EXPAND _ SZ łańcuch tekstowy zakończony znakiem końca łańcucha, zawierający w sobie zmienne środowiskowe(np. %PATH%); REG _ MULTI _ SZ seria łańcuchów tekstowych oddzielonych znakami końca łańcucha i zawierająca, zakończona podwójnym znakiem końca łańcucha; REG _ DWORD 4-bajtowa wartość binarna; REG _ BINARY dowolna wartość binarna; REG _ DWORD _ BIG _ ENDIAN wartość typu DWORD przechowywana w formacie big endian; REG _ DWORD _ LITTLE _ ENDIAN to samo co REG_DWORD; REG _ LINK łącze symboliczne; REG _ NONE wartość nieokreślona; REG _ RESOURCE _ LIST lista zasobów sterownika. 13

14 Programowanie Windows Mobile Listing 1. RegistryHelper.h #ifndef _REGISTRYHELPER_H_ #define _REGISTRYHELPER_H_ #define MAX_BLOCKED_NUM 40 #define MAX_TEXT_LENGTH 256 #define MESSAGE_BUFFER_SIZE 161 #define SOFTWARE_KEY #define MESSAGE_VALUE #define REJECT_ALL_CALLS_VALUE cać wszystkie przychodzące połączenia? Po trzecie jeśli nie mamy odrzucać wszystkich połączeń, to czy są takie numery, które powinniśmy blokować? W ramach konfiguracji musimy również uwzględnić treść wiadomości SMS, która zostanie przesłana do odrzuconego numeru, jak również liczbę numerów, które będziemy blokować(tak dla ułatwienia sobie życia). Zastanówmy się, w jaki sposób taką konfigurację możemy przechowywać? Pierwsze instynktownie nasuwające się rozwiązanie to zapisywanie jej w pliku. Historia zapisywania konfiguracji w plikach ma długą tradycję. Kiedyś aplikacje z PC-towych wersji Windowsa używały do tego celu plików INI. Osobiście uważam, że jeśli chodzi o konfigurację opartą o pliki doskonale sprawdza się format XML, jednak z powodu braku natywnego wsparcia dla tego formatu, ta droga wydaje się zbyt pracochłonna. Na szczęście system Windows Mobile- (podobnie jak i inne systemy z rodziny Windows) dostarcza bardzo przyzwoity system przechowywania konfiguracji są to rejestry systemowe. Rejestry można traktować jako pewien rodzaj bazy danych, zawierającej zbiór kluczy i wartości, przy czym klucze mogą zawierać w sobie zarówno inne klucze, jak i wartości. W ten sposób tworzy się drzewiasta struktura, która w swoich liściach zawiera konkretne wartości, a klucze stanowią ich gałęzie. Od korzenia tego drzewa odchodzą trzy główne pnie: HKEY_LOCAL_MACHINE, HKEY_ CURRENT_USER, oraz HKEY_CLASSES_ROOT. L"\\Software\\SDJ\\CallRejecter" L"Message" L"RejectAllCalls" #define BLOCKED_LIST_VALUE L"BlockedList" #define ACTIVATE_SERVICE_VALUE typedef struct callrejectersettings_tag DWORD dwactivateservice; DWORD dwblockall; DWORD dwblockedcount; TCHAR tcmessage[message_buffer_size]; L"ActivateService" TCHAR tcblockedlist[max_blocked_num][max_text_length]; CALLREJECTERSETTINGS, *LPCALLREJECTERSETTINGS; VOID ConvertToStringsArray(TCHAR lpszoutput[][max_text_length],lptstr lpszinput,lpdword lpdwcount); VOID ConvertToRegMultiSz(LPTSTR lpszoutput,tchar lpszinput[][max_text_length],dword ncount); DWORD CalculateRegMultiSzSize(TCHAR lpszinput[][max_text_length], DWORD ncount); BOOL SetDwordValue(DWORD dwvalue,lptstr lpszkey, LPTSTR lpszvalueid); BOOL SetSzValue(TCHAR lpszvalue[message_buffer_size],lptstr lpszkey, LPTSTR lpszvalueid); BOOL SetMultiSzValue(TCHAR lpszvalue[][max_text_length],dword ncount,lptstr lpszkey,lptstr lpszvalueid); BOOL GetDwordValue(LPDWORD lpdwvalue,lptstr lpszkey,lptstr lpszvalueid); BOOL GetMultiSzValue(TCHAR lpszvalue[][max_text_length],lpdword lpdwcount,lptstr lpszkey,lptstr lpszvalueid); BOOL GetSzValue(TCHAR lpszvalue[message_buffer_size],lptstr lpszkey,lptstr lpszvalueid); BOOL ReadSettings(LPCALLREJECTERSETTINGS lpcrssettings); BOOL SaveSettings(CALLREJECTERSETTINGS crcsettings); #endif Pierwszy przechowuje konfigurację sprzętową oraz ustawienia aplikacji, drugi jak wskazuje nazwa przechowuje dane specyficzne dla użytkownika, a ostatni informacje na temat skojarzeń plików i obiektów OLE. Ważną zaletą rejestrów jest to, że ich zawartość zostaje zachowana po restarcie urządzenia. Oczywiście nie należy umieszczać wartości gdziekolwiek wprowadziłoby to tylko bałagan i utrudniło ewentualne analizy. Zwyczajowo przyjęło się umieszczać konfigurację aplikacji w następującej ścieżce rejestru: HKEY_LOCAL_MACHINE\ Software\Nazwa firmy\nazwa aplikacji. Tak też uczynimy i my. Jako nazwę firmy przyjmiemy SDJ, a jako nazwę aplikacji CallRejecter. Rejestry mogą przechowywać wartości różnego typu, od wartości liczbowych typu DWORD, przez łańcuchy tekstowe, aż po wartości binarnych(uprasza się jednak, aby nie próbować tam wpychać obrazków czy innych plików binarnych). Lista możliwych typów wartości została przedstawiona w ramce Rejestry typy wartości. Należy w tym miejscu jeszcze wspomnieć o kilku zasadach, którymi powinno się kierować, dodając do rejestru własne klucze i wartości (ma to znaczący wpływ na wydajność dostępu do rejestrów): należy sprawić, by struktura zagnieżdżonych kluczy była tak płytka, jak to tylko możliwe; zamiast zagnieżdżonych kluczy, jeśli to tylko możliwe, należy używać wartości; jedna wartość powinna przechowywać tak wiele informacji, jak to tylko możliwe(np. jeśli będziemy posiadać wartości dotyczące czasu i daty warto rozważyć połączenie ich w jedną wartość. Samo dostarczenie odpowiednio sformatowanej struktury, pozwalającej na grupowanie różnych informacji, na niewiele by się zdało, gdyby nie funkcje pozwalające operować na rejestrach. Do podstawowych operacji wystarczy używać czterech podstawowych funkcji: RegCreateKeyEx, RegQueryValueEx. RegSetValueEx, RegCloseKey. Pierwsza z nich tworzy klucz lub, jeśli ten istnieje otwiera go. Aby używać dwóch kolejnych funkcji (odpowiednio: odczyt i zapis wartości), należy podać uchwyt do klucza zwrócony przez pierwszą funkcję. Po zakończeniu operacji na kluczu należy zamknąć uchwyt do niego przy użyciu ostatniej z funkcji. Oczywiście zbiór funkcji służących operacjom na rejestrach jest obszerniejszy(patrz odnośnik w ramce W Sieci). Tutaj wyjaśniono jedynie te najczęściej stosowane. 14 SDJ Extra 34 Biblia

15 RIL API w sercu telefonu Listing 2. RegistryHelper.cpp (Wycinek) #include "stdafx.h" #include <windows.h> #include "RegistryHelper.h" BOOL ReadSettings(LPCALLREJECTERSETTINGS lpcrssettings) memset(lpcrssettings,0,sizeof(callrejectersettings)); if (!GetDwordValue(&(lpcrsSettings->dwActivateService),SO FTWARE_KEY,ACTIVATE_SERVICE_VALUE)) return FALSE; if (!GetDwordValue(&(lpcrsSettings->dwBlockAll),SOFTWARE_ KEY,REJECT_ALL_CALLS_VALUE)) return FALSE; if (!GetSzValue(lpcrsSettings->tcMessage,SOFTWARE_ KEY,MESSAGE_VALUE)) return FALSE; if (!GetMultiSzValue(lpcrsSettings->tcBlockedList,&(lpcr ssettings->dwblockedcount),software_ KEY,BLOCKED_LIST_VALUE)) return FALSE; return TRUE; BOOL SaveSettings(CALLREJECTERSETTINGS crssettings) if(!setdwordvalue(crssettings.dwblockall,software_ KEY,REJECT_ALL_CALLS_VALUE)) return FALSE; if(!setdwordvalue(crssettings.dwactivateservice,software _KEY,ACTIVATE_SERVICE_VALUE)) return FALSE; if(!setszvalue(crssettings.tcmessage,software_ KEY,MESSAGE_VALUE)) return FALSE; if(!setmultiszvalue(crssettings.tcblockedlist,crssettings.dwblockedcount,software_key,blocked_ LIST_VALUE)) return FALSE; return TRUE; BOOL GetDwordValue(LPDWORD lpdwvalue,lptstr lpszkey,lptstr lpszvalueid) BOOL bresult = FALSE; HKEY hkey; DWORD dwdisposition; DWORD dwtype; DWORD dwsize; DWORD dwrejectallcalls; if(error_success == RegCreateKeyEx(HKEY_LOCAL_MACHINE, lpszkey,0, NULL, 0, 0, NULL, &hkey, &dwdisposition)) dwtype = 0; dwsize = 0; if (ERROR_SUCCESS == RegQueryValueEx(hkey, lpszvalueid, 0, &dwtype, NULL, &dwsize)) if ((REG_DWORD == dwtype)&&(dwsize>0)) dwrejectallcalls=0; if (ERROR_SUCCESS == RegQueryValueEx(hkey, lpszvalueid, 0, &dwtype, reinterpret_cast<lpbyte>(&dwrejectall Calls), &dwsize)) *lpdwvalue=dwrejectallcalls; bresult = TRUE; RegCloseKey(hkey); return bresult; BOOL SetDwordValue(DWORD dwvalue,lptstr lpszkey, LPTSTR lpszvalueid) BOOL bresult = FALSE; HKEY hkey; DWORD dwdisposition; DWORD dwtype; DWORD dwsize; DWORD dwrejectallcalls; if(error_success == RegCreateKeyEx(HKEY_LOCAL_MACHINE, lpszkey, 0, NULL, 0, 0, NULL, &hkey, &dwdisposition)) dwtype = REG_DWORD; dwrejectallcalls=dwvalue; dwsize = sizeof(dword); if (ERROR_SUCCESS == RegSetValueEx(hkey, lpszvalueid, 0, dwtype, reinterpret_cast<lpbyte>(& dwrejectallcalls), dwsize)) bresult=true; RegCloseKey(hkey); return bresult; 15

16 Programowanie Windows Mobile Na Listingach 1 i 2 przedstawiony został fragment kodu wrappera, który posłuży nam do zapisywania/odczytywania ustawień naszej aplikacji. Kod na listingu drugim jest niekompletny, przedstawione zostały jedynie funkcje związane z odczytem/ zapisem wartości typu REG_DWORD(przez analogie łatwo jest dopisać funkcje dla pozostałych typów wartości). Dodatkowo umieszczone na Listingu 2 zostały funkcje czytające/zapisujące całość naszych ustawień do/z struktury typu CALLREJECTERSETTINGS(zdefiniowanej na Listingu 1). Prześledźmy krok po kroku operacje odczytu(funkcja GetDwordValue) i zapisu(funkcja SetDwordValue) umieszczone na Listingu 2. Rozpocznijmy od tej drugiej. W pierwszym kroku staramy się otworzyć interesujący nas klucz: RegCreateKeyEx(HKEY_LOCAL_MACHINE, lpszkey, 0, NULL, 0, 0, NULL, &hkey, &dwdisposition)) Jako pierwszy parametr podajemy wartość klucza głównego, natomiast drugi to wartość podklucza. Gdybyśmy chcieli iterować od korzenia do konkretnej gałęzi drzewa, mysielibyśmy wywoływać tę funkcję tak długo, aż doszlibyśmy do interesującego nas klucza. Istnieje na szczęście prostszy sposób. Wystarczy podać jeden z kluczy głównych, a następnie ścieżkę prowadzącą bezpośrednio do interesującego nas klucza(w naszym przypadku będzie ona miała wartość(\software\sdj\callrejecter). Rysunek 3. Przykładowy wpis do rejestrów dotyczący usługi LgeCCoreDrv Wartości argumentów ustawionych na zero lub NULL, oraz ostatniego argumentu są mało istotne. Pod wartość hkey podstawiony zostanie uchwyt do klucza, o który wnioskowaliśmy (w naszym przypadku to będzie klucz CallRejecter). Następnie musimy zainicjalizować parametry, które przekażemy do funkcji: RegSetValueEx(hkey, lpszvalueid, 0, dwtype, reinterpret_cast<lpbyte>(&dwre jectallcalls), dwsize)). Funkcja ta przyjmuje wartość uchwytu do klucza, który pobraliśmy w poprzednim kroku, a następnie łańcuch określający nazwę wartości, którą chcemy ustawić. Kolejny argument jest zarezerwowany i musi być ustawiony na zero, następnie musimy podać typ wartości(dla tej konkretnej sytuacji będzie to REG_DWORD), a na końcu bufor, który zawiera wartość do zapisu. W ostatnim parametrze przekazujemy rozmiar bufora. Finalnym krokiem jest zwolnienie uchwytu do wcześniej pobranego klucza (RegCloseKey(hkey)). Jeśli teraz przyjrzysz się funkcjom odczytującym, zauważysz zapewne, że w zasadzie nie różnią się one znacząco. Jedyną różnicą (oprócz użycia funkcji RegQueryValueEx w miejsce funkcji RegSetValueEx) jest to, iż tym razem nie musimy inicjalizować konkretnymi wartościami zmiennych odpowiedzialnych za typ oraz rozmiar na konkretne wartości. O ile w przypadku wartości typu REG_DWORD rozmiar bufora będzie miał zawsze tę samą wartość (sizeof(dword), o tyle już w przypadku wartości typu REG_SZ lub REG_MUL- TI_SZ musimy wcześniej zaalokować odpowiednią ilość pamięci. W tym celu przy pierwszym użyciu dodajemy operację odczytu, w której zamiast wskaźnika na bufor, przekazujemy wartość NULL. W ten sposób dokonamy jedynie odczytu rozmiaru danej wartości (w bajtach) oraz jej typu. Serwisy systemowe Mając ustalony sposób, w jaki będziemy przechowywać ustawienia dla naszej aplikacji, wypadałoby zastanowić się, co będzie stanowiło jej szkielet. Jak już wspomniałem, chcielibyśmy, aby nasza aplikacja działała w trybie 24/7, czyli zawsze, kiedy uruchomione jest urządzenie. Możemy to zrobić na dwa sposoby. Pierwszym jest standardowa aplikacja, która po uruchomieniu będzie ustawiać się w tryb oczekiwania na nadejście odpowiednich komunikatów, a następnie umieścić ją w sekcji autostart urządzenia. Rozwiązanie to jest jednak mało eleganckie - nie powinno się tworzyć w ten sposób programów, które nie komunikują się bezpośrednio z użytkownikiem. Inżynierowie projektujący system Windows Mobile w celu realizacji zadań uruchamianych w tle dostarczyli programistom mechanizm w postaci tzw. serwisów systemowych, czyli aplikacji, które z założenia nie będą wchodzić w bezpośrednią interakcję z użytkownikiem na poziomie graficznym. Zadaniem serwisów jest monitorowanie stanu systemu i reagowanie na zmiany w nim zachodzące. W ten właśnie sposób zaprogramujemy postawione sobie zadanie. Serwisy (zwane też usługami) są realizowane w postaci dynamicznie łączonych bibliotek DLL ( jeśli nie wiesz jeszcze, w jaki sposób takie biblioteki tworzyć, spójrz proszę do ramki W sieci, jeden z linków prowadzi do artykułu na ten temat) ładowanych przez jeden z ważniejszych procesów systemowych Services.exe. Aż do wersji Windows CE 4.2.NET programiści w ce- Serwisy Rejestry Poniżej zamieszczony został zbiór możliwych wartości związanych z inicjalizacją serwisu przez proces Services.exe. W nawiasach podano typ danej wartości. Context (REG _ DWORD) wartość inicjalizująca przekazywana do procedury inicjalizacyjnej; Description (REG _ SZ) opis serwisu; DisplayName (REG _ SZ) nazwa serwisu; Dll (REG _ SZ) dynamicznie łączona biblioteka (DLL) zawierająca serwis; Flags (REG _ DWORD) określa zbiór flag używanych do modyfikacji zachowania funkcji ActivateServices. Oto poprawne wartości flag: DEVFLAGS _ NONE (0x ): brak określonych flag; DEVLFAGS _ UNLOAD (0x ): wyładuj serwis po powrocie z funkcji xxx _ Init; DEVFLAGS _ LOADLIBRARY (0x ): skorzystaj z funkcji LoadLibrary do załadowania pliku DLL usługi; DEVFLAGS _ NOLOAD (0x ): nie ładuj serwisu; DEVFLAGS _ TRUSTEDCALLERONLY (0x ) : serwis może być wywołany tylko przez zaufane procesy; Index (REG _ SZ) indeks (instancji serwisu); Keep (REG _ DWORD) jeśli ustawiony na 0, serwis zostanie wyładowany natychmiast po inicjalizacji; Order (REG _ DWORD) kolejność, w jakiej ładowane są serwisy, serwis o najniższej wartości ładowany jest w pierwszej kolejności; Prefix (REG _ SZ) trzyliterowy prefiks definiujący usługę wraz z wartością indeksu pozwala na odwołanie się do konkretnej instancji serwisu. 16 SDJ Extra 34 Biblia

17 RIL API w sercu telefonu lu realizacji zadań serwisów zmuszeni byli używać systemu sterowników dopiero w tej wersji pojęcie to zostało wprowadzone do rodziny CE. W związku z tymi zaszłościami historycznymi usługi odziedziczyły po sterownikach pewne cechy, jak np. punkty wejścia, lub również trzyliterowy prefiks, który wraz z numerem instancji serwisu służy do pobrania uchwytu. Skąd jednak zarządca serwisów systemowych wie, że dany serwis ma zostać załadowany? I czy samo załadowanie serwisu do pamięci oznacza, że będzie on działał? Odpowiem w pierwszej kolejności na pytanie drugie: nie, sama obecność usługi w pamięci nie oznacza jej działania (oczywiście w sensie spełniania funkcji, dla której serwis został stworzony, w dalszym ciągu serwis jest gotowy do odbierania komunikatów od procesu Services.exe). Dlaczego? Otóż dlatego, że serwis może znajdować się w kilku stanach: może być uruchomiony lub też wstrzymany, dochodzi do tego jeszcze kilka mniej istotnych stanów. Wróćmy więc do pierwszego pytania. Spójrz proszę na Rysunek 3. Przedstawiony tam został wycinek systemowych rejestrów zawierający wpisy dla usługi LgeCCoreDrv. Znajdują się tam informacje na temat wszystkich ważnych właściwości związanych z inicjalizacją serwisu (spójrz na ramkę Serwisy rejestry). Jeśli podobny wpis dodasz do rejestru dla swojego serwisu (w ścieżce HKEY_LOCAL_MACHINE\Services\ Nazwa serwisu), wówczas zostanie on załadowany wraz ze startem systemu (pamiętaj jednak, że załadowany to nie to samo, co uruchomiony). Innym sposobem na załadowanie serwisu bez konieczności tworzenia wpisu w rejestrze jest użycie funkcji RegisterService (jest ona zdefiniowana w pliku nagłówkowym Services.h). Jest jeszcze trzecia droga łącząca zalety obydwu rozwiązań. Jest nią funkcja ActivateService. W zaprojektowanym przeze mnie GUI pozwoliłem sobie na użycie właśnie tego ostatniego podejścia. Funkcja ActivateService przyjmuje dwa argumenty: pierwszy określający nazwę klucza rejestrów zawierającego informację o usłudze, drugi jest natomiast zarezerwowany i powinien zostać ustawiony na zero. Wspomniałem wcześniej o punktach wejścia do serwisu. Są to funkcje o z góry zdefiniowanych nazwach, które pozwalają procesowi Services.exe na komunikację z załadowaną biblioteką DLL. Istnieje dziesięć standardowych punktów wejścia: xxx_init, xxx_deinit, xxx_open, Listing 3. CallRejecterService.cpp #include "stdafx.h" #include <windows.h> xxx_close, xxx_read, xxx_write, xxx_ Seek, xxx_iocontrol, xxx_powerdown oraz xxx_powerup. Jak już wspomniałem, jest to spadek z czasów, gdy jako dostawców usług używano sterowników. W procesie implementacji xxx w nazwach funkcji zamieniamy oczywiście na trzyliterowy prefiks, pod jakim serwis funkcjonuje w systemie. Na szczęście nie musimy implementować wszystkich funkcji. Pominiemy funkcje wynikające z podejścia do serwisu jako pliku (Open, Close, Read, Write, Seek). Na Listingu 3 został przedstawiony szkielet naszego serwisu. Zauważmy, że w miejsce xxx wstawiliśmy trzyliterowy prefiks CRS (dla ciekawskich wymyśliłem go jako akronim od Call Rejecter Service). Musimy jeszcze sprawić, aby nasze funkcje były widoczne na zewnątrz pliku DLL. Możemy to zrobić dwojako, po pierwsze możemy do tego użyć dyrektywy declspec(dllexport) przy definicji funkcje; drugim sposobem jest dołączenie do projektu pliku DEF. Taki przykładowy plik definicji został przedstawiony na Listingu 4. Czas wyjaśnić znaczenie poszczególnych funkcji, zanim przejdziemy do ich implementacji. CRS_Init jak nietrudno się domyślić, ta funkcja jest wywoływana podczas inicjowania serwisu, co może nastąpić w dwóch sytuacjach: w wyniku wywołania funkcji RegisterService lub w momencie, w którym następuje inicjalizacja procesu Services.exe. W tym drugim przypadku jako argument do funkcji przekazana zostanie umieszczona w rejestrach wartość Context. W przypadku powodzenia, powinna zostać zwrócona wartość niezerowa, w przeciwnej sytuacji usługa zostanie wyładowana. Nie trzeba być orłem, aby odgadnąć przeznaczenie funkcji CRS_Deinit. Jako jedyny argument przyjmuje ona wartość zwróconą przez poprzednią funkcję. Pamiętajmy, że skoro funkcja CRS_Init zwraca wartość typu BOOL APIENTRY DllMain( HANDLE hmodule, DWORD ul_reason_for_call, return TRUE; DWORD CRS_Init(DWORD dwdata) DWORD dwcontext = 1; return dwcontext; LPVOID lpreserved ) DWORD CRS_Deinit(DWORD dwcontext) return TRUE; DWORD CRS_IOControl(DWORD dwdata, DWORD dwcode, PBYTE pbufin, DWORD dwlenin, PBYTE return TRUE; void CRS_PowerDown(DWORD dwcontext) return; void CRS_PowerUp(DWORD dwcontext) return; Listing 4. CallRejecterService.def LIBRARY EXPORTS CRS_Init CRS_Deinit CRS_IOControl CRS_PowerDown CRS_PowerUp "CallRejecterService" pbufout, DWORD dwlenout, PDWORD pdwactualout) 17

18 Programowanie Windows Mobile Listing 5. Funkcja CRS_IOControl DWORD CRS_IOControl(DWORD dwdata, DWORD dwcode, PBYTE pbufin, DWORD dwlenin, PBYTE pbufout, DWORD dwlenout, PDWORD pdwactualout) switch(dwcode) case IOCTL_SERVICE_QUERY_CAN_DEINIT: if ((pbufout) && (dwlenout >= sizeof (BYTE))) *pbufout = 1; if (pdwactualout) *pdwactualout = sizeof(byte); case IOCTL_SERVICE_REFRESH: UpdateConfiguration(); break; return TRUE; Listing 6. Brakująca zawartość pliku CallRejecterService.cpp #include <Service.h> #include "RilHelper.h" BOOL APIENTRY DllMain( HANDLE hmodule, DWORD ul_reason_for_call, LPVOID lpreserved ) return TRUE; DWORD CRS_Init(DWORD dwdata) DWORD dwcontext = 0; if (UpdateConfiguration()) if SUCCEEDED(InitializeCallRejecter()) dwcontext = 1; return dwcontext; DWORD CRS_Deinit(DWORD dwcontext) DeinitializeCallRejecter(); return TRUE; void CRS_PowerDown(DWORD dwcontext) DeinitializeCallRejecter(); return; void CRS_PowerUp(DWORD dwcontext) InitializeCallRejecter(); return; DWORD, to w łatwy w sposób można na nią rzutować wskaźnik na dowolną strukturę czy typ. Dzięki takiemu rozwiązaniu możemy uniknąć stosowania zmiennych globalnych. Para funkcji CRS_PowerUp i CRS_PowerDown służy do przygotowania serwisu na przejście urządzenia w stan niskiego poboru energii, a potem na przywrócenie odpowiedniego stanu po powrocie do normalnego stanu zasilania. Funkcje te przyjmują jako argument wartość zwróconą przez CRS_Init (vide unikanie zmiennych globalnych). Powinieneś zawsze obsłużyć w swoim serwisie te dwie funkcje, tak aby możliwe było przed przejściem w stan obniżonego zużycia energii zwolnienie jak największej liczby zasobów przywłaszczonych przez usługę. Ostatnia funkcja (CRS_IOControl) odpowiada za komunikację aplikacji zewnętrznych z usługą. To właśnie tu trafiają komunikaty wysłane chociażby przy użyciu funkcji ServiceIOControl. Na Listingu 5 została umieszczona wypełniona funkcja CRS_IOControl naszego serwisu. W naszym prostym serwisie obsłużymy jedynie dwa komunikaty, zachęcam jednak do eksperymentów z innymi, jak również do definiowania swoich. Pierwszym z obsłużonych komunikatów jest IOCTL_SERVICE_QU- ERY_CAN_DEINIT. Może być on np. następstwem wywołania funkcji DeregisterService (której zadaniem jest wyładowanie serwisu). Jeżeli usługa z jakiegoś powodu nie może być wyładowana, wówczas w buforze wyjściowym powinna ustawić zero, jeżeli wartość w buforze będzie niezerowa, oznacza to, że będzie mogła zostać wywołana funkcja CRS_Deinit. Drugim komunikatem obsłużonym w naszym serwisie jest IOCTL_SERVICE_RE- FRESH, którym subtelnie sugerujemy serwisowi, że powinien ponownie wczytać swoją konfigurację, ponieważ uległa ona zmianie. Co prawda nie zdefiniowaliśmy jeszcze funkcji UpdateConfiguration, ale zapewniam Cię, że gdybyś zdefiniował chociażby puste ciało tej funkcji, dokonał odpowiednich wpisów w rejestrach i wrzucił skompilowaną bibliotekę na urządzenie, byłbyś w stanie uruchomić naszą usługę (a nawet udałoby Ci się ją zatrzymać) Nuda, nic się nie dzieje... Gdybyśmy poprosili inżyniera Mamonia o komentarz na temat naszego oprogramowania, tak pewnie by je właśnie podsumował i nie ma w tym nic dziwnego, zważywszy na fakt, iż w tej chwili nasza usługa nie robi właściwie nic (a już zdecydowanie nie to, do czego ją przewidzieliśmy). Pora więc nieco ożywić akcję i wprowadzić wreszcie na scenę głównego bohatera tego artykułu. Najpierw jednak spójrzmy na Listing 6 umieściłem na nim wypełnione ciała pozostałych funkcji, nie przejmujemy się przy tym faktem, że wprowadzone zostały ko- 18 SDJ Extra 34 Biblia

19 RIL API w sercu telefonu lejne funkcje, o których implementacji nic nie wiemy. Za chwilę wszystko stanie się jasne (o ile już nie jest). Na Listingach 7 i 8 została przedstawiona pozostała część naszego serwisu (ta, która wreszcie coś robi). Jak wspomniałem we wstępie, RIL API ma wśród wielu programistów opinię, nazwijmy to delikatnie, niezbyt przyjemnego dzieje się tak prawdopodobnie dlatego, że z jednej strony większa część funkcji wchodzących w jego skład ma charakter asynchroniczny, z drugiej zaś sama architektura jest typowym przykładem event-driven programming. Chcąc skorzystać z dobrodziejstw dostarczanych przez Radio Interface Layer, musisz w pierwszej kolejności zarejestrować połączenie z RIL Proxy. Robi się to przy użyciu funkcji RIL_ Initialize. Funkcja ta przyjmuje jako pierwszy argument numer Proxy, do którego chcemy się podłączyć (nie wiem, jaka jest prawidłowość, ale w tym miejscu działa przeważnie tylko wartość 1). Kolejne dwa parametry to wskaźniki na funkcje, za pomocą których RIL Proxy będzie się komunikowało z naszą aplikacją, następnie musimy podać klasę notyfikacji, które chcielibyśmy otrzymywać. Następny parametr typu DWORD to wartość, którą będziemy przekazywać do dwóch wspomnianych wcześniej funkcji pamiętaj, że podobnie jak w przypadku Listing 7. RilHelper.h #ifndef _RILHELPER_H_ #define _RILHELPER_H_ #include "ril.h" #define RIL_TIMEOUT 3000 #define HANGUP_SUCCESS L"HangUpSuccess" #define HANGUP_FAIL L"HangUpFail" #define GETMSGCONFIG_SUCCESS L"GetMsgConfigSuccess" #define GETMSGCONFIG_FAIL L"GetMsgConfigFail" #define SENDMSG_SUCCES L"SendMsgSuccess" #define SENDMSG_FAIL L"SendMsgFail" enum RilFunctions HANGUP,GETMSGCONFIG,SENDMESSAGE; HRESULT InitializeCallRejecter(); HRESULT DeinitializeCallRejecter(); BOOL IsOnBlockedList(LPTSTR lpsznumber); BOOL UpdateConfiguration(); VOID RilNotifyCallback(DWORD dwcode, const void* lpdata, DWORD cbdata, DWORD dwparam ); VOID RilResultCallback(DWORD dwcode, HRESULT hrcmdid, const void* lpdata, DWORD cbdata, DWORD dwparam); HRESULT GetMsgConfig(); HRESULT SendSMS(RILADDRESS radest); #endif R E K L A M A 19

20 Programowanie Windows Mobile Listing 8. RilHelper.cpp #include "stdafx.h" #include "RilHelper.h" #include "RegistryHelper.h" HRESULT hrresults[3]=e_fail,e_fail,e_fail; HANDLE hevents[6]=null,null,null,null,null; HRIL hril=null; LPRILMSGCONFIG g_lprmcmsgconfig = NULL; CALLREJECTERSETTINGS g_crssettings=; HRESULT GetMsgConfig() HRESULT hr = E_FAIL; DWORD dwevent=0; if (hril) hr = RIL_GetMsgConfig(hRil); hrresults[getmsgconfig] = hr; if(succeeded(hr)) dwevent = WaitForMultipleObjects(2,&hEvents[2*GETMS GCONFIG],FALSE,100*RIL_TIMEOUT); switch(dwevent) case WAIT_OBJECT_0: hr = S_OK; break; default: hr = E_FAIL; return hr; HRESULT SendSMS(RILADDRESS radest) RILMESSAGE rm=; HRESULT hr = E_FAIL; DWORD dwevent = 0; if (hril) rm.cbsize = sizeof(rilmessage); rm.dwparams = RIL_PARAM_M_SVCCTRADDRESS RIL_PARAM_ M_TYPE RIL_PARAM_M_DESTADDRESS RIL_PARAM_M_PROTOCOLID RIL_PARAM_ M_MSGLENGTH RIL_PARAM_M_FLAGS RIL_PARAM_M_VPFORMAT RIL_PARAM_ M_DATACODING RIL_PARAM_M_VP RIL_PARAM_M_MSG; rm.rasvcctraddress.cbsize = g_lprmcmsgconfig- >rasvcctraddress.cbsize; rm.rasvcctraddress.dwnumplan = g_lprmcmsgconfig->rasvc CtrAddress.dwNumPlan; rm.rasvcctraddress.dwparams = g_lprmcmsgconfig->rasvcc traddress.dwparams; rm.rasvcctraddress.dwtype = rm.rasvcctraddress.dwtype; _tcscpy_s(rm.rasvcctraddress.wszaddress,256,g_ lprmcmsgconfig->rasvcctraddress.wszad dress); rm.dwtype = RIL_MSGTYPE_OUT_SUBMIT; rm.dwflags = RIL_MSGFLAG_NONE; rm.msgoutsubmit.dwprotocolid = RIL_MSGPROTOCOL_SMETOSME; rm.msgoutsubmit.radestaddress.cbsize = radest.cbsize; rm.msgoutsubmit.radestaddress.dwnumplan = radest.dwnumplan; rm.msgoutsubmit.radestaddress.dwparams = radest.dwparams; rm.msgoutsubmit.radestaddress.dwtype = radest.dwtype; _tcscpy_s(rm.msgoutsubmit.radestaddress.wszaddress,256,radest.wszaddress); rm.msgoutsubmit.rmddatacoding.cbsize = sizeof(rilmsgdcs); rm.msgoutsubmit.rmddatacoding.dwparams = RIL_PARAM_ MDCS_TYPE RIL_PARAM_MDCS_ALPHABET; rm.msgoutsubmit.rmddatacoding.dwtype = RIL_DCSTYPE_ GENERAL; rm.msgoutsubmit.rmddatacoding.dwalphabet = RIL_ DCSALPHABET_DEFAULT; rm.msgoutsubmit.rmddatacoding.dwmsgclass = RIL_ DCSMSGCLASS_0; rm.msgoutsubmit.rmddatacoding.dwflags = RIL_DCSFLAG_NONE; SYSTEMTIME curtime; GetLocalTime(&curTime); rm.msgoutsubmit.stvp.wyear = curtime.wyear; rm.msgoutsubmit.stvp.wmonth = curtime.wmonth; rm.msgoutsubmit.stvp.wdayofweek = curtime.wdayofweek; rm.msgoutsubmit.stvp.wday = curtime.wday; rm.msgoutsubmit.stvp.whour = curtime.whour; rm.msgoutsubmit.stvp.wminute = curtime.wminute; rm.msgoutsubmit.stvp.wsecond = curtime.wsecond; rm.msgoutsubmit.stvp.wmilliseconds = curtime.wmilliseconds; rm.msgoutsubmit.cchmsglength = wcstombs(reinterpret_ cast<char *>(rm.msgoutsubmit.rgbmsg),g _crssettings.tcmessage,256); hr = RIL_SendMsg(hRil,&rm,RIL_SENDOPT_NONE); hrresults[sendmessage] = hr; if(succeeded(hr)) dwevent = WaitForMultipleObjects(2,&hEvents[2*SENDM ESSAGE],FALSE,RIL_TIMEOUT); switch(dwevent) case WAIT_OBJECT_0: hr = S_OK; break; default: hr = E_FAIL; return hr; VOID RilResultCallback(DWORD dwcode, HRESULT hrcmdid, const void* lpdata, DWORD cbdata, DWORD dwparam) if (dwcode = RIL_RESULT_OK) if (hrcmdid==hrresults[hangup]) SetEvent(hEvents[2*HANGUP]); 20 SDJ Extra 34 Biblia

Politechnika Poznańska, Instytut Informatyki, TWO/GE. Programowanie dla ios

Politechnika Poznańska, Instytut Informatyki, TWO/GE. Programowanie dla ios Politechnika Poznańska, Instytut Informatyki, TWO/GE Programowanie dla ios 13 stycznia 2012 Urządzenia ios Urządzenie Data prezentacji iphone 9.01.2007/06.2007 ipod touch 5.09.2007 iphone 3G 9.06.2008

Bardziej szczegółowo

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych PAŃSTWOWA WYŻSZA SZKOŁA ZAWODOWA W ELBLĄGU INSTYTUT INFORMATYKI STOSOWANEJ Sprawozdanie z Seminarium Dyplomowego Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Bardziej szczegółowo

System zarządzający grami programistycznymi Meridius

System zarządzający grami programistycznymi Meridius System zarządzający grami programistycznymi Meridius Instytut Informatyki, Uniwersytet Wrocławski 20 września 2011 Promotor: prof. Krzysztof Loryś Gry komputerowe a programistyczne Gry komputerowe Z punktu

Bardziej szczegółowo

ActiveXperts SMS Messaging Server

ActiveXperts SMS Messaging Server ActiveXperts SMS Messaging Server ActiveXperts SMS Messaging Server to oprogramowanie typu framework dedykowane wysyłaniu, odbieraniu oraz przetwarzaniu wiadomości SMS i e-mail, a także tworzeniu własnych

Bardziej szczegółowo

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02 METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się

Bardziej szczegółowo

Android - wprowadzenie. Łukasz Przywarty 171018

Android - wprowadzenie. Łukasz Przywarty 171018 Android - wprowadzenie Łukasz Przywarty 171018 Ramowy plan prezentacji Czym jest Android: definicja, krótka historia. Architektura systemu. Architektura aplikacji. Właściwości systemu. Środowisko deweloperskie.

Bardziej szczegółowo

Wprowadzenie do projektu QualitySpy

Wprowadzenie do projektu QualitySpy Wprowadzenie do projektu QualitySpy Na podstawie instrukcji implementacji prostej funkcjonalności. 1. Wstęp Celem tego poradnika jest wprowadzić programistę do projektu QualitySpy. Będziemy implementować

Bardziej szczegółowo

Zasady programowania Dokumentacja

Zasady programowania Dokumentacja Marcin Kędzierski gr. 14 Zasady programowania Dokumentacja Wstęp 1) Temat: Przeszukiwanie pliku za pomocą drzewa. 2) Założenia projektu: a) Program ma pobierać dane z pliku wskazanego przez użytkownika

Bardziej szczegółowo

Systemy mobilne. Laboratorium. Dostęp do danych GPS w Windows Phone 7

Systemy mobilne. Laboratorium. Dostęp do danych GPS w Windows Phone 7 Systemy mobilne Laboratorium Dostęp do danych GPS w Windows Phone 7 1. Wprowadzenie Laboratorium ma na celu zapoznanie się z narzędziami dostępu do danych dotyczących lokalizacji w urządzeniach mobilnych

Bardziej szczegółowo

MonoGame. Wieloplatformowe gry w C# Mateusz Cicheński

MonoGame. Wieloplatformowe gry w C# Mateusz Cicheński MonoGame Wieloplatformowe gry w C# Mateusz Cicheński Plan prezentacji Założenia Alternatywy Narzędzia Różnice między WP8, ios, Android DEMO Podsumowanie Założenia CEL: Stworzenie wieloplatformowej gry

Bardziej szczegółowo

www.gim4.slupsk.pl/przedmioty

www.gim4.slupsk.pl/przedmioty Lekcja 4. Program komputerowy - instalacja i uruchomienie 1. Rodzaje programów komputerowych 2. Systemy operacyjne 3. Instalowanie programu 4. Uruchamianie programu 5. Kilka zasad pracy z programem komputerowym

Bardziej szczegółowo

Programowanie Urządzeń Mobilnych. Laboratorium nr 7, 8

Programowanie Urządzeń Mobilnych. Laboratorium nr 7, 8 Programowanie Urządzeń Mobilnych Laboratorium nr 7, 8 Android Temat 1 tworzenie i uruchamianie aplikacji z użyciem Android SDK Krzysztof Bruniecki 1 Wstęp Platforma Android jest opartym na Linuxie systemem

Bardziej szczegółowo

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main. Część XVI C++ Funkcje Jeśli nasz program rozrósł się już do kilkudziesięciu linijek, warto pomyśleć o jego podziale na mniejsze części. Poznajmy więc funkcje. Szybko się przekonamy, że funkcja to bardzo

Bardziej szczegółowo

Język JAVA podstawy. wykład 1, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Język JAVA podstawy. wykład 1, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy wykład 1, część 2 1 Język JAVA podstawy Plan wykładu: 1. Krótka historia Javy 2. Jak przygotować sobie środowisko programistyczne 3. Opis środowiska JDK 4. Tworzenie programu krok po

Bardziej szczegółowo

Stawiamy pierwsze kroki

Stawiamy pierwsze kroki Stawiamy pierwsze kroki 3.1. Stawiamy pierwsze kroki Edytory tekstu to najbardziej popularna odmiana programów służących do wprowadzania i zmieniania (czyli edytowania) tekstów. Zalicza się je do programów

Bardziej szczegółowo

Międzyplatformowy interfejs systemu FOLANessus wykonany przy użyciu biblioteki Qt4

Międzyplatformowy interfejs systemu FOLANessus wykonany przy użyciu biblioteki Qt4 Uniwersytet Mikołaja Kopernika w Toruniu Wydział Matematyki i Informatyki Wydział Fizyki, Astronomii i Informatyki Stosowanej Agnieszka Holka Nr albumu: 187396 Praca magisterska na kierunku Informatyka

Bardziej szczegółowo

SOA Web Services in Java

SOA Web Services in Java Wydział Informatyki i Zarządzania Wrocław,16 marca 2009 Plan prezentacji SOA 1 SOA 2 Usługi Przykłady Jak zacząć SOA Wycinek rzeczywistości Problemy zintegrowanych serwisów : Wycinek Rzeczywistości Zacznijmy

Bardziej szczegółowo

REFERAT PRACY DYPLOMOWEJ

REFERAT PRACY DYPLOMOWEJ REFERAT PRACY DYPLOMOWEJ Temat pracy: Projekt i implementacja środowiska do automatyzacji przeprowadzania testów aplikacji internetowych w oparciu o metodykę Behavior Driven Development. Autor: Stepowany

Bardziej szczegółowo

World Wide Web? rkijanka

World Wide Web? rkijanka World Wide Web? rkijanka World Wide Web? globalny, interaktywny, dynamiczny, wieloplatformowy, rozproszony, graficzny, hipertekstowy - system informacyjny, działający na bazie Internetu. 1.Sieć WWW jest

Bardziej szczegółowo

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC Akademia MetaPack Uniwersytet Zielonogórski Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC Krzysztof Blacha Microsoft Certified Professional Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC Agenda:

Bardziej szczegółowo

tel. (+48 81) 538 47 21/22 fax (+48 81) 538 45 80 Cel przedmiotu

tel. (+48 81) 538 47 21/22 fax (+48 81) 538 45 80 Cel przedmiotu 0-68 Lublin tel. (+48 8) 538 47 / fax (+48 8) 538 45 80 Przedmiot: Programowanie aplikacji Rok: 4 Semestr: 7 Rodzaj zajęć i liczba godzin: Studia stacjonarne Studia niestacjonarne Wykład 30 4 Ćwiczenia

Bardziej szczegółowo

Pliki zorganizowano w strukturze drzewiastej odzwierciedlając strukturę logiczną aplikacji:

Pliki zorganizowano w strukturze drzewiastej odzwierciedlając strukturę logiczną aplikacji: Technologia wykonania projektu: HTML5 Javascript: o jquery (1.9.1), o CreateJS (0.6.1): EaselJS, TweenJS, PreloadJS. Części funkcjonalne projektu: Strona internetowa pliki strony internetowej zlokalizowane

Bardziej szczegółowo

uczyć się bez zagłębiania się w formalnym otoczeniu,

uczyć się bez zagłębiania się w formalnym otoczeniu, CZĘŚĆ 3 - INTERNET 3.1 WSTĘP Internet jest globalnym zbiorem połączonych ze sobą komputerów, które przesyłają informacje między sobą za pośrednictwem szybkich połączeń sieciowych oraz linii telefonicznych.

Bardziej szczegółowo

Ciekawym rozwiązaniem służącym do obsługi zdarzeń dla kilku przycisków w ramach jednej aktywności może być następujący kod:

Ciekawym rozwiązaniem służącym do obsługi zdarzeń dla kilku przycisków w ramach jednej aktywności może być następujący kod: 1. Listener dla przycisku. Ciekawym rozwiązaniem służącym do obsługi zdarzeń dla kilku przycisków w ramach jednej aktywności może być następujący kod: W linii 24 tworzymy globalną metodę mglobal_onclicklistener,

Bardziej szczegółowo

Tworzenie natywnych aplikacji na urządzenia mobilne - PhoneGap Tomasz Margalski

Tworzenie natywnych aplikacji na urządzenia mobilne - PhoneGap Tomasz Margalski Tworzenie natywnych aplikacji na urządzenia mobilne - PhoneGap Tomasz Margalski Agenda Dlaczego PhoneGap i co to jest? Możliwości PhoneGap Jak pisać aplikacje z PhoneGap? Konfiguracja i przykład aplikacji

Bardziej szczegółowo

Webowy generator wykresów wykorzystujący program gnuplot

Webowy generator wykresów wykorzystujący program gnuplot Uniwersytet Mikołaja Kopernika Wydział Fizyki, Astronomii i Informatyki Stosowanej Marcin Nowak nr albumu: 254118 Praca inżynierska na kierunku informatyka stosowana Webowy generator wykresów wykorzystujący

Bardziej szczegółowo

To sposób w jaki użytkownik wchodzi w interakcje z systemem. Środowisko graficzne używa kombinacji graficznych elementów(przyciski, okna, menu) i

To sposób w jaki użytkownik wchodzi w interakcje z systemem. Środowisko graficzne używa kombinacji graficznych elementów(przyciski, okna, menu) i Aleksandra Dębiecka To sposób w jaki użytkownik wchodzi w interakcje z systemem. To sposób w jaki użytkownik wchodzi w interakcje z systemem. Środowisko graficzne używa kombinacji graficznych elementów(przyciski,

Bardziej szczegółowo

Platformy programistyczne:.net i Java L ABORATORIUM 7,8: HACKATHON - JTTT

Platformy programistyczne:.net i Java L ABORATORIUM 7,8: HACKATHON - JTTT Platformy programistyczne:.net i Java L ABORATORIUM 7,8: HACKATHON - JTTT O co chodzi? - Przypomnienie Hackathon - http://en.wikipedia.org/wiki/hackathon A hackathon is an event in which computer programmers

Bardziej szczegółowo

Krótka Historia. Co to jest NetBeans? Historia. NetBeans Platform NetBeans IDE NetBeans Mobility Pack Zintegrowane moduły. Paczki do NetBeans.

Krótka Historia. Co to jest NetBeans? Historia. NetBeans Platform NetBeans IDE NetBeans Mobility Pack Zintegrowane moduły. Paczki do NetBeans. GRZEGORZ FURDYNA Krótka Historia Co to jest NetBeans? Historia Wersje NetBeans Platform NetBeans IDE NetBeans Mobility Pack Zintegrowane moduły NetBeans Profiler Narzędzie do projektowania GUI Edytor NetBeans

Bardziej szczegółowo

PROJEKT WSPÓŁFINANSOWANY ZE ŚRODKÓW UNII EUROPEJSKIEJ W RAMACH EUROPEJSKIEGO FUNDUSZU SPOŁECZNEGO OPIS PRZEDMIOTU. studia pierwszego stopnia

PROJEKT WSPÓŁFINANSOWANY ZE ŚRODKÓW UNII EUROPEJSKIEJ W RAMACH EUROPEJSKIEGO FUNDUSZU SPOŁECZNEGO OPIS PRZEDMIOTU. studia pierwszego stopnia OPIS PRZEDMIOTU Nazwa przedmiotu Programowanie i obsługa systemów mobilnych Kod przedmiotu Wydział Instytut/Katedra Kierunek Specjalizacja/specjalność Wydział Matematyki, Fizyki i Techniki Instytut Mechaniki

Bardziej szczegółowo

Uniwersytet Warszawski Wydział Matematyki, Informatyki i Mechaniki. Paweł Parys. Nr albumu: 209216. Aukcjomat

Uniwersytet Warszawski Wydział Matematyki, Informatyki i Mechaniki. Paweł Parys. Nr albumu: 209216. Aukcjomat Uniwersytet Warszawski Wydział Matematyki, Informatyki i Mechaniki Paweł Parys Nr albumu: 209216 Aukcjomat Praca licencjacka na kierunku INFORMATYKA w zakresie INFORMATYKA Praca wykonana pod kierunkiem

Bardziej szczegółowo

Windows Mobile. Andy Wigley, Daniel Moth, Peter Foot, Microsoft Mobile Development Handbook, Microsoft Press 2007

Windows Mobile. Andy Wigley, Daniel Moth, Peter Foot, Microsoft Mobile Development Handbook, Microsoft Press 2007 Windows Mobile Andy Wigley, Daniel Moth, Peter Foot, Microsoft Mobile Development Handbook, Microsoft Press 2007 Wykład 14-2 Windows CE Modułowy system operacyjny Platform Builder pozwala na wybranie tych

Bardziej szczegółowo

Przewodnik Szybki start

Przewodnik Szybki start Przewodnik Szybki start Program Microsoft Access 2013 wygląda inaczej niż wcześniejsze wersje, dlatego przygotowaliśmy ten przewodnik, aby skrócić czas nauki jego obsługi. Zmienianie rozmiaru ekranu lub

Bardziej szczegółowo

1.Wstęp. 2.Generowanie systemu w EDK

1.Wstęp. 2.Generowanie systemu w EDK 1.Wstęp Celem niniejszego ćwiczenia jest zapoznanie z możliwościami debuggowania kodu na platformie MicroBlaze oraz zapoznanie ze środowiskiem wspomagającym prace programisty Xilinx Platform SDK (Eclipse).

Bardziej szczegółowo

SZYBKO ZROZUMIEĆ VISUAL BASIC 2012 Artur Niewiarowski -

SZYBKO ZROZUMIEĆ VISUAL BASIC 2012 Artur Niewiarowski - S t r o n a 2 SZYBKO ZROZUMIEĆ VISUAL BASIC 2012 Artur Niewiarowski - Copyright by Artur Niewiarowski 2013 ISBN: 978-83-937802-0-4 - Artur Niewiarowski Self-Publishing - All rights reserved. Wszelkie prawa

Bardziej szczegółowo

dziennik Instrukcja obsługi

dziennik Instrukcja obsługi Ham Radio Deluxe dziennik Instrukcja obsługi Wg. Simon Brown, HB9DRV Tłumaczenie SP4JEU grudzień 22, 2008 Zawartość 3 Wprowadzenie 5 Po co... 5 Główne cechy... 5 baza danych 7 ODBC... 7 Który produkt

Bardziej szczegółowo

Strona tytułowa, zgodnie z wymaganiami zamieszczonymi na stronie www uczelni. Wzór strony dostępny jest w dzienniku wirtualnym - 1 -

Strona tytułowa, zgodnie z wymaganiami zamieszczonymi na stronie www uczelni. Wzór strony dostępny jest w dzienniku wirtualnym - 1 - Strona tytułowa, zgodnie z wymaganiami zamieszczonymi na stronie www uczelni. Wzór strony dostępny jest w dzienniku wirtualnym - 1 - Spis treści 1 Wstęp... 3 1.1 Cel pracy... 3 1.2 Układ pracy... 4 2 Podstawy

Bardziej szczegółowo

Projekt Hurtownia, realizacja rejestracji dostaw produktów

Projekt Hurtownia, realizacja rejestracji dostaw produktów Projekt Hurtownia, realizacja rejestracji dostaw produktów Ćwiczenie to będzie poświęcone zaprojektowaniu formularza pozwalającego na rejestrację dostaw produktów dla naszej hurtowni. Dane identyfikujące

Bardziej szczegółowo

Dokument Detaliczny Projektu

Dokument Detaliczny Projektu Dokument Detaliczny Projektu Dla Biblioteki miejskiej Wersja 1.0 Streszczenie Niniejszy dokument detaliczny projektu(ddp) przedstawia szczegóły pracy zespołu projektowego, nad stworzeniem aplikacji bazodanowej

Bardziej szczegółowo

Tworzenie i obsługa wirtualnego laboratorium komputerowego

Tworzenie i obsługa wirtualnego laboratorium komputerowego Uniwersytet Mikołaja Kopernika Wydział Fizyki, Astronomii i Informatyki Stosowanej Michał Ochociński nr albumu: 236401 Praca magisterska na kierunku informatyka stosowana Tworzenie i obsługa wirtualnego

Bardziej szczegółowo

Komunikacja i wymiana danych

Komunikacja i wymiana danych Budowa i oprogramowanie komputerowych systemów sterowania Wykład 10 Komunikacja i wymiana danych Metody wymiany danych Lokalne Pliki txt, csv, xls, xml Biblioteki LIB / DLL DDE, FastDDE OLE, COM, ActiveX

Bardziej szczegółowo

Projekt Hurtownia, realizacja rejestracji dostaw produktów

Projekt Hurtownia, realizacja rejestracji dostaw produktów Projekt Hurtownia, realizacja rejestracji dostaw produktów Ćwiczenie to będzie poświęcone zaprojektowaniu formularza pozwalającego na rejestrację dostaw produktów dla naszej hurtowni. Dane identyfikujące

Bardziej szczegółowo

REFERAT O PRACY DYPLOMOWEJ

REFERAT O PRACY DYPLOMOWEJ REFERAT O PRACY DYPLOMOWEJ Temat pracy: Projekt i budowa systemu zarządzania treścią opartego na własnej bibliotece MVC Autor: Kamil Kowalski W dzisiejszych czasach posiadanie strony internetowej to norma,

Bardziej szczegółowo

Pracownia internetowa w szkole ZASTOSOWANIA

Pracownia internetowa w szkole ZASTOSOWANIA NR ART/SBS/07/01 Pracownia internetowa w szkole ZASTOSOWANIA Artykuły - serwery SBS i ich wykorzystanie Instalacja i Konfiguracja oprogramowania MOL Optiva na szkolnym serwerze (SBS2000) Artykuł opisuje

Bardziej szczegółowo

EW1051 Czytnik kart inteligentnych ID USB 2.0

EW1051 Czytnik kart inteligentnych ID USB 2.0 EW1051 Czytnik kart inteligentnych ID USB 2.0 2 POLSKI EW1051 Czytnik kart inteligentnych ID USB 2.0 Spis treści 1.0 Wprowadzenie... 2 1.1 Funkcje i właściwości... 2 1.2 Zawartość opakowania... 2 2.0 Instalacja

Bardziej szczegółowo

Dokumentacja projektu QUAIKE Architektura oprogramowania

Dokumentacja projektu QUAIKE Architektura oprogramowania Licencjacka Pracownia Oprogramowania Instytut Informatyki Uniwersytetu Wrocławskiego Jakub Kowalski, Andrzej Pilarczyk, Marek Kembrowski, Bartłomiej Gałkowski Dokumentacja projektu QUAIKE Architektura

Bardziej szczegółowo

Wykorzystanie standardów serii ISO 19100 oraz OGC dla potrzeb budowy infrastruktury danych przestrzennych

Wykorzystanie standardów serii ISO 19100 oraz OGC dla potrzeb budowy infrastruktury danych przestrzennych Wykorzystanie standardów serii ISO 19100 oraz OGC dla potrzeb budowy infrastruktury danych przestrzennych dr inż. Adam Iwaniak Infrastruktura Danych Przestrzennych w Polsce i Europie Seminarium, AR Wrocław

Bardziej szczegółowo

Atrybuty SMS. Nazwa Twojej firmy lub produktu w SMS-ie podniesie prestiż Twojej wiadomości

Atrybuty SMS. Nazwa Twojej firmy lub produktu w SMS-ie podniesie prestiż Twojej wiadomości Atrybuty SMS Wiadomości tekstowe SMS wbrew pozorom posiadają wiele atrybutów, które można wykorzystać na wiele sposobów. W tym dziale opisaliśmy atrybuty i najważniejsze kwestie związane z posługiwaniem

Bardziej szczegółowo

Dysk 20GB przestrzeni Ajax Ajax 1.0 Baza danych MS SQL 2005 lub 2008 Express Java Java 6 run time Microsoft Silverlight 3.

Dysk 20GB przestrzeni Ajax Ajax 1.0 Baza danych MS SQL 2005 lub 2008 Express Java Java 6 run time Microsoft Silverlight 3. Systemy do kompleksowej administracji środowiskiem IT : Symantec Management Platform Solutions - rozwiązanie ułatwiające zarządzanie zasobami informatycznym Głównym zadaniem podlegającym kompetencji działu

Bardziej szczegółowo

REFERAT O PRACY DYPLOMOWEJ

REFERAT O PRACY DYPLOMOWEJ REFERAT O PRACY DYPLOMOWEJ Temat pracy: Projekt i implementacja mobilnego systemu wspomagającego organizowanie zespołowej aktywności fizycznej Autor: Krzysztof Salamon W dzisiejszych czasach życie ludzi

Bardziej szczegółowo

Cechy systemu X Window: otwartość niezależność od producentów i od sprzętu, dostępny kod źródłowy; architektura klient-serwer;

Cechy systemu X Window: otwartość niezależność od producentów i od sprzętu, dostępny kod źródłowy; architektura klient-serwer; 14.3. Podstawy obsługi X Window 14.3. Podstawy obsługi X Window W przeciwieństwie do systemów Windows system Linux nie jest systemem graficznym. W systemach Windows z rodziny NT powłokę systemową stanowi

Bardziej szczegółowo

Dzięki szkoleniu. Dni: 3. Opis: Adresaci szkolenia

Dzięki szkoleniu. Dni: 3. Opis: Adresaci szkolenia Kod szkolenia: Tytuł szkolenia: IOS/START Programowanie ios - szybki start Dni: 3 Opis: Adresaci szkolenia Szkolenie adresowane jest do programistów, którzy chcą od podstaw poznać język Objective- C oraz

Bardziej szczegółowo

Instrukcje instalacji pakietu IBM SPSS Data Access Pack dla systemu Windows

Instrukcje instalacji pakietu IBM SPSS Data Access Pack dla systemu Windows Instrukcje instalacji pakietu IBM SPSS Data Access Pack dla systemu Windows Spis treści Rozdział 1. Przegląd......... 1 Wstęp................. 1 Wdrażanie technologii Data Access........ 1 Źródła danych

Bardziej szczegółowo

Instrukcja laboratoryjna cz.3

Instrukcja laboratoryjna cz.3 Języki programowania na platformie.net cz.2 2015/16 Instrukcja laboratoryjna cz.3 Język C++/CLI Prowadzący: Tomasz Goluch Wersja: 2.0 I. Utworzenie projektu C++/CLI z interfejsem graficznym WPF 1 Cel:

Bardziej szczegółowo

Technologia Flash cieszy się coraz większą popularnością. Liczba dostępnych

Technologia Flash cieszy się coraz większą popularnością. Liczba dostępnych Flash i PHP 01 Technologia Flash cieszy się coraz większą popularnością. Liczba dostępnych narzędzi do tworzenia prostych oraz złożonych interaktywnych animacji wzrasta z dnia na dzień. Trzeba przyznać,

Bardziej szczegółowo

Programowanie Urządzeń Mobilnych. Część II: Android. Wykład 2

Programowanie Urządzeń Mobilnych. Część II: Android. Wykład 2 Programowanie Urządzeń Mobilnych Część II: Android Wykład 2 1 Aplikacje w systemie Android Aplikacje tworzone są w języku Java: Skompilowane pliki programów ( dex ) wraz z plikami danych umieszczane w

Bardziej szczegółowo

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE WINDOWS 1 SO i SK/WIN 006 Wydajność systemu 2 SO i SK/WIN Najprostszym sposobem na poprawienie wydajności systemu, jeżeli dysponujemy zbyt małą ilością pamięci RAM

Bardziej szczegółowo

Przewodnik instalacji i rozpoczynania pracy. Dla DataPage+ 2013

Przewodnik instalacji i rozpoczynania pracy. Dla DataPage+ 2013 Przewodnik instalacji i rozpoczynania pracy Dla DataPage+ 2013 Ostatnia aktualizacja: 25 lipca 2013 Spis treści Instalowanie wymaganych wstępnie komponentów... 1 Przegląd... 1 Krok 1: Uruchamianie Setup.exe

Bardziej szczegółowo

PL 198457 B1. ABB Sp. z o.o.,warszawa,pl 17.12.2001 BUP 26/01. Michał Orkisz,Kraków,PL Mirosław Bistroń,Jarosław,PL 30.06.

PL 198457 B1. ABB Sp. z o.o.,warszawa,pl 17.12.2001 BUP 26/01. Michał Orkisz,Kraków,PL Mirosław Bistroń,Jarosław,PL 30.06. RZECZPOSPOLITA POLSKA (12) OPIS PATENTOWY (19) PL (11) 198457 (13) B1 (21) Numer zgłoszenia: 340813 (51) Int.Cl. G06F 17/21 (2006.01) G06Q 10/00 (2006.01) Urząd Patentowy Rzeczypospolitej Polskiej (22)

Bardziej szczegółowo

Paragon Boot Media Builder

Paragon Boot Media Builder PARAGON Software GmbH ul. Śląska 22/21 42 217 Częstochowa, Polska Tel. +48 (34) 343 81 81 Internet: www.paragon software.pl E mail kontakt@paragon software.pl Paragon Boot Media Builder Podręcznik użytkownika

Bardziej szczegółowo

16) Wprowadzenie do raportowania Rave

16) Wprowadzenie do raportowania Rave 16) Wprowadzenie do raportowania Rave Tematyka rozdziału: Przegląd wszystkich komponentów Rave Tworzenie nowego raportu przy użyciu formatki w środowisku Delphi Aktywacja środowiska Report Authoring Visual

Bardziej szczegółowo

Symulator tabletu z systemem Windows 8.

Symulator tabletu z systemem Windows 8. Symulator tabletu z systemem Windows 8. Witam w mojej kolejnej publikacji, tym razem dowiesz się: - Jak uruchomić symulator tabletu z w pełni funkcjonalnym systemem operacyjnym Windows 8; - Jak wykorzystać

Bardziej szczegółowo

edycja 1 opracowany zgodnie z Zarządzeniami Wewnętrznymi PWr. nr 14/2012 i 15/2012 i 34/2012

edycja 1 opracowany zgodnie z Zarządzeniami Wewnętrznymi PWr. nr 14/2012 i 15/2012 i 34/2012 Wrocław, 18.05.2015 Program kształcenia i plan studiów podyplomowych: Android i ios nowoczesne aplikacje mobilne edycja 1 opracowany zgodnie z Zarządzeniami Wewnętrznymi PWr. nr 14/2012 i 15/2012 i 34/2012

Bardziej szczegółowo

QUERY język zapytań do tworzenia raportów w AS/400

QUERY język zapytań do tworzenia raportów w AS/400 QUERY język zapytań do tworzenia raportów w AS/400 Dariusz Bober Katedra Informatyki Politechniki Lubelskiej Streszczenie: W artykule przedstawiony został język QUERY, standardowe narzędzie pracy administratora

Bardziej szczegółowo

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik Wykład VII Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Kompilacja Kompilator C program do tłumaczenia kodu źródłowego na język maszynowy. Preprocesor

Bardziej szczegółowo

Dotacje na innowacje. Inwestujemy w waszą przyszłość.

Dotacje na innowacje. Inwestujemy w waszą przyszłość. PROJEKT TECHNICZNY Implementacja Systemu B2B w firmie Lancelot i w przedsiębiorstwach partnerskich Przygotowane dla: Przygotowane przez: Lancelot Marek Cieśla Grzegorz Witkowski Constant Improvement Szkolenia

Bardziej szczegółowo

Dział Dopuszczający Dostateczny Dobry Bardzo dobry Celujący

Dział Dopuszczający Dostateczny Dobry Bardzo dobry Celujący Przedmiotowy system oceniania Zawód: Technik Informatyk Nr programu: 312[ 01] /T,SP/MENiS/ 2004.06.14 Przedmiot: Systemy Operacyjne i Sieci Komputerowe Klasa: pierwsza Dział Dopuszczający Dostateczny Dobry

Bardziej szczegółowo

Architektura Systemu. Architektura systemu umożliwia kontrolowanie iteracyjnego i przyrostowego procesu tworzenia systemu.

Architektura Systemu. Architektura systemu umożliwia kontrolowanie iteracyjnego i przyrostowego procesu tworzenia systemu. Architektura Systemu Architektura systemu umożliwia kontrolowanie iteracyjnego i przyrostowego procesu tworzenia systemu. Architektura jest zbiorem decyzji dotyczących: organizacji systemu komputerowego,

Bardziej szczegółowo

Zastosowania Robotów Mobilnych

Zastosowania Robotów Mobilnych Zastosowania Robotów Mobilnych Temat: Zapoznanie ze środowiskiem Microsoft Robotics Developer Studio na przykładzie prostych problemów nawigacji. 1) Wstęp: Microsoft Robotics Developer Studio jest popularnym

Bardziej szczegółowo

Komputer nie myśli. On tylko wykonuje nasze polecenia. Nauczmy się więc wydawać mu rozkazy

Komputer nie myśli. On tylko wykonuje nasze polecenia. Nauczmy się więc wydawać mu rozkazy Programowanie w C++ 1.Czym jest programowanie Pisanie programów to wcale nie czarna magia, tylko bardzo logiczna rozmowa z komputerem. Oczywiście w jednym ze specjalnie stworzonych do tego celu języków.

Bardziej szczegółowo

Swing Application Framework czyli tam i z powrotem. Copyright Piotr Kochański & Erudis, www.erudis.pl

Swing Application Framework czyli tam i z powrotem. Copyright Piotr Kochański & Erudis, www.erudis.pl Swing Application Framework czyli tam i z powrotem Informacje o mnie Imię: Piotr Nazwisko: Kochański Praca: programista Java, PHP + kilka egzotycznych wynalazków Miejsce pracy: firma Erudis (prawdopodobnie

Bardziej szczegółowo

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE Studia podyplomowe dla nauczycieli INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE Przedmiot JĘZYKI PROGRAMOWANIA DEFINICJE I PODSTAWOWE POJĘCIA Autor mgr Sławomir Ciernicki 1/7 Aby

Bardziej szczegółowo

Darmowy fragment www.bezkartek.pl

Darmowy fragment www.bezkartek.pl KRZYSZTOF WOŁK Praktyczny przewodnik po MAC OS X Server 10.6 i 10.7 Wdrożenie i administracja systemu serwerowego Apple a opisane w formie samouczków opatrzone w teorię + ĆWICZENIA Wydawnictwo Psychoskok,

Bardziej szczegółowo

Poradnik zetula.pl. Jak założyć konto na zetula.pl. i zabezpieczyć dane na swoim komputerze?

Poradnik zetula.pl. Jak założyć konto na zetula.pl. i zabezpieczyć dane na swoim komputerze? Poradnik zetula.pl Jak założyć konto na zetula.pl i zabezpieczyć dane na swoim komputerze? 1.Wejdź na stronę www.zetula.pl 2.Kliknij na odnośniku Utwórz nowe konto 3.Wypełnij formularz rejestracyjny. Pola

Bardziej szczegółowo

CitiDirect Online Banking - portal CitiDirect EB

CitiDirect Online Banking - portal CitiDirect EB CitiDirect Online Banking - portal CitiDirect EB Dodatkowa informacja dotycząca konfiguracji zabezpieczeń oprogramowania Java Pomoc Techniczna CitiDirect CitiService Pomoc Techniczna CitiDirect Tel. 0

Bardziej szczegółowo

Ustalanie dostępu do plików - Windows XP Home/Professional

Ustalanie dostępu do plików - Windows XP Home/Professional Ustalanie dostępu do plików - Windows XP Home/Professional Aby edytować atrybuty dostępu do plikow/ katalogow w systemie plików NTFS wpierw sprawdź czy jest Wyłączone proste udostępnianie czyli przejdź

Bardziej szczegółowo

INSTRUKCJA OBSŁUGI PROGRAMU INSTAR 1.0

INSTRUKCJA OBSŁUGI PROGRAMU INSTAR 1.0 INSTRUKCJA OBSŁUGI PROGRAMU INSTAR 1.0 ver. 30.01.2014 Spis treści I. Wstęp... 2 II. Transmisja danych... 3 III. Aktualizacja oprogramowania... 4 IV. Ustawienia parametrów... 4 V. Konfiguracja modemu radiowego....

Bardziej szczegółowo

Przewodnik Google Cloud Print

Przewodnik Google Cloud Print Przewodnik Google Cloud Print Wersja 0 POL Definicje oznaczeń W tym podręczniku użytkownika zastosowano następującą ikonę: Informacje dotyczą tego, jak należy reagować w danej sytuacji, lub zawierają wskazówki

Bardziej szczegółowo

I. Informacje ogólne. Jednym z takich systemów jest Mambo.

I. Informacje ogólne. Jednym z takich systemów jest Mambo. MAMBO (CMS) I. Informacje ogólne CMS, Content Management System ("system zarządzania treścią") jest to jedna lub zestaw aplikacji internetowych pozwalających na łatwe utworzenie oraz późniejszą aktualizację

Bardziej szczegółowo

DSL w środowisku Eclipse. Grzegorz Białek Architekt techniczny, Sygnity S.A.

DSL w środowisku Eclipse. Grzegorz Białek Architekt techniczny, Sygnity S.A. DSL w środowisku Eclipse Grzegorz Białek Architekt techniczny, Sygnity S.A. Agenda Wstęp do tematu (10 min) Sens tworzenia języków biznesowych UML jako język biznesu? Zintegrowane środowisko deweloperskie

Bardziej szczegółowo

--------------------------------- Zacznij Zarabiać

--------------------------------- Zacznij Zarabiać NetWork Dostarcza GoDealla.pl GoDealla NetWork --------------------------------- Zacznij Zarabiać na zakupach grupowych Czym jest GoDealla Network? GoDealla.pl to największy polski agregator zakupów grupowych.

Bardziej szczegółowo

Platforma e-learningowa UO

Platforma e-learningowa UO Platforma e-learningowa UO Poniżej opisano podstawowe funkcjonalności platformy e-learnigowej z punktu widzenia studenta uczestnika kursu learningowego. Opis uwzględnia wszystkie elementy, na przykładzie

Bardziej szczegółowo

Tworzenie aplikacji GIS w technologii Flex. Tomasz Turowski Esri Polska

Tworzenie aplikacji GIS w technologii Flex. Tomasz Turowski Esri Polska Tworzenie aplikacji GIS w technologii Flex Tomasz Turowski Esri Polska Rodzina produktów bazujących na Fleksie ArcGIS API for Flex zbiór klas wprowadzających funkcjonalności mapowe do środowiska Flex.

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu Programowanie obiektowe - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia.

Bardziej szczegółowo

Przewodnik Google Cloud Print

Przewodnik Google Cloud Print Przewodnik Google Cloud Print Wersja A POL Definicje oznaczeń W tym podręczniku użytkownika zastosowano następujący styl uwag: Uwagi informują o tym, jak należy reagować w danej sytuacji, lub zawierają

Bardziej szczegółowo

L.dz.: WETI /16/2014 Gdańsk, dn. 03.01.2014

L.dz.: WETI /16/2014 Gdańsk, dn. 03.01.2014 L.dz.: WETI /16/2014 Gdańsk, dn. 03.01.2014 Dotyczy: postępowania o zamówienie publiczne, prowadzonego w trybie przetargu nieograniczonego, na Opracowania serwisu internetowego służącego do nauki języka

Bardziej szczegółowo

Dokumentacja aplikacji Szachy online

Dokumentacja aplikacji Szachy online Projekt z przedmiotu Technologie Internetowe Autorzy: Jakub Białas i Jarosław Tyma grupa II, Automatyka i Robotyka sem. V, Politechnika Śląska Przedmiot projektu: Aplikacja internetowa w języku Java Dokumentacja

Bardziej szczegółowo

Programowanie MorphX Ax

Programowanie MorphX Ax Administrowanie Czym jest system ERP? do systemu Dynamics Ax Obsługa systemu Dynamics Ax Wyszukiwanie informacji, filtrowanie, sortowanie rekordów IntelliMorph : ukrywanie i pokazywanie ukrytych kolumn

Bardziej szczegółowo

REFERAT PRACY DYPLOMOWEJ Temat pracy: SUDOKU - Algorytmy tworzenia i rozwiązywania

REFERAT PRACY DYPLOMOWEJ Temat pracy: SUDOKU - Algorytmy tworzenia i rozwiązywania REFERAT PRACY DYPLOMOWEJ Temat pracy: SUDOKU - Algorytmy tworzenia i rozwiązywania Autor: Anna Nowak Promotor: dr inż. Jan Kowalski Kategorie: gra logiczna Słowa kluczowe: Sudoku, generowanie plansz, algorytmy,

Bardziej szczegółowo

Konspekt pracy inżynierskiej

Konspekt pracy inżynierskiej Konspekt pracy inżynierskiej Wydział Elektryczny Informatyka, Semestr VI Promotor: dr inż. Tomasz Bilski 1. Proponowany tytuł pracy inżynierskiej: Komunikator Gandu na platformę mobilną Android. 2. Cel

Bardziej szczegółowo

POLITECHNIKA LUBELSKA

POLITECHNIKA LUBELSKA POLITECHNIKA LUBELSKA Wydział Elektrotechniki i Informatyki Kierunek Informatyka praca magisterska Temat: Współpraca technologii.net Compact Framework, Flex i PHP w aplikacjach mobilnych na przykładzie

Bardziej szczegółowo

Analiza i projektowanie aplikacji Java

Analiza i projektowanie aplikacji Java Analiza i projektowanie aplikacji Java Modele analityczne a projektowe Modele analityczne (konceptualne) pokazują dziedzinę problemu. Modele projektowe (fizyczne) pokazują system informatyczny. Utrzymanie

Bardziej szczegółowo

Usługi analityczne budowa kostki analitycznej Część pierwsza.

Usługi analityczne budowa kostki analitycznej Część pierwsza. Usługi analityczne budowa kostki analitycznej Część pierwsza. Wprowadzenie W wielu dziedzinach działalności człowieka analiza zebranych danych jest jednym z najważniejszych mechanizmów podejmowania decyzji.

Bardziej szczegółowo

Monitorowanie i zarządzanie urządzeniami sieciowymi przy pomocy narzędzi Net-SNMP

Monitorowanie i zarządzanie urządzeniami sieciowymi przy pomocy narzędzi Net-SNMP Uniwersytet Mikołaja Kopernika w Toruniu Wydział Matematyki i Informatyki Wydział Fizyki, Astronomii i Informatyki Stosowanej Szymon Klimuk Nr albumu: 187408 Praca magisterska na kierunku Informatyka Monitorowanie

Bardziej szczegółowo

Jak zainstalować mobilne e-dentico i z niego korzystać? Samouczek na Android

Jak zainstalować mobilne e-dentico i z niego korzystać? Samouczek na Android Jak zainstalować mobilne e-dentico i z niego korzystać? Samouczek na Android Aby znaleźć interesującą nas aplikację, należy skorzystać z usługi zaprojektowanej przez twórców systemu operacyjnego. Obojętnie,

Bardziej szczegółowo

Przewodnik Google Cloud Print

Przewodnik Google Cloud Print Przewodnik Google Cloud Print Wersja B POL Definicje oznaczeń W tym podręczniku użytkownika zastosowano następujący styl uwag: Uwagi informują o tym, jak należy reagować w danej sytuacji, lub zawierają

Bardziej szczegółowo

ZALETY KORZYSTANIA Z TRAKA TOUCH

ZALETY KORZYSTANIA Z TRAKA TOUCH ZALETY KORZYSTANIA Z TRAKA TOUCH SERVER Klucze dostępne 24/7, ale tylko dla autoryzowanych użytkowników Rozwiązanie standalone oparte o oprogramowanie Windows CE Pełny audyt pobrań i zwrotów kluczy, a

Bardziej szczegółowo

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Program, to lista poleceń zapisana w jednym języku programowania zgodnie z obowiązującymi w nim zasadami. Celem programu jest przetwarzanie

Bardziej szczegółowo

Rozdział 4 KLASY, OBIEKTY, METODY

Rozdział 4 KLASY, OBIEKTY, METODY Rozdział 4 KLASY, OBIEKTY, METODY Java jest językiem w pełni zorientowanym obiektowo. Wszystkie elementy opisujące dane, za wyjątkiem zmiennych prostych są obiektami. Sam program też jest obiektem pewnej

Bardziej szczegółowo

PLAN REALIZACJI MATERIAŁU NAUCZANIA Z INFORMATYKI II. Uczeń umie: Świadomie stosować się do zasad regulaminów (P).

PLAN REALIZACJI MATERIAŁU NAUCZANIA Z INFORMATYKI II. Uczeń umie: Świadomie stosować się do zasad regulaminów (P). PLAN REALIZACJI MATERIAŁU NAUCZANIA Z INFORMATYKI II DZIAŁ I: KOMPUTER W ŻYCIU CZŁOWIEKA. 1. Lekcja organizacyjna. Zapoznanie uczniów z wymaganiami edukacyjnymi i PSP. 2. Przykłady zastosowań komputerów

Bardziej szczegółowo