Си шарп с нуля

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

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

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

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

После взноса  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:12:30
22 чел. ★ 4.6 Done
  На этом уроке мы разработаем план базы данных турнирной таблицы
Отчёт отправил: 2773. Никита Выполнено за 29 мин. [Показать отчёт]
Научился: Отличный урок. Я решил добавить еще в команду поле Flag, чтобы хранить картинку с изображением флага (путь к картинке будет). В дальнейшем посмотрим, может уберу это поле, если не получится реализовать. Я команды назвал не Commands, а Teams. Нарисовал схему в онлайн SQL Designer'e. 
Сложности: Сложностей не возникло. 
2 FREE Установка Postgresql 00:12:38
20 чел. ★ 4.7 Done
  На этом уроке мы установим СУБД postgresql

Отчёт отправил: 2773. Никита Выполнено за 12 мин. [Показать отчёт]
Научился: Отлично! Установил PostgreSQL. Ни разу с ним не работал, вот узнаю, что это за "зверь" такой. 
Сложности: Сложностей не возникло, установка прошла очень быстро. 
3 FREE Создание базы данных 00:04:48
16 чел. ★ 4.8 Done
  На этом уроке мы создадим базу данных в psql
и увидим ее наличие в pgAdmin
Отчёт отправил: 2773. Никита Выполнено за 6 мин. [Показать отчёт]
Научился: Создавать и подключаться к БД в PostgreSQL. 
Сложности: Сложностей не возникло! 
4 FREE Таблица Groups: коварный id 00:11:45
1 тест
16 чел. ★ 4.6 Done
  На этом уроке мы создадим и заполним таблицу Groups,
а также рассмотрим работу с типом serial
Отчёт отправил: 2773. Никита Выполнено за 22 мин. [Показать отчёт]
Научился: Узнал про тип поля serial (целое с автоувеличением), очень удобно его использовать. Группы получилось добавить. 
Сложности: Сложностей не возникло, все понятно! 
5 FREE Таблица Commands - пас кодировками 00:09:43
16 чел. ★ 4.7 Done
  На этом уроке мы создадим таблицу Commands и рассмотрим особенности работы
с кодировками в psql
Отчёт отправил: 2773. Никита Выполнено за 28 мин. [Показать отчёт]
Научился: Поработал с кодировкой. Хорошо, когда знаешь, как исправить эти кракозябры) Добавил все команды в группах. 
Сложности: Сложностей не возникло. 
6 FREE Таблица Players - игроки из pgAdmin 00:09:22
16 чел. ★ 4.6 Done
  На этом уроке мы создадим таблицу средствами pgAdmin
Отчёт отправил: 2773. Никита Выполнено за 31 мин. [Показать отчёт]
Научился: Создали таблицу с Игроками и немного ее заполнили данными. 
Сложности: На первом скрине видно, что когда я пытаюсь "напролом", скажем, прописать значения в БД с указанием названий столбцов выдается ошибка, мол "колонка id_team или отношение Players не существует". Странно довольно-таки. Я добавлял данные таким способом (указывал имена колонок и значения) в предыдущие 2 таблицы все нормально было. Хотя колонка id_team в таблице Players есть (скриншот 2). Когда я убрал названия колонок, а просто прописал VALUES и указал значения для добавлений, все отработало. 
7 FREE Остальные таблицы и замена на поле 00:11:45
15 чел. ★ 4.9 Done
  На этом уроке мы реорганизуем таблицу Games и создадим
в postgresql все остальные таблиц
Отчёт отправил: 2773. Никита Выполнено за 28 мин. [Показать отчёт]
Научился: Вместо типа datetime нужно использовать тип timestamp  (он отражает временной интервал) - справка помогает :). Также поля Action_time сделал тип time, а не char и под поле Action выделил тип text (мало ли, что там будет храниться). Возник вопрос, а ссылки-связи с другими таблицами вообще как, надо бы по-хорошему делать (Foreign Keys (внешние ключи) прописывать при создании таблиц) ? 
Сложности: Сложностей не возникло, логику понял - зачем нужно было выделять отдельную таблицу. 
8 FREE Подключение php к postgresql 00:13:22
12 чел. ★ 4.6 Done
  На этом уроке мы подключим движок php  к базе postgresql


Отчёт отправил: 2773. Никита Выполнено за 4 час. 18 мин. [Показать отчёт]
Научился: Познакомился немного с синтаксисом языка (если его можно назвать языком конечно) PHP. Получилось подключиться к созданной  БД, предварительно изменив настройки php. 
Сложности: Сложностей не возникло, разве что синтаксис PHP для мало известен. 
9 FREE Команды - в массив 00:12:26
12 чел. ★ 4.6 Done
  На этом уроке мы получим выборки групп и команд по группам,
и выведем результат в виде ассоциированного массива
Отчёт отправил: 2773. Никита Выполнено за 56 мин. [Показать отчёт]
Научился: Все отлично получилось вывести, использовал два запроса SELECT. Все таки запрос с JOIN'ом как-то более мне понятен, я уже к нему привык) Распишу алгоритм работы SELECT c JOIN'ом: сначала указываем поля для выборки обеих таблиц (я использовал псевдонимы для обращения к именам таблиц), далее пишем тип соединения (внешнее (левое, правое), внутреннее), в данном случае внутреннее, а потом пишем ключ - критерий, по какому столбцу будем соединять. Недаром мы использовали в таблице Team (в уроке таблица Commands) поле id_group, оно как раз и будет являться внешним ключом для таблицы Groups поля id. 
Сложности: Опять проблема в кодировке. Я когда через консоль вывел второй запрос SELECT, то пошли кракозябры. Изменил кодировку, все работает. Пробовал поменять кодировку БД (базы данных), но так и не получилось. WIN866 не ставится (я пробовал создать новую БД с заданной кодировкой). Я так понимаю, это просто проблема консоли, что неправильна кодировка отображается? Ведь в самой базе данные нормально (корректно) хранятся. 
10 FREE Представление имеем и ... используем 00:16:55
11 чел. ★ 4.5 Done
  На этом уроке мы выведем в таблицу список команд по группам
с использованием представления

Отчёт отправил: 2773. Никита Выполнено за 1 день 13 мин. [Показать отчёт]
Научился: Вывел команды по группам. 
Сложности: Фух! Я это сделал. Добавил картинки (флаги стран) же изначально я в базу данных (БД). А теперь проблема встала, как это все связать? PHP не знаю совсем, в запросах не силен. Написал запрос с JOIN - на связку таблиц групп и стран (SELECT g.id, g.name, t.country, t.flag, t.info FROM Groups g JOIN Teams t ON g.id = t.id_group;), но получилось так, что при объединении естественно вместо 8 строк (у нас же 8 групп) получилось 32 строки (8 групп по 4 команды), а как вывести правильно - не знаю. Куралесил, куралесил, но добился своего! Ура! Еще очень долго мучался с изображениями, никак не мог понять, как вывести. То кавычку не поставишь или не там переменную объявишь и все, картинка не выводится. Зато какая красота получилась :) 
11 FREE Добавляем всё! 00:08:41
10 чел. ★ 4.6 Done
  На этом уроке мы реализуем запрос INSERT с массивом данных
Отчёт отправил: 2773. Никита Выполнено за 15 мин. [Показать отчёт]
Научился: Познакомился с функцией unnest. Знал, что есть такое - чтобы добавлять в базу данных (БД) сразу целый массив. А теперь знаю, как это делается :) 
Сложности: Сложностей не было. Я заполнил таблицу с командами еще при ее создании, но я сидел и вручную прописывал значения. А тут намного удобнее. 
12 FREE Массивные игроки 00:11:38
9 чел. ★ 4.6 Done
  На этом уроке мы заполним таблицу игроков парным массивом
и "многомерным" VALUES
Отчёт отправил: 2773. Никита Выполнено за 34 мин. [Показать отчёт]
Научился: Все получилось добавить. Мне больше понравилось через массив добавлять (функция unnest). 
Сложности: Опять не хочет PostGreSQL работать. Пишет, что колонка не найдена. Пока не задал имена колонок в кавычках двойных, вставлять данные не хотел. Я еще хотел вывести объединение двух таблиц - игроков и страны, но не получилось - опять Postgre что-то не понравилось. Это вот очень сильно расстраивает. Я с таким не встречался еще, что "то колонки как будто такой нет, то еще что-нибудь". Работал с другими СУБД (SQL Server в основном и немного с MySQL) таких проблем вообще не наблюдалось. 
13 FREE Вы хорошо сохранились? 00:13:14
1 тест
9 чел. ★ 4.2 Done
  На этом уроке мы создадим дамп (резервную копию ) нашей базы данных
и восстановим ее в новую БД
Отчёт отправил: 2773. Никита Выполнено за 27 мин. [Показать отчёт]
Научился: Отличный урок! Через графический интерфейс делать резервные копии и восстанавливать базу данных привычнее, но через консоль тоже надо уметь. Спасибо за урок! 
Сложности: Сложностей не возникло, все получилось с первого раза. Help помогает :) 
  Итого:   13 видеоуроков 2 час. 28 мин.
2 теста
8 чел. ★ 4.62  
  Финалисты:   WildOrc,   Dmitry Sinitsin,   Yefim,   Никита,   Иван Воронин,   Yaroslav,   Илья,   Tom .

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





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

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

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

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


Научился: Добавлять данные в таблицу, удалять их, изменять кодировку в psgl и pgAdmin
Трудности: Прошло нормально. Немного глючил psgl не добавлял строку должен был перезапустить его и всё пошло.



Научился: создадим дамп (резервную копию ) базы данных и восстановим ее в новую БД при помощи pgAdmin а также при помощи cms