• Список технологий необходимых для 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 менее чем за пол секунды.
    Для сложных условий уже не такое большое различие.
    Ответ написан
  • Как вывести строки с бд в зависимости от их количества с ограничением?

    @Vitsliputsli
    Наверное, потому что:
    PDOStatement::fetch — Извлечение следующей строки из результирующего набора
    в то время, как есть:
    PDOStatement::fetchAll — Выбирает оставшиеся строки из набора результатов
    Ответ написан
    Комментировать
  • Какие проблемы с сетью решаются низкоуровневой отладкой?

    @Vitsliputsli
    Подскажите, какие проблемы с сетью реально встречаются на практике, которые можно обнаружить и решить таким способом?

    Проблем много и разные.
    Касательно неправильного порядка доставки TCP-пакетов, то такое возможно при балансировке нагрузки на несколько каналов, которые работают с разной скоростью.
    Или, например, при использовании в сети шифрования, видел такое на Dionis DPS, из-за распараллеливания расшифровки.
    BPF ничего не решает, только помогает обнаружить. Насколько BPF позволяет легче диагностировать трудно сказать.

    Может, что-то можно эмулировать на виртуалках?

    А зачем? Есть же tc, с возможностью эмуляции различных сетевых проблем.
    Ответ написан
    Комментировать
  • Почему выдает ошибку bash: npm: command not found?

    @Vitsliputsli
    Ну раз bash пишет что команда "npm" не найдена, вероятно стоит установить npm.
    Ответ написан
  • Взаимосвязанные сайты?

    @Vitsliputsli
    У каждого сайта есть свой сервер, своя статика и своя база данных. И все эти сервера находятся далеко друг от друга.

    Например XDCR.
    Ответ написан
    2 комментария