Mercurial > kraina_muminkow
view prezentacja-django-flask/prezentacja.tex @ 33:028cb06a24c9 tip
usunąłem thumbs.db
author | Michał Rudowicz <michal.rudowicz@fl9.eu> |
---|---|
date | Mon, 13 Jun 2011 09:55:17 +0200 |
parents | d017e2ab3027 |
children |
line wrap: on
line source
\documentclass{beamer} \mode<presentation> { \usetheme{Darmstadt} \setbeamercovered{transparent} } \usepackage{listings} %\usepackage[english]{babel} \usepackage[polish]{babel} \usepackage[MeX]{polski} \usepackage[utf8]{inputenc} \usepackage[OT4]{fontenc} \lstset{ % 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 breaklines=true, % sets automatic line breaking breakatwhitespace=true, % sets if automatic breaks should only happen at whitespace } \title[Short Paper Title] % (optional, use only with long paper titles) {Django i Flask} \subtitle {Porównanie frameworków webowych w języku Python} % (optional) \author[Michał Rudowicz] % (optional, use only with lots of authors) {Michał Rudowicz\\171047} % - Use the \inst{?} command only if the authors have different % affiliation. \institute[PWr] % (optional, but mostly needed) { Wydział Elektroniki\\ Politechnika Wrocławska } % - Use the \inst command only if there are several affiliations. % - Keep it simple, no one is interested in your street address. \date[Short Occasion] % (optional) {13 maja 2011} \subject{Talks} \begin{document} \begin{frame} \titlepage \end{frame} \begin{frame}{Spis Treści} \tableofcontents % You might wish to add the option [pausesections] \end{frame} % Since this a solution template for a generic talk, very little can % be said about how it should be structured. However, the talk length % of between 15min and 45min and the theme suggest that you stick to % the following rules: % - Exactly two or three sections (other than the summary). % - At *most* three subsections per section. % - Talk about 30s to 2min per frame. So there should be between about % 15 and 30 frames, all told. \section{Ogólne informacje o frameworkach} \subsection{Django} \begin{frame}{Cechy Django} \begin{itemize} \item<1-> Doskonale nadaje się do tworzenia dużych, skomplikowanych serwisów \item<2-> Duża ilość wbudowanych funkcjonalności \begin{itemize} \item ORM \item System szablonów \item Automatycznie generowany panel administracyjny \item Zarządzanie użytkownikami \item Wiele innych \end{itemize} \item<3-> Stosunkowo dużo kodu koniecznego do napisania prostej aplikacji \end{itemize} \end{frame} \subsection{Python + BaseHTTPServer} \begin{frame}{Cechy programów napisanych z użyciem BaseHTTPServer} \begin{itemize} \item<1-> Całkowita kontrola nad działaniem aplikacji \item<2-> Konieczność pisania dużej ilości kodu \item<3-> Korzysta tylko z bibliotek dodawanych do standardowej instalacji Pythona \end{itemize} \end{frame} \begin{frame}{Przykładowa aplikacja} \lstinputlisting[basicstyle=\tiny]{hello_basehttp.py} \end{frame} \subsection{Werkzeug} \begin{frame}{Cechy Werkzeug} \begin{itemize} \item<1-> Wbudowany debugger wykorzystujący JavaScript \item<2-> Obsługa sesji i podpisanych ciasteczek \item<3-> Nadal dość skomplikowana obsługa \end{itemize} \end{frame} \begin{frame}{Przykładowa aplikacja} \lstinputlisting{hello_werkzeug.py} \end{frame} \subsection{Flask} \begin{frame}{Cechy Flaska} \begin{itemize} \item<1-> Oparty na Werkzeug, więc posiada wszystkie jego zalety \item<2-> Zintegrowany z systemem szablonów Jinja2 \item<3-> Uproszczona obsługa \end{itemize} \end{frame} \begin{frame}{Przykładowa aplikacja} \lstinputlisting{hello_flask.py} \end{frame} \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}