- Видео 101
- Просмотров 337 333
Evgeniy Kuvshinov
Россия
Добавлен 2 дек 2016
Канал посвящен web-разработке и организации работы в этой сфере. Тематика канала может заинтересовать не только новичков, но и профессионалов, так как мы рассматриваем актуальные вопросы.
1. Live трансляции.
2. Обучающие видео.
3. Проведение code review для подписчиков.
4. Совместная разработка проекта.
1. Live трансляции.
2. Обучающие видео.
3. Проведение code review для подписчиков.
4. Совместная разработка проекта.
Библиотека для внедрения зависимостей в PHP, cekta/di release v1, psr/container implementation
github.com/cekta/di
наш чат: t.me/dev_ru
канал с важными объявлениями: t.me/kuvshinov_e
00:00 Вступление
01:29 Основные преимущества (кратко)
06:02 Установка
07:03 Классы
13:55 Параметры
18:08 Пример с интерфейсами
19:53 Пример с абстракными классами
22:56 Union type
25:34 Intersection type
26:54 DNF type
30:02 Definition на примере DSN
32:15 Иньекция в методы после создания и все остальное
34:19 Service Locator
35:37 variadic params
38:00 overwrite аргумента
40:09 Компиляция
50:46 FQCN
53:35 Пример показывающий порядок загрузки
56:05 Как autowiring определяет имя зависимости
59:57 Benchmark
01:05:13 Contribute
наш чат: t.me/dev_ru
канал с важными объявлениями: t.me/kuvshinov_e
00:00 Вступление
01:29 Основные преимущества (кратко)
06:02 Установка
07:03 Классы
13:55 Параметры
18:08 Пример с интерфейсами
19:53 Пример с абстракными классами
22:56 Union type
25:34 Intersection type
26:54 DNF type
30:02 Definition на примере DSN
32:15 Иньекция в методы после создания и все остальное
34:19 Service Locator
35:37 variadic params
38:00 overwrite аргумента
40:09 Компиляция
50:46 FQCN
53:35 Пример показывающий порядок загрузки
56:05 Как autowiring определяет имя зависимости
59:57 Benchmark
01:05:13 Contribute
Просмотров: 651
Видео
PHP, PDO Подготовленные запросы, EXECUTE vs PREPARE Statement
Просмотров 3,2 тыс.2 года назад
Что такое PREPARE и EXECUTE Statement в чем отличия подготовленных запросов, как с этим работать с PHP и PDO 00:00 Вступление 00:24 EXECUTE и PREPARE 00:50 EXECUTE Statement 03:08 PREPARE Statement 07:09 Пример именованные placeholder 07:53 Пример неименованные placeholder 08:28 bindParam и bindValue 12:09 PDO эмулирует подготовленные запросы по умолчанию!!! 14:20 query использует prepare, а не...
PHP, PDO SQL Injection #3
Просмотров 2 тыс.2 года назад
SQL Injection минимум который должен знать каждый разработчик код которого работает в production 00:00 Вступление и оглавление 01:06 Определения (теория) 01:45 Чем опасны SQL Injection 03:34 Практический стенд 06:12 Обхода аутедентификации 09:23 Модификации базы данных 11:47 Защита с помощью placeholder 15:49 Защита там где placeholder не применимы 18:52 Поддержи канал github.com/smpl/youtube/t...
PHP, PDO Основные операции (CRUD) #2
Просмотров 2,5 тыс.2 года назад
Основные операции которые осуществляет обычно разработчик при работе с PDO: 00:00 Вступелние и оглавление 00:54 Вставка данных (INSERT) - регистрация 04:49 Массовая вставка (bulk insert) 10:30 Обновление данных (UPDATE) - смена пароля 11:18 Удаление данных (DELETE) - удаление пользователя 12:39 Выборка данных (SELECT) - вход пользователя 15:07 Выборка нескольких строк 17:33 Что выбрать prepare ...
PHP, PDO Доступ к базе данных #1
Просмотров 8 тыс.2 года назад
Первая часть цикла видео о работе с базой данных с PDO в PHP github.com/smpl/youtube/tree/master/pdo Плейлист: ruclips.net/p/PL7Nh93imVuXw_wvYPFsbb33f_ZiXkyLO3 Документация PDO: www.php.net/manual/ru/book.pdo.php Канал с новостями: t.me/KuvshinovEvgeniy Чат с обсуждениями: t.me/dev_ru Поддержка: new.donatepay.ru/@kuvshinovee
Конфигурационные параметры вашего application
Просмотров 9462 года назад
В этом видео я поделился рекомендациями которым придерживаюсь я сам и которые были проверены в десятках проектов Поддержи канал: new.donatepay.ru/@kuvshinovee Личный канал в телеге: t.me/KuvshinovEvgeniy Чат: t.me/dev_ru Вступление 00:00 Форматы (php, json, yaml, xml, toml, hjson, ...) 00:57 Основные места настройки 01:32 * Параметры по умолчанию 02:02 * Переменные окружения 05:31 Системные Пол...
CORS - Cross Origin Resource Sharing, Совместное использование ресурсов между разными источниками
Просмотров 24 тыс.3 года назад
Мы полностью разберемся в вопросах CORS и вы сможете понимать что же требуется браузеру, рассмотрим реальные примеры. Поддержи канал материально: donatepay.ru/don/kuvshinovee Канал: t.me/KuvshinovEvgeniy Наш чат: t.me/dev_ru Итоговый middleware для Laravel: gist.github.com/smpl/b24db71f6c13c2e8ab054e18bd5400fd 00:00 - Вступление 00:07 - План видео 00:50 - Пример CORS 06:48 - Origin и Access-Con...
PHPMD, статический анализ php mess detector
Просмотров 1,5 тыс.3 года назад
В этом видео речь пойдет о phpmd статическом анализе кода phpmd.org/ pull request: github.com/smpl/example/pull/5 Наш чат: t.me/dev_ru
PSALM, статический анализ PHP проекта
Просмотров 4,5 тыс.3 года назад
PSALM, статический анализ PHP проекта
PHPINSIGHTS, Статический анализ в вашего PHP проекта
Просмотров 1,5 тыс.4 года назад
PHPINSIGHTS, Статический анализ в вашего PHP проекта
PHPSTAN. Статический анализ PHP проекта
Просмотров 4,9 тыс.4 года назад
PHPSTAN. Статический анализ PHP проекта
Laravel idea plugin для phpstorm, розыгрыш ключа.
Просмотров 1,2 тыс.4 года назад
Laravel idea plugin для phpstorm, розыгрыш ключа.
Интеграция travis-ci в ваш php проект
Просмотров 1,9 тыс.4 года назад
Интеграция travis-ci в ваш php проект
Как можно ускорить выполнение большого числа миграций в dev окружение на примере laravel
Просмотров 5254 года назад
Как можно ускорить выполнение большого числа миграций в dev окружение на примере laravel
PHP, composer, публикация пакета на packagist и github
Просмотров 2,4 тыс.4 года назад
PHP, composer, публикация пакета на packagist и github
PHP, Composer, Советы по созданию пакета, composer.json
Просмотров 7 тыс.4 года назад
PHP, Composer, Советы по созданию пакета, composer.json
Типичное использование проекта, PHP Framework своими лапками #5
Просмотров 7484 года назад
Типичное использование проекта, PHP Framework своими лапками #5
Зависимости (Dependence), PHP Framework своими лапками #4
Просмотров 7384 года назад
Зависимости (Dependence), PHP Framework своими лапками #4
HTTP маршрутизация, PHP Framework своими лапками #3
Просмотров 2,4 тыс.4 года назад
HTTP маршрутизация, PHP Framework своими лапками #3
HTTP Application, PHP Framework своими лапками #2
Просмотров 1,3 тыс.4 года назад
HTTP Application, PHP Framework своими лапками #2
Обработка HTTP, PHP Framework своими лапками #1
Просмотров 2,5 тыс.4 года назад
Обработка HTTP, PHP Framework своими лапками #1
PHP, PSR-4: Autoloading Standard (Автозагрузка)
Просмотров 5 тыс.4 года назад
PHP, PSR-4: Autoloading Standard (Автозагрузка)
Минимальные знания, Часть 1: hello world
Просмотров 1,9 тыс.5 лет назад
Минимальные знания, Часть 1: hello world
четко
Самое лучшее и понятное объяснение очень сложной темы, большое спасибо!
Спасибо большое, объяснили просто замечтально!
А я столкнулся вот с таким кодом // Автозагрузка классов function __autoload( $name ) { include_once __DIR__.'/../core/lib/class.'.$name.'.php'; }
Всё думал "почему __autoload ни один скрипт не вызывает, а классы работают?" Ваше видео всё объяснило
@@aspioneerov есть документация __autoload была первой попыткой, но была проблема в том что в ней нельзя зарегистрировать несколько функций автозагрузки (а только одну) поэтому предложили ввести новую (которая на видео) а эту функцию сделали deprecated www.php.net/manual/en/function.autoload.php
Спасибо за науку. Расскажите, что за программа?
ёмко. Спасибо.
хорошее видео без воды, спасибо
Экзаменатору зачёт. Кандидат не видит дальше того, что уже встречал. Сам ничего придумать и догадаться не может, даже с мощными подсказками. Вопрос экзаменатору: разве on duplicate key update не делает вставку атомарной операцией? И если да, то нужен ли новый Костыль-велосипед ?
Харош
Спасибо за видео, очень понравилось, что детально и с примерами ❤ Если еще произношение английских слов подтянете, вообще шикарно будет. А то Валуе вместо вэлью (value) чет режет уши))
Спасибо
Классно !!! Можете осветить тему как вставить в MVC проект PhpMailer нигде нет материала на эту тему
Спасибо, отличное объяснение, самое главное что начали от истоков в виде самостоятельной реализации автозагрузчика, так как везде обычно объясняют так "Вот композер, у него автолоад подключаем и теперь все классы доступны"
а можно таймкоды?
Типичный PHP разработчик с небольшим опытом) Но по ответам он не мидл, ну может мидл-минус или как то так)) нужно больше проходить собесы тупо для тренировок и будет лучше отвечать. Я хз как он на Голанг разработку попал кстати, там собесы ппц жесткие обычно
Спасибо. Очень полезно
спасибо тебе большое!
Непонятно
Bhai hindi bhasha me video bana le 😂
какое по итогу решение проблемы одновременной обработки файла двумя джобами (либо двух файлов разными джобами) когда один джоб может записать те данные на предмет существования которых уже успел проверить второй джоб и тогда второй джоб столкнется либо с ошибкой либо запишет уже существующие данные какое решение по итогу?
можно ссылку на тайминг где мы этот вопрос обсуждаем, не очень помню все видео, а пересматривать полтора часа нет. если коротко для решения этого существуют разные механизмы, например то что можно использовать на малых/средних проектах, это очередь в redis в List, где имеется возможность вставить в конец списка и взять в начале, особенность redis в том что он однопоточный, а значит все действия сервер выполняет последовательно (но очень быстро) пока producer не вставил данные, другие не смогут получить данные и наоборот, но тут есть свои проблемы 1. Риск потерять данные очереди (redis in memory) и периодически синкает на диск, это конфигурируется, уменьшая интервалы мы будем тормозить диск, увеличивая интервалы все будет работать, но есть риск потерять данные при некорректном завершение. 2. Воркер может взять задачу из листа и свалится сам не вернув задача назад в очередь, такая задача просто пропадет или будет выполнена частично можно использовать специализированные решения rabbitmq/kafka или любые другие, все имеют свои плюсы и минусы, в основном очереди базируются на двух моделях pull это например kafka (ну или крайне упрощенный пример redis что привел выше) и push когда брокер сам дергает воркеры это например rabbitmq возможно я ответил не тот вопрос, просто предположил
@@kuvshinovee 1:08:00
@@kuvshinovee Здравствуйте! В видео вы говорили что нужно 3 типа запроса делать на отправку файла. 1 на отправку, 2-ой на получение статуса, 3-ий вебсокет. А можно ли совместить 2 и 3-ий запросы в один ведь по сути они одно и то-же делают ?
@@EugenePolischuk да можно просто опрос статуса делают обычно раз в 10 секунд и если не повезет то обработка может завершится, а клиент все еще ждет 10 секунд и только потом узнает об окончание обработки. поэтому для повышения юзабилити делают отдельно оперативное обновление и веб сокет тут как нельзя лучше подходит, раньше использовали технику long poling, сейчас веб сокеты достаточно распространены. как итог: 1. Ручка с получением статуса по uuid - обязательно 2. Уведомление об окончание по обработки по веб сокет - опицонально
Пока лучший собес на просторах ютуба (который я смотрел) )
Отлично Евгений, только Вы не предупреждаете вот о чем, что вашим сервером можно воспользоваться либо всего лишь раз или не долго, т.к. при следующей попытке ваш сервер шлет в бан или пишет что сертификат не верный с паролем или т.п. и тд. Так что за гайд спасибо ну а с сервером эт Вы немного обманули что он Free
На сервере есть возможность зарегистрировать ник и многие их регистрируют Если вы входили под ником vasya и его не зарегистрировали за собой, а потом кто то другой его зарегистрировал, то вы не сможете войти так как не вы его зарегистрировали. Если ник зарегистрировали вы и например попробуете войти с другова устройства не перенеся туда сертификат, то у вас не получится войти, аналогичная вещь будет и после переустановки ОС. Также на сервере есть требование на минимальную длину ника, от 4 символов, эти символы должны быть символами латинского алфавита, другими словами нельзя в нике русские буквы, точки, запятые, кавычки и прочее. Приятного общения на сервере
@@kuvshinovee зашел под этим же ником, создал комнату, сменил сертификат, принял, вышел/захожу под новым сертиф, но меня уже не пускают, не понимаю в чем дело, но и ние сменить нет возможности, даже кнопки нет такой. Ставлю опять сертификат по уиолчанию - все тут же работает. Странно.
Спасибо, ты открыл мне глаза , на многие нюансы знаю ответы теперь. Лайк за труд
Спасибо за качественный контент! PDO очень хорош тем особенно кто пишет сложные sql скрипты вручную на стороне сервера БД и своим удобством при внедрении в коде. Подскажите пжл, а можно ли полностью использовать его в популярных фреймворках таких как Laravel и отказаться от Eloquent из коробки?
Спасибо, видео очень полезное
мего круто!!!!
Спасибо за суперское обьяснения
В итоге как делать то нужно ? когда есть 2 проекта которые обращаются в микросервис, где хранятся пользователи
посмотрите как это делают крупные сервисы, большинство поголовно использует oauth например. это довольно старый стрим (свыше 5 лет), но кратко основные тезисы. 1. JWT это не замена сессий и попытка использовать jwt для сессий обречена гемороем. 2. Общение между сервисами можно построить с использованием jwt, но лучше использовать ассемитричные ключ, чтобы один сервис мог генерировать токены, а другие могли только проверять их публичным ключом, не забываем о первом пункте и такое подписанное сообщение должно быть валидно не долго, по сути лучше на основе него создавать пользователя в сервисе. 3. Если у вас помимо ваших сервисов будут еще сторонние сервисы которые будут к вам подключаться, рассмотрите использование oauth например, как сейчас делает большинство крупных компаний (гугл, яндекс и тд)
Вот до чего Петю довела вёрстка((
большое спасрбо
За вчера и за сегодня пересмотрел тонну видосов на эту тему. Только этот помог по настоящему разобраться в теме и решить проблему. Сегодня я нашел ответы на те вопросы, которые даже не знал как гуглить. Константин, если читаете, огромное вам спасибо. Ни в коем случае не забрасывайте канал.
он же вроде Евгений "валуе" Кувшинов😁
Где можно пройти подобное собеседование у спеца (можно платно)? По-моему это отличный способ понять свои скилы!
у меня на канале есть пример, можете написать (собес был на +/- мидл)
Спасибо большое! Пересмотрю ещё ни раз, но и с первого раза сложилось понимание, как это работает и для чего нужно. Отдельное спасибо за нюансы, которые вы проговариваете, это очень ценная информация!
Поверхнастная и очевидная инфа по мУмбл(
Здравствуйте. А где посмотреть информацию чтобы подключиться с телефона с андроид
на оффицальном сайте www.mumble.info/downloads/ есть рекомендация использовать mumla play.google.com/store/apps/details?id=se.lublin.mumla раньше был клиент plumbe устанавливается клиент, указывается сервер, выбирается комната и в путь, я иногда с женой так по супер маркету хожу постоянно на звонке быть неудобно, набирать каждый раз занимает время, плюс надо взять трубку а запустить клиент и идти по разным отделам, надо что то сказать нажимаем на кнопку микрофона и говорим, удобно! еще раньше использовал в играх и просто в удаленном общение.
@@kuvshinovee как сделать чтобы при включении компьютера автоматически подключался в канал
@@DREY-D в настройках desktop клиента есть раздел сеть и там галочки, переподключаться автоматически, подключаться к последнему серверу при запуске. останется программу лишь добавить в автозагрузку
К серверу подключается автоматически, но там же каналы разные. Можно как-то в конкретный канал?
@@DREY-D меня подключает автоматически на тот сервер и тот канал где я был перед выходом из программы, каждый раз при запуске главное перед выходом из программы не отключатся от сервера вручную
Все испортил докер. Если бы рассказал без него было бы супер. Видео вроде для начинающих, но чтобы его понять нужно сначала разбираться с докером😢
смысл в том чтобы была возможность повторить то что на видео и не делать в видео если у вас windows установите вот так вот php, вот отсюда скачайте extension, вот так запустите бд mysql, pgsql и тд а если у вас не 11 винда то сделайте вот так. если у вас macos на m1 то вот так вот установите php вот тут возьмите extension и тд а если macos не на m1 то вот этот бинарник и тд а если у вас linux, для debian based вот так установить, вот тут конфиги и настройки и тд для rpm вот так сделайте и тут лежат настройки для arch вот так и тд видео бы растянулось на несколько часов только по настройке и всегда нашелся бы чувак на windows xp 32bit который сказал ой не могу повторить.
@@kuvshinovee Ну тогда нужно было начать с докера, чтобы было понятно для всех
@@alexdreamer11 а до докера мне надо объяснять что такое cli и как с этим работать ? как работать с git чтобы клонировать ? потом объяснять как работать с ОС ? как работать с компьютером ? и так далее ? есть какие то базовые знания, если у кого то их нет, ничего страшного может быть когда нибудь потом они у них появятся, это нормально не знать все, но это повод хотя бы сделать git clone и сделать docker-compose up -d чтобы поднять окружение, предварительно установив git, docker в свою ОС. Главный плюс этого в том чтобы пользоваться git, docker не обязательно ими владеть, можно их установить по оффицальным инструкциям инструкция есть ко многим ОС и с помощью нескольких команд все повторить. Такой подход проще чем идти путем показывая объяснения как поднять окружение в ОС, потому что всегда придет кто то с другой ОС и скажет все испортила инструкция к %название_ОС% у меня ничего не работает.
@@kuvshinovee 👍 Послал так послал. Все понятно
👍👍👍
спасибо) отличное видео, хотелось бы ещё вашего контента!
То что искал! Спасибо большое!
Спасибо! Было полезно
Грааль
Спасибо! Лайк, подписка
Спасибо за материал!
из видео я понял, что вместо require('vendor\packetName\className.php'); require('vendor\packetName2\className2.php'); require('vendor2\packetName3\className3.php'); стало use vendor\packetName\className; use vendor\packetName2\className2; use vendor2\packetName3\className3; т.е. как происходило "прописывание" 100500 require-нгов, так и происходит
вынужден с вами не согласится по нескольким причинам. во первых use используется не для автозагрузки, а как вспомогательная вещь чтобы при использование в коде Client, интепретатор и разработчик понимал какой имеено Client вы используете ? для работы по http ? или для работы с redis ? или mysql client ? Вы вполне можете использовать полный синтаксис в своем коде: new Vendor\Package\Class() но для простоты используют use Vendor\Package\Class и в коде new Class() Основная причина появления namespace в том чтобы если один из вендоров занял имя класса (например Client) то другой вендор не может его использовать и раньше до появления namespace имена классов включали в себя имя вендора Vendor_Package_Class и такую партянку приходилось указывать везде, а появления namespace позволило раскладывать классы по пакетам и использовать краткие имена, где use это лишь синтаксический сахар. Другая причина в том что она не будет подгружать класс если он уже был ранее подгружен: if (!class_exists(Vendor\Package\Class::class)) { require '...'; } Это просто для примера. Вывод очень простой require и use используются для разных целей У use есть еще и другие применения, в них вы указываете сторонние(из других namespace) зависимости в одном месте, а не их надо лазить искать по всему файлу, следуя этой логике большое количество сторонних зависимостей сигнал к тому что этот код зависит от очень много и возможно что то делается не так.
Благодарю! Очень полезно!👍👍👍
Евгений, спасибо большое! Это самый наглядный материал по этой теме который я только встречал
С английским, конечно, у тебя бедулька.. а так вроде много что по делу...
Интересно спасибо!!!
Большое спасибо. Помог очень
Отлично! Спасибо