• Почему сокет клиент зависает при разрыве соединения?

    @Vitsliputsli
    Как отлавливать разрывы сети на стороне клиента в PHP и просто пропускать выполнения функции socket_read?

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

    @Vitsliputsli
    Разумеется такие специалисты есть, не думаю, что сложно будет найти такие предложения. Есть 2 варианта - нанять менеджера (какой-нибудь кризис-менеджер работает около года, выстраивает процессы, затем уходит, т.к. стоимость его очень высока), и есть консультанты с различной стоимостью. 1 вариант лучше, т.к. в отличии от консультанта такой менеджер несет ответственность за то, что делает, т.к. он внутри. Консультант, даже дорогой, может сказать, что команда просто не точно, не полно выполняла его рекомендации (а это всегда можно сказать, к тому же команда может оказаться в ситуации, когда ей придется выбирать между положить силы на сомнительные рекомендации консультанта или выполнить план, при этом за провал плана команда по-прежнему несет ответственность). Я не видел хороших консультантов, даже дорогой консультант может начать все выстраивать по стандартным нормам, которым его обучали, на практике же, как вы правильно указали нужно выявлять слабые места и чинить их, а это сложнее, требует глубокого погружения и потому занимает гораздо больше времени. И, в конце концов, если полное болото, то всегда можно нанять обычного менеджера с опытом выстраивания процессов, но при этом и технический руководитель должен знать и уметь внедрять инновации, без этого в разработке никак.
    Ответ написан
    Комментировать
  • Mysql Хранение в оперативной памяти?

    @Vitsliputsli
    Как настроить базу данных чтобы все данные сначала хранились на Оперативной памяти но при этом сразу записывались на hdd. Естественно если будет перезагрузка все потерятся. И поэтому нужно чтобы на лету записывало на hdd но отдавало при этом с оперативки. Как настроить?

    Зачем? Если вам нужно, чтобы СУБД работала быстро, то для этого их и создают, там и так все есть. Зачем придумывать архитектуру СУБД, если это уже сделано? Тем более, не зная ничего о том, как они работают.
    Не питайте иллюзий, что вы сейчас придумаете лучшую архитектуру, чем та, над которой работают десятилетия профессионалы. К тому же, примерно как вы описали, так и работает MariaDB.
    Не "подкручивайте" настройки, дефолтных настроек вполне достаточно, что-то меняя можно "убить" СУБД. В настройки надо лезть тогда, когда есть конкретная проблема, и понимаешь, не только то, какая настройка может на это повлиять, но и то, какие другие аффекты это вызовет.
    Ответ написан
  • Проектирование БД, какую СУБД выбрать?

    @Vitsliputsli
    Вполне нормальная структура. Нагрузка низкая. СУБД та, которую лучше знаете (это актуально и для высоких нагрузок, тот же MySQL прекрасно себя показывает на высоких нагрузках, если вы его используете как базу данных, и не требуете приготовления кофе). Схемы здесь задействовать ни к чему. ClickHouse - это вообще про другое, забудьте до тех пор, пока не понадобится аналитика по большим объемам данных. Главное, не забудьте построить индексы по тем полям, по которым будете формировать выборки.
    Ответ написан
    Комментировать
  • Список технологий необходимых для backend php developer?

    @Vitsliputsli
    Технологий слишком много, и у разных компаний может быть совсем разный стек. Кто пишет сайты - обязательно фреймворки, а где-то их не будет. Где-то будут требовать знание Vertica или Clickhouse, а много где вообще ни разу не услышите этих слов. Кто-то захочет еще и знание Go, а где-то очень желателен будет React и пофиг что это не backend.
    Но есть и общие моменты, очевидно знание git, PSR, composer, xdebug, для мидла должны быть не "навыки ООП", а отличное знание и понимание (в том числе SOLID, GRASP), оценка сложности алгоритмов, sql с пониманием работы индексов (разумеется нормализация, транзакционность, уровни изолированности, ACID), знание того же самого PHP (начиная с того, где и когда применяем Exception заканчивая SPL, Reflection, даже если никогда к ним не обращались, нужно знать, что они есть, когда возникнет необходимость), способы защиты от уязвимостей, сложности параллелизма (та же самя "гонка"), типы данных и что они из себя представляют (начиная с банального почему деньги не храним в float и т.п.). К примеру, вы можете не использовать ORM, но должны знать какие они бывают и доказать почему собственно вы их не использовали в конкретной задаче. Тоже самое trait, clojure и т.д. И много еще чего. Вплоть до провакационых вопросов "есть ли в php перегрузка?".
    Это часть базисных вещей, на которые накладывается специфика работы со своими технологиями.
    Ответ написан
    Комментировать
  • Uncaught mysqli_sql_exception: Ошибка в запросе мускуля, что делать?

    @Vitsliputsli
    Используйте подготавливыемые запросы. Вы передаёте данные с кавычкой, это и вызывает ошибку.
    Ответ написан
  • Почему не изменяются данные в консоле, после изменения данных в бд?

    @Vitsliputsli
    Установите режим autocommit, и не парьтесь.
    Когда изучите транзакции, тогда вернётесь к этому вопросу.
    Ответ написан
    Комментировать
  • На собеседовании сказали, что не все функции - замыкания. Так ли это?

    @Vitsliputsli
    Абсолютно понимаю автора, он цитирует определение замыкания, а ему в ответ - определения не нужны, они лишь путают. Он спрашивает, а как тогда? Ему кто про мусорщик, кто про стек, и у него создается ощущение, что сами не могут договориться. Но кроме этого, автор прав, его функция - замыкание.
    Замыкания везде работают одинаково. Если функция содержит ссылки на переменные объявленные вне тела этой функции, и которые не являются ее параметрами - это и есть замыкание. Что значит фраза - все функции в javascript - замыкания? Дело в том, что в других языках область видимости может просто не позволить обращаться к внешним переменным, в таких языках функция не будет замыканием, но может быть возможность превратить функцию в замыкание через специальный синтаксис. В javascript таких манипуляций не нужно, поэтому в нем любая функция - замыкание.
    Т.е. замыкание это возможность в функции создать ссылки на внешние переменные. А здесь уже как следствие, работа мусорщика, если есть рабочая ссылка, то объект не уничтожается, а в приведенных примерах с 2 функциями она рабочая, так как можно получить доступ из корневого объекта, что удовлетворяет требованиям алгоритма mark-and-sweap. Но это следствие, а не принцип работы замыкания.
    Поэтому автор абсолютно прав - его функция это замыкание. Потому что ни в одном определении замыкания нет никаких упоминаний о мусорщике, а значит разницы нет на какие внешние данные ссылаться.
    Другое дело, все хотят видеть не замыкание, а его хитрое использование, а именно сохранение ссылки объявленной в замыкании при уничтожении ссылки во внешней функции. Не надо считать собеседующего бездарем, если бы вы ему объяснили свою точку зрения, он вполне мог бы и согласиться, хотя и не факт, многие собеседования проходят в виде допроса, что говорит о неадекватности или о слабой квалификации собеседующего, в такие конторы не стоит идти.
    Ответ написан
    1 комментарий
  • PostgrSQL - Какой тип данных лучше использовать для статусов, типы объекта и т.д?

    @Vitsliputsli
    В чем разница между этих типов? Какие плюсы и минусы есть?

    По факту у вас enum, и тогда вопрос как его хранить, как enum или как число, будет звучать: где реализовывать enum в коде или в БД. Реализация в коде позволит валидировать этот enum на уровне приложения без дополнительных запросов к БД, в противном случае все это ложится на СУБД. В остальном разницы нет.
    Т.к. БД всегда узкое место, то я бы реализовал это в коде, но есть адепты считающие, что все нужно пихать в БД.
    Ответ написан
    Комментировать
  • Выполнение команды Jenkins от имени пользователя?

    @Vitsliputsli
    Причем здесь Jenkins? Пользователями ОС управляет ОС. Для выполнения команд от имени другого пользователя в GNU Linux можно использовать sudo, либо пользователи должны быть в одной группе и у директории права на запись группой.
    Другое дело, а зачем Jenkins что-то копировать в директории других пользователей? Что за файлы он подкладывает Васе?
    Ответ написан
    Комментировать
  • В чем ошибка применения функции sleep()?

    @Vitsliputsli
    Вы получаете ошибку, потому как nginx не дождался ответа от php, который ожидает ответ от mysql, который лопатит ваш не хилый запрос на получение.
    Разбивайте на части, управляйте этим в коде. Как уже указано, запускайте php не через nginx, а в cli. Записывайте не построчно, а тоже блоками. 150 000 это много, попробуйте блоки по 1000, а может и меньше.
    Откуда взялся sleep? Если это троттлинг, то 30 секунд как то очень много.
    Ответ написан
  • Как ускорить работу Apache + FastCGI?

    @Vitsliputsli
    Я бы на вашем месте посмотрел бы на MySQL, потому как перегружен именно он, отсюда и тормоза.
    Ответ написан
  • Дописать в файл json и прочесть его php?

    @Vitsliputsli
    Результат выводит если запись ф файле одна, если две то выводит null

    Потому что
    {"Дата":"2022-02-02 17:40:12","День":"2022-02-02","Время":"17:40:12"}{"Дата":"2022-02-02 17:40:12","День":"2022-02-02","Время":"17:40:12"}
    это не валидный json. Валидный будет, например, такой:
    [{"Дата":"2022-02-02 17:40:12","День":"2022-02-02","Время":"17:40:12"},{"Дата":"2022-02-02 17:40:12","День":"2022-02-02","Время":"17:40:12"}]
    В любом случае, дозаписывать json неполучится. Либо обрабатывайте его полностью и полностью перезаписывайте файл. Либо храните в файле строками и читайте строками.
    Ответ написан
  • Для каких примерно целей программисту нужен computer science?

    @Vitsliputsli
    Computer science - все таки это наука, т.е. более область академических исследований, а не computer programming. Вики на это намекает так "Computer science is generally considered an area of academic research and distinct from computer programming".
    Дело не в том, что это какое-то знание, которое нужно или не нужно. Это иная сфера работы. Т.е. если ты формируешь и обучаешь модель для бизнеса с помощью CatBoost, ты занимаешься computer programming. А если ты пишешь сам CatBoost или вообще изобретаешь градиентный бустинг, то ты занимаешься computer science.
    Ответ написан
    Комментировать
  • Почему бекенд не пишут на С++?

    @Vitsliputsli
    про PHP молчу, мне все таки больше интересны крупные проекты по типу банковских систем и тд, где PHP разумеется места нет

    PHP очень быстрый язык, используется в совершенно разных областях начиная от управления станками на производстве заканчивая финтехом. Выбор С#, Java, PHP, Python зачастую состоит в "тимлиду больше нравится", так здесь язык не имеет большого значения.
    Почему не C++? Потому что долго и нет особого выигрыша в производительности. Так как отдельные модули требующие высокой скорости пишутся на Go или даже Си. А в остальном, дольше ждать ответы от базы и этих модулей, чем обрабатывать код Java или php.
    Ответ написан
  • Можно ли написать функцию, которая меняет значение таблицы автоматически в зависимости от времени?

    @Vitsliputsli
    Шедулер на стороне СУБД, либо на стороне app. Но проще и лучше просто фиксировать время до которого резервирование активно и проверять его при опросе статуса.
    Ответ написан
    Комментировать
  • Планирую перейти с 1С на Golang на сколько реально в 42 года?

    @Vitsliputsli
    Будет тяжело. 1С - это не язык общего назначения, он достаточно специализирован, большую часть придется изучать с нуля. Для разработчика изучение нового языка - это просто освоение другого инструмента (если, конечно, у него есть хорошая база), но даже в этом случае не всякий работодатель адекватно воспринимает такой переход (могут относиться как к джуну). Для 1С тем более.
    20 лет на одном месте - это очень много. Таким людям сложнее осваивать новое, не только новый язык, любые новые подходы. А если компания за 20 лет не меняла свои подходы в разработке, то еще хуже.
    Многие работодатели смотрят на возраст. Некоторые кичатся своим "молодым проактивным коллективом". Некоторые тимлиды считают, что после 30, 35, 40 способность к обучению падает вплоть до необучаемости. Но если город большой, то обязательно найдете компанию, где весь коллектив 40+, либо компанию где нет подобных стереотипов.
    В конечно итоге, все зависит только от вас. Если не утратили способность изучать новое, и есть желание, то все получится.
    Ответ написан
    Комментировать
  • MVC (PHP): правильно ли понимаю слои?

    @Vitsliputsli
    Модель (Model) - слой работы с данными. мне сложно воспринять этот слой, т.к. вряд ли контроллер всегда работает напрямую с моделью ?

    Контроллер всегда напрямую работает с моделью.

    Наверняка же есть какие-то промежуточные слои ? Например Сервис ? А в сервисах уже вызываются DAO или Repository (кстати, в чем у них отличие?).

    Нет никаких промежуточных слоев. Какого рода логика будет в модели, это уже ваше право, MVC этим не занимается.
    Мысль MVC отделить обработку пользовательского ввода (Контроллер) и вывода (Представление) от внутренней логики приложения (Модель). Вот и все.

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

    @Vitsliputsli
    Вариант с таблицей дат, вы вероятно подсмотрели где-то, где в одной таблице хранятся агрегаты разной гранулярности. Только в этом случае такие манипуляции имеют смысл. Но хорошим я бы такое решение все равно не назвал бы. Сделать несколько таблиц агрегатов выгоднее, чем все свалить в кучу и потом терять в чтении и записи, на манипуляции с дополнительной таблицей. Или еще лучше, запихнуть все в колоночное хранилище, которое само будет управлять агрегатами.
    Но вы ведь вообще не агрегаты собираете, а просто данные, так что все это ни к чему.
    Ответ написан
    Комментировать
  • Как прочитать определенную строку в файле?

    @Vitsliputsli
    Для простых файлов csv можно воспользоваться командами ОС (в которых нет переносов строк внутри строки).
    К примеру, у меня поиск 9 000 000 строки используя php занимает 31 секунду, а через sed менее чем за пол секунды.
    Для сложных условий уже не такое большое различие.
    Ответ написан