• ДДос атака на nginx пакетами 1 байт?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    500 строк в секунду - это не мощно и, вероятно, даже не DDoS. Если адрес один, то просто закройте ему доступ брандмауэром, а если адреса разные, то настройте лимит запросов в Nginx.

    nginx.conf
    http {
        ...
        limit_req_zone $binary_remote_addr zone=reqlimit:10m rate=30r/s;
        ...
    }

    some_site.conf
    server {
        ...
        location / {
            ...
            limit_req zone=reqlimit burst=10 nodelay;
        }
    }

    После этого запросы с одного ip-адреса начиная с 31-го в секунду будут отбрасываться.

    Как вишенку на торт, можно добавить ещё фильтр для fail2ban:

    nginx-req-limit.conf
    [Definition]
    
    failregex = limiting requests, excess: .* by zone .*, client: <HOST>
    ignoreregex =

    и правило в jail.local
    [nginx-req-limit]
    enabled = true
    port = http,https
    filter = nginx-req-limit
    logpath = /var/www/*/*/logs/error.log # Здесь укажите свой путь к логам виртуального хоста
    findtime = 600
    maxretry = 10
    bantime = 7200

    После этого адреса DoS'еров будут автоматически блокироваться брандмауэром на два часа. Что разгрузит Nginx от обработки паразитного трафика.
    Ответ написан
    11 комментариев
  • Как поменять цвет текста?

    mmmaaak
    @mmmaaak
    Погугли в чем разница между =, == и ===
    Ответ написан
    1 комментарий
  • Как брать оплату в телеграм?

    MinTnt
    @MinTnt
    1) Проработать ЛС бота, в котором будет Бот скидать чек для оплаты, а так же проверять оплату, хороший варянт красиво организовать при помощи inlinekeyboard с параметром url=''
    2) Сделать в боте или парсинг, или через api, проверка оплаты чека, когда человек к примеру нажимает на кнопку "Проверить оплату" сделанную к примеру так же через inlinekeyboard для удобности, с добавлением задержки на нажатие
    3) В случаи оплаты, бот добавляет в группу человека, и добавляет его в базу, записывая и просчитывая туда дату, которая будет спустя 30 дней.
    4) Добавить в бота, ежедневную, или же проверку через кмд. При вводе которой ищет в базе значения ID людей которых нужно кикнуть, в графе где "дата кика" совпадает с текущей
    Ответ написан
    1 комментарий
  • Как подключить animate.css и wow.min.js?

    iamd503
    @iamd503 Куратор тега CSS
    Верстальщик
    <link href="animate.css">
    <script src="wow.min.js"></script>
    Ответ написан
    2 комментария
  • Как и чем можно реализовать GUI приложения в качестве графической оболочки Linux?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Не слишком понятно - хотите написать свое приложение с гуем или же хотите запускать существующее приложение при старте?
    Если первое - существует вагон и еще тележечка тулкитов - правда большинство из них старые и страшные.
    - Стандартный X Toolkit
    - Tk
    - Motif
    ...и что-то там еще было. Ну, qt разумеется, но qt - это не про экономию ресурсов :)
    Если второе - запускать программу вместоWM Там возможно с ключами запуска придется пошаманить, чтобы сразу растянуть на полный экран - ведь кнопок управления не будет!
    Как запускать? Через .xinitrc, если Х стартует с DM или через startx - если вручную.
    Ответ написан
    Комментировать
  • Как организовать безопасное общение между микросервисами?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Организуйте сеть, откройте наружу дырочку. Гайдов целый вагон. И кстати просто идиотизм защищать приложения если к вам уже вломились в сеть. ИМХО
    Ответ написан
  • По каким причинам может не устанавливаться Cookie?

    SilenceOfWinter
    @SilenceOfWinter Куратор тега PHP
    та еще зажигалка...
    Если перед вызовом функции клиенту уже передавался какой-либо вывод (тэги, пустые строки, пробелы, текст и т.п.), setcookie() вызовет отказ и вернет FALSE. Если setcookie() успешно отработает, то вернет TRUE. Это, однако, не означает, что клиентское приложение (броузер) правильно приняло и обработало cookie.
    php.net/setcookie
    Ответ написан
    1 комментарий
  • Как выбрать какую функцию запустить в php файле при Ajax запросе?

    Adamos
    @Adamos
    data: ({login: loginUser, action: 'checkLogin'}),
    и
    switch($_POST['action']) {
    case 'checkLogin':
    Ответ написан
    Комментировать
  • Как собрать / сконфигурировать мощный пк с упором на виртуализацию?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Некоторое время назад я задавался аналогичным вопросом и под аналогичные задачи: хотелось отдельные системы под игры, разработку, и тестирование. Исследовал плюсы и минусы виртуализации и проброса железа в виртуалку и пришел к наиболее оптимальному варианту: мощная рабочая станция с игровой видеокартой, хостовая ОС - Windows, набор виртуалок (порядка 20-30 штук) в VirtualBox для разработки и тестирования, в т.ч. различные дистрибутивы линукса, BSD, OSX, разные версии Windows. В качестве дополнения использую маленький и простой комп на атоме для запуска/тестирования на реальном железе. Проброс железа в виртуальные машины сопряжен с рядом сложностей и вообще не гарантирует отсутствие проблем с в играми и прочем. Ну т.е. проще играть на хосте, чем заниматься решением проблем, которые и сам же себе создаешь пытаясь играть в виртуалке.
    По железу - выбираете топовый процессор (если нужна ОСХ - то лучше интел, если не принципиально - то можно и амд) от шести-восьми ядер. Памяти от 32 гигабайт — вполне хватает, например, на несколько запущенных виртуалок под тяжелую разработку (студия, сборка браузеров и т.п — где надо 4-8 ГБ) и десяток-два под мелкие задачи. На ближайшие несколько лет 64 ГБ и процессора на 8-16 ядер в целом хватит под такие задачи без необходимости апгрейда каждые несколько месяцев. Видеокарту выбираете под разрешение монитора и/или их количество: 1080p и 4k — для первого варианта хватит и 1060 поиграть, а вот для 4к лучше таки что-то типа 1080 / Vega64 брать. Накопитель - лучше конечно брать что-то типа PCI-E Samsung 950 Pro — интелловский оптан еще не скоро подешевет и обгонит флеш, да и вообще не факт, что и самсунг к этому времени не подтянет свои продукты (хотя, сильно сомневаюсь, что интел будет слишком сильно вырываться вперед - ведь технически оптан вроде как быстрее любой флеш, но по факту пока лишь по иопсам и задержкам опережает). Объем: зависит от количества виртуалок и их типа — 0.5-1 Тб для большинства хватит вполне, но можно и на 2ТБ взять. Смысла ставить линукс в дуалбут для разработки не имеет особого смысла — да и банально неудобно каждый раз перезагружаться. А на мощной машине вообще не замечаешь разницы в работе текстового редактора на хосте и в виртуалке. В целом — конкректный конфиг зависит от бюджета.
    Ответ написан
    Комментировать
  • QEMU как ускорить?

    hint000
    @hint000
    у админа три руки
    invalid accelerator kvm
    И не может работать в macOS.
    KVM только для Linux.

    https://ru.wikipedia.org/wiki/MacOS
    В macOS используется ядро XNU, основанное на микроядре Mach и содержащее программный код, разработанный компанией Apple, а также код из ОС NeXTSTEP и FreeBSD.

    https://ru.wikipedia.org/wiki/KVM
    KVM (Kernel-based Virtual Machine) — программное решение, обеспечивающее виртуализацию в среде Linux...
    Программное обеспечение KVM состоит из загружаемого модуля ядра (называемого kvm.ko), предоставляющего базовый сервис виртуализации,..
    Ответ написан
    Комментировать
  • Какая есть хорошая книга по проектированию web api в микросервисной архитектуре?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    5f3024f62f974701918304.jpeg
    Ответ написан
    Комментировать
  • Стоит ли создавать небольшой интернет магазин на Java+Angular? Какие технологии лучше использовать?

    @caballero
    Программист
    технооллогии надо использовать те что знаешь.
    И чем проще тем лучше. То что не ява с ангуляром.
    А вообще полно готовых магазинов написаных на php (а значит становятся на любой хостинг) делать самопал нет никакого смысла - кому он нужен будет?
    Ответ написан
    Комментировать
  • Стоит ли создавать небольшой интернет магазин на Java+Angular? Какие технологии лучше использовать?

    kirbi1996
    @kirbi1996
    Ты так говоришь как будто все эти технологии знаешь и нет разницы на чем писать. По хорошему создаешь сайт и отдельно еще админку. Через админку будешь отправлять запросы на управление товарами и прочим. На основном сайте продавать. Как вариант я бы посоветовал react на фронте, php на бэке. Если нужна гибкость то да нужно полностью все самому писать, чтобы бэк разбрасывал по базе данных все как тебе нужно. Другой вопрос на сколько большие у вас скилы чтобы писать сразу и фронт и бэк и верстать и по сео двигать.
    Ответ написан
    Комментировать
  • Как значения select text отправить на почту?

    Igor_307
    @Igor_307
    Фрилансер
    даю удочку

    пишите js обработчик на событие onchange
    берете значение из selecta
    добавляет скрытое поле в вашу форму
    добавляете выбранное значение в скрытое поле

    в итоге на сервер прилетит значение из selecta и в крытом поле его название

    если нужно набросаю пример
    Ответ написан
  • Регистрация LLC компании в США?

    @boss_lexa
    счет для компании открывают удаленно даже иностранцам
    https://mercury.co

    https://stripe.com/atlas
    тут сразу с платежами и счетом в mercury

    сам не проверял
    Ответ написан
    2 комментария
  • Какие технологии выбрать для web/desktop app?

    Sanes
    @Sanes
    Electron или Qt например.
    Ответ написан
    Комментировать
  • Как перейти на следующий элемент массива в JS?

    Seasle
    @Seasle Куратор тега JavaScript
    function* iterateArray(array) {
      for (const entry of array) {
        yield entry;
      }
    }
    
    const numbers = [2, 4, 6, 8, 10];
    const iterator = iterateArray(numbers);
    
    console.log(iterator.next()); // { value: 2, done: false }
    console.log(iterator.next()); // { value: 4, done: false }
    console.log(iterator.next()); // { value: 6, done: false }
    
    // Дополнение
    const adapter = iterator => () => {
      const entry = iterator.next();
    
      return entry.value;
    };
    
    const next = adapter(iterator);
    
    console.log(next()); // 2
    console.log(next()); // 4
    console.log(next()); // 6

    Версия без генератора:
    const iterator = array => {
    	let index = 0;
    
    	return () => {
    		const value = array[index];
    
    		if (index < array.length) {
    			index++;
    		}
    
    		return value;
    	};
    }
    
    const numbers = [2, 4, 6, 8, 10];
    const next = iterator(numbers);
    
    console.log(next()); // 2
    console.log(next()); // 4
    console.log(next()); // 6

    Я бы настаивал на версии с генератором, т. к. используя его, можно всегда узнать когда массив закончился. Оба варианта возвращают undefined как обозначение об окончании массива. Следовательно, во втором варианте можно проверять на undefined и если получаем true, значит проитерировали весь массив. Но что если undefined будет значением массива? В этом случае генераторы всю работу делают за нас, т. к. дополнительно отдают флаг, который говорит о завершении. Конечно, можно в варианте без генератора также симулировать данное поведение, возвращая следующую структуру:
    {
        value,
        done: array.length === index
    }

    Но зачем?
    Ответ написан
    3 комментария