Dokumentacja. Realizacja w portalu kalkulatora simple. (dane wprowadzane z klawiatury).



Podobne dokumenty
Dokumentacja. Portal Mathfinance dla rynku FX kalkulatora. Marcin Szumski

Dokumentacja. Portal Mathfinance dla rynku Fixed Income kalkulatora. Magda Hubicz, Patrycja Pol, Rafał Rutkowski

Dokumentacja. Portal Mathfinance dla rynku equity kalkulatora. Dorota Toczydłowska

Przewodnik użytkownika (instrukcja) AutoMagicTest

Laboratorium Kierunki Rozwoju oprogramowania REST, Django

Quiz Aplikacja internetowa

Dokumentacja systemu NTP rekrut. Autor: Sławomir Miller

Przewodnik użytkownika (instrukcja) AutoMagicTest

Zaawansowany kurs języka Python

Jak posługiwać się edytorem treści

Przewodnik użytkownika (instrukcja) AutoMagicTest Spis treści

Pomoc dla systemu WordPress

5. Mechanizm szablonów.

Programowanie w języku Python. Grażyna Koba

Podstawowa instrukcja obsługi STRON stron internetowych serwisu zrealizowanych w systemie zarządzania treścią Wordpress.

Serwis PTF Dodanie informacji bieżącej w podserwisie oddziału

Obszar Logistyka/Zamówienia Publiczne

Aplikacje WWW - laboratorium

Zbieranie kontaktów.

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

REFERAT O PRACY DYPLOMOWEJ

Narzędzia informatyczne w językoznawstwie

Dokumentacja Skryptu Mapy ver.1.1

Modele danych walidacja widoki zorientowane na model

EGZAMIN POTWIERDZAJĄCY KWALIFIKACJE W ZAWODZIE Rok 2016 CZĘŚĆ PRAKTYCZNA

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

Dodawanie operacji dodatkowych w WAPRO Mag.

System egzaminów elektronicznych Instrukcja do Portalu Egzaminacyjnego i modułu task. Spis treści

Powłoka I. Popularne implementacje. W stylu sh (powłoki zdefiniowanej w POSIX) W stylu csh. bash (najpopularniejsza) zsh ksh mksh.

e-wsparcie Barbara Muszko Aktualizacja Twojej witryny internetowej tak prosta, jak obsługa Worda

Instrukcja obsługi Zaplecza epk w zakresie zarządzania tłumaczeniami opisów procedur, publikacji oraz poradników przedsiębiorcy

Kurs rozszerzony języka Python

System operacyjny Linux

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

app/ - folder zawiera pliki konfiguracyjne dla całej aplikacji src/ - folder zawiera cały kod PHP aplikacji

Instrukcja obsługi Zaplecza epk dla Pracowników Instytucji w zakresie zarządzania danymi szczegółowymi dotyczącymi sposobu realizacji procedury

Dokumentacja serwisu internetowego Zespołu Szkół Technicznych w Radomiu.

Ajax. 1. Wprowadzenie. 2. Aplikacja serwerowa

Masz pomysł na lepszy wygląd?

Komputery I (2) Panel sterowania:

Viatoll Calc v1.3. Viatoll Calc. Instrukcja użytkownika. Strona 1

Aplikacje internetowe - laboratorium

Aplikacje WWW - laboratorium

INSTRUKCJE WIKAMP Dotyczy wersji systemu z dnia

Defekty Mr Buggy 4. Znane, nieznane i literówki (wybrane)

Instrukcja obsługi funkcji specjalnych szablonu C01 v.1.0

Zadanie programistyczne nr 3 z Sieci komputerowych

Miejski System Zarządzania - Katowicka Infrastruktura Informacji Przestrzennej

Backend Administratora

Serwis jest dostępny w internecie pod adresem Rysunek 1: Strona startowa solidnego serwisu

Ćwiczenie 22 Dynamiczne wczytywanie tekstu z pliku.txt

Archiwum Prac Dyplomowych

Zakres treści Czas. 2 Określenie charakteru i tematyki strony. Rodzaje witryn. Projekt graficzny witryny. Opracowanie skryptów

Laboratorium 7 Blog: dodawanie i edycja wpisów

Własna strona WWW w oparciu o CMS

Efektywne tworzenie aplikacji webowych z wykorzystaniem AngularJS, HTML5 i JavaScript

Co to jest NODE.JS? Nowoczesne środowisko programistyczne

Spis treści. Warto zapamiętać...2. Podstawy...3

INSTRUKCJA. SIMPLE.HCM Proces obsługi Kartoteki Pracownika, Kartoteki Przełożonego oraz Raportów kadrowo-płacowych

Instrukcja skierowana jest do klientów firmy Chint Poland Sp. Z o. o. którzy uzyskali dostęp do systemu esobi.

5-6. Struktura dokumentu html. 2 Określenie charakteru i tematyki strony. Rodzaje witryn. Projekt graficzny witryny. Opracowanie skryptów

I. Spis treści I. Spis treści... 2 II. Kreator szablonów Tworzenie szablonu Menu... 4 a. Opis ikon Dodanie nowego elementu...

I. Program II. Opis głównych funkcji programu... 19

Sigplus. Galeria w Joomla

miniinstrukcja miniswl

Centrum Sterowania SZARP

CMS - INFORMACJE. *** Mirosław Kuduk E mail: tel. kom DODATKOWE FUNKCJE - PANEL ADMINISTRATORA

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Budowa aplikacji ASP.NET współpracującej z bazą dany do przeprowadzania ankiet internetowych

Laboratorium 4: Routing

Platforma e-learningowa

Inżynieria wymagań. Wykład 2 Proces pisania przypadków użycia. Część 6 Wskazówki i sugestie

Instrukcja obsługi serwisu internetowego Bluewhite e-pacjent

Dokumentacja WebMaster ver 1.0

Kancelaria 2.26 zmiany w programie czerwiec 2014

PODRĘCZNIK UŻYTKOWNIKA PRACOWNIK SPZOZ

Lab2kWeb przeglądanie wyników laboratoryjnych

Edycja strony: W edycję danej strony wchodzimy poprzez naciśnięcie opcji

Nowy szablon stron pracowników ZUT

EGZAMIN POTWIERDZAJĄCY KWALIFIKACJE W ZAWODZIE Rok 2016 CZĘŚĆ PRAKTYCZNA

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

Zdarzenia Zdarzenia onload i onunload

AKTYWNY SAMORZĄD. Instrukcja użytkownika.

Instrukcja korzystania z portletu Seminaria

Instrukcja obsługi uczelnianego systemu zarządzania stronami internetowymi (CMS)

Platformy Programowania

Miejskie Wodociągi i Oczyszczalnia sp. z o.o. w Grudziądzu. ibok. Internetowe Biuro Obsługi Klienta. Instrukcja obsługi

Prowadzenie przewodów w szafie

Rekrutacja do przedszkoli FORMICO

Spis treści REJESTRACJA NOWEGO KONTA UŻYTKOWNIKA PANEL ZMIANY HASŁA PANEL EDYCJI DANYCH UŻYTKOWNIKA EXTRANET.NET...

ADMINISTRATOR SZKOŁY. Instrukcja użytkownika portalu

Skrypt wideo Pierwsze kroki z IBM TRIRIGA - Komponenty

Nr: 15. Tytuł: Kancelaris w systemie Windows 8 i Windows 8.1. Data modyfikacji:

Podstawy technologii WWW

Informatyka II. Laboratorium Aplikacja okienkowa

Wprowadzenie do Internetu Zajęcia 5

Instrukcja redaktora strony

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w

Nowa płatność Dodaj nową płatność. Wybierz: Płatności > Transakcje > Nowa płatność

Transkrypt:

Dokumentacja Realizacja w portalu kalkulatora simple (dane wprowadzane z klawiatury). Krzysztof Opalski

Spis treści I Ogólne informacje o kalkulatorze 2 1 Struktura projektu 2 2 Schemat działania kalkulatora simple 3 II Szczegóły implementacji 4 3 Plik urls.py 4 4 Kontrolery pythona 4 5 Pliki html (template y) 6 1

Część I Ogólne informacje o kalkulatorze napisany jako duży projekt w ramach seminarium Finanse Obliczeniowe opiekun: prof. Andrzej Palczewski dostępny w internecie pod adresem: http://weboctave.mimuw.edu.pl/mathfinance2 cel: obliczanie cen różnych instrumentów finansowych (głównie opcji) kalkulator posiada dwie części: obliczenia dla prawdziwych danych (z plików csv, wymagane logowanie) oraz dla danych z klawiatury (bez logowania, uproszczone) wykorzystywane technologie: python, django, octave, hg, javascript 1 Struktura projektu Objaśnienie: Pogrubioną czcionką zaznaczyłem części obsługujące kalkulator simple (wyłącznie) Kursywą - części wspólne, które ten kalkulator istotnie wykorzystuje (w związku z tym były modyfikowane).hg/ - katalog tworzony przez system kontroli wersji mf/ - pliki pythona... octave.py - funkcje pomocnicze, komunikacja octave z pythonem forms_simple.py - formularze, dane, teksty pomocy do kalkulatora simple views_simple.py - główny plik obsługujący kalkulator simple octavecodes/ - pliki octave fixed/ - rynek fixed income fx/ - rynek fx simple/ - funkcje octave kalkulatora simple (rynki fx, equity, fixed income) static/ - pliki statyczne admin/ - pliki dla panelu administratora css/ - arkusze stylow 2

js/ - skrypty javascript models/ - pliki statyczne dla danego modelu (np. domyslne csv) /views - pliki html (w podziale na części kalkulatora) fixed/ fx/ registration/ simple/ /userdata - plik z danymi użytkowników manage.py - skrypt wykonywalny służący do uruchomienia portalu i zarządzania nim settings.py - plik z ogólnymi ustawieniami django urls.py - plik tłumaczący adresy URL na funkcje pythona 2 Schemat działania kalkulatora simple użytkownik: wybiera na głównej stronie simple calculator (nie musi być zalogowany) python: wyświetla główną stronę /simple z wyborem rynku użytkownik: wybiera rynek (fx, equity, fixed income) python: wyświetla stronę /simple/[rynek] z listą instrumentów w podziale na kategorie użytkownik: wybiera konkretny instrument do wyceny python: uruchamia główną funkcję - calculate (jest w pliku mf/views_simple.py), która wyświetla stronę /simple/[rynek]/[instrument] wybierany jest odpowiedni formularz do wprowadzania danych i pokazywany użytkownikowi - po lewej stronie po prawej jest puste miejsce w którym pojawią się wyniki. użytkownik: wprowadza dane do formularza, klika przycisk javascript: skrypt static/js/reload.js wczytuje obrazek ładowania ( kręcące się słoneczko ), zmienia kursor (na kursor oczekiwania) oraz przeładowuje stronę python: dane wracają do funkcji calculate 3

jeśli formularz jest wypełniony prawidłowo wczytujemy te dane do pythona następnie wywołujemy obliczenia - służy do tego funkcja mf_exec_anonymous_code z pliku mf/octave.py. Tworzony jest nowy proces octave i w nim wywoływana odpowiednia funkcja (działa to tak samo jakbyśmy ten tekst wpisali w konsoli octave) z właściwymi parametrami octave: w każdym przypadku ywoływany skrypt jest nakładką na właściwą funkcję obliczeniową. najpierw wczytuje wymagane funkcje, wywołuje właściwe obliczenia a następnie prezentuje wyniki (wypisuje na stdout w formacie tabelki html). Ewentualne błędy są wypisywane na stderr. python: wynik z octave a jest tekstem (złożonym ze strumieni stderr i stdout). Formatujemy go trochę żeby ładniej wyglądał i wypisujemy na stronę (po prawej stronie) Część II Szczegóły implementacji 3 Plik urls.py Odpowiedzialny za wywołanie kontrolera odpowiadającemu adresowi URL. W tym przypadku istotne są wpisy: url(r ^simple/$, mf.views.index_simple ), url(r ^simple/(?p<market>\w+)/$, mf.views_simple.index ), url(r ^simple/(?p<market>\w+)/(?p<function>\w+)/$, mf.views_simple.calculate ), 4 Kontrolery pythona Kontroler jest funkcją pythona wywoływaną przez dany adres url. Powinien zwrócić stronę html, do jej wygenerowania można użyć następujących funkcji: HttpResponse( czysty tekst ), render_to_response( nazwapliku.html, slownik), HttpResponseRedirect przekierowanie, Http404 zwrocenie bledu 404. Funkcja render_to_response została opakowana w funkcję mf_render(request, view, dictionary), która znajduje się w pliku /mf/views.py. Zasadnicza część kodu kalkulatora simple jest w pliku mf/views_simple.py, oprócz tego niektóre elementy (formularze, lista funkcji itp.) są przechowywane w pliku mf/forms_simple.py oraz funkcja mf_exec_anonymous_code w pliku mf/octave.py. Prosty skrypt javascript odpowiedzialny za bajery graficzne (obrazek symbolizujący obliczanie i zmianę kursora) jest w pliku /static/js/reload.js 4

Opis poszczególnych funkcji mf/views_simple.py, funkcja calculate_strikes: funkcja pomocnicza, dla danej opcji zwraca ilość strike ów mf/views_simple.py, funkcja is_barrier: funkcja pomocnicza, dla danej opcji zwraca czy jest barierowa czy nie mf/views_simple.py, funkcja choose_form: funkcja pomocnicza, dla danego rynku i instrumentu zwraca odpowiedni formularz mf/views_simple.py, funkcja index: wyświetla główną stronę danego rynku, ładuje odpowiednie helpy, generuje z nich obiekty html (przy pomocy funkcji help_javascript z pliku mf/forms.py) i przekazuje do pliku html mf/views_simple.py, funkcja calculate: najważniejsza część modułu simple. Na początku wczytywane są odpowiednie helpy (analogicznie jak powyżej, z tym że generujemy zarówno help do rynku jak i do konretnej funkcji). Potem wybieramy odpowiedni formularz (funkcja choose_form) i wyświetlamy użytkownikowi. Dalsza część jest uruchamiana jeśli użytkownik wprowadzi dane i naciśnie przycisk: kontroluje to linia if request.method == POST. if load_forms.is_valid() sprawdza czy formularz jest wypełniony (sprawdza też czy w polach liczbowych są liczby, ale nie sprawdza czy są dodatnie, ujemne itp.). Dalsza rozbudowana instrukcja warunkowa tworzy komendę octave (skleja ją z odpowiednich kawałków tekstu i danych) i przekazuje ją do wykonania mf/octave.py, funkcja mf_exec_anonymous_code: dostaje jako argument tekst komendy do wykonania w octave. Dokleja do niej początek (octave --no-history (...)) i całość wywołuje w bashu, przechwytując strumienie wyjściowe. W odróżnieniu od funkcji wykorzystywanej w kalkulatorze real funkcja nie używa plików. Dalszy ciąg funkcji to kosmetyka, formatowanie strumień błędów wyświetlamy klasą notify_no_background, strumień stdout tabelą klasy output_table. Dodatkowo zakomentowujemy początek outputu ("GNU Octave, version...") zostawiając same wyniki. static/js/reload.js bardzo prosty skrypt, pełni funkcje jedynie kosmetyczne. Jako argument dostaje nazwę diva oraz stronę. Skrypt zmienia kursor na kursor oczekiwania, wstawia na obecnej stronie do diva podanego jako argument obrazek ładowania a następnie ładuje stronę wskazaną jako argument funkcji. Ładowanie następuje z opóźnieniem, bez tego w niektórych przeglądarkach nie wczytywał się obrazek. 5

5 Pliki html (template y) Charakterystyczna dla django jest hierarchiczna struktura templatów, wykorzystuję ją także tutaj. Dzięki temu powtarzające elementy kodu piszemy tylko raz, potem odwołując się do wspólnego pliku. Ponadto, możemy sterować tym co jest wyświetlane w htmlu na podstawie słownika przekazanego przez kontroler przy wywołaniu wyświetlenia. {% extends "xxx.html" %} - renderuje plik xxx.html, podmieniając w nim zawartości bloków zadeklarowanych w xxx.html tymi zadeklarowanymi w danym pliku w następujący sposób {% block nazwa_bloku %} zawartosc bloku {% endblock %} {{ zmienna_ze_slownika_do_wyswietlenia }} wstawiamy do htmla zmienną ponadto dostępne są instrukcje sterujące - m.in. {% if warunek %} {% else %} {% endif %}. przy czym warunkiem można zastąpić identyfikatorem obiektu przekazywanym przez słownik (wtedy nie podanie obiektu będzie wyewaluowane do fałszu) {% for element in lista %} powtorz dla kazdego element z lista {% endfor %} jeśli przekazaliśmy do strony listę, możemy ją obsłużyć w pętli. W ten sposób są obsługiwane zakładki pomocy. Poszczególne pliki views/index_simple: strona główna kalkulatora simple, zawiera jedynie linki do poszczególnych linków. Wykorzystuje plik views/layout.html, w którym zapisane są ogólne informacje o wyglądzie strony (ten plik jest bezpośrednio lub pośrednio wykorzystywany przez wszystkie widoki html, jest wspólny dla całego kalkulatora, nie tylko części simple) views/simple/header.html: plik z częścią wspólną wszystkich podstron w kalkulatorze simple: górny pasek z linkami do pomocy i do zmiany rynku. Również odwołuje się bezpośrednio do layout.html views/simple/[rynek].html: strona danego rynku, zawiara tylko spis dostępnych instrumentów z linkami. Wykorzystuje plik header.html views/simple/[rynek]_calculate.html: strona konkretnej funkcji. Składa się z dwóch części, lewa (<div class=leftdiv>) wyświetla formularz wprowadzania danych (przekazany jako zmienna load_forms) oraz zawiera przycisk, który powoduje wysłanie formularza i uruchomienie javascriptu, odpowiednia instrukcja jest w nagłówku formularza: onsubmit="wait_load( outputdiv_calculate, 6

input ); return(false). Po prawej stronie wyświetlają się wyniki (jeśli zmienna is_ready.result ma wartość) lub napis No calculations have been made yet 7