Uzumeti, ну скажем так, готовые решения 1) протестированы 2) довольно лаконичины 3) обладают документацией
Свой велосипед понятен обычно только одному человеку - автору, и то, только в первые пару месяцев после создания. Любой, кому достанется сайт на дальнейшую поддержку, скажет только спасибо за использованную стороннюю библиотеку.
А что касается самого факта подключения библиотеки - что её размер, что оверхед на выполнение настолько маленькие, что можно ими пренебречь в сторону скорости разработки, качества результата и дальнейшего сопровождения
becks, буквально на прошлой неделе общался с HR из Amazon, и да, там ситуация ровно такая: после провала - повторный собес через полгода становится доступным.
Александр, Есть еще очень интересный случай с смайлами emoji, они уже 4 байта требуют.
И это может поломать например базу данных, если не сойдется varchar length и mb_strlen
1) Валидируем комментарий '*emoji_egg**emoji_egg**emoji_egg**emoji_egg*' как mb_strlen <=4
2) Пытаемся его записать: вставляем в колонку Comment.body с типом VARCHAR(4) кодировкой UTF-8
Получаем вполне себе Exception
UPD: toster тримает emoji в комментах. И правильно делает ) Изначально *emoji_egg* = 1 смайл-яйцо
Макс Васильев, разделять класс на 2 по отдельным файлам можно и нужно (декомпозиция), но с умом и в определенных случаях
PSR-4 и composer autoload так и работают, 1 класс = 1 файл, 2 класса в одном файле нельзя
Ответы выше скорее к тому, что в примере классы не в файлах, а в одном блоке кода - это раз
И их содержимое - это мешанина из нечитаемых названий классов, имен переменных и имен методов с перекрестными вызовами
+ имеется инстанцирование и дальнейший вызов метода наследника из родителя, хотя по идее родителю знать о наследниках нет никакого смысла
vnpp, вариантов несколько
Если нет желания раздувать стек, то
1) оповещение на email, если в приложении уже есть такая практика (т.е flow - нажать кнопку - оповещение "отчет генерируется, и иконка "in progress", потом как готово - менять иконку на "ready" - и по клику скачивание, + уведомление на почту
2) либо без уведомления, просто иконку менять, после перезагрузки страницы (не очень user friendly)
если чуть раздуть стек - то:
3) уведомление по websockets (server push), выводить прям в браузер алертом. Либо даже скачивание инициировать - тогда визуально не поменяется процесс. Нажал, подождал, получил пуш из сокетов - начало качаться. Тут обязательно добавить fallback к пункту 2 (чтобы если страницу закрыл человек, или сбой сети - сгенерированный отчет можно было скачать после восстановления)
4) browser notifications через Notifications API с тем же откатом к сценарию 2
Немного ортогонально вопросу - поэтому комментом
Заниматься склонением/спряжением как правило дело очень неблагодарное и забагованное
Лучше именно интерфейс строить таким образом, чтобы слова использовались в обычной форме, а не в измененной
Насколько я помню это даже в дизайн гайды как правило включается
Так что если вопрос был вызван попыткой реализовать предоставленный дизайн или тз - я бы начал задавать вопросы о целесообразности.
Особенно если планируется локализация на другие языки
А по теме уже ответили, white/black lists вполне решат описанную задачу
Иван Шумов, удаление данных как явление плохой практикой назвать нельзя. Бывают разные ситуации. Данные могут быть мусором. Может быть ограниченное финансирование и очень большие объемы данных (тот же ютуб не хранит оригиналы видеофайлов, а только отэнкодированные версии, и это экономит минимум 20-30+% от общего объема хранилища даже если рассматривать энкодирование банальным ffmpeg). Может стоит им написать в саппорт, чтобы они перестали следовать плохим практикам и просто закупили еще пару сотен серверов?)
И да, даже хранение этих оригиналов проблема решаемая (хоть на ленты их писать, хоть в AWS Glacier отправлять - дешевые способы есть), но это вовсе не значит, что все обязаны эти данные только накапливать
Иван Шумов, при чем тут вообще епам, предыдущие 8 лет опыта я получал не в нем :)
Ответ и решение стоит адаптировать под ситуацию и опыт спрашивающего. Andrew Lynx тут явно нужны не big data, обучение, анализ, а просто объяснение, почему файл сразу грузится и сохраняется на сервере в его плагине, а также что потом делать с тем, что осталось ненужное ему.
В обычном пет проекте этого хватит за глаза.
kaxa3201, нет ничего сложного
достаточно локально развернуть поисковый кластер яндекса с зеркалом всех их данных и искать там *сарказм*,
Если серьезно - без запроса к их серверам никак.
Если с запросом - выдирать $_GET['q'] и curlом забирать данные с yandex.ru/search?q=$_GET['q'] и выводить дальше на странице. (читай - гуглить как "парсить выдачу яндекса")
Либо выводить iframe с таким же src
Оба варианта будут со своими подводными камнями и не особо понятно, какой профит от этого ожидается
на всякий случай добавлю коммент, что ответ - не троллинг
MacbookPro для работы с php, go и ReactNative подходит отлично
Экран 15 присутствует, автономка отличная
А винду второй системой поставить можно через bootcamp из коробки
Запас по мощности тоже есть, у меня модель Mid 15, и проблем почти не бывает по мощности (разве что когда число одновременно запущенных виртуалок становится неприличным, но это специфика текущего проекта)
kostya-ZP, по нерепрезентативной выборке из моих 3х последних компаний я бы сказал, что от места к месту требования к тестировщикам могут быть диаметрально противоположными. однако опыт подсказывает, что так оно обычно и бывает.
Silver bullet "что читать, что учить" нет и не будет. Ответы на вопросы "а что вы на работе делаете" будут применимы только к одной компании, в которой и работает отвечающий. И то - есть вероятность, что если он не проводит собеседования и не принимает людей, то ответ внезапно окажется неверным.
А по идее всем и всегда дают один и тот же совет, ходить по собеседованиям. Именно там в реальных условиях можно узнать и пробелы в знаниях, и что требуется в данной конкретной фирме. (опустим проблему, что часто вопросы/задания на собеседованиях вообще нерелевантны тому, что надо делать на работе). А именно умение проходить собеседования - это тоже навык, который нужно нарабатывать, и к рабочим обязанностям он отношения не имеет.
В зависимости от города, кстати, есть шанс попасть на курсы тестировщиков в достаточно крупные компании, и там уже объяснят/обучат/заточат под себя. Но это не везде есть
Если зайти буквально на соседний домен - можно встретить на первой же странице вот такую ссылку: тык
Вообще умение гуглить и находить ответы самому для тестировщика must have
Алексей Коновалов, а какая ошибка "предвиденная"?
по сути да, можно написать код чуть иначе, без Exceptions в контроллере, в контроллере только модель и сервис, провести какой-то кастомный 'Validate', делать массив 'errors', проверять его на длину и тд.
Но возникают вопросы. Что тогда есть ошибка? Возвращенный из функции false? null? пустой массив? массив с ключом 'errors'? массив с ключом 'errors' где значение по ключу не пустой массив?
Exceptions - это базовая конструкция языка, которой точно не стоит пренебрегать, и бояться пользоваться. Явная ошибка всегда лучше чем неявная
Прокинутый неотловленный Exception всплывет еще на staging окружении, в то время как кастомные 'errors' могут жить в коде незамеченными на проде годами.
Конкретно нормально именованный Exception еще и коду читаемости добавляет
Чисто интереса ради в текущем проекте сделал поиск по вхождениям Exceptions в кодовую базу - 3038 вхождений (включая выбрасывание новых и отлов, в том числе и в vendor). Проект среднего размера, чуть меньше 5 лет ему
Только если речь идет о продакшн коде - так лучше не делать
Это сильно усложняет навигацию по коду (т,е перейти из места вызова экшена к его коду невозможно)
И так же существенно сокроет реализацию - код станет неочевидным (т.е простое чтение кода не даст ответ, что будет запущено и в каком порядке без непосредственного запуска).
Также появятся ошибки вида "вызов несуществующего экшена", которые нужно отдельно отловить