# | Название видеоурока | Видео / Тесты | Решило | Рейтинг | Доступ |
---|---|---|---|---|---|
1 |
![]() |
|
|||
Рекомендуемая литература: Отчёт отправил: 7119. Новопашин Владимир Выполнено за 15 мин. [Показать отчёт] Научился: Еще раз повторил Singleton Сложности: Ничего. Комментарии: Я Singleton я использовал при подключении к БД. Его использование уместно когда требуется один единственный объект на всю систему, когда же требуется много объектов, то использование singleton не уместно. |
|||||
2 | Singleton - Config - Final |
|
|||
Мы начинаем серию коротких уроков по созданию класса считывания данных из конфигурационного файла. Для начала мы организуем несколько конфигурационных параметров в виде констант и расположим их в основном классе Program. Отчёт отправил: 7119. Новопашин Владимир Выполнено за 5 мин. [Показать отчёт] Научился: Пока ничему. Сложности: Ничего. Комментарии: Основной недостаток - все константы находятся в коде программы и для изменения и добавления новых нужно код перекомпилирвать и вносить в него изменения. |
|||||
3 | Singleton - Config - Git init |
1 тест |
|||
На этом уроке мы про инициализируем git репозиторий для проекта, который мы создали на прошлом уроке. Систему git мы будем использовать для контроля версий наших исходников, коммититить рабочие варианты решения одной и той же задачи, да и просто дополнительная практика использования git в разработке. Отчёт отправил: 7119. Новопашин Владимир Выполнено за 3 мин. [Показать отчёт] Научился: Вспомнил уроки по git. Сложности: Ничего. Комментарии: Объявляю благодарность Евгению Витольдовичу за использовани гита в этом проекте. |
|||||
4 | Singleton - Config - Static |
|
|||
На этом уроке мы продемонстрируем, как обращаться к константам из отдельного класса. Для этого мы создадим новый класс Process(), добавим в него метод demo(), в котором реализуем вывод данных из констант класса Program(). Константы необходимо будет сделать статичными. Так же мы порефакторим имена констант, чтобы они были по стандарту ЗАГЛАВНЫМИ буквами. Отчёт отправил: 7119. Новопашин Владимир Выполнено за 20 мин. [Показать отчёт] Научился: Пока ничему . Сложности: Ничего. Комментарии: Потренировался в использовании eclipse. На следующем уроке будем использован конфигурационный файл. |
|||||
5 | Singleton - Config - Git add |
|
|||
На этом уроке мы зафиксируем очередные изменения нашей программы с помощью команды commit в git репозитории. Для начала мы посмотрим, что изменилось с последнего коммита. Добавим изменённый и новый файлы на сцену и закоммитим их в историю репозитория для фиксации очередной рабочей версии нашей программы. Отчёт отправил: 7119. Новопашин Владимир Выполнено за 5 мин. [Показать отчёт] Научился: Повторил пройденное. Сложности: Ничего. Комментарии: Добавил новый файл на сцену. |
|||||
6 | Singleton - Config - Class |
|
|||
На этом уроке мы выделим всё, что касается конфигурации в отдельный класс. Для этого мы создадим новый класс Config() и перенесём туда наши константы. Так же нам нужно будет исправить появившиеся ошибки, указав новое расположение констант. Отчёт отправил: 7119. Новопашин Владимир Выполнено за 10 мин. [Показать отчёт] Научился: Пока ничему новому. Сложности: Ничего. Комментарии: Ну вот уже лучше - отдельный класс - потом отдельный файлик или база или сайтец. |
|||||
7 | Singleton - Config - Git commit |
1 тест |
|||
На этом уроке мы заново попрактикуемся в работе с git. Вначале мы попробуем закоммитить изменения, но увидим, что новый файл не попал в коммит. Так как он не отслеживался системой git, его необходимо вначале добавить на сцену и только потом закоммитить. В дальнейшем система git будет отслеживать изменения данного файла автоматически. Отчёт отправил: 7119. Новопашин Владимир Выполнено за 5 мин. [Показать отчёт] Научился: Ничему. Сложности: Ничего. Комментарии: Интересная ситуация была рассмотрена с коммитом - в самом деле надо было сделать сначала git add. |
|||||
8 | Singleton - Config - FileReader |
1 тест |
|||
На этом уроке мы с вами доработаем класс Config(), чтобы параметры хранились и загружались из файла. Для этого создадим файл конфигурации, перенесём в него настройки программы и в классе Config() добавим метод считывания из нашего конфигурационного файла. Отчёт отправил: 7119. Новопашин Владимир Выполнено за 20 мин. [Показать отчёт] Научился: Научился читать данные из конфиг класса. Сложности: Ничего. Комментарии: Статик плох тем, что он применяется для всех экземпляров класса, а хотелось бы отдельно конфиги считывать. |
|||||
9 | Singleton - Config - Git default |
1 тест |
|||
На этом уроке мы закоммитим все наши изменения. Для начала мы создадим копию конфигурационного файла с именем config.default.txt. Это необходимо делать, чтобы небыло конфликтов из-за того, что у каждого разработчика будет своя версия config.txt для корректной работы приложения. Так же изменим значения файла config.default.txt на значения для примера, чтобы каждый смог изменить их под себя. Отчёт отправил: 7119. Новопашин Владимир Выполнено за 20 мин. [Показать отчёт] Научился: Научился тому какие должны быть дефаултные конфиги отправляемые в репозиторий. Сложности: Ничего. Комментарии: Полезное знание. Проект разрастается и это радует - потихоньку подкрадываемся к singleton. |
|||||
10 | Singleton - Config - Static field |
|
|||
На этом уроке мы поэкспериментируем с оптимизацией загрузки конфигурационного файла. Остановимся на варианте глобальной версии с передачей в другие классы в качестве параметра. Так же закоммитим наши изменения в git репозиторий. Отчёт отправил: 7119. Новопашин Владимир Выполнено за 15 мин. [Показать отчёт] Научился: Особо ничему. Сложности: Ничего. Комментарии: Наконец таки вплотную подошли к singleton. Назрела проблема создавать объект один раз, а дальше им пользоваться. |
|||||
11 | Singleton - Config - Static class |
|
|||
На этом уроке мы продолжим оптимизации, сделав всё в классе Config() статичным. Так же оптимизируем классы Program() и Process() для использования статичной версии класса Config(). После чего добавим загрузку конфига в классе Program(). Отчёт отправил: 7119. Новопашин Владимир Выполнено за 20 мин. [Показать отчёт] Научился: Подошел еще ближе к singleton. А так ничему особенному. Сложности: Ничего. Комментарии: Уже веселей. |
|||||
12 | Singleton - Config - Using pattern |
1 тест |
|||
Мы рассмотрели множество рабочих вариантов реализации, но на деле их эффективность зависела от конкретной реализации и при определённых условиях требовалась доработка. На этом уроке мы наконец реализуем шаблон проектирования: Синглтон (Singleton). Отчёт отправил: 7119. Новопашин Владимир Выполнено за 10 мин. [Показать отчёт] Научился: Создавать шаблон "Одиночка". Сложности: Ничего. Комментарии: Ура! Одиночка заработал! Я счастлив! |
|||||
13 | Singleton - Config - Cant extend |
1 тест |
|||
На этом уроке мы вынесем из класса Config() код синглтона в класс Singleton() и попробуем унаследовать его. Отчёт отправил: 7119. Новопашин Владимир Выполнено за 6 мин. [Показать отчёт] Научился: Узнал, что нельзя наследоваться от Singleton Сложности: Ничего. Комментарии: Жаль конечно, что нельзя. Потому что класс статический и так все устроено в Java , что не получается наследоваться от статического класса. |
|||||
14 | Singleton - Config - Super child |
|
|||
На этом уроке мы всё же разделим класс Config() на две логические части. Для этого мы выделим логику Синглона в отдельный класс ConfigSingleton(). Отчёт отправил: 7119. Новопашин Владимир Выполнено за 32 мин. [Показать отчёт] Научился: Научился наследовать singleton от Config. Сложности: Ничего. Комментарии: Ну этот вообще бальзам на душу. Красота да и только. |
|||||
15 | Singleton - Timer - Pattern Design |
1 тест |
|||
На этом уроке мы начинаем создание класса Секундомер() для засекания времени работы различных участков программы. Для разработки этого класса мы воспользуемся шаблоном проектирования Синглтон. Отчёт отправил: 7119. Новопашин Владимир Выполнено за 15 мин. [Показать отчёт] Научился: Потренировался создавать шаблон singleton. Сложности: Ничего. Комментарии: Я вообще использовал singleton не зная об этом. В одном из классов сделал статичную процедуру Log и потом использовал с разных мест программы, когда надо было что-то залогировать - оставался один шаг до логирования. |
|||||
16 | Singleton - Timer - Start / Click |
1 тест |
|||
На этом уроке мы продолжим создание класса Timer() при помощи шаблона синглтон. Для начала мы добавим метод start() в класс Timer() для запуска секундомера. Так же мы добавим метод click(), чтобы увидеть сколько времени прошло. Отчёт отправил: 7119. Новопашин Владимир Выполнено за 20 мин. [Показать отчёт] Научился: Добавил методы start и click Сложности: Ничего. Комментарии: Программа готова. |
|||||
17 | Singleton - Timer - Program |
|
|||
На этом уроке мы наконец добавим основной класс для нашей программы: Program() и добавим в метод Program.main() необходимый код для демонстрации работы синглтона Timer(). Отчёт отправил: 7119. Новопашин Владимир Выполнено за 17 мин. [Показать отчёт] Научился: Научился использовать Timer. Сложности: Ничего. Комментарии: Вообще прикольно засекать работу тех процессов, которые проходят очень быстро - например добавление элементов в ArrayList . |
|||||
18 | Singleton - Timer - String vs Buffer Speed |
1 тест |
|||
На этом уроке мы сравним скорость работы между String и StringBuffer. Для этого мы создадим новый класс StringSpeed() с методами runString() и runStringBuffer(). Отчёт отправил: 7119. Новопашин Владимир Выполнено за 21 мин. [Показать отчёт] Научился: Еще раз убедился, что клеить данные по строкам надо в StringBuilder Сложности: Ничего. Комментарии: На эту тему у Джоэля Спольски есть анекдот (вот полный текст статьи - http://russian.joelonsoftware.com/Articles/BackToBasics.html ): Маляр Шлемиэль подрядился красить пунктирные осевые линии на дорогах. В первый день он получил банку краски, поставил её на дорогу, и к концу дня покрасил 300 метров осевой линии. "Отлично!" сказал прораб, "быстро работаешь!" -- и заплатил ему копейку. На следующий день Шлемиэль покрасил 150 метров. "Мда, это, конечно, не так здорово, как вчера, но приемлемо." -- сказал прораб и заплатил ему копейку. На следующий день Шлемиэль покрасил 30 метров. "Всего лишь 30!" заорал прораб. "Это никуда не годится! В первый день было в десять раз больше! В чём дело?" "Ничего не могу поделать," -- говорит Шлемиэль. "Каждый день я ухожу всё дальше и дальше от банки!" |
|||||
19 | Singleton - Timer - Experiment |
|
|||
На этом уроке мы изучим класс Timer() и выделим часть кода для нового синглтона. Для этого нам понадобиться новый класс Log() который будет реализован как синглтон и заниматься логированием в консоль. Отчёт отправил: 7119. Новопашин Владимир Выполнено за 15 мин. [Показать отчёт] Научился: Научился создавать еще один класс "Одиночка" Сложности: Ничего. Комментарии: Можно еще сделать одиночку для сериализации данных по сети или передачи их по http протоколу или же на ftp сервер. |
|||||
20 | Singleton - Timer - Log class |
1 тест |
|||
На этом уроке мы разделим наш синглтон Timer() на две части: Timer() и SingleTimer(). Тот же эксперимент проведём и с классом Log(). После чего будет ясно, что лучше так не делать и вернём код в состояние на момента начала урока. Отчёт отправил: 7119. Новопашин Владимир Выполнено за 20 мин. [Показать отчёт] Научился: Поэксперементировал. Сложности: Ничего. Комментарии: Вообще тут действует принцип разумной достаточности в вопросах выделения логики, но поэкспериментировать было прикольно. |
|||||
21 | ФИНАЛЬНЫЙ УРОК |
без видео 7 тестов |
|||
Поздpaвляю! Твoя зaдaча - прoверить cебя и пpойти тест, см. вкладку "Тест". Напиши отзыв или видеообзор по этому видеокурсу. Отчёт отправил: 7119. Новопашин Владимир Выполнено за 5 дней 9 час. 49 мин. [Показать отчёт] Научился: Да как всегда - не теряться при микрофоне Сложности: Не теряться Видеообзор: AxFmc71c-wE |
|||||
22 | VIP - Singleton - Timer - Enum |
1 тест |
|||
На этом уроке мы реализуем синглтон с использованием перечислений. Для этого мы переделаем Log() из класса (class) в перечисление (enum). Тоже самое мы проделаем и с классом Timer() Отчёт отправил: 7119. Новопашин Владимир Выполнено за 20 мин. [Показать отчёт] Научился: Научился использован enum как шаблон singleton. Сложности: Ничего. Комментарии: Вообще шикарно получилось и главное ничего придумывать не надо. Видимо много народу уже на эту тему подумало. |
|||||
Итого: 22 видеоурока |
2 час. 24 мин. 18 тестов |
13 чел. | |||
Финалисты: Иван Воронин, Сергей Соколов, Станислав, Povilas Abramovicius, Sergej Šugajev, Александр, Новопашин Владимир, Tekashnik, Andrei, Dmitry Sinitsin, Yefim, Anatoli, Tom . |