SPIS TREŚCI PROGRAMOWANIE JAVA BIBLIOTEKA MIESIĄCA KLUB TECHNICZNY JĘZYKI PROGRAMOWANIA PROGRAMOWANIE URZĄDZEŃ MOBILNYCH PROGRAMOWANIE C++

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

Download "SPIS TREŚCI PROGRAMOWANIE JAVA BIBLIOTEKA MIESIĄCA KLUB TECHNICZNY JĘZYKI PROGRAMOWANIA PROGRAMOWANIE URZĄDZEŃ MOBILNYCH PROGRAMOWANIE C++"

Transkrypt

1

2

3

4 12/2009 (180) SPIS TREŚCI 27 Opis DVD 06 Aktualności Rafał Kocisz BIBLIOTEKA MIESIĄCA 12 Google Collections Library Eleganckie i efektywne kolekcje w Javie Rafał Kocisz Kolekcje to nieodłączny element skrzynki narzędziowej każdego programisty. Jeśli programujesz w Javie i chciałbyś uprościć oraz zoptymalizować Twój kod odpowiedzialny za obsługę kolekcji, to trafiłeś na właściwy artykuł. Zapraszamy do lektury! KLUB TECHNICZNY 16 Połączenie Flex oraz Flash CS3/CS4 Szybkie tworzenie własnych komponentów Mateusz Małczak Poznajemy rozszerzenie dla programu Flash CS3/CS4 pozwalające na szybkie tworzenie komponentów oraz kontenerów dla frameworka Flex. Wykorzystamy podejście niewymagające znajomości architektury komponentów, a pozwalające znacznie wzbogacić nasze aplikacje. 20 Technologie Progress OpenEdge Część 4. Serwer Aplikacji OpenEdge Piotr Tucholski Serwer Aplikacji (AppServer) OpenEdge jest potężnym silnikiem transakcyjnym opartym na nowoczesnych standardach. Zapewnia bezpieczne zarządzanie b. dużymi transakcjami, niezależność od interfejsu użytkownika oraz możliwość stworzenia aplikacji zgodnej ze standardami architektury zorientowanej na serwisy (SOA). PROGRAMOWANIE C++ 24 Metaprogramowanie Algorytmy wykonywane w czasie kompilacji Robert Nowak Metaprogramowaniem nazywa się tworzenie programów, które w wyniku działania dostarczają programów. Metaprogramy stosujemy aby zwiększyć szybkość działania programów oraz ich czytelność, a także aby unikać powielania kodu, wtedy gdy te same operacje chcemy wykonać dla grupy typów. PROGRAMOWANIE JAVA 28 Przewodnik po SCJP Czyli certyfikat z Javy część 1 Krzysztof Rychlicki Kicior Proces zdobywania certyfikatów, potwierdzających umiejętności z różnych dziedzin wiedzy, stał się jednym z ważniejszych elementów osobistego rozwoju. Proces ten ma miejsce również w branży IT; certyfikaty dla programistów (Java lub.net), administratorów czy sieciowców (Cisco) można coraz częściej odnaleźć w CV osób starających się o pracę. 36 BlockingQueue w Javie Prezentacja interfejsu BlockingQueue, kilku możliwych jego wykorzystań, oraz słów kilka o programowaniu wielowątkowym w Javie Dariusz 'Scythe' Wawer Synchronizowana kolejka to podstawa wielu aplikacji wielowątkowych prawdopodobnie większość z nas kiedyś taką zaimplementowała. Pytanie jednak brzmi: po co? Skoro często warto po prostu sięgnąć po gotowe rozwiązanie, takie jak BlockingQueue. JĘZYKI PROGRAMOWANIA 40 Delphi i C++Builder 2010 Nowości wprowadzone w Delphi 2010 i C++Builder 2010 Bogdan Polak Środowisko Delphi powstało w roku 1995, C++Builder dwa lata później. Mimo upływu czasu ich architektura (komponenty VCL, programowanie wizualne) nadal zapewnia przewagę nad innymi platformami programistycznymi, w obszarze budowy aplikacji okienkowych dla systemu Windows. PROGRAMOWANIE URZĄDZEŃ MOBILNYCH 46 J2ME: Bluetooth i MMAPI Czyli Bluetooth i MMAPI w jednym stali domu Szymon Ulewicz Niewiele osób zdaje sobie sprawę z możliwości swoich telefonów komórkowych. W tym artykule zaznajomimy się z dwiema bibliotekami dostępnymi dla platformy J2ME, które posiadają ogrom możliwych zastosowań. 4 12/2009

5 WARSZTATY 60 Czyń CUDA (część 1) Architektura Michał Matuszak, Jacek Matulewski GPGPU to skrót, który na ustach informatyków pojawia się coraz częściej. Oznacza general-purpose computing on graphics processing units, czyli możliwość przeprowadzania dowolnych silnie zrównoleglonych obliczeń na procesorach kart graficznych, których spora moc była do tej pory wykorzystywana jedynie do generowania grafiki trójwymiarowej, czyli w wielu przypadkach okazjonalnie. Miesięcznik Software Developer s Journal (12 numerów w roku) jest wydawany przez Software Press Sp. z o.o. SK Redaktor naczelny: Łukasz Łopuszański lukasz.lopuszanski@software.com.pl Projekt okładki: Agnieszka Marchocka Skład i łamanie: Monika Grotkowska monika.grotkowska@software.com.pl 68 AJAX w jquery Jak stworzyć efektowną galerię w AJAX-ie z wykorzystaniem frameworka jquery cz. 1 Leszek Sewastianowicz Coraz więcej stron w Internecie wykorzystuje technologię AJAX. Jej znajomość nie jest już wyjątkowym atutem programisty, a coraz częściej jedną z podstawowych umiejętności wymaganych praco- i zleceniodawców. Można też znaleźć wiele rozwiązań ułatwiających pisanie programów wykorzystujących AJAX-a. Jednym z nich jest framework jquery. EFEKTYWNOŚĆ PRACY 72 Skromny programista O nieprzecenianiu własnych możliwości Michał Bartyzel, Mariusz Sieraczkiewicz Ponad trzydzieści lat temu Edgar Dijkstra w swoim przemówieniu The humble programmer stwierdził, że ludzkie czaszki są zbyt małe, by poradzić sobie z problemami programistycznymi. Zadziwiające jest to, jak praktyczny wydźwięk ma to stwierdzenie. AKADEMIA UML 76 Liczebności klas uczestniczących w powiązaniach Szymon Zioło Określenie liczebności klas biorących udział w powiązaniach na diagramach klas to jedna z najważniejszych decyzji analitycznych, mająca niebagatelny wpływ na funkcjonalność modelowanego systemu. Zobaczmy więc, jak poprawnie określać liczebności, aby uniknąć przykrych niespodzianek. Kierownik produkcji: Andrzej Kuca andrzej.kuca@software.com.pl Dział produkcji i kolportażu: Alina Stebakow alina.stebakow@software.com.pl Nakład: egz. Adres korespondencyjny: Software Press Sp. z o.o. SK, ul. Bokserska 1, Warszawa, Polska tel , fax cooperation@software.com.pl Dział reklamy: adv@software.com.pl Obsługa prenumeraty: EuroPress Polska software@europress.pl Dołączoną do magazynu płytę CD 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: cooperation@software.com.pl 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 CD-ROM 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ą. 5

6 Aktualności Native Client jest już częścią Google Chrome Uruchomienie i wykorzystanie stworzonej przez Google'a wtyczki Native Client nie należało do spraw prostych dlatego też dla większości użytkowników możliwość zagrania w Quake czy uruchomienie innych obliczeniowo wymagających aplikacji z poziomu przeglądarki była jedynie ciekawostką. Być może teraz się to zmieni Mountain View wydało wersję Google Chrome ze zintegrowanym Native Clientem. Native Client został po raz pierwszy zaprezentowany w grudniu 2008 roku. W czerwcu br. osiągnął status platformy deweloperskiej. Wtyczka pozwala na uruchamianie aplikacji webowych z bezpośrednim dostępem do procesora dzięki temu możliwe będzie uruchamianie w przeglądarce bardzo wymagających programów, np. edytorów wideo czy gier. Wersja Chrome po raz pierwszy wprowadza w edycji dla Windows Native Clienta można w niej bez żadnych dodatkowych czynności uruchomić testowe aplikacje, korzystające z binarnego kodu. Wprowadzenie wtyczki jako standardowego komponentu Chrome'a dla Windows było możliwe dzięki szeroko zakrojonym audytom bezpieczeństwa tej technologii. Oferuje ona mechanizm piaskownicy, który nie pozwala uruchamianym aplikacjom na uzyskanie nieuprawnionego dostępu do zasobów systemu operacyjnego. Początkowo implementacja ta miała liczne błędy ale Google wezwało czołowych hakerów, aby szukali błędów w tej technologii, oferując im pokaźne nagrody za odnalezienie usterek. Ostatecznie wyeliminowano 22 groźne luki, zanim technologię uznano za bezpieczną. Mimo to Native Client domyślnie jest wyłączony w najnowszym Chrome. Osoby, które chcą poeksperymentować z tą technologią, powinny skorzystać ze wskazówek znajdujących się na stronie wiki projektu. Oprócz Native Clienta, nowe Chrome przynosi kilka innych zmian i poprawek, m.in. lepsze działanie Omniboksa i trybu Incognito czy umożliwienie umieszczania przycisków rozszerzeń na pasku narzędzi. Jak widać, Google jest coraz bliższe realizacji swojej wizji uczynienia z przeglądarki superszybkiej platformy uruchomieniowej dla aplikacji webowych, które w niczym nie będą ustępowały ich desktopowym odpowiednikom. Native Client wraz z wtyczką O3D, pozwalającą na bezpośredni dostęp do hardware'u karty graficznej, pozwolą Chrome na uruchamianie nie tylko prostych pakietów biurowych czy klientów poczty ale też np. nieliniowych edytorów wideo czy gier 3D. Barrelfish: system operacyjny 21-go wieku rodem z Microsoftu? Windows 7 jest takim systemem operacyjnym, jakim od początku powinna być Vista. Trudno jednak nie zauważyć, że wszelkie opisy nowości w Windows 7 nie koncentrowały się tak naprawdę na systemie operacyjnym, ale na czymś, co z punktu widzenia architektury oprogramowania jest bez znaczenia interfejsie użytkownika. Redmond potrafi jednak stworzyć więcej niż cukierkowe interfejsy. Jego zespół badawczy zaprezentował bardzo ciekawy nowy system operacyjny dla wielordzeniowych maszyn o nazwie Barrelfish. Nad projektem pracowali uczeni z laboratoriów Microsoft Research w Wielkiej Brytanii i politechniki w Zurichu. Efekt ich prac w ogóle nie przypomina Windows to praktyczne ćwiczenie z realizacji koncepcji multikernela w którym poszczególne rdzenie procesora są traktowane jako sieć niezależnych rdzeni, podobnie jak to się dzieje w systemach rozproszonych. Do tej pory w konstrukcji wielordzeniowych maszyn od Intela, AMD czy Suna kładło się nacisk na możliwość dostępu każdego rdzenia do współdzielonej pamięci i rozwijało technologie takie jak HyperTransport, pozwalające właśnie na zarządzanie tym procesem. Jednak bez zastosowania technik programowania równoległego nierzadko okazywało się, że poszczególne programy działają wolniej na procesorach wielordzeniowych, niż na klasycznych jednordzeniowych. Dlatego np. AMD zaczęło rozwijać techniki tzw. lekkiego profilowania (LWP), które pozwalały na zwiększenie wydajności oprogramowania na wielordzeniowych maszynach. Jednak zespół badaczy Microsoftu jest zdania, że to ślepa uliczka. W artykule pt. The Multikernel: A new OS architecture for scalable multicore systems ( barrelfish_sosp09.pdf) twierdzą oni, że przeniesienie tradycyjnych funkcjonalności systemu operacyjnego na rozproszony system procesów, które komunikują się przez przekazywanie wiadomości i w którym nie zachodzi wymiana danych między rdzeniami na najniższym poziomie, pozwala na znaczne zwiększenie wydajności względem dotychczasowych rozwiązań. Wszystko to jest też bardziej skalowalne i łatwiejsze w przystosowaniu do rozmaitych architektur sprzętowych. Zespół uczonych: Andrew Baumann, Paul Barham, Pierre-Evariste Dagand, Tim Harris, Rebecca Isaacs, Simon Peter, Timothy Roscoe, Adrian Schüpbach i Akhilesh Singhania twierdzi, że komputery w coraz większym stopniu przypominają systemy rozproszone i powinny być właśnie w taki sposób programowane. Rozwiązaniem jest Barrelfish. Zastępuje on architekturę współdzielonej pamięci znacznie uproszczonym schematem, w którym każdy rdzeń ma de facto własny OS i wyłączną dla siebie pamięć. Wszystko, co każdy rdzeń powinien wiedzieć o innych, pojawia się na wspólnej dla nich szynie, wyświetlającej wiadomości otrzymane od rdzeni. Badacze podkreślają, że konstrukcja taka nie wyklucza dzielenia pamięci pomiędzy rdzeniami, jedynie ustala, że działanie systemu od tego nie zależy. Trzy fundamentalne założenia Barrelfisha to zatem ujawnienie całej komunikacji między rdzeniami, traktowanie stanów jako zreplikowanych, a nie współdzielonych, i uczynienie całej struktury OS-a neutralną względem architektury sprzętowej. Według twórców takie jednordzeniowe jądra, wdrożone na rozproszonym systemie, pozwalają na osiągnięcie znacznie większej neutralności względem platformy sprzętowej, niż jest to obecnie. Przenosząc system np. z intelowskiego Xeona na Niagarę Suna, wystarczy jedynie zmienić sposób połączenia ze sobą poszczególnych komponentów, bez przeprojektowywania poszczególnych kerneli. Pierwszą migawkę systemu Barrelfish twórcy udostępnili na wolnej licencji BSD. Można ją pobrać ze strony release_ html /2009

7 Aktualności Programowanie w stylu Agile coraz popularniejsze. Analityk Forrestera, Dave West, wieszczy zmierzch klasycznych metodologii oprogramowania, twierdząc, że przyszłość należy do podejścia znanego jako Agile. Z drugiej strony promujący w Australii Agile od kilku lat John Dalton ostrzega przed pochopnym z niego korzystaniem. Jakie zatem faktycznie Agile ma znaczenie dla deweloperów naszych czasów? Przypomnijmy, że w 2001 roku w Sieci pojawił się Manifest Zwinnego Wytwarzania Oprogramowania (Agile). Stworzony przez speców od programowania ekstremalnego i pragmatycznego głosił m.in., że poprzez wytwarzanie oprogramowania oraz pomaganie innym w tym zakresie odkrywamy lepsze sposoby realizowania tej pracy. W wyniku tych doświadczeń przedkładamy: jednostki i współdziałania między nimi nad procesy i narzędzia, działające oprogramowanie nad dokładną dokumentację, współpracę z klientem nad negocjację umów, reagowanie na zmiany nad realizowanie planu. Oznacza to, że wprawdzie doceniamy to, co wymieniono po prawej stronie, to jednak bardziej cenimy to co wymieniono po lewej. Podczas swojej sesji na wirtualnej konferencji w Hewlett-Packard, starszy analityk Forrestera Dave West stwierdził, że w tradycyjnym kaskadowym podejściu do tworzenia oprogramowania istnieją wyizolowane obszary, w których realizuje się bardzo specjalistyczne zadania. W miarę rozwoju firmy, podejście to prowadzi do coraz większego skupiania się na przechodzeniu od jednego etapu projektu do kolejnego, co prowadzi do wzrostu jego złożoności. Efekt jest przykry projekt staje się coraz mniej zrozumiały. W sytuacjach, gdy brakuje zrozumienia, odkrywamy, że procesy stają się coraz bardziej skomplikowane, a to oznacza, że planowanie nie jest możliwe. Nie możemy w pewnym momencie powiedzieć, żeby Bob zrobił X, ponieważ nie wiemy czym jest X i nie wiemy czy Bob nadaje się do zrobienia tego, ponieważ za mało wiemy o całym problemie objaśnił West. Zdaniem Westa, Zwinne Programowanie jest tym, co może uratować firmy przed zagubieniem się w rosnącej złożoności oprogramowania. Nie jest to tylko czcza teza analityk Forrestera przedstawił dokumentujące to statystyki. W pierwszym kwartale 2009 roku Forrester pytał badane firmy software'owe o używane metodologie programowania. 30% respondentów stwierdziło, że korzysta z Agile. Podobne badanie przeprowadzone dwa lata temu pokazało, że z praktyk Agile korzystało od 8 do 10% respondentów. West korzystając z tych wyników wyjaśnia, że można dostrzec zmianę w trajektorii rozwoju firm. Model specjalizacji pracy zostaje coraz częściej odrzucony na rzecz modelu, mówiącego o regularnym i szybkim dostarczaniu oprogramowania, większym zaangażowaniu klientów i odmiennej organizacji zespołów. Najtrudniej za tym nadążyć dużym korporacjom, obawiającym się świata, w którym poszczególne zmiany w projekcie nie są zatwierdzane w trzech kopiach przez klientów. Jednak mniejsze firmy czują się z tym znakomicie, szczególnie, że do dyspozycji mają narzędzia do programowania Agile, dostarczane przez IBM-a czy HP. Nowy cykl zarządzania życiem produktu angażuje też w większym stopniu analityków biznesowych przestają być już tylko twórcami dokumentacji, stają się decydentami, wpływającymi na ostateczny kształt rozwiązania. West przedstawił finalnie porady dla dużych firm, które by chciały zastosować Agile. Jego zdaniem, należy skupić się na tych procesach, które można wdrożyć już dzisiaj. Niemal jednocześnie w Australii odbywała się konferencja poświęcona Zwinnemu Programowaniu. Wystąpił na niej John Dalton, główny menedżer firmy Sensis. Stwierdził on, że choć korzyści z programowania Agile stają się coraz bardziej wyraźne, to nie jest to coś, do czego można podchodzić zbyt lekko. Jednym z problemów jest wymóg współdziałania, który dla wielu programistów jest wręcz nie do zniesienia. Przyzwyczajeni do pracy w izolacji, przed swoimi ekranami, nagle muszą siedzieć w towarzystwie ubranych w garnitury i krawaty biznesmenów. Kłopoty sprawia też zmuszenie do współpracy ludzi biznesu. Przyzwyczajeni, że wszystkie trudne kwestie zrzucają na głowy specjalistów od technologii, nagle odkrywają, że nie mogą pozbyć się całej odpowiedzialności. Oznacza to, że menedżerowie średniego szczebla, muszą znacznie bardziej angażować się we współpracę z działami IT niż niegdyś. Jeśli zaś taki menedżer nie jest zbyt kompetentny w tym co robi, może się on okazać niezwykle szkodliwy dla całego procesu. Niemniej Dalton przyznał, że w wielu sytuacjach Agile jest niezastąpione. Wspomniał o historii firmy Lonely Planet, w której pracował jako szef działu IT. Objął tę pracę w momencie, gdy firma przechodziła reorganizację, od niewielkiego wydawcy książek do dużej firmy z branży turystycznej. Próba stworzenia systemu informatycznego w modelu kaskadowym okazała się sromotną porażką. Dzięki zastosowaniu praktyk Agile, które poznał w poprzedniej firmie, Dalton zdołał szybko przygotować całą niezbędną infrastrukturę Lonely Planet. Kompatybilne z Windows 7? Kompatybilne z wersjami 64-bit! Redmond pokazało, że zależy mu na popularyzacji 64-bitowej wersji swojego najnowszego systemu. Zgodnie z informacjami, które przedstawił na korporacyjnym blogu Mark Relph, szef zespołu Windows Ecosystem, prawo do korzystania z logo Compatible with Windows 7 otrzymają tylko te produkty, które będą działać ze wszystkimi wersjami Windows 7 w tym z wersjami 64-bitowymi. Procesory 64-bitowe są montowane w większości komputerów dostępnych na rynku. Wciąż jednak znaczna część użytkowników korzysta z systemów 32-bitowych. Powodem są m.in. problemy z oprogramowaniem w systemach 64-bitowych jakość aplikacji, jak i sterowników jest dla nich niższa niż dla wersji 32-bitowych. Aby temu zaradzić, program certyfikacyjny, w ramach którego producenci sprzętu i oprogramowania mogą uzyskać logo Compatible with Windows 7, będzie wymagał pełnej zgodności produktów także z 64-bitowymi wersjami Windows 7. Jak poinformował Relph, obecnie już ponad 6000 urządzeń i aplikacji uzyskało logo zgodności. Ich listę można obejrzeć na stronie Zawarte są tam też użyteczne wskazówki dla deweloperów, które pomogą im dostosować swoje produkty do wymogów jakości stawianych przez Redmond. Wkrótce ostatnia beta.net 4 i Visual Studio 2010 Microsoft udostępnił subskrybentom MSDN wersję Beta 2 środowiska programistycznego Visual Studio 2010 oraz platformy.net Framework 4.0. Beta 2 prawdopodobnie będzie już ostatnią przedpremierową wersją tej rodziny rozwiązań. Wydanie finalnej wersji planowane jest już bardzo konkretnie na 22 marca przyszłego roku. Beta 2 oczywiście nie wnosi praktycznie żadnych nowych funkcji, programiści Microsoftu skupili się teraz na poprawianiu błędów oraz na podwyższaniu wydajności oraz jakości produktów. Przy okazji komunikatu o wersji Beta 2 pojawiły się informacje o edycjach i cenach nowego Visual Studio Okazuje się, że Microsoft ogranicza liczbę edycji produktu do trzech Professional (orientacyjna cena to 799 dolarów bez MSDN i 1199 dolarów z subskrypcją), Premium (5469 dolarów) oraz Ultimate (11,924 dolarów). Wersja Ultimate zawierać będzie wszystkie funkcje znane obecnie z pakietu Team System, a wszystkie edycje poza najtańszą Professional standardowo sprzedawane będą z subskrypcją MSDN. Subskrybenci będą otrzymywać za darmo prawo użytkowania Visual Studio Team Foundation Server 2010, określoną liczbę godzin obliczeniowych na platformie Windows Azure i do 40 godzin szkoleń on-line rocznie. Warto także wspomnieć, że każdy aktywny subskrybent MSDN na poziomie Premium w momencie premiery Visual Studio 2010 zostanie automatycznie przeniesiony do wyższej edycji

8 Aktualności Moblin: intelowska wizja telefonu komórkowego Intel zaprezentował na Intel Developer Forum 2009 nową wersję interfejsu mobilnego Moblin 2.1. Interfejs przygotowany został z myślą o nowej generacji urządzeń, które wykorzystując procesory Intel Atom, będą zarówno wydajnymi komputerami, jak i wszechstronnymi smartfonami. Moblin jest mobilną dystrybucją Linuksa, pierwotnie przygotowywaną z myślą o netbookach i nettopach (miniaturowe komputery biurkowe). Wraz z nową wersją oprogramowania, system zaczyna być też adresowany do użytkowników urządzeń typu MID stojących na granicy między smartfonami i netbookami/umpc, wyposażonymi w funkcje telefoniczne. Intel planuje zastosować telefoniczną wersję systemu Moblin do obsługi platformy Moorestown, z procesorami Atom wykonanymi w technologii 45nm. Platforma zakłada sprzętową akcelerację kodowania i dekodowania wideo oraz oferuje wsparcie dla łączności Bluetooth, HSPA, WiMAX i WiFi, nie zabraknie też pozycjonowania przy użyciu GPS-u czy nawet mobilnej telewizji. Microsoft i Intel wprowadzą Silverlighta do Moblina Microsoft nie ustaje w wysiłkach zmierzających do popularyzacji platformy Silverlight obecnie najmocniejszego konkurenta Flasha firmy Adobe. Najnowszy pomysł Redmond to przygotowanie implementacji dla stworzonej przez Intela wersji Linuksa dla urządzeń mobilnych: Moblina. Amerykańska korporacja porozumiała się z Intelem w sprawie wprowadzenia Silverlighta do systemów operacyjnych bazujących na procesorach Atom. Przede wszystkim chodzi tu właśnie o platformę Moblin. Intel oficjalnie poinformował, że Silverlight będzie działał w Moblinie już na początku 2010 roku. Pozwoli to na uruchamianie interaktywnych aplikacji webowych w netbookach, smartfonach, a nawet w komputerach pokładowych samochodów. Microsoftowi zależy na tym, aby jego platforma nie była ograniczona wyłącznie do desktopów i laptopów klasy PC. Flash zagarnia ponad 95% tego rynku i pokonanie go konwencjonalnymi metodami jest po prostu niemożliwe. Redmond chce więc znaleźć niszę, w której wyprzedzi Adobe. Warto również pamiętać, że inżynierowie Novella stworzyli otwartą wersję platformy Silverlight o nazwie Moonlight. Będzie ona wykorzystywana w klasycznych dystrybucjach Linuksa. Od 22 września br. Silverlight jest również oficjalnie obsługiwany przez system Windows Embedded CE. Gartner: za trzy lata Android numerem drugim na rynku smartfonów Choć obecnie Android kontroluje zaledwie dwa procent rynku smartfonów, to jego perspektywy wzrostu są znakomite przynajmniej według prognoz Kena Dulaneya, analityka z firmy badawczej Gartner. Jego zdaniem do 2012 roku mobilny system operacyjny Google'a będzie na tym rynku numerem drugim. Dulaney przewiduje, że przez najbliższe lata udział Androida w rynku wzrośnie siedmiokrotnie podobnie jak to się stało z iphonem podczas jego dynamicznego okresu wzrostu w 2008 roku. Jednak iphone nasycił już swoją niszę tańszy i bardziej różnorodny Android może dotrzeć do większej liczby osób. Analityk Gartnera uważa, że numerem jeden na rynku smartfonów pozostanie Nokia ze swoim Symbianem, utrzymując wciąż około 39% rynku. Android uzyska 14,5%, iphone OS utrzyma się na poziomie nieco poniżej 14%, kolejne miejsca zajmą Windows Mobile oraz BlackBerry OS (RIM), kontrolując nieco ponad 12% rynku, a obecne miejsce Androida zajmie PalmPre, z udziałem na poziomie nieco ponad 2%. Jak zatem widać, najwięcej straci na Androidzie Nokia której Symbian jest obecnie instalowany na co drugim sprzedawanym smartfonie. Zdaniem Kena Dulaneya, fińska firma będzie tracić przede wszystkim najbardziej zaawansowanych użytkowników, którzy wybiorą Androida ze względu na jego integrację z usługami Google'a i innowacyjne aplikacje. Analityk jest przekonany, że system mobilny Google'a rozwija się pod względem technicznym w szybkim tempie o ile jego pierwsze wydanie, towarzyszące nieudanemu raczej telefonowi G1, było przyjęte raczej chłodno, to Android 1.5 Cupcake był już całkiem dobrze przemyślany. Na korzyść Androida ma też działać sklep z aplikacjami i łatwe do wykorzystania środowisko deweloperskie. Przygotowywane produkty dla konsumentów i biznesu powinny zrobić z Androida dominującą platformę na rynku mobilnym stwierdził Dulaney. Jest to możliwe tak dzięki otwartości tego systemu, jak i szerokiemu zakresowi urządzeń, na których będzie on działał. iphoneos można uruchomić jedynie na telefonach od Apple'a, tymczasem według analityka, w 2010 roku na rynku będzie około 40 modeli telefonów z Androidem, produkowanych przez największe, odnoszące sukcesy firmy, takie jak Motorola czy HTC. A czemu producenci tak chętnie wybierają Androida? Dulaney uważa, że zasługą tego jest dobre wyważenie funkcji systemu. Wyjaśnia to następująco: telefony z Symbianem i Windows Mobile są skoncentrowane zdecydowanie na funkcjach komunikacyjnych urządzenia, podczas gdy iphone koncentruje się przede wszystkim na aplikacjach. Tymczasem Android bardzo dobrze połączył te obszary, pozwalając użytkownikom na łatwe wykonywanie częstych operacji, bez konieczności przedzierania się przez złożone menu i przełączania między aplikacjami. Idealną implementacją tej koncepcji ma być Cliq Motoroli z interfejsem Motoblur, który bardzo efektywnie radzi sobie z czynnościami komunikacyjnymi Ballmer: Microsoft nie pozbierał się po Viście Steve Ballmer, prezes firmy Microsoft, oficjalnie przyznał, że wydanie Visty źle odbiło się na dobrym imieniu korporacji i że firmie nigdy później nie udało się już zatrzeć złego wrażenia powstałego po premierze systemu. System Windows Vista pojawił się na rynku w 2007 roku. Od początku krytykowany był on m.in. za niską wydajność. Według Ballmera, Microsoft popełnił błąd podczas projektowania Visty polegający na zwiększeniu bezpieczeństwa systemu kosztem zmniejszenia kompatybilności. Prezes Microsoftu wierzy jednak, że reputacja jego firmy poprawi się wraz z wydaniem Windows 7, do którego uaktualnienie z Visty powinno być w przeważającej większości przypadków bezbolesne i nie wymaga zmian sprzętowych. Głosy z Microsoftu mówiące o tym, że Vista jest produktem nieudanym, słychać już od jakiegoś czasu. Teraz oficjalnie firma uznała aktualnie jeszcze najnowszy na rynku system za niewypał. Konto jest więc czyste i przygotowane na przyjęcie Windows 7, który już niebawem zajmie miejsce Visty na sklepowych półkach /2009

9 Aktualności Microsoft Technology Summit 2009 Pod koniec września br. odbyła się czwarta edycja Microsoft Technology Summit (MTS). Przez dwa dni 3000 uczestników konferencji miało okazję zapoznać się z najnowszymi produktami Microsoft, jak również wymienić się opiniami z profesjonalistami oraz mówcami na temat najważniejszych wyzwań stojących przed rynkiem IT. Microsoft jest obecnie firmą, która na badania i rozwój przeznacza aż 9,1 miliarda dolarów, co plasuje nas na pierwszym miejscu wśród wszystkich firm informatycznych na świecie powiedział Jacek Murawski, dyrektor generalny Microsoft Polska. Nasz przemysł dojrzał. Obecnie nie jest możliwe, aby kilku zapaleńców z setką dolarów każdy mogło dokonać przełomowego odkrycia w IT. Warto zatem stawiać na rozwiązania oferowane przez duże firmy, które nie boją się inwestować w badania i rozwój. A Microsoft się nie boi, czego dowodem są prezentowane na MTS rozwiązania. Udowodniły to już pierwsze sesje konferencji, podczas których przedpremierowo publicznie zaprezentowano Windows 7 oraz Windows Server 2008 R2. Były to najważniejsze sesje tegorocznego MTS. Windows 7 to piękny mechanizm powiedział Patryk Góralowski z polskiego oddziału Microsoft podczas prezentacji. Nowy Windows powstał w oparciu o wyniki analizy opinii użytkowników Windows Feedback Program, który jest dostępny od momentu pojawienia się na rynku Windows Vista. Dzięki tej analizie został stworzony mechanizm, który jest prosty, mocny i elegancki. Prosty w obsłudze i zrozumieniu przez użytkownika. Mocny, ponieważ jest dobrze zorganizowany wewnętrznie i jest w stanie wykonać wiele różnych zadań jednocześnie. Elegancki, ponieważ jest doskonale zaprojektowany i posiada najlepsze cechy swojego gatunku. Prezentacja Windows 7 poświęcona była siedmiu obszarom, które cechują nowy system operacyjny, czyli: prostota obsługi, skalowalność do potrzeb użytkownika, bezpieczeństwo użytkownika i jego zasobów zapisanych w komputerze, multimedialność, wydajność oraz rozwiązania o charakterze pro-ekologicznym, wspieranie użytkownika w najważniejszych momentach pracy na komputerze, współpraca z innymi urządzeniami i starszymi programami. Każdy z obszarów obejmował omówienie tych aplikacji wchodzących w skład Windows 7, które czynią go wyjątkowym rozwiązaniem. Doceniają to pierwsi użytkownicy systemu, których w Polsce jest już 300 tysięcy, choć do oficjalnej premiery pozostało jeszcze kilka tygodni. Uczestnicy konferencji mogli przekonać się, jakim udogodnieniem w pracy z Windows 7 są takie rozwiązania jak Problem Steps Recorder, Windows Troubleshooting Platform, tryb Windows XP czy też BitLocker to Go. Nie mniej emocjonująca była prezentacja Windows Server 2008 R2, który swoje największe możliwości odkrywa w połączeniu z Windows 7. Jedną z takich funkcji będzie DirectAccess. Ma ona umożliwiać m.in. zdalny, bezpieczny dostęp do zasobów sieci korporacyjnej spoza firmowego środowiska ITi bez wykorzystania połączeń tunelowych VPN. Wydarzeniem drugiego dnia MTS 2009 była możliwość przetestowania komputera Surface, na którym jednocześnie może pracować kilku użytkowników i to bez pomocy myszki czy klawiatury. Wokół niepozornie wyglądającego urządzenia gromadzili się pasjonaci IT, którzy na własnej skórze chcieli się przekonać, czy to możliwe. Surface przypomina stolik do kawy, którego blat jest jednocześnie ekranem oraz interfejsem komputera. Podczas MTS 2009 zaprezentowano wiele technologii Microsoft, w tym Sea Dragon do szybkiej obsługi informacji optycznej, Windows Mobile 6.5 czy Silverlight 3. Program konferencji oraz jej przebieg, poziom seminariów oraz poszczególnych warsztatów został bardzo dobrze przyjęty przez 3000 zarejestrowanych uczestników MTS, którzy już teraz czekają na jego kolejną edycję. Testowa wersja Google Web Toolkit 2.0 Popularny webowy framework Google Web Toolkit jest już dostępny w wersji 2.0. Niestety trochę jeszcze czasu minie, zanim będzie się nadawał do zastosowań produkcyjnych wydana wersja została oznaczona jako Milestone 1, zaś jej twórcy ostrzegają, że jest pełna usterek. Jednak zainteresowani GWT już teraz dzięki niej mogą zapoznać się z najważniejszymi innowacjami. Google Web Toolkit to de facto skrośny kompilator Javy do JavaScriptu, który pozwala na tworzenie AJAX-owych aplikacji, nie wymagając od dewelopera jakiejkolwiek znajomości tej technologii. Po napisaniu kodu w Javie, GWT przetwarza część kliencką na Java- Script, HTML i CSS, zaś część serwerowa zostaje skompilowana do serwletu Javy, gotowego do uruchomienia na serwerze aplikacyjnym. Zaletą takiego rozwiązania jest znacznie łatwiejsze wykrywanie błędów, oraz uwolnienie się od zmory dopasowywania aplikacji do poszczególnych przeglądarek o wszystko to dba sam framework. Deweloperzy GWT zdecydowali się zmienić w wersji 2 stosowaną terminologię. Tryb hostowany to teraz tryb deweloperski, a tryb webowy to tryb produkcyjny. Nowe GWT wykorzystuje w trybie deweloperskim system wtyczek, dzięki czemu ten sam plik instalacyjny może być używany na dowolnej platformie. Wcześniej debugowanie odbywało się w specjalnej hostowanej przeglądarce, teraz będzie to możliwe w normalnych przeglądarkach Chrome, Firefoksie czy Internet Explorerze. Wystarczy tylko wybrać odpowiednią dla danego browsera wtyczkę. Pojawiła się opcja podzielenia kodu na wiele fragmentów, co ma przyspieszyć uruchamianie aplikacji, oraz deklaratywnego budowania interfejsów użytkownika za pomocą XML-a. Wprowadzono także moduł HtmlUnit do przeprowadzania testów, który jest napisany całkowicie w Javie. GWT 2.0 przynosi także pakietowanie zasobów (ClientBundle). W wersji 1.4 frameworka wprowadzono mechanizm ImageBundles, który pozwalał na automatyczne tworzenie sprite'ów z obrazków. ClientBundle uogólnia tę technikę na wszelkie zasoby, pozwalając łączyć w jednym pliku wszelkie zasoby w tym pliki tekstowe, XML-owe czy arkusze CSS. Pozwala to na znaczne ograniczenie liczby połączeń sieciowych generowanych przez aplikację co ważne jest szczególnie dla aplikacji mobilnych. Dzięki wprowadzonym w architekturze zmianom, GWT 2.0 jest dostarczany w tym samym pliku dla trzech najważniejszych systemów Linuksa, Mac OS X-a i Windows. Całość, wydaną na wolnej licencji Apache, można pobrać tutaj. Twórcy projektu proszą jego użytkowników o zgłaszanie wszelkich napotkanych problemów

10 Aktualności Google przepłaciło za YouTube około miliard dolarów... Gdy w 2006 roku firma Google kupiła YouTube, wielu specjalistów zastanawiało się, co dokładnie skłoniło internetowego giganta do wyłożenia tak dużej ilości pieniędzy (1,65 miliarda dolarów). Nie jest bowiem tajemnicą, że najpopularniejszy obecnie serwis filmowy nie jest na tyle dochodowym biznesem, by można było w rozsądnym czasie odzyskać włożone w niego środki. Wiele w całej sprawie wyjaśniają stenogramy rozprawy sądowej i zeznania Erica Schmidta, prezesa Google. Wiele wskazuje na to, że Eric Schmidt gotów był zapłacić za 18-miesięczną firmę tak dużo po prostu po to, by mieć pewność, że ją kupi. Oferta musiała być bowiem na tyle atrakcyjna, by skutecznie zniechęcić potencjalnych konkurentów (m.in. Yahoo! czy Microsoft). Prezes Google przedstawił więc zarządowi spółki z Mountain View swoje wyliczenia dotyczące faktycznej ceny YouTube (około 600 milionów dolarów) oraz doliczył do tego bonus, jaki był niezbędny do tego, by mieć pewność co do kupna. Propozycja została oczywiście zaakceptowana. YouTube to spółka z bardzo niskimi dochodami. Jednakże rozwijała się ona niezwykle szybko, znacznie szybciej niż Google Video. Co więcej, krążyły pogłoski o tym, że ma zostać sprzedana. Doszliśmy więc do wniosku, że kwota 1,65 miliarda dolarów da nam pewność, że staniemy się współautorami ogromnego sukcesu YouTube w przyszłości stwierdził Eric Schmidt, odpowiadając na pytania prawnika Viacom podczas rozprawy sądowej dotyczącej pogwałcenia praw autorskich przez ten popularny serwis filmowy. Dziś trudno się nie zgodzić ze słowami prezesa Google. W maju 2006 roku YouTube miał jedynie 12 milionów unikalnych użytkowników. Dziś, tylko w Stanach Zjednoczonych, liczba ta przekroczyła już 100 milionów. Co więcej, ówczesną decyzję Erica Schmidta popierają liczni specjaliści, wśród nich James McQuivey z Forrester Research. Jego zdaniem, wykupienie YouTube miało dla Google wiele dodatkowych plusów, m.in. fakt, iż największa strona tego typu będzie należeć do tej właśnie spółki, a nie do konkurencji. Jeśli nawet nie uda się odzyskać włożonych pieniędzy, to i tak, zdaniem analityka, cała transakcja była opłacalna. Z takim twierdzeniem nie zgadza się inny znawca rynku, Josh Martin z Yankee Group Research. Uważa on, iż za tak ogromnym sukcesem YouTube stało to, że użytkownicy tego serwisu mogli zdobyć dostęp do rzeczy umieszczonych tam w sposób mogący naruszać prawa autorskie. W przypadku gdyby serwis ten oferował jedynie w pełni legalną zawartość, jego popularność mogłaby być znacznie niższa. Zgodnie z tą teorią, taki spadek popularności jest więc możliwy w przyszłości. Spory więc trwają, a rozstrzygnięcie który z głosów jest głosem biznesowego rozsądku jest obecnie niezwykle trudne, jeśli nie niemożliwe. Czas pokaże, czy szefowie Google w kolejnych latach wciąż tak przychylnie będą się wypowiadać o jednej ze swoich największych inwestycji. Flash Player października br. na konferencji Adobe MAX 2009 przedstawiony został oficjalnie Flash Player Nowa wersja odtwarzacza trafi jednak nie tylko na desktopy jej głównym celem są urządzenia mobilne. Umożliwia odtworzenie wszelkich mediów i uruchomienie każdej aplikacji Flash wszystkim smartfonom (a więc korzystającym z Symbiana, Androida, Windows Mobile, webos-a czy BlackBerry OS-a) poza iphonem Apple'a. Według Adriana Ludwiga, menedżera marketingu platformy Flash, już wkrótce udostępniona będzie deweloperska wersja beta dla Windows, Mac OS X-a i Linuksa oraz Windows Mobile, zaś implementacje dla Androida i Symbiana pojawią się na początku 2010 roku. Wersja stabilna 10.1 ma pojawić się w pierwszej połowie 2010 roku. Jednocześnie Adobe i RIM, producent popularnych w USA smartfonów BlackBerry, zapowiedzieli współpracę nad przygotowaniem wersji Flasha także dla tych urządzeń. W ten sposób Flash stanie się wszechobecny jedynie iphone'y będą go pozbawione. Nowa wersja środowiska uruchomieniowego Adobe wprowadza technologie opracowane w ramach Open Screen Project, co według Adobe pozwoli na wyświetlanie w przeglądarkach zaawansowanych aplikacji i mediów wysokiej rozdzielczości. Tworzenie aplikacj na tę platformę ma być łatwiejsze dzięki nowemu modelowi programistycznemu, pozwalającemu na łatwe wykorzystanie fragmentów istniejącego kodu. Najważniejszą jednak chyba innowacją w 10.1 jest wprowadzenie obsługi sprzętowej akceleracji grafiki, zarówno 2D, jak i 3D oraz strumieni wideo. Z kolei na urządzeniach mobilnych możliwe będzie korzystanie w aplikacjach z ekranów dotykowych, akcelerometrów i innych specyficznych elementów ich interfejsu. Flash 10.1 ma stać się także domyślną w branży technologią dostarczania mediów poprzez streaming HTTP. Zintegrowany mechanizm ochrony treści przed piractwem Adobe Flash Access 2.0 ma sprawić, że dostawcy treści będą mogli zaoferować śmiało w Sieci swoje produkcje, bez obawy, że po kilku godzinach pojawią się w serwisach z torrentami. Co ciekawe, wydanie Flasha 10.1 spotkało się z aprobatą Microsoftu, próbującego ugrać choć małą część rynku dla swojego Silverlighta. Stephanie Ferguson, główny menedżer zarządzania produktem w Redmond, stwierdziła, że technologia Adobe Flash będzie kluczowym elementem nowych telefonów z Windows, pozwalającym ludziom na cieszenie się atrakcyjnymi grami, filmami i interaktywnymi aplikacjami WWW wszędzie tam, gdzie się udadzą. Nowa wersja Flasha jest skazana na sukces. W ramach Open Screen Project działa już 50 największych firm z branży mobilnej i IT, w tym od niedawna Google. Penetracja rynku desktopów przez technologię Flash przekroczyła 98%, zaś 40% sprzedawanych telefonów zawiera odtwarzacz Flash Lite. Ponad 70% gier webowych i 75% wideo jest przygotowywanych z wykorzystaniem technologii Adobe. Porozumienia, które firma ta zawarła z producentami sprzętu, mogą tylko zwiększyć popularność Flasha. Więcej o nowej wersji odtwarzacza Adobe'a można dowiedzieć się na stronie labs.adobe.com/technologies/flashplayer10/. Z kolei na stronie labs.adobe.com/technologies/ flashplayer10/videos/ dostępne są filmy przedstawiające możliwości Flasha 10.1 na smartfonach PalmPre i urządzeniach z Windows Mobile. Apple skorzysta na wydaniu Windows 7? Oczywistym jest, że Microsoft liczy na duży sukces po wydaniu Windowsa 7. Wygląda jednak na to, że na to samo liczy... Apple. Użytkownicy zaczynają być zmęczeni Windowsem i bólami głowy, które wywołuje. Widzieliśmy to przy premierze Visty, XP i innych systemów w przeszłości. Według Crolla, czarę goryczy w użytkownikach systemów Microsoftu ma przepełnić ilość pracy, jaką muszą wykonać, aby zamienić Windowsa XP na najnowszy Windows 7. Ludzie są tym zmęczeni i to jest kolejny świetny pretekst, by sprawdzić Maca mówi. Kolejną kwestią jest koszt oprogramowania. Apple do każdego swojego systemu operacyjnego dołącza darmowy pakiet aplikacji ilife, podczas gdy użytkownicy Windowsa muszą sami zaopatrzyć się w potrzebne oprogramowanie. Wszystko to sprowadza się do tego, że paradoksalnie Apple może bardziej skorzystać na premierze Windows 7, niż sam Microsoft. Apple ponadto zaprzecza, jakoby miało planować obniżki cen, kampanię reklamową lub inne wydarzenia w odpowiedzi na wydanie Windows 7. Może to być związane z analizą przeprowadzoną przez Briana Marshalla z firmy Broadpoint.Gleacher, według którego Windows 7 nie zagrozi pozycji Apple na rynku /2009

11 Aktualności Czy ORM-y odejdą wkrótce do lamusa? Stephen Schmidt, znany w środowisku programistów Javy autor bloga Code Monkeyism, postawił bardzo kontrowersyjną tezę, która może nie spodobać się wielu osobom. Jego zdaniem mapowanie obiektowo-relacyjne (ORM) wkrótce odejdzie do lamusa, po części za sprawą coraz silniejszego ruchu NoSQL. Jak wiadomo, mapowanie obiektowo-relacyjne to odwzorowanie obiektowej architektury systemu na bazę danych o charakterze relacyjnym. Prowadzi to do powstania wirtualnej obiektowej bazy, do której można uzyskać dostęp z logiki biznesowej aplikacji. Na rynku dostępnych jest wiele gotowych narzędzi do tego np. Hibernate dla Javy, ADO.NET Entity Framework dla języków Microsoftu czy SQLAlchemy dla Pythona. Jeszcze na początku wieku ORM-y niepodzielnie królowały w świecie korporacyjnego oprogramowania. Sam autor kontrowersyjnej tezy o ich zmierzchu wyjaśnia, że jeszcze pod koniec ubiegłego stulecia napisał kilka własnych ORM-ów. Jednak dzisiaj, zdaniem Schmidta, ORMy to ułuda. Ich celem miało być szybkie tworzenie aplikacji i uniknięcie pisania wielokrotnie powtarzalnego kodu. Jednak przynoszą one problemy, które znacznie przerastają oferowane przez nie korzyści. Główny problem to wydajność nikt nie chce zaglądać do logów Hibernate SQL z tego powodu, pisze Schmidt, ponieważ gdyby zobaczyć na własne oczy kwerendy przez ten ORM generowane, to mogłoby się to źle skończyć. Jak napisał niedawno na swoim blogu niejaki Aldo z Nowej Zelandii, głównym powodem dla którego się korzysta z ORMów, jest magiczna fraza niezgodność impedancji (ang. impedancy mismatch), za co winę ponosi sama koncepcja języka zapytań, zakładająca brak algorytmicznej uniwersalności. Jednak czy takie magiczne myślenie ma sens? Aldo pisze, że zależy to od tego, w jaki sposób i jak często abstrakcje nawalają a w wypadku ORM-ów dzieje się to nader często. Można wykorzystać ORM-a i myśleć na poziomie obiektowym, ale kiedy trzeba zrobić cokolwiek bardziej skomplikowanego, np. zoptymalizować kwerendę, to znów wracamy do krainy tabel i kluczy zewnętrznych. ORM-y nie rozwiązują problemu niezgodności impedancji, lecz tylko odsuwają go w czasie. Schmidt uważa, że choć programistom się wydaje, że ORM-y działają, to wcale tak nie jest. Ciągle rzucają wyjątki. Według niego, w Hibernate nieustannie ma się do czynienia z wyjątkami inicjalizacji w najbardziej nieszczęśliwych okolicznościach tylko dlatego, że programista poczynił złe założenia co do sesji i zakresu. Takie problemy trudno nie tylko naprawić, ale w ogóle je zlokalizować. Może jeszcze wyżej opisane problemy nie byłyby zabójcze dla ORM-ów, ale pojawienie się NoSQL-owych hurtowni danych marginalizuje w programowaniu dla dużego biznesu wykorzystanie mapowania obiektowo-relacyjnego. Jest to efektem wykorzystania coraz większej liczby języków w biznesie współczesny programista staje się poliglotą, który wykorzystuje takie akurat narzędzia, jakie najlepiej nadają się do rozwiązania problemu. W tej sytuacji wprowadzanie danych do hurtowni poprzez ORM-y staje się znacznie trudniejsze. Schmidt proponuje, aby przy rozpoczęciu pracy nad nowym projektem zatrzymać się i zastanowić, czy naprawdę potrzebujemy ORM-a. Cache'owanie w XML-u czy JSON jest efektywniejsze niż cache'owanie obiektowe, za pomocą którego można nieco przyśpieszyć ORM-y. A jeśli już potrzeba prawdziwego cache'owania obiektowego, to Schmidt poleca zainteresować się takimi rozwiązaniami jak ehcache czy Terracota. Z kolei aby uniknąć wielokrotnego pisania tego samego kodu, warto sięgnąć do Data Access Object, komponentów, które dostarczają jednolitego interfejsu do komunikacji między aplikacją a bazą danych i mają dobrą implementację CRUD (Create Retrieve Update Delete). Tutaj Schmidt poleca np. Spring JDBC i język Scala. Dobre DAO, zdaniem blogera, dostarcza wszystkich niezbędnych operacji bazodanowych przy znacznie mniejszej ilości czarowania, niż robią to ORM-y Lucene 2.9: wyszukiwanie prawie w czasie rzeczywistym Znaczący skok w numeracji wersji pociągnął za sobą znaczące zmiany w popularnej bibliotece Lucene. Koszt ich wprowadzenia jest jednak dość wysoki: zerwanie pełnej kompatybilności ze starszymi wersjami. Apache Lucene to wolna i otwarta biblioteka Javy, która pozwala na efektywne indeksowanie i przeszukiwanie informacji tekstowych, niezależnie od ich formatu. Stanowi bazę dla licznych wyszukiwarek internetowych, wykorzystywana jest także przez większe witryny do realizacji lokalnych wyszukiwań. Po ponad pół roku prac od wydania wersji 2.4.1, rozwijający Lucene zespół deweloperski wydał wersję 2.9 jest ona przygotowaniem do całkowicie odświeżonego wydania Lucene 3.0, które będzie wymagał Javy 1.5 (obecnie projekt działa jeszcze z Javą 1.4). W odsłonie 2.9 wprowadzono około setki zmian względem poprzedniej wersji, z czego 36 to nowe elementy funkcjonalności. Wśród tych ostatnich warto wymienić wprowadzenie do IndexWritera wyszukiwania prawie w czasie rzeczywistym, odrębnych wyszukiwań i cache'owania na każdy segment, nowych typów kwerend, ulepszonych wieloznaczników, lepszej obsługi Unicode, wysokowydajnej obsługi pól numerycznych, nowego silnika parsowania oraz nowych analizatorów dla języków Wschodu: arabskiego, perskiego i mandaryńskiego. Deweloperzy Lucene zalecają, aby nie przenosić na siłę starych aplikacji na Lucene 2.9, ale przebudować je od podstaw, głównie ze względu na wspomniane wcześniej zerwanie kompatybilności z poprzednimi wersjami biblioteki. Nowy Google AdSense: większe reklamy na komórkach Nowa generacja reklam w każdej chwili może zawitać na nasze komórki. Wszystko przez zmiany, jakie Google wprowadził do projektu AdSense. Do tej pory ten serwis reklamowy był w stanie wyświetlać jedynie niewielkie, proste reklamy za pośrednictwem stron internetowych przeznaczonych na telefony komórkowe. Wszystko zawierało się w tekście lub obrazku o niewielkich rozmiarach. Google postanowiło iść krok naprzód, wykorzystując duży potencjał nowoczesnych smartphonów. Nowy AdSense wykorzystuje zmodyfikowany kod JavaScript, który został zoptymalizowany dla współczesnych urządzeń mobilnych obsługujących w pełni przeglądarki HTML. Nowy serwis reklamowy umożliwia wyświetlanie nowoczesnych reklam w formatach odpowiadających najpopularniejszym rozmiarom ekranów sprzedawanych dziś smartphonów. Google zapewnia, że nowa usługa została zoptymalizowana tak, by nie wymagała od użytkowników ściągania zbyt dużej ilości danych. W najbliższym czasie więc użytkownicy smartphonów spodziewać się mogą większych i, na niektórych witrynach, zapewne bardziej natarczywych reklam

12 Biblioteka miesiąca Google Collections Library Eleganckie i efektywne kolekcje w Javie Kolekcje to nieodłączny element skrzynki narzędziowej każdego programisty. Jeśli programujesz w Javie i chciałbyś uprościć oraz zoptymalizować Twój kod odpowiedzialny za obsługę kolekcji, to trafiłeś na właściwy artykuł. Zapraszam do lektury! Dowiesz się: Co oferuje biblioteka Google Collections Library i dlaczego warto jej używać. Jak można ją wykorzystać w praktyce. Poziom trudności W dzisiejszych czasach, kiedy programowanie często polega na składaniu aplikacji z gotowych klocków, a budowane programy są coraz bardziej i bardziej złożone, zestaw podstawowych klas kolekcji jest elementem absolutnie podstawowym i nieodzownym. Z tego względu kolekcje stały się integralnym składnikiem bibliotek standardowych nowoczesnych języków programowania. Java nie jest w tym przypadku wyjątkiem. Standardowy pakiet Java Collection Framework to solidny zestaw kontenerów ogólnego użytku i pomimo tego, że został on zaprojektowany i zaimplementowany kilkanaście lat temu ciągle jest z powodzeniem stosowany. Jednakże, użytkownicy JCF mogą od czasu do czasu odnieść wrażenie, że pewne operacje na kolekcjach można by wykonywać nieco prościej, szybciej i efektywnej. Do tego samego wniosku doszli dwaj pracownicy firmy Google: Kevin Bourrillion oraz Jared Levy. Co więcej, na myśleniu się nie skończyło. W efekcie prac tych dwóch panów powstała biblioteka Google Collections Library, stanowiąca świetne uzupełnienie i rozszerzenie pakietu Java Collection Framework. W niniejszym artykule przedstawię pokrótce genezę tej biblioteki, opiszę jej podstawowe składniki i pokażę jak można zastosować ją w praktyce. Powinieneś wiedzieć: Jak programować w języku Java. Solidne podstawy biblioteki Java Collection Framework. Przegląd możliwości Pisząc w największym możliwym skrócie, Google Collection Library to zestaw nowych interfejsów kolekcji, ich implementacji oraz klas pomocniczych. GCL należy postrzegać jako bibliotekę stanowiącą rozszerzenie Java Collections Framework. Poniżej przedstawiona jest lista najbardziej kluczowych składników GCL: Nowe interfejsy kolekcji: Multimap, Multiset oraz BiMap. Wysoko wydajne, niemodyfikowalne (ang. immutable) implementacje standardowych klas kolekcji JCF, np. ImmutableSet. Użytkowe klasy Lists, Sets oraz Maps, wspomagające pracę ze standardowymi kontenerami biblioteki JCF. Użytkowe klasy Iterators i Iterables zawierające zestawy statycznych metod operujących na interfejsach Iterator i Iterable. Klasa Ordering, czyli znacznie ułatwiająca operacje sortowania obiektów według wielu, potencjalnie złożonych kryteriów. Szereg dodatkowych udogodnień związanych z obsługą kontenerów w języku Java. W kolejnych podpunktach przyjrzymy się składnikom GCL wymienionym w pierwszych pięciu punktach powyższej listy. Multimap, Multiset oraz BiMap Multimap, Multiset i BiMap to nowe interfejsy kolekcji wprowadzone w ramach Google Collections Library. Interfejs Multimap (wielomapowanie) określa kontener podobny do Map (mapowanie) z JCF, z tą jednak różnicą, że potrafi on łączyć wiele wartości z jednym kluczem. Dla przykładu, jeśli użytkownik biblioteki dwukrotnie wywoła metodę put(k, V) na kontenerze typu Multimap, przy czym klucz (K) za każdym razem będzie taki sam, zaś wartości (V) będą różne, to w rezultacie kontener będzie zawierał odwzorowania klucza K do obydwu wartości. W przypadku kontenerów typu Multimap metoda get() zwraca kolekcję zawierającą wszystkie wartości powiązane z zadanym kluczem: Collection<V> get(k key); GCL dostarcza cały szereg implementacji interfejsu Multimap: ArrayListMultimap, ForwardingMultimap, HashMultimap, ImmutableListMultimap, ImmutableMultimap, ImmutableSetMultimap, LinkedHashMultimap, LinkedListMultimap, TreeMultimap. Interfejs Multiset (wielozbiór) definiuję kolekcję, która zachowuje się podobnie jak Set (zbiór) z JCF, aczkolwiek pozwala na duplikację elementów. Powtarzające się elementy wielozbioru, zwane są wystąpieniami zaś sumaryczna ich liczba określana jest jako licznik wystąpień. Kontener typu Multiset jest w stanie przechować maksymalnie Integer.MAX_ VALUE wystąpień danego elementu. Interfejs ten dostarcza oczywiście szereg odpowiednich metod, np. count() zwracającą licznik wystąpień dla zadanego obiektu. GCL dostarcza następujące implementacje interfejsu Multiset: ConcurrentHashMultiset, EnumMultiset, ForwardingMultiset, HashMultiset, ImmutableMultiset, LinkedHashMultiset, TreeMultiset. Interfejs BiMap (mapowanie dwukierunkowe) definiuje kolekcję-mapowanie, w które gwarantuje unikalność zarówno kluczy jak i wartości. Dzięki temu mapowanie dwukierunkowe wspiera tzw. widok od /2009

13 Google Collections Library wrotny, w którym wartości mapowania stają się kluczami zaś klucze wartościami: BiMap<V,K> inverse(); GCL dostarcza następujące implementacje interfejsu BiMap: EnumBiMap, EnumHashBiMap, HashBiMap oraz ImmutableBiMap. Na Listingu 1 przedstawione są przykładowe przypadki użycia przedstawionych powyżej trzech nowych typów kolekcji. W przypadku wielomapowania warto zwrócić uwagę na to, jak można dodawać różne wartości dla tego Listing 1. Proste przypadki użycia kontenerów Multimap, Multiset i BiMap import com.google.common.collect.*; import java.util.list; public class GclListing1 { public static void main(string[] args) { samego klucza. Multiset to idealna kolekcja do budowania histogramów, więc wykorzystałem ją w celu zliczania wystąpień znaków zawartych w argumentach przekazanych z linii poleceń. BiMap z kolei został użyty jako słownik, który można odpytywać w dwie strony. Multimap<String,Integer> mmap = ArrayListMultimap.create(); mmap.put("odd", 1); mmap.put("odd", 3); mmap.put("odd", 5); mmap.put("odd", 7); mmap.put("even", 2); mmap.put("even", 4); mmap.put("even", 6); mmap.put("even", 8); System.out.println(mmap); System.out.println(mmap.get("even")); Multiset<Character> histogram = HashMultiset.create(); for(string arg : args) for(int i=0; i<arg.length(); ++i) histogram.add(arg.charat(i)); System.out.println(histogram); BiMap<String,String> en2pldict = HashBiMap.create(); en2pldict.put("bird", "ptak"); en2pldict.put("sky", "niebo"); en2pldict.put("star", "gwiazda"); en2pldict.put("bell", "dzwon"); en2pldict.put("tree", "drzewo"); en2pldict.put("gate", "brama"); en2pldict.put("house", "dom"); System.out.println(en2PlDict); System.out.println(en2PlDict.inverse()); Listing 2. Typowy przykład wykorzystania niemodyfikowalnego zbioru liczb całkowitych w stylu JCF public static final Set<Integer> MY_HAPPY_NUMBERS; static { Set<Integer> set = new HashSet<Integer>(); set.add(0); set.add(1); set.add(3); set.add(7); set.add(13); set.add(44); MY_HAPPY_NUMBERS = Collections.unmodifiableSet(set); Kolekcje niemodyfikowalne Często zdarza się, że wiemy z góry, jaka będzie zawartość danego kontenera (np. tuż po jego stworzeniu wypełniamy go specyficznym obiektami) i chcielibyśmy aby reszta naszego programu traktowała go jako byt niemodyfikowalny (ang. immutable). Stałość obiektu to bardzo ważny idiom programistyczny (bardzo ciekawa dyskusja na ten temat przedstawiona jest w świetnej książce p.t. Effective Java, 2nd Edition). JCF udostępnia specjalne opakowania na kolekcje, które czynią je niemodyfikowalnymi, aczkolwiek zarówno efektywność jak i wygoda związana z ich używaniem pozostawiają wiele do życzenia. GCL oferuje w zmian specjalizowane, niemodyfikowalne kolekcje, które są znacznie prostsze w użyciu, szybsze i zużywają mniej pamięci. Listing 2 przedstawia typowy przykłady wykorzystania niemodyfikowalnego zbioru liczb całkowitych w stylu JCF. Kontrprzykład opary na GCF mieści się w dwóch linijkach kodu: public static final ImmutableSet<Integer> MY_HAPPY_NUMBERS = ImmutableSet.of(0, 1, 3, 7, 13, 44); Komentarz porównujący te dwa fragmenty kodu wydaje się być zbyteczny... GCF udostępnia cały szereg niemodyfikowalnych kontenerów, pełna ich lista jest dostępna w dokumentacji API biblioteki (patrz: ramka W sieci). Klasy użytkowe: Lists, Sets i Maps Trzy użytkowe klasy wymienione w tytule niniejszego podpunktu oferują zestawy statycznych metod służących przede wszystkim do tworzenie i manipulacji obiektami kolekcji typu List, Set i Map. Przeznaczenie tych klas najłatwiej będzie pokazać na praktycznym przykładzie. Spójrzmy zatem na Listing 3. W pierwszej linijce przedstawionego Listingu konstruujemy nową listę obiektów typu String. Warto w tym miejscu zauważyć jak bardzo uproszczony jest ten proces dzięki zastosowaniu metody Lists.newArrayList(...). W dalszej kolejności wykorzystujemy algorytm Lists.transform(...) w celu przekształcenia zadanej listy zgodnie z przekazanym obiektem funkcyjnym. W naszym przypadku przekształcamy listę napisów na listę odpowiadających im wartości numerycznych. Miłym dodatkiem w bibliotece GCL jest klasa Joiner, która pozwala w łatwy sposób przekształcać zadany kontener w pożądany napis. Po uruchomieniu programu przedstawionego na Listingu 3 otrzymamy następujący wynik: 3, 5, 7 W klasach Lists, Sets i Maps znaleźć można cały szereg operacji ułatwiających życie programisty pracującego z kontenerami w Javie zainteresowanych Czytelników odsyłam do dokumentacji API biblioteki (patrz: ramka W sieci). Klasy użytkowe: Iterators i Iterables Na nieco podobnej zasadzie jak w przypadku klas użytkowych opisanych w poprzednim 13

14 Biblioteka miesiąca podpunkcie, klasy Iterators i Iterables z biblioteki GCL udostępniają szereg metod tym razem odpowiedzialnych za uproszczenie procesu iteracji po kolekcjach elementów. Spójrzmy zatem na Listing 4, który zawiera próbkę możliwości zastosowania klasy Iterables. Tym razem wykorzystujemy statyczną metodę filter(), która filtruje zadaną kolekcję i zwraca drugą kolekcję, w której wszystkie obiekty spełniają zadany predykat. Oprócz operacji filtrowania, klasa Iterables pozwala wykonywać łączenie kolekcji (concat), wyszukiwanie elementów w kolekcji (find), zliczanie elementów w kolekcji (frequency) i wiele, wiele innych. Podobnie działa klasa Iterators tyle, że zamiast obiektów typu Iterable przyjmuje obiekty typu Iterator. Listing 3. Przykład wykorzystania klasy Lists import com.google.common.base.function; import com.google.common.base.joiner; import com.google.common.collect.lists; import java.util.list; public class GclListing3 { public static void main(string[] args) { Klasa Ordering Klasa Ordering jest jednym z ciekawszych rozwiązań zaaplikowanych w GCL. Pozwala ona w łatwy i efektywny sposób łączyć różne komparatory w celu wykonywaniu elastycznych porównań elementów przechowywanych w kontenerach. Załóżmy, że mając prostą (a wręcz podręcznikową) klasę Person (patrz: Listing 5) chcielibyśmy mieć możliwość uszeregowania obiektów tej klasy w kontekście poszczególnych jej składowych pól. Zadanie to można bardzo łatwo zrealizować przy pomocy GCL. Spójrzmy na Listing 6. W pierwszej kolejności tworzymy listę obiektów klasy Person. Następnie konstruujemy instancje dwóch komparatorów: pierwszy z nich porównuje obiekty według nazwiska zaś drugi według imienia danej osoby. Ostatnie dwie linijki pokazują jak można wykorzystać List<String> strlist = Lists.newArrayList("3", "5", "7"); List<Integer> intlist = Lists.transform(strList, new Function<String, ); Integer>() { public Integer apply(string from) { return Integer.parseInt(from); System.out.println(Joiner.on(", ").join(intlist)); Listing 4. Przykład wykorzystania klasy Iterables import com.google.common.base.joiner; import com.google.common.base.predicate; import com.google.common.collect.*; import java.util.list; public class GclListing4 { public static void main(string[] args) { List<String> names = Lists.newArrayList( "Ola", "Agnieszka", "Monika", null); Iterable<String> filtered = Iterables.filter( names, new Predicate<String>() { ); public boolean apply(string input) { return input == null input.startswith("o"); System.out.println(Joiner.on(" and ").usefornull("rafal").join(filtered)); klasę Ordering. Szczególną uwagę proponuję zwrócić na dwie ostatnie linijki tego przykładu, a w szczególności na fragment: ordering = ordering.reverse().compound(firs tnamecomparator); W tym miejscu tworzymy uszeregowanie odwrotne do istniejącego i dodatkowo, przy pomocy metody compound, dołączamy do niego drugi komparator, który będzie brany pod uwagę w sytuacji, gdy pierwszy komparator stwierdzi iż obiekty są identyczne. Jako pożyteczne zadanie dla dociekliwych Czytelników pozostawiam rozpisanie sobie na kartce jak będzie wyglądać wyjście przedstawionego programu, a następnie uruchomienie go na komputerze i zweryfikowanie wyników. Podsumowanie W ramach podsumowania niniejszego artykułu przedstawię główne powody, które (w mojej opinii) sprawiają, że Google Collection Library to rozwiązanie godne ze wszech miar uwagi: Dojrzałość: w momencie pisania niniejszego tekstu GLC dostępna jest w wersji 1.0 RC3 i z tego co obiecują autorzy na tym etapie interfejs biblioteki jest już bardzo stabilny. Interfejs ten będzie zamrożony w momencie gdy biblioteka oznaczona będzie wersją 1.0. Stabilność i niezawodność: niewiele jest na świecie miejsc, w których biblioteka kontenerów możne być tak dobrze przetestowana jak w Google; korzystając z GCL mamy pewność, iż rozwiązanie to zostało intensywnie zweryfikowane w najbardziej ekstremalnych warunkach z możliwych (przetwarzanie olbrzymich ilości danych w przeróżnych konfiguracjach), a przy jego projektowaniu, budowaniu i optymalizowaniu brali udział najlepsi specjaliści z branży. Spójność z JCF: w odróżnieniu od innych, podobnych rozwiązań (np. Jakarta Commons Collections) GLC zachowuje pełną kompatybilność z Java Collection Framwork stanowi niejako naturalne rozszerzenie tej biblioteki i kontynuację filozofii, którą zapoczątkowali inżynierowie Sun'a. W szczególności obsługa typów uogólnionych (ang. generics) jest w GCL zaimplementowana w identyczny sposób jak w JCF. Lekkość, niezależność i elastyczność: paczka z biblioteką waży około 500kB, przy czym GCL jest rozwiązaniem niezależnym (nie wymaga instalacji 15 innych bibliotek od Google...) i elastycznym (łatwo dopasować je do swoich potrzeb). Dokumentacja: jest pełna i profesjonalnie przygotowana. Gorąco polecam jej przeczytanie chociażby w celu zapo /2009

15 Google Collections Library znania się ze wszystkim komponentami dostępnymi w ramach GCL. Licencja: Apache License 2.0, która daje możliwość wykorzystania GCL w komercyjnych projektach bez żadnych ograniczeń. Co więcej według zapowiedzi autorów, Google Collection Library stanie się w niedługim czasie częścią bibliteki Guava łączącej w sobie cały szereg użytecznych bibliotek i komponentów ogólnego użytku wypracowanych W Sieci przez Google. W momencie pisania tego artykułu Guava składa się z trzech pakietów: com.google.common.primitives com.google.common.io com.google.common.util.concurrent Google Collection Library ma zostać dołączona do tego grona w momencie uzyskania statusu pełnej wersji 1.0 i zamrożenia API. Na ten moment wiadomo już jednak, że GCF bardzo strona domowa Google Collection Library ns.googlecode.com/svn/trunk/javadoc/com/google/common/collect/package-summary.html dokumentacja API biblioteki GCL wywiad z autorami GCL przedstawiający genezę biblioteki szereg praktycznych przykładów wykorzystania GCL video-prezentacja biblioteki (część pierwsza) video-prezentacja biblioteki (część druga) dobrze współpracuje z Guava i równoległe korzystanie z tych dwóch rozwiązań daje bardzo dobre efekty. Jednakże jest to temat na oddzielny artykuł, który w niedługim czasie Czytelnicy SDJ będą mogli przeczytać na łamach kolumny Biblioteka Miesiąca. Na ten moment zachęcam do eksperymentów z Google Collection Library i dziękuję za czas poświęcony na przeczytanie powyższego tekstu. RAFAŁ KOCISZ Pracuje na stanowisku Dyrektora Technicznego w firmie Gamelion, wchodzącej w skład Grupy BLStream. Rafał specjalizuje się w technologiach związanych z produkcją oprogramowania na platformy mobilne, ze szczególnym naciskiem na tworzenie gier. Grupa BLStream powstała, by efektywniej wykorzystywać potencjał dwóch szybko rozwijających się producentów oprogramowania BLStream i Gamelion. Firmy wchodzące w skład grupy specjalizują się w wytwarzaniu oprogramowania dla klientów korporacyjnych, w rozwiązaniach mobilnych oraz produkcji i testowaniu gier. Kontakt z autorem: rafal.kocisz@game-lion.com Listing 5. Implementacja przykładowej klasy Person public class Person { private String firstname; private String lastname; public Person(String firstname, String lastname) { this.setfirstname(firstname); this.setlastname(lastname); public String getfirstname() { return firstname; public void setfirstname(string firstname) { this.firstname = firstname; public String getlastname() { return lastname; public void setlastname(string lastname) { this.lastname = public String tostring() { return getfirstname() + " " + getlastname(); Listing 6. Przykład wykorzystania klasy Ordering import com.google.common.base.joiner; import com.google.common.base.predicate; import com.google.common.collect.*; import java.util.comparator; import java.util.list; public class GclListing6 { public static void main(string[] args) { List<Person> persons = Lists.newArrayList( new Person("Jan", "Kowalski"), new Person("Adam", "Malinowski"), null, new Person("Tadeusz", "Nowak"), null, new Person("Zenon", "Kowalski")); Comparator<Person> lastnamecomparator = new Comparator<Person>() { public int compare(person p1, Person p2) { return p1.getlastname().compareto(p2.getlas tname()); ; Comparator<Person> firstnamecomparator = new Comparator<Person>() { public int compare(person p1, Person p2) { return p1.getfirstname().compareto(p2.getfi rstname()); ; Ordering<Person> ordering = Ordering.from(lastNameC omparator); System.out.println(ordering.nullsLast().sortedCopy( persons)); ordering = ordering.reverse().compound(firstnamecom parator); System.out.println(ordering.nullsLast().sortedCopy( persons)); 15

16 Klub techniczny Adobe Połączenie Flex oraz Flash CS3/CS4 Szybkie tworzenie własnych komponentów Poznajemy rozszerzenie dla programu Flash CS3/CS4 pozwalające na szybkie tworzenie komponentów oraz kontenerów dla frameworka Flex. Wykorzystamy podejście niewymagające znajomości architektury komponentów, a pozwalające znacznie wzbogacić nasze aplikacje. Dowiesz się: Jak projektować i wykorzystywać własne komponenty i kontenery w środowisku Flash CS3/CS4. Poziom trudności Tworząc aplikację w technologii Flex, mamy do dyspozycji znaczny zestaw komponentów, które możemy wykorzystać. Czasami jednak pojawia się potrzeba stworzenia własnego komponentu, co pociąga za sobą konieczność zapoznania się z ich architekturą. Jest jednak prostszy sposób rozszerzenie Flex Component Kit for Flash dostarczane przez firmę Adobe. Pozwala ono szybko i wygodnie tworzyć unikatowe komponenty. Jest też świetnym sposobem wprowadzenia do technologii Flex osób dotychczas związanych z aplikacją Flash. Rozwiązanie to świetnie wpasowuje się w koncepcję Flash Platform, dając możliwość łączenia umiejętności programistycznych ze zdolnościami graficznymi i pomysłowością. Powinieneś wiedzieć: Podstawy technologii Flex; Posługiwać się programem Flash. Konfiguracja Flash CS3/CS4 W pierwszym kroku musimy pobrać ze strony Adobe ( flex3_cs3_swfkit) wspomniany dodatek. Pobrana paczka jest w formacie mxp. Format ten jest obsługiwany przez aplikację Adobe Extension Manager, która jest rozpowszechniana razem z produktami Adobe. Umożliwia ona łatwe zarządzanie roszerzeniami dla programów takich jak Adobe Flash, Adobe Photoshop itp. W większości przypadków wystarczy dwukrotnie kliknąć na rozszerzenie, aby je zainstalować. Jeśli zostało ono zainstalowane poprawnie, w menu aplikacji Flash w zakładce Commands powinny pojawić się dwie nowe pozycje (Rysunek 1): Convert symbol to Flex component (zamień symbol na komponent) Polecenie to konwertuje wybrany przez nas obiekt na komponent, który może być następnie wykorzystany w aplikacjach Flex oraz AIR; Convert symbol to Flex container ( zamień symbol na kontener). Polecenie to zamienia zaprojektowany we Flashu obiekt na kontener. Dzięki temu możemy w powiększyć kolekcję konetenerów dostępnych w pakiecie mx.containers. Kontenery są specjanymi komponentami, na których możemy umieszczać inne komponenty. Przykładem może być kontener mx.containers.titlewindow. Po wykonaniu tych czynności jesteśmy gotowi do stworzenia pierwszego komponentu z wykorzystaniem Flash CS3 lub CS4. Przykładowy komponent W pierwszym przykładzie stworzymy we Flashu pole tekstowe z dodaną animacją tła. W tym celu otwieramy nowy dokument, koniecznie musi to być dokument dla Action- Scipt 3.0. Z menu aplikacji wybieramy polecenie Insert>New Symbol i nadajemy mu nazwę FlashLabel. Następnie projektujemy wygląd naszego komponentu zgodnie z własnym pomysłem i umiejętnościami. Pamiętajmy jedynie, aby obowiązkowo dodać do niego przynajmniej jedno dynamiczne pole tekstowe o nazwie textfield. Przykładowy projekt został przedstawiony na Rysunku 2. Wybierając z menu aplikacji polecenie Convert symbol to Flex component, z naszego obiektu utworzony zostanie komponent o nazwie FlashLabel. Wygenerowana w ten sposób klasa FlashLabel dziedziczy po klasie mx.flash.uimovieclip. Jest to klasa bazowa dla wszystkich komponentów tworzonych w aplikacji Flash. Klasa ta implementuje interfejsy, które pozwalają traktować obiekt klasy FlashLabel jak standardowy komponent. Na tym etapie komponent FlashLabel może już być poprawnie wyświetlony w aplikacji Flex wraz z innymi standardowymi komponentami. Aby możliwa była zmiana wyświetlanego tekstu, musimy jeszcze dopisać kilka linijek kodu. W tym celu tworzymy we Flashu nowy dokument ActionScript i nadajemy mu nazwę FlashLabel. Ważne jest, aby znalazł się on w tym samym katalogu co utworzony poprzednio dokument z komponentem i miał tę samą nazwę co komponent. Na Listingu 1 przedstawiony został kod dodający do naszego komponentu właściwość label. Pozwala ona na zapisanie i odczytanie aktualnie wyświetlanego tekstu. W analogiczny sposób możemy do naszego komponentu wprowadzać dowolną funkcjonalność. Kiedy nasz komponent jest już gotowy, możemy go opublikować. W wyniku otrzymamy, oprócz standardowo tworzo /2009

17 Połączenie Flex oraz Flash CS3/CS4 nego pliku *.swf, również plik w formacie *.swc. Jest to format biblioteki przechowującej skompilowany kod. Aby wykorzystać utworzoną bibliotekę z naszym komponentem, przechodzimy do Flex Buildera, tworzymy nowy projekt Flex i otwieramy okno ustawień projektu. Następnie przechodzimy do zakładki Flex Build Path. Rysunek 3 przedstawia zrzut okienka ustawień z wybraną zakładką Library path, gdzie dodajemy naszą bibliotekę (przycisk Add SWC...). Na tym etapie nasz komponent jest już gotowy do użycia. Listing 2 przedstawia sposób jego wykorzystania. W przykładzie tym dodaliśmy dodatkowo standardowy komponent TextArea, który połączyliśmy z naszym komponentem w taki sposób, że kiedy użytkownik wpisze w nim jakiś tekst, zostanie on także wyświetlony w naszym komponencie. Działająca aplikacja korzystająca z komponentu zaprojektowanego na Rysunku 2 została przedstawiona na Rysunku 4. Rysunek 1. Nowe polecenia w menu aplikacji Flash Przykładowy kontener W kolejnym przykładzie zaprojektujemy jeszcze jeden komponent, teraz będzie to jednak kontener. W aplikacjach opartych o framework Flex kontenerami są wszyst- Listing 1. Kod ActionScipt dla naszego komponentu Rysunek 2. Zaprojektowany komponent tekstowy package { import mx.flash.uimovieclip; public class FlashLabel extends UIMovieClip { public function FlashLabel():void { super(); ; // metoda ustawiająca wyświetlany tekst public function set label( val: String ):void { textfield.text = val; ; // metoda pobierająca aktualnie wyświetlany tekst public function get label(): String { return textfield.text; ; ; ; Rysunek 3. Okno dodawania biblioteki swc do projektu 17

18 Klub techniczny Adobe Listing 2. Użycie naszego komponentu w aplikacji Flex <?xml version="1.0" encoding="utf-8"?> <mx:application xmlns:mx=" layout="vertical" verticalalign="middle" xmlns:local="*"> <!-- nasz komponent zaprojektowany we Flash'u > <local:flashlabel label="{intekst.text" /> <mx:hbox> <mx:label text="wpisz tekst : " /> <!-- wprowadzony tu tekst będzie przekazywany do naszego komponentu > <mx:textarea textalign="center" id="intekst" text="pisz!"/> </mx:hbox> </mx:application> Rysunek 4. Komponent zaprojektowany na Rysunku 2 w działaniu Rysunek 5. Przykładowy projekt kontenera kie obiekty z pakietu mx.containers, na których możemy umieszczać inne komponenty. Aby stworzyć własny kontener, projektowanie rozpoczynamy podobnie jak w przypadku komponentu FlashLabel. Tworzymy nowy symbol, nadając mu nazwę FlashContainer, i uruchamiamy własne zdolności graficzne. Kiedy nasz komponent jest już gotowy, wybieramy z menu aplikacji polecenie Convert to Flex container. Po chwili mamy już prawie gotowy kontener. Pozostaje nam jeszcze tylko określić miejsce, gdzie będą dodawane obiekty na nim umieszczane. W wyniku przeprowadzonej konwersji w bibliotece projektu pojawił się również dodatkowy element o nazwie FlexContentHolder. Obiekt ten należy umieścić w naszym kontenerze. Modyfikując jego położenie oraz rozmiar, określamy obszar dostępny dla obiektów potomnych. Na tym etapie mamy już w pełni funkcjonalny kontener. Zanim jednak przejdziemy do wykorzystania naszego konteneru, wykorzystamy jeszcze jedną dostępną funkcjonalność, jaką jest obsługa stanów wizualnych. Dzięki temu możemy stworzyć kontener pozwalający użytkownikowi ukryć jego zawartość (zwinąć widok). Przejścia pomiędzy zdefiniowanymi stanami mogą być animowane, my jednak ograniczymy się do najprostszego przełączenia. Rysunk 5 przedstawia przykładowy kontener z obsługą stanu. Jak widać na rysunku, komponent posiada specjalną warstwę o nazwie states; nazwy umieszczonych tam klatek określają dostępne stany. Pozostałe widoczne warstwy odpowiadają za wygląd naszego kontenera. Widoczny jest obszar, w którym umieszczane będą obiekty potomne ciemny prostokąt z napisem < Fx >. Analogicznie jak w poprzednim przypadku dodaliśmy także pole tekstowe wyświetlające tytuł kontenera. Całość kodu, jaką musimy dopisać do kontenera, została przedstawiona na Listingu 3. Obiekt this.content jest tworzony w czasie kompilacji i powiązany z umieszczonym na scenie obiektem FlexContentHolder. Ograniczeniem tworzonych w ten sposób kontenerów jest możliwość umieszczenia na nich tylko jednego obiektu. Jednak obiektem tym może być jeden ze standardowych kontenerów. W ich przypadku natomiast nie mamy już żadnych ograniczeń. Działający kontener oraz jego dwa stany rozwinięty i zwinięty, są widoczne na Rysunku 6. Podsumowanie Jak widać po przykładach, w prezentowanym rozszerzeniu drzemią wielkie moż /2009

19 Połączenie Flex oraz Flash CS3/CS4 liwości. Dzięki niemu komponenty mogą tworzyć użytkownicy nie posiadający dogłębnej wiedzy na temat architektury komponentów. Tworzenie nowych komponentów, jak i ich wykorzystanie jest bardzo proste i szybkie. Jedynym istniejącym ograniczeniem jest wyobraźnia projektanta. Kody źródłowe omawianych aplikacji znajdują się na stronie segfaultlabs.com/docs Rysunek 6. Użycie naszego kontenera w aplikacji MATEUSZ MAŁCZAK Autor jest doświadczonym programistą tworzącym aplikacje desktopowe dla systemów Windows i Linux. Aktualnie bardzo mocno związany z technologiami Flex/AIR. Tworząc aplikacje dla serwisu wygrał ogólnopolski konkurs na najlepszą aplikację w tej technologii ( Kontakt z autorem: matuesz@malczak.info W Sieci dodatek do aplkacji Flash CS3/CS4 umożliwiający tworzenie komponentów. Listing 3. Kod dla naszego kontenera z obsługą stanów package { import flash.display.movieclip; import flash.events.mouseevent; import mx.flash.containermovieclip; public class FlashContainer extends ContainerMovieClip { public function FlashContainer():void { // ustawiamy obsługę zdarzenia hideshowbutton.addeventlistener(mouseevent.click, arrowhandler); hideshowbutton.usehandcursor = true; hideshowbutton.buttonmode = true; // przełączenie do odpowiedniego stanu kiedy użytkownik kliknie obiekt po prawiej // przejście to możemy zaprojektować jako animację private function arrowhandler(event:mouseevent):void { if ( currentstate == "open") { // przechodząc do stanu 'zamknięty' ukrywany zawartość kontenera this.content.visible = false; titlefield.visible = false; currentstate = "close"; else { // pokaż zawartość kontenera i przejdź do stanu 'otwarty' this.content.visible = true; titlefield.visible = true; currentstate = "open"; ; // metoda ustawiająca tytuł dla naszego kontenera public function set title( val:string ):void { titlefield.text = val; ; // metoda pobierająca tytuł dla naszego kontenera public function get title():string { return titlefield.text; ; 19

20 Klub techniczny Progress Software Technologie Progress OpenEdge Część 4. Serwer Aplikacji OpenEdge Serwer Aplikacji (AppServer) OpenEdge jest potężnym silnikiem transakcyjnym opartym na nowoczesnych standardach. Zapewnia bezpieczne zarządzanie b. dużymi transakcjami, niezależność od interfejsu użytkownika oraz możliwość stworzenia aplikacji zgodnej ze standardami architektury zorientowanej na serwisy (SOA). Dowiesz się: O uruchamianiu procedur na Serwerze Aplikacji OpenEdge; O trybach pracy AppServera; Co to są partycje i do czego służą. Poziom trudności Najistotniejszym i koniecznym elementem w procesie tworzenia aplikacji rozproszonej jest podział na interfejs użytkownika i logikę biznesową. Ta ostatnia uruchomiona na serwerach aplikacji stanowi centralny punkt architektury aplikacji. Czy pamiętają Państwo założenia Architektury Referencyjnej OpenEdge (Technologie Progress OpenEdge część 1. SDJ 09/2009), w których była mowa o podziale aplikacji w dwóch wymiarach? Wyszczególnione w tej architekturze centralne warstwy dostępu do danych i serwisów biznesowych powinny znajdować się na AppServerze. Aplikacje biznesowe, które wykorzystują Serwer Aplikacji OpenEdge, mogą obsługiwać dowolny interfejs użytkownika. Przy pomocy narzędzi deweloperskich, takich jak OpenEdge Architect, AppBuilder, można stworzyć aplikację w języku ABL, XML czy HTML. Wykorzystując technologię Open Client, można wygenerować tzw. kod proxy, Powinieneś wiedzieć: Na czym polega koncepcja przetwarzania rozproszonego. który udostępnia klientom Java,.NET(C#), C, C++ i web serwisom transparentny dostęp do logiki biznesowej na AppServerze. Na Rysunku 1 przedstawiono schemat przetwarzania rozproszonego w architekturze n-warstwowej. Różne typy klientów mają swobodny dostęp do logiki biznesowej, znajdującej się na dedykowanych serwerach aplikacji. Każdy AppServer ma z kolei dostęp do źródeł danych. Do takiej architektury łatwo dodać dalsze serwery (aplikacji bądź baz danych), poprawiając skalowalność, balansowanie obciążeniem (load balancing) i zabezpieczając się przed awarią sprzętową (fault tolerance). Istnieje zatem wiele zalet związanych z zastosowaniem modelu architektury n-warstwowej i Serwera Aplikacji OpenEdge. Najważniejsze z nich to: bezpośredni dostęp do centralnej logiki biznesowej dla różnych typów klientów i systemów aplikacyjnych; oddzielenie fizycznej lokalizacji sprzętowej od samej aplikacji, zapewniające elastyczność w konfiguracji i łatwość utrzymania środowiska aplikacji; obsługa przetwarzania asynchronicznego, co zwiększa liczbę obsłużonych żądań w tym samym czasie; zapewnienie nieprzerwanej pracy w przypadku awarii serwera głównego dzięki funkcjom load balancing i fault tolerance; zmniejszenie wymagań sprzętowych i programistycznych dzięki wprowadzeniu zarządzania stanem procesów; zmniejszenie obciążenia sieci (mniej danych przesyłanych do klienta); zwiększenie poziomu zabezpieczeń danych (klient nie ma bezpośredniego dostępu do źródeł danych). Architektura Serwera Aplikacji OpenEdge Rysunek 2 przedstawia architekturę, w jakiej pracuje Serwer Aplikacji OpenEdge, i schemat obsługi żądania. Admin Server proces pozwalający zarządzać innymi komponentami architektury OpenEdge; Name Server zarządza listą dostępnych AppServerów i listą nazw obsługiwanych przez nie Serwisów Aplikacji (Application Service Name); przekierowuje żądania klienta do App- Servera w oparciu o nazwę Serwisu Aplikacji. Sam serwer aplikacji składa się z dwóch komponentów: AppServer Broker, którego zadaniem jest: zarządzanie połączeniami pomiędzy klientami i pulą Agentów AppServera oraz przekierowywanie do nich żądań klientów; zarządzanie pulą Agentów AppServera /2009

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

Tworzenie aplikacji Web Alicja Zwiewka. Page 1

Tworzenie aplikacji Web Alicja Zwiewka. Page 1 Tworzenie aplikacji Web Alicja Zwiewka Page 1 Co to są web-aplikacje? Aplikacja internetowa (ang. web application) program komputerowy, który pracuje na serwerze i komunikuje się poprzez sieć komputerową

Bardziej szczegółowo

Programowanie dla początkujących w 24 godziny / Greg Perry, Dean Miller. Gliwice, cop Spis treści

Programowanie dla początkujących w 24 godziny / Greg Perry, Dean Miller. Gliwice, cop Spis treści Programowanie dla początkujących w 24 godziny / Greg Perry, Dean Miller. Gliwice, cop. 2017 Spis treści O autorach 11 Podziękowania 12 Wprowadzenie 13 CZĘŚĆ I ZACZNIJ PROGRAMOWAĆ JUŻ DZIŚ Godzina 1. Praktyczne

Bardziej szczegółowo

Biorąc udział w projekcie, możesz wybrać jedną z 8 bezpłatnych ścieżek egzaminacyjnych:

Biorąc udział w projekcie, możesz wybrać jedną z 8 bezpłatnych ścieżek egzaminacyjnych: Egzaminy na plus Stres na minus! Zdawaj bezpłatne egzaminy Microsoft, Linux, C++ z nami i zadbaj o swoją karierę. Oferujemy Ci pierwsze certyfikaty zawodowe w Twojej przyszłej karierze, które idealnie

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

INŻYNIERIA OPROGRAMOWANIA

INŻYNIERIA OPROGRAMOWANIA INSTYTUT INFORMATYKI STOSOWANEJ 2013 INŻYNIERIA OPROGRAMOWANIA Inżynieria Oprogramowania Proces ukierunkowany na wytworzenie oprogramowania Jak? Kto? Kiedy? Co? W jaki sposób? Metodyka Zespół Narzędzia

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

Symulator doboru koloru i przetłoczenia bramy garażowej oraz wzoru drzwi wejściowych. do elewacji budynku klienta

Symulator doboru koloru i przetłoczenia bramy garażowej oraz wzoru drzwi wejściowych. do elewacji budynku klienta Symulator doboru koloru i przetłoczenia bramy garażowej oraz wzoru drzwi wejściowych do elewacji budynku klienta Wszechobecna nowa technologia Smartfony obecnie coraz częściej zastępują zwykłe telefony

Bardziej szczegółowo

Instalacja SQL Server Express. Logowanie na stronie Microsoftu

Instalacja SQL Server Express. Logowanie na stronie Microsoftu Instalacja SQL Server Express Logowanie na stronie Microsoftu Wybór wersji do pobrania Pobieranie startuje, przechodzimy do strony z poradami. Wypakowujemy pobrany plik. Otwiera się okno instalacji. Wybieramy

Bardziej szczegółowo

OpenLaszlo. OpenLaszlo

OpenLaszlo. OpenLaszlo OpenLaszlo Spis Treści 1 OpenLaszlo Co to jest? Historia Idea Architektura Jako Flash lub DHTML Jako servlet lub SOLO Jak to działa? Język LZX Struktura programu Skrypty Obiekty i klasy Atrybuty i metody

Bardziej szczegółowo

Wprowadzenie Dwie wersje: do domu i dla firmy. Do kogo adresowany? Komponenty

Wprowadzenie Dwie wersje: do domu i dla firmy. Do kogo adresowany? Komponenty Office 365 dla firm Wprowadzenie Jednym z głównych produktów działających w chmurze oferowanych przez firmę Microsoft to Office 365. Czym jest to rozwiązanie, jakie ma sposoby wykorzystania, do kogo jest

Bardziej szczegółowo

OSGi Agata Hejmej 4.05.2009

OSGi Agata Hejmej 4.05.2009 OSGi Agata Hejmej 4.05.2009 Plan prezentacji Co to jest OSGi Jakie problemy rozwiązuje Opis standardu Przykładowa aplikacja Podsumowanie korzyści Co to jest OSGi? Standard, który pozwala na tworzenie wysoce

Bardziej szczegółowo

Wprowadzenie. Narzędzia i środowiska programistyczne. Laboratorium 1. Prowadzący: Kierunek: Semestr: Rok: Tomasz Gądek Informatyka Zimowy 2

Wprowadzenie. Narzędzia i środowiska programistyczne. Laboratorium 1. Prowadzący: Kierunek: Semestr: Rok: Tomasz Gądek Informatyka Zimowy 2 Państwowa Wyższa Szkoła Zawodowa w Tarnowie Zakład Informatyki Narzędzia i środowiska programistyczne Laboratorium 1 Wprowadzenie Prowadzący: Kierunek: Semestr: Rok: Informatyka Zimowy 2 O Sobie Od 2014

Bardziej szczegółowo

PROGRAM MICROSOFT DEVELOPER NETWORK ACADEMIC ALLIANCE MSDN AA

PROGRAM MICROSOFT DEVELOPER NETWORK ACADEMIC ALLIANCE MSDN AA PROGRAM MICROSOFT DEVELOPER NETWORK ACADEMIC ALLIANCE MSDN AA Wydział Matematyczno-Przyrodniczy Szkoła Nauk Ścisłych Koło Naukowe Informatyków FRAKTAL Opracował : Michał Wójcik, II rok MU IiE CZYM JEST

Bardziej szczegółowo

DESIGNER APPLICATION. powered by

DESIGNER APPLICATION. powered by DESIGNER APPLICATION powered by O FIRMIE HiddenData specjalizuje się w technologii dystrybucji treści video w Internecie oraz w budowie złożonych, funkcjonalnych aplikacji internetowych i mobilnych. Budujemy

Bardziej szczegółowo

Wspomaganie pracy w terenie za pomocą technologii BlackBerry MDS. (c) 2008 Grupa SPOT SJ

Wspomaganie pracy w terenie za pomocą technologii BlackBerry MDS. (c) 2008 Grupa SPOT SJ Wspomaganie pracy w terenie za pomocą technologii BlackBerry MDS (c) 2008 Grupa SPOT SJ Grupa SPOT Krzysztof Cieślak, Maciej Gdula Spółka Jawna Podstawowe dane: firma założona w roku 2004 w wyniku połączenia

Bardziej szczegółowo

Specyfikacje. Tabela 1. Cechy usługi. Sposób realizacji usługi. Dostęp do zasobów technicznych. Analiza i rozwiązywanie

Specyfikacje. Tabela 1. Cechy usługi. Sposób realizacji usługi. Dostęp do zasobów technicznych. Analiza i rozwiązywanie Arkusz danych Usługi wsparcia dotyczące Usługi Care Pack i usługi kontraktowe, część pakietu HP Care Korzyści z usługi Dostęp do zasobów technicznych HP w celu rozwiązywania problemów Potencjalne obniżenie

Bardziej szczegółowo

JavaFX. Technologie Biznesu Elektronicznego. Wydział Informatyki i Zarządzania Politechnika Wrocławska

JavaFX. Technologie Biznesu Elektronicznego. Wydział Informatyki i Zarządzania Politechnika Wrocławska JavaFX - wprowadzenie JavaFX Wydział Informatyki i Zarządzania Politechnika Wrocławska Definicja JavaFX - wprowadzenie Definicja Historia JavaFX Script Rich Internet Application JavaFX - rodzina technologii

Bardziej szczegółowo

AUREA BPM Oracle. TECNA Sp. z o.o. Strona 1 z 7

AUREA BPM Oracle. TECNA Sp. z o.o. Strona 1 z 7 AUREA BPM Oracle TECNA Sp. z o.o. Strona 1 z 7 ORACLE DATABASE System zarządzania bazą danych firmy Oracle jest jednym z najlepszych i najpopularniejszych rozwiązań tego typu na rynku. Oracle Database

Bardziej szczegółowo

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE WINDOWS 1 SO i SK/WIN 007 Tryb rzeczywisty i chroniony procesora 2 SO i SK/WIN Wszystkie 32-bitowe procesory (386 i nowsze) mogą pracować w kilku trybach. Tryby pracy

Bardziej szczegółowo

Podstawy programowania. Wprowadzenie

Podstawy programowania. Wprowadzenie Podstawy programowania Wprowadzenie Proces tworzenia programu Sformułowanie problemu funkcje programu zakres i postać danych postać i dokładność wyników Wybór / opracowanie metody rozwiązania znaleźć matematyczne

Bardziej szczegółowo

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa 1 Java Wprowadzenie 2 Czym jest Java? Język programowania prosty zorientowany obiektowo rozproszony interpretowany wydajny Platforma bezpieczny wielowątkowy przenaszalny dynamiczny Rozumiana jako środowisko

Bardziej szczegółowo

Pierwszy projekt. Na początku warto wspomnieć, że program WebSite X5 dostępy jest w 3 wariantach: Start, Evolution oraz Professional

Pierwszy projekt. Na początku warto wspomnieć, że program WebSite X5 dostępy jest w 3 wariantach: Start, Evolution oraz Professional Projektowanie stron może być proste? Sprawdzamy. {reklama-artykul} Tworzenie stron internetowych to w teorii zagadnienie skomplikowane, często wymagające zaawansowanej wiedzy z dziedziny programowania.

Bardziej szczegółowo

Programowanie Komponentowe WebAPI

Programowanie Komponentowe WebAPI Programowanie Komponentowe WebAPI dr inż. Ireneusz Szcześniak jesień 2016 roku WebAPI - interfejs webowy WebAPI to interfejs aplikacji (usługi, komponentu, serwisu) dostępnej najczęściej przez Internet,

Bardziej szczegółowo

Informatyczne fundamenty

Informatyczne fundamenty Informatyczne fundamenty Informatyka to szeroka dziedzina wiedzy i praktycznych umiejętności. Na naszych studiach zapewniamy solidną podstawę kształcenia dla profesjonalnego inżyniera IT. Bez względu na

Bardziej szczegółowo

Licencjonowanie SQL Server. Licencje SAL

Licencjonowanie SQL Server. Licencje SAL Licencjonowanie SQL Server Licencje SAL Pytanie: Klient ma zainstalowane oprogramowanie SQL Server w środowisku z wieloma dzierżawcami i ma dwóch (2) użytkowników, którzy potrzebują dostępu do niego. Czy

Bardziej szczegółowo

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Język programowania prosty bezpieczny zorientowany obiektowo wielowątkowy rozproszony przenaszalny interpretowany dynamiczny wydajny Platforma

Bardziej szczegółowo

omnia.pl, ul. Kraszewskiego 62A, 37-500 Jarosław, tel. +48 16 621 58 10 www.omnia.pl kontakt@omnia.pl

omnia.pl, ul. Kraszewskiego 62A, 37-500 Jarosław, tel. +48 16 621 58 10 www.omnia.pl kontakt@omnia.pl .firma Dostarczamy profesjonalne usługi oparte o nowoczesne technologie internetowe Na wstępie Wszystko dla naszych Klientów Jesteśmy świadomi, że strona internetowa to niezastąpione źródło informacji,

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

Instrukcja instalacji PS Bonus Pack do IBM SPSS Statistics 20 w systemie operacyjnym Windows

Instrukcja instalacji PS Bonus Pack do IBM SPSS Statistics 20 w systemie operacyjnym Windows Instrukcja instalacji PS Bonus Pack do IBM SPSS Statistics 20 w systemie operacyjnym Windows Instalacja PS Bonus Pack Przed przystąpieniem do instalacji PS Bonus Pack należy wcześniej zainstalować program

Bardziej szczegółowo

Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i

Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i Program szkolenia: Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i Informacje: Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania: Forma: Produktywne tworzenie aplikacji webowych z

Bardziej szczegółowo

INŻYNIERIA OPROGRAMOWANIA

INŻYNIERIA OPROGRAMOWANIA INSTYTUT INFORMATYKI STOSOWANEJ 2014 Nowy blok obieralny! Testowanie i zapewnianie jakości oprogramowania INŻYNIERIA OPROGRAMOWANIA Inżynieria Oprogramowania Proces ukierunkowany na wytworzenie oprogramowania

Bardziej szczegółowo

Twórz mobilne aplikacje biznesowe dzięki SAP Mobile Platform

Twórz mobilne aplikacje biznesowe dzięki SAP Mobile Platform Ogólna charakterystyka rozwiązania SAP Technologia SAP Mobilna platforma SAP Cele Twórz aplikacje biznesowe dzięki SAP Mobile Platform Wykorzystaj szanse, jakie dają technologie Wykorzystaj szanse, jakie

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

Wstęp do Informatyki. Klasyfikacja oprogramowania

Wstęp do Informatyki. Klasyfikacja oprogramowania Wstęp do Informatyki Klasyfikacja oprogramowania Oprogramowanie komputerowe Funkcjonalność komputera jest wynikiem zarówno jego budowy, jak i zainstalowanego oprogramowania Komputer danej klasy znajduje

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

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

MAMP: Można to pobrać i zainstalować z XAMPP: Można go pobrać i zainstalować z

MAMP: Można to pobrać i zainstalować z   XAMPP: Można go pobrać i zainstalować z WordPress : Omówienie I Instalacja Na początek, dlaczego byłbyś zainteresowany wykorzystaniem WordPressa razem z PhoneGap? Zapytałbym: "Dlaczego byś nie?" Moim zdaniem WordPress jest jednym z najłatwiejszych

Bardziej szczegółowo

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery http://xqtav.sourceforge.net XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery dr hab. Jerzy Tyszkiewicz dr Andrzej Kierzek mgr Jacek Sroka Grzegorz Kaczor praca mgr pod

Bardziej szczegółowo

HTML, CSS i JavaScript / Laura Lemay, Rafe Colburn, Jennifer Kyrnin. Gliwice, cop Spis treści

HTML, CSS i JavaScript / Laura Lemay, Rafe Colburn, Jennifer Kyrnin. Gliwice, cop Spis treści HTML, CSS i JavaScript / Laura Lemay, Rafe Colburn, Jennifer Kyrnin. Gliwice, cop. 2017 Spis treści O autorach 11 Wprowadzenie 13 CZĘŚĆ I ROZPOCZĘCIE PRACY Lekcja 1. Co oznacza publikowanie treści w sieci

Bardziej szczegółowo

Czym jest technologia Bluetooth?

Czym jest technologia Bluetooth? Tomasz Merda Czym jest technologia Bluetooth? Czym jest technologia Bluetooth? Bluetooth to technologia pozwalająca na komunikację radiową na ograniczoną odległość (standardowo do 10 metrów). Przy pomocy

Bardziej szczegółowo

Wydział Informatyki, Elektroniki i Telekomunikacji. Katedra Informatyki

Wydział Informatyki, Elektroniki i Telekomunikacji. Katedra Informatyki Wydział Informatyki, Elektroniki i Telekomunikacji Katedra Informatyki Pastebin w wersji zorientowanej na środowisko mobilne z klientem pozwalającym na oba kierunki przeklejania. Dokumentacja deweloperska

Bardziej szczegółowo

SPOŁECZNOŚCI INTERNETOWE

SPOŁECZNOŚCI INTERNETOWE SPOŁECZNOŚCI INTERNETOWE Wykorzystanie nowoczesnych technologii w badaniach konsumenckich Inquiry sp. z o.o. O INQUIRY Od ponad 10 lat prowadzimy badania konsumenckie dla klientów z branży FMCG, sieci

Bardziej szczegółowo

Laboratorium Technologii Informacyjnych. Projektowanie Baz Danych

Laboratorium Technologii Informacyjnych. Projektowanie Baz Danych Laboratorium Technologii Informacyjnych Projektowanie Baz Danych Komputerowe bazy danych są obecne podstawowym narzędziem służącym przechowywaniu, przetwarzaniu i analizie danych. Gromadzone są dane w

Bardziej szczegółowo

Akcjonariusze TIM S.A.

Akcjonariusze TIM S.A. Wrocław, 20.03.2015 r. Krzysztof Folta Prezes Zarządu TIM S.A. Akcjonariusze TIM S.A. Szanowni Państwo, Mam zaszczyt przekazać Państwu jednostkowy Raport Roczny TIM SA oraz skonsolidowany Raport Roczny

Bardziej szczegółowo

Król Łukasz Nr albumu: 254102

Król Łukasz Nr albumu: 254102 Król Łukasz Nr albumu: 254102 Podstawy o Delphi Język programowania, którego można używać w środowiskach firmy Borland, Embarcadero, Microsoft (Delphi Prism), oraz w środowisku Lazarus. Narzędzia te są

Bardziej szczegółowo

[Junior Developer - pierwsza praca jako programista - JavaDevMatt] 1. Sponsorzy Partnerzy projektu O czym i dla kogo jest ta książka?

[Junior Developer - pierwsza praca jako programista - JavaDevMatt] 1. Sponsorzy Partnerzy projektu O czym i dla kogo jest ta książka? Spis treści 1. Sponsorzy 11 2. Partnerzy projektu 13 3. O czym i dla kogo jest ta książka? 15 4. Skąd pomysł na napisanie książki? 18 4.1. Co nowego w tym wydaniu? 20 5. Z jakich powodów nie warto zostać

Bardziej szczegółowo

WPROWADZENIE DO JĘZYKA JAVA

WPROWADZENIE DO JĘZYKA JAVA WPROWADZENIE DO JĘZYKA JAVA programowanie obiektowe KRÓTKA HISTORIA JĘZYKA JAVA KRÓTKA HISTORIA JĘZYKA JAVA 1991 - narodziny języka java. Pierwsza nazwa Oak (dąb). KRÓTKA HISTORIA JĘZYKA JAVA 1991 - narodziny

Bardziej szczegółowo

9 elementów zarządzania projektami Narzędzia Nowoczesnego Project Managera

9 elementów zarządzania projektami Narzędzia Nowoczesnego Project Managera 9 elementów zarządzania projektami Narzędzia Nowoczesnego Project Managera Darmowy Ebook Autor: Adam Omelczuk Tytuł: 9 elementów zarządzania projektami W życiu i w biznesie Darmowy Ebook NARZĘDZIA Nowoczesnego

Bardziej szczegółowo

REFERAT O PRACY DYPLOMOWEJ

REFERAT O PRACY DYPLOMOWEJ REFERAT O PRACY DYPLOMOWEJ Temat pracy: Projekt i realizacja elektronicznego dziennika ocen ucznia Autor: Grzegorz Dudek wykonanego w technologii ASP.NET We współczesnym modelu edukacji, coraz powszechniejsze

Bardziej szczegółowo

PDM wbudowany w Solid Edge

PDM wbudowany w Solid Edge PDM wbudowany w Solid Edge Firma GM System Integracja Systemów Inżynierskich Sp. z o.o. została założona w 2001 roku. Zajmujemy się dostarczaniem systemów CAD/CAM/CAE/PDM. Jesteśmy jednym z największych

Bardziej szczegółowo

Konfiguracja przeglądarek do pracy z aplikacjami Asix.Evo Instalacja i konfiguracja dodatku IE Tab

Konfiguracja przeglądarek do pracy z aplikacjami Asix.Evo Instalacja i konfiguracja dodatku IE Tab NIEZAWODNE ROZWIĄZANIA SYSTEMÓW AUTOMATYKI Konfiguracja przeglądarek do pracy z aplikacjami Asix.Evo Instalacja i konfiguracja dodatku IE Tab Pomoc techniczna Dok. Nr PLP0022 Wersja:05-06-2014 ASKOM i

Bardziej szczegółowo

Smartfony Telecom Practice Group Nielsen Poland

Smartfony Telecom Practice Group Nielsen Poland Smartfony Telecom Practice Group Nielsen Poland W ostatnich latach obserwujemy dynamiczny rozwój technologii mobilnych w kierunku grupy urządzeń zwanych smartfonami, a dodatkowo wiele prognoz na 2012 koncentruje

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

ABIX Cyfrowa edukacja z oprogramowaniem Open Source www.cyfrowaszkola.waw.pl

ABIX Cyfrowa edukacja z oprogramowaniem Open Source www.cyfrowaszkola.waw.pl Informacje o systemie interaktywnym Tablica interaktywna to urządzenie, które przypomina dużą białą tablicę i umożliwia współdziałanie z podłączonym do niej komputerem oraz projektorem multimedialnym.

Bardziej szczegółowo

Zarządzanie i realizacja projektów systemu Microsoft SharePoint 2010

Zarządzanie i realizacja projektów systemu Microsoft SharePoint 2010 Zarządzanie i realizacja projektów systemu Microsoft SharePoint 2010 Geoff Evelyn Przekład: Natalia Chounlamany APN Promise Warszawa 2011 Spis treści Podziękowania......................................................

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

SiR_13 Systemy SCADA: sterowanie nadrzędne; wizualizacja procesów. MES - Manufacturing Execution System System Realizacji Produkcji

SiR_13 Systemy SCADA: sterowanie nadrzędne; wizualizacja procesów. MES - Manufacturing Execution System System Realizacji Produkcji System informatyczny na produkcji: Umożliwi stopniowe, ale jednocześnie ekonomiczne i bezpieczne wdrażanie i rozwój aplikacji przemysłowych w miarę zmiany potrzeb firmy. Może adoptować się do istniejącej

Bardziej szczegółowo

E-commerce. Genialnie proste tworzenie serwisów w PHP i MySQL.

E-commerce. Genialnie proste tworzenie serwisów w PHP i MySQL. E-commerce. Genialnie proste tworzenie serwisów w PHP i MySQL. Autor: Larry Ullman Poznaj zasady wirtualnego handlu i zarabiaj prawdziwe pieniądze Jak stworzyć doskonałą witrynę sklepu internetowego? Jak

Bardziej szczegółowo

LOG Global Edition jak wykorzystać potencjał firmy.

LOG Global Edition jak wykorzystać potencjał firmy. LOG Global Edition jak wykorzystać potencjał firmy. 27 kwietnia br. w Warszawie odbyła się premiera LOG Global Edition, produktu polskiej firmy LOG Systems. Zaprezentowane oprogramowanie znacznie ułatwi

Bardziej szczegółowo

Wybrane działy Informatyki Stosowanej

Wybrane działy Informatyki Stosowanej Wybrane działy Informatyki Stosowanej Java Enterprise Edition WebServices Serwer aplikacji GlassFish Dr hab. inż. Andrzej Czerepicki a.czerepicki@wt.pw.edu.pl http://www2.wt.pw.edu.pl/~a.czerepicki Aplikacje

Bardziej szczegółowo

Sage ACT! Twój CRM! Zdobywaj, zarządzaj, zarabiaj! Zdobywaj nowych Klientów! Zarządzaj relacjami z Klientem! Zarabiaj więcej!

Sage ACT! Twój CRM! Zdobywaj, zarządzaj, zarabiaj! Zdobywaj nowych Klientów! Zarządzaj relacjami z Klientem! Zarabiaj więcej! Sage ACT! Twój CRM! Zdobywaj, zarządzaj, zarabiaj! Zdobywaj nowych Klientów! Zarządzaj relacjami z Klientem! Zarabiaj więcej! Sage ACT! Sprawdzone przez miliony Użytkowników i skuteczne rozwiązanie z rodziny

Bardziej szczegółowo

Dokumentacja techniczna. Młodzieżowe Pośrednictwo Pracy

Dokumentacja techniczna. Młodzieżowe Pośrednictwo Pracy Dokumentacja techniczna Młodzieżowe Pośrednictwo Pracy Spis Treści 1. Widok ogólny architektury MPP... 3 2. Warstwy systemu... 5 3. Struktura systemu/komponentów... 7 3.1 Aplikacje... 7 3.2 Biblioteki...

Bardziej szczegółowo

Kancelaria Prawna.WEB - POMOC

Kancelaria Prawna.WEB - POMOC Kancelaria Prawna.WEB - POMOC I Kancelaria Prawna.WEB Spis treści Część I Wprowadzenie 1 Część II Wymagania systemowe 1 Część III Instalacja KP.WEB 9 1 Konfiguracja... dostępu do dokumentów 11 Część IV

Bardziej szczegółowo

mtim Dedykowane aplikacje mobilne dla TIM S.A.

mtim Dedykowane aplikacje mobilne dla TIM S.A. mtim Dedykowane aplikacje mobilne dla TIM S.A. O TIM TIM S.A. jest jednym z największych dystrybutorów artykułów elektrotechnicznych w Polsce. 25 lat w branży, z czego 17 lat na Giełdzie Papierów Wartościowych

Bardziej szczegółowo

Wyspecjalizowani w ochronie urządzeń mobilnych

Wyspecjalizowani w ochronie urządzeń mobilnych Wyspecjalizowani w ochronie urządzeń mobilnych Rozwiązania dopasowane do dużych i małych firm MDM 43-300 Bielsko-Biała, ul. Warszawska 28 tel./fax: +48 /33/ 822 14 85 Proget MDM Coraz większa ilość urządzeń

Bardziej szczegółowo

Oferta szkoleń firmy Code Sprinters

Oferta szkoleń firmy Code Sprinters Oferta szkoleń firmy Code Sprinters Code Sprinters sp z o.o. Królewska 2/2 Kraków Telefon +48 12 379 34 14 Fax +48 12 379 34 11 info@codesprinters.com www.codesprinters.com Jako liderzy na rynku szkoleń

Bardziej szczegółowo

DESKTOP Z WINDOWS 8 Dzięki błyskawicznemu rozruchowi i sprawnej pracy, Windows 8 wygrywa z najnowszym systemem Apple a.

DESKTOP Z WINDOWS 8 Dzięki błyskawicznemu rozruchowi i sprawnej pracy, Windows 8 wygrywa z najnowszym systemem Apple a. WIELKI TEST WINDOWS 8 Nowy system operacyjny Microsoftu wywołał gorącą debatę: czy warto aktualizować Windows 7 i uczyć się nowego interfejsu? Oto nasza odpowiedź. Microsoft wie, jak wzbudzać emocje-

Bardziej szczegółowo

Bezpieczeństwo dla wszystkich środowisk wirtualnych

Bezpieczeństwo dla wszystkich środowisk wirtualnych Bezpieczeństwo dla wszystkich środowisk wirtualnych SECURITY FOR VIRTUAL AND CLOUD ENVIRONMENTS Ochrona czy wydajność? Liczba maszyn wirtualnych wyprzedziła fizyczne już 2009 roku. Dzisiaj ponad połowa

Bardziej szczegółowo

ANGULARJS TWORZENIE APLIKACJI INTERNETOWYCH

ANGULARJS TWORZENIE APLIKACJI INTERNETOWYCH ANGULARJS TWORZENIE APLIKACJI INTERNETOWYCH szkolenie dla webdeveloperów ze znajomością przynajmniej podstaw HTML i JavaScript INFORMACJE PODSTAWOWE AngularJS to framework JavaScript stworzony przez inżynierów

Bardziej szczegółowo

OMNITRACKER Wersja testowa. Szybki przewodnik instalacji

OMNITRACKER Wersja testowa. Szybki przewodnik instalacji OMNITRACKER Wersja testowa Szybki przewodnik instalacji 1 Krok 1:Rejestracja pobrania (jeżeli nie wykonana dotychczas) Proszę dokonać rejestracji na stronieomninet (www.omnitracker.com) pod Contact. Po

Bardziej szczegółowo

NASZA MISJA. wszystkie nasze dzialania sfokusowane sa na efektywną, partnerską współprace.

NASZA MISJA. wszystkie nasze dzialania sfokusowane sa na efektywną, partnerską współprace. NASZA MISJA Aby tworzyć najbardziej użyteczne, najlepsze aplikacje ściśle dopasowane do Państwa wymagań i potrzeb oraz budżetu, który chcecie Państwo zainwestować. podstawa satysfakcjonujacej współpracy

Bardziej szczegółowo

Wyspecjalizowani w ochronie urządzeń mobilnych

Wyspecjalizowani w ochronie urządzeń mobilnych Wyspecjalizowani w ochronie urządzeń mobilnych Rozwiązania dopasowane do dużych i małych firm MDM 43-300 Bielsko-Biała, ul. Warszawska 28 tel./fax: +48 /33/ 822 14 85 Proget MDM Coraz większa ilość urządzeń

Bardziej szczegółowo

ZAKODUJ SWOJĄ PRZYSZŁOŚĆ. Zostań programistą i zacznij dobrze zarabiać w IT, jednej z najlepiej rozwijających się branży w Polsce i na Świecie!

ZAKODUJ SWOJĄ PRZYSZŁOŚĆ. Zostań programistą i zacznij dobrze zarabiać w IT, jednej z najlepiej rozwijających się branży w Polsce i na Świecie! ZAKODUJ SWOJĄ PRZYSZŁOŚĆ Zostań programistą i zacznij dobrze zarabiać w IT, jednej z najlepiej rozwijających się branży w Polsce i na Świecie! 1POTRZEBUJESZ 8 TYGODNI ŻEBY ZMIENIĆ SWOJE ŻYCIE Kogo uczymy?

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

System Zarządzania Treścią

System Zarządzania Treścią System Zarządzania Treścią Dawno, dawno temu, w latach 90-tych XX wieku publikowanie w Internecie nie było proste. Wymagało znajomości HTMLa do stworzenia strony, FTP do wysłania zawartości na serwer i

Bardziej szczegółowo

Od Expert Data Scientist do Citizen Data Scientist, czyli jak w praktyce korzystać z zaawansowanej analizy danych

Od Expert Data Scientist do Citizen Data Scientist, czyli jak w praktyce korzystać z zaawansowanej analizy danych Od Expert Data Scientist do Citizen Data Scientist, czyli jak w praktyce korzystać z zaawansowanej analizy danych Tomasz Demski StatSoft Polska www.statsoft.pl Analiza danych Zaawansowana analityka, data

Bardziej szczegółowo

SERWERY KOMUNIKACYJNE ALCATEL-LUCENT

SERWERY KOMUNIKACYJNE ALCATEL-LUCENT SERWERY KOMUNIKACYJNE ALCATEL-LUCENT OmniPCX Enterprise Serwer komunikacyjny Alcatel-Lucent OmniPCX Enterprise Communication Server (CS) to serwer komunikacyjny dostępny w formie oprogramowania na różne

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

Piotr Dynia. PowerPivot. narzędzie do wielowymiarowej analizy danych

Piotr Dynia. PowerPivot. narzędzie do wielowymiarowej analizy danych Piotr Dynia PowerPivot narzędzie do wielowymiarowej analizy danych Od autora Wraz z wprowadzeniem na rynek nowej wersji pakietu Office: Microsoft Office 2010 udostępniono darmowy dodatek dla Excela o nazwie

Bardziej szczegółowo

Pierwsze kroki. Algorytmy, niektóre zasady programowania, kompilacja, pierwszy program i jego struktura

Pierwsze kroki. Algorytmy, niektóre zasady programowania, kompilacja, pierwszy program i jego struktura Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Pierwsze kroki Algorytmy, niektóre zasady programowania, kompilacja, pierwszy program i jego struktura Co znaczy

Bardziej szczegółowo

OFERTA SZKOLENIOWA PROGRESS SOFTWARE

OFERTA SZKOLENIOWA PROGRESS SOFTWARE OFERTA SZKOLENIOWA PROGRESS SOFTWARE Szanowni Państwo, Zapraszamy do zapoznania się z naszą ofertą szkoleń w systemie Progress. Kursy organizowane są dla małych grup 3-6 osobowych, w Warszawie. Każdy uczestnik

Bardziej szczegółowo

Uniwersytet Mikołaja Kopernika. Wydział Matematyki i Informatyki Wydział Fizyki, Astronomii i Informatyki Stosowanej

Uniwersytet Mikołaja Kopernika. Wydział Matematyki i Informatyki Wydział Fizyki, Astronomii i Informatyki Stosowanej Uniwersytet Mikołaja Kopernika Wydział Matematyki i Informatyki Wydział Fizyki, Astronomii i Informatyki Stosowanej Marcin HENRYKOWSKI Nr albumu: 158069 Praca magisterska na kierunku Informatyka Archiwizacja

Bardziej szczegółowo

JDBC w LoXiMie. Interfejs Java Database Connectivity dla systemu LoXiM. Adam Michalik 2008

JDBC w LoXiMie. Interfejs Java Database Connectivity dla systemu LoXiM. Adam Michalik 2008 JDBC w LoXiMie Interfejs Java Database Connectivity dla systemu LoXiM Adam Michalik 2008 Sterownik JDBC co to jest? Sterownik JDBC to zbiór klas implementujących interfejsy opisane w specyfikacji JDBC

Bardziej szczegółowo

A Zasady współpracy. Ocena rozwiązań punktów punktów punktów punktów punktów

A Zasady współpracy. Ocena rozwiązań punktów punktów punktów punktów punktów A Zasady współpracy Ocena rozwiązań 3.0 25 40 punktów 3.5 41 65 punktów 4.0 66 80 punktów 4.5 81 100 punktów 5.0 101 130 punktów Warunki zaliczenia przedmiotu Student uzyska ocenę zaliczającą (3.0) o ile

Bardziej szczegółowo

Grzegorz Ruciński. Warszawska Wyższa Szkoła Informatyki 2011. Promotor dr inż. Paweł Figat

Grzegorz Ruciński. Warszawska Wyższa Szkoła Informatyki 2011. Promotor dr inż. Paweł Figat Grzegorz Ruciński Warszawska Wyższa Szkoła Informatyki 2011 Promotor dr inż. Paweł Figat Cel i hipoteza pracy Wprowadzenie do tematu Przedstawienie porównywanych rozwiązań Przedstawienie zalet i wad porównywanych

Bardziej szczegółowo

GSMONLINE.PL. Twój smartfon Huawei może być jeszcze szybszy Akcja. partnerska

GSMONLINE.PL. Twój smartfon Huawei może być jeszcze szybszy Akcja. partnerska GSMONLINE.PL Twój smartfon Huawei może być jeszcze szybszy 2017-07-06 Akcja partnerska Smartfony to tak naprawdę niewielkie komputery osobiste z własnym systemem operacyjnym i aplikacjami. Producenci dbają,

Bardziej szczegółowo

System komputerowy. Sprzęt. System komputerowy. Oprogramowanie

System komputerowy. Sprzęt. System komputerowy. Oprogramowanie System komputerowy System komputerowy (ang. computer system) to układ współdziałaniadwóch składowych: sprzętu komputerowegooraz oprogramowania, działających coraz częściej również w ramach sieci komputerowej.

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

Szczegółowy opis zamówienia:

Szczegółowy opis zamówienia: Szczegółowy opis zamówienia: Rok 2016 budowa stron w html5 (8h v + 4h ćw) 8 szt. html5 - zaawans. (7h v + 5h ćw) 8 szt. programowania w java script (9h v + 7h ćw) 8 szt. java script zaawans (8h v + 4h

Bardziej szczegółowo

Globalne referencje dla idempiere Business Suite

Globalne referencje dla idempiere Business Suite Globalne referencje dla idempiere Business Suite otwartego oprogramowania ERP grudzień 2018r. Puławy, Polska Opracowanie zrealizowane na podstawie publicznych zasobów internetowych przez StabilisOne Sp.

Bardziej szczegółowo

Mobilna przyszłość biznesu. Błażej Marciniak Dyrektor Sprzedaży Usług IT CTM Mobiltek SA

Mobilna przyszłość biznesu. Błażej Marciniak Dyrektor Sprzedaży Usług IT CTM Mobiltek SA Mobilna przyszłość biznesu Błażej Marciniak Dyrektor Sprzedaży Usług IT CTM Mobiltek SA Agenda Mobilność w biznesie. Stan obecny i trendy na przyszłość Opłacalność wdrażania rozwiązań mobilnych Jak dobrze

Bardziej szczegółowo

1 Prezentacja oferty StudioGS

1 Prezentacja oferty StudioGS 1 Prezentacja oferty StudioGS 2 Prezentacja oferty StudioGS Kim jesteśmy Powstanie naszej firmy to efekt połączenia sił kilku osób związanych z różnymi gałęziami informatyki programiści, webmasterzy, graficy

Bardziej szczegółowo

Tomasz Grześ. Systemy zarządzania treścią

Tomasz Grześ. Systemy zarządzania treścią Tomasz Grześ Systemy zarządzania treścią Co to jest CMS? CMS (ang. Content Management System System Zarządzania Treścią) CMS definicje TREŚĆ Dowolny rodzaj informacji cyfrowej. Może to być np. tekst, obraz,

Bardziej szczegółowo

OfficeObjects e-forms

OfficeObjects e-forms OfficeObjects e-forms Rodan Development Sp. z o.o. 02-820 Warszawa, ul. Wyczółki 89, tel.: (+48-22) 643 92 08, fax: (+48-22) 643 92 10, http://www.rodan.pl Spis treści Wstęp... 3 Łatwość tworzenia i publikacji

Bardziej szczegółowo

CMS, CRM, sklepy internetowe, aplikacje Web

CMS, CRM, sklepy internetowe, aplikacje Web CMS, CRM, sklepy internetowe, aplikacje Web Aplikacje PHP, open source, dodatki Add-ins, templatki, moduły na zamówienie Aplikacje mobilne jquery Mobile + PhoneGap Kilka platform w cenie jednego kodu JavaScript!

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

Laboratorium Informatyka (I) AiR Ćwiczenia z debugowania

Laboratorium Informatyka (I) AiR Ćwiczenia z debugowania Laboratorium Informatyka (I) AiR Ćwiczenia z debugowania Krzysztof Kluza, Janusz Miller 1 Debugowanie Debugowanie, czy też po polsku odpluskiwanie, to proces polegający na kontrolowanym wykonaniu programu

Bardziej szczegółowo

Platforma Cognos. Agata Tyma CMMS Department Marketing & Sales Specialist atyma@aiut.com.pl. 2011 AIUT Sp. z o. o.

Platforma Cognos. Agata Tyma CMMS Department Marketing & Sales Specialist atyma@aiut.com.pl. 2011 AIUT Sp. z o. o. Platforma Cognos Agata Tyma CMMS Department Marketing & Sales Specialist atyma@aiut.com.pl Business Intelligence - Fakty Kierownicy tracą około 2 godzin dziennie na szukanie istotnych informacji. Prawie

Bardziej szczegółowo