Домашнее задание 18.11
- SQL сайт1 и сайт2 – посмотреть
- Прочитать документацию по sanctum (любая версия laravel)
- Прочитать статью по sanctum – пример проекта
- Сделать регистрацию, логин, логаут и роут /user/rand – если пользователь авторизован, то вернуть его данные, иначе вернуть данные случайного пользователя. Добавить к пользователю связь 1 ко многим – cars. Возвращать и его авто (использовать resource и ->whenLoaded())
Домашнее задание 15.11
- Регулярные выражения онлайн
- Справочник Регулярные выражения
-
- Найти cat
- Найти все цифры
- Найти cat и cats
- Найти все числа от 1000 до 9999
- Найти номера вида AAA-BBBB-CCC, A – любая цифра кроме 0, B – 0 или 1, C – любая цифра.
- Петя запомнил номер телефона смутно: +3753331133 и далее две цифры. Найти все походящие номера.
- Найти ac, abc, abbc, abbbc, … (b – любое кол-во)
- Найти все числа от 1000 до 9999 без цифр 5, 6, 7, 8
- Найти все числа длиной от 3 до 5, состоят из цифр и точки, которая перед последней цифрой.
- Найти все слова от 4 до 15 символов, начинаются с буквы, состоят из букв, цифр и символа _
- Найти ссылки: начинаются на https или http, далее ://www или без www, далее точка, далее только буквы или цифры, далее точка, далее домен из 2 или 3 букв. Например, https://www.site.ru
Домашнее задание 08.11
- Тестовое задание про ссылки (скрин в тг) – 2-3 недели
- Установить postman
- Повторить с урока про api – users index и show
- ООП Бугаенко (необязательно)
Домашнее задание 18.10
- Дан массив чисел. Определить, отсортирован ли он (по возрастанию или убыванию).
- Дан массив чисел. Удалить k наибольших и k наименьших чисел из него. Например, k = 2 и [2, 0, 4, 3, 1, 2, 5, 6, 3, 2] -> [2, 4, 3, 2, 3, 2]
- Дано целое число. Вывести все числа, которые получается перестановкой его цифр. Например, 235 -> 235, 253, 532, 523, 325, 352. Гуглить алгоритм генерации перестановок.
- Дана строка, которая содержит скобки. Определить, верно ли расставлены скобки, то есть кол-во ( равно кол-ву ) и ) не может быть раньше (. Например, (() – нет, (()))() – нет, (((())))()() – да
- Дан массив чисел. Написать быструю сортировку для этого массива. Описание алгоритма загуглить
- Дан текст – слова разделены пробелами и точками. Найти самое длинное слово, в котором нет цифр.
- Дана матрица из чисел. Переставить так строки местами, чтобы в первом столбце шли числа по порядку (каждое следующее увеличивалось на 1). Если это невозможно, вывести матрицу без изменений.
- Дана строка из цифр. Добавить пробелы через каждые три цифры, начиная справа. Например, ‘23456789’ -> ’23 456 789′
- Дана строка, содержащая арифметический пример: числа со знаками плюс или минус без скобок. Вычислить значение. Например, ‘-12+23-13’ равно -2
- Написать игру с компьютером (через браузер с формой). По очереди игроки называют числа от 1 до 3 до тех пор, пока сумма всех названных чисел меньше 20. Выигрывает тот, кто сделал последний ход. Можно использовать сессии. Показывать историю ходов для тестирования.
- Cоздать матрицу 3 x 4, заполнить ее случайным образом числами 0 и 1 так, чтобы в одной строке была ровно одна единица, и вывести на экран. Использовать mt_rand
- Дана строка, содержащая полное имя файла (например, ‘c:\WebServers\home\testsite\www\myfile.txt’). Выделите из этой строки имя файла без расширения.
- Дана строка и число. Дополнить строку слева и справа пробелами так, чтобы длина строки стала равна данному числу, а исходный текст строки был в центре итоговой строки. Например, ‘ abc’ и 7 -> слева уже есть 2 пробела, значит, добавляем справа 2 пробела и получаем ‘ abc ‘.
- Создайте массив со случайными числами. Затем между каждой парой элементов этого массива вставьте новый элемент, равный сумме значений соседних элементов.
- Сгенерировать случайный номер телефона России. Формат: +7(код)номер, код – задать несколько вариантов (из 3 цифр) в коде и выбирать случайно, номер – 7 цифр.
- Написать генерацию числа от 10000 до 99999, в котором должна быть хотя бы одна цифра 8.
- Сгенерировать массив из 10 чисел: 7 нулей и 3 единицы. Единицы расположены на случайных местах в списке.
- Дан массив чисел. Найти наибольшее кол-во подряд идущих нулей в нем. Например, [0, 1, 0, 0, 0, 2, 3, 0, 0] -> 3
- Дана строка. Получить строку из всех букв, которые встречаются в этой строке, без повторов, в алфавитном порядке.
- Дан текст в стиле snake, то есть слова в нижнем регистре через нижнее подчеркивание. Написать функцию, которая переводит этот текст в Camel, то есть слова слитно, каждое слово с большой буквы. Например, ‘test_example_case’ => ‘TestExampleCase’
Домашнее задание 05.08
- Вычитать тз
- Создать приватный репозиторий в github и привязать к локальному с новым проектом laravel 9. Создать новую бд. Настроить подключение к бд.
- Спроектировать таблицы. Создать миграции, модели и сидеры.
- Сделать главную страницу (шаблон FlexStart).
- Установить пакет для авторизации, debugbar.
- Создать страницу Мой профиль для администратора.
Домашнее задание 02.08
- Дан массив фамилий. Найти кол-во однофамильцев. Например, [‘ivanov’, ‘petrov’, ‘ivanov’, ‘petrov’, ‘ivanov’, ‘petrov’] – 6, [‘ivanov’, ‘petrov’, ‘ivanov’] – 2, [‘ivanov’, ‘petrov’] – 0
- Дан массив, элементами которого являются массивы, содержащие фамилии учеников. Например, a = [[‘ivanov’, ‘petrov’], [‘ivanov’, ‘sidorov’], [‘ivanov’, ‘petrov’, ‘leonov’]]. Найти учеников, которые есть в каждом подмассиве. Найти учеников, которые есть только в одном подмассиве. Найти учеников, которые есть только ровно в 2 подмассивах. Найти учеников, которые есть только в k (k – число дано) подмассивах.
- Написать функцию, которая на вход получает две строки с кол-вом часов и минут в формате “2 h 40 min”. Найти результат суммы этих периодов времени в таком же формате. Например, дано: “1 h 40 min”, “0 h 22 min”. Результат: “2 h 2 min”
Домашнее задание 31.07
- Прочитать при желании про паттерны Синглтон, Фабрика, Наблюдатель, Фасад и Стратегия.
- Потестировать Observers. Создать Observer к какой-нибудь модели (не User) и протестировать большинство из 15 стандартных событий с помощью info(…) (в .env указать daily для LOG_CHANNEL)
- Протестировать Events. Event создать двумя способами: через event:generate и make:event. Событие – пользователь написал сообщение (модели User и Message). Слушатель – получает от события пользователя и сообщение и пишет в лог их id и текст сообщения и далее удаляет сообщение из бд.
Домашнее задание 30.07
- Сделать сохранение фильтра (по возможности параметры в сессию как массив)
- Рефакторинг контроллера пользователей: сервис
- Написать функцию isList(), которая определяет, является ли данный массив строгим массивом, то есть индексы его элементов являются последовательными целыми числами, начиная с нуля. Пример, isList([4, 5, 3]) – true, isList([0 => 3, 2 => 4, 3 => 5]) – false, isList([4, 5, ‘a’ => 5]) – false
Домашнее задание 26.07
- Рекомендации по именованию для CRUD
- Повтор урока. Создать middleware для проверки роли администратора. Добавить для роутов администратора
- Сделать две формы на странице профиля. С полной валидацией и Rule
- Сделать выход из личного кабинета
- Дан массив из одинаковых по структуре массивов с любым уровнем вложенности. Например, $a = [
[‘developer’ => [‘id’ => 1, ‘name’ => ‘Ivan’]],
[‘developer’ => [‘id’ => 2, ‘name’ => ‘Petr’]],
]; Написать функцию pluck(), которая из данного массива получается одномерный массив из значений, путь к которым указан в виде строки из ключей через точку. Например, plain($a, ‘developer.name’) вернет массив [‘Ivan’, ‘Petr’]
Домашнее задание 22.07
- Прочитать статью про транзакции. Поэкспериментировать (обернуть в транзакцию любые два запроса к бд, искусственно вызвать исключение). Написать два способа транзакции.
- Повтор действия с урока по входу в личный кабинет
Домашнее задание 19.07
- Написать консольную команду, которая удаляет всех мягко удаленных пользователей.
- Написать консольную команду, которая добавляет в бд фейковых пользователей. Команда запрашивает у пользователя кол-во пользователей. Сделать проверку на валидность введенного кол-ва (от 1 до 100).
- Написать команду, которая удаляет 10 мягко удаленных сущностей. Название сущности передается при вызове команды. Например, php artisan del:soft user Поставить команды в расписание – каждый час. Протестировать. Усовершенствовать команду – можно передать несколько сущностей при вызове.
- Прочитать статьи про исключения: первая и вторая. Поэкспериментировать, проверить какой-нибудь пример из статей.
- С прошлого дз – кастомное правило валидации на пароль
- Дан массив чисел. Выполнить сортировку по четности, то есть сначала должны идти четные, потом нечетные. Можно использовать usort.
- Дан двумерный массив. Например, $a=[[100,100],[1,2,3],[4,5],[0,-1],[1,2,3,4,5]]; Переставить элементы массива $a так, чтобы их суммы чисел возрастали. То есть $a=[[0,-1], [1,2,3],[4,5],[1,2,3,4,5],[100,100]];
Домашнее задание 12.07
- Сделать кнопки для мягкого удаления и полного удаления. Показывать всех пользователей (в том числе и удаленных). Для удаленных пользователей кнопка Восстановить.
- Написать функцию, которая определяет, является ли пароль простым. Пароль простой, если менее 8 символов, или содержит менее 4 различных символов, или состоит только из цифр, или содержит ‘qwerty’ или ‘password’
Домашнее задание 10.07
- Пользователь заходит на страницу и видит кол-во посещений данной страницы и дату и время последнего посещения. Реализовать с помощью сессий и функции date(‘d.m.y H:i:s’) – возвращает строку с текущей датой и временем
Домашнее задание 02.07
- Дан двумерный массив чисел. Например, [[1, 2, 3], [4, 5], [6, 7, 8, 9]]; В каждом подмассиве поменять местами наименьший и наибольший элементы.
- Известно, что \(a_1 = 0\), \(a_2=2\) и \(a_n=3a_{n-1}-2a_{n-2}+1\). Найдите \(a_{20}\)
Домашнее задание 01.07
- Создать массив в php. Перегнать в json и обратно с помощью json_encode/_decode. Вывести промежуточный и итоговый результат.
- В произвольной модели создать два аттрибута (getSomeNameAttribute). Протестировать
- В модель doctor (из предыдущего дз) добавить soft deleting (добавить через миграцию столбец, добавить трейт). Протестировать: мягко удалить конкретного доктора, удалить доктора из базы, написать два запроса – один с игнорированием удаленных, второй – с учетом удаленных.
- Создать trait Nameable с методом, который выводит $this->name большими буквами. Подключить трейт в модели, где есть name. Протестировать.
- Протестировать casts для boolean
- Дан многомерный массив чисел. Например, [1, 2, [3, [4, 5]], 6, [7], [8, 9]]. Найти кол-во чисел в массиве.
Домашнее задание 29.06
- Создать таблицу managers (имя, фамилия, email) и drivers (имя, фамилия, телефон). Таблицу cars использовать старую. Создать связи – у каждого водителя есть один менеджер и одна машина. Добавить менеджера, двух водителей, две машины. Привязать к водителям менеджера и машину. Получить менеджера из бд и показать его водителей. Получить водителя из бд и показать его менеджера и машину
-
- Создать миграцию для таблицы doctors – хранит данные о врачах: фамилия, имя, отчество, год рождения, специальность, кол-во пациентов, кол-во лет работы, описание, created_at, updated_at.
- Создать сидер для заполнения таблицы 100 записей.
- Создать роут и новый контроллер для запросов
- У доктора с id = 5 изменить год рождения на 1975 и кол-во пациентов на 100.
- Удалить доктора с id=5
- У всех докторов, год рождения которых от 1980 до 1990 включительно обнулить кол-во пациентов
- Удалить всех докторов, у которых кол-во пациентов меньше 5
- Удалить всех докторов, у которых фамилия заканчивается на ‘ов’ и у которых специальность ‘стоматолог’
- Найти кол-во всех докторов
- Найти кол-во докторов, у которых стаж работы больше 20 лет
- Найти какой наибольший стаж у докторов
- Найти среднее кол-во пациентов у докторов специальности ‘хирург’
- Найти наименьший год рождения у докторов, у которых пациентов от 10 до 20 и специальность или хирург, или стоматолог
Домашнее задание 26.06
- Прочитать про отношения статью и документацию
- Прочитать про жадную загрузку (понять +-)
- В таблицу students добавить user_id на пользователя через миграцию. То есть несколько студентов привязаны к пользователю (менеджеру). В моделях User и Student добавить отношения. Поэкспериментировать с вызовом отношений и др. свойства (привязка и т.п.) по документации
- Добавить таблицы cars и owners. Связать их через pivot-таблицу car_owner. Поэкспериментировать с detach, sync и др.
Домашнее задание 24.06
- Carbon – все задачи Документация
- Получить всех студентов которые (с фамилией Ivanov или годом 2000) и (id > 3 или id = 1)
Домашнее задание 21.06
- Повторить код с урока локально и сделать форму для подписчиков
Домашнее задание 19.06
- Глянуть про faker
- Книга по php (в тг) Гл.2-4 прочитать
- Написать seeder для студентов
- Получить из бд список студентов
- всех
- всех упорядоченных по году
- всех упорядоченных по году в обратном порядке
- первые три студента, у которых год равен 2000
- первый студент, у которого год от 2020 до 2023
- все студенты с фамилией Ivanov и годом 2020
- количество студентов с фамилией Ivanov и годом 2020
- существует ли студент с фамилией Ivanov
- наибольший год у студентов с фамилией Ivanov
- студента у которого id равен 5
- все студентов у которых id < 10 или id < 4
- студентов с 3 по 7 с фамилией Ivanov и годом 2020
Домашнее задание 17.06
- По диагонали глянуть статью про миграции (или найти в русской документации)
- Создать миграцию для таблицы students. Таблица содержит столбцы name – имя студента, surname – фамилия, year – год рождения, address – адрес. Для выполнения миграции использовать команду php artisan migrate Файл миграции можно создать как копию файла миграции users и изменить в названии файла дату. Миграции находятся в database/migrations
- Создать модель Student. Модели находятся в app/Models.
- Создать роут и контроллер. Добавить несколько студентов в бд через Eloquent. Получить из бд а) всех студентов б) всех студентов 1995 года рождения.
Домашнее задание 14.06
- Прочитать бегло статьи про массивы и строки
- Задачи 42, 44, 45, 77
- Задачи на строки 8, 16, 32, 36, 44
Домашнее задание 12.06
- Статья про MVC
- Дорешать задачи с прошлого дз. Каждая задача с отдельным роутом и контроллером
Домашнее задание 10.06
- Посмотреть по диагонали статью про сравнение
- Задачи 42, 44
- Задачи 25, 27, 33, 38, 51, 52
- Задачи 8, 30