Обучение 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 Что такое сокет 00:09:10
2 теста
31 чел. ★ 4.7 Done
  В этой серии видеоуроков мы подробно разберём принципы работы клиент-серверных программ на основе сокетов и напишем небольшую демонстрационную программу.

Рекомендую ознакомиться со статьёй:
http://qaru.site/questions/12999/what-is-the-difference-between-a-port-and-a-socket
Отчёт отправил: 9913. vip Выполнено за 1 час. 50 мин. [Показать отчёт]
Научился: Звук отличный.Видимо Витольдович микрофон поменял или студию организовал - это радует. Про квартиры в доме такую трактовку я еще не слышал - неплохая аналогия. Замечательно. Вот за что люблю Витольдовича так за его способность с чем-то ассоциировать изучаемый материал - вот про MVC со столовой на всю жизнь запомнил - как в столовую так про Витольдовича и MVC вот тут правильная трактовка socket настоятельно рекомендую прочитать http://qaru.site/questions/12999/what-is-the-difference-between-a-port-and-a-socket т.к. это очень важная базовая концепция для всего клиент-серверного программирования 
Сложности: как сисадмин в первом поколении первый раз слышу такое название УДП протокол вроде бы Ю-ДИ-Пи было всегда хотя я сам немец - так всегда читаю В видео есть на 4мин. оговорка - для создания сервера нужен порт - скорее не так - для подключения клиента нужно указать порт и адрес сервера. А вот тот самый серверный порт уже прописан на сервере и открыт для клиентов тем самым серверный ПО клиент при коннекте договаривается с сервером как они будут общаться что бы не мешать друг-другу - положительный исход этой договоренности и будем считать установившейся сессией. Соответственно сервер согласно работе своего ПО назначает клиенту порт (его и будем называть сокет) а клиент в свою очередь согласно уже своего ПО подхватывает этот порт (созданный сокет) и осуществляет транспортный поток клиент-сервер. Кстати простым примером будем например SQL-server а клиент командный интерпретатор SQL (на одной машине). Первичное соединения (нужен IP(localhost) порт и логин пароль для авторизации - хотя и не всегда), далее клиент создает SQL запрос - сервер его выполняет и шпуляет клиенту ответ - на дескоть забери негодяй :))) Сокеты и порты это термины из двух разных доменов: "порт" - это концепция из сетей TCP/IP, "сокет" - это API (программирование). "Сокет" создается (в коде), беря порт, имя хоста или сетевой адаптер и объединяя их в структуру данных, которую вы можете использовать для отправки или получения данных. Относительная терминология TCP/IP, которую я предполагаю, подразумевает этот вопрос. В условиях неспециалиста: PORT - это номер телефона определенного дома в определенном почтовом индексе. Почтовый код города можно рассматривать как IP-адрес города и всех домов в этом городе. SOCKET, с другой стороны, больше похож на установленный телефонный звонок между телефонами пары домов, разговаривающих друг с другом. Эти звонки могут быть установлены между домами в одном городе или двумя домами в разных городах. Это тот временный установленный путь между двумя телефонами, говорящими друг с другом, что является SOCKET.  
2 Простейший сервер 00:07:20
2 теста
22 чел. ★ 5 Done
  На этом уроке мы создадим простейший сервер, который будет принимать подключения от клиентов и проверим его работу из  телнета и браузера.
Отчёт отправил: 9913. vip Выполнено за 2 час. 42 мин. [Показать отчёт]
Научился: 1. Создать проект ClientServerJava в среде разработки которую вы выберете сами 2. Подключить необходимые для работы с сетью и вводом выводом библиотеки 3. Создать Socket 4. Запустить и затестировать работу созданного сервера через браузер и любой telnet client 5. Прислать результат работы программы Отличная тема # мне нравится # продолжаем дальше 
Сложности: вспомнить как Eclipse запустить и как в нем работать у кого с памятью так же как и у меня ссылка в описании: https://youtu.be/zvoctmC86qk telnet и запустил на виртуальной машине для чистоты эксперимента 
3 Автоответчик 00:10:27
1 тест
21 чел. ★ 4.9 Done
  На этом слайде мы напишем сервер-автоответчик, который всем клиентам будет отправлять одно и тоже сообщение.
Отчёт отправил: 9913. vip Выполнено за 1 час. 0 мин. [Показать отчёт]
Научился: Продолжаем работу с нашим приложением. Расширим функционал: 1. Создадим на серверной части нашего приложения клиентский сокет (clientSocket). 2. Проверить работу сервера в режиме telnet клиент и в браузерном варианте 3. Реализовать функционал вывода целых строк 4. Зациклить работу нашего одноразового сервера и реализовать отображение количества созданных сессей  
4 Правильный заголовок 00:06:26
2 теста
13 чел. ★ 5 Done
  На этом дополнительном слайде мы сформируем правильный HTTP-ответ,
который будет выдавать наш сервер, чтобы даже привередливые браузеры смогли бы его отобразить.

Отчёт отправил: 9913. vip Выполнено за 11 час. 26 мин. [Показать отчёт]
Научился: Немного пришлось откатится обратно довыполнить вновь появившейся урок 
Сложности: URL "https://www.videosharp.info/": HTTP/1.1 200 OK Server: nginx Date: Sat, 08 Dec 2018 07:50:53 GMT Content-Type: text/html; charset=utf-8 Transfer-Encoding: chunked Connection: keep-alive Keep-Alive: timeout=60 Set-Cookie: PHPSESSID=7cmvp82b7cclak617ft0kgq607; expires=Mon, 07-Jan-2019 07:50:53 GMT; path=/ Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache ___________ ip сервера: 46.22.211.146 
5 Как хорошо уметь читать! 00:10:20
1 тест
18 чел. ★ 5 Done
  На этом слайде мы создадим клиента, который сможет прочитать сообщение от сервера.
Отчёт отправил: 9913. vip Выполнено за 1 час. 29 мин. [Показать отчёт]
Научился: 1. Создать новый класс Client 2. Создать клиентский сокет - clientSocket. Прописать host и port 3. Запустить сервер и приложение убедится что все работает 4. Дописать код побайтового считывания данных с сервера в массив и проверить работу приложения в этом режиме 5. Создать reader строково считывания 6. Доработать серверную часть в части вывода сообщений и проверить работу в браузере  
6 Клиент-серверный диалог 00:14:14
15 чел. ★ 5 Done
  На этом слайде мы обеспечим полноценное общение между клиентом и сервером через сокет
Отчёт отправил: 9913. vip Выполнено за 51 мин. [Показать отчёт]
Научился: 1. Продублировать функционал передачи сообщений с сервера в клиента 2. Аналогично сделать чтение и отправку сообщений на серверной стороне 3. Исправить все ошибки и протестировать одновременную работу двух приложений 4*. Ответить на вопрос зачем нужен "\n" при передаче сообщений и почему в клиенте и браузере разный ответ по длине строки  
7 Экспериментальный сервачок 00:12:25
1 тест
14 чел. ★ 5 Done
  На этом уроке мы ещё раз построчно и подробно разберём написанные программы и поэкспериментируем с "медленным" сервером. Самостоятельное задание - написать клиент-серверную игру "Угадай число".
Отчёт отправил: 9913. vip Выполнено за 1 день 14 час. 14 мин. [Показать отчёт]
Научился: Пройтись по написанному коду как клиента так и сервера и тщательно его проанализировать. Сделать задержку ответов со стороны сервера через Thread.sleep() Запустить клиента и сервер в командной строке и посмотреть с какой задержкой сервер обрабатывает сообщения клиента Выполнить домашнее задание  
Сложности: маханул в задержку число 50 000 пришло долго ждать Причина ошибок в уроке вероятно в незакрытых сокетах от предыдущих экспериментов Кстати так и не был дан правильный ответ - почему же все-таки длина в консоли и в браузере различная 
8 Техническое задание 00:06:25
11 чел. ★ 5 Done
  Мы познакомились с принципом работы сокетов.
Теперь самое время создать какую-нибудь простую клиент-серверную программку.
На этом видео мы сформулируем техническое задание.
Попробуйте самостоятельно написать программу по ТЗ.
Отчёт отправил: 9913. vip Выполнено за 12 час. 49 мин. [Показать отчёт]
Научился: Изучить техническое задание (ТЗ) по реализации единого клиент-серверного приложения калькулятор с параметрами командной строки. *Попытаться самостоятельно написать универсальный класс для работы программы с двумя конструкторами под клиента и сервера согласно ТЗ  
Сложности: возможно вероятно сделать не два конструктора а один параметризированный с условием при котором он вызывается 
9 Основной алгоритм 00:13:05
11 чел. ★ 5 Done
  На этом слайде мы напишем два алгоритма в одной программе: для сервера и для клиента.
Отчёт отправил: 9913. vip Выполнено за 1 день 4 час. 47 мин. [Показать отчёт]
Научился: Установил новую версию JIDEA ибо ecplipse заколебал своей деревянностью - может быть конечно я его не умею готовить :)) Реализовал весь функционал предложенный в уроке  
10 Скелет телефона 00:03:37
1 тест
11 чел. ★ 5 Done
  На этом коротком слайде мы создадим метод calculate() и очень быстро набросаем скелет класса Phone, используя возможности кодогенерации Intellij Idea.
Отчёт отправил: 9913. vip Выполнено за 5 час. 26 мин. [Показать отчёт]
Научился: Хорошая метода обучения. Показать заглушки а реализацию оставить для самостоятельного освоения. Отличный подход +100500 Евгению Витольдовичу за такие уроки. Побольше бы в этом стиле....! 
Сложности: смог осилить дописать все классы побил все ошибки но не смог осилить работу программы - она запускается и выдает пустой результат будем разбираться как продвинуть это все дальше 
11 Универсальный сокет 00:15:27
11 чел. ★ 5 Done
  На этом слайде мы создадим все методы универсального сокета в классе Phone.
Протестируйте программу в разных режимах.

Придумайте, какую ещё клиент-серверную программу можно написать.
Отчёт отправил: 9913. vip Выполнено за 1 день 22 час. 16 мин. [Показать отчёт]
Научился: 1. Описать клиент серверные переменные в классе и переменные ввода вывода 2. Написать метод Phone для сервера 3. Написать метод Phone для клиента 4. Написать метод Accept() 5. Создать вспомогательный метод createStreams(). Написать reader и writer для него 6. Добавить метод в конструктор клиента и accept сервера 7. Дописать метод readLine() 8. Дописать метод writeLine() 9. Реализовать метод close() 10. Запустить Server с параметрами в IDEA 11. Запустить клиента из командной строки 12. Исправить ошибки проверить работу программы Отличная прекрасная реализация  
Сложности: Не догадался в предыдущем уроке когда написал самостоятельно все методы что нужно при запуске программы параметры прописывать Пути до классов у меня немножко не такие в папке программы почему-то получились (\production\socket_java\*.class) 
12 ФИНАЛЬНЫЙ УРОК без видео
1 тест
11 чел. ★ 5 Done
  Оставьте отзыв об этом миникурсе и отчитайтесь за самостоятельное задание.
Отчёт отправил: 9913. vip Выполнено за 1 день 2 час. 0 мин. [Показать отчёт]
Научился: Хорошо поработали с клиент-серверными приложениями 
Сложности: не удалось скрестить клиента на C# с сервером на Java 
Видеообзор: MQABWHmbIIs
13 FREE VIP. Многопоточность 00:11:34
10 чел. ★ 4.6 Done
  На этом слайде мы поговорим о многопоточности, рассмотрим несколько примеров, кода имеет смысл разделять задачу на потоки, а когда нет. На следующих слайдах мы напишем простой многопоточный сокет для сервера на языке Java
Отчёт отправил: 9913. vip Выполнено за 1 день 13 час. 45 мин. [Показать отчёт]
Научился: Из-за чурок и водки по соображениям политкорректности и лояльного отношения к представителям других наций по предложению Дмитрия Синицына вынужден переделать урок 
Сложности: Сложно разобраться с одно и многопоточностью т.к. для ИИ это непосильная задачка. Будем пытаться создать это на примере в конце прохождения курса. 
14 VIP. Два потока 00:10:49
1 тест
9 чел. ★ 5 Done
  На этом слайде мы создадим простейшую программу с двумя потоками.
Отчёт отправил: 9913. vip Выполнено за 21 час. 6 мин. [Показать отчёт]
Научился: создал класс Worker2 по образу и подобию Worker1 создал экземпляр этого класса Worker2 three=new Worker2(); и запустил его отдельным потоком Thread thread2=new Thread(three); 
Сложности: что-то мне Java все больше C# нравится (какой-то он оловянный - видимо старое литье) чувствую съеду на нее магия чисел 13 урок 13 числа как бы не сглазить как в прошлый раз начинаю отходить от вируса после болезни начинаю разгоняться - видимо хорошо пролили 
15 VIP. Синхрофазатрон 00:14:00
9 чел. ★ 5 Done
  На этом слайде мы создадим коллизию и узнаем, как от неё избавиться.
Отчёт отправил: 9913. vip Выполнено за 15 час. 53 мин. [Показать отчёт]
Научился: За синхронизировали потоки. Коллизия не совсем то как представлено в уроке. Коллизия — это столкновение норм права, регулирующих одни и те же общественные отношения. При коллизии действует закон, вступивший в силу позже (при прочих равных, то есть при одинаковой юридической силе). В математическом моделировании — столкновение объектов = вот откуда синхрофазотрон (ускоритель частиц - самый мощный на текущий момент циклический это БАК  Large Hadron Collider LHC, есть еще линейные - ну это из серии запуска Мюнхаузена на луну из пушки) получаем. В базах данных коллизия — событие, когда один пользователь запускает на выполнение транзакцию по изменению содержимого таблицы, а другой — на выборку из неё данных. Хорошая новость по Java - I IDEA умеет преобразовывать русский набор в правильный контекст - в отличии от VS-которая этого не умеет 
Сложности: чем отличается synchronized от volatile - тем: Ключевое слово volatile указывается для поля для того, чтобы указать компилятору, что все операции присвоения этой переменной и все операции чтения из неё должны быть атомарными . volatile - ограничивает одновременный доступ на переменную synchronized - синхронизирует изменение переменной между процессами имеющими к ней доступ все бы было бы одинаково если бы не наше надрашивание count++ которое состоит из следующей операции count=count+1; пока мы взяли count подсчитать - другой поток туда успел значение новое присвоить. И мы уже это новое присвоенное значение складываем - вот вам и косяк. В других ситуациях synchronized и volatile приведут к одинаково правильному результату. Опять же все зависит от контекста применимости в конкретном случае. Программа работает медленнее из-за того что необходимо время для проведения синхронизации Долой параллелизм и супекомпьютеры! Да здравствует MSDOS 6.2! Магия чисел 14 урок 14.12.2018 
16 VIP. Функциональное потокообразование 00:04:52
2 теста
9 чел. ★ 5 Done
  На этом коротком слайде мы узнаем, как создать поток через функциональное программирование.
Отчёт отправил: 9913. vip Выполнено за 1 день 6 час. 35 мин. [Показать отчёт]
Научился: как сказали бы дети - Что это было? только сел разложился начал мыслить - и тут бах и вторая смена 
Сложности: Синтаксический сахар - пока не понятно как его есть не будем нарушать традицию 15 урок 15.12.2018 
17 VIP. Мультики на сервере 00:22:02
1 тест
9 чел. ★ 5 Done
  На этом слайде мы встроим многопоточность в клиент-серверную программу Socketor и продемонстрируем достигнутый эффект.
Отчёт отправил: 9913. vip Выполнено за 4 час. 29 мин. [Показать отчёт]
Научился: Классный курс В ознакомительных целях для тех кто в первый раз самое-то Непонятно пока куда применить накопленные знания - ну пусть полежат в уголках мозга подумают над своим поведением Мультипоточность - это когда мотоцикл один а покататься всем хочется 
Сложности: не совсем понятен был механизм геттера для серверного сокета Магия чисел 16 урок 16.12.2018 во как! 
18 VIP. Динамичная многопоточность 00:30:24
9 чел. ★ 5 Done
  На этом заключительном видеоуроке мы познакомимся с другим способом создания многопоточного сервера.
Если на предыдущем уроке у нас "крутилось" несколько копий одной программы,
то теперь мы будем создавать новый поток при каждом подключении клиента.

Сравните оба варианта и напишите в отчёте, какой подход вам больше понравился и почему.
Отчёт отправил: 9913. vip Выполнено за 10 час. 2 мин. [Показать отчёт]
Научился: Магия чисел 16 урок крайний в этом курсе 16.12.2018г. успешно окончен. Согласен с лектором в полночь начинается все самое интересное в программировании особенно когда заснул на клавиатуре. Всем спасибо. Всем удачи! 
Сложности: Не хорошая тема в программировании мусор плодить с потоками - надо бы этого избегать - это будет хорошая практика в программировании Хочу зафиналить данный курс отдельным видео если появится время обязательно вернусь 
  Итого:   18 видеоуроков 3 час. 22 мин.
15 тестов
9 чел. ★ 4.96  
  Финалисты:   Yefim,   Chip,   Иван Воронин,   Tekashnik,   Александр,   vip,   Айдар,   Dmitry Sinitsin,   Anatoli .

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





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

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

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

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


Научился: Уже изучал ранее сокеты, всё-равно было интересно. Курс классный, рекомендую его всем для прохождения!
Трудности: Заплатил за этот отзыв 50 байт. Идём дальше!



Научился: Клиентский метод .getInputStream().read() читает один символ, тогда как класс-обёртка для чтения данных - InputStreamReader способен читать уже строку. Применили цепочку из создания объектов, на вершине которой классы BufferedReader и BufferedWriter, способные к чтению и созданию полных строк, которые передавались через сетевой протокол между клиентом и сервером. Приложение для обмена, обработки Сервером полученного, и выведения на экран результата отправки-обработки-приёма реализовывалось как в рамках одного класса (это при том, что запуск доступен в двух ролях Сервера или Клиента), так и в двух классах. Первый класс Socketor имеет точку входа в программу, отвечает за выбор роли, в которой запускается сокет (сервером или клиентом). При каждом запуске создаёт новый экземпляр класса и в зависимости ОТ КОЛИЧЕСТВА принятых от пользователя аргументов запускает: метод runServer в роли Сервера или метод runClient в роли Клиента. =============== Метод runServer создает СОКЕТ - новый экземпляр класса Phone принимая аргументом номер порта для работы. В бесконечном цикле запускается метод приёма входящих пакетов извне. В первой полученной строке записывает строковую переменную a. Во второй полученной строке записывает строковую переменную b. В целочисленную переменную записывает результат работы метода калькуляции, принимающего аргументами (все строкового типа) знак математической операции, а и b - числа для математической операции. О полученном решении создаётся строковая переменная, которая: - выводится на экран в консоли Сервера методом System.out.println - передаётся Клиенту для вывода на экран методом phone.writeLine После вывода на экран соединение с Клиентом закрывается и Сервер возвращается циклом к ожиданию нового входящего соединения. В этом же цикле реализована проверка деления на ноль. ================ Метод калькуляции парсит в целые числа полученные строковые аргументы, и в зависимости от типа операции возвращает целочисленные результат расчётов. ================ Метод runClient принимает строковые аргументы: - сетевой адрес - номер порта - а и b - числа для математической операции. Создаётся экземпляр сокета с двумя аргументами (адрес и порт). Сокет Клиента построчно отправляет а и b - числа для математической операции. Затем с помощью метода readLine() Клиент получает результат вычислений и выводит его в консоль на экран. ################ Второй класс Phone занимается реализацией сокетов Сервера и Клиента. Здесь же составлена матрёшка экземпляров классов, способных обрабатывать строковые символы и целые строки из сетевого трафика. Во всех методах класса Phone применен отлов ошибок try-catch