• Как настроить нагрузоспособность Nginx из расчета процессоров для стабильной работы?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Как настроить нагрузоспособность Nginx из расчета процессоров для стабильной работы?

    Т.к. четкого ТЗ не указано, то выдумаю свой конфиг, с 4 ядрами и 8 гигами оперативы, тогда следующие действия:

    Передадим параметры железа nginx-у, nginx.conf:
    worker_processes  4; # cores
    events {
        worker_connections  1024; # 1024 * 4 ram = 4096 (max all rps)
    }


    Настроим ограничения так, чтобы каждый ip мог делать не более 10 rpm (в минуту), nginx.conf:
    http {
        limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/m;
    
        server {
            location / {
                limit_req zone=mylimit burst=20 nodelay; # we put no more than 20 requests in the queue over the limit (anti DDoS)
            }
        }
    }

    Эти настройки помогут контролировать общую нагрузку на сервер и предотвратят его перегрузку за счет ограничения количества обрабатываемых запросов как в целом (через worker_connections), так и на уровне отдельных IP-адресов (через limit_req_zone и limit_req). Это эффективный способ защиты от спама и DDoS, а также обеспечивает равномерное распределение ресурсов сервера между всеми пользователями.
    Ответ написан
    Комментировать
  • Как максимально быстро кликнуть на элемент в браузере?

    @Antonosyan
    Для таких вещей советую использовать MutationObserver вместо рекурсивной проверки наличия элемента. MutationObserver позволяет отслеживать изменения в DOM-дереве и вызывать функцию обратного вызова при их возникновении. Это может существенно ускорить работу функции, так как она не будет постоянно проверять наличие элемента.

    Вот по вашему примеру будет примерно так

    function observeAndClickElement() {
      const targetSelector = '.f5-notifier-notification-action_btn';
      const observer = new MutationObserver((mutationsList) => {
        for (let mutation of mutationsList) {
          if (mutation.type === 'childList') {
            const notificationButton = document.querySelector(targetSelector);
            if (notificationButton) {
              notificationButton.click();
              console.log("Кнопка в уведомлении была нажата");
            }
          }
        }
      );
    
    
    observer.observe(document.body,  childList: true, subtree: true );
    observeAndClickElement();


    В этой функции мы создаем новый экземпляр MutationObserver и передаем ему функцию обратного вызова. Затем мы запускаем отслеживание изменений в DOM-дереве, указав, что мы хотим отслеживать изменения в дочерних элементах body. Когда происходит изменение, мы проверяем наличие элемента и, если он есть, нажимаем на него.

    Такой подход должен работать гораздо быстрее
    Ответ написан
    Комментировать
  • Курс или полный гайдлайн по git?

    @iMaximus
    Можно делать аmend если сделали commit потом внесли какие то изменения и хотите чтобы они попали в последний commit. Если commits несколько можно сделать squash commits т.e. из 5 сделать один.

    Лично я обычно поступаю следующим образом. Отвожу ветку от dev например dev_new_1 творю там любую дичь хоть 20 commits с идиотскими названиями. Когда понимаю что задача готова отвожу из последней версии dev свежую ветку допустим dev_new_2 в данный момент она равна dev

    Далее
    git checkout dev_new_2
    git merge --squash dev_new_1
    Смотрите что там все ваши изменения и проверяете еще раз
    git commit -m 'merged dev_new_1'

    Получается ветка со всеми вашими изменениями и одним commit.
    Эту ветку уже выставляю на pull request
    А за портянку из мусорных commits в серьезной конторе действительно могут побить :)
    Ответ написан
    Комментировать
  • Как проверить, что знаешь на базовом уровне JavaScript?

    @JSmitty
    Хотите задачку? Ловите.

    Сделать на JS светофор основной (3 цвета) и связанный пешеходный (2 цвета) с кнопкой по запросу пешеходного перехода:
    1) основной включен на зеленый, пешеходный на красный
    2) по нажатию на запрос, через не менее чем 5 секунд на 5 секунд показывается желтый на основном, затем основной - красный, пешеходный зеленый на 15 секунд. После пешеходный на красный, основной сразу на зеленый.
    3) минимальное время зеленого на основном - 60 секунд. Если кнопка запроса перехода нажата ранее 60 секунд с момента включения зеленого - пункт 2 срабатывает через 60 секунд с момента включения зеленого.
    4) после нажатия запроса и до включения зеленого на основном светофоре, кнопка запроса игнорируется.

    Часть задачи - сделать отображение светофоров, и кнопку. Кнопка всегда доступна к нажатию (не ставим атрибут disabled). Другая часть - реализовать асинхронную логику. По возможности на чистом JS (не прибегая к библиотекам).
    Ответ написан
    7 комментариев
  • Стратегия входа, путь развития во фрилансе. С чего начать, чтобы стать верстальщиком и php-программистом?

    Nikolino
    @Nikolino
    Html и css с практическими задачами лучше изучать на htmlacademy.ru. После того как освоился, качаешь бесплатные psd макеты и верстаешь, с адаптивом, какие-то сложные вещи, которые не можешь сверстать оставляешь пока.
    Далее ищешь видео где верстают макет, обычно на первых секундах-минутах показывают макет и сразу можешь понять сможешь ли сверстать сам или нет, если понимаешь, что не сможешь, то смотришь как автор это сделает, узнаешь новое для себя.

    По php. Читать большие и толстые книги пока бессмысленно, всё прочитанное будет вылетать из головы. Ставишь OpenServer, и сразу в бой:
    1. Переменные, условия, циклы, массивы.
    2. Пользовательские функции
    3. Базовые функции по работе со строками и с массивами. Комбинация функций. (важно понять и запомнить что они умеют).
    4. Post и Get запросы, получение Post и Get запросов из формы (тут сразу и html по формам подтянешь)
    5. Базы данных, простые запросы к базе, выборки, запись в базу данных из формы.
    6. Куки, сессии.
    7. Чтение и запись в файлы.
    8. Регулярные выражения.
    9. ООП, базовые понятия. Самое сложное и непонятное для новичка. Непонятно потому, что не ясно зачем это нужно и почему это в дальнейшем упрощает работу, поэтому как-то мимо ушей все пролетает.

    Если с английским хорошо, то codecademy.com.
    Если плохо, то базовую теорию (и сразу практику) делать здесь.

    Далее лучше сразу переходить на фреймворк (лучше Laravel). MVC в теории тоже понимается плохо потому, что пользу донести до понимания новичкам сложно, а при работе с фреймворками сам понимаешь почему это удобно.
    Во время изучения фреймворка и ООП подтянешь.

    Самое главное, по моему опыту обучения, это сразу делать практические задания по ходу изучения тем, постепенно, набивать руку. Задания лучше не пропускать (с мыслью "да тут легко, в теории я знаю как это сделать, пропущу, интересно что будет дальше").
    Самое неправильное, это дойти в чтении чуть ли ни до ООП, а открыв редактор кода, понять, что не можешь написать простые условия или перебор массива.

    То есть чтения меньше, практики больше. Это про голый PHP.

    Про фреймворк, если английский позволяет то Laracasts: Laravel 5.4 from scratch. Если не позволяет, то ищешь в ютубе что-то вроде "простой блог на Laravel", смотришь и кодишь параллельно у себя.
    Тут тоже самое, под попкорн просмотреть всю серию роликов от начала до созданного блога с админкой бесполезно. Обнаружится потом, что не можешь даже базовые вещи сделать. Нужно делать параллельно с автором, он делает какой-то функционал, смотришь, делаешь также, изначально может быть непонятно многое и зачем автор это делает, но со временем поймешь как это работает.

    Далее пробуешь сделать что-то свое, какие-то "фичи", например авторизацию с помощью соц. сетей, лайки к постам и комментариям (с помощью ajax, тут можно jQuery изучить чуть-чуть), вложенность комментариев и т.д. Можешь другой себе проект придумать(представь себя стартапером).

    Далее можно изучить системное администрирование чуть-чуть, покупаешь VPS недорогой, ставишь Nginx, MySQL, PHP-FPM и т.д. Пробуешь залить туда свой проект, так чтобы всё работало. Далее можешь попробовать прикрутить какой-нибудь поисковый движок (Sphinx, например). Изучение командной строки тоже на codeacedemy.com есть.

    Возможно для фриланса это и не особо нужно, но при устройстве на работу (в том числе и удаленную), будет не лишним, во многих вакансиях это требуют даже от Junior'ов (но в вакансиях любят преувеличить).

    Сам изучаю всё это недавно. До этого был Python+Django(первый фреймворк). В команде никогда не работал. Так что можно сказать передаю опыт от новичка новичку.
    Ответ написан
    3 комментария
  • Какую книгу или видеокурс посмотреть по php oop, pdo, шаблоны проектирования?

    by25
    @by25
    Веб-разработчик
    1. Мэтт Зандстра "PHP: объекты, шаблоны и методики программирования" - Врубиться в ООП
    2. Эрик Фримэн и ко "Паттерны проектирования" (Head First) - Влюбиться в ООП
    3. Эрик Эванс "Предметно-ориентированное проектирование" - научиться проектировать сложные системы
    4. Крэг Ларман "Применение UML 2.0 и шаблонов проектирования" - про проектирование, глубокое понимание ООП
    Ответ написан
    Комментировать
  • Какой опыт Git нужен веб-разработчику для работы в команде в компании?

    iKapex
    @iKapex
    как я обычно делаю:
    1)создаю новую ветку со своей фичей(и ты автоматически в нее перейдешь):
    git checkout -b name-branch
    2)делаю что надо
    3)коммичу
    git add -A
    git commit -m "Name commit"
    git push origin name-branch

    4)Обновляю свою ветку по отношению к master (так образом твой последний коммит будет стоять на вершине)
    git pull --rebase origin master

    5)Возвращаюсь в нужную ветку (master или developer)
    git checkout master
    6)Обновляю свою локальную ветку
    git pull origin master
    7)Сливаю изменения и делаю пуш
    git merge name-branch
    git push origin master
    Ответ написан