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

Формула программиста
основатель — Волосатов Евгений Витольдович
1-2-3 мая - Создай online игру!

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

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

12 миниуроков.
3 часа 38 минут.
Доступ на 15 дней.

Хочу купить!

Купить в рассрочку за мегахеши

Цена: 800 p.


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

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

Напиши, пожалуйста, отзыв об этом курсе.
Что тебе понравилось, что было сложным, что новым,
что можно было бы сделать лучше.

Ты молодец!

Какой курс ты будешь проходить следующим?
Отчёт отправил: 9567. Максим Выполнено за 5 мин. [Показать отчёт]
Научился: Повторил то, что знал о потоках и предназначении static, узнал о приоритетах потоков и Monitor 
Сложности: Ничего 
Комментарии: Этот курс, как и другие в этой серии (других я не проходил), получился просто замечательный, особенно в плане визуализации. Но, в отличии от других, в этот раз это больше замечательная заготовка (для обучения и демонстрации работы с потоками). Сейчас попытаюсь объяснить. Я заметил, что все курсы из линейки "Професишарп" связаны: после того, как в первом мы во всех подробностях рассмотрели IEnumerator, с лёгкостью использовали его во втором, для создания класса работающего с графами, который, я надеюсь, очень пригодится нам здесь для того, чтобы змейка, например, шла к ближайшему зайцу. Как бы то ни было, в этом курсе заметно, что он третий подряд. За одну неделю одному человеку практически невозможно подготовить такую обширную тему, как потоки, тем более с такой потрясающей визуализацией. Теперь о самом курсе. Если вы ничего не знаете о потоках, лучше сначала пройдите урок "Нити на кубиках" (videosharp.info/video/soft2/nr=62), так как курс называется "Професишарп" и подразумевается, что что-то мы таки знаем =) Что же мы делали на этом курсе? Как я уже сказал большую его часть заняла визуализация, но она полностью стоила того, чтобы потратить на неё столько времени, но, естественно, это не всё. Также мы довольно детально рассмотрели подводные камни, которые встречаются, когда вы хотите, чтобы один объект работал в нескольких потоках, такие как: использование ключевого слова static и механизмы для синхронизации доступа к объектам lock и Monitor. Кроме этого, мы узнали, как задавать потоку определённый приоритет, что это даёт, как прерывать потоки извне, как обрабатывать это прерывание в самом потоке и как один поток может ожидать завершения другого (но, я считаю, что на последнее было выделено мало времени). Как видите, получился с одной стороны не длинный, и с другой стороны довольно насыщенный курс, и хотя довольно много всего было рассмотрено, почти всё это основы, так сказать база, без которой возможно рассматривать потоки на более глубоком уровне; вот почему, я считаю, что то, что есть на данных момент - это замечательный шаблон, взяв который который за основу можно ещё очень много сделать. С другой стороны, я и сам не знаю, что находится на этом "более глубоком" уровне, да и есть ли он вообще, так что вполне могу ошибаться на счёт всего этого. Но, в любом случае, с нетерпением жду продолжения =) 
12 VIP. Игры со словами 01:06:32 16 чел. ★ 4.8 $
  Если есть файл из 27000 слов, то с его помощью можно сделать очень много интересного.
На уроке мы ищем палиндромы, детские слова и анаграммы.
Хорошее подспорье для игры Эрудит.
  Итого:   12 видеоуроков общей продолжительностью 3 час. 38 мин. 16 чел. ★ 4.9  
  Финалисты:   Максим Лапшинов,   Андрей Н.,   Новопашин Владимир,   Сергей Соколов,   Артём,   Елена,   Станислав,   Алексей|BrisK|Кривицкий,   Yefim,   Сергей,   Tekashnik,   Алексей Малышев,   Александр,   Sergio,   Денис,   chokayes .

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




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

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

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

Ты в любой момент сможешь отписаться от рассылки.
Научился: Составлять отзывы
Трудности: Разобраться с курсом
Курс интересный, но если честно - некоторые моменты остались для меня невыясненными. Возможно, я не изучила какую-то "предысторию" для данного курса. Как-то я ожидала от курса несколько более детального объяснения "всей магии", которая почему-то работает. Но, по крайней мере, понятно, в каком направлении двигаться, если понадобится работать с потоками. Дальше - пока перерыв. Итак за последние 1,5 недели 3 курса прошла. Нужно доводить дела до конца (как сегодня в рассылке было сказано :) ). Но есть и другие дела, которые нужно завершить до Нового года.
Научился: Созданию и управлению потоками, обработке исключений при работе потоков
Трудности: Для понимания сложным было понятие критической секции и использование lock, monior
В качестве введения в потоки этот курс вполне неплох. Вместо чтения скучных книжек мы создаем забавный симулятор питончиков, при этом практикуемся в программировании, и осваиваем потоки.