Обучение программированию c#

Формула программиста

основатель — Волосатов Евгений Витольдович

Клуб формулистов - Ежемесячная подписка

Вступление в Клуб Формулистов на выгодных условиях для НОВЫХ участников.

После взноса  999  499 руб. вы получите подписку
в Клуб Формулистов на 30 дней и 256 байт для быстрого старта.
Байты используются для открытия более одного урока в день, по 50 байт за урок.

Стоимость 1 дня за первый месяц: всего 16 рублей.

Первый взнос - 499 руб./30 дней.

Через 30 дней будет списано 3,000 2,400 руб.
за продление подписки в Клуб на 30 дней + подарок 512 байт.

Так будет продолжаться каждые 30 дней, пока вы не отмените подписку.
Средства будет автоматически считываться с вашей карты.
Вы в любой момент сможете отказаться от продления Клуба.

Только ДО КОНЦА НЕДЕЛИ -
-50% скидка на первый взнос, всего 499 (вместо 999) рублей!
-20% скидка на ЕЖЕМЕСЯЧНЫЙ платёж!
Всего 2400 руб/месяц (вместо 3000 руб/месяц), или 80 руб./день - цена чашки кофе.


Стоимость 1 дня: 80 руб.

Хочу вступить!

Также есть другие варианты оплаты участия в КФ:

Билет в клуб формулистов на ...
30+ дней | 60 дней | 150 дней | 380 дней | 1000 дней

Внимание!
Стоимость участия в Клубе формулистов увеличивается 1 числа каждого месяца на 100 рублей.
При оформления подписки стоимость остаётся постоянной, пока подписка не будет отменена.







Первый взнос - 499 руб./30 дней + 500 байт.
Последующие взносы - 3,000 2400 руб./месяц + 512 байт.



Список уроков | фото | видео

# Название видеоурока Видео / Тесты Решило Рейтинг Доступ
1 FREE Singleton - Intro 00:05:31
57 чел. ★ 4.9 Done
  Рекомендуемая литература:

Отчёт отправил: 11589. Yefim Выполнено за 9 мин. [Показать отчёт]
Научился: В своей практике Singleton я не применял в классической форме, однако нечто похожее делал. Почти в каждом приложении имеются входные параметры. Довольно часто в для их задания используется специальная форма. И эта форма должна быть единственной.  
Сложности: В поисках примера, я наткнулся на приложение "Собери пазл", сделанное при прохождении на этом портале курса "Пятнашки". Так вот в нем (приложении "Собери пазл"), в качестве своей доработки я добавил пункт меню "Помощь", открывающий оригинал картинки. Помощь работает, но при этом картинка открываетcя многократно,  хотя в этом нет необходимости. Тогда я не проверил этот БАГ. Но сейчас я понимаю как в решении этой проблемы можно использовать Singleton.  
2 Singleton - Config - Final 00:06:48
45 чел. ★ 5 Done
  Мы начинаем серию коротких уроков по созданию класса
считывания данных из конфигурационного файла.
Для начала мы организуем несколько конфигурационных параметров
в виде констант и расположим их в основном классе Program.
Отчёт отправил: 11589. Yefim Выполнено за 10 час. 48 мин. [Показать отчёт]
Научился: Повторил известное: как избавиться от статика. Плюсы   - не надо писать статик при определении методов   - надо писать статик при определении переменных и применять их в нестаических методах Минус облегчается доступ к нестаическим переменным  
Сложности: Непонятно, зачем метод start()  определен как публичный. 
3 Singleton - Config - Git init 00:03:42
1 тест
45 чел. ★ 5 Done
  На этом уроке мы про инициализируем git репозиторий
для проекта, который мы создали на прошлом уроке.
Систему git мы будем использовать для контроля версий
наших исходников, коммититить рабочие варианты
решения одной и той же задачи, да и просто
дополнительная практика использования git в разработке.
Отчёт отправил: 11589. Yefim Выполнено за 43 мин. [Показать отчёт]
Научился: Вспомнил как начинать работу с Git.  
Сложности: Не было сложностей 
4 Singleton - Config - Static 00:09:39
44 чел. ★ 5 Done
  На этом уроке мы продемонстрируем, как
обращаться к константам из отдельного класса.
Для этого мы создадим новый класс Process(),
добавим в него метод demo(), в котором реализуем
вывод данных из констант класса Program().
Константы необходимо будет сделать статичными.
Так же мы порефакторим имена констант,
чтобы они были по стандарту ЗАГЛАВНЫМИ буквами.
Отчёт отправил: 11589. Yefim Выполнено за 51 мин. [Показать отчёт]
Научился: бращаться к константам из отдельного класса. 
Сложности: Не было сложностей 
5 Singleton - Config - Git add 00:02:20
42 чел. ★ 5 Done
  На этом уроке мы зафиксируем очередные изменения
нашей программы с помощью команды commit в git репозитории.
Для начала мы посмотрим, что изменилось с последнего коммита.
Добавим изменённый и новый файлы на сцену и
закоммитим их в историю репозитория для фиксации
очередной рабочей версии нашей программы.
Отчёт отправил: 11589. Yefim Выполнено за 2 час. 3 мин. [Показать отчёт]
Научился: Добавлять изменённые и новые файлы на сцену и коммитить их в историю репозитория для фиксацииочередной рабочей версии нашей программы.  
Сложности: ------------ 
6 Singleton - Config - Class 00:05:13
40 чел. ★ 5 Done
  На этом уроке мы выделим всё, что касается
конфигурации в отдельный класс.
Для этого мы создадим новый класс Config()
и перенесём туда наши константы.
Так же нам нужно будет исправить появившиеся ошибки,
указав новое расположение констант.
Отчёт отправил: 11589. Yefim Выполнено за 56 мин. [Показать отчёт]
Научился: Создавать класс Config() и переносить туда константы и исправлять появившиеся ошибки, указав новое расположение констант. . 
Сложности: ---------------- 
7 Singleton - Config - Git commit 00:02:16
1 тест
39 чел. ★ 4.9 Done
  На этом уроке мы заново попрактикуемся в работе с git.
Вначале мы попробуем закоммитить изменения,
но увидим, что новый файл не попал в коммит.
Так как он не отслеживался системой git, его необходимо
вначале добавить на сцену и только потом закоммитить.
В дальнейшем система git будет отслеживать
изменения данного файла автоматически.
Отчёт отправил: 11589. Yefim Выполнено за 29 мин. [Показать отчёт]
Научился: Попрактикщваться в работе с git.  
Сложности: ---------------  
8 Singleton - Config - FileReader 00:11:45
1 тест
39 чел. ★ 5 Done
  На этом уроке мы с вами доработаем класс Config(),
чтобы параметры хранились и загружались из файла.
Для этого создадим файл конфигурации,
перенесём в него настройки программы и
в классе Config() добавим метод считывания
из нашего конфигурационного файла.
Отчёт отправил: 11589. Yefim Выполнено за 1 час. 19 мин. [Показать отчёт]
Научился: Считывать параметры из текстового файла (ANSII) Узнал как создавать гетеры. Узнал, что среда Эклипс позволяет файл, созданый и открытый в среде, редактировать извне и при этом никак не реагировать. -----------  
Сложности: Реализовать блок finally  
9 Singleton - Config - Git default 00:04:39
1 тест
36 чел. ★ 5 Done
  На этом уроке мы закоммитим все наши изменения.
Для начала мы создадим копию конфигурационного файла
с именем config.default.txt. Это необходимо делать,
чтобы небыло конфликтов из-за того, что у каждого разработчика
будет своя версия config.txt для корректной работы приложения.
Так же изменим значения файла config.default.txt
на значения для примера, чтобы каждый смог изменить их под себя.

Отчёт отправил: 11589. Yefim Выполнено за 41 мин. [Показать отчёт]
Научился: Создавть файл с именем config.default.txt. Просматривать в Гите изменения версий  
Сложности: ---------------- 
10 Singleton - Config - Static field 00:09:57
36 чел. ★ 5 Done
  На этом уроке мы поэкспериментируем с оптимизацией
загрузки конфигурационного файла.
Остановимся на варианте глобальной версии
с передачей в другие классы в качестве параметра.
Так же закоммитим наши изменения в git репозиторий.
Отчёт отправил: 11589. Yefim Выполнено за 1 день 27 мин. [Показать отчёт]
Научился: Экспериментировать с оптимизацией загрузки конфигурационного файла.  
Сложности: ---------------------  
11 Singleton - Config - Static class 00:06:31
33 чел. ★ 5 Done
  На этом уроке мы продолжим оптимизации,
сделав всё в классе Config() статичным.
Так же оптимизируем классы Program() и Process()
для использования статичной версии класса Config().
После чего добавим загрузку конфига в классе Program().
Отчёт отправил: 11589. Yefim Выполнено за 3 час. 10 мин. [Показать отчёт]
Научился: Оптимизировать классы Program() и Process() для использования статичной версии класса Config(). 
Сложности: ------- 
12 Singleton - Config - Using pattern 00:07:54
1 тест
32 чел. ★ 5 Done
  Мы рассмотрели множество рабочих вариантов
реализации, но на деле их эффективность
зависела от конкретной реализации и при
определённых условиях требовалась доработка.
На этом уроке мы наконец реализуем
шаблон проектирования: Синглтон (Singleton).
Отчёт отправил: 11589. Yefim Выполнено за 13 час. 0 мин. [Показать отчёт]
Научился: Реализовывать шаблон проектирования: Синглтон (Singleton) для класса Config() 
Сложности: ------------------ 
13 Singleton - Config - Cant extend 00:06:23
1 тест
32 чел. ★ 5 Done
  На этом уроке мы вынесем из класса Config() код синглтона
в класс Singleton() и попробуем унаследовать его.
Отчёт отправил: 11589. Yefim Выполнено за 3 час. 10 мин. [Показать отчёт]
Научился: Почему данный способ не удался? Всё очень просто: Номер урока 13. Зато научился с помощью гита делать откат.  
Сложности: -------------- 
14 Singleton - Config - Super child 00:05:57
31 чел. ★ 5 Done
  На этом уроке мы всё же разделим
класс Config() на две логические части.
Для этого мы выделим логику Синглона
в отдельный класс ConfigSingleton().
Отчёт отправил: 11589. Yefim Выполнено за 2 час. 52 мин. [Показать отчёт]
Научился: Создавать новый класс ConfigSingleton() с наследованием класса Config() 
Сложности: ------------------------ 
15 Singleton - Timer - Pattern Design 00:08:15
1 тест
31 чел. ★ 5 Done
  На этом уроке мы начинаем создание
класса Секундомер() для засекания времени
работы различных участков программы.
Для разработки этого класса мы воспользуемся
шаблоном проектирования Синглтон.
Отчёт отправил: 11589. Yefim Выполнено за 2 дня 7 час. 3 мин. [Показать отчёт]
Научился: Реализовывать в классе Timer() логику Singleton  
Сложности: При создании нового проекта в другой папке (not default) возникают проблемы. 
16 Singleton - Timer - Start / Click 00:05:25
1 тест
30 чел. ★ 5 Done
  На этом уроке мы продолжим создание класса
Timer() при помощи шаблона синглтон.
Для начала мы добавим метод start()
в класс Timer() для запуска секундомера.
Так же мы добавим метод click(),
чтобы увидеть сколько времени прошло.
Отчёт отправил: 11589. Yefim Выполнено за 48 мин. [Показать отчёт]
Научился: Добавлять метод start() в класс Timer() для запуска секундомера и метод click()для фиксации момента окончания замера  
Сложности: ------- 
17 Singleton - Timer - Program 00:09:45
30 чел. ★ 5 Done
  На этом уроке мы наконец добавим основной
класс для нашей программы: Program()
и добавим в метод Program.main() необходимый код
для демонстрации работы синглтона Timer().
Отчёт отправил: 11589. Yefim Выполнено за 7 час. 34 мин. [Показать отчёт]
Научился: Реализовывать демонстрацию работы синглтона Timer(). 
Сложности: -------------------- 
18 Singleton - Timer - String vs Buffer Speed 00:10:58
1 тест
28 чел. ★ 5 Done
  На этом уроке мы сравним скорость работы
между String и StringBuffer.
Для этого мы создадим новый класс StringSpeed()
с методами runString() и runStringBuffer().
Отчёт отправил: 11589. Yefim Выполнено за 1 час. 22 мин. [Показать отчёт]
Научился: Сравнивать скорость работы между String и StringBuffer при создании строк. Из скриншота видно когда у кого преимущество.  
Сложности: ------------  
19 Singleton - Timer - Experiment 00:06:05
28 чел. ★ 5 Done
  На этом уроке мы изучим класс Timer()
и выделим часть кода для нового синглтона.
Для этого нам понадобиться новый класс Log()
который будет реализован как синглтон
и заниматься логированием в консоль.
Отчёт отправил: 11589. Yefim Выполнено за 1 час. 52 мин. [Показать отчёт]
Научился: Реализовывать логирование в консоль с помощью нового класса Log() по шаблону синглтона.Log() по шаблону синглтона 
Сложности: ------------ 
20 Singleton - Timer - Log class 00:08:45
1 тест
28 чел. ★ 5 Done
  На этом уроке мы разделим наш синглтон Timer()
на две части: Timer() и SingleTimer().
Тот же эксперимент проведём и с классом Log().
После чего будет ясно, что лучше так не делать
и вернём код в состояние на момента начала урока.
Отчёт отправил: 11589. Yefim Выполнено за 20 мин. [Показать отчёт]
Научился: Узнал как не надо делать. 
Сложности: --------------- 
21 ФИНАЛЬНЫЙ УРОК без видео
7 тестов
13 чел. ★ 5 Done
  Поздpaвляю!
Твoя зaдaча - прoверить cебя и пpойти тест, см. вкладку "Тест".

Напиши отзыв или видеообзор по этому видеокурсу.
Отчёт отправил: 11589. Yefim Выполнено за 43 мин. [Показать отчёт]
Научился: Шаблоны проектирования очень полезная штука. Владение ими экономит много времени и сил программисту. Не приходится заного изобретать "велосипед". "Одиночка" один из таких шаблонов, который применают, когда требутся гарантия существования только одного экземпляра класса. В данном курсе подробно рассказыватся о всех токостях его применения. Как всегда это бывает в курсах Евгени Витольдовича, практической стороне уделяется значительно больше внимания. Огромное спасибо за курс! Настоятельно рекомендую пройти этот курс всем и особенно тем, кто поставил перед собой цель стать профессионалом.  
22 VIP - Singleton - Timer - Enum 00:06:31
1 тест
28 чел. ★ 5 Done
  На этом уроке мы реализуем синглтон
с использованием перечислений.
Для этого мы переделаем Log()
из класса (class) в перечисление (enum).
Тоже самое мы проделаем и с классом Timer()
Отчёт отправил: 11589. Yefim Выполнено за 1 день 2 час. 1 мин. [Показать отчёт]
Научился: Превращать обычный класс Log() в перечисление (enum) и использовать его в качестве синглтона.  
Сложности: Правильно ли я понял: Данный вариант не гарантирует создание единственного экземпляра. 
  Итого:   22 видеоурока 2 час. 24 мин.
18 тестов
13 чел. ★ 5  
  Финалисты:   Иван Воронин,   Сергей Соколов,   Станислав,   Povilas Abramovicius,   Sergej Šugajev,   Александр,   Новопашин Владимир,   Tekashnik,   Andrei,   Dmitry Sinitsin,   Yefim,   Anatoli,   Tom .

Начинаем практику по языку C#





Если вы пришли без приглашения -
введите тысяча двадцать четыре (цифрами).
Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

После заполнения формы ты будешь подписан на рассылку «C# Вебинары и Видеоуроки», у тебя появится доступ к видеоурокам и консольным задачам.

Несколько раз в неделю тебе будут приходить письма — приглашения на вебинары, информация об акциях и скидках, полезная информация по C#.

Ты в любой момент сможешь отписаться от рассылки.


Научился: Повторил пройденное
Отличный шаблон проектирования. Много где можно использовать, уже активно им пользуюсь там где есть в этом необходимость =)


Научился: Отличный паттерн проектирования) Делал этот курс давно, сейчас просто закрываю дыры) Всем рекоменндую!"
Трудности: Придумать, что было самым сложным