Click here to load reader

SDJ 08 2010

  • View
    229

  • Download
    3

Embed Size (px)

DESCRIPTION

Software Developer Journal

Text of SDJ 08 2010

  • 4SPIS TRECI

    BIBLIOTEKA MIESICA6 Google SparseHash Wyspecjalizowane kontenery haszujce w jzyku C++Rafa KociszStandardowa Biblioteka Wzorcw (STL) jzyka C++ to wspaniae i potne narzdzie. Niestety ewident-nie doskwiera w niej brak wsparcia dla kontenerw mieszajcych. Nowy standard C++ ma rozwiza ten problem, ale pki co trzeba szuka innych alternatyw w postaci zewntrznych bibliotek. W niniejszym arty-kule przedstawi implementacj tablic haszujcych ro-dem z Google.

    KLUB TECHNICZNY16 Technologie Progress OpenEdge Cz 9. OpenEdge SQLPiotr TucholskiOpenEdge SQL stworzony przez Progress Software Corporation jest implementacj powszechnie znanych standardw, wczajc SQL-92, SQL-99 i SQL-2003. Jest czci otwartego, elastycznego interfejsu i pe-ni niezwykle wan rol w procesie rozwoju nowocze-snych aplikacji biznesowych OpenEdge.

    PROGRAMOWANIE PYTHON20 Kurs Pythona. Cz.II Struktury danych, funkcje i moduyukasz LangaW odcinku wprowadzajcym zainstalowalimy Pythona i troch pobawilimy si rnymi jego cechami. Po na-braniu swobody w wykorzystaniu linii polece moemy zabra si za bardziej metodyczny przegld tego, co oferuje nam jzyk spod znaku wa.

    8/2010 (188)

    4 8/2010

    PROGRAMOWANIE JAVA30 Przewodnik po SCJP Czyli certyfikat z Javy cz.VKrzysztof Rychlicki - KiciorProces zdobywania certyfikatw, potwierdzajcych umiejtnoci z rnych dziedzin wiedzy, sta si jednym z waniejszych elementw osobistego rozwoju. Proces ten ma miejsce rwnie w brany IT; certyfikaty dla pro-gramistw (Java lub .NET), administratorw czy sie-ciowcw (Cisco) mona coraz czciej odnale w CV osb starajcych si o prac.

    36 Java na BlackBerry Podstawy pisania aplikacjiTomasz MilczarekArtyku przedstawia podstawy programowania aplika-cji w jzyku Java pod system BlackBerry. W podstawo-wym zakresie omwione zostay cztery tematy:oglne sposoby tworzenia aplikacji, budowanie interfejsu uyt-kownika, programowanie menu telefonu oraz zagad-nienie utrwalania danych.

    42 Wiosna z drug twarz w chmurach Cz IPawe NieciorukKompletny przykad procesu wytwarzania aplikacji Ja-va Server Faces 2.0 z uyciem Spring Framework i Hi-bernate wraz z jej kocowym wdroeniem na chmur obliczeniow Amazon Elastic Compute Cloud (EC2).

    NIEZAWODNE OPROGRAMOWANIE50 Testowanie gier na urzdzenia mobilneGrzegorz TarczyskiTestowanie gier jest niezwykle zoon materi, zwaszcza przy duych, wysokobudetowych pro-dukcjach. Gry na urzdzenia mobilne zwykle do ta-kich nie nale, co nie oznacza, e proces testowa-nia jest tu mao istotny czy moliwy do pominicia. Ja-ka jest specyfika tego procesu, dowiecie si z niniej-szego artykuu.

  • 4Miesicznik Software Developers Journal (12 numerw w roku)

    jest wydawany przez Software Press Sp. z o.o. SK

    Redaktor naczelny: ukasz opuszaski [email protected]

    Projekt okadki: Agnieszka Marchocka

    Skad i amanie: Tomasz Kostro www.studiopoligraficzne.com

    Kierownik produkcji: Andrzej Kuca [email protected]

    Adres korespondencyjny:Software Press Sp. z o.o. SK,

    ul. Bokserska 1, 02-682 Warszawa, Polskatel. +48 22 427 36 91, fax +48 22 224 24 59

    www.sdjournal.org [email protected]

    Dzia reklamy: [email protected] dokada wszelkich stara, by publikowane

    w pimie i na towarzyszcych mu nonikach informacje i programy byy poprawne, jednake nie bierze odpowiedzialnoci za efekty wykorzystania ich; nie gwarantuje take poprawnego dziaania

    programw shareware, freeware i public domain.

    Wszystkie znaki firmowe zawarte w pimie s wasnoci odpowiednich firm.

    Zostay uyte wycznie w celach informacyjnych.

    Osoby zainteresowane wspprac prosimy o kontakt:[email protected]

    SPIS TRECI

    Reklama

    Z YCIA ITOLOGA 58 CMMI Dlaczego powinno Ci to obchodzi?Mariusz ChrapkoPamitam jak zaczynaem swoj przygod z rozwizy-waniem sudoku. Na pocztku byo niemiosiernie trud-no, potem stopniowo apaem wiatr w agle. Podob-nie jest z modelem CMMI. Na pierwszy rzut oka wy-daje si bardzo skomplikowany. Pniej, w miar jak stopniowo go poznajemy, zaczynamy dostrzega jego wewntrzne pikno i logik, widzimy e jego prakty-ki naprawd maj sens i mog nam si przyda. Tak byo ze mn, i tak jestem o tym przekonany bdzie rwnie z Wami!

    WYWIAD64 Mariusz Chrapko Wywiad z autorem pierwszej w Polsce ksiki na temat modelu CMMI oraz jego praktycznego zastosowania.Mariusz Chrapko jest wieloletnim praktykiem w zakre-sie doskonalenia procesw tworzenia oprogramowa-nia w oparciu o model CMMI. Wspiera firmy informa-tyczne na terenie caej Europy, prowadzc coaching zespow projektowych oraz szkolenia na rnych szczeblach organizacyjnych. Dodatkowo jest prakty-kiem we wdraaniu i adaptacji metod Agile Software Development (wczeniej Agile Coach/ Centrum Opro-gramowania Motoroli w Krakowie), Programu Metryk Organizacyjnych, a take procesu Peer Review.

    SPIS TRECI

  • 8/20106

    BIBLIOTEKA MIESICA Tablice haszujce w jzyku C++

    www.sdjournal.org 7

    Struktury danych to niewtpliwie jeden z naj-bardziej elementarnych, a zarazem kluczo-wych komponentw z ktrych zbudowane s nasze programy. Posiadanie wydajnych struktur da-nych to jeden z wielu kluczy do osignicia sukcesu w inynierii oprogramowania. Dzi, dziki bibliotekom standardowym, ktre wyposaone s w cay szereg przydatnych, a zarazem atwych w uyciu i co wa-ne bardzo wydajnych kontenerw, problem nisko-poziomowych struktur danych w pewnym stopniu zo-sta usunity ze wiadomoci programistw. Nie wie-rzysz? Wic zapytaj sam siebie: kiedy implemento-wae ostatnio wasny, wyspecjalizowany kontener? A w nastpnej kolejnoci zadaj takie samo pytanie kilku swoim znajomym programistom...

    Wysokiej jakoci biblioteka standardowa to oczywi-cie Bardzo Dobra Rzecz. Dziki takim bibliotekom jak STL czy Java Collection Framework, lista czy al-gorytm sortowania stay si podstawowymi klocka-mi, z ktrych mog niejako skada swoje programy. Dziki temu jestem w stanie skupi si bardziej na ich waciwej funkcjonalnoci. Innym sowy: tworzc mo-je aplikacje mog myle na wyszym poziomie abs-trakcji. W zasadzie powinienem by zadowolony...

    Jednake, operowanie na wysokim poziomie abs-trakcji ma zarwno swoje dobre jak i ze strony. Ne-gatywnym czynnikiem moe by w tym przypad-ku zjawisko polegajce na tym, e tworzc progra-my w ten sposb przestajemy dostrzega szczegy.

    W jzykach wysokiego poziomu (Perl, Python, Ruby itd...) jest to efekt jak najbardziej podany. Jednake w jzykach niszego poziomu (np. C, bd C++, kt-ry dzi de facto jest jzykiem zdecydowanie niskopo-ziomowym) efekt taki moe by w wielu przypadkach nie do zaakceptowania.

    Ciekawy casus stanowi wspomniana wczeniej bi-blioteka STL (a w zasadzie cz tej biblioteki wcho-dzca w skad standardu jzyka C++). Przez wie-lu (rwnie przez autora niniejszego tekstu) uwa-ana za arcydzieo inynierii oprogramowania, po-siada niestety pewne wady. Jedn z nich jest brak kontenerw zbudowanych w oparciu o tablice mie-szajce (ang. hash tables). Co ciekawe tablice te nie zostay wprowadzone do biblioteki standardowej C++ z bardzo prozaicznego, czysto ludzkiego powo-du: Komisji opracowujcej standard C++98 po pro-stu zabrako czasu. W efekcie, caa rzesza programi-stw jzyka C++ wykorzystuje na co dzie kontene-ry asocjacyjne oparte na zrwnowaonych drzewach. Co gorsza, modsi, tudzie sabiej wyedukowani pro-gramici mog wrcz nie zdawa sobie sprawy z ist-nienia rozwiza alternatywnych, czsto o wiele le-piej dostosowanych do wymaga naszych progra-mw. W tym kontekcie mona powiedzie, e bi-blioteka standardowa jzyka C++ w pewnym sensie ogranicza nasze umysy... C jest to niewtpliwie cena postpu. W kocu po to budujemy kolejne war-stwy abstrakcji aby nie zaprzta sobie gowy zbd-

    Google SparseHash

    Standardowa Biblioteka Wzorcw (STL) jzyka C++ to wspaniae i potne narzdzie. Niestety ewidentnie doskwiera w niej brak wsparcia dla kontenerw mieszajcych. Nowy standard C++ ma rozwiza ten problem, ale pki co trzeba szuka innych alternatyw w postaci zewntrznych bibliotek. W niniejszym artykule przedstawi implementacj tablic haszujcych rodem z Google.

    Dowiesz si: Do czego suy biblioteka Google SparseHash; Jak rozpocz z ni prac; Jak zastosowa j w praktyce; Jak Google SparseHash integruje si z bibliotek STL.

    Powiniene wiedzie: Solidna znajomo jzyka C++; Solidna znajomo biblioteki STL.

    Wyspecjalizowane kontenery haszujce w jzyku C++

  • 8/20106

    BIBLIOTEKA MIESICA Tablice haszujce w jzyku C++

    www.sdjournal.org 7

    Jak atwo si domyle, kontenery typu * _ hash _ map oferuj funkcjonalno zblion do standardowych kontenerw std::map z biblioteki STL. Z kolei kolek-cje typu * _ hash _ set to klasy bliniacze dla STL-owego zbioru (std::set). Przedrostki w nazwach klas okrelaj ich charakterystyki wydajnociowe. Konte-nery typu sparse (w jzyku polskim: rzadkie) zosta-y zaprojektowane w taki sposb aby uczyni je bar-dzo wydajnymi pod ktem zuycia pamici. Z kolei komponenty typu dense (w jzyku polskim: gste) s stworzone z myl o wysokiej wydajnoci w kontek-cie czasu trwania ich operacji.

    Ostatni z wymienionych kontenerw (sparsetable), to tablica, ktra gwarantuje bezporedni dostp (w no-menklaturze nazewniczej biblioteki STL: random ac-cess) do elementw, a take operacje wstawiania i usu-wania elementw, a wszystko to w staym czasie!

    W kolejnych podpunktach niniejszego artykuu omwimy po kolei wyej wymienione komponenty.

    Pierwsze spojrzenieZanim przejdziemy do omwienia szczegw zwi-zanych z bibliotek Google SparseHash, na roz-grzewk rozwaymy prosty przykad jej wykorzysta-nia. Konfiguracja Google SparseHash jest bardzo prosta (patrz: ramka Szybki Start). Spjrzmy na Li-sting 1, gdzie przedstawiony jest prosty przypadek uycia biblioteki (uwaga: wspomniany przykad nale-y skompilowa przy pomocy narzdzia Microsoft Vi-sual C++; wicej informacji na temat tego ogranicze-nia znajdziesz w dalszej czci artykuu).

    Czytelnikom, ktrzy znaj podstawy biblioteki S

Search related