changeset 28:d017e2ab3027

Poprawki z rana 23 maja, prezentacja django-flask
author Michał Rudowicz <michal.rudowicz@fl9.eu>
date Mon, 23 May 2011 12:49:48 +0200
parents 6a9e2b3b4398
children 28eb82047167
files frontend/doc/api.rst frontend/doc/conf.py frontend/doc/config.rst frontend/doc/database.rst frontend/doc/index.rst frontend/doc/koncepcja.rst frontend/doc/quickstart.rst prezentacja-django-flask/Makefile prezentacja-django-flask/prezentacja.tex
diffstat 9 files changed, 206 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/frontend/doc/api.rst	Sat May 21 10:01:30 2011 +0200
+++ b/frontend/doc/api.rst	Mon May 23 12:49:48 2011 +0200
@@ -12,7 +12,7 @@
 ``/api/getjob/<ID>/``, gdzie ID jest identyfikatorem zadania
 
 Serwer aplikacji powinien zwrócić dokument w formacie JSON zawierający
-wszystkie dane znajdujące się w bazie, dotyczące tego zadania.
+wszystkie dane znajdujące się w bazie dotyczące tego zadania.
 
 Pobieranie informacji o wszystkich zadaniach
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
--- a/frontend/doc/conf.py	Sat May 21 10:01:30 2011 +0200
+++ b/frontend/doc/conf.py	Mon May 23 12:49:48 2011 +0200
@@ -40,8 +40,8 @@
 master_doc = 'index'
 
 # General information about the project.
-project = u'Aplikacja rozproszona do łamania hashy (LEPSZY TYTUŁ?)'
-copyright = u'2011, TU WPISAĆ NAZWĘ GRUPY'
+project = u'Krakersik'
+copyright = u'2011'
 
 # The version info for the project you're documenting, acts as replacement for
 # |version| and |release|, also used in various other places throughout the
@@ -173,6 +173,11 @@
 # The paper size ('letter' or 'a4').
 latex_paper_size = 'a4'
 
+latex_elements = {
+    'classoptions': ',openany,oneside',
+    'babel' : '\\usepackage[polish]{babel}'
+}
+
 # The font size ('10pt', '11pt' or '12pt').
 latex_font_size = '10pt'
 
--- a/frontend/doc/config.rst	Sat May 21 10:01:30 2011 +0200
+++ b/frontend/doc/config.rst	Mon May 23 12:49:48 2011 +0200
@@ -11,7 +11,7 @@
     # W przypadku sqlite, ścieżka do pliku bazy
     Database = baza.sqlite
     # Wygenerować losowy dla każdej instalacji bazy
-    Secret_Key = TakBardzoTajne
+    Secret_Key = TajnyKlucz
     # Dla poważnej instalacji ustawić na 0
     Debug = 1
     # Algorytm wyliczający hashe dla haseł
@@ -25,7 +25,7 @@
 Database
     Nazwa pliku zawierającego bazę danych.
 Secret_Key
-    Tajny plucz. Podczas automatycznego tworzenia pliku konfiguracyjnego
+    Tajny klucz. Podczas automatycznego tworzenia pliku konfiguracyjnego
     generowany jest losowy 10-znakowy klucz.
 Debug
     Powoduje wyświetlanie informacji o debugowaniu w przypadku błędu
--- a/frontend/doc/database.rst	Sat May 21 10:01:30 2011 +0200
+++ b/frontend/doc/database.rst	Mon May 23 12:49:48 2011 +0200
@@ -20,7 +20,7 @@
         "state" INTEGER NOT NULL DEFAULT (0),               -- Obecny stan operacji
         "result" TEXT,                                      -- Wynik operacji
         "percent" INTEGER,                                  -- Procent ukończenia operacji
-        "last_checked" TEXT,                                -- Ostatnio sprawdzany hash
+        "last_checked" TEXT,                                -- Ostatnio sprawdzana wartość
         "min_pass_len" INTEGER NOT NULL DEFAULT (1),        -- Minimalna długość hasła
         "max_pass_len" INTEGER NOT NULL DEFAULT (5),        -- Maksymalna długość hasła
         "method" INTEGER NOT NULL DEFAULT (0),              -- Metoda sprawdzania hashy
@@ -30,6 +30,28 @@
 Opisy pól w bazie danych
 ------------------------
 
+jobs.id
+^^^^^^^
+
+Pole zawierające generowany automatycznie numer jednoznacznie
+identyfikujący zadanie w bazie danych.
+
+jobs.label
+^^^^^^^^^^
+
+Opis zadania, ułatwiający jego identyfikację przez użytkownika.
+
+jobs.owner_id
+^^^^^^^^^^^^^
+
+Identyfikator użytkownika z tabeli `users`, określający właściciela
+zadania.
+
+jobs.hash
+^^^^^^^^^
+
+Hash do zdekodowania.
+
 jobs.state
 ^^^^^^^^^^
 
@@ -39,6 +61,40 @@
 1. Zadanie w trakcie wykonywania
 2. Zadanie zakończone
 
+jobs.result
+^^^^^^^^^^^
+
+Jeśli operacja ukończyła się sukcesem, to w tym polu znajdzie się
+wartość wynikowa.
+
+jobs.percent
+^^^^^^^^^^^^
+
+Wartość procentowa postępu operacji.
+
+jobs.last_checked
+^^^^^^^^^^^^^^^^^
+
+Wartość, która była ostatnio sprawdzana przez aplikację rozproszoną.
+Może być to wartość przybliżona ze względu na szybkość operacji.
+
+jobs.min_pass_len
+^^^^^^^^^^^^^^^^^
+
+Minimalna długość sprawdzanego hasła. Pozwala na zawężenie obszaru
+poszukiwań i przyspieszenie procesu.
+
+jobs.max_pass_len
+^^^^^^^^^^^^^^^^^
+
+Maksymalna długość sprawdzanego hasła.
+
+jobs.method
+^^^^^^^^^^^
+
+Medota używana podczas łamania hasha. Możliwe wartości są ustalane
+przez aplikację rozproszoną.
+
 Funkcje wspomagające operacje na bazie danych
 ---------------------------------------------
 
--- a/frontend/doc/index.rst	Sat May 21 10:01:30 2011 +0200
+++ b/frontend/doc/index.rst	Mon May 23 12:49:48 2011 +0200
@@ -9,6 +9,7 @@
    :maxdepth: 2
 
    wymagania
+   koncepcja
    quickstart
    config
    api
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/frontend/doc/koncepcja.rst	Mon May 23 12:49:48 2011 +0200
@@ -0,0 +1,58 @@
+Koncepcja
+=========
+
+Projekt koncepcyjny
+-------------------
+
+Aplikacja składa się z trzech modułów:
+
+* Strony klienta
+* Serwera aplikacji
+* Aplikacji rozproszonej
+
+Moduły aplikacji
+----------------
+
+Aplikacja rozproszona
+^^^^^^^^^^^^^^^^^^^^^
+
+Aplikacja rozproszona składa się z komputera pełniącego rolę
+mastera oraz przynajmniej dwóch komputerów pełniących rolę
+slave.
+
+Po pobraniu zadania w formacie CSV master przesyła komputerom pełniącym rolę
+slave za pomocą metody broadcast fragmenty zadania. Po przetworzeniu
+swojego fragmentu slave wysyła wynik do komputera pełniącego rolę
+mastera, który w przypadku istnienia dalszych nieprzetworzonych
+fragmentów zadania przesyła je do komputera slave. Jednocześnie
+uaktualnia informacje o zadaniu na serwerze aplikacji.
+
+W przypadku zakończenia zadania master przesyła całościowy wynik
+do serwera aplikacji i informuje komputery pełniące rolę slave o
+zakończeniu operacji.
+
+Do komunikacji master-slave wykorzystywana jest technologia
+MPICH.
+
+Serwer aplikacji
+^^^^^^^^^^^^^^^^
+
+Serwer aplikacji udostępnia łatwy w użyciu interfejs dla
+aplikacji rozproszonej umożliwiający pobieranie i aktualizowanie
+informacji w bazie danych przy pomocy zapytań typu GET i POST
+w protokole HTTP.
+
+Serwer aplikacji wykorzystuje język Python wraz z frameworkiem
+Flask, natomiast do obsługi bazy danych wykorzystywany jest
+Sqlite.
+
+Z bazą danych komunikuje się tylko i wyłącznie serwer aplikacji.
+
+Strona klienta
+^^^^^^^^^^^^^^
+
+Strona klienta została napisana w języku HTML z użyciem CSS i
+JavaScript. Jest ona udostepniana przez serwer aplikacji przy
+użyciu protokołu HTTP. Strona klienta umożliwia dodawanie nowych
+zadań oraz przeglądanie zadań w systemie, pokazując ich stan,
+procent ukończenia i informację o wyniku.
--- a/frontend/doc/quickstart.rst	Sat May 21 10:01:30 2011 +0200
+++ b/frontend/doc/quickstart.rst	Mon May 23 12:49:48 2011 +0200
@@ -10,6 +10,7 @@
 Instalacja Pythona (jeśli jeszcze nie został zainstalowany):
 
 .. code-block:: bash
+
     $ su -c "yum install python"
 
 Instalacja Flaska sprowadza się do wydania polecenia
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/prezentacja-django-flask/Makefile	Mon May 23 12:49:48 2011 +0200
@@ -0,0 +1,6 @@
+prezentacja.pdf: prezentacja.tex
+	rubber -d prezentacja.tex
+	rubber --clean prezentacja.tex
+
+clean:
+	rm *.pdf
--- a/prezentacja-django-flask/prezentacja.tex	Sat May 21 10:01:30 2011 +0200
+++ b/prezentacja-django-flask/prezentacja.tex	Mon May 23 12:49:48 2011 +0200
@@ -17,7 +17,7 @@
 \usepackage[OT4]{fontenc}
 
 \lstset{ %
-language=Octave,                % the language of the code
+language=Python,                % the language of the code
 basicstyle=\small,       % the size of the fonts that are used for the code
 tabsize=4,                      % sets default tabsize to 2 spaces
 captionpos=b,                   % sets the caption-position to bottom
@@ -107,7 +107,7 @@
 \end{frame}
 
 \begin{frame}{Przykładowa aplikacja}
-\lstinputlisting[language=Python, basicstyle=\tiny]{hello_basehttp.py}
+\lstinputlisting[basicstyle=\tiny]{hello_basehttp.py}
 \end{frame}
 
 \subsection{Werkzeug}
@@ -124,7 +124,7 @@
 \end{frame}
 
 \begin{frame}{Przykładowa aplikacja}
-\lstinputlisting[language=Python]{hello_werkzeug.py}
+\lstinputlisting{hello_werkzeug.py}
 \end{frame}
 
 \subsection{Flask}
@@ -141,7 +141,75 @@
 \end{frame}
 
 \begin{frame}{Przykładowa aplikacja}
-\lstinputlisting[language=Python]{hello_flask.py}
+\lstinputlisting{hello_flask.py}
 \end{frame}
 
-\end{document}
\ No newline at end of file
+\section{Wdrożenie} % (fold)
+\label{sec:Wdrożenie}
+
+\subsection{Django} % (fold)
+\label{sub:WdrozenieDjango}
+\begin{frame}{Django}
+\begin{itemize}
+    \item<2-> Potrzebujemy Apache i mod\_python
+    \item<2-> Włączamy mod\_python w Apache
+    \item<3-> Konfigurujemy Apache tak, aby korzystał
+    z mod\_python
+    \item<3-> Konfigurujemy mod\_python tak, aby korzystał
+    z naszej aplikacji
+    \item<4-> Konfigurujemy Apache tak, aby serwował pliki
+    statyczne (opcjonalnie)
+    \item<5-> Albo korzystamy z graficznego kreatora w Cherokee
+    \item<6-> Oczywiście, istnieją też inne sposoby wdrażania aplikacji
+    napisanej w Django
+\end{itemize}
+\end{frame}        % Django
+% subsection WdrozenieDjango (end)
+
+\subsection{SimpleHTTPServer} % (fold)
+\label{sub:WdrozenieSimpleHTTPServer}
+\begin{frame}{SimpleHTTPServer}
+\begin{itemize}
+    \item<2-> Uruchamiamy skrypt Pythona, który serwuje strony na wybranym porcie
+    \item<3-> Opcjonalnie konfigurujemy serwer tak, aby działał jako reverse
+    proxy i serwował pliki statyczne
+\end{itemize}
+\end{frame}        % SimpleHTTPServer
+% subsection WdrozenieSimpleHTTPServer (end)
+
+\subsection{Werkzeug} % (fold)
+\label{sub:Werkzeug}
+\begin{frame}{Werkzeug}
+\begin{itemize}
+    \item<1->Możliwość integracji serwera w pythonie, dzięki czemu wdrożenie przebiega tak, jak w przypadku SimpleHTTPServer
+    \item<2->Możliwość uruchomienia aplikacji jako pliku CGI
+    \item<3->Możliwość uruchomienia poprzez wsgi lub FastCGI
+\end{itemize}
+\end{frame}        % Werkzeug
+
+% subsection Werkzeug (end)
+
+\subsection{Flask} % (fold)
+\label{sub:Flask}
+\begin{frame}{Flask}
+\begin{itemize}
+    \item<1-> Jako, że framework jest oparty na Werkzeug, mamy takie same możliwości wdrażania jak tam
+    \item<2-> Wbudowany serwer HTTP sprawia, że uruchomienie aplikacji
+    tak, jak w przypadku SimpleHTTPServer jest jeszcze łatwiejsze
+\end{itemize}
+
+\end{frame}        % Flask
+% subsection Flask (end)
+% section Wdrożenie (end)
+\section{Podsumowanie} % (fold)
+\label{sec:Podsumowanie}
+\begin{frame}{Podsumowanie}
+\begin{itemize}
+    \item<2-> Django jest doskonałym frameworkiem do dużych projektów, ponieważ zawiera wszystko wbudowane
+    \item<3-> SimpleHTTPServer jest przeznaczone raczej jako dodatek do innych aplikacji, niż jako baza dla aplikacji internetowych
+    \item<4-> Werkzeug jest dobrym frameworkiem dla projektów mniejszych lub dla osób potrzebujących dużej kontroli nad aplikacją
+    \item<5-> Flask dobrze nadaje się dla aplikacji niewielkich, gdyż łączy prostotę budowy Werkzeuga z łatwością obsługi Django oraz swoimi ułatwieniami
+\end{itemize}
+\end{frame}        % Podsumowanie
+% section Podsumowanie (end)
+\end{document}