#php #98 домашние задания

Домашнее задание 26.07

  1. Написать консольную команду, которая удаляет всех мягко удаленных пользователей.
  2. Написать консольную команду, которая добавляет в бд фейковых пользователей. Команда запрашивает у пользователя кол-во пользователей. Сделать проверку на валидность введенного кол-ва (от 1 до 100).
  3. Сделать сохранение состояния всего фильтра.
  4. Дан массив из одинаковых по структуре массивов с любым уровнем вложенности. Например, $a = [
    ['developer' => ['id' => 1, 'name' => 'Ivan']],
    ['developer' => ['id' => 2, 'name' => 'Petr']],
    ]; Написать функцию pluck(), которая из данного массива получается одномерный массив из значений, путь к которым указан в виде строки из ключей через точку. Например, plain($a, 'developer.name') вернет массив ['Ivan', 'Petr']
  5. Дан массив чисел. Выполнить сортировку по четности, то есть сначала должны идти четные, потом нечетные. Можно использовать usort.
  6. Дан двумерный массив. Например, $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]]; Можно использовать usort.

Домашнее задание 23.07

  1. Повторить действия с урока по фильтру (в том числе чтобы не сбрасывался при клике на кнопку фильтра). Добавить статусы книгам и добавить в фильтр.
  2. Добавить кнопки Удалить мягко (для тех книг, которые мягко не удалены), Удалить полностью (для всех книг), Восстановить (для тех книг, которые мягко удалены). При этом в таблице отображаются все книги - и мягко удаленные, и неудаленные.
  3. Вася хочет узнать, какую оценку он получит в четверти по информатике. Учитель придерживается следующей системы: вычисляется среднее арифметическое всех оценок в журнале, и ставится ближайшая целая оценка, не превосходящая среднего арифметического.При этом если у школьника есть двойка, а следующая за ней оценка – не двойка, то двойка считается закрытой, и при вычислении среднего арифметического не учитывается. Дан список оценок - целые числа от 2 до 5 включительно. Найдите четвертную оценку.

Домашнее задание 19.07

  1. Повторить действия урока для другой сущности (например, книги). Сделать отдельный пункт меню в сайдбаре
  2. Написать функцию, которая определяет, является ли пароль простым. Пароль простой, если менее 8 символов, или содержит менее 4 различных символов, или состоит только из цифр, или содержит 'qwerty' или 'password'

Домашнее задание 05.07

  1. Повторить действия урока
  2. Сверстать страницу для создания пользователя
  3. Сделать список пользователей, удаление и создание пользователя

Домашнее задание 02.07

  1. Разобрать задачи про рекурсию с урока.
  2. Известно, что a_1 = 0, a_2=2 и a_n=3a_{n-1}-2a_{n-2}+1. Найдите a_{20}
  3. Создать trait Nameable с методом, который выводит $this->name большими буквами. Подключить трейт в две модели, где есть name. Протестировать.
  4. В модель doctor (из предыдущего дз) добавить soft deleting (добавить через миграцию столбец, добавить трейт). Протестировать: мягко удалить конкретного доктора, удалить доктора из базы, написать два запроса - один с игнорированием удаленных, второй - с учетом удаленных. Восстановить доктора. Восстановить всех докторов, у которых id < 5.

Домашнее задание 29.06

  1. Дан массив, элементами которого являются или числа, или массив. Например, $a=[1, [2, 3], 4, [5, 6, 7], 8]; а) Найти сумму всех чисел, которые содержатся в этом массиве б) Дано число. Определить, содержится ли это число в массиве в) Получить новый массив из чисел данного массива, избавившись от вложенных массивов. То есть $b = [1, 2, 3, 4, 5, 6, 7, 8];
  2. Просмотреть видеокурс по css Прочитать учебник по css до главы Таблицы включительно. Bootstrap позже - когда сделаем вместе админку.

Домашнее задание 25.06

  1. Повторить урок с валидацией. Сделать редактирование и валидацию на создание и редактирование для вашей модели

Домашнее задание 14.06

  1. Задачи 42, 44, 62, 75,
  2. Задачи на строки 42, 57, 99

Домашнее задание 11.06

  1. Повторить урок на другой модели (не менее 4 полей в фильтре)
  2. Определите, можно ли вычеркнуть из данного массива одно число так, чтобы оставшиеся числа оказались упорядоченными по возрастанию.
  3. Дан массив из n элементов. Переставьте его элементы случайным образом так, чтобы каждый элемент оказался на новом месте.

Домашнее задание 07.06

  1. Повторить все с урока на другой модели: список, создание, удаление, сообщение об ошибке удаления или успехе удаления.

Домашнее задание 03.06

  1. Пользователь заходит на страницу и видит кол-во посещений данной страницы и дату и время последнего посещения. Реализовать с помощью сессий и функции date('d.m.y H:i:s') - возвращает строку с текущей датой и временем
  2. Пользователь вводит число в форме. После отправки формы происходит редирект на эту же страницу и под формой отображается квадрат введенного числа и в форме - введенное число.
  3. Пользователь вводит email. Вывести yes, если он корректный или no иначе. Использовать готовую функцию php
  4. Пользователь указывает n и m. Вывести под формой прямоугольник из нулей - n строк и m столбцов.
  5. Пользователь вводит два целых числа a и b. Вывести все целые числа от а до b.
  6. Пользователь вводит массив целых чисел через пробел. Показать массив без наибольшего и наименьшего чисел.
  7. Пользователь вводит английские слова через пробел. Удалить повторы слов. Оставшиеся слова вывести в алфавитном порядки в низшем регистре.
  8. Пользователь вводит английские слова через пробел. И символ. И выбирает в селекте - "до" или "после". Вывести текст пользователя, добавив до или после каждого слова указанный символ.
  9. Пользователь вводит через пробел даты дни рождений. Например, 12.02 13.04 03.05 14.01. Найти кол-во дней до ближайшего дня рождения.
  10. Пользователь вводит массив чисел. И еще несколько чисел. Вывести сколько раз каждое число встречается в массиве.

Домашнее задание 29.04

  1. Форма для создания сущности в бд

Домашнее задание 24.04

  1. Создать миграцию для таблицы doctors - хранит данные о врачах: фамилия, имя, отчество, год рождения, специальность, кол-во пациентов, кол-во лет работы, описание, created_at, updated_at.
  2. Создать сидер и factory для заполнения таблицы 100 записей.
  3. Создать роут и новый контроллер для запросов
  4. У доктора с id = 5 изменить год рождения на 1975 и кол-во пациентов на 100.
  5. Удалить доктора с id=5
  6. У всех докторов, год рождения которых от 1980 до 1990 включительно обнулить кол-во пациентов
  7. Удалить всех докторов, у которых кол-во пациентов меньше 5
  8. Удалить всех докторов, у которых фамилия заканчивается на 'ов' и у которых специальность 'стоматолог'
  9. Найти кол-во всех докторов
  10. Найти кол-во докторов, у которых стаж работы больше 20 лет
  11. Найти какой наибольший стаж у докторов
  12. Найти среднее кол-во пациентов у докторов специальности 'хирург'
  13. Найти наименьший год рождения у докторов, у которых пациентов от 10 до 20 и специальность или хирург, или стоматолог

Домашнее задание 22.04

  1. С помощью команды php artisan make:seeder NotebookSeeder создать сидер для заполнения таблицы ноутбуков из предыдущего домашнего задания. Этот сидер вызвать в DatabaseSeeder. В сидере написать код добавления 10 ноутбуков в таблицу. Вызвать сидер командой php artisan db:seed Добавить в модель Notebook строку use HasFactory; Создать NotebookFactory как копию файла UserFactory в factories. Добавить в сидер код через factory.
  2. Создать четыре страницы (и роута для них) - page1, page2, page3. На странице page1 должны ссылки на page2 и page 3, на странице page 3 - ссылки на остальные страницы, на page1 - ссылки на остальные страницы. Использовать ->name в роутах
  3. Повторить код с урока - добавление шаблона flexstart в проект. Добавить папку assets в public, изменить в верстке пути к файлам через {{ asset(' ...') }} Разбить blade на несколько с помощью @include

Домашнее задание 20.04

  1. Создать миграцию для хранения данных о ноутбуках: производитель, цена, модель, диагональ монитора в дюймах, процессор, год, цвет. Все поля, кроме, модели и года, необязательны к заполнению. Создать модель с fillable. Создать роут и новый контроллер с методом.
  2. Написать код добавления 30 ноутбуков в бд.
  3. Получить список ноутбуков:
    1. всех
    2. ноутбука с id равным 5
    3. всех упорядоченных по модели, если модели одинаковы, то должны быть упорядочены по году
    4. все упорядоченные по цене в обратном порядке
    5. все у которых название процессора содержит intel
    6. все черного цвета 2000 года или зеленого цвета 2005 года
    7. все у которых производитель не Acer, которые 2000-2020 годов и у которых монитор 18 дюймов
    8. все зеленого цвета у которых производитель Acer 2010 года или Asus 2020 г
    9. первые три черного цвета у которых диагональ или 17, или от 20 до 22
    10. все у которых указаны цена и диагональ
  4. Книга Татро прочитать гл 2

Домашнее задание 17.04

  1. Создать миграцию для хранения информации про автомобили: вин номера, год выпуска, марка, модель, пробег (в км), кол-во лошадиных сил, цвет, тип коробки передач. Все поля, кроме вин номера, могут быть nullable
  2. Создать модель Car, роут cars/add - для добавления авто, cars/get - для получения данных с бд. Создать контроллер с двумя методами. Создать blade для показа результатов роута cars/get.
  3. Написать код для добавления 1 автомобиля в бд. Написать код для добавления 20 авто (через цикл). Использовать faker для цвета хотя бы. Погуглить примеры работы с faker php на русском
  4. Получить из бд список автомобилей:
    1. всех
    2. всех упорядоченных по марке
    3. всех упорядоченных по марке в обратном порядке
    4. всех упорядоченных по году
    5. первые три авто, у которых год равен 2000
    6. первый авто, у которого год от 2020 до 2023
    7. все авто зеленого цвет с автоматиской коробкой передач и мощностью более 100 л.с.
    8. все авто зеленого или красного цвета
    9. все авто зеленого цвета не 2005 года
    10. все авто, у которых указаны марка и модель
    11. авто у которого id равен 5
    12. все авто, у которых марка содержит фрагмент WX
    13. все авто, у которых модель начинается с Ma
    14. все авто у которых год не из периода 2000-2010 и пробег меньше 100000
    15. все авто у которых пробег меньше 100000 или больше 500000

Домашнее задание 15.04

  1. С нуля задачу 15 про курсы
  2. Прошлое дз п. 1
  3. Дан список дел сотрудника $tasks = ["12.02.2024 09:10-10:20", "14.02.2024 09:10-10:20", "14.02.2024 19:10-20:40", ...]; То есть когда и в какой период времени он занят. Сотрудник работает каждый день с 9:00 до 20:00. Определите, количество свободных минут сотрудника на текущей неделе.

Домашнее задание 08.04

  1. Создать миграцию для таблицы students. Таблица содержит столбцы name - имя студента, surname - фамилия, year - год рождения, address - адрес. Для выполнения миграции использовать команду php artisan migrate Файл миграции можно создать как копию файла миграции users и изменить в названии файла дату. Миграции находятся в database/migrations
  2. Создать модель Student как копию модели Lesson. Но изменить по смыслу код внутри класса. Модели находятся в app/Models. Вызвать команду php artisan ide-helper:models  (далее yes) через консоль.
  3. Написать запросы к бд через модель Student (создать роут с url /students/queries)
    1. Добавить 1 студента 2 способами
    2. Добавить сразу 5 студентов с разными данными
  4. Дано описание формы: $settings = ['input', 'textarea', 'input', 'select', 'input']; Создать в blade форму с такими полями.

 

Домашнее задание 01.04

  1. Документация Carbon
  2. Формат даты php
  3. Про carbon факты
  4. Задачи все строго по порядку (даже 10 с нуля)
  5. Долги с прошлого дз

Домашнее задание 30.03

  1. Создать route в routes/web.php для /articles. Создать в app/Http/Controllers контроллер ArticleController и метод articles в нем. Привязать роут к контроллеру. Создать в resources/views файл articles.blade.php. В контроллере создать массив articles с названиями статей. Передать переменную в view. В articles.blade.php с помощью foreach показать список статей.
  2. Создать контроллер TestController с помощью php artisan make:controller TestController
  3. Далее на каждую задачу все в отдельном роуте. Можно использовать один и тот же контроллер, но разные методы.
  4. Задачи с прошлого дз
  5. Даны два массива. Получить массив, который состоит из тех чисел, которые встречаются в каждом массиве ровно по 2 раза. Например, [1, 4, 3, 4, 4, 3], [1, 1, 4, 4, 3, 3] -> [3]
  6. Даны два массива. Получить массив, числа которого встречаются только в первом массиве. Итоговый массив не должен содержать повторы.
  7. Дана строка, содержащая дату в формате 'd.m.Y'. Например, 03.04.2024. Вывести название месяца, которому соответствует дата.

Домашнее задание 27.03

  1. Почитать про html-теги
  2. Еще сайт про html-теги с редактором онлайн
  3. Спецсимволы html
  4. Задачи по html 1-14 + проверить валидатором
  5. Установить composer и проверить командой composer --version

Домашнее задание 25.03

  1. Найти ошибку в решении с урока
  2. Прошлое дз 3 задачи - все через классы
  3. Проверить новое определение конструктора php 8 (пример в статье)
  4. Создать класс Gen для генерации паролей - в его функции должен быть параметр для сложности пароля: от 1 до 3 - простой, средний, сложный.
  5. Создать массив объектов класса Student. Про студента известны фамилия, имя, год рождения, оценки за каждый из последних 6 месяцев обучения. Показать всех информацию про все студентов. Вывести ФИ студентов и рядом с каждым его средний балл. Найти студента, у которого все оценки максимальны. Найти самого отстающего студента. Найти средний возраст студентов.

Домашнее задание 23.03

  1. Задача про шифрование и расшифрование строки (сдвиг кода символа на какое-то число)
  2. Задачи на строки Номера 131, 14, 24, 36, 42, 46, 54

Домашнее задание 20.03

  1. Функции со строками Поучиться работать с функциями substr, strlen, strpos, strrpos, str_repeat, str_replace, implode, explode.
  2. Задачи на строки  6, 8

Домашнее задание 18.03

  1. Зарегистрироваться на codewars.com Решить 1-2 задачи попроще.
  2. Список заявок от клинтов. Вывести товар с % заявок по этому товару.
  3. Дан массив книг. Про книгу известно автор, год издания, название, издательство. Показать все книги данного автора. Показать список всех авторов в алфавитном порядке с кол-вом книг у каждого. Показать издательства с количество книг, причем издательства упорядочено по количеству книг.
  4. Матрицы Задачи 21 44 48

Домашнее задание 16.03

  1. Матрицы задачи 13, 25, 11, 27

Домашнее задание 13.03

  1. Сгенерировать 100 квадратных уравнений с целыми корнями (вывести уравнения и их корни)
  2. Сгенерировать 10 случайных различных чисел
  3. Написать аналог функции shuffle
  4. Изучить функцию sort (проверить работу на конкретном массиве)
  5. Прочитать про методы сортировок пузырьком, вставками и выбором и запрограммировать.
  6. Задачи номера 38, 39, 40, 44 Во всех задачах выбирать между for и foreach

Домашнее задание 11.03

  1. Прочитать книгу Р. Савина Тестирование дот ком (необязательно)
  2. Задачи номера 37 42 51 52
  3. Сгенерировать случ. серию из 0, 1, 2, в которой количество единиц равно кол-ву двоек, а всего чисел 10.

Домашнее задание 09.03

  1. Прочитать только про первые три принципа
  2. Прочитать про match. Использовать при возможности.
  3. Дано натуральное число. Найти наибольшее четное. Если четных нет, вывести 'No'.
  4. Сгенерировать случ. серию из 0, 1, 2, в которой ровно 5 единиц и 3 двойки, остальные нули.
  5. Задачи номера 1, 2, 9, 19, 20, 22, 23, 24, 25, 27

Домашнее задание 06.03

  1. Прочитать статью Пример терпения
  2. Задача про генерацию 15 чисел - 2 способ
  3. Задача 143 из прошлого дз - доработать. Если if не сработал, то не выведет, а программа должно точно давать 3 разных числа.
  4. Задача про квадрат с нулями на диагонали. Варианты: а) на побочной диагонали нули; б) под главной диагональю нули, над ней - единицы.
  5. Задачи номера 107, 111, 113, 120, 123, 135

Домашнее задание 04.03

  1. Зарегистрироваться на github и прислать в телеграм мне логин
  2. Прочитать статью о выборе места работы
  3. Задачи номера 81, 82, 99, 103, 104, 112, 115, 121, 126, 138 (использовать mt_rand), 143
  4. Запушить дз в git
  5. 2 задачи с прошлого дз

Домашнее задание 28.02

  1. Прочитать psr-1 и psr-2
  2. Выяснить про and и or (в if)
  3. Выяснить, как идет сравнение при == (как приводятся типы в php 8 и есть ли отличие от php 7)
  4. В заметки сайт https://phptherightway.com/
  5. Задачи 38, 42, 46, 49, 50, 51, 55, 56, 57, 58, 62, 63, 64, 65, 67, 68, 71 (задача с собеседования) - использовать функцию для каждой задачи, и хотя бы в одной задаче switch и оператор ? .

Домашнее задание 26.02

  1. Установить OpenServer https://ospanel.io/download/ Создать папку с файлом index.php с кодом <?php echo 1; При открытии в браузере должно быть 1. Может помочь статья Если не удастся запустить, то использовать php-онлайн
  2. На hh.ru посмотреть вакансии php-программистов
  3. Почитать про фреймворки
  4. Задачи № 7-13 Использовать функции round, abs, sqrt, pow и др.