Курсы на программиста

Формула программиста
основатель — Волосатов Евгений Витольдович

Бурные потоки

На этом вебинаре мы напишем игру - змейку.
Только играть в неё будем не мы, а наши потоки.
Самыми разными способами. С самыми разными выкрутасами.
Да, там будет много змеек, которые будут гоняться друг за другом.
Передавать друг-другу полезную информацию, проигрывать,
рождаться, и может быть даже размножаться :)

10 миниуроков.
2 часа 18 минут.
Доступ на 15 дней.

2,000 руб.


Для подписки на пакет необходимо авторизоваться.

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

# Название видеоурока Решило Рейтинг Доступ
1 Вступление 00:14:56 27 чел. ★ 4.9 Done
  Отчёт отправил: 9567. Максим Решено за 10 мин. [Показать отчёт]
Научился: Узнал о существовании Monitor и Interlocked 
Сложности: Ничего 
Комментарии: Всё хорошо 
2 Террариум 00:13:24 26 чел. ★ 5 Done
  Отчёт отправил: 9567. Максим Решено за 10 мин. [Показать отчёт]
Научился: Понял, зачем нужно использовать static для класса, который выполняется в нескольких потоках 
Сложности: Ничего 
Комментарии: Всё хорошо 
3 Зайчики 00:13:40 26 чел. ★ 5 Done
  Отчёт отправил: 9567. Максим Решено за 10 мин. [Показать отчёт]
Научился: Функции нужно делать как можно меньше, почему фигурные скобки нужно писать только тога, когда нужно 
Сложности: Ничего 
Комментарии: Хм, а меня учили, что их всегда нужно писать, чтобы код лучше читался, да и можно забыть, что должен быть только один оператор, написать 2+, а потом думать, почему цикл не работает =) 
4 Питонатор 00:15:34 26 чел. ★ 5 Done
  Отчёт отправил: 9567. Максим Решено за 15 мин. [Показать отчёт]
Научился: Ещё раз понял, зачем нужен static в случае с несколькими потоками (теперь на примере переменных) =) 
Сложности: Ничего 
Комментарии: Так, теперь нужно начинать разбираться, как всё это работает, а то на вебинаре только переписать успевал =) ПС: классная идея с проверкой отчётов перед уроком. А ограничение на кол-во непроверенных осталось? 
5 Поворот головы 00:20:51 26 чел. ★ 5 Done
  Отчёт отправил: 9567. Максим Решено за 20 мин. [Показать отчёт]
Научился: Передавать enum как int 
Сложности: Я всё ещё не разобрался, как всё работает, так что, ничего =) 
Комментарии: Мы почти сделали свою змейку в консоли, круто =) 
6 Поток питонов 00:17:02 26 чел. ★ 5 Done
  Отчёт отправил: 9567. Максим Решено за 15 мин. [Показать отчёт]
Научился: Повторил, зачем нужен IsBackgroung, как использовать lock и Monitor 
Сложности: Ничего 
Комментарии: Вот и потоки =) 
7 Бурная жизнь 00:14:56 26 чел. ★ 5 Done
  Отчёт отправил: 9567. Максим Решено за 15 мин. [Показать отчёт]
Научился: Ничему 
Сложности: Ничего 
Комментарии: Как я и писал, нужно, чтобы она сама в себя не закручивалась и шла к ближайшему зайцу (мы же как раз графы прошли, вот и отлично практическое применение) =) 
8 Приоритет 00:14:20 25 чел. ★ 5 Done
  Отчёт отправил: 9567. Максим Решено за 15 мин. [Показать отчёт]
Научился: Узнал, как задавать приоритет потоку 
Сложности: Ничего 
Комментарии: Приоритеты классная вещь =) 
9 Замри! 00:17:49 24 чел. ★ 4.8 Done
  Отчёт отправил: 9567. Максим Решено за 15 мин. [Показать отчёт]
Научился: Закрепил голику использования lock, повторил Abort, узнал, какие состояния бывают у потока 
Сложности: Ничего 
Комментарии: Мне кажется, нужно было сделать больший акцент на том, что когда мы прерываем поток, то внутри него может возникнуть именно ОШИБКА (если мы его прерываем не во время ожидания). Просто у когда я у себя в одной программе так делал во время выполнения sql запроса (выполнялся он долго, так что в фоновом потоке), программа не ждала, пока он выполниться и просто вырубала весь поток, в связи с чем в нём возникала ошибка. А так всё хорошо =) 
10 Смысл жизни 00:09:16 23 чел. ★ 5 Done
  Отчёт отправил: 9567. Максим Решено за 20 мин. [Показать отчёт]
Научился: Убивать змей голыми руками 
Сложности: Ничего 
Комментарии: Не совсем понял, зачем нужна эта строчка: PutScreen(head, color, aNone); в основном цикле (предыдущая голова вроде и так очищается), так что перенёс её в самый конец жизни змеи (последний шаг убийства - стереть голову) и сделал, чтобы во время умирания она не могла вертеть головой. Так, последний (на текущий момент) урок в этом курсе. Нужно написать отзыв. И так, после вебинара прошла целая ночь, вроде всё в голове уже устаканилось, сейчас попробую объективно всё это оценить =) Этот курс, как и другие в этой серии (других я не проходил), получился просто замечательный, особенно в плане визуализации. Но, в отличии от других, в этот раз это больше замечательная заготовка (для обучения и демонстрации работы с потоками). Сейчас попытаюсь объяснить. Я заметил, что все курсы из линейки "Професишарп" связаны: после того, как в первом мы во всех подробностях рассмотрели IEnumerator, с лёгкостью использовали его во втором, для создания класса работающего с графами, который, я надеюсь, очень пригодится нам здесь для того, чтобы змейка, например, шла к ближайшему зайцу. Как бы то ни было, в этом курсе заметно, что он третий подряд. За одну неделю одному человеку практически невозможно подготовить такую обширную тему, как потоки, тем более с такой потрясающей визуализацией. Теперь о самом курсе. Если вы ничего не знаете о потоках, лучше сначала пройдите урок "Нити на кубиках" (videosharp.info/video/soft2/nr=62), так как курс называется "Професишарп" и подразумевается, что что-то мы таки знаем =) Что же мы делали на этом курсе? Как я уже сказал большую его часть заняла визуализация, но она полностью стоила того, чтобы потратить на неё столько времени, но, естественно, это не всё. Также мы довольно детально рассмотрели подводные камни, которые встречаются, когда вы хотите, чтобы один объект работал в нескольких потоках, такие как: использование ключевого слова static и механизмы для синхронизации доступа к объектам lock и Monitor. Кроме этого, мы узнали, как задавать потоку определённый приоритет, что это даёт, как прерывать потоки извне, как обрабатывать это прерывание в самом потоке и как один поток может ожидать завершения другого (но, я считаю, что на последнее было выделено мало времени). Как видите, получился с одной стороны не длинный, и с другой стороны довольно насыщенный курс, и хотя довольно много всего было рассмотрено, почти всё это основы, так сказать база, без которой возможно рассматривать потоки на более глубоком уровне; вот почему, я считаю, что то, что есть на данных момент - это замечательный шаблон, взяв который который за основу можно ещё очень много сделать. С другой стороны, я и сам не знаю, что находится на этом "более глубоком" уровне, да и есть ли он вообще, так что вполне могу ошибаться на счёт всего этого. Но, в любом случае, с нетерпением жду продолжения =) 
11 ФИНАЛЬНЫЙ УРОК 23 чел. ★ 4.7 Done
  Отчёт отправил: 9567. Максим Решено за 5 мин. [Показать отчёт]
Научился: Повторил то, что знал о потоках и предназначении static, узнал о приоритетах потоков и Monitor 
Сложности: Ничего 
Комментарии: Этот курс, как и другие в этой серии (других я не проходил), получился просто замечательный, особенно в плане визуализации. Но, в отличии от других, в этот раз это больше замечательная заготовка (для обучения и демонстрации работы с потоками). Сейчас попытаюсь объяснить. Я заметил, что все курсы из линейки "Професишарп" связаны: после того, как в первом мы во всех подробностях рассмотрели IEnumerator, с лёгкостью использовали его во втором, для создания класса работающего с графами, который, я надеюсь, очень пригодится нам здесь для того, чтобы змейка, например, шла к ближайшему зайцу. Как бы то ни было, в этом курсе заметно, что он третий подряд. За одну неделю одному человеку практически невозможно подготовить такую обширную тему, как потоки, тем более с такой потрясающей визуализацией. Теперь о самом курсе. Если вы ничего не знаете о потоках, лучше сначала пройдите урок "Нити на кубиках" (videosharp.info/video/soft2/nr=62), так как курс называется "Професишарп" и подразумевается, что что-то мы таки знаем =) Что же мы делали на этом курсе? Как я уже сказал большую его часть заняла визуализация, но она полностью стоила того, чтобы потратить на неё столько времени, но, естественно, это не всё. Также мы довольно детально рассмотрели подводные камни, которые встречаются, когда вы хотите, чтобы один объект работал в нескольких потоках, такие как: использование ключевого слова static и механизмы для синхронизации доступа к объектам lock и Monitor. Кроме этого, мы узнали, как задавать потоку определённый приоритет, что это даёт, как прерывать потоки извне, как обрабатывать это прерывание в самом потоке и как один поток может ожидать завершения другого (но, я считаю, что на последнее было выделено мало времени). Как видите, получился с одной стороны не длинный, и с другой стороны довольно насыщенный курс, и хотя довольно много всего было рассмотрено, почти всё это основы, так сказать база, без которой возможно рассматривать потоки на более глубоком уровне; вот почему, я считаю, что то, что есть на данных момент - это замечательный шаблон, взяв который который за основу можно ещё очень много сделать. С другой стороны, я и сам не знаю, что находится на этом "более глубоком" уровне, да и есть ли он вообще, так что вполне могу ошибаться на счёт всего этого. Но, в любом случае, с нетерпением жду продолжения =) 
12 VIP. Игры со словами 01:06:32 5 чел. ★ 5 $
  Итого:   12 видеоуроков общей продолжительностью 3 час. 38 мин. 5 чел. ★ 4.95  
  Финалисты:   Максим Лапшинов,   Андрей Н.,   Новопашин Владимир,   Сергей Соколов,   Артём .

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




Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

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

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

Ты в любой момент сможешь отписаться от рассылки.
Научился: Использовать потоки.
Спасибо за прекрасный курс по потокам. Очень увлекательно и познавательно. Не хватило мне только информации о передаче данных из одного потока в другой. Правда мне уже удавалось это сделать в курсе "Фотошарп", где я замахнулся на использование прогресс бара в отдельном потоке. И столкнулся, что мне как-то надо передавать одну переменную в основной поток. Удалось реализовать в итоге с помощью такой строчки в новом потоке.: progressBar1.Invoke(new Action(() => progressBar1.Value = count)); Уж не знаю кому написал, но может это кого натолкнет на какую-нибудь идею.
Научился: Делать отзыв.
Трудности: Найти музыку для питончиков.
Прикольный курс. Позволяет "пощупать" потоки изнутри. Супер.
Смотреть видеозапись: https://youtu.be/Z2C90bnZg6g