POLITECHNIKA BIAŁOSTOCKA WYDZIAŁ INFORMATYKI



Podobne dokumenty
POLITECHNIKA BIAŁOSTOCKA

Informatyka w życiu matematyka

REFERAT O PRACY DYPLOMOWEJ

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

REFERAT PRACY DYPLOMOWEJ

REFERAT O PRACY DYPLOMOWEJ

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

Instalacja systemu zarządzania treścią (CMS): Joomla

System zarządzający grami programistycznymi Meridius

Instrukcja obsługi dla studenta

Instrukcja użytkownika STUDENTA AKADEMICKIEGO SYSTEMU ARCHIWIZACJI PRAC

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

Instrukcja użytkownika OPERATORA Akademickiego Systemu Archiwizacji Prac

Tworzenie aplikacji Web Alicja Zwiewka. Page 1

Instrukcja Użytkownika (Studenta) Akademickiego Systemu Archiwizacji Prac

Webowy generator wykresów wykorzystujący program gnuplot

REFERAT PRACY DYPLOMOWEJ

Instrukcja obsługi dla studenta

Plan. Wprowadzenie. Co to jest APEX? Wprowadzenie. Administracja obszarem roboczym

Instrukcja obsługi dla studenta

Instrukcja obsługi dla studenta

Instrukcja. Systemu Obsługi Praktyk -Moduł Student UNIWERSYTET MARII CURIE-SKŁODOWSKIEJ W LUBLINIE

Tworzenie i obsługa wirtualnego laboratorium komputerowego

Dokument Detaliczny Projektu

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

Praca Magisterska "System zdalnego składania ofert kupna i sprzedaży za pośrednictwem Internetu" AUTOR PROMOTOR

APD Instrukcja użytkownika

Sprawdzenie i ocena pracy z wykorzystaniem Archiwum Prac Dyplomowych

Platforma e-learningowa

Instrukcja dostępu do usługi Google Scholar

Nadzorowanie stanu serwerów i ich wykorzystania przez użytkowników

Archiwum Prac Dyplomowych

Styczeń 2017 QVX. System dziekanatowy instrukcja dla. studentów. Just dream IT, we do the rest. Instrukcja do systemu dziekanatowego dla studentów.

Instrukcja obsługi dla studenta

UNIWERSYTET KAZIMIERZA WIELKIEGO WYDZIAŁ MATEMATYKI, FIZYKI I TECHNIKI INSTYTUT TECHNIKI

Programowanie w Sieci Internet Python - c. d. Kraków, 28 listopada 2014 r. mgr Piotr Rytko Wydział Matematyki i Informatyki

Podręcznik Użytkownika LSI WRPO

Instrukcja Użytkownika Nauczyciel Akademicki Akademickiego Systemu Archiwizacji Prac w Uniwersytecie Papieskim Jana Pawła II w Krakowie

Podręcznik użytkownika Obieg dokumentów

WINDOWS Instalacja serwera WWW na systemie Windows XP, 7, 8.

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

e-awizo SYSTEM POTWIERDZANIA DORĘCZEŃ POCZTY ELEKTRONICZNEJ

Instrukcja obsługi dla studenta

REFERAT O PRACY DYPLOMOWEJ

Aplikacja webowa do zarządzania maszynami wirtualnymi

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

Instrukcja użytkownika OPERATORA Akademickiego Systemu Archiwizacji Prac

Instrukcja Użytkownika (Nauczyciel Akademicki) Akademickiego Systemu Archiwizacji Prac

Instrukcja użytkownika STUDENTA AKADEMICKIEGO SYSTEMU ARCHIWIZACJI PRAC

Instalacja SQL Server Express. Logowanie na stronie Microsoftu

Uzyskanie dostępu oraz instalacja oprogramowania STATISTICA dla pracowników oraz studentów Uniwersytetu Ekonomicznego w Poznaniu

Wprowadzenie do języka Python

KORZYSTANIE Z BAZY DANYCH UpToDate

Django : praktyczne tworzenie aplikacji sieciowych / Antonio Mele. Gliwice, cop Spis treści

Instrukcja użytkownika

Politechnika Częstochowska. Projektowanie systemów użytkowych II

2014 Electronics For Imaging. Informacje zawarte w niniejszej publikacji podlegają postanowieniom opisanym w dokumencie Uwagi prawne dotyczącym tego

OMNITRACKER Wersja testowa. Szybki przewodnik instalacji

Instrukcja użytkownika NAUCZYCIELA AKADEMICKIEGO SYSTEMU ARCHIWIZACJI PRAC

KARTA PRZEDMIOTU. Programowanie aplikacji internetowych

Instrukcja systemu Archiwum Prac Dyplomowych (APD)

REFERAT PRACY DYPLOMOWEJ Temat pracy: Projekt i realizacja serwisu ogłoszeń z inteligentną wyszukiwarką

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

ActiveXperts SMS Messaging Server

System epon Dokumentacja użytkownika

Dokument Detaliczny Projektu


ASP.NET MVC. Grzegorz Caban 20 stycznia 2009

Specyfikacja implementacyjna aplikacji serwerowej

Instrukcja obsługi dla studenta

NetDrive czyli jak w prosty sposób zarządzać zawartością FTP

OMNITRACKER Wersja testowa. Szybki przewodnik instalacji

Wprowadzenie do Doctrine ORM

Materiał szkoleniowy:

EXSO-CORE - specyfikacja

Z pojedynczym obiekcie zasady grupy znajdziemy dwa główne typy ustawień:

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

Forex PitCalculator INSTRUKCJA UŻYTKOWNIKA

Wykład I. Wprowadzenie do baz danych

58 Zjazd Naukowy PTChem. Zgłaszanie abstraktów

Instrukcja użytkownika WYKŁADOWCY AKADEMICKIEGO SYSTEMU ARCHIWIZACJI PRAC

Architektura systemu e-schola

Fiery Remote Scan. Uruchamianie programu Fiery Remote Scan. Skrzynki pocztowe

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

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

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC

Pracownia internetowa w szkole ZASTOSOWANIA

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

Multi-projekt z przedmiotów Inżynieria oprogramowania, Współczesne bazy danych i Programowanie w języku Java

Dodatkowo planowane jest przeprowadzenie oceny algorytmów w praktycznym wykorzystaniu przez kilku niezależnych użytkowników ukończonej aplikacji.

elektroniczna Platforma Usług Administracji Publicznej

Deduplikacja danych. Zarządzanie jakością danych podstawowych

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

Współpraca z platformą Emp@tia. dokumentacja techniczna

Instrukcja Użytkownika (Studenta) Systemu Obsługującego Lokalne Archiwum Dokumentów

Generatory pomocy multimedialnych

CMS- kontakty (mapa)

Transkrypt:

POLITECHNIKA BIAŁOSTOCKA WYDZIAŁ INFORMATYKI KATEDRA OPROGRAMOWANIA PRACA DYPLOMOWA INŻYNIERSKA Rozproszony system o otwartym kodzie wspomagający organizację zawodów sztuk walki (praca zespołowa) WYKONAWCA: Maciej Januszewski PODPIS:... PROMOTOR: dr inż. Cezary Bołdak PODPIS:... BIAŁYSTOK 2015

POLITECHNIKA BIAŁOSTOCKA Wydział INFORMATYKI Katedra OPROGRAMOWANIA Karta dyplomowa Studia STACJONARNE I STOPNIA Nr albumu studenta: 87 933 Rok akademicki: 2014/2015 Kierunek studiów INFORMATYKA Specjalność...... Imię i nazwisko studenta TEMAT PRACY DYPLOMOWEJ:...... Zakres pracy: 1.... 2.... 3.... 4.... Słowa kluczowe (max 5):... Imię i nazwisko, stopień/ tytuł promotora - podpis... Imię i nazwisko kierownika katedry - podpis... Data wydania tematu pracy dyplomowej - podpis promotora... Regulaminowy termin złożenia pracy dyplomowej... Data złożenia pracy dyplomowej - potwierdzenie dziekanatu... Ocena promotora... Podpis promotora... Imię i nazwisko, stopień/tytuł recenzenta... Ocena recenzenta... Podpis recenzenta 2

THESIS TOPIC: A distributed open source system supporting the organization of marial arts competitions (teamwork) ABSTRACT OF THESIS Martial Arts are codified systems and traditions of combat practices, which are practiced for a variety of reasons: self-defense, competition, physical health and fitness, entertainment, as well as mental, physical, and spiritual development. Many martial arts, especially those from Asia, also teach side disciplines which pertain to medicinal practices. Hundreds of millions of people worldwide practice some form of martial art. Web Japan claims there are 50 million karate practitioners worldwide. The purpose of present thesis was to create a distributed system for the organization of various martial arts. There was created an application for the style of Shotokan Karate that allows in quick and easy way create a tournament, weight and age categories and assign them to the players, as well as drawing a table chart in the beginning rounds, taking into account the guidelines contained in the rules for Shotokan Karate competitions. 3

Załącznik nr 4 do Zasad postępowania przy przygotowaniu i obronie pracy dyplomowej w PB... Białystok, dnia Imię i nazwisko studenta... PESEL... nr albumu... kierunek i forma studiów... promotor pracy dyplomowej OŚWIADCZENIE Przedkładając w roku akademickim 20.../20... Promotorowi..... pracę dyplomową pt.:......................., dalej zwaną pracą dyplomową, oświadczam, że: 1) praca dyplomowa stanowi wynik samodzielnej pracy twórczej, 2) wykorzystując w pracy dyplomowej materiały źródłowe, w tym w szczególności: monografie, artykuły naukowe, zestawienia zawierające wyniki badań (opublikowane, jak i nieopublikowane), materiały ze stron internetowych, w przypisach wskazywałem/am ich autora, tytuł, miejsce i rok publikacji oraz stronę, z której pochodzą powoływane fragmenty, ponadto w pracy dyplomowej zamieściłem/am bibliografię, 3) praca dyplomowa nie zawiera żadnych danych, informacji i materiałów, których publikacja nie jest prawnie dozwolona, 4) praca dyplomowa dotychczas nie stanowiła podstawy nadania tytułu zawodowego, stopnia naukowego, tytułu naukowego oraz uzyskania innych kwalifikacji, 5) treść pracy dyplomowej przekazanej do dziekanatu Wydziału..... jest jednakowa w wersji drukowanej oraz w formie elektronicznej, 6) jestem świadomy/a, że naruszenie praw autorskich podlega odpowiedzialności na podstawie przepisów ustawy z dnia 4 lutego 1994 r. o prawie autorskim i prawach pokrewnych (t. j.: Dz.U. z 2006 r. Nr 90, poz. 631 z późn. zm.), jednocześnie na podstawie przepisów ustawy z dnia 27 lipca 2005 r. Prawo o szkolnictwie wyższym (t. j.: Dz. U. z 2012 r. poz. 572 z późn. zm.) stanowi przesłankę wszczęcia postępowania dyscyplinarnego oraz stwierdzenia nieważności postępowania w sprawie nadania tytułu zawodowego, 7) udzielam Politechnice Białostockiej nieodpłatnie licencji na korzystanie z pracy dyplomowej w celu realizacji procedury antyplagiatowej przyjętej w Uczelni oraz na archiwizowanie pracy dyplomowej w repozytorium prac. i udostępnianie jej w Bibliotece Wydziału... oraz Bibliotece Politechniki Białostockiej przez okres 50 lat od obrony pracy dyplomowej. 8) wyrażam zgodę na przetwarzanie moich danych osobowych w celu realizacji procedury antyplagiatowej przyjętej w Politechnice Białostockiej, zgodnie z ustawą z dnia 29 sierpnia 1997 r. o ochronie danych osobowych (t.j. Dz.U. z 2002 r., Nr 101, poz. 926 z późn. zm.).. czytelny podpis studenta 4

Karate nie jest forma agresji ale czasami po prostu boli! 5

Spis treści 1. Wstęp... 7 1.1. Wprowadzenie... 7 1.2. Cel i zakres pracy... 8 1.3. Podział pracy... 9 2. Przegląd istniejących rozwiązań... 11 3. Wykorzystane narzędzia i technologie... 17 4. Analiza wymagań... 27 4.1. Funkcjonalność systemu... 28 5. Projekt systemu... 33 5.1. Ogólna budowa systemu... 33 6. Implementacja i wdrożenie... 37 7. Instrukcja obsługi systemu... 42 8. Podsumowanie... 52 9. Literatura... 53 10. Wykaz rysunków... 55 6

1. Wstęp Sztuki walki są zdumiewająco popularne na całym świecie, można się na nie natknąć praktycznie w każdym mieście. Istnieją tysiące szkół sztuk walki, które bardzo często wysoce różnią się od siebie, jednak zasadniczo nauka opiera się na tych samych metodach fizycznym pokonaniu przeciwnika w bezpośrednim starciu, bez użycia broni. Najczęściej możemy spotkać się ze sztukami pochodzącymi z dalekiego wschodu, dlatego że właśnie tam powstawały pierwsze sztuki walki. Większość wschodnich szkół stawia sobie za zadanie nie tylko fizyczne przygotowanie człowieka do walki, lecz także jego rozwój psychiczny i duchowy. Internalizacja wartości budo 1 zawartych w tradycji sztuk walki rozwija w ćwiczącym wiele cech związanych z poziomem zadowolenia z życia. Elementy medytacji rozwijają sferę duchową, likwidują negatywne myśli, zmniejszają uczucie niepokoju, lęku, a przede wszystkim uczą wewnętrznej dyscypliny. Niektóre sztuki walki zostały dostosowane do celów rywalizacji sportowej i są również uznawane za sporty walki. 1.1. Wprowadzenie Karate [1] jest sztuką walki, a także sportem walki stworzonym na japońskiej wyspie Okinawa. Od momentu powstania sztuka ta ewoluowała i aktualnie swoim zasięgiem obejmuje cały świat. Obecnie istnieje ponad 100 odmian (stylów) karate. Słowo karate oznacza puste ręce, czyli sposób walki bez użycia broni. Jednak najczęściej możemy spotkać się z określeniem karate-do, co dosłownie znaczy droga pustych rąk. Główną ideą jest aspekt drogi (jap. do ), którą kroczy się całe życie, jako symbol niekończącego się procesu dążenia do doskonałości oraz pokonywania własnych słabości. Większość stylów w Polsce przyjęła karate jak sport z elementami samoobrony. Jednym z dominujących [2] jest styl Shotokan. Wywodzi się on od mistrza Gichina Funakoshiego (1868 1957), który był pierwszym nauczycielem karate w Tokio. Główną zasadą w shotokanie jest: zaczynaj blokiem i kończ blokiem. Mistrz twierdził, że żadnej techniki nie wolno wykonować nie znając jej przeznaczenia, czyli interpretacji (jap. bunkai ). Trening karate dzieli się na kihon (nauka podstaw), kata (układ ruchów 1 Budo (jap. ) droga walki, sztuka wojny. 7

wraz z wykorzystaniem technik z kihonu) oraz kumite (walka). W kumite sportowym wymaga się precyzyjnej kontroli psychicznej nad własnym zachowaniem w trakcie walki. Aby technika została zaliczona, musi być wykonana z odpowiednio stabilnej pozycji oraz z należytą siłą. Aby zmotywować ćwiczących do rozwoju, obowiązuje szczegółowa hierarchia stopni. Celem popularyzacji karate jako sportu kwalifikowanego, przez cały rok organizowane są liczne zawody, których celem jest wyłonieniem najlepszych zawodników i zawodniczek. Organizacją, która tworzy strukturę komisji stylu Shotokan w Polsce jest Polski Związek Karate. Organizacją odpowiedzialną za ruch sportowy karate na świecie jest WKF 2. Dzięki połączeniu obu tych organizacji powstało Karate WKF, które jednocześnie trzyma się klasycznych, twardych zasad panujących w etykiecie Karate, wplatając w nie elementy sportowej rywalizacji. Szczególną uwagę zwraca się na szacunek do partnera, aby przeprowadzane zawody, pomimo ogromnego zaanagażowania obu stron, adrenaliny lub agresywności wynikącej z aktualnego wyniku walki przebiegały w miłej atmosferze. 1.2. Cel i zakres pracy Celem niniejszej pracy dyplomowej było stworzenie rozproszonego systemu w celu ułatwienia organizacji zawodów karate Shotokan. Została stworzona aplikacja umożliwiająca użytkownikom w szybki i prosty sposób stworzenie turnieju, stworzenie kategorii wiekowych i wagowych oraz przypisanie do nich zawodników, a także wylosowanie walk w pierwszych rundach, uwzględniając wytyczne zawarte w regulaminie przeprowadzania zawodów Karate Shotokan. Praca składa się z dziesięciu rozdziałów. W rozdziale drugim zaprezentowano przegląd istniejących rozwiązań na rynku. W rozdziale trzecim przedstawiono najważniejsze założenia dotyczące projektu, opisano wykorzystane narzędzia i technologie podczas tworzenia aplikacji, a także ukazano korzyści wynikające z ich wykorzystania. Analizę wymagań oraz najważniejsze funkcjonalności systemu przedstawiono w rozdziale czwartym. Kolejny, piąty rozdział przedstawia projekt systemu, w którym przedstawiono ogólną budowę systemu. Rozdział szósty to szczegółowy opis implementacji systemu wraz 2 WKF - World Karate Federation, Światowa Federacja Karate. 8

z jego wdrożeniem, a rozdział siódmy to instrukcja obsługi korzystania z systemu. W ostatnim ósmym rozdziale przedstawiono podsumowanie pracy. 1.3. Podział pracy W związku z tym, że praca ta ma charakter zespołowy, moim zadaniem było stworzenie aplikacji do organizowania zawodów Karate Shotokan. Kolega z zespołu odpowiedzialny był za stworzenie aplikacji do organizowania zawodów Karate Kyokushin. W naszym przypadku podstawy systemu opierały się na tych samych założeniach, jedyną różnicą w działaniu aplikacji był sposób losowania i przeprowadzania walk. Tworząc wspólne fundamenty systemu opracowałem wygodny w użyciu panel użytkownika oraz zaimplementowałem widoki odpowiedzialne za tworzenie i zarządzanie drużyną. Budowa systemu wspólne podstawy, aplikacja [MAIN] Opracowanie następujących funkcjonalności: - panel użytkownika - tworzenie/zarządzanie drużyną Opracowanie następujących funkcjonalności: - tworzenie/zarządzanie turniejem - logowanie i rejestracja Maciej Januszewski Stefan Ejsmont Stworzenie aplikacji adekwatnie do założeń pracy dyplomowej [nazwa aplikacji] Aplikacja Karate Shotokan [KARATESHOTOKAN] Maciej Januszewski Aplikacja Karate Kyokushin [KARATEKYOKUSHIN] Stefan Ejsmont 9

Hitotsu! Jinkaku kansei-ni tsutomuru koto! Po pierwsze! Dazyc do doskonalosci charakteru! \ 10

2. Przegląd istniejących rozwiązań Organizacja zawodów wymaga specjalistycznego oprogramowania, które pozwoli szybko i sprawnie przypisać zawodników do odpowiednich kategorii wiekowych i wagowych, a także wygenerować gotowe arkusze wraz z wylosowanymi przez system zawodnikami w pierwszych rundach. Ponadto, w trakcie trwania zawodów pożądane są urządzenia, dzięki którym można na bieżąco regulować przebieg walki, przyznawać punkty i kary. W celu poszukiwania podobnych produktów, udało mi się trafić w większości na komercyjne rozwiązania. Wśród darmowych programów najczęściej były to jednak aplikacje mobilne umożliwiające przyznawanie punktów i kar w trakcie walki. Darmowe oprogramowania: Karate Scoreboard Free [http://karate-scoreboard.soft112.com] aplikacja napisana pod styl Karate Shotokan na system Android, wymaga wersji 2.2 lub wyższej. Za pomocą odpowiednich przycisków umożliwia dodawanie punktów, przyznawanie kar względem kategorii przewinienia. Dobór trwania walki uwarunkowany jest od kategorii wiekowej, więc możliwe jest odpowiednio ustawienie 2, 3 lub 4 minut. W przypadku wygranej przed czasem, aplikacja automatycznie wyznacza zwycięzcę. Na 10 sekund przed końcem walki zaprogramowano alarm dźwiękowy, który informuje zawodników o kończącym się czasie. Wygląd i przebieg działania aplikacji przedstawiono na rysunkach 2.1. oraz 2.2. Rys. 2.1. Aplikacja Karate Scoreboard Free na system Android. 11

Rys. 2.2. Przebieg walki podczas używania aplikacji Karate Scoreboard Free. Martial Arts Score Keeper [http://martial-arts-score-keeper.soft112.com] aplikacja napisana pod Tae Kwon Do oraz brazylijskie Jiu Jitsu na system Android, wymaga wersji 1.0 lub nowszej. Nie jest to aplikacja do zarządzania walką w Karate, lecz idea jest praktycznie ta sama. Wygląd i przebieg działania aplikacji przedstawiono na rysunkach 2.3. oraz 2.4. Rys. 2.3. Aplikacja Martial Arts Score Keeper na system Android. Rys. 2.4. Przebieg walki podczas używania aplikacji Martial Arts Score Keeper. 12

Komercyjne oprogramowania: ikumite DOJO aplikacja napisana na system ios, wymaga wersji 3.2 lub nowszej, najbardziej kompatybilna na ipadzie. Profesjonalny system do organizacji i zarządzania turniejów Karate Shotokan wraz z odmianą sportową WKF. Oprócz podstawowych funkcjonalności, umożliwia także wygenerowanie walk eliminacyjnych (w pierwszych rundach), uwzględnia system repasaży. W przypadku początkujących użytkowników, posiada poradnik głosowy, który będzie instruował krok po kroku. Wygląd i przebieg działania aplikacji przedstawiono na rysunkach 2.5. oraz 2.6. Rys. 2.5. Ikona programu ikumite DOJO Rys. 2.6. Przebieg walki podczas używania aplikacji ikumite DOJO. 13

N-Pro Tournament Karate [http://software.n-pro.nl/] aplikacja desktopowa napisana na system Windows. W pełni wyposażone, profesjonalne oprogramowanie do organizacji zawodów i zarządzania zawodnikami w systemie Karate Shotokan. Jedno z najpotężniejszych programów, na które trafiłem. Pomimo dużej ceny - 60,00, uważam że aplikacja jest warta zakupu. Wygląd i przebieg działania aplikacji przedstawiono na rysunkach 2.7. oraz 2.8. Rys. 2.7. Etap tworzenia eliminacji wraz z uwzględnieniem ilości zawodników. Rys. 2.8. Przebieg walki w aplikacji N-Pro Tournament Karate. 14

Tournament Bracket Generator [http://challonge.com/tournament/] aplikacja webowa. Pozwala na (darmowe) generowanie tabelek eliminacyjncyh na podstawie wprowadzonej ilości zawodników, a w przypadku posiadania konta Premium w pełni umożliwia organizację turnieju. Wygląd i przebieg działania aplikacji przedstawiono na rysunkach 2.9. oraz 2.10. Rys. 2.9. Aplikacja Tournament Bracket Generator. Na rys. 2.10. znajduje się przykładowo wygenerowana tabelka dla 8 uczestników: Rys. 2.10. Przykładowo wygenerowana tabelka w aplikacji. 15

Hitotsu! Makoto-no michi-wo o mamoru koto! Po pierwsze! Bronic drogi prawdy! 16

3. Wykorzystane technologie i narzędzia W rozdziale tym przedstawiono analizę wykorzystanych w procesie tworzenia aplikacji technologii oraz narzędzi programistycznych. Aplikacja została napisana z myślą o sztukach walki, w których rozgrywa się zawody w systemie pucharowym, jednak ze względu na otwartość kodu, możliwy jest dalszy rozwój aplikacji o kolejne moduły, rozszerzające dodawanie innych stylów lub sztuk walki. Aplikacje webowe, w przeciwieństwie do aplikacji desktopowych, nie są zależne od systemów operacyjnych. Mamy pewność, że nasza aplikacja zadziała na innym komputerze, na którym zainstalowany jest inny system operacyjny, niż ten, na którym została stworzona. Dzięki wykorzystaniu przeglądarki internetowej oraz serwera WWW, można będzie skorzystać z niej na każdym komputerze, na całym świecie. Wykorzystane technologie Obecnie na świecie istnieją tysiące języków programowania i każdego roku powstają nowe. Język programowania służy do precyzyjnego opisywania zadań, które mają być wykonane przez komputer. Visual Basic, Java czy C# są jednymi z najbardziej popularnych języków programowania i uważane za języki wysokiego poziomu. Oznacza to, że ich semantyka jest bliższa językowi człowieka niż maszyny cyfrowej. Napisana przeze mnie aplikacja miała należeć do oprogramowania typu Open Source, dlatego też zaczęły się poszukiwania języka, który w pełni działałby na otwartej licencji. Takim językiem okazał się Python. Python jest bezpłatny i należy do oprogramowania typu Open Source. Licencja Pythona pozwala na kopiowanie i modyfikację kodu. Jeżeli będziemy mieli ochotę, możemy go nawet odsprzedawać, bez ponoszenia jakichkolwiek sankcji karnych. Po krótkiej lekturze, wiedziałem już, w jakim środowisku będzie napisana aplikacja. Na podstawie przeczytanej przeze mnie literatury i artykułów w internecie, przedstawię najważniejsze wiadomości o Pythonie. 17

Python Python [3] [4] jest jednym z nowszych języków programowania. Jego głównym twórcą jest holenderski matematyk Guido van Rossum. Python powstał na początku lat 90. dwudziestego wieku jako następca języka ABC. Swoimi prostymi i klarownymi regułami jest jeszcze nawet bliższy języka angielskiego. Pisanie programów w Pythonie jest tak proste, że zostało nazwane programowaniem z szybkością myśli. Ponadto, prostota korzystania z Pythona przekłada się na efektywność profesjonalnych programów. Napisane w Pythonie programy są krótsze oraz czas potrzebny na ich napisanie jest dużo krótszy niż w przypadku wielu innych znanych języków programowania. Python posiada ogromną siłę i moc, jakich należałoby spodziewać się od progresywnego języka programowania. Python [5] [6] jest na tyle silnym językiem, by mógł zainteresować twórców oprogramowania na całym świecie, a także największe firmy, takie jak Google, IBM, Microsoft, NASA, Yahoo!, Red Hat, Verizon czy Xerox. Python jest także narzędziem wykorzystywanym podczas tworzenia profesjonalnych gier komputerowych przez takich producentów jak: Electronic Arts, 2K Games i Disney Interactive Media Group. Istnieje wiele języków zorientowanych obiektowo, np. C#, Java, lecz pod jednym względem Python je przewyższa. W wyżej wymienionych językach (C#, Java) programowanie obiektowe nie jest opcjonalne. Powoduje to, że krótkie programy stają się niepotrzebnie skomplikowane, a także konieczna jest pewna ilość komentarzy, nim nowy programista będzie mógł zrobić coś znaczącego w tym programie. W Pythonie przyjęto inną konwencję dotyczącą programowania obiektowego jest opcjonalna. Python daje moc i elastyczność pisania w każdej chwili mamy dostęp do bogactwa jakie daje nam obiektowe podejście do danego problemu, lecz używamy tych technik tylko wtedy, gdy rzeczywiście ich potrzebujemy. Kod napisany w Pythonie [7] można skompilować na każdym sprzęcie, począwszy od tak małych urządzeń jak palmtop, telefon, tablet aż po superkomputery. Oznacza to, że programy napisane w Pythonie są niezależne od platformy, czyli np. program napisany w systemie Windows będzie bez problemu działał na systemie Mac OS X, pod warunkiem, że wcześniej zainstalujemy na nim środowisko Pythona. 18

Pozwolę sobie zacytować [8] wiersz napisany przez dawnego programistę Pythona, Tima Petersa, przedstawiający w bardzo humorystyczny sposób filozofię Pythona. >>> import this Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts. Special cases aren't special enough to break the rules. Although practicality beats purity. Errors should never pass silently. Unless explicitly silenced. In the face of ambiguity, refuse the temptation to guess. There should be one-- and preferably only one --obvious way to do it. Although that way may not be obvious at first unless you're Dutch. Now is better than never. Although never is often better than right now. If the implementation is hard to explain, it's a bad idea. If the implementation is easy to explain, it may be a good idea. Namespaces are one honking great idea -- let's do more of those! Tim Peters 19

Django The Web framework for perfectionists with deadlines. Django [6] [7] jest jednym z dominujących zestawów bibliotek o otwartym kodzie, przeznaczonym do szybkiego tworzenia aplikacji internetowych, napisany w Pythonie. Jest [10] [11] [12] interpretowanym, w pełni zorientowanym obiektowo językiem wysokiego poziomu, w całości zbudowanym modularnie, co ułatwia jego testowanie oraz stosowanie w sposób interaktywny. Bazuje na zbliżonym do MVC 3 wzorcu projektowym, zwanym MVT 4. W porównaniu do innych dostępnych bibliotek Pythona (np. Pyramid, web2py, CubicWeb, Pylons, TurboGears), aplikacje napisane w Django działają dużo szybciej [13]. W łatwy sposób można pobierać dane z aplikacji napisanych w innych językach, np. PHP czy.net, a po przetworzeniu przekazywać dalej. Django znajduje szerokie zastosowanie w wielu obszarach IT: portale i serwisy społecznościowe aplikacje wewnątrzfirmowe aplikacje tworzone na zamówienie (np. CMS 5, CRM 6 ) Z Django korzystają między innymi takie wielkie firmy, jak: Google (Google App Engine), system pozwalający na tworzenie stron internetowych bazujących na silniku Google Grono.net Super Express Multikino.pl 3 MVC Model-View-Controller, Model-Widok-Kontroler. 4 MVT Model-View-Template, Model-Widok-Szablon. 5 CMS Content Management System, System Zarządzania Zawartością strony. 6 CRM Customer Relationship Management, Zestaw procedur i narzędzi istotnych w zarządzaniu kontaktami z klientami. 20

Architektura Django Gdy projektujemy prostą aplikację internetową nie zwracamy uwagi na fakt, że w tym samym pliku mieszamy ze sobą dane, logikę biznesową, logikę prezentacji i kod HTML. Z czasem nasza aplikacja rozbudowuje się, takie zestawienie ma znaczący wpływ na dalszą pracę. Nie dość, że utrudnia dalszą rozbudowę, ale także mamy skomplikowany dostęp do kodu, który chcielibyśmy wykorzystać w innym miejscu tej samej aplikacji. Dzielenie aplikacji na logiczne elementy zapewnia wzorzec MVC [9] [10] (ang. Model- View-Controller). Aplikacja składa się z modelu, który kontroluje dane, widoku, określającego sposób wyświetlania danych oraz kontrolera, który stanowi warstwę pośrednią i umożliwia użytkownikowi przetwarzanie i pobieranie danych. Z uwagi na fakt, iż skrót MVC nie brzmiał zbyt chwytliwie w gronie użytkowników Django, autorzy tego framework u użyli nazwy Model-Template-View, co w skrócie daje MVT. Podział aplikacji w ten sposób pozwala tworzyć elastyczny kod, która łatwo można wykorzystywać wielokrotnie. Na przykład pewien widok, który wyświetla dane liczbowe w formie wykresu, może znaleźć zastosowanie dla wielu rodzajów przeróżnych danych, pod warunkiem, że zostanie opracowana metoda, która połączy oba te mechanizmy. Typowa aplikacja składa się przeważnie z trzech głównych rodzajów aktywności: struktur danych, algorytmów przetwarzania oraz kanałów komunikacyjnych, które reprezentują określony problem, komponentów do prezentacji danych oraz obsługę danych wejściowych (zachowanie użytkownika). W MVC kluczem do prawidłowego wykorzystania tej architektury jest poprawne wydzielenie wszystkich warstw. W modelu danych można umieszczać informacje dotyczące wyświetlania, jednak pomimo tej wygody, może to spowodować trudności w ewentualnej zmianie widoku. Umieszczanie kodu odpowiedzialnego za łączenie się z bazą danych w warstwie prezentacji będzie z kolei źródłem stałych problemów, w momencie gdy będziemy chcieli zmienić technologię stosowaną w projekcie. 21

Django stosuje się do głównych założeń MVC, jednak zauważalne są niewielkie różnice w stosunku do pierwotnej definicji wzorca. Widoki w Django są funkcjami Pythona, które łączą warstwy danych i prezentacji (składa się z kodu HTML oraz języka szablonów Django). Tak wypowiadają się twórcy Django na temat widoku [9]: W naszej interpretacji MVC widok określa dane, które mają być prezentowane użytkownikowi. Nie jest ważne, jak dane wyglądają, ale które dane są wyświetlane. Widok określa, co wyświetlasz, a nie jak to robisz. Jest to niewielka, ale istotna różnica. Podsumowując powyższą wypowiedź, Django dzieli warstwę prezentacji na metodę widoku, określającą, które dane z modelu mają być wyświetlone oraz szablon, który definiuje wygląd i sposób przedstawienia tych informacji. Django dostarcza mechanizmy, które określają, jaki widok i szablon mają być zastosowane do danego żądania (funkcje kontrolera). Modele w Django służą do definiowania struktury i relacji tabel w bazie danych. Jeżeli potraktujemy naszą aplikację jako zestaw warstw, wówczas model stanie się podstawową, dolną warstwą. W odróżnieniu od widoków i szablonów model danych można określić jako stały, niezmienny element aplikacji. Model opisuje co i w jaki sposób ma być przechowywane w bazie danych. Z punktu widzenia języka Python, jest to po prostu zwykła klasa, dziedzicząca po klasie django.db.models.model Na rysunku 3.1. w graficzny sposób został zaprezentowany przegląd opisanych komponentów architektury Django. 22

Rys. 3.1. Przegląd komponentów architektury Django [9]. 23

Protokół HTTP jest składnikiem architektury znajdującym się najbliżej użytkownika (USER). Użytkownik, korzystając z adresów URL, może wysyłać żądania do aplikacji Django i otrzymywać odpowiedzi przy użyciu przeglądarki internetowej. W celu dodatkowej komunikacji z serwerem może również wykorzystywać JavaScript i Ajax. Źródło danych stanowi baza danych (SZBD), zarządzana za pomocą modeli danych i mapera obiektowo-relacyjnego. Do komunikacji z bazą danych wykorzystywane jest DB- API Pythona (standardowy interfejs dostępu do baz danych). Python obsługuje szeroką gamę serwerów baz danych: GadFly, msql, MySQL, PostgreSQL, Microsoft SQL Server 2000, Informix, Interbase, Oracle, Sybase. Django, na podstawie żądań HTTP pochodzących ze strony Klientów, włącza obsługę żądania w warstwie oprogramowania pośredniczącego, które wcześniej zostaje przekazane do serwera WWW. Żądanie zostaje poddane analizie przy pomocy wzorców zawartych w plikach URLconf oraz przypisane do odpowiedniego widoku, który wykonuje najważniejszą część pracy. W oparciu o to, co jest potrzebne do wygenerowania odpowiedzi, wykorzystuje modele danych lub szablony. Następnie, odpowiedź przechodzi przez kolejną warstwę oprogramowania pośredniczącego, które wykonuje ostateczne przetwarzanie przed zwróceniem odpowiedzi od serwera do użytkownika. Wybór Django do realizacji naszej aplikacji jest prosty, dlatego też w pełni wykorzystaliśmy jego atuty, jakimi nas obdarzył. 24

Wykorzystane narzędzia Do realizacji projektu wykorzystałem oprogramowanie czeskiego producenta JetBrains. Stworzone przez nich oprogramowanie PyCharm zostało zbudowane ze szczególnym wsparciem dla tworzenia aplikacji webowych w Django. Dzięki życzliwości serdecznego kolegi, który jest profesjonalnym programistą Pythona, otrzymałem na czas pisania pracy, licencję na użytkowanie developerskiej wersji programu. Na rysunku 3.2. przedstawiono budowę programu PyCharm. Rys. 3.2. Środowisko programistyczne PyCharm. 25

Hitotsu! Doryoku-no seishin-wo yashinau koto! Po pierwsze! Krzewic ducha wysilku! 26

4. Analiza wymagań Tworzona aplikacja powinna umożliwiać użytkownikowi obsługę następujących przypadków użycia: Logowanie Rejestracja Anulowanie turnieju Stworzenie turnieju o Wybranie typu sztuki walki o Określenie terminu Wybór kategorii walki o Stworzenie kategorii wiekowej o Wybór kategorii wagowej o Dodanie zawodników do kategorii o Wylosowanie walk w pierwszych rundach Stworzenie drużyny o Stworzenie zawodnika Wylosowanie walk w pierwszych rundach Najważniejsze z powyżej przedstawionych przypadków użycia zostały uszczegółowione i przedstawione w kolejnym punkcie. 27

4.1. Funkcjonalność systemu Rys. 4.1. Diagram przypadków użycia. 28

Opis przypadku użycia rejestracja : 1. Uczestniczący aktorzy: DjangoUser 2. Podstawowy ciąg zdarzeń: System wyświetla formularz rejestracji. DjangoUser wpisuje swoje dane: email, hasło, imię, nazwisko. DjangoUser zatwierdza utworzenie nowego konta. System weryfikuje kompletność i poprawność danych, zapisuje dane w bazie danych. Po pomyślnym przetworzeniu operacji, wyświetla się komunikat mówiący o powodzeniu operacji. Jeżeli rejestracja przebiegła pomyślnie, od tej chwili można zalogować się. 3. Alternatywne ciągi zdarzeń: a) System stwierdza niekompletność lub niepoprawność wprowadzonych danych. System ponownie wyświetla formularz wraz z zaznaczonymi polami, w których stwierdzono błędy. b) DjangoUser rezygnuje z tworzenia konta klikając na formularzu Anuluj. Powrót systemu do stanu sprzed wywołania funkcji, bez dokonywania zmian w bazie danych. 4. Zależności czasowe: a) Częstotliwość wykonania: ~ 100 razy w roku b) Przewidywane spiętrzenia: przed zawodami c) Maksymalny czas realizacji: ~ 1 minuta 5. Wartości uzyskiwane przez aktorów po zakończeniu przypadku użycia: Komunikat informujący o powodzeniu lub niepowodzeniu operacji. Wpis w bazie danych związany z nowo utworzonym kontem. 29

Opis przypadku użycia stworzenie turnieju : 1. Uczestniczący aktorzy: DjangoUser 2. Podstawowy ciąg zdarzeń: System wyświetla formularz logowania. DjangoUser wpisuje swoje dane do konta, po czym zostaje przekierowany do panelu użytkownika. Wybiera opcję Utwórz drużynę, wprowadza nazwę nowej drużyny. Następnie wybiera opcję Nowy turniej, wprowadza nazwę tworzonego turnieju, określa termin, w którym planowo miałby się odbyć i zakończyć, wybiera typ sztuki walki (przypadek użycia wybranie typu sztuki walki), może załączyć plik z regulaminem zawodów oraz dodać dodatkowe informacje o turnieju. DjangoUser zatwierdza utworzenie nowego turnieju. System weryfikuje kompletność i poprawność danych, zapisuje dane w bazie danych. Po pomyślnym przetworzeniu operacji, system przekierowuje do panelu użytkownika. 3. Alternatywne ciągi zdarzeń: a) System stwierdza niekompletność lub niepoprawność wprowadzonych danych. System ponownie wyświetla formularz wraz z zaznaczonymi polami, w których stwierdzono błędy. b) DjangoUser rezygnuje z tworzenia turnieju klikając na formularzu Anuluj. Powrót systemu do stanu sprzed wywołania funkcji, bez dokonywania zmian w bazie danych. c) DjangoUser odwołuje turniej klikając w podstronie turnieju Odwołaj. System usuwa wpis w bazie danych, aktualizując stan aktualnie rozgrywanych turnieji. 4. Zależności czasowe: a) Częstotliwość wykonania: ~ 3-4 razy w roku b) Przewidywane spiętrzenia: w czasie okresu zimowego i letniego c) Maksymalny czas realizacji: ~ 2 minut 5. Wartości uzyskiwane przez aktorów po zakończeniu przypadku użycia: Komunikat informujący o powodzeniu lub niepowodzeniu operacji. Wpis w bazie danych związany z aktualnie stworzonym turniejem. 30