• Воркеры php-fpm неожиданно начинают потреблять значительно больше CPU?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Смотрите логи, отслеживайте запуск программ. Отчетливо видно, что у вас каждые 10 минут что-то запускается (маленькие короткие всплески), ну и каждые 30 минут - уже известный вам php-fpm. Но в какой-то момент что-то происходит, что поднимает нагрузку на CPU на заметный уровень. Если нагрузка снимается перезапуском php-fpm - тогда что вам стоит перед перезапуском проверить нагрузку системы (вывод top/htop/iotop/ps axf...)? Ну и логирование работы php-скриптов, которые работают под php-fpm, разумеется.
    Ответ написан
  • Важна ли бьютификация кода?

    firedragon
    @firedragon
    Senior .NET developer
    Бьютификация увеличивает размер кода. Гляньте на реакт, там вообще все в одну строчку.
    А кому нужно тот запустит дев консоль.
    Ответ написан
  • Как выбрать версию php для композер?

    gedev
    @gedev
    сисадмин-энтузиаст
    Можно добавить в файл ~/.bash_profile (если надо для одного юзера) или в файл /etc/profile (если надо для всех пользователей на сервере):

    export PATH=/opt/php74/bin/:$PATH
    alias composer='/opt/php74/bin/php /usr/local/bin/composer'

    Затем перелогиньтесь. Готово.
    Ответ написан
  • Насколько актуален чистый PHP?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Цель какая?
    Устроиться наконец на работу? Стать "разработчиком на чистом пхп"? Писать модули на Си для пхп?
    Если первое - учите фреймворки, тот же ларавель, идите работать, учитесь у коллег, читайте книжки, смотрите хорошие курсы... Во первых так вы сразу убиваете 2 зайцев - и учитесь и получаете деньги. Во вторых, если вы этого не знали, вы ВСЕ РАВНО будете практически всю жизнь учиться и читать, если уже пошли по этой кривой дорожке.
    Ответ написан
  • DDoS атака заставляет php-fpm грузить сервак на 100%, как пофиксить?

    SignFinder
    @SignFinder
    Wintel\Unix Engineer
    Ответ здесь один - ищите специалиста.
    Ваша ситуация требует знаний и анализа - волшебную команду вам не подскажут, да ее и нет IMHO в данном случае.
    Ответ написан
  • DDoS атака заставляет php-fpm грузить сервак на 100%, как пофиксить?

    dyuriev
    @dyuriev
    A posteriori
    Любая DDoS атака, которая пробивает уже настроенные защитные механизмы фиксится одним и тем же методом

    1) Смотрим какие запросы и откуда сыпятся
    2) Находим паттерн запросов
    3) Придумываем, как фильтровать паразитный трафик по паттерну

    PS: и да, заодно переписываем код, чтобы форма регистрации не грузила сайт

    UPD: Больно смотреть на эти комментарии. До автора до самого не дойдет, а другим комментаторам отвечать лень (и правильно делают, ибо автор в ответ какашками кидается), то подсказываю первый шаг в случае с CF

    итак, главное, чтобы nginx был собран с этим волшебным модулем - ngx_http_realip_module (скорее всего уже итак собран)
    если этот модуль в текущем положении дел не доступен, то с нижеописанным конфигом nginx не стартанет.
    в секцию http конфига nginx добавьте вот эти магические строки

    http {
      set_real_ip_from 103.21.244.0/22;
      set_real_ip_from 103.22.200.0/22;
      set_real_ip_from 103.31.4.0/22;
      set_real_ip_from 104.16.0.0/12;
      set_real_ip_from 108.162.192.0/18;
      set_real_ip_from 131.0.72.0/22;
      set_real_ip_from 141.101.64.0/18;
      set_real_ip_from 162.158.0.0/15;
      set_real_ip_from 172.64.0.0/13;
      set_real_ip_from 173.245.48.0/20;
      set_real_ip_from 188.114.96.0/20;
      set_real_ip_from 190.93.240.0/20;
      set_real_ip_from 197.234.240.0/22;
      set_real_ip_from 198.41.128.0/17;
      set_real_ip_from 2400:cb00::/32;
      set_real_ip_from 2606:4700::/32;
      set_real_ip_from 2803:f800::/32;
      set_real_ip_from 2405:b500::/32;
      set_real_ip_from 2405:8100::/32;
      set_real_ip_from 2c0f:f248::/32;
      set_real_ip_from 2a06:98c0::/29;
      real_ip_header CF-Connecting-IP;
    
    ...
    }


    так nginx начнет "видеть" реальные айпишники пользователей, а не серверов CF

    ТОЛЬКО ПОСЛЕ ЭТОГО ваши манипуляции с limit_req имеют смысл.
    Иначе под раздачу 429й ошибки рандомно попадают все посетители сайта

    UPD2:
    Если кто-нибудь когда нибудь посоветует вам вот такую запись
    set_real_ip_from 0.0.0.0/0;
    real_ip_header CF-Connecting-IP;

    то шлите мамкиного хакера обратно в школу.
    Ответ написан
  • Как работать с websocket в php без библиотек?

    Я раньше тоже писал свой вебсокет-сервер на php с нуля, о чём написал статью на хабре, а весь код опубликован на гитхабе.
    В комментах к статье были полезные советы и моменты, которых я изначально не учитывал. В итоге сделал несколько реализаций.
    Сейчас же использую workerman. У него большое комьюнити, понятный код и никаких зависимостей от сторонних библиотек.
    Ответ написан
  • Есть ли готовые решения для контроля уровня CO2 в помещении?

    Jump
    @Jump
    Системный администратор со стажем.
    Как люди жили до изобретения датчика CO2?
    Вентиляцию надо нормальную сделать и все.
    Тогда нет необходимости проветривать.
    А CO2 измерять смысла нет.

    Решил купить кондиционер, который бы сам проветривал помещение при превышении CO2, но с удивлением не обнаружил ничего подобного в магазинах.
    Решил купить миксер и с удивлением обнаружил что нет миксеров умеющих мыть посуду?
    Какое вообще кондиционер может иметь отношение к проветриванию???
    Проветривание это приток свежего воздуха.
    А задача кондиционера это регулировка температуры путем охлаждения воздуха.
    Ответ написан
  • Есть ли готовые решения для контроля уровня CO2 в помещении?

    15432
    @15432
    Системный программист ^_^
    Есть штука под названием бризер

    https://habr.com/ru/post/482352/
    https://habr.com/ru/company/tion/blog/

    И да, если что, обычный кондиционер нисколько не "проветривает", а просто гоняет воздух внутри помещения
    Ответ написан
  • Как правильно расчитать стоимость своего часа работы?

    @Stalinko Куратор тега Фриланс
    PHP'шник и фрилансер до мозга костей
    По поводу стоимости часа поддерживаю 2 подхода выше:
    1. Изучить рынок, посмотреть ставки людей со схожими знаниями
    2. Поделить полную стоимость проекта на количество затраченных часов

    По поводу мелких задач. Я, например, никому не навязываю минимальный объём работ. Если задача реально мелкая и с клиентом хорошие отношения, то могу сделать бесплатно. Если мне пришлось ради этого сильно отвлечься, то могу округлить до 10-20 минут. Заказчику об этом не сообщаю. Просто говорю, что на выполнение задачи ушло столько времени. Мне кажется, заказчику приятнее думать, что вы работали 20 минут, чем знать, что вы работали 3 минуты и накинули 17.
    Ответ написан
  • Как правильно расчитать стоимость своего часа работы?

    opium
    @opium
    Просто люблю качественно работать
    Рассчитать стоимость часа логично поделив стоимость проекта на количество потерянных часов, благо у вас есть оттуда данные взять

    Все мелкие задачи делать скопом раз в сутки если много или раз в неделю если свои

    Если человек хочет адхок решения то минимальный биллинг для этого у меня полчаса, плюс есть обязательная часть за то что я доступен. То есть скажем в месяц 200 баксов, и полчаса за каждую мелочь решению сразу то есть 15 баксов например, если час стоит 30. Если считать две минуты и отрыв из потока, и заказчик не согласен, я его всегда отправлять поискать человека который готов в любую минуту поднять жопу и потратить минуту времени на него.
    Ответ написан
  • Где найти мелкую работу начинающему программисту?

    @bacon
    Да уже кучу раз писали, "начинающему программисту" надо иди набираться ума в офис, туда-то достаточно не просто попасть, а про фриланс, без наличия опыта, можно забыть.
    Ответ написан
  • Где найти мелкую работу начинающему программисту?

    approximate_solution
    @approximate_solution
    JS Developer. Angular\React\Vue\Ember
    найти и исправить ошибку в коде

    Боюсь вы не осознаете всю массовость данной работы, так как иногда дебагинг занимает еще более большую часть времени, нежели плохая реализация на колене.
    Ответ написан
  • Как поступать в такой ситуации?

    Вы можете показать верстку при звонке через скайп/зум. Я иногда сам так работы принимаю, когда работаем без предоплаты. Это удобно для обеих сторон.
    Ответ написан
  • Как работает параметр self в Python?

    JRazor
    @JRazor
    Senior StarkOverFlow Programmer
    self - это instance класса. Параметры name и age - работают только в контексте функции __init__. Чтобы они работали в контексте класса - за этим и нужно присвоение к self.

    В примере - присвоение к self нужно для получение параметров из __init__ в функции info.
    Ответ написан
  • Переход к PHP-фреймворку. Какому?

    @galliard
    Laravel - если нужно быстро собрать MVP из говна и палок.
    Symfony - для всего остального (хотя лично я и MVP предпочитаю на нем собирать).
    Ответ написан
  • Переход к PHP-фреймворку. Какому?

    maksim92
    @maksim92 Куратор тега PHP
    Нашёл решение — пометь вопрос ответом!
    Порядок:
    1. Yii2
    2. Laravel
    3. Symfony

    Yii2 слишком старый, но очень хорош для старта. Можно подождать Yii3, либо сразу начинать с Symfony. Это вам обеспечит много сложностей, но при этом даст хорошее будущее. Так как в хороших компаниях практически все используют Symfony. Если покажется сложным и не подъёмным - вернитесь к Yii2.

    Рекомендую к прочтению:
    Ответ написан
  • Алгоритм гарантированного бронирования. Какие есть идеи?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Супер-пупер-дупер-алгоритм гарантированного бронирования:
    1. Ищем 4 номера, свободные в указанные даты.
    2. Если нашли, то бронируем их, иначе выдаём сообщение, что забронировать невозможно.

    При чём тут API, интерфейсы и овербукинг - совершенно непонятно.
    Ответ написан
  • Если ли существенная разница между 1600 и 4000 DPI обычному юзеру?

    @123459
    Если эти 4к dpi честные, то мышка будет удобнее в использовании, чем другая, с меньшим dpi - можно будет точнее перемещать курсор.

    Честность можно узнать спросив какой сенсор используется (или почитав отзывы) - не стесняйтесь, поддержка производиткля для ответов на такие вопросы и создана, т.к. любые более сложные вопросы решать не умеет.
    Когда узнали сенсор, если заявленное разрешение мышки выше, чем нативное разрешение сенсора и нельзя выбрать нативное, то такая мышь - неточное говно, интерполяция будет мешать вам доводить курсор небольшими движениями например при кликах на иконки.
    Узнайте, есть ли сглаживание у самого сенсора - оно снижает эффективную точность сглаживая очень маленькие перемещения.
    Если мышь хорошая - без интерполяции, то посмотрите скорость срыва, она должна быть не хуже чем у обычны офисных мышек и даже больше, по мере повышения dpi.
    Если скорость срыва будет низкой, то курсор будет замирать при очень резких движениях - матрица в мышке не успевает замечать изменение изображения коврика.
    На нативных 4к dpi скорость срыва должна быть очень большой, иначе будет замирать даже при плавных длинных движениях.
    Если dpi нечестный или срыв слишком рано, то вы фактически платите за то, чем не сможете нормально пользоваться.

    https://www.overclockers.ru/lab/34517_2/Myshi_opti...
    Это два главных критерия при выборе мышки, тк в остальном мыши различаются только корпусом.

    Но для вас корпус может иметь значение - например если не все мышцы в руке накачаны и вы не кладете локоть на стол, то в зависимости от размера корпуса мыши(он определяет ваш хват), мышь может быть тяжело возить весь день.
    Или ножки у мыши могут быть очень маленькими - если мышь тяжеловата для вас, маленькие ножки будут мешать плавно начинать движение тк чем меньше площадь контакта, тем выше давление и на пластиковых ковриках (и гладких столах) мышь на маленьких ножках будет буквально прилипать к коврику, потому совсем чуть чуть подвинуть мышь после остановки будет трудно. Это можно вылечить - спиливаются "гнёзда" в которых наклеены ножки, берется клеющаяся тефлоновая лента(в китае за пару долларов можно заказать ptfe teflon mouse feet mouse skates)такой же высоты как спиленные гнёзда+высота старых ножек(а иначе сенсор не будет точно сфокусирован - у всех сенсоров есть определенное фокусное рассточние как у фотоаппаратов и на нём они видят ваш коврик лучше всего) и клеится сзади и спереди - на всю ширину мышки.
    После этого прилипать будет меньше, но нужен ровный коврик/стол - если есть выпуклости или вмятины то будет цепляться, но есть очень тонкие пластиковые ковры вроде razer sphex(если вам не нравится ощущение от тряпичных)
    Вот это https://i.stack.imgur.com/NEhQm.jpg намного удобнее чем это aphnetworks.com/review/icemat_2nd_edition/007.JPG

    Если мышь беспроводная, то читайте по отзывам насколько быстро она уходит в сон при отсутствии движения - иначе первое короткое движение после простоя будет неточным - супердешевые китайские страдают этим, но с их dpi это почти незаметно - их и так надо огого как далеко двигать при типичном разрешении экрана full hd, неточность не замечается, тк ощущения от управления отвратительные.

    Теперь как правильно пользоваться мышами с высоким dpi:
    Ставите нативное разрешение сенсора, или следующее кратное ниже - если мышь срывается на нативном.
    (А она может срываться, если у вас плохой или грязный коврик - https://youtu.be/HEXfLdYH42w , либо стол слишком блестящий - это касается даже лазерных, кроме некоторых хитрых, например logitech darkfield, ms bluetrack )
    После этого нужно понизить скорость курсора в windows: снижая реальную чувствительность на самой мыши вы огрубляете точность наведения - ваши плавные короткие движения мышь просто не регистрирует, проявляется дискретность, движения курсора ступенчатые - это называется pixel skipping https://youtube.com/watch?v=NUiGkDB_48s
    https://youtube.com/watch?v=16CI_Qdhpaw
    https://youtu.be/pglPJlZm09c
    https://youtu.be/OYjEdFfmrts
    и ваша 4к dpi мышь работает как кусок говна за десять $
    А когда вы ставите максимальный dpi и снижаете скорость курсора в программах, то все ваши точные движения чуть сглаживаются самой windows и передаются программам почти нетронутыми
    Видео выше - из игр, но точно так же скорость курсора настраивается в windows для всех программ - зайдите в панели управления в настройки мыши снимите галку с повышенной точности указателя - это отключит ускорение: быстрые движения мыши будут перемещать курсор на такое же расстоянин, что и медленные, это важно, вы будете меньше промахиваться по мелким кнопкам когда перемещаете курсор на большое расстояние - например из центра в угол.
    https://youtu.be/_zk1B8u-A5Q
    Теперь настраивайте скорость курсора пока не получите привычное вам соотношение перемещения мыши к перемещению курсора по экрану.

    Затем сделайте фикс через markc mouse fix donewmouseaccel.blogspot.com/2010/03/markc-windows... чтобы полностью отключить акселерацию курсора - алгоритм интерполяции скорости курсора в windows сделан так, что интерполирует нелинейно - фактически внося акселерацию(даже при снятой галке), причем количество акселерации зависит от dpi монитора. Markc fix подменяет значения в интерполяторе делая его полностью линейным (не бойтесь сломать, там есть файл который возвращает всё как было).
    После этого управлять интерфейсом программ станет удобнее - меньше будете промахиваться по мелким кнопкам.

    Кратко:
    Поставьте нативный dpi сенсора
    Или кратно ниже(нацело поделенный нативный) - если ваша мышь срывается на вашем коврике
    Отключите повышенную точность наведения указателя
    Подберите соотношение скорости курсора к расстоянию перемещения мыши такое, на которое привыкли перемещать мышь.
    Окончательно отключите акселерацию, применив фикс

    Если некомфортно из за медленной мыши - возьмите коврик больше размером, наклейте на мышь большие ножки
    Или подстройте скорость курсора и dpi опять

    При каждой смене dpi мыши/скорости курсора/dpi интерфейса windows - пересоздавайте фикс акселерации, он зависит от этих параметров, при смене любого из них без фикса у вас появится акселерация.
    Ответ написан