Skip to content

Commit

Permalink
ss - 13 WA1
Browse files Browse the repository at this point in the history
FROM: Ales Fiser
  • Loading branch information
mudrutom committed Jun 15, 2012
1 parent 0f7a752 commit 808397d
Show file tree
Hide file tree
Showing 4 changed files with 366 additions and 1 deletion.
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -109,4 +109,6 @@ Hotové otázky

11\. Psychologické a ergonomické aspekty používání uživatelských rozhraní. Speciální uživatelská rozhraní a jejich testování. (A4B39TUR)

12\. Tvorba webových aplikací: Architektura webové aplikace, klientská část webové aplikace, W3C doporučení, webové skriptovací jazyky. Grafická a strukturální stránka prezentace. (A4B39WA1)
12\. Tvorba webových aplikací: Architektura webové aplikace, klientská část webové aplikace, W3C doporučení, webové skriptovací jazyky. Grafická a strukturální stránka prezentace. (A4B39WA1)

13\. Jazyk PHP, server-klient interakce. Šablony, MVC, frameworky, oddělení prezentační a aplikační logiky. Webové služby, AJAX. (A4B39WA1)
294 changes: 294 additions & 0 deletions Softwarove systemy/13/13.lyx
Original file line number Diff line number Diff line change
@@ -0,0 +1,294 @@
#LyX file created by tex2lyx 2.0.3
\lyxformat 413
\begin_document
\begin_header
\textclass scrreprt
\begin_preamble


\usepackage[english,czech]{babel}



\end_preamble
\use_default_options false
\language czech
\language_package default
\inputencoding auto
\fontencoding default
\font_roman default
\font_sans default
\font_typewriter default
\font_default_family default
\font_sc false
\font_osf false
\font_sf_scale 100
\font_tt_scale 100
\graphics default
\paperfontsize default
\spacing single
\use_hyperref 0
\papersize default
\use_geometry false
\use_amsmath 1
\use_esint 1
\use_mhchem 0
\use_mathdots 0
\cite_engine basic
\use_bibtopic false
\use_indices false
\paperorientation portrait
\suppress_date false
\use_refstyle 0
\secnumdepth 3
\tocdepth 3
\paragraph_separation indent
\paragraph_indentation default
\quotes_language german
\papercolumns 1
\papersides 1
\paperpagestyle default
\tracking_changes false
\output_changes false
\html_math_output 0
\html_css_as_file 0
\html_be_strict false
\end_header

\begin_body

\begin_layout Standard


\begin_inset ERT
status collapsed

\begin_layout Standard


\backslash
setcounter{chapter}{12}
\end_layout

\end_inset


\end_layout

\begin_layout Chapter

Jazyk PHP, server-klient interakce. Šablony, MVC, frameworky, oddělení prezentační a aplikační logiky. Webové služby, AJAX.
\end_layout

\begin_layout Section

Úvod
\end_layout

\begin_layout Standard

Současná architektura webu je založena na vztahu
\series bold
klient - server
\series default
. Jediný způsob komunikace - tenký klient vysílá požadavky a server odpovídá (změna od HTML5).
\end_layout

\begin_layout Standard

Je možné dělit web na
\series bold
statický
\series default
,
\series bold
dynaický
\series default
a
\series bold
webové aplikace
\series default
(s ajaxem).
\end_layout

\begin_layout Standard

Mnoho standardů je specifikováno v RFC (Request for Comments); např HTTP, HTML, SMTP.
\end_layout

\begin_layout Section

Obsah
\end_layout

\begin_layout Subsection

PHP (Personal Home Page)
\end_layout

\begin_layout Itemize

pole jsou asociativní, tedy ve skutečnosti se jedná o (hašovací) tabulky, které ukládají páry klíč -> hodnota.
\end_layout

\begin_layout Itemize

slabě dynamicky typovaný
\end_layout

\begin_layout Itemize

Imperativní (procedurální) a skriptovací jazyk, od PHP 5.0 podpora objektů
\end_layout

\begin_layout Itemize

C-like syntax
\end_layout

\begin_layout Itemize

Od PHP 5.3.0 - namespaces
\end_layout

\begin_layout Itemize

magické metody - __ , __get __set __isset __unset __clone (shallow copy)
\end_layout

\begin_layout Itemize

má modifikátory viditelnosti, final
\end_layout

\begin_layout Itemize

typi hinting u parametrů funkcí (kontrola typů), neuspokojení může způsobit fatal error
\end_layout

\begin_layout Itemize

Magické konstanty - __LINE__, __FILE__, __DIR__, __FUNCTION__, __CLASS__, __METHOD__, __NAMESPACE__
\end_layout

\begin_layout Itemize

velikou výhodou ve široká podpora a komunita
\end_layout

\begin_layout Subsection

bezpečnost s PHP
\end_layout

\begin_layout Description


\begin_inset ERT
status collapsed

\begin_layout Standard

Cross-side scripting
\end_layout

\end_inset

narušení html stránky pomocí uživatelského vstupu (html tagy,JS). Dá se bojovat funkcí
\emph on
htmlspecialchars
\emph default
.
\end_layout

\begin_layout Description


\begin_inset ERT
status collapsed

\begin_layout Standard

SQL injection
\end_layout

\end_inset

ovlivňování SQL databáze nezamýšlený způsobem pomocí uživatelského vstupu. Dá se bojovat pomocí
\emph on
prepareStatement
\emph default
nebo
\emph on
escapestring
\emph default
. Někdo využívá na funkci
\emph on
magicquotes
\emph default
, která automaticky escapuje veškeré parametry GET a POST požadavků.
\end_layout

\begin_layout Subsection

MVC
\end_layout

\begin_layout Itemize

výhody - dobrá dělba práce + v aplikaci se častěji mění view + lehce umožňuje předkompilovat části kódu, takže zrychlení (a odstranění komentářů)
\end_layout

\begin_layout Itemize

Page Controller(URL má vlastní controller) X Front Controller(jeden hlavní controller) X Composite View(stránka je složená z více view)
\end_layout

\begin_layout Itemize

super šablony Smarty
\end_layout

\begin_layout Itemize

celé MVC - Zend, Nette
\end_layout

\begin_layout Subsection

frameworks
\end_layout

\begin_layout Itemize

Doctrine - ORM
\end_layout

\begin_layout Itemize

ZEND, NETTE - řeší lokalizaci, MVC, strukturu projektu, formuláře, ajax, \SpecialChar \ldots{}

\end_layout

\begin_layout Subsection

Webové služby
\end_layout

\begin_layout Standard

Toto téma je již zpracováno.
\end_layout

\begin_layout Subsection

Ajax
\end_layout

\begin_layout Standard

Asynchronous JavaScript and XML - provádění requestů za účelem jiným než je načítání celé stránky (úprava DOMu na základě nových dat ze serveru, asynchroní odesílání dat).
\end_layout

\end_body
\end_document
Binary file added Softwarove systemy/13/13.pdf
Binary file not shown.
69 changes: 69 additions & 0 deletions Softwarove systemy/13/13.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
\documentclass{scrreprt}

\usepackage[english,czech]{babel}
\usepackage[utf8]{inputenc}
\usepackage{graphicx}

\begin{document}

\setcounter{chapter}{12}
\chapter{Jazyk PHP, server-klient interakce. Šablony, MVC, frameworky, oddělení prezentační a aplikační logiky. Webové služby, AJAX.}

\section{Úvod}
Současná architektura webu je založena na vztahu \textbf{klient - server}. Jediný způsob komunikace - tenký klient vysílá požadavky a server odpovídá
(změna od HTML5).

Je možné dělit web na \textbf{statický}, \textbf{dynaický} a \textbf{webové aplikace} (s ajaxem).

Mnoho standardů je specifikováno v RFC (Request for Comments); např HTTP, HTML, SMTP.

\section{Obsah}

\subsection{PHP (Personal Home Page)}
\begin{itemize}
\item pole jsou asociativní, tedy ve skutečnosti se jedná o (hašovací) tabulky, které ukládají páry klíč -> hodnota.
\item slabě dynamicky typovaný
\item Imperativní (procedurální) a skriptovací jazyk, od PHP 5.0 podpora objektů
\item C-like syntax
\item Od PHP 5.3.0 - namespaces
\item magické metody - \_\_ , \_\_get \_\_set \_\_isset \_\_unset \_\_clone (shallow copy)
\item má modifikátory viditelnosti, final
\item typi hinting u parametrů funkcí (kontrola typů), neuspokojení může způsobit fatal error
\item Magické konstanty - \_\_LINE\_\_, \_\_FILE\_\_, \_\_DIR\_\_, \_\_FUNCTION\_\_, \_\_CLASS\_\_, \_\_METHOD\_\_, \_\_NAMESPACE\_\_
\item velikou výhodou ve široká podpora a komunita
\end{itemize}


\subsection{bezpečnost s PHP}
\begin{description}
\item[Cross-side scripting] narušení html stránky pomocí uživatelského vstupu (html tagy,JS). Dá se bojovat funkcí \emph{htmlspecialchars}.
\item[SQL injection] ovlivňování SQL databáze nezamýšlený způsobem pomocí uživatelského vstupu. Dá se bojovat pomocí \emph{prepareStatement} nebo
\emph{escape_string}. Někdo využívá na funkci \emph{magic_quotes}, která automaticky escapuje veškeré parametry GET a POST požadavků.
\end{description}


\subsection{MVC}
\begin{itemize}
\item výhody - dobrá dělba práce + v aplikaci se častěji mění view + lehce umožňuje předkompilovat části kódu, takže zrychlení (a odstranění
komentářů)
\item Page Controller(URL má vlastní controller) X Front Controller(jeden hlavní controller) X Composite View(stránka je složená z více view)
\item super šablony Smarty
\item celé MVC - Zend, Nette
\end{itemize}


\subsection{frameworks}
\begin{itemize}
\item Doctrine - ORM
\item ZEND, NETTE - řeší lokalizaci, MVC, strukturu projektu, formuláře, ajax, \ldots
\end{itemize}

\subsection{Webové služby}
Toto téma je již zpracováno.

\subsection{Ajax}
Asynchronous JavaScript and XML - provádění requestů za účelem jiným než je načítání celé stránky (úprava DOMu na základě nových dat ze serveru,
asynchroní odesílání dat).

\end{document}

0 comments on commit 808397d

Please sign in to comment.