pre- post- content

This commit is contained in:
Ivan I. Ovchinnikov 2022-08-17 15:57:35 +03:00
parent d544e5323f
commit 7ee5707f1c
6 changed files with 60 additions and 18 deletions

Binary file not shown.

View File

@ -12,17 +12,20 @@
\usepackage{enumitem}
\usepackage{multicol,multirow}
\usepackage{float,adjustbox}
\usepackage{fontawesome}
%\usepackage{fontawesome}
\usepackage{longtable}
\usepackage{tikz}
\usepackage{hyperref}
\usepackage{forest}
\usepackage{nomencl,imakeidx}
\usetikzlibrary{mindmap,trees}
\input{fancy-listings-preamble}
\titlelabel{\thetitle. \quad}
\setcounter{tocdepth}{1}
\renewcommand{\nomname}{Термины, определения и сокращения}
\makeindex
\makenomenclature
\babelfont{rm}{PT Astra Serif}
\babelfont{sf}{PT Astra Serif}
\babelfont{tt}{PT Mono}
@ -30,7 +33,6 @@
\newcounter{slidenum}
\setcounter{slidenum}{1} % set to 2 if want to exclude title page of presentation
\newcommand{\showslide}[1]{
\noindent\makebox[\linewidth]{\rule{.90\paperwidth}{1.4pt}}
\begin{center}
@ -42,6 +44,7 @@
\newcommand\hRf[1]{\hyperref[#1]{\nameref{#1}}}
\newcommand{\wordcount}{\input{/tmp/wordcount.tex}}
\newcommand{\code}[1]{\small{\texttt{\detokenize{#1}}}\normalsize}
\newcommand*{\nom}[2]{#1\nomenclature{#1}{#2}}
\renewcommand\labelitemi{\textemdash}
\newenvironment{frm}
{ \begin{center} \begin{tabular}{|p{0.9\textwidth}|} \hline\\ }
@ -53,8 +56,8 @@
\lhead{\includegraphics[height=5mm]{logo.png}}
\rhead{И.И. Овчинников \\ \href{https://t.me/ivanigorevichfeed}{Telegram: ivanigorevichfeed}}
\chead{\thepage}
\cfoot{\faRocket}
\rfoot{Всего слов: \wordcount}
% \cfoot{\faRocket}
% \rfoot{Всего слов: \wordcount}
}
\geometry{
@ -82,10 +85,23 @@
\chapter{Java Core}
\section{Платформа: история и окружение}
\subsection{На этом уроке}
Краткая история (причины возникновения); инструментарий, выбор версии; CLI; структура проекта; документирование;
\begin{itemize}
\item \nom{UTF-8}{- (от англ. Unicode Transformation Format, 8-bit — «формат преобразования Юникода, 8-бит») — распространённый стандарт кодирования символов, позволяющий более компактно хранить и передавать символы Юникода, используя переменное количество байт (от 1 до 4), и обеспечивающий полную обратную совместимость с 7-битной кодировкой ASCII. Кодировка UTF-8 сейчас является доминирующей в веб-пространстве. Она также нашла широкое применение в UNIX-подобных операционных системах.}
\item \nom{ОС}{- (операционная система) — комплекс управляющих и обрабатывающих программ, которые, с одной стороны, выступают как интерфейс между устройствами вычислительной системы и прикладными программами, а с другой стороны — предназначены для управления устройствами, управления вычислительными процессами, эффективного распределения вычислительных ресурсов между вычислительными процессами и организации надёжных вычислений.}
\item \nom{IDE}{- (от англ. Integrated Development Environment) это интегрированная, единая среда разработки, которая используется разработчиками для создания различного программного обеспечения. IDE представляет собой комплекс из нескольких инструментов, а именно: текстового редактора, компилятора или интерпретатора, средств автоматизации сборки и отладчика.}
\item \nom{JDK}{- (от англ. Java Development Kit) — комплект разработчика приложений на языке Java, включающий в себя компилятор, стандартные библиотеки классов, примеры, документацию, различные утилиты и исполнительную систему. В состав JDK не входит интегрированная среда разработки на Java, поэтому разработчик, использующий только JDK, вынужден использовать внешний текстовый редактор и компилировать свои программы, используя утилиты командной строки.}
\item \nom{JRE}{- (от англ. Java Runtime Environment) — минимальная (без компилятора и других средств разработки) реализация виртуальной машины, необходимая для исполнения Java-приложений. Состоит из виртуальной машины Java Virtual Machine и библиотеки Java-классов.}
\item \nom{JVM}{- (от англ. Java Virtual Machine) — виртуальная машина Java, основная часть исполняющей системы Java. Виртуальная машина Java исполняет байт-код, предварительно созданный из исходного текста Java-программы компилятором. JVM может также использоваться для выполнения программ, написанных на других языках программирования.}
\item \nom{SDK}{- (от англ. software development kit, комплект для разработки программного обеспечения) — это набор инструментов для разработки программного обеспечения в одном устанавливаемом пакете. Они облегчают создание приложений, имея компилятор, отладчик и иногда программную среду. В основном они зависят от комбинации аппаратной платформы компьютера и операционной системы.}
\item \nom{JIT}{- (англ. Just-in-Time, компиляция «точно в нужное время»), динамическая компиляция — технология увеличения производительности программных систем, использующих байт-код, путём компиляции байт-кода в машинный код или в другой формат непосредственно во время работы программы. Таким образом достигается высокая скорость выполнения по сравнению с интерпретируемым байт-кодом за счёт увеличения потребления памяти (для хранения результатов компиляции) и затрат времени на компиляцию. Технология JIT базируется на двух более ранних идеях, касающихся среды выполнения: компиляции байт-кода и динамической компиляции.}
\item \nom{CLI}{- (англ. Command line interface, Интерфейс командной строки) — разновидность текстового интерфейса между человеком и компьютером, в котором инструкции компьютеру даются в основном путём ввода с клавиатуры текстовых строк (команд). Также известен под названиями «консоль» и «терминал».}
\end{itemize}
\subsection*{Конспект лекции}
\subsubsection{Краткая история (причины возникновения)}
\begin{itemize}
\item Язык создавали для разработки встраиваемых систем, сетевых приложений и прикладного ПО;
\item Язык создавали для разработки встраиваемых систем, сетевых приложений и прикладного \nom{ПО}{- программное обеспечение};
\item Популярен из-за скорости исполнения и полного абстрагирования от исполнителя кода;
\item Часто используется для программирования бэк-энда веб-приложений из-за изначальной нацеленности на сетевые приложения.
\end{itemize}
@ -107,7 +123,7 @@
\subsubsection{Что нужно скачать, откуда (как выбрать вендора, выбор версии)}
Для разработки понадобится среда разработки (IDE) и инструментарий разработчика (JDK). JDK выпускается несколькими поставщиками, большинство из них бесплатны и полнофункциональны, то есть поддерживают весь функционал языка и платформы.
В последнее время, с развитием контейнеризации приложений, часто устанавливают инструментарий в Docker-контейнер и ведут разработку прямо в контейнере, это позволяет не захламлять компьютер разработчика разными версиями инструментария и быстро разворачивать свои приложения в CI или на целевом сервере.
В последнее время, с развитием контейнеризации приложений, часто устанавливают инструментарий в Docker-контейнер и ведут разработку прямо в контейнере, это позволяет не захламлять компьютер разработчика разными версиями инструментария и быстро разворачивать свои приложения в \nom{CI}{- (англ. Continious Integration) практика разработки программного обеспечения, которая заключается в постоянном слиянии рабочих копий в общую основную ветвь разработки и выполнении частых автоматизированных сборок проекта для скорейшего выявления потенциальных дефектов и решения интеграционных проблем.} или на целевом сервере.
\begin{frm}
В общем случае, для разработки на любом языке программирования нужны так называемые SDK (Software Development Kit, англ. - инструментарий разработчика приложений или инструментарий для разработки приложений). Частный случай такого SDK - инструментарий разработчика на языке Java - Java Development Kit.
\end{frm}
@ -368,14 +384,11 @@ Here is your number: 4.
\item \code{{@code "public"}} вставка кода в описание
\end{itemize}
\subsection*{Задания к семинару}
\subsection*{Домашнее задание}
\begin{itemize}
\item Создать проект из трёх классов (основной с точкой входа и два класса в другом пакете), которые вместе должны составлять одну программу, позволяющую производить четыре основных математических действия и осуществлять форматированный вывод результатов пользователю.
\item Скомпилировать проект, а также создать для этого проекта стандартную веб-страницу с документацией ко всем пакетам.
\end{itemize}
\subsection*{Сценарий лекции}
%\subfile{scenarios/jc-1-c}
\section{Управление проектом: сборщики проектов}
Управление проектом: Jar-файлы; Gradle/Maven: зависимости, выгрузка артефакта, публичные репозитории, свойства проекта, приватные репозитории (хостинг); Bazel
@ -503,16 +516,14 @@ Socket, ServerSocket, Многопоточность, абстрагирован
\newpage
\appendix
\sloppy
\addcontentsline{toc}{chapter}{Термины, определения и сокращения}
\printnomenclature[20mm]
\chapter*{Приложения}
\addcontentsline{toc}{chapter}{Приложения}
\renewcommand{\thesection}{\Asbuk{section}}
\section{Термины, определения и сокращения}
\begin{itemize}
\item \textbf{UTF-8} (от англ. Unicode Transformation Format, 8-bit — «формат преобразования Юникода, 8-бит») — распространённый стандарт кодирования символов, позволяющий более компактно хранить и передавать символы Юникода, используя переменное количество байт (от 1 до 4), и обеспечивающий полную обратную совместимость с 7-битной кодировкой ASCII. Кодировка UTF-8 сейчас является доминирующей в веб-пространстве. Она также нашла широкое применение в UNIX-подобных операционных системах.
\item Операционная система, сокр. \textbf{ОС} (англ. operating system, OS) — комплекс управляющих и обрабатывающих программ, которые, с одной стороны, выступают как интерфейс между устройствами вычислительной системы и прикладными программами, а с другой стороны — предназначены для управления устройствами, управления вычислительными процессами, эффективного распределения вычислительных ресурсов между вычислительными процессами и организации надёжных вычислений.
\item \textbf{IDE} (Integrated Development Environment) это интегрированная, единая среда разработки, которая используется разработчиками для создания различного программного обеспечения. IDE представляет собой комплекс из нескольких инструментов, а именно: текстового редактора, компилятора или интерпретатора, средств автоматизации сборки и отладчика.
\end{itemize}
\end{document}

Binary file not shown.

Binary file not shown.

View File

@ -45,6 +45,12 @@
\end{frame}
\note{...}
\begin{frame}
\frametitle{О курсе}
и об уркое
\end{frame}
\note{...}
\begin{frame}
\frametitle{Краткая история}
\includegraphics[width=12cm]{../pics/jc-01-tiobe.png}
@ -292,7 +298,8 @@
\note{...}
\begin{frame}
\frametitle{title}
\frametitle{итоги}
что изучили и домашка
\end{frame}
\note{...}

View File

@ -8,6 +8,20 @@
\showslide{build/jc-1-b.pdf}
Здравствуйте, меня зовут Иван, я разработчик программного обеспечения в Российских космических системах, начальник группы программистов, автор и преподаватель нескольких курсов в направлении программирования на портале GeekBrains. Пара слов обо мне, почему я нахожусь здесь и планирую Вам что-то рассказывать про язык Java? Для этого придётся вынести за скобки мой опыт работы в цифровой схемотехнике и других языках, в том числе создание бортовой аппаратуры, которая прямо сейчас летает у нас над головами или продолжает доставлять другие полезные грузы в космос. С точки зрения языка Java, обо мне можно сказать, что я являюсь разработчиком нескольких отраслевых информационных систем поддержки единой наземной инфраструктуры российского космического агентства. На моём счету также участие в межотраслевых проектах по созданию единых баз данных космического применения.
% -----------------------------------------------------------------------------------
\showslide{build/jc-1-b.pdf}
Данный курс, первый из специализации, направлен на первое знакомство со внутренним устройством языка и фреймворком разработки приложений с его использованием. Курс демонстрирует механизмы работы знакомых студенту концепций на примере языка Java. В рамках курса будут рассмотрено устройство языка Java и сопутствующих технологических решений, платформы для создания и запуска приложений на JVM-языках (Groovy, Kotlin, Scala, и др). Будут рассмотрены некоторые базовые пакеты ввода-вывода, позволяющие манипулировать данными за пределами программы. В результате прохождения курса у вас, слушатели, должно появиться знание принципов работы платформы Java, понимание того, как язык выражает принципы программирования, его объектную природу. Вы научитесь писать базовые терминальные приложения и утилиты, решать задачи (в том числе алгоритмические, не требующие подключения сложных библиотек) с использованием языка Java и с учётом его особенностей.
На этом уроке мы поговорим о
\begin{itemize}
\item краткой истории и причинах возникновения язка
\item что нужно скачать, откуда и как это всё выбирать
\item из чего всё состоит
\item изучим простую структуру проекта и способы его запуска
\item коротко рассмотрим утилиту джавадок
\end{itemize}
Рассмотрим примитивный инструментарий и базовые возможности платформы для разработки приложений на языке Java.
% -----------------------------------------------------------------------------------
\showslide{build/jc-1-b.pdf}
Итак язык Java. Согласно википедии, Java — строго типизированный объектно-ориентированный язык программирования общего назначения, разработанный компанией Sun Microsystems. Разработка ведётся сообществом; язык и основные реализующие его технологии распространяются по лицензии GPL.
@ -151,4 +165,14 @@ javadoc -locale ru_RU -encoding utf-8 -docencoding cp1251 \
\end{verbatim}
Поскольку я сейчас не с виндоусом, то такие настройки наоборот, сломают отображение.
% -----------------------------------------------------------------------------------
\showslide{build/jc-1-b.pdf}
На этом уроке мы рассмотрели историю и причины создания языка, его окружение и структуру проекта, узнали, что скрывают в себе такие аббревиатуры как JDK JRE JVM SDK JIT CLI. Рассмотрели базовое применение утилит java, javac и javadoc. В качестве домашнего задания попробуйте
\begin{itemize}
\item Создать проект из трёх классов (основной с точкой входа и два класса в другом пакете), которые вместе должны составлять одну программу, позволяющую производить четыре основных математических действия и осуществлять форматированный вывод результатов пользователю.
\item Скомпилировать проект, а также создать для этого проекта стандартную веб-страницу с документацией ко всем пакетам.
\end{itemize}
На следующей лекции мы поговорим о том как осуществлять управление более сложными проектами: Jar-файлы; сборщики Gradle/Maven; чтоб такое репозитории и как ими пользоваться.
\end{document}