- Видео 132
- Просмотров 58 995
Данила Соколов
Добавлен 7 июн 2011
Всем привет!
Этот канал посвящён самому разному, от записей стримов и совершенно дурных видео из жизни (многие из которых доступны только по прямой ссылке, чтобы вас не смущать) до целых серий видео-лекций по нескольким IT-предметам, которые я (или члены моей команды) веду.
Если же вдруг вам хочется окунуться в странную часть канала, то можно зайти в телеграм, где я публикую свои посты со ссылками на некоторые из этих видео и вообще, флужу о всяком:
- t.me/pabuksokolov: Более серьёзный канал, пишу сюда не часто. Исторически первый.
- t.me/sokolov_dev_null: Менее серьёзный, тут уже считай личный блог, что в голове, то и на бумаге :D
Спасибо всем подписавшимся, ценю ваши комментарии, стараюсь отвечать и давать обратную связь.
Со мной можно спокойно связаться через ТГ.
Этот канал посвящён самому разному, от записей стримов и совершенно дурных видео из жизни (многие из которых доступны только по прямой ссылке, чтобы вас не смущать) до целых серий видео-лекций по нескольким IT-предметам, которые я (или члены моей команды) веду.
Если же вдруг вам хочется окунуться в странную часть канала, то можно зайти в телеграм, где я публикую свои посты со ссылками на некоторые из этих видео и вообще, флужу о всяком:
- t.me/pabuksokolov: Более серьёзный канал, пишу сюда не часто. Исторически первый.
- t.me/sokolov_dev_null: Менее серьёзный, тут уже считай личный блог, что в голове, то и на бумаге :D
Спасибо всем подписавшимся, ценю ваши комментарии, стараюсь отвечать и давать обратную связь.
Со мной можно спокойно связаться через ТГ.
Frontend: Введение в React.JS, часть 4 - Разбор основ
В этом видео будет произведён повторный разбор теории по Reaсt с актуализацией информации на момент записи.
В ролике Будут затронуты темы:
- Компоненты
- Рендеринг компонентов
- Сравнение деревьев компонентов через состояния
- Классовые компоненты против функциональных
- Обработка ошибки рендеринга
- Хуки
- Пропсы (параметры компонентов)
- События
- Состояния компонентов
- useMemo
- useCallback
И многое другое.
В ролике Будут затронуты темы:
- Компоненты
- Рендеринг компонентов
- Сравнение деревьев компонентов через состояния
- Классовые компоненты против функциональных
- Обработка ошибки рендеринга
- Хуки
- Пропсы (параметры компонентов)
- События
- Состояния компонентов
- useMemo
- useCallback
И многое другое.
Просмотров: 141
Видео
Продвинутый PHP: Основы Laravel - авторизация в монолитных приложениях MVC
Просмотров 419Год назад
В данном видео мы продолжим изучать основы Laravel, а именно, поговорим про Laravel breeze - библиотеку для организации авторизации в монолитном приложении.
Продвинутый PHP: Основы Laravel - монолитные приложения MVC
Просмотров 531Год назад
В данном видео мы продолжим изучать основы Laravel: - Поговорим про шаблоны и шаблонизатор Blade - Поговорим про компоненты и как их использовать - Научимся создавать формы и multistep-формы - Научимся работать с файлами.
Продвинутый PHP: Основы Laravel - JWT-авторизация
Просмотров 5 тыс.Год назад
В данном видео мы продолжим изучать основы Laravel: - Изучим, как можно использовать JWT через библиотеку JWT-auth - Научимся отправлять запросы с одного сервера на другой, используя Guzzle - Немного поговорим о пользе JWT
Продвинутый PHP: Основы Laravel - Eloquent ORM, часть 2 - отношения
Просмотров 375Год назад
В данном видео мы продолжим изучать основы Eloquent ORM в Laravel: - Основные отношения (1-1, 1-М, М-М) - Полиморфные отношения
Продвинутый PHP: Основы Laravel - Eloquent ORM, часть 1
Просмотров 479Год назад
В данном видео мы изучим основы Eloquent ORM в Laravel: - Фабрики - Tinker - Работа с данными через модели
Frontend: Введение в React.JS, часть 3 - Хуки
Просмотров 161Год назад
В этом видео кратко изложена теоретическая информация о нововведении React 16.8 под названием "Хуки". Кратко будут рассмотрены наиболее часто используемые стандартные хуки, рассмотрены принципы применения хуков из сторонних библиотек, таких как react-redux. Ссылка на презентацию: docs.google.com/presentation/d/1hyX65jDk60OIpcAe99Y7tIzmAUksuLI-zG3jw4L6e_c/edit#slide=id.p Ссылки из презентации: -...
Продвинутый PHP: Основы Laravel - Router&Middleware
Просмотров 269Год назад
В данном видео мы изучим основы Laravel: - Router - Маршрутизацию - Middleware - Посредники.
Продвинутый PHP: Основы Laravel
Просмотров 529Год назад
В данном видео мы изучим основы Laravel: - Контроллеры - Модели - Представления - Подключения БД И совсем немножко Eloquent ORM. Данное видео является вводным в рамках курса по изучению Laravel.
Продвинутый PHP: Основы ООП
Просмотров 771Год назад
В данном видео мы изучим основы основ применения ООП в PHP. Данное видео является вводным в рамках курса по изучению Laravel.
Introduction to software engineering: GIT
Просмотров 168Год назад
In this video, we'll break down what GIT is and how you can use branches.
Introduction to software engineering: wiki (redmine)
Просмотров 474Год назад
In this video we will look at how to create wiki pages to describe project documentation using redmine.
Введение в управление проектами - управление задачами
Просмотров 2,2 тыс.2 года назад
Введение в управление проектами - управление задачами
Введение в программную инженерию - GIT
Просмотров 1 тыс.2 года назад
Введение в программную инженерию - GIT
Введение в программную инженерию - документация в wiki
Просмотров 1,1 тыс.2 года назад
Введение в программную инженерию - документация в wiki
Backend: Введение в ASP .NET, часть 4: ORM и работа с БД
Просмотров 2 тыс.2 года назад
Backend: Введение в ASP .NET, часть 4: ORM и работа с БД
Backend: Введение в ASP .NET, часть 3: Сервисы и DI
Просмотров 1,6 тыс.2 года назад
Backend: Введение в ASP .NET, часть 3: Сервисы и DI
Backend: Введение в ASP .NET, часть 2
Просмотров 1 тыс.2 года назад
Backend: Введение в ASP .NET, часть 2
Backend: Введение в PHP, часть 7 - обработка файлов на стороне PHP (Формы и base64)
Просмотров 5972 года назад
Backend: Введение в PHP, часть 7 - обработка файлов на стороне PHP (Формы и base64)
Backend: Введение в PHP, часть 6 - обработка данных и защита от ошибок
Просмотров 7062 года назад
Backend: Введение в PHP, часть 6 - обработка данных и защита от ошибок
Backend: Введение в PHP, часть 5 - HTTP status codes
Просмотров 8732 года назад
Backend: Введение в PHP, часть 5 - HTTP status codes
Backend: Введение в PHP, часть 4 - авторизация по токену
Просмотров 4 тыс.2 года назад
Backend: Введение в PHP, часть 4 - авторизация по токену
Frontend: Введение в React.JS, часть 2 - практика (перезалив)
Просмотров 8212 года назад
Frontend: Введение в React.JS, часть 2 - практика (перезалив)
Frontend: Введение в React.JS, часть 1
Просмотров 1,3 тыс.3 года назад
Frontend: Введение в React.JS, часть 1
Frontend: Введение в Bootstrap, часть 1
Просмотров 4503 года назад
Frontend: Введение в Bootstrap, часть 1
Добрый день. Спасибо за видео. Есть вопрос. Как правильно разделить web и api? Что бы авторизация через jwt работало и классическая, на сайте через форму. После установки jwt перестает работать авторизация через форму. В Гугле как то не особо много информации по этому поводу и у всех разное мнение...
А что делать если у тебя нету файла api.php ?Вы его сами создаете или он у вас изначально есть ?
вы троллите и в чем он лучший? взял наклацал что то что понятное атвору на клиавиатуре сделал пару склеек и что он в итоге обьяснил*? зачем нагонять хвалебные отзывы?
Теперь нужен отдельный автомат для розеток под шторы😂
Нужно просто ремонтом заняться наконец-то дома и переделать не только проводку (о планы, планы), но и под себя уже стилизоваться всё :D
Очень грамотное объяснение. Все четко по делу, ни 1 лишнего слова
Большое спасибо за тёплые слова!
очень классно объясняешь, еще и все сразу с примерами. Спасибо огромное)
Большое спасибо за тёплые слова. Если найду силы, вернусь с новым материалом.
Подскажите пожалуйста, а рест апи можно написать на чистом php ?
Конечно, можете посмотреть предыдущие ролики на канале, там в ту сторону есть некоторые кивки
продолжайте записывать, отличная подача, звук и материал, рано или поздно залетит, не бросайте это дело!
В стол немного записано уже, надо бы силы просто собрать в кулак и доделать )
Круть!
зачем для получения метода используется функция ? Почему не переменная $method = $_SERVER['REQUEST_METHOD'];
Вот класс! Самое лучшее объяснение! У меня вопрос, какой максимально простой подход выбрать для авторизации если весь фронт на вью?
Гуд! Спасибо. Было полезно.
с 18 минуты какой то сумбур одному тебе известный
Почему ролики не выпускаешь? очень качественный контент. Ждем
В первую очередь курс записывался для моих студентов, а в этом году курс "продвинутый PHP" не включён в список специализаций на весну 2024. Однако, если есть запрос, возможно попробуем собрать ещё интересные для меня темы, которые пригодятся уже не в рамках моего курса, а для моих будущих и текущих стёжоров в компании, например. Компнём в глубь PHP (и не только?), пожалуй. А мы можете сказать, что думаете о такой идее.
@@danila.sokolov было бы интересно ларавел, вот такие не стандартные решения как фильтрация и опции для товаров, что то вроде простое, но оптимальные решения.
Вроде неплохие уроки, но ёлки-зелёные - что ж так мелко-то!!! Приходится глаза напрягать, да и то, не особо помогает. Используйте масштабирование, как все делают. К тому же видно, что 90% экрана здесь просто пустует.
Вроде неплохие уроки, но ёлки-зелёные - что ж так мелко-то!!! Приходится глаза напрягать, да и то, не особо помогает. Используйте масштабирование, как все делают. К тому же видно, что половина экрана здесь просто пустует.
Просьба при записи делать побольше курсор мыши, а то он очень плохо заметен.
В более свежих видео делаю подсветку значимых областей.
Очень круто структурировал знания в моей голове. Ещё раз спасибо!
А как JWT -токен обновляется, что-то я не понял? Типа там автоматом при каждом запросе проверяется токен и если близко к затуханию система его обновляет?
Я уже отвечал на этот вопрос в комментариях к этому видео, но могу повторить, мне не сложно. Access token, используется при запросах к серверу. У него есть два свойства: он многоразовый и короткоживущий - время жизни определяет разработчик. Где-то 10 минут, а где-то и 2 дня. Время выбирается на основании того, как используется сервис. Второй, refresh token, используется для обновления пары access и refresh токенов. У него тоже есть два свойства, обратные первому токену: он одноразовый и долгоживущий. Совсем долгоживуший, например целый месяц. Использование refresh более безопасно - при его использовании, старый refresh токен сразу протухает - значит им никто другой не воспользуется (злоумышленнык, который увёл токен, н не использовал, или же пользователь, у кого увели - тогда он прелогинится и получит новый refresh, убив тот, который у злоумышленника. Но вариант с протуханием у злоумышленника уже зависит от реализации и такого может не быть). Надеюсь вам стало немного понятнее.
@@danila.sokolov Спасибо за ответ. Да я видел , что вы отвечали ранее, но мне из сообщения не понятно когда срабатывает метод обновления. Метод refresh постоянно проверят токен при каждом запроси и обновляет токены, если они близки к потуханию или же надо самому вызывать метод обновления?
Библиотека должна за вас всё решить в этой области. У токена же есть информация о его "сроке годности".
Но можно и вручную, вот выдержка из документации: $newToken = auth()->refresh(); // Pass true as the first param to force the token to be blacklisted "forever". // The second parameter will reset the claims for the new token $newToken = auth()->refresh(true, true); Документация: jwt-auth.readthedocs.io/en/develop/auth-guard/
@@danila.sokolov Понял, спасибо большое за видео и ответ
Спасибо)
Всегда пожалуйста! Главное обращайте внимание на то, что версия ASP.NET в видео устарела и с моей стороны уже требуется записать совершенно новый курс - глубже, актуальнее... Однако для понимания основ видео всё ещё подходит :)
@@danila.sokolov ну чтож, вдруг появиться. Будем ждать😉
А как подключить MySQL сюда?
Что-нибудь вроде такого: server=localhost;port=3306;database=mycontext;uid=root;password=********" В конфигах, которые показаны на 01:30
@danila.sokolov Спасибо за ответ. Я уже решил проблему, надо было использовать options.UseMySQL() вместо SQLserver(). Целый день не мог понять...
Умеет ли redmine создавать релизы/версии?
Можно использовать механизмы системы для того, чтобы настроить такой функционал. Опишите, как вы хотели бы это использовать (как теги?), я подскажу, как это можно сделать.
@@danila.sokolov , спасибо за ответ! По сути, мне нужно что-то близкое к тегам. А использование планируется такое: _ У меня есть несколько задач для внедрения функционала-1 и ещё несколько задач для внедрения функционала-2. Причём второй пакет задач во многом зависит от пакета-1. В джире для этого есть релизы: мы создаём 2 релиза, например, с версией 1.1 и 1.2. Задачи функционала-1 получат версию 1.1 и будут реализовываться в его ключе, а задачи функционала-2 уйдут в версию 1.2. _ Причём, если после реализации задач появится ошибка, требующая исправления - мы сделаем задачу, у которой будет 2 поля: 1. Актуальная версия, 2. Версия исправления. _ Соответственно, таким образом можно даже несколько лет спустя разобраться в переплетениях задач, если они нормально документируются. Мне тема очень интересна.
Вопрос понял, вот мой ответ. Мы внутри команды, на реальных проектах делаем так: - Внутри настроек проекта есть раздел "версии", где, по сути, можно сделать буквально то, о чём вы говорите. - Также, в теории, можно использовать словарь "категории задач" - внося туда версии, но мы его используем по назначению и делим на условный фронт / бэк. - Также, можно просто завести кастомное поле для задач и туда указать список допустимых значений, которыми и будут ваши версии. Я бы или вариант 1 или 3 использовал ;)
Сохранил в избранное. Спасибо большое за развёрнутые ответы! : Первый вариант скорее всего имено то, что я и искал.
Всегда пожалуйста. Мне не сложно :)
А зачем, если есть sanctum?
Можно и так, конечно. Но в плане лекций у меня был разбор именно JWT. Тем более, что у наших партнёров спрос на такой подход высок, поэтому и акцент именно на нём.
@@danila.sokolov прикольно. просто я думал, что все и так умеют пользоваться JWT, ему же уже черт знает сколько лет. А учитывая, что он перестал обновляться пару лет назад, то на текущий момент его вполне можно признать мёртвым =)
Ну так это курс по PHP с нуля. Разумно предположить, что есть много людей, кто первый раз в жизни сел за веб-разработку и они вообще не представляют, что это за зверь такой. В основах PHP вообще был видео про Bearer-токены, которые просто в БД висят, чтобы в целом обучить токенной авторизации. Так что я не претендую я вселенские тайны или bleeding edge технологии в видео : ) Но для начинающих должно быт полезно.
А насчёт "мёртвым", тут поспорю. Цель видео не столько про конкретный пакет поговорить (он скорее для удобства), сколько о том, чтобы рассказать про сам JWT, который явно не мёртв, т.к. это специфичный подход к авторизации, который сильно отличается от обычной Bearer-авторизации, т.к. снимает необходимость серверу стучаться в БД каждый раз для валидации прав доступа. А это довольно важный момент в работе множества высоконагруженных систем.
@@danila.sokolov ,боюсь, что пока начинающие поймут всю мощь jwt, он уже окончательно уйдёт в историю =) Я просто сам программирую уже лет 20 и последние лет 5 иногда читаю бесплатные лекции по 1 семестру в разных колледжах по СНГ. И поэтому мне приходится следить за всеми последними трендами и отфильтровывать всё устаревшее. JWT пока держится =)
Спасибо большое 😊
Всегда пожалуйста же. Надеюсь вам хоть немного помогло.
Авторизация по токену, но зачем в базу то его записывать и ходить каждый раз в нее? JWT же есть
На эту тему есть отдельное видео. А вот в рамках текущего как раз показываются основы основ, для тех, кто ещё не разобрался с темой достаточно, чтобы оперировать JWT.
Пока некогда смотреть
Бывает.
Здравствуйте. У вас отличный урок, но вот впал в ступор при запросе. В ответе выводит такую ошибку "Method Illuminate\Auth\RequestGuard::attempt does not exist. " . Много ресурсов перебрал, но понять не могу с чем связано. Буду благодарен за ответ. p.s видимо ошибка в том, что я использую lumen, так как там не поддерживаются session, но в документации указано использовать этот метод 'attempt' . Стоит ли мне использовать что-то иное?
Ну, если рассматривать саму ошибку, то обращаться к методу attempt у RequestGuard 100% не имеет смысла - он там не объявлен. Возможно в той документации, о которой вы говорите, предлагается attempt вызывать у экземпляра другого класса? В целом, если в документации чётко прописано использование attempt, я бы просто запустил поиск по коду вашего проекта и посмотрел, у какого класса / классов объявлен данный метод. И от этого уже бы думал, в чём может быть ошибка. Скорее всего нужно просто у другого объекта вызывать данный метод.
@@danila.sokolov, Благодарю за ответ. На всякий случай, если будет у кого такая ошибка , напишу причину. Посмотрев на ошибку при обращении к методу Auth::attempt выводит requestGuard::attempt does not exist. Я перешёл в этот класс и посмотрел что выводит метод guard. У меня выводил api guard, хотя в файл bootstrap/app я добавил конфиг jwt. После чего я удалил этот конфиг и перешёл в папку vendor/laravel... и поменял в конфиге на драйвер jwt. Api guard не предполагает такой метод как attempt, вот и результат.
Вот, провели небольшое изучение ситуации и всё получилось. Увы, это типичная задача программиста и очень здорово, что у вас всё получается.
Именно когда ты применяешь эти статусы к базе они не хотят появляться. Пишет ошибку mysqli и всё сам json пуст
Очень качественный ролик. Спасибо за труд!
Спасибо :D
node в openserver есть?
Базовые модули Apache: 2.2.31, 2.4.38, 2.4.41, 2.4.54 + auth_ntlm, fcgid, xsendfile и др. PHP: 5.2.17, 5.3.29, 5.4.45, 5.5.38, 5.6.40, 7.0.33, 7.1.33, 7.2.34, 7.3.33, 7.4.30, 8.0.22, 8.1.9 Bind: 9.16.32 FTP FileZilla: 0.9.60 Ghostscript: 9.56.1 Nginx: 1.23.1 + ssl_preread, image_filter, geoip, geoip2, brotli и др. NNCron Lite: 1.17 Sendmail: 32 Так что нет. Ну и опенсервер всё же для PHP / DB исторически нужен. Для ноды можно и lifeservr внутри visual studio использовать. Хотя и для PHP тоже можно, в целом.
Да дела,может попроще. <?php $pathUrl = 'web/index.php'; Путь нашего сайта. function index(){ include('index.html');Функция подключения странички сайта } if($pathUrl == 'web/index.php'){ return index();Вернет функцию подключения странички сайта. } else{ echo '404'; Если адрес не совпадает } Грубо конечно без регулярки,и проверки, но в целом где то будет так.
В видеолекции разбирается совершенно другой случай - как формировать ответы о сервера в формате JSON. Подключение статичного *.html файла задачу не решит.
@@danila.sokolov Это только пример. Чтоб новички не боялись ))
Спасибо, стало понятно что за заерь такой этот ваш JWT.
Надеюсь ещё и пользу какую-то принесёт это знание :)
Крутое понятное объяснение азов ларавел, спасибо!
Спасибо, стараемся хотя бы поверхностно пояснить за фреймворк, чтобы те, кто +/- разбирается в PHP мог повысить свой уровень.
@@danila.sokolov Я курс на Skillbox по ларавел прохожу, вот там вроде как подробно объясняют, но в памяти как-то не остается что да как. А в этом видео прям посмотрел, повторил, все понял)
Ну всё, пора на скиллбокс :D
@@danila.sokolov да ну его. Есть пара нормальных курсов. Верстка, GIT, карьера разработчика и базовый PHP. Все остальное такое себе. Про React вообще молчу, там версия реакта 16 или 17, соответственно на 18 версии код из лекций тупо не работает. Планируют обновить к концу года)
Ну, это больше шутка была. На самом деле, все ресурсы уходят на нашу школу (hits.tsu.ru/), куда-то ещё влезать смерти подобно. Ну, помимо основной работы, само собой. А за скиллбокс - солидарен, смотрел пару курсов изнутри. У нас по реакту тоже с коллегой есть курс, но в виде ютуб-лекций от нас мал что осело. У нас в целом все предметы больше про "практический опыт", то есть пощупать руками и с преподами подискутировать. Как показывает опыт - результат более высокого качества выходит. Но при должном желании, можно и наедине с книжкой научиться чему угодно.
Лучший урок по JWT!
Спасибо, очень приятно!
огромная благодарность за уроки по бекэнду! Очень мало годного на просторах ютюба!
Стараемся :D
Ну хз
Хорошее видео, спасибо! Я в данный момент делаю облачное хранилище на чистом PHP для обучения. И как по-моему вы в прошлых видео сказали, что клиенту нельзя доверять. В таком случае перед загрузкой файла на сервер можно ли как-то узнать его расширение и размер, не обращая внимания на мета данные, которые прислал клиент о файле?
Всё, что у вас есть, это данные, которые расположены в заголовке запроса. Так что, опираемся на них. Ну а вообще, в худшем случае, вы можете получить данные и провести валидацию на стороне сервера и уже принять файлы, или же отклонить и вернуть ошибку.
Спасибо за ролик!)
Спасибо большое, вполне доступно и понятно. Небольшая просьба, кто называете видео, сразу раскрывайте его название, а то я сначала подумал, мол не дадите определение сервисам. С нетерпением жду новых видео!
Постарался принять к сведению, насколько возможно ;)
Здравствуйте,как можно локально развернуть базу данных?
Да, конечно можно. Устанавливайте любую по вкусу прямо у себя на ПК. Если лен возиться, можете просто установить готовый пакет, вроде ospanel
Пользуюсь open serves
У меня на работе уродский проект, но стараемся выровнять его так: контроллер, в нём медиатр, в медиатре сервисы (+сервисы могут вызываться и в сервисах)
Самое вменяемое объяснение в русском сегменте ютуба, автору большое спасибо!
Спасибо большое, вчера вечер просидел, после просмотра, за минуту нашел, где затык!
Приятно слышать, надеюсь у вас обучение дальше пойдёт без проблем : )
Гарик Харламов вылитый
🤔
Отличный курс.
Спасибо за отзыв. Увы, можно было снять и лучше - писалось в спешке, без сценария и не в лучшем состоянии здоровья. Но если вам помогло разобраться в основах, то я очень рад.
Отличный курс! Спасибо за работу!
Здравствуйте,будет ли данный курс продолжаться ?
Добрый день! Не уверен, что буду продолжать - материалы писались в качестве дополнительных материалов в нашей IT-школе. Но ест вероятность что мы рано или поздно выпустим новый курс, отснятый более качественно.
Данил, невероятно круто. Весь интернет перерыл в поисках подобной инфы. И вот за час все по полочкам. Спасибо большое! Очень приятно слушать. Лайк и подписка!
Спасибо за развёрнутый отзыв, очень приятно! Данная серия видео писалось в качестве дополнительного материала для нашей IT-школы и, к сожалению, можно было снять и лучше - писалось в спешке, без сценария и не в лучшем состоянии здоровья. Но если вам помогло разобраться в основах, то я очень рад.
на 50-й минуте всё таки чутьё подсказывает что лучше тем же методом, что Вы и делали на прошлом видео когда сепарейтили url (тогда это было $urllist = explode('/', $url);) тут точно так же с токеном просто это будет массив из двух элементов $tokenList = explode(' ', $tokenList ); и второй элемент ($tokenList[1]) уже будет тот самый токен без bearer
".\ outers\\" . $router . ".php" И так "./routers/" . $router . ".php" У меня так сработало с точки директория начинается домашняя, иначе функция route не запускается