diff --git a/build/j-spec.pdf b/build/j-spec.pdf index b8645e8..1d068d6 100644 Binary files a/build/j-spec.pdf and b/build/j-spec.pdf differ diff --git a/build/jtc1-01-abstract.pdf b/build/jtc1-01-abstract.pdf new file mode 100644 index 0000000..41c6622 Binary files /dev/null and b/build/jtc1-01-abstract.pdf differ diff --git a/build/jtc1-01-workshop.pdf b/build/jtc1-01-workshop.pdf new file mode 100644 index 0000000..3794fcf Binary files /dev/null and b/build/jtc1-01-workshop.pdf differ diff --git a/build/jtc2-02-abstract.pdf b/build/jtc2-02-abstract.pdf new file mode 100644 index 0000000..4f06e6b Binary files /dev/null and b/build/jtc2-02-abstract.pdf differ diff --git a/build/jtc2-02-workshop.pdf b/build/jtc2-02-workshop.pdf new file mode 100644 index 0000000..b83a37b Binary files /dev/null and b/build/jtc2-02-workshop.pdf differ diff --git a/build/jtc3-03-abstract.pdf b/build/jtc3-03-abstract.pdf new file mode 100644 index 0000000..33d08b7 Binary files /dev/null and b/build/jtc3-03-abstract.pdf differ diff --git a/build/jtc3-03-workshop.pdf b/build/jtc3-03-workshop.pdf index d536abc..fc4ac4f 100644 Binary files a/build/jtc3-03-workshop.pdf and b/build/jtc3-03-workshop.pdf differ diff --git a/build/jtc4-04-abstract.pdf b/build/jtc4-04-abstract.pdf new file mode 100644 index 0000000..482f678 Binary files /dev/null and b/build/jtc4-04-abstract.pdf differ diff --git a/build/jtc4-04-workshop.pdf b/build/jtc4-04-workshop.pdf new file mode 100644 index 0000000..bb9aad2 Binary files /dev/null and b/build/jtc4-04-workshop.pdf differ diff --git a/build/jtc5-05-abstract.pdf b/build/jtc5-05-abstract.pdf new file mode 100644 index 0000000..5018217 Binary files /dev/null and b/build/jtc5-05-abstract.pdf differ diff --git a/build/jtc5-05-workshop.pdf b/build/jtc5-05-workshop.pdf new file mode 100644 index 0000000..87b9bdc Binary files /dev/null and b/build/jtc5-05-workshop.pdf differ diff --git a/j-spec.tex b/j-spec.tex index fd9786f..84aebb4 100644 --- a/j-spec.tex +++ b/j-spec.tex @@ -1,7 +1,12 @@ \immediate\write18{texcount -sum -1 -inc j-spec.tex > /tmp/wordcount.tex} -\documentclass[a4paper,12pt]{report} +% report is for the complete book +%\documentclass[a4paper,12pt]{report} + +% article is for single section compilation +\documentclass[a4paper,12pt]{article} \usepackage[english,russian]{babel} +\usepackage{ifthen} \input{settings/main-style-preamble} \input{settings/fancy-listings-preamble} @@ -11,16 +16,27 @@ \author{Иван Игоревич Овчинников} \date{\today{} (\DTMcurrenttime)} +% defining if document is compiled as book or as articles +\def\isSingle{1} + \usepackage{subfiles} \begin{document} \maketitle + +\ifx\isSingle\undefined \tableofcontents +\fi + \pagestyle{plain} \sloppy \newpage + +\ifx\isSingle\undefined \chapter{Java Core} +\fi + \subfile{jtc1-01-abstract} \newpage \subfile{jtc2-02-abstract} @@ -32,15 +48,20 @@ \subfile{jtc5-05-abstract} \newpage +\ifx\isSingle\undefined \chapter{Java Development Kit} +\fi %\subfile{jtd6-11a} \appendix -\setcounter{secnumdepth}{5} -\printnomenclature[40mm] +\setcounter{secnumdepth}{5} +\ifx\isSingle\undefined +\printnomenclature[40mm] +\appendix \chapter*{Семинары} \addcontentsline{toc}{chapter}{Семинары} +\fi \renewcommand{\thesection}{\Asbuk{section}} \subfile{jtc1-01-workshop} \newpage diff --git a/jtc1-01-abstract.tex b/jtc1-01-abstract.tex index 4c63d0d..6ca9829 100644 --- a/jtc1-01-abstract.tex +++ b/jtc1-01-abstract.tex @@ -2,9 +2,10 @@ \begin{document} \pagestyle{plain} -%\tableofcontents +\tableofcontents + \section{Платформа: история и окружение} -\subsection{В этом разделе} +\subsection*{В этом разделе} Краткая история (причины возникновения); инструментарий, выбор версии; CLI; структура проекта; документирование; некоторые интересные способы сборки проектов. В этом разделе происходит первое знакомство со внутреннем устройством языка Java и фреймворком разработки приложений с его использованием. Рассматривается примитивный инструментарий и базовые возможности платформы для разработки приложений на языке Java. Разбирается структура проекта, а также происходит ознакомление с базовым инструментарием для разработки на Java. @@ -466,7 +467,7 @@ Docker-образ и, как следствие, Docker-контейнеры в \item *Создать два Docker-образа. Один должен компилировать Java-проект обратно в папку на компьютере подьзователя, а второй забирать скомпилированные классы и исполнять их. \end{itemize} -% \newpage -% \printnomenclature[40mm] +\newpage +\printnomenclature[40mm] \end{document} \ No newline at end of file diff --git a/jtc1-01-workshop.tex b/jtc1-01-workshop.tex index b692343..736119b 100644 --- a/jtc1-01-workshop.tex +++ b/jtc1-01-workshop.tex @@ -1,4 +1,4 @@ -\documentclass[../j-spec.tex]{subfiles} +\documentclass[j-spec.tex]{subfiles} \begin{document} \sloppy diff --git a/jtc2-02-abstract.tex b/jtc2-02-abstract.tex index cea2d2d..75307a5 100644 --- a/jtc2-02-abstract.tex +++ b/jtc2-02-abstract.tex @@ -3,9 +3,9 @@ \begin{document} \setcounter{section}{1} \pagestyle{plain} -%\tableofcontents +\tableofcontents \section{Специализация: данные и функции} -\subsection{В предыдущем разделе} +\subsection*{В предыдущем разделе} \begin{itemize} \item Краткая история (причины возникновения); \item инструментарий, выбор версии; @@ -15,7 +15,7 @@ \item некоторые интересные способы сборки проектов. \end{itemize} -\subsection{В этом разделе} +\subsection*{В этом разделе} Будет рассмотрен базовый функционал языка, то есть основная встроенная функциональность, такая как математические операторы, условия, циклы, бинарные операторы. Далее способы хранения и представления данных в Java, и в конце способы манипуляции данными, то есть функции (в терминах языка называющиеся методами). \begin{itemize} \item \nom{Метод}{функция в языке программирования, принадлежащая классу}; @@ -688,7 +688,7 @@ Constare - (лат. стоять твёрдо). Константность эт \item Написать метод, которому можно передать в качестве аргумента массив, состоящий строго из единиц и нулей (целые числа типа \code{int}). Метод должен заменить единицы в массиве на нули, а нули на единицы и не содержать ветвлений. Написать как можно больше вариантов метода. \end{enumerate} -% \newpage -% \printnomenclature[40mm] +\newpage +\printnomenclature[40mm] \end{document} diff --git a/jtc2-02-workshop.tex b/jtc2-02-workshop.tex index 5c80291..60600f6 100644 --- a/jtc2-02-workshop.tex +++ b/jtc2-02-workshop.tex @@ -1,4 +1,4 @@ -\documentclass[../j-spec.tex]{subfiles} +\documentclass[j-spec.tex]{subfiles} \usepackage{spreadtab} \begin{document} diff --git a/jtc3-03-abstract.tex b/jtc3-03-abstract.tex index bfa2055..a18d2ac 100644 --- a/jtc3-03-abstract.tex +++ b/jtc3-03-abstract.tex @@ -5,12 +5,13 @@ \setlength{\columnsep}{22pt} \pagestyle{plain} \sloppy -%\tableofcontents +\tableofcontents + \section{Специализация: ООП} -\subsection{В предыдущем разделе} +\subsection*{В предыдущем разделе} Будет рассмотрен базовый функционал языка, то есть основная встроенная функциональность, такая как математические операторы, условия, циклы, бинарные операторы. Далее способы хранения и представления данных в Java, и в конце способы манипуляции данными, то есть функции (в терминах языка называющиеся методами). -\subsection{В этом разделе} +\subsection*{В этом разделе} Разберём такие основополагающих в Java вещи, как классы и объекты, а также с тем, как применять на практике основные принципы ООП: наследование, полиморфизм и инкапсуляцию. Дополнительно рассмотрим устройство памяти в джава. \begin{itemize} \item \nom{Класс}{определяет форму и сущность объекта и является логической конструкцией, на основе которой построен весь язык Java. Определяет новый тип данных}; @@ -330,13 +331,26 @@ public class Cat { } \end{lstlisting} -Помимо того, что статические поля - это полезный инструмент создания общих свойств это ещ§ и опасный инструмент создания общих свойств. Так, например, мы знаем, что у котов четыре лапы, а не 6 и не 8. Не создавая никакого барсика будет понятно, что у кота - 4 лапы. Это полезное поведение. +Помимо того, что статические поля -- это полезный инструмент создания общих свойств это ещё и опасный инструмент создания общих свойств. Так, например, мы знаем, что у котов четыре лапы, а не шесть и не восемь. Не создавая никакого Барсика будет понятно, что у кота -- четыре лапы. Это полезное поведение любого класса и его объектов. -лайвкод 03-статическое-поле-ошибка Посмотрим на опасность. Мы видим, что у каждого кота есть имя, и помним, что коты хранят значение своего имени каждый сам у себя. А знают экземпляры о названии поля потому что знают, какого класса они экземпляры. Но что если мы по невнимательности добавим свойство статичности к имени кота? +\begin{lstlisting}[language=Java,style=JCodeStyle] +public class Cat { + static int pawsCount = 4; -03-статическое-поле-признак Создав тех же самых котов, которых мы создавали весь урок, мы получим двух мурзиков и ни одного барсика. Почему это произошло? По факту переменная у нас одна на всех, и значение тоже одно, а значит каждый раз мы меняем именно его, а все остальные коты ничего не подозревая смотрят на значение общей переменной и бодро его возвращают. Поэтому, чтобы не запутаться, к статическим переменным, как правило, обращаются не по ссылке на объект — cat1.name, а по имени класса — Cat.name. + static String name; + String color; + int age; -03-статические-поля К слову, статические переменные — редкость в Java. Вместо них применяют статические константы. Они определяются ключевыми словами static final и по соглашению о внешнем виде кода пишутся в верхнем регистре. + // ... +} +\end{lstlisting} + +У каждого кота есть имя, и коты хранят значение своего имени каждый сам у себя. А знают экземпляры о названии поля потому что знают, какого класса они экземпляры. В чём опасность? Что если по невнимательности добавить свойство статичности к имени кота? + +Создав тех же котов, такой класс вернёт двух Мурзиков и ни одного Барсика. Почему это произошло? По факту переменная одна на всех, и значение тоже одно, а значит при каждом вызове конструктора меняется именно оно, а все остальные коты, ничего не подозревая, смотрят на значение общей переменной и возвращают его. Поэтому, к статическим переменным, как правило, обращаются не по ссылке на объект -- \code{cat1.name}, а по имени класса -- \code{Cat.name}. + +\begin{frm} \info Статические переменные -- редкость в Java. Вместо них применяют статические константы. Они определяются ключевыми словами \code{static final} и по соглашению о внешнем виде кода пишутся в верхнем регистре, разделяя слова символом нижнего подчёркивания, так называемым \code{UPPER_SNAKE_CASE}. +\end{frm} \subsubsection{Задание для самопроверки} \begin{enumerate} @@ -681,8 +695,9 @@ public class Cat { Представим, что есть необходимость создать помимо класса котиков, класс собачек. Данный класс будет выглядеть очень похожим образом, только он будет не мяукать, а гавкать, и заменим обоим животным прыжок на простое перемещение на лапках. -\begin{multicols}{2} -\begin{lstlisting}[language=Java,style=JCodeStyle,label={lst:cmpcat},caption={Класс кота}] +\begin{figure}[H] + \begin{multicols}{2} + \begin{lstlisting}[language=Java,style=JCodeStyle,label={lst:cmpcat},caption={Класс кота}] public class Cat { private String name; private String color; @@ -693,29 +708,29 @@ public class Cat { this.color = color; this.age = age; } - + public String getName() { - return name; + return name; } public String getColor() { - return color; + return color; } public int getAge() { - return age; + return age; } public void setName(String name) { - this.name = name; + this.name = name; } public void setColor(String color) { - this.color = color; + this.color = color; } public void setAge(int age) { - this.age = age; + this.age = age; } void voice() { @@ -726,9 +741,9 @@ public class Cat { System.out.println(name + " walks on paws"); } } -\end{lstlisting} - \columnbreak -\begin{lstlisting}[language=Java,style=JCodeStyle,label={lst:cmpdog},caption={Класс собаки}] + \end{lstlisting} + \columnbreak + \begin{lstlisting}[language=Java,style=JCodeStyle,label={lst:cmpdog},caption={Класс собаки}] public class Dog { private String name; private String color; @@ -739,29 +754,29 @@ public class Dog { this.color = color; this.age = age; } - + public String getName() { - return name; + return name; } public String getColor() { - return color; + return color; } public int getAge() { - return age; + return age; } public void setName(String name) { - this.name = name; + this.name = name; } public void setColor(String color) { - this.color = color; + this.color = color; } public void setAge(int age) { - this.age = age; + this.age = age; } void voice() { @@ -772,8 +787,9 @@ public class Dog { System.out.println(name + " walks on paws"); } } -\end{lstlisting} -\end{multicols} + \end{lstlisting} + \end{multicols} +\end{figure} Очевидно это не DRY и неприемлемо, если появится необходимость описать классы для целого зоопарка. В приведённых классах есть очень много абсолютно одинаковых и очень похожих полей и методов. @@ -819,6 +835,7 @@ public class Animal { Простой перенос кода в родительский класс показал наличие проблемы. Модификатор \code{private} определяет область видимости только внутри класса, а если нужно чтобы переменную было видно ещё и в классах-наследниках, нужен хотя бы модификатор доступа по умолчанию. Если же класс наследник создаётся в каком-то другом пакете, то и default не подойдёт. +\begin{figure}[H] \begin{multicols}{2} \begin{lstlisting}[language=Java,style=JCodeStyle,label={lst:cmpdog1},caption={Класс собаки}] public class Dog extends Animal { @@ -856,6 +873,7 @@ public class Cat extends Animal { } \end{lstlisting} \end{multicols} +\end{figure} То есть, к членам данных и методам класса можно применять следующие модификаторы доступа \begin{itemize} @@ -882,6 +900,7 @@ public class Cat extends Animal { При описании класса, можно явно вызвать конструктор базового класса в конструкторе класса-потомка. Базовый класс еще называют «суперклассом», поэтому в Java для его обозначения используется ключевое слово \code{super}. Здесь такое же ограничение, как и при вызове конструкторов данного класса (через \code{this}) - вызов такого конструктора может быть только один и быть только первой строкой. Таким образом, код, для всех животных в программе будет выглядеть следующим образом: +\begin{figure}[H] \begin{multicols}{2} \begin{lstlisting}[language=Java,style=JCodeStyle,label={lst:animal-full},caption={Класс животного}] public class Animal { @@ -968,6 +987,7 @@ public class Bird extends Animal { } \end{lstlisting} \end{multicols} +\end{figure} Для примера, создали ещё один класс, наследника животного, чтобы использовать наследование по назначению. Наследование реализуется через ключевое слово \code{extends}, расширять. Важно, что класс-родитель расширяется функциональностью или свойствами класса-наследника. Это позволило, например, добавить в птичку такое свойство как высота полёта и такой метод как летать, в дополнение к тому, что умеют все животные. @@ -1187,7 +1207,7 @@ public class Cat extends Animal { \item * Добавить механизм, создающий 25\% разброс значений каждого ограничения для каждого объекта. \end{enumerate} -% \newpage -% \printnomenclature[40mm] +\newpage +\printnomenclature[40mm] \end{document} diff --git a/jtc3-03-workshop.tex b/jtc3-03-workshop.tex index cdba610..154da20 100644 --- a/jtc3-03-workshop.tex +++ b/jtc3-03-workshop.tex @@ -1,4 +1,4 @@ -\documentclass[../j-spec.tex]{subfiles} +\documentclass[j-spec.tex]{subfiles} \usepackage{spreadtab} \begin{document} diff --git a/jtc4-04-abstract.tex b/jtc4-04-abstract.tex index ea4cff6..5090565 100644 --- a/jtc4-04-abstract.tex +++ b/jtc4-04-abstract.tex @@ -5,12 +5,13 @@ \setlength{\columnsep}{22pt} \pagestyle{plain} \sloppy -%\tableofcontents +\tableofcontents + \section{Специализация: ООП и исключения} -\subsection{В предыдущем разделе} +\subsection*{В предыдущем разделе} Была рассмотрена реализация объектно-ориентированного программирования в Java. Рассмотрели классы и объекты, а также наследование, полиморфизм и инкапсуляцию. Дополнительно был освещён вопрос устройства памяти. -\subsection{В этом разделе} +\subsection*{В этом разделе} В дополнение к предыдущему, будут разобраны такие понятия, как внутренние и вложенные классы; процессы создания, использования и расширения перечислений. Более детально будет разобрано понятие исключений и их тесная связь с многопоточностью в Java. Будут рассмотрены исключения с точки зрения ООП, процесс обработки исключений. \begin{itemize} \item \nom{Перечисление}{это упоминание объектов, объединённых по какому-либо признаку. Фактически, представляет новый тип данных, поэтому возможно определить переменную данного типа и использовать её.}; @@ -749,7 +750,7 @@ try (TestStream stream = new TestStream()) { \item для проверки напишите программу, преобразующую квадратный массив целых чисел 5х5 в сумму чисел в этом массиве, при этом, программа должна выбросить исключение, если строк или столбцов в исходном массиве окажется не 5. \end{enumerate} -% \newpage -% \printnomenclature[40mm] +\newpage +\printnomenclature[40mm] \end{document} diff --git a/jtc4-04-workshop.tex b/jtc4-04-workshop.tex index 1d99281..12ad5a1 100644 --- a/jtc4-04-workshop.tex +++ b/jtc4-04-workshop.tex @@ -1,4 +1,4 @@ -\documentclass[../j-spec.tex]{subfiles} +\documentclass[j-spec.tex]{subfiles} \usepackage{spreadtab} \begin{document} @@ -150,7 +150,7 @@ private static final class RowMismatchException extends RuntimeException { \subsubsection*{Вопросы и ответы} \begin{itemize} -\item \textbf{Ценность этапа} Задать задание для самостоятельного выполнения между занятиями. +\item \textbf{Ценность этапа} Вовлечение аудитории в обратную связь, пояснение неочевидных моментов в материале лекции и другой проделанной работе. \item \textbf{Тайминг} 5-15 минут \item \textbf{Действия преподавателя} \begin{itemize} diff --git a/jtc5-05-abstract.tex b/jtc5-05-abstract.tex index a450697..7fecbb6 100644 --- a/jtc5-05-abstract.tex +++ b/jtc5-05-abstract.tex @@ -5,12 +5,13 @@ \setlength{\columnsep}{22pt} \pagestyle{plain} \sloppy -%\tableofcontents +\tableofcontents + \section{Специализация: тонкости работы} -\subsection{В предыдущем разделе} +\subsection*{В предыдущем разделе} Рассмотрены понятия внутренних и вложенных классов; процессы создания, использования и расширения перечислений. Подробно рассмотрены исключения с точки зрения ООП, их философия и тесная связь с многопоточностью в Java, обработка, разделение понятия штатных и нештатных ситуаций. -\subsection{В этом разделе} +\subsection*{В этом разделе} Файловые системы и представление данных в запоминающих устройствах; Начало рассмотрения популярных пакетов ввода-вывода \code{java.io}, \code{java.nio}. Более подробно будет разобран один из самых популярных ссылочных типов данных \code{String} и механики вокруг него. \begin{itemize} \item \nom{Файл}{именованная область данных на носителе информации, используемая как базовый объект взаимодействия с данными в операционных системах.}; @@ -705,13 +706,11 @@ cat0 equal to cat3? false \item Написать метод поиска слова внутри файла. \end{enumerate} -% \newpage -% \printnomenclature[40mm] +\newpage +\printnomenclature[40mm] \end{document} - -% Основная загрузочная запись (MBR) % Основная загрузочная запись (MBR) — это устаревшая форма разделения загрузочного сектора. Это первый сектор диска, который содержит информацию о том, как разбит диск. Он также содержит загрузчик, который сообщает вашей машине, как загрузить ОС. % MBR состоит из трех частей: diff --git a/jtc5-05-workshop.tex b/jtc5-05-workshop.tex index 260c538..913ed3a 100644 --- a/jtc5-05-workshop.tex +++ b/jtc5-05-workshop.tex @@ -1,12 +1,12 @@ -\documentclass[../j-spec.tex]{subfiles} +\documentclass[j-spec.tex]{subfiles} \usepackage{spreadtab} \begin{document} \setcounter{section}{4} -\section{Семинар: обработка исключений} +\section{Семинар: тонкости работы} \subsection{Инструментарий} \begin{itemize} -\item \href{https://docs.google.com/presentation/d/}{Презентация} для преподавателя, ведущего семинар; +\item \href{https://docs.google.com/presentation/d/1zW_qrNiH5xH0jRZApzWQWH3eC_qJuzRJAPPsnpNDSig}{Презентация} для преподавателя, ведущего семинар; \item \href{https://drive.google.com/file/d/1LWyE8aEy4-1gsognqhXIXwDcoLviVge4/view}{Фон} GeekBrains для проведения семинара в Zoom; \item JDK любая 11 версии и выше; \item \href{https://www.jetbrains.com/idea/download}{IntelliJ IDEA Community Edition} для практики и примеров используется IDEA. @@ -31,15 +31,21 @@ \hline @ Quiz & 5 & @ 6-18 & @ Преподаватель задаёт вопросы викторины, через 30 секунд демонстрирует слайд-подсказку и ожидает ответов (6 вопросов, по минуте на ответ) \\ \hline - @ Рассмотрение ДЗ лекции & 10 & @ 19-23 & @ Преподаватель демонстрирует свой вариант решения домашнего задания с лекции, возможно, по предварительному опросу, демонстрирует и разбирает вариант решения одного из студентов \\ + @ Рассмотрение ДЗ лекции & 10 & @ 19-27 & @ Преподаватель демонстрирует свой вариант решения домашнего задания с лекции, возможно, по предварительному опросу, демонстрирует и разбирает вариант решения одного из студентов \\ \hline - @ Вопросы и ответы & 10 & @ 24 & @ Преподаватель ожидает вопросов по теме прошедшей лекции, викторины и продемонстрированной работы \\ + @ Вопросы и ответы & 10 & @ 28 & @ Преподаватель ожидает вопросов по теме прошедшей лекции, викторины и продемонстрированной работы \\ \hline - @ Задание 1 & 30 & @ 25-35 & @ Сквозное задание, состоящее из объяснений в 6 пунктах, обязательных к исполнению. Всё задание выдаётся сразу целиком и является неделимым. \\ + @ Задание 1 & 10 & @ 29-33 & @ Сохранение состояния приложения между запусками \\ \hline - @ Перерыв (если нужен) & 5 & @ 36 & @ Преподаватель предлагает студентам перерыв на 5 минут (студенты голосуют) \\ + @ Задание 2 & 15 & @ 34-37 & @ Загрузка состояния приложения при запуске \\ \hline - @ Задание 2 & 40 & @ 37-49 & @ Сквозное задание, состоящее из объяснений в 6 пунктах, обязательных к исполнению. Всё задание выдаётся сразу целиком и является неделимым. \\ + @ Перерыв (если нужен) & 5 & @ 38 & @ Преподаватель предлагает студентам перерыв на 5 минут (студенты голосуют) \\ +\hline + @ Задание 3 & 10 & @ 39-42 & @ Работа с текстом (автоматизированный поиск и замена текста в файле или группе файлов) \\ +\hline + @ Задание 4 & 15 & @ 43-46 & @ Работа с файловой системой \\ +\hline + @ Задание 5 (необязат) & 20 & @ 47-49 & @ Описание часто недостающих механик операционной системы по «массовой» работе с файлами \\ \hline @ Домашнее задание & 5 & @ 50-51 & @ Объясните домашнее задание, подведите итоги урока \\ \hline @@ -282,7 +288,7 @@ private static boolean isInFile(String fileName, String search) throws IOExcepti \subsubsection*{Вопросы и ответы} \begin{itemize} -\item \textbf{Ценность этапа} Задать задание для самостоятельного выполнения между занятиями. +\item \textbf{Ценность этапа} Вовлечение аудитории в обратную связь, пояснение неочевидных моментов в материале лекции и другой проделанной работе. \item \textbf{Тайминг} 5-15 минут \item \textbf{Действия преподавателя} \begin{itemize} @@ -297,7 +303,7 @@ private static boolean isInFile(String fileName, String search) throws IOExcepti \subsubsection*{Задание 1} \begin{itemize} \item \textbf{Ценность этапа} Сохранение состояния приложения между запусками -\item \textbf{Тайминг} 15-20 мин +\item \textbf{Тайминг} 10-15 мин \item \textbf{Действия преподавателя} \begin{itemize} \item Выдать задание студентам; @@ -504,7 +510,7 @@ void printContents("."); \subsubsection*{Задание 5 (необязательное)} \begin{itemize} \item \textbf{Ценность этапа} Описание часто недостающих механик операционной системы по «массовой» работе с файлами. -\item \textbf{Тайминг} 15-20 мин +\item \textbf{Тайминг} 20-25 мин \item \textbf{Действия преподавателя} \begin{itemize} \item Выдать задание студентам; diff --git a/settings/main-style-preamble.tex b/settings/main-style-preamble.tex index 9ae0f4b..fae3aa9 100644 --- a/settings/main-style-preamble.tex +++ b/settings/main-style-preamble.tex @@ -21,6 +21,7 @@ \usepackage{amsmath} \usepackage{spreadtab} \usepackage{svg} +\usepackage{afterpage} \newcommand{\tabitem}{~~\llap{\textbullet}~~} @@ -66,10 +67,10 @@ } \geometry{ - left=2cm, - right=1cm, - top=2cm, - bottom=2cm + lmargin=1.5cm, + rmargin=2.5cm, + tmargin=2.5cm, + bmargin=2.5cm, } \setlist{nolistsep} diff --git a/sources-draft/notebook.ipynb b/sources-draft/notebook.ipynb index 63f4e15..6e23a1e 100644 --- a/sources-draft/notebook.ipynb +++ b/sources-draft/notebook.ipynb @@ -1483,7 +1483,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 1, "metadata": { "vscode": { "languageId": "java" @@ -1813,7 +1813,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": { "vscode": { "languageId": "java" @@ -1837,13 +1837,21 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": { "vscode": { "languageId": "java" } }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1, 2, 3, 4, 5, 6, 7, 8, 0, 8, 7, 6, 5, 4, 3]\n" + ] + } + ], "source": [ "int[] ar00 = new int[15];\n", "final int DIGIT_BOUND = 48;\n", @@ -1958,7 +1966,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": { "vscode": { "languageId": "java" @@ -2016,16 +2024,49 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "metadata": { "vscode": { "languageId": "java" } }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "./file_7.txt\n", + "./file_6.txt\n", + "./file_4.txt\n", + "./file_5.txt\n", + "./file_1.txt\n", + "./.DS_Store\n", + "./save1.out\n", + "./save0.out\n", + "./file_0.txt\n", + "./Icon\n", + "./file_2.txt\n", + "./file_3.txt\n", + "./FILE_OUT.txt\n", + "./Sample.zip\n", + "./Makefile\n", + "./notebook.ipynb\n", + "./Main.java.new\n", + "./Main.java\n", + "./save.out\n", + "./test.txt\n", + "./Main.class\n", + "./cat.txt\n", + "./file_8.txt\n", + "./bytes.txt\n", + "./file_9.txt\n", + "./sources-draft.iml\n" + ] + } + ], "source": [ "int count = 0;\n", - "File path = new File( new File(\".\").getCanonicalPath() );\n", + "File path = new File( new File(\".\").getPath() );\n", "File[] dir = path.listFiles();\n", "for (int i = 0; i < dir.length; i++) {\n", " if (dir[i].isDirectory()) continue;\n", @@ -2069,7 +2110,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 9, "metadata": { "vscode": { "languageId": "java" @@ -2105,7 +2146,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 10, "metadata": { "vscode": { "languageId": "java" @@ -2146,7 +2187,7 @@ "mimetype": "text/x-java-source", "name": "Java", "pygments_lexer": "java", - "version": "11.0.17+7-LTS" + "version": "11.0.15.1+2-LTS" }, "orig_nbformat": 4 },