• Какую часть сервера лучше писать на PHP/Java/Go/C#/Rust вместо Node.js?

    EvgenyMamonov
    @EvgenyMamonov
    Senior software developer, system architect
    Максим, всё описанное ниже я пишу исходя из личного опыта, с некоторыми моими утверждениями можно поспорить :)

    Так или иначе, но самая ресурсоёмкая задача, почти всегда, это работа с базой.

    Несколько лет назад я делал бенчмарки Python, PHP, Node, Go.
    Для меня были важны две вещи:
    1 - скорость ответа сервера/кол-во запросов в секунду
    2 - объём сервиса в памяти, т.к. от этого зависит стоимость ресурсов

    На тесте, где сервисы не делали запросы в базу - из всех четверых лучше всего отработал Go с приличным отрывом, цифры, к сожалению, уже не помню.

    Но вся эта разница сошла на нет, как только добавился всего один простой SQL запрос в базу, в таблицу с 10 строками. И на этом фоне разница по скорости ответа была меньше 10%.

    Иными словами если ваш сервис работает с базой - критической разницы по скорости работы между Go/Rust/PHP/Node/Java, увы, не будет.

    Но другое дело если для нас важно сколько памяти "съедает" каждый сервис.

    Например у вас пошли нагрузки и вам нужно горизонтально масштабирватся, т.е. запустить, скажем 100-10000 эксемпляров вашего сервиса.

    Вот тут уже становится интереснее :)

    Один экземпляр Go занимал в памяти порядка 6мб, при том, что Pytho+Django порядка 60мб.
    Node уже не помню сколько, но что-то близкое к Python'у.
    Вот тут уже, когда серверов у вас будет много - количество серверов с Go у вас будет в 10 раз меньше :)
    Знаю случаи, когда с почти 40 серверов с API на Node перешли на 2 сервера с Go.

    От части по этому и еще по ряду причин, последние несколько лет я использую Go и Python.
    Лично я просто в мега восторге от Go :)
    Еще Go идеально подходит для написания сетевых сервисов, CLI утилит и т.д.
    Например Docker, Kubernetes и еще куча всего написаны на Go.
    Я делал подобные вещи на разных языках, и ни на чём, как на Go не получался такой красивый и понятный код, который при этом работает достаточно хорошо.

    Про PHP, если знаете его, можете писать на нём, если не знаете - учить не советую, как минимум потому, что есть Python, на нём код куда более читабельный получается, возможностей, вакансий с нормальной з\п больше.

    На C# писать не довелось, сказать о нём ничего не могу.

    Писал на Java несколько лет, но она мне очень не нравится :) Особенно, когда есть Go :)
    Если будете учить Java - готовьтесь к тому, что вы будете обслуживать Legacy код, или скорее ...нокод :)
    Но вакансий с хорошей з/п по Java тоже много. Как минимум без денег не останетесь точно.

    Rust имеет смысл использовать, когда у вас очень большая нагрузка и для вас критична latency.
    Например для показа рекламы нужно ответить за 100мс иначе вашу рекламу просто не покажут.
    Вот тут Rust выиагает у Go за счёт того, что у Go будут периодические "провалы" во время сборки мусора.
    В остальном, по моему мнению, Rust проиграет за счёт большего времени по разработке, худшей читаемости кода.

    С другой стороны, если у вас есть рабочий сервис на Node, то вместо перехода на Rust, явно буде лучше сделать просто модуль на C/C++ для Node и всё будет летать + полный контроль выделения и освобождения памяти.

    Я такую схему с модулями на C/С++ не раз использовал на Perl'е.
    Очень помогало особенно там, где нужно было чётко освобождать память, чтобы скрипты со временем не пухли.

    Надеюсь вам это как то поможет определиться :)
    Ответ написан
    4 комментария
  • Как получить данные с экрана?

    Stalker_RED
    @Stalker_RED
    5iA1thU.png
    Ответ написан
    Комментировать
  • Как получить данные с экрана?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    5ee747421dddf134076627.png
    В вашем случае можно обойтись без работы с регулярками. Просто вставляете в заданный тег - и манипулируете его содержимым.
    Ответ написан
    Комментировать
  • Почему многие говорят что mern умер?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Почему они так говорят лучше у них спросить.
    насчет древности - стеку lamp лет 20, а mern - лет 5.
    Ответ написан
    Комментировать
  • Почему многие говорят что mern умер?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Потому что могут, вот и говорят
    Ответ написан
    Комментировать
  • Регулярные действия в nodejs?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Есть более чем один пакет для таких дел. погуглите nodejs scheduler
    Какой выбрать - по вашим предпочтениям и задачам. cron тоже можно. Возможно вам и setInterval отлично подходит, в чем именно его "непрактичность"?
    Я использовал https://www.npmjs.com/package/agenda - свои плюсы и минусы.
    Ответ написан
    Комментировать
  • Почему не выводит данные(undefined)?

    @Dasslier
    FrontEnd Developer
    У вас начальный стейт app это массив. При первом рендере вы запрашиваете у массива свойство title. После этого уже должен выполняться componentDidMount. Удалите получение title, и падать не будет
    Ответ написан
    2 комментария
  • Как вы боретесь с выгоранием?

    @DeniSidorenko
    Как и писали выше , это не выгорания. Выгорания - если бы вы вообще не могли работать. Тут дело в настрое, при сдаче проекте вы мысленно представляйте что 99% работы сделано, и когда приходит правки от заказчика, вы считайте это дополнительной работы, которую вы не учли по своему графику. При сдаче проекта стоит помнить что работа завершена на процентов 80%. Правки - это не значит что вы сделали что то плохо, или неверно, просто у заказчика часто бывает и свое видение проекта, поэтому после того как вы сделали правки заказчика - то да, можете считать что работа уже почти выполнена. Но согласен, когда приходит и 3-4 волн правок( что ранее не обсуждались) теряется интерес к проекту. Тут либо помогает сила воли, либо изменив взгляд на ситуацию, относясь к этому как к новому опыту.
    Ответ написан
    1 комментарий
  • Как вы боретесь с выгоранием?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Мы просто не горим :) Мы работаем.
    Ответ написан
    Комментировать
  • Может ли быть API не как API?

    Alex_Wells
    @Alex_Wells
    PHP/Kotlin
    Нет, не "должен", но может. Лично я пришел к такой схеме:
    - 200-ые статус коды отправляются ТОЛЬКО тогда, когда все прошло успешно. В таком случае не будет никаких success: true или response: {} - а нужные данные, прямо на первом уровне нестинга. Собственно если взять за правило, что 200-ые коды возвращаются когда все ок, то можно полностью избавлятся от этих плохих проверок на наличие ключа в респонсе.
    - 400-ые и 500-ые будут попадать в отдельный колбек/реджектить промис, опять же избавляя от нужды проверять какие-то ключи. Для всех кодов ответов, кроме 400 и 422 - в ответе нету нихрена. Ни code, ни message, ни response. Вообще ничего. Вся инфа находится в самом http status коде. Для 400 и 422 прибавляется параметр code, который является номером ВНУТРЕННЕЙ ошибки (ну, например, есть какие-то предусловия для выполнения запроса - уникальность эмейл адреса при регистрации как пример) - по ней фронт может показывать отдельные ошибки либо выполнять какую-то логику.

    Плюс ко всему этому у себя локально и на сервере для фронта включен дебаг, добавляющий некий параметр _debug к каждому ответу. В нем может хранится любая инфа - сообщение с ошибкой (даже если ее можно понять по http коду или внутреннему), стак трэйс 500-ой ошибки и тд.
    Ответ написан
    Комментировать
  • Как вы переносите свою годами настроенную ОС на новый купленный компьютер? Ваши любимые программы?

    @crazyh
    1. С каких-то пор принципиально перестал кастомизировать среды, ну или делать это очень осторожно и в самом крайнем случае. Просто потому, что тогда, когда появилось много рабочих машин - стало слишком затратно это делать (либо не делать и страдать от штатных настроек), стало сложно понять, что сломалось после обновления - твоя необычная кастомизация или это проблема в мейнстриме. А так, Bash или Ansible немного спасают.
    Ответ написан
    Комментировать
  • Плюсы и минусы оформления с почасовой оплатой?

    @crazyh
    Тут уже ответили про МРОТ и премию, но хочу добавить, что это может быть и "премия" - то есть, деньги наличными, "серые". Так как не каждый наниматель хочет заморачиваться с составлением полноценного трудового договора, учитывающего почасовую оплату - это давняя и очень распространенная схема оплаты за пределами Москвы.

    То есть, налоги (НДФЛ) и страховые взносы (ПФР и ФФОМС) в этом будут платиться с того самого МРОТ в 12130 р. (с 1 января 2020 года), а больничные (точнее, определенное количество дней в году, когда работник отсутствует - как уж на словах договоритесь) работодатель может частично или полностью оплачивать как бы из своего кармана (по ТК это должен делать ФФОМС) даже не требуя справки из медицинского учреждения. А может и не оплачивать. То же самое и с отпуском и с расчетом при увольнении. Последнее - это вообще классика жанра: если работник увольняется не совсем мирно, то ему при увольнении выплачивают лишь небольшую сумму, на основании ТК, а ту самую "премию" придерживают.
    Ответ написан
    Комментировать
  • Как вы боретесь с выгоранием?

    saboteur_kiev
    @saboteur_kiev Куратор тега Организация работы
    software engineer
    Найдите себе хобби, на которое хочется тратить время. И работайте по 8 часов, остальное - на себя.
    А вообще - это не выгорание. Это банально "сила воли"
    Ответ написан
    Комментировать
  • Как вы боретесь с выгоранием?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    1. Это не выгорание, при выгорании невозможно не то что работать, а тупо встать с дивана.
    2. Нужно заранее запланировать таску "допиливание" и не закрывать проект (даже морально) пока эта таска не закрыта. Может быть даже проактивно спрашивать заказчика - есть ли какие-то доработки?
    Ответ написан
    Комментировать
  • Как вы боретесь с выгоранием?

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

    codingal
    @codingal
    Front end и не только
    На западе это называет не соблюдением worklife balance. Это только кажется, что дело в эмоциях и психике, а на самом деле чистейшая химия - вполне возможно, что и гормональный баланс нарушен. Выгорание будет неизбежным результатом если хотя бы год добираться на работу в шумном душном транспорте, много работать, а отдыхать за играми и прочим втыканием в монитор или в лучшем случае за пивом в душном помещении.
    Бороться вполне стандартными методами:
    • Пересмотреть питание, добавить отдельно витамины и микроэлементы
    • Заставлять себя хотя бы час в день бывать на свежем воздухе
    • Физ. нагрузки
    • Личная жизнь/общение с друзьями
    • Хобби, не связанное с компьютерами
    Ответ написан
    1 комментарий
  • Какую нишу IT лучше занять?

    @dimoff66
    Кратко о себе: Я есть
    Мне 20 лет, заканчиваю в след. году колледж со специальностью «информационные системы»


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

    SeaInside
    @SeaInside
    15 лет пилю все эти штуки
    Здравствуйте!
    Посоветуйте девушку, чтобы женой была хорошей? Какими навыками должна обладать, что сейчас в трендах?
    Мне вообще блондинки нравятся и чтобы готовить умела, но вон там на форуме говорят, что брюнетки лучше...

    У вас точно такой же вопрос. Занять нужно ту нишу, которая нравится вам. Ибо только в такой вы сможете развиться дальше остальных и быть конкурентоспособным.

    где сейчас требуются специалисты и что актуально

    Специалисты требуются всегда и везде вне зависимости от стека. Акцент на слово "специалисты".
    Ответ написан
    Комментировать
  • Что за ошибка Failed to load resource: net::ERR_CACHE_MISS ?

    @michaelmashay
    Есть мнение, что это Adblock - попробуйте без него.
    Ответ написан
    3 комментария
  • Почему не обновляется компонента при изменении props React?

    @dimoff66
    Кратко о себе: Я есть
    Потому что вы меняете count, но сам элемент заказа не спредите, ссылка остается той же и реакт думает что ничего не изменилось

    Вместо
    order[index].count = blablabla

    напишите
    order[index] = {...order[index], count: blablabla }
    Ответ написан
    1 комментарий