• Что значит, когда в вакансиях пишут "Опыт с одним из фреймворков: Symfony, Laravel, Yii"?

    VladimirAndreev
    @VladimirAndreev
    php web dev
    Если есть опыт использования именно фреймворка, то изучить другой будет проще, особенно когда перед глазами пример, как его правильно готовить в конкретном месте.
    Норм конторы требуют symfony, кто победнее, вынуждены искать тех, кто умеет любой фреймворк сходной архитектуры.
    Ответ написан
    Комментировать
  • Чем опытнее разработчик, тем меньше соблюдается принцип KISS?

    Как раз молодые разработчики усложняют (они чаще плодят сущности, подражая, а не думая).
    А вот специалисты с опытом упрощают. У упрощения два основных подхода:
    1. Не делать того, что не требуется.
    2. Разделять и властвовать над тем, что требуется. Правильно разделяя - мы упрощаем.

    Что касается репозиториев. Объекты бизнес логики не должны знать где и как они хранятся, как извлекаются и сохраняются. Тогда бизнес логику легко написать и протестировать. Так же легко мы можем протестировать отдельно извлечение или сохранение объектов. Что ведёт к лёгкой смене хранилища. И при этом нет стандарта на репозитории и их интерфейс. Он может быть минимальным и добавляться на основе востребованности. Не нужно сразу писать интерфейс на все случаи жизни.

    Порой случается, что бизнес логика простая. Взять объект из одного места и положить слегка изменив в другое. Вся сложность будет не в бизнес логике, а вокруг неё. С репозиториями. Один репозиторий реализует только извлечение в общий вид объекта, а второй только размещение в хранилище. И мы знаем, что если изменится API для какого-то из хранилищ, то изменения придётся вносить только для него. Мы разбили и скорее написали больше кода, но зная, что один API сырой или быстро изменяется, мы защитили себя от сложности внесения изменений.
    Ответ написан
    Комментировать
  • Почему не все элементы удаляются?

    Stalker_RED
    @Stalker_RED
    getElementsByClassName возвращет HTMLCollection.
    HTMLCollection, хранящая элементы DOM, является динамической. При изменении документа она моментально отражает все произведённые изменения.

    Вы удаляете первый элемент, и тот что был вторым становится первым. А ваш цикл "думает" что вы его уже удалили.

    Можно пройтись по этой коллекции в обратном порядке
    for(i = divs.length - 1; i >= 0; i--)
    Или можно преобразовать коллекцию в массив
    divs = Array.from(divs)
    Или вообще не использовать for
    while(divs[0])
      divs[0].remove()
    Ответ написан
    4 комментария
  • Почему не все элементы удаляются?

    Fragster
    @Fragster
    помогло? отметь решением!
    Стандартная ошибка обхода массива с одновременной модификацией.
    Используйте другой подход:

    С конца:
    var divs = document.getElementsByClassName('test');
        var i;
        for (i = divs.length-1; i >=0; i--) {
          divs[i].remove();
        }

    или в цикле while
    var divs = document.getElementsByClassName('test');
        while (divs.length) {
          divs[0].remove();
        }
    Ответ написан
    Комментировать
  • Чем опытнее разработчик, тем меньше соблюдается принцип KISS?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Принцип KISS не означает что надо использовать самые примитивные инструменты.
    Он означает, что не надо переусложнять систему без нужды.
    Если так рассуждать, так и высшее образование не нужно: "Дед отличные бани строил, хотя вовсе был неграмотный. Я и без сопромата небоскреб построю!"
    Если вы пока ещё не понимаете назначение всех этих "лееров, провайдеров и репозиториев", это не значит, что они вообще никому не нужны.

    Для того, чтобы упростить управление системой, её надо усложнить.
    Этот принцип относится к любой области человеческой деятельности, от постройки ракет до управления государствами.
    Чем сложнее система, тем больше накладные расходы на ее управление. Хоумпейдж с котиками можно и нужно делать примитивными средствами. В большом проекте надо сразу закладываться на будущую расширяемость. То есть, заранее делить ответственность между "леерами".

    И кстати. Код, в котором "всё друг на друге завязано" - это очень плохой код. Собственно, предназначение всех этих "лееров, провайдеров и репозиториев" как раз в том, чтобы компоненты были как можно более независимы друг от друга.
    Ответ написан
    1 комментарий
  • Чем опытнее разработчик, тем меньше соблюдается принцип KISS?

    Adamos
    @Adamos
    Чем опытнее разработчик, тем чаще, выполняя конкретную задачу, он понимает, что примерно такую уже решал. Поэтому опытный разработчик видит уровни абстракции, общие для многих решений. И описывает их так, чтобы потом, при решении очередной конкретной задачи, использовать написанное ранее с минимумом дополнительных усилий.
    Вы, не имея такого опыта, просто не понимаете, что все эти лееры, провайдеры и трейты - прекрасная возможность написать две строчки и быть уверенным в их работе там, где вы угробите два дня на написание "простого" решения, а потом еще неделю будете отлавливать его глюки.
    Ответ написан
    6 комментариев
  • Что такое Service Container и Service Provider?

    @alvery
    Backend Developer
    Чтобы разобраться в этом одного даже развернутого ответа не хватит. Вам нужно сперва почитать про принцип инверсии зависимостей - один из принципов SOLID. Затем разобраться что из себя представляет паттерн проектирования dependency injection и как к нему вообще пришли (service locator также упоминается). И затем собственно приходим к реализации этого паттерна в laravel. Также на заметку можно взять php di библиотеку - просто другая реализация.
    Ответ написан
    Комментировать
  • Разработчики, вы больше думаете, чем пишете, или наоборот?

    Stalker_RED
    @Stalker_RED
    В режиме "продумал, написал и заработало", на сам код уходит 10-20%% времени. Остальное - разобраться в уже существующем коде, в доках, погуглить, подумать, обсудить с коллегами или начальством.

    В режиме отладки печатается и кликается больше, но это все в прод не попадает же. Зачастую после поиска какого-то бага и написания кучи "одноразовых тестов" в коммит идет одна измененная строчка.

    В режиме "быстро клепаем демо/прототип/пруф-оф-концепт особо не задумываясь, разбрасывая по коду всевозможные TODO и давая переменным имена типа foo" - можно вообще нонстоп печатать. Ну точнее выходит около 70%, потому что иногда приходится таки голову включать или что-то читать.
    Ответ написан
    Комментировать
  • Разработчики, вы больше думаете, чем пишете, или наоборот?

    Sanes
    @Sanes
    Если коротко. То за нормальный рабочий день, продуктиного времени 4 часа.
    Ответ написан
    Комментировать
  • Как показывать тестовые задания на backend разработчика?

    @arkuzo
    Добрый день!
    Я сомневаюсь, что для тестового задания так уж нужно осваивать новую технологию - покажите, что вы уже умеете, ваш VDS - это отлично. Работодателя обычно волнует, что вы с этим сталкивались и уже разобрались, вам не придется с нуля вникать. Не стесняйтесь незнания некоторых технологий, продемонстируйте намерение учиться и все будет хорошо.

    Насчет Докера - проще разобраться, когда есть опыт работы (конфигурация + установка ПО) в командной строке какой-нибудь UNIX/Linux системы. По сути, чтобы развернуть среду, надо сделать несколько действий:
    1) Установить докер,
    2) Скачать какой-нибудь базовый образ контейнера (есть, например, контейнер на базе ubuntu, в который уже установлены apache + php 7.2)
    3) Сделать для этого образа Dockerfile, в котором прописать команды для установки дополнительного нужного ПО
    4) Сконфигурировать докер, чтобы папка на жестком диске на ваш выбор отображалась в файловую систему контейнера - туда, например, можно складывать статический контент
    5) Сконфигурировать необходимое ПО
    6) Залить данные и начать пользоваться)

    Большой +++++ - один раз составленный Dockerfile позволит неограниченно добавлять контейнеров с одинаковым ПО)
    Ответ написан
    Комментировать
  • Как узнать разрешение экрана на php?

    @402d
    начинал с бейсика на УКНЦ в 1988
    В протоколе http нет заголовка с размерами устройства . Есть только юзер агент. Думаю для реальных задач достаточно признака ,mobile
    Ответ написан
    Комментировать
  • Почему выделяется текст внутри absolute блока?

    Lumore
    @Lumore
    Front-end developer
    Оберните иконку в button, повесьте событие на кнопку и уберите с нее все стили:
    button {
    background-color: transparent;
    border: none;
    outline: none;
    }
    Ответ написан
    Комментировать
  • Как узнать разрешение экрана на php?

    Stalker_RED
    @Stalker_RED
    а скрытие блоков в display: none, проблему производительности не решает
    Вы правы. Именно поэтому придумали srcset
    Ответ написан
    Комментировать
  • Как узнать разрешение экрана на php?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Для этого в IMG теге есть специальное свойство: srcset
    https://css-tricks.com/responsive-images-css/
    Ответ написан
    Комментировать
  • Почему выделяется текст внутри absolute блока?

    @daniel_wesson
    Попробуйте запретить выделение
    -moz-user-select: none;
    -ms-user-select: none;
    -o-user-select: none;
    -webkit-user-select: none;
    user-select: none;
    Ответ написан
    2 комментария
  • Как вызвать функцию внутри метода класса?

    vn_sten
    @vn_sten
    это хелпер для удобного чтения и использования . внутри создается класс , передаются твои параметры рендериться и вуаля , башня готова
    Ответ написан
    6 комментариев
  • Как делать валидацию форм в PHP(MVC)?

    customtema
    @customtema
    arint.ru
    Норм.

    Если смущает, поделите на контроллер и две модели.
    Ответ написан
    Комментировать
  • Откуда появился исходящий 2ТБ трафик за несколько часов?

    @Mysterion
    Не реклама, но очень похоже на этот случай.
    ряд клиентов были взломаны и их серверы и VPS стали частью ботнета, который одновременно начал генерировать гигабиты исходящего трафика, чем вызвал перегрузку сетевого оборудования. Несколько часов ушло только на то, чтобы определить зараженные серверы и остановить их работу. Как мне известно, с такой проблемой столкнулись и другие провайдеры

    UPDATE: У одного из наших клиентов было похожее. Внезапно вырос исходящий SYN-трафик.
    Ответ написан
    Комментировать
  • Какой фреймворк разобрать или как получить углубленные знания MVC?

    @kuftachev
    Какой долб... просит как тестовое задание реализовать свой MVC, тем более, для джуна?

    Может там ещё и огород вспахать нужно?

    Если конечно это будет оплачиваемое задание, то ок.

    Без фреймворка могут попросить решить какую-то конкретную задачу, типа массив/строку перевернуть (если речь идёт о джуне), может какой-то алгоритм или какую-то задачу из целевой области.

    А реализовать свой велосипед предлагают обычно шарлатаны, которые курсы проводят.

    Конечно, с опытом Вы будете лазить во внутренности фреймворка, чтобы понять, почему происходит какая-то хрень, но не для того, чтобы узнать MVC.

    Ну и главное, фреймворк называют MVC, так как он как бы призывает так писать код, но кроме какого-то мапинга URL на контроллер, он не делает ничего из MVC, уже Ваш код обращается к модели( да, обычно есть какие-то инструменты для работы с ней, но это другое), дальше Вы сами указываете как отобразить. Фреймворк для другого!!!
    Ответ написан
    2 комментария
  • Какой фреймворк разобрать или как получить углубленные знания MVC?

    @bkosun
    Думаю стоит посмотреть серию видео-уроков по изучению PSR-7 микрофреймворков. В результате Вы научитесь с нуля создавать собственный компонентный фреймворк.

    https://elisdn.ru/blog/113/psr7-framework-http

    Кстати, там есть исходники, которые можно будет изучить.
    Ответ написан
    Комментировать