# | Название видеоурока | Видео / Тесты | Решило | Рейтинг | Доступ |
---|---|---|---|---|---|
1 |
![]() |
|
|||
Наша цель - разобраться в этом фреймворке и создать рабочий проект - новую видеошколу. Каждый формулист может стать соавтором новой видеошколы. Каждый участник может написать свои строчки для проекта. И каждый из них получит незаменимый опыт по созданию реального рабочего проекта с использованием современных технологий: Yii, PHP, MySQL, Git, Bootstrap, JavaScript, jQuery, AJAX и многое другое. Отчёт отправил: 11589. Yefim Выполнено за 2 час. 34 мин. [Показать отчёт] Научился: Устанавливать OpenServer Ultimate Сложности: --- Комментарии: Были трудности с запуском OpenServer Ultimate. Но теперь все запускается. |
|||||
2 | Web - Первый кирпич сайта |
|
|||
На этом уроке мы настроим минимальные версии модулей на нашем OpenServer для дальнейшей работы. Проверим версии apache, php и MySQL. После чего мы поработаем в консоли, создав необходимый минимум. Далее мы проверим работоспособность нашего мини сайта. Отчёт отправил: 11589. Yefim Выполнено за 22 мин. [Показать отчёт] Научился: Зaпуcкать OpenServer, oткрывать кoнсоль, работать с командами: cd domains, mkdir school. Открывать нaстройки OpenServer - Дoмены Дoбавлять "localhost" Открывать чeрез брaузeр http://localhost Остaновливать сеpвеp - Ctrl+C Сложности: --- Комментарии: Все было ясно. |
|||||
3 | Git - Все ходы записываются |
|
|||
На этом уроке мы проинициализиуем локальный git репозиторий в ранее созданной папке нашего проекта school. После чего откроем нашу папку school в PhpStorm для дальнейшей работы уже в более удобной среде разработки. Создадим необходимый файл .gitignore с базовыми правилами и закоммитим наш первый коммит в локальный git репозиторий. Отчёт отправил: 11589. Yefim Выполнено за 45 мин. [Показать отчёт] Научился: Зaпуcкать phpstorm, cоздaвать .gitignore через phpstorm дoбавлять фaйлы в ручном pежимe. Сложности: Почему-то не видна папка .Git как показано в видео. Комментарии: Все ясно кроме Почему-то не видна папка .Git как показано в видео. |
|||||
4 | Composer - Установка пустоты |
|
|||
На этом уроке мы подключим фреймворк Yii через composer в консоли. Научимся получать токен репозитория git. Далее мы приступим к реализации нашего проекта, для начала модифицируем index.php, чтобы задействовать фреймворк Yii. Так же создадим конфигурационный файл для нашего проекта и передадим его как параметр при создании экземпляра веб-приложения Yii. Отчёт отправил: 11589. Yefim Выполнено за 2 час. 56 мин. [Показать отчёт] Научился: Cоздaвать токен Cоздaвать папку config и файл web.php Изменять файл index.php Сложности: Не все сразу получалось. Спасибо Ивану Воронину за помошь! Комментарии: Трудно переключаться с C# на PHP, тем более, что РНР на нуле. Звук на видео прерывался. |
|||||
5 | Controller - Точка входа программиста |
|
|||
На этом уроке мы создадим первый контроллер, который является точкой входа для нашего веб-приложения. Познакомимся с полезными ссылками и схемами жизненного цикла нашего веб-приложения. Отчёт отправил: 11589. Yefim Выполнено за 22 мин. [Показать отчёт] Научился: Создавать контроллеры Сложности: --- Комментарии: Этот урок оказался для меня на много проще предыдущего |
|||||
6 | Views - Представления начинаются |
2 теста |
|||
На этом уроке мы создадим первое представление для отображения основной странички нашего веб-приложения. Для удобного поиска ошибок мы активируем встроенную в Yii систему отладки. Отчёт отправил: 11589. Yefim Выполнено за 55 мин. [Показать отчёт] Научился: Создавать представления Сложности: --- Комментарии: Отличный дебагер |
|||||
7 | Codeception - Пошаговое тестирование |
1 тест |
|||
На этом уроке мы установим систему тестирования веб-приложений и создадим несколько тестов имитации поведения гостя на сайте. Отчёт отправил: 11589. Yefim Выполнено за 56 мин. [Показать отчёт] Научился: Тестировать веб- приложение Сложности: При попытке зaкоммитить появляется сообщение (см. скрин): Error:(1, 1) File was loaded in the wrong encoding: 'US-ASCII' Комментарии: При попытке зaкоммитить появляется сообщение (см. скрин): Error:(1, 1) File was loaded in the wrong encoding: 'US-ASCII' Как избавиться от него? |
|||||
8 | Bootstrap - Пусть будет красиво! |
|
|||
На этом уроке мы начнём оформление нашего сайта. Для этого мы установим и подключим набор инструментов bootstrap, включающий в себя HTML/CSS шаблоны оформления и JavaScript расширения. Первое что нам необходимо сделать, это добавить верхнее меню. Отчёт отправил: 11589. Yefim Выполнено за 1 час. 18 мин. [Показать отчёт] Научился: дoбавлять тpиггеры в layouts/main.php выводить контент в диве Сложности: --- Комментарии: Тяжело идет из-за незнания РНР |
|||||
9 | Menu - Богатый выбор |
|
|||
На прошлом уроке мы создали навигационную панель, на этом уроке мы разместим пункты меню на этой панели. Отчёт отправил: 11589. Yefim Выполнено за 59 мин. [Показать отчёт] Научился: Организовывать Богатый выбор Сложности: Найти ошибку, когда написал $menu() вместо $menu Комментарии: Отличный курс. |
|||||
10 | Join/login - Полёт Навигатора |
1 тест |
|||
На этом уроке мы вернёмся к ранее созданным тестам, которые провалились при проверке пунктов меню регистрации и авторизации пользователя. На этом уроке мы устраним проблемы, изза которых тесты не могут завершиться успешно. Отчёт отправил: 11589. Yefim Выполнено за 2 час. 34 мин. [Показать отчёт] Научился: Делaть "красивyю" адpеcнyю стpоку в config/web.php Создaвать файл web\.htaccess Сложности: --- Комментарии: Отличный урок |
|||||
11 | Debug - Следы на песке |
1 тест |
|||
На этом уроке мы установим систему отладки в Yii для удобства отлавливания ошибок. После чего мы его подключим, прописав необходимые параметры в конфигурационный файл. Так же продемонстрируем как добавлять собственные логи по типу. Посмотрите инструкцию по установке. Отчёт отправил: 11589. Yefim Выполнено за 1 час. 11 мин. [Показать отчёт] Научился: Устанавливать инструменты отладчика. Сложности: ---- Комментарии: Великолепный урок. Отличный инструмент. |
|||||
12 | User - Помещение регистратуры |
|
|||
На этом уроке мы займёмся причёсыванием нашего проекта. Создадим необходимые тесты для обоснования наших действий. Для начала вынесем функции join/login в отдельный контроллер. Так же перенесём сопутствующие файлы видов в одноимённую папку. Отчёт отправил: 11589. Yefim Выполнено за 2 час. 22 мин. [Показать отчёт] Научился: Обновлять место регистратуры Сложности: Согласно уроку обновил все файлы. По крайней мере визуально все выглядело как в видео уроке. Но на последнем шаге не находились линки для join и login. Комментарии: Проблему решал так: С помощью Git вернулся к предыдущей версии и заново перенабрал урок. К моему удивлению все получилось. |
|||||
13 | Panel - Красивые анкеты |
|
|||
На этом уроке мы займёмся оформлением страничек регистрации и авторизации при помощи набора инструментов bootstrap. Для этого мы доработаем наши представления join/login.php Отчёт отправил: 11589. Yefim Выполнено за 22 мин. [Показать отчёт] Научился: Описывать дизайн страничек Join us Log in. Сложности: ---- Комментарии: Все ясно |
|||||
14 | Model - Модели на подиуме |
|
|||
На этом уроке мы поговорим о моделях, представлениях и связях через контроллер. Для этого мы рассмотрим схему, на основе которой будем писать код в последующих уроках. Отчёт отправил: 11589. Yefim Выполнено за 59 мин. [Показать отчёт] Научился: Рисовать сxему дальнeйшегo рaзвития вeб-прилoжения. Сложности: Нaриcовать сxемy свoими pукaми Комментарии: Неясно что такое passhash |
|||||
15 | Tests - Обоснование необходимости |
|
|||
На этом уроке мы займёмся обоснованием дальнеших действий через создание тестов. По аналогии напоминает написание ТЗ для программистов. Далее реализуем тесты поведения пользователей на сайте. Отчёт отправил: 11589. Yefim Выполнено за 1 час. 11 мин. [Показать отчёт] Научился: Описывать тесты поведения пользователей на сайте. Сложности: Не удалось добавлять инструкцию use с помощью лампочки Делаю это вручную. Комментарии: При создании теста, набирая имена методов, я ошибся и хочу исправить их. Вопрос: Достаночно только в самом файле поменять названия или надо еше где-то поменять? |
|||||
16 | Steps - Пошаговая инструкция |
|
|||
На этом уроке мы реализуем сгенерированные на прошлом уроке функции для корректной работы созданных, так же на прошлом уроке, тестов. Отчёт отправил: 11589. Yefim Выполнено за 56 мин. [Показать отчёт] Научился: Реализовывать функции теста Сложности: --- Комментарии: В тексте задания 7 заметил опечатку: 7. Зaпстить тeст vendor\bin\codecept run В целом урок - отличный!!! |
|||||
17 | Console - Есть ли жизнь в Консоли? |
|
|||
На этом уроке мы создадим консольное приложение на базе Yii и почитаем описание команд. Подключим vendor\autoload.php для корректной работы php yii.php help migrate. Отчёт отправил: 11589. Yefim Выполнено за 33 мин. [Показать отчёт] Научился: Создaвать конcoльноe приложение на базе Yii Сложности: --- Комментарии: Нет замечаний |
|||||
18 | Migration - Архитектура таблицы |
|
|||
На этом уроке мы создадим первую миграцию, опишем в ней структуру таблицы user. Миграции помогают следить за актуальностью схемы базы данных. Отчёт отправил: 11589. Yefim Выполнено за 22 мин. [Показать отчёт] Научился: Создaвать мигрaцию Сложности: --- Комментарии: Нет замечаний |
|||||
19 | DBase - Подключение к Матрице |
2 теста |
|||
На этом уроке мы создадим базу данных в MySQL. После чего создадим конфигурационный файл подключения к БД. Далее запустим миграцию в нашем консольном приложении, для автоматической генерации актуальной структуры таблиц. Отчёт отправил: 11589. Yefim Выполнено за 1 час. 22 мин. [Показать отчёт] Научился: Создaвать базy дaнных в MySQL. Сложности: Была проблема при выполнении команды php yii.php migrate Комментарии: Была проблема при выполнении команды php yii.php migrate Но потом все получилось |
|||||
20 | UserRecord - Очень активная модель |
|
|||
На этом уроке мы создадим модель связи с таблицей пользователей. Добавим в таблицу нашего первого пользователя. После чего перейдём на страничку регистрации и проверим добавился ли пользователь в БД. Так же поизучаем дебаг панель, изучим что происходит при работе с БД. Отчёт отправил: 11589. Yefim Выполнено за 1 час. 55 мин. [Показать отчёт] Научился: Добавлять запись в базу данных Сложности: Еще раннее, при формировании полей базы данных, я по ошибке вместо поля passhash указал поле password. Поэтому при клике на "Join us" возникала ошибка. Комментарии: Проблему, указанную в п.3 решал так: В файле m170825_094742_create_user_table.php я поменял строку 'password' => $this->string()->notNull(), на 'passhash' => $this->string()->notNull(), но этого было недостаточно, так как в самой базе данных было указано 'password'. Я отредактировал в базе данных и теперь там 'passhash'. И теперь при клике на "Join us" все работает нормально и запись первого пользователя формируется. Правда, Шторм проявлял недовольство. Но после перезапуска - успокоился. |
|||||
21 | Faker - Тысяча фантазёров! |
1 тест |
|||
На этом уроке мы добавим библиотеку Faker для генерации случайных данных при создании случайных пользователей. Для этого мы вначале установим необходимую библиотеку. После чего используем её в наших тестах. Отчёт отправил: 11589. Yefim Выполнено за 59 мин. [Показать отчёт] Научился: Подключать библиотеку Faker Добавлять случайных пользователей в базу данных Сложности: --- Комментарии: Отличный урок! |
|||||
22 | UserIdentity - Посторонним В |
|
|||
На этом уроке мы переходим к аутентификации пользователей на нашем сайте. Для этого мы воспользуемся встроенным в Yii интерфейсом IdentityInterface. Немного поэкспериментируем с авторизацией пользователей. Отчёт отправил: 11589. Yefim Выполнено за 44 мин. [Показать отчёт] Научился: Пропускать любого польхователя Сложности: --- Комментарии: Отличный урок |
|||||
23 | Logout - Выход из лабиринта |
|
|||
На этом уроке мы реализуем возможность выхода с сайта. Для этого нам понадобиться доработать представление меню, чтобы оно отличалось при авторизованном/неавторизованном пользователе. Так же реализуем метод выхода пользователя с сайта (Logout). Отчёт отправил: 11589. Yefim Выполнено за 33 мин. [Показать отчёт] Научился: Выводить пользователя. Сложности: --- Комментарии: Нет замеяаний |
|||||
24 | UserJoinForm - Модель для формы |
|
|||
На этом уроке мы создадим модель для формы регистрации пользователя. После чего мы добавим её использование в нашем представлении join.php Отчёт отправил: 11589. Yefim Выполнено за 5 час. 55 мин. [Показать отчёт] Научился: Cоздadfnm модeль для фoрмы pегистрации пользователя. Сложности: При попытке отобразить форму возникала ошибка. Система не могла обнаружить класс UserJoinForm Комментарии: При попытке отобразить форму возникала ошибка. Система не могла обнаружить класс UserJoinForm Несколько раз пересматривал урок и не нашел различий в коде. И только когда решил взять инициативу в свои руки и добавил use app\models\UserJoinForm; в файле UserController.php все заработало. До сих пор не могу понять почему в видео уроке этой строки нет и там все работает |
|||||
25 | Rules - Валидация без правил |
1 тест |
|||
На этом уроке мы добавим валидацию полей при регистрации пользователя. Также для полей добавим индивидуальные правила. Отчёт отправил: 11589. Yefim Выполнено за 34 мин. [Показать отчёт] Научился: Дoбавим вaлидацию пoлeй при pегистрации пользователя. Сложности: Попытался указать своё сообщение при вводе пароля, но сообщение не появилось. Комментарии: Попытался указать своё сообщение при вводе пароля, но сообщение не появилось. В скрине я закомментировал "неудачную строку" Вопрос: Почему она не сработала? |
|||||
26 | JoinPost - Вторая сторона модели |
|
|||
На этом уроке мы реализуем вспомогательную функцию, куда перенесём обработку фазы POST запроса нашей формы регистрации пользователей. Так же добавим генерацию начальных данных для первой фазы регистрации пользователей. Отчёт отправил: 11589. Yefim Выполнено за 31 мин. [Показать отчёт] Научился: Реaлизовывать вcпомoгательную функцию для обработки фазы POST запроса. Сложности: --- Комментарии: На этот раз все прошло гладко. |
|||||
27 | IfEmailUsed - Почта закрыта |
|
|||
На этом уроке мы добавим проверку существования email в БД перед тем как зарегистрировать пользователя. Проведём эксперименты и отрефакторим нашу проверку. Отчёт отправил: 11589. Yefim Выполнено за 34 мин. [Показать отчёт] Научился: Дoбавлять пpовepку cуществования email в БД перед тем как зарегистрировать пользователя. Сложности: --- Комментарии: Не было проблем |
|||||
28 | HasErrors - Где водятся волшебники? |
|
|||
На этом уроке мы реализуем дополнительную проверку, которая будет генерировать ошибку. После чего добавим проверку наличия ошибок перед тем как проверять на валидность email. Поэкспериментируем с последовательностью самих проверок. Отчёт отправил: 11589. Yefim Выполнено за 33 мин. [Показать отчёт] Научился: Работать с волшебником Сложности: Были проблемы с откатом Комментарии: Мне понравились дополнительные проверки и я решил их заГитить, как бы иметь в запасе еще одну версию. При попытке отката опция Revert была недоступна. Я решил использовать History, но далее запутался. Как мне вернуться к предыдушей версии? |
|||||
29 | Save - Запись в книгу |
|
|||
На этом уроке мы реализуем добавление данных пользователя в БД, после успешной проверки. Так же добавим редирект на страничку авторизации после успешной регистрации пользователя. Отчёт отправил: 11589. Yefim Выполнено за 45 мин. [Показать отчёт] Научился: Дoбавлять данные пользователя в БД, после успешной проверки. Сложности: Столкнулся с проблемой при тестировании. У меня сообщения теста другие. Не могу понять почему. Комментарии: Все работает нормально, кроме теста. Как связаны порядковые номера при тестировании с кодом в php файлах? |
|||||
30 | UserLoginForm - Модель на входе |
|
|||
На этом уроке мы реализуем форму авторизации пользователей. Создадим модель UserLoginForm и добавим правила заполнения полей. Отчёт отправил: 11589. Yefim Выполнено за 36 мин. [Показать отчёт] Научился: Создавать модель UserLoginForm Сложности: Удалось преодолеть проблему с прохождением тестов. Комментарии: Удалось преодолеть проблему с прохождением тестов. Ошибку в своем коде нашел сам без повторного просмотра видео урока |
|||||
31 | IfEmailNotFound - На деревню дедушке |
|
|||
На этом уроке мы реализуем проверку почтового ящика при авторизации пользователя, а зарегистрирован ли он. Так же настроим контроллер для корректной работы проверки. Отчёт отправил: 11589. Yefim Выполнено за 33 мин. [Показать отчёт] Научился: Позволять входить на сайт по е-маэлу Сложности: --- Комментарии: На этот раз без приключений все получилось |
|||||
32 | IfPasswordWrong - Пароль? Пароль! Проходи. |
|
|||
На этом уроке мы добавим ещё одну валидацию при авторизации пользователя, а именно вводимый им пароль. Посмотрим логи запросов в БД и запустим тестирование. Отчёт отправил: 11589. Yefim Выполнено за 45 мин. [Показать отчёт] Научился: Реaлизовывать функцию пpовeрки пapоля errorIfPasswordWrong() Сложности: --- Комментарии: Все было ясно |
|||||
33 | Refactoring - Нет дубликатам! |
|
|||
На этом уроке мы займёмся рефакторингом дублирующего кода, выполняющего одно и тоже на протяжении выполнения одной задачи. Отчёт отправил: 11589. Yefim Выполнено за 34 мин. [Показать отчёт] Научился: Рефакторить Сложности: Почему-то при первом клике на Enter нет никакой реакции. Второй клик на Enter срабатывает как надо Комментарии: Почему-то при первом клике на Enter нет никакой реакции. Второй клик на Enter срабатывает как надо Такое же явление наблюдаю при отправке отчета на https://www.videosharp.info |
|||||
34 | Test - Запуск функциональных тестов |
|
|||
На этом уроке мы создадим функциональный тест. Но для корректной его работы, нам понадобиться провести несколько очень важных манипуляций. Отчёт отправил: 11589. Yefim Выполнено за 55 мин. [Показать отчёт] Научился: Делать функциональные тесты Сложности: Довольно сложная "логическая цепочка" подключения. И это надо делать в каждом проекте, где используется функциональные тесты. Комментарии: Вопрос: строку $this->assertTrue( true, 'False is not true'); можно убрать? Маленькое косметическое замечание по английской грамматике. Предложение: John does not found. - грамматически не верно. Если хочется использовать does, то правильно будет так: John does not find. Но при этом меняется смысл. Джон не нашел. Но если хочется сказать, что Джон не найден то правильней записать: John not found. |
|||||
35 | PasswordIsHashed - Покажите-ка ваш хэш |
|
|||
На этом уроке мы реализуем тестирование на корректность хешированных паролей перед тем как они сохраняются в БД. Для начала нам понадобиться создать дополнительную функцию установки пароля в UserRecord(). После чего мы приступим к созданию тестов. Отчёт отправил: 11589. Yefim Выполнено за 55 мин. [Показать отчёт] Научился: Реaлизовывать тeстиpование на корректность хешированных паролей перед тем как они сохраняются в БД. Сложности: --- Комментарии: Нет замечаний. |
|||||
36 | Security - Кручу-верчу-захэшировать хочу! |
|
|||
На этом уроке мы реализуем хеширование паролей перед тем как их сохранять в базу данных. Для начала нужно очистить все аккаунты пользователей, так как они содержат пароли в явном виде. Отчёт отправил: 11589. Yefim Выполнено за 55 мин. [Показать отчёт] Научился: Реaлизовывать xешиpование паролей Сложности: Мой вопрос указан в замечаниях Комментарии: Не могу понять, почему phpStorm не видит в строке if (!$this->userRecord->validatePassword($this->password)) публичную функцию validatePassword($this->password). и при этом код работает нормально: |
|||||
37 | Hash - Как правильно солить пароли |
|
|||
На этом уроке мы поговорим о вариантах хеширования паролей пользователей для дополнительной безопасности. Посмотрим, сколько времени занимает хеширование пароля, воспользовавшись встроенной системой профилирования. Отчёт отправил: 11589. Yefim Выполнено за 26 мин. [Показать отчёт] Научился: Оценивавать время хэширования Сложности: --- Комментарии: Без соли никак нельзя |
|||||
38 | Remember me - Печенька на память |
|
|||
На этом уроке мы поговорим о галочке «Запомнить меня» для авторизации на месяц — чтобы сайт не просил повторно вводить логин/пароль даже после закрытия/открытия браузера. Отчёт отправил: 11589. Yefim Выполнено за 49 мин. [Показать отчёт] Научился: Запоминать пользователя Сложности: Столкнулся с проблемой, когда некоторые, автоматически присоединенные, пользователи с паролем 'qwas' при входе в систему по Логину не могут войти. Непонятно почему? Комментарии: Хотелось бы знать ответ на вопрос Что было самым сложным? |
|||||
39 | Authokey - Ключи в сейфе |
|
|||
На этом уроке мы реализуем более безопасный способ автоматической авторизации на сайте. Для этого мы создадим отдельное поле 'authokey', в нашей БД, для автологина. Отчёт отправил: 11589. Yefim Выполнено за 44 мин. [Показать отчёт] Научился: Реaлизовывать бoлеe безопасный способ автоматической авторизации на сайте. Сложности: --- Комментарии: Отличный урок! Отличный Курс!!! Большое Спасибо! |
|||||
40 | REFRESH - 40 МГНОВЕНИЙ ОПЫТА |
|
|||
На этом финальном уроке тебе предстоит повторить весь курс ещё раз. Да, ты не ослышался - выполнить все шаги по созданию этого проекта. Чтобы было удобнее - скачай план уроков всего курса. Уверен, ты сможешь всё сделать самостоятельно, причём, значительно быстрее. Лучше всего это сделать на другом компьютере. |
|||||
Итого: 40 видеоуроков |
7 час. 42 мин. 9 тестов |
5 чел. | |||
Финалисты: Иван Воронин, Tekashnik, Семен, Александр, Tom . |