• Что такое кластер баз данных?

    bingo347
    @bingo347
    Crazy on performance...
    Попытаюсь объяснить на пальцах
    В большинстве случаев основная нагрузка идет на чтение БД, часто бывает, что одна машина не справляется с существующей нагрузкой, тогда поднимают кластер — запускают СУБД на нескольких машинах, одна из них объявляется мастером, остальные репликами
    Мастер занимается только записью и распространением готовых изменений по репликам
    А читаем мы только из реплик, балансируя нагрузку между ними, тем самым снижая нагрузку на каждую из них и уменьшая время отклика
    Ответ написан
    1 комментарий
  • Как победить ошибку при AJAX запросе при переходе на HTTPS "This request has been blocked.."?

    @kamwork Автор вопроса
    Как итог - проблема была в редиректе с /route/ на /route
    Запрос слался на /route/
    На локалке все верно отрабатывало, а на сервере редиректило на http протокол

    При этом GET запросы редиректятся корректно.
    Ответ написан
    Комментировать
  • Что такое end-to-end тестирование?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Понятие еnd-to-end обозначает всего-навсего классификацию тестов по уровню, на котором тестируется система, и, само по себе, ничего не говорит ни о том, какие конкретно должны быть эти тесты, ни о том, какую роль они играют в общей стратегии обеспечения/проверки качества и, также, не является методикой тестирования. (Методика - это совсем другое понятие.)

    Для понимания сути этого понятия хорошо сравнить его с модульным ("нижний" уровень) и интеграционным ("средний") тестированием на каком-нибудь конкретном примере. Давайте рассмотрим некий сферический webshop в вакууме. Предположим, в нем есть 50 классов и для большинства из них написаны модульные тесты. Они проверяют исключительно функционал конкретного модуля (чаще всего, класса), т.е. тот, что зависит только от самого модуля и ни от чего чего более. Потом есть интеграционные тесты. Они проверяют корректность работы отдельных "модулей", если их собрать вместе согласно архитектурe. Например, работает ли правильно "Корзина", состоящая, в свою очередь, из 10 классов (предварительно проверенных модульными тестами), или "Корзина", подключенная к "Вебморде" и т.д. Где-то повыше в этой иерархии есть такие интеграционные тесты, которые проверяют конкретный функционал всей системы. Например, отправляется ли юзеру мейлом копия оплаченного заказа...

    И вот тут начинается самое интересное для понимания того, что такое end-to-end тестирование! Можно представить себе тест, проверяющий, что соответствующий мейл генерируется и сбрасывается SMTP серверу. Если SMTP сервер не рассматривать, как часть разрабатываемой системы, то этот тест вполне можно назвать end-to-end тестом (послали кучку HTTP запросов через "Вебморду" и проверили сброс мыла на SMTP - все зашибись!). Однако, если настройки и эксплуатация SMTP сервера - часть проекта (например, заказана разработка webshop "под ключ"), может оказаться, что это мыло будет отфильтровано каким-нибудь спам-фильтром, превысит лимит почтового ящика пользователя... короче, не дойдет до него. Тогда этот же самый тест уже нельзя считать end-to-end, а нужно бы было написать тест, проверяющий приход мыла в POP3/IMAP ящик. (Опять же, если это действительно нужно! Ибо, в зависимости от конкретных функциональных и нефункциональных требований, архитектор и QA инженер вполне могут найти возможность обеспечить адекватный контроль качества и без такого теста.)

    Таким образом, end-to-end тесты, это такие интеграционные тесты, которые воздействуют на систему через ее самые внешние интерфейсы и проверяют ожидаемую реакцию системы через эти же интерфейсы. Почему именно интеграционные? Потому, что это единственное, что можно о них сказать наверняка: они по определению не могут быть модульными тестами. А все остальное: являются ли они одновременно приемочными, нагрузочными или еще какими - зависит только от общих плана/стратегии тестирования и той роли, которые эти тесты в них играют.
    Ответ написан
    Комментировать
  • Что такое slug в разработке?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Чаще всего, как уже написали, встречается в URL, но все же его значение чуть более шире - slug это уникальная строка идентификатор, понятная человеку (в отличие от ID) и содержащая только "безопасные" символы:
    - 0-9
    - a-z (общепринято - в нижнем регистре)
    - символ -
    - иногда еще символ _
    Могут использоваться не только в URL для понятности, но и, например, в запросах к БД (в первую очередь - на уровне АПИ) - ведь
    SELECT * FROM pages WHERE category="some-slug"
    более понятно, чем
    SELECT * FROM pages WHERE category=126.
    На уровне API это выглядит как
    get_pages_in_category( 'some-slug' )
    или
    $object->get_pages_in_category( 'some-slug' ).
    В общем, это человеко-понятный уникальный идентификатор.
    Ответ написан
    1 комментарий
  • Обязательно ли нужен html шаблон при разработке сайта?

    viktorvsk
    @viktorvsk
    Краткий ответ: что б вы не сделали, это все является html-шаблонами. Потому что в итоге все рендерится в html. Натягивать его куда-то сразу или нет, завист от поставленной задачи, целей и ресурсов. Например, если вы хотите сделать шаблон и выставить его на Envato, то нет ровно никакого смысла верстать его именно под друпал.

    Длиииииииинный ответ:
    Вам, прежде чем задавать такими глобальными философскими вопросами, сначала надо получше структурировать осознание тех самых процессов разработки.
    И для начала, например, отделять идеальное от реального.

    Как происходит в реальном мире?
    У человека есть идея
    С ней он идет к бизнес-аналитику. Тот, в свою очередь, указывает на базовые ошибки, недочеты, формирует какую-то общую картину продукта
    Потом он знакомит человека-заказчика с архитектором. На своем языке аналитик объясняет архитектору задачу. Архитектор решает, какой стек технологий лучше всего применить в данном случае.
    Далее архитектор идет к проектному менеджеру и ставить уже конкретные задачи.
    Менеджер распределяет и доводит задачи до разработчиков и идет на поиски дизайнеров и юзабилистов, которые решают, зачастую уже с заказчиком, как будет выглядеть интерфейс.
    После чего результат работы дизайнеров и юзабилистов передается верстальщикам, что бы он мог воплотить их реализацию в машинное представление.
    После этого верстальщик отдает html в руки front-end разработчика, который в простейшем случае подключает плагины jquery, в сложном - делает SPA.
    Ну, а дальше, по крайней мере сегодня, завист от того, толтый клиент или тонкий. Если сделана SPA, то господа backend'erы могут ограничиться документацией API. А если рендер идет в основном на сервере - то будут "натягивать" результат работы фронтендера на свой движок.
    А после этого в игру может вступить (а может и раньше, для поднятия тестового\стейджинг окружения) - администратор для деплоя на серверы. Или даже группа оных, модно именуемых сегодня - DevOps

    К чему так много писанины? К тому, что б понять, как примерно выглядит идеальный процесс. Конечно, все описано очень абстрактно, какие-то з венья могут дублироваться, могут дробиться на более узкоспециализирвоанные и т.д., но в общем случае часто выглядеть должно как-то так. Хорошо о процессе расписано у Ф. Брукса (например, Мифический человекомесяц).

    Так вот, а в реальном мире, конечно же, все эти роли может выполнять даже 1 человек. Благо, обилие сегодняшних готовых технологий, сервисов, высоких уровней абстракции, фримиум моделей и документаций, разжеванных в марктинговых целях - позволяет.

    Мораль: спрашивается, если это все может сделать 1 человек, то зачем городить целый хор разных чуваков, называть их модными словечками и настолько сильно обкрадывать карман заказчика?
    Все дело в том, какие цели и ресурсы. И когда за "серьезность" решения хочется заплатить - вначале, или уже в хайлоад-продакшене (уже много модных словечек употребили).
    И на самом деле, на перспективных проектах, получается так, что цена ошибки с каждой "роли" по нисходящей - увеличивается. Например, если вы выловили ошибку на уровне общения с бизнес-аналитиком - это дешевле, чем выловить ее в процессе продумывания архитектором решения. А поймать ошибку при отрисовке дизайна - дешевле, чем во время натягивании очередной фичи бекендерами.

    Вывод: всегда исходить из задачи, целей и ресурсов. Знание html нужно в любом случае, backender вы или frontender. А сверстанный голый статический html имеет гораздо более высокий показатель переиспользования, чем шаблон друпала.
    Ответ написан
    Комментировать
  • Как сделать 2 поля на одной строке?

    @vaajnur
    битриксоид
    <form>
      <div class="row">
        <div class="col">
          <input type="text" class="form-control" placeholder="First name">
        </div>
        <div class="col">
          <input type="text" class="form-control" placeholder="Last name">
        </div>
      </div>
    </form>
    Ответ написан
    Комментировать