Commits

Alexander Vershilov  committed bd33665

поправки перевода главы 03 Basics

  • Participants
  • Parent commits 0f2f64c

Comments (0)

Files changed (1)

File tex/03. Basics.tex

-\section{Основы}
+\chapter{Основы}\label{ch:basics}
 
 Первым шагом при изучении новой технологии является её запуск. Цель данной главы 
 познакомить вас с простым Yesod приложением, показать основные подходы, и ввести
 терминогию.
 
-\subsection{Здравствуй, Мир}
+\section{Здравствуй, Мир}
 
 Давайте начнём книгу как это принято: сделаем простую web страницу, которая выводит
 \texttt{Здравствуй, Мир}
 main = warpDebug 3000 HelloWorld
 \end{lstlisting}
 
-Если вы сохраните этот код в файл \lstinline'helloworld.hs' и запустите его командой
-\lstinline'runhaskell helloworld.hs', то будет на 3000 порту будет запится веб сервер. 
+Если вы сохраните этот код в файл \lstinline!helloworld.hs! и запустите его командой
+\lstinline!runhaskell helloworld.hs!, то будет на 3000 порту будет запущен веб сервер. 
 Если вы откроете браузером страницу \lstinline'http://localhost:3000',
-то вы получите следующий HTML код:
+то вы получите следующий \texttt{HTML} код:
 
 \begin{lstlisting}[language=HTML]
 <!DOCTYPE html>
 <html><head><title></title></head><body>Здравствуй, Мир!</body></html>
 \end{lstlisting}
 
-Далее в главе мы ещё вернёмся к этому примеру.
+Далее в этой главе мы ещё вернёмся к этому примеру.
 
-\subsection{Маршрутизация}
+\section{Маршрутизация}
 
-Как и большинство современных веб фреймворов, Yesod использует шаблон eдиной точки входа. 
-Это обозначает, что каждый запрос к приложению yesod будет обрабатываться в общей точке и 
-перенаправляться оттуда. Другой подход используется в таких системах как PHP или ASP, 
-где обычно создаются отдельные файлы и WEB сервер автоматически перенаправляет запрос 
-к соотвествующему файлу.
+Как и большинство современных веб фреймворов, \texttt{Yesod} подстроен по шаблону eдиная
+точка входа. Это обозначает, что каждый запрос к \texttt{Yesod} приложению будет 
+обрабатываться в общей точке и маршрутизироваться оттуда. Противоположный
+подход используется в таких системах как \texttt{PHP} или \texttt{ASP}, 
+где обычно создаются отдельные файлы и WEB сервер автоматически перенаправляет 
+запрос к соотвествующему файлу.\marginpar{in a contrast}.
 
 В дополнение, Yesod использует декларативный стиль для задания маршрутов. 
 В вышеприведенном примере он выглядит следующим образом:
 |]
 \end{lstlisting}
 
-\lstinline'mkYesod' Template Haskell функция, а parseRoutes это 
+\lstinline!mkYesod! -- Template Haskell функция, а \lstinline!parseRoutes! -- 
 обработчик квазицитирования. По русски это обознает: создать один 
-путь в приложении HelloWorld . Я бы хотел назвать его HomeR, и он 
-должен слушать запросы к / (корень приложения), 
-и отвечать на GET-запросы. Назовём HomeR ресурсом, отсюда суффикс 
-``R'' в названии.
+путь в приложении \texttt{HelloWorld}. Назвать его \lstinline!HomeR!, и он 
+должен слушать запросы к / (корень приложения), и отвечать на GET-запросы.
+\marginpar{криво переведено I'd like to call it, т.к. если переводить дословно,
+то предложения получаются не связанными}
+Будем называть \lstinline!HomeR! ресурсом, отсюда суффикс ,,R`` в названии.
 
-Суффикс R в названиях ресурсов это просто соглашение, но это общее соглашение. 
-Оно позволяет чуть упростить чтение и понимание кода.
+Суффикс ,,R`` в названиях ресурсов это просто соглашение, 
+но это достаточно общее соглашение. Оно позволяет чуть упростить чтение и 
+понимание кода.
 
-TH функиця \lstinline'mkYesod' генерирует немного кода: тип данных маршрута, 
-функцию диспечеризации и функцию отображения. Мы рассмотрим их более внимательно в главе 
-\ref{chapter:routing}. Маршрутизация URL и обработчики.
-Но использовав опцию GHC \lstinline'-ddump-splices', мы можем сразу же увидеть 
-сгенерированный код. Сильно подчищенная версия:
+\texttt{TH} функиця \lstinline!mkYesod! генерирует немного кода: 
+тип данных маршрута, функцию диспечеризации и функцию рендерига\marginpar{функцию отображения, ответа или ещё как-то}. 
+Мы рассмотрим их более внимательно в главе~\ref{chapter:routing}. 
+Маршрутизация URL и обработчики.
+Но использовав опцию GHC \lstinline'-ddump-splices', мы можем увидеть 
+сгенерированный код прямо сейчас. Сильно подчищенная версия:\marginpar{подчищенная звучит глупо, но более хорошего немногословного варианта не вижу} 
 
 \begin{lstlisting}
 instance RenderRoute HelloWorld where
 main = return ()
 \end{lstlisting}
 
-Некоторые вещи пока ещё не понятны. В целом, реализация \lstinline'yesodDispatch'
-достаточно сложна и удовлетворяет различным вариантам диспетчеризации и подходит под
-требования используемых нами высокопроизводительных маршрутизационных структур.
-Тем не менее реализация RenderRoute со всеми связанными структурами данных должы 
-давать представление о том, что происходит под поверхностью\marginpar{under the surface = внутри}. %FIXME (внутри) 
+Некоторые вещи пока ещё не понятны. В частности, реализация \lstinline!yesodDispatch!
+достаточно сложна и удовлетворяет различным вариантам диспетчеризации\marginpar{bit hairy and..}
+и подходит под требования используемых нами высокопроизводительных 
+маршрутизационных структур.
+Тем не менее реализация \lstinline!RenderRoute! со всеми связанными 
+структурами данных должы давать хорошее представление о том, что происходит 
+под поверхностью\marginpar{under the surface = внутри}. %FIXME (внутри) 
 
-\subsection{Функции обработчики}
+\section{Функции обработчики}
 
-Итак у нас есть маршрут названный \texttt{HomeR}, и он отвечает на \texttt{GET} запросы. 
-Как вы установить ответ? Вы должны написать функцию обработчикю. В Yesod следует
+Итак у нас есть маршрут названный \lstinline!HomeR!, и он отвечает на \texttt{GET} запросы. 
+Как вы установить ответ? Вы должны написать функцию обработчик. \texttt{Yesod} следует
 стандартизованной схеме именования таких функций: 
-метод написанный строчными буквами (т.е. GET становится get), после которого идёт 
-название марштута.В нашем случае эта функция будет называться \lstinline'getHomeR'.
+метод написанный строчными буквами (т.е. \texttt{GET} становится \lstinline!get!), после которого идёт 
+название марштута. В нашем случае эта функция будет называться \lstinline!getHomeR!.
 
-Большая часть вашего кода в Yesod будет находиться в функциях обработчиках. 
+Большая часть вашего кода в \texttt{Yesod} будет находиться в функциях обработчиках. 
 Именно здесь обрабатывается пользовательский ввод, совершаются запросы к базе данных и создаются ответы. 
-В нашем простом примере, мы создали ответ с помощью функции \lstinline'defaultLayout'. 
-Эта функция оборачивает передеанное ей содержимое шаблоном нашего сайта. 
-По умолчанию, она создаёт HTML файл с установленным doctype, html тегами head и body. 
-Как мы увидим в главе~\ref{ch:typeclass} Yesod typeclass, эта функция может быть перегружена,
-для увеличения функционала.
+В нашем простом примере, мы создали ответ с помощью функции \lstinline!defaultLayout!. 
+Эта функция оборачивает шаблоном переданное ей содержимое.  По умолчанию, 
+она создаёт \texttt{HTML} файл с установленным doctype, html тегами head и body. 
+Как мы увидим в главе~\ref{ch:typeclass} Класс типов \texttt{Yesod}, 
+эта функция может быть перегружена, для увеличения функционала.
 
-В нашем примере в \lstinline'defaultLayout' мы передали \lstinline'[whamlet|Hello World!|]', 
-\lstinline'whamlet' это тоже функция квазицитирования. В данном случае, оно конвертирует 
-\texttt{Hamlet} синтакс в виджет. \texttt{Hamlet} это движок \texttt{HTML} шаблонов используемый
-в Yesod по умолчанию. Вместе с ``родственниками'' \texttt{Cassius}, \texttt{Lucius} и \texttt{Julius}, 
-вы можете создавать HTML, CSS и Javascript типобезопасным спобом, т.е. 
-их корректность будет полностью проверяющимся во времени компиляции. Мы рассмотрим это подробнее в 
+В нашем примере в \lstinline!defaultLayout! мы передали 
+\lstinline![whamlet|Hello World!|]!, \lstinline!whamlet! -- это тоже 
+функция квазицитирования. В данном случае, она конвертирует 
+\texttt{Hamlet} синтакс в виджет. \textt{Hamlet} -- это движок 
+\textt{HTML} шаблонов используемый в \textt{Yesod} по умолчанию. 
+Вместе с ,,родственниками`` \texttt{Cassius}, \texttt{Lucius} 
+и \texttt{Julius}, он позволяет создавать \texttt{HTML}, \texttt{CSS}
+и \texttt{Javascript} типобезопасным способом, т.е. их корректность будет 
+полностью проверяться во время компиляции. Мы рассмотрим это подробнее в 
 главе~\ref{ch:shakespeare} Shakespeare.
 
-Виджеты -- другой краеугольный камень Yesod. Они позволяют создавать модульные компоненты сайта 
-состоящие из HTML, CSS и Javascipt и переиспользовать их в других сайтах. Мы погрузимся в детали
-в главе~\ref{ch:widgets} виджеты.
+Виджеты -- другой краеугольный камень \texttt{Yesod}. Они позволяют создавать 
+модульные компоненты сайта состоящие из \texttt{HTML}, \texttt{CSS} и 
+\texttt{Javascipt} и переиспользовать их в других сайтах. 
+Мы погрузимся в детали в главе~\ref{ch:widgets} Виджеты.
 
-\subsection{Основание}
+\section{Основание}
 
 Слово появляется в нашем примере ``HelloWord'' несколько раз. Каждое приложение 
 Yesod имеет основой тип. Этот тип должен быть экземляром класса типов Yesod, 
 для других разработок на Haskell (как фреймоврков так и не фреймворк приложений), так же 
 как стандартный файлсервер для различных production окружений\marginpar{как-то криво всё}.
 
-\subsection{Ресурсы и тип-независимые URL}
+\section{Ресурсы и тип-независимые URL}
 
 В нашем приложении здравствуй мир, мы определеили только один ресурс (HomeR).
 Веб приложение обычно более exciting и использует более чем одну страницу. Давайте рассмотрим:
 получите ошибку 404 во время исполнения. В Yesod, всё что вам придётся следать это обновить 
 путь и собрать приложение, GHC укажет на все ссылки которые должны быть откорретированы.
 
-\subsection{Каркас сайта}
+\section{Каркас сайта}
 
 При установке Yesod вы получаете как библиотеку Yesod, так и исполняемый файл. Этот исполняемый файл
 может принимать небольшое количество команд, но первая команда с какой вы захотите познакомиться это
 
 Мы рассмотрим струкруру каркаса во всех подробностях в далее.
 
-\subsection{Разрабочтеский сервер}
+\section{Разрабочтеский сервер}
 
 Одной из полезных возможностей интерпретируемых языков над компилируемыми является быстрое прототипирование: 
 вы сохраняете изменения в файл и нажимаете обновить. Если мы хотим внести изменения в Yesod
 \lstinline'yesod devel', подэтому наши примеры будут использовать просто warpDebug. Но когда вы будете готовы
 создать ваше первое реальное приложение, \lstinline'yesod devel' будет ждать вас.\marginpar{кривой перевод}
 
-\subsection{Выводы}
+\section{Выводы}
 
 Каждое Есод приложение строится вокруг основного типа данных. Мы ассоциируем некоторые ресурсы
 с типами данных и определяем функции обработчики для каждого из маршрутов. Эти ресурсы так же
 вариантом будет Warp.
 
 При разработке Yesod у вас будет много выборов стиля написания: квазицитирование или внешние файлы,
-\lstinline'warpDebug' или \lstinline'yesod devel' и так далее. Примеры в этой книги построены 
+\lstinline{warpDebug} или \lstinline'yesod devel' и так далее. Примеры в этой книги построены 
 таким образом, чтобы их было просто копировать и вставлять, но гораздо более мощные варианты 
 будут доступны, когда вы начнете создавать реальные Yesod приложения.