• Как распознавать в php слова (типо систем компьютерной алгебры)?

    @Vitsliputsli
    Берете транслятор, если на основе php, то например phplrt. И пишите грамматику вашего языка. Перед написанием рекомендую прочитать "книгу дракона", это прям библия компиляторов, как минимум главы про грамматику.
    Ответ написан
    Комментировать
  • Как выбрать данные, если нет в одной таблице, то взять из другой?

    @Vitsliputsli
    1) если вам нужен кеш, то используйте его как кеш. т.е. берите из кеша горячие данные, если их там нет, то идите за холодными данными.
    2) то, что вы попытались сделать, больше похоже на шардирование, когда данные делят на несколько таблиц, чтобы было меньше данных в одной таблице. Так ли это нужно? У вас сотни миллионов строк в таблице? Но и шардирование делается не так, выбирается критерий деления для пользователей, такой чтобы вы заранее знали в какой таблице лежит пользователь.
    А сейчас изза соединений производительность только ухудшается.
    Ответ написан
    Комментировать
  • Как автоматизировать запросы в Postgresql?

    @Vitsliputsli

    существует ли какой-то инструмент который позволяет запускать SQL-запросы от аналитиков и чтобы это было прозрачно и с логами?
    Рассматривали вариант репозиторий с CI/CD куда аналитик кладет свой SQL-запрос.


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

    @Vitsliputsli
    Кол-во параллельных операций в один момент времени зависит от кол-ва ядер процессора.
    Только вот запрос к БД это не атомарная инструкция процессора, а значит СУБД может выполнять множество запросов, выставляя их на паузу в произвольном месте и переключаяясь на другие запросы. А как это будет, слишком завязано на сами запросы, что они делают, как блокируют друг друга, и от предпочтений СУБД.
    Ответ написан
    2 комментария
  • Как лучше построить архитектуру ML-сервиса?

    @Vitsliputsli
    Если подразумевается высокая нагрузка:
    Т.к. параллелизм, то сервис лучше писать на Go, Python тут плохой вариант.
    А вместо rest лучше grpc, если для модели нужно много данных.
    Ответ написан
    2 комментария
  • Как искать работу мидлу, если не разу не работал?

    @Vitsliputsli
    Стоит ли подавать резюме на мидл или синьор разработчика или лучше поработать джуном.

    Не стоит. Мидл и тем более сеньор, который придет на собеседование и будет с опаской поглядывать на собеседующего, а вдруг что.... Такой никогда не пройдет собеседование.
    Если же вы уверены в своих силах, то в чем проблема?

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

    @Vitsliputsli

    Почему следующий код на PHP печатает 7, а не 12?

    Потому что это не js. А global работает ровно так как описано в доке, по-другому никак, т.к. область видимости работает иначе в языке.
    А делать надо так, чтобы функция внутри себя не обращалась с произвольными данными извне, только с теми, которые вы заранее объявили. Только так можно контролировать код. А значит global не нужен.
    Ответ написан
    Комментировать
  • Как пробросить подключение к удаленной базе данных mysql в phpstorm?

    @Vitsliputsli

    Но когда я хочу выполнить скрипт на локальном проекте в phpstorm

    PHPStorm - это IDE, она не выполняет скрипты. Скрипты выполняет интерпретатор.
    Ответ написан
    Комментировать
  • Какие методики продуктивного глубокого освоения многих направлений программирования можно взять на вооружение?

    @Vitsliputsli
    Не обманывайте себя, он знает также мало, как и все остальные. Просто спрашивает он то, что знает, и разумеется не спросит то, что не знает. А получилось ли так, что ваш круг знаний не совпал с его, или действительно ваш круг знаний слишком мал однозначно сказать нельзя.
    То, что вы плотно не работали с брокерами сообщений или ActiveRecord вообще ничего не значит. Тоже самое про алгоритмы, хотя тут с оговорками, смотря о чем была речь. Опять же, что подразумевается под "внутреннее устройство баз данных", если что из себя представляет B-Tree, то middle должен это знать, а если сколько раз MySQL в отличие от PostgreSQL записывает каждую строчку на диск, то не обязательно.
    И это, не говоря о том, что спросить он мог не то, что вам понадобится для работы, и даже не то, что сам использует, а то что вчера прочитал на Хабре и чем решил выпендриться.
    Ответ написан
    Комментировать
  • Нужна концепция, часто ли используете блок схемы скриптов и чем пользуетесь?

    @Vitsliputsli
    Иногда. Как составляющая ТЗ (заказчик оформляет, либо уже внутренний аналитик). Как средство взаимодействия между заказчиком, аналитиками, разработчиками, тестировщиками. Описывается примитивная логика, но которой много, между разработчиками оно не нужно.
    Ответ написан
    Комментировать
  • Как вынести запросы rest api на постоянное соединение?

    @Vitsliputsli
    Хочется вынести одно постоянно соединение api(или части запросов) на одно постоянное соединение. Остальной сайт и странички будут работать с множественными соединениями.

    Выделите для api отдельный пул php-fpm воркеров из 1 штуки.
    Ответ написан
    Комментировать
  • Нужно ли хорошо разбираться в алгоритмах джуну?

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

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

    @Vitsliputsli
    Не 10 запросов, а 10 find_in_set. Или 1 регулярка.
    Но лучше, нормализуйте базу.
    Ответ написан
    1 комментарий
  • Как перехватить все существующие типы исключений?

    @Vitsliputsli
    Я их ловлю не для того, чтобы вывести, а чтобы отправить себе в телеграм.

    Тогда просто настройте парсинг логов. Держать такую логику в обработчике исключений сомнительная затея, не говоря уже о том, что ошибка может произойти до регистрации обработчика, или в самом обработчике.
    А лучше настройте нормальную визуализацию ошибок, например Elastic+Kibana, а там уже по создавайте алерты по которым будут кидаться сообщения в телеграм. В сообщении будет просто ссылка на лог в Кибане, где можно будет увидеть не только ошибку, но и что ей предшествовало.
    Ответ написан
  • Почему PHP не исполняется построчно, хотя он интерпретируемый?

    @Vitsliputsli

    Интерпретируемые языки исполняются построчно

    Неа, интерпретируемые языки это те, которые исполняются не машиной, а программой-интерпретатором.
    Работа php скрипта начинается с парсинга кода. Проводится лексический и грамматический анализ. Будет ли использоваться какой-либо промежуточный байткод здесь пока не важно.
    В вашем примере, php парсер обнаружил неизвестную продукцию и сразу же кинул ошибку. Можно было, конечно, выполнить код до последней корректно определенной продукции, но зачем? Php старается уходить от устойчивости к стабильности, т.е. от "отработать хоть както" к "отработать обязательно корректно". "Хоть както" все равно можно, но это должен быть сознательный выбор.
    И, хотя в php нет предварительной компиляции, тем не менее ошибки синтаксиса легко обнаруживаемы при запуске, поэтому логично о них сообщать сразу.
    Что касается, зачем анализировать весь код, а не построчно, то это тупо быстрее даже без байткода, и дает преимущества по оптимизации. Например, если вы объявили переменную и присвоили ей значение, а дальше в коде нигде ее не меняли, то php сделает ее константой.
    Ответ написан
  • В чем может быть причина разницы результатов запроса в PDO и SQL(разница формата дат)?

    @Vitsliputsli
    to_date(date_begin::text, 'DD.MM.YYYY'::text)

    т.е. у нас есть поле date_begin в формате datetime, а мы его кастуем в текст. Затем из текста по какому-то непонятному формату получаем дату.

    А все это работает скорее всего потому, что в php при подключении к БД используется формат даты 'DD.MM.YYYY', поэтому эта бредятина работает, а когда напрямую подключились к базе, там вероятно дефолтный 'YYYY-MM-DD' и получается чушь на выходе.

    В общем удалите эту дикость и посмотрите как в PostgreSQL нормально получить date без промежуточного преобразования в строку.
    Ответ написан
    1 комментарий
  • Должен ли RESTful API возвращать 200 OK при запросе списка записей категории, если сама категория не существует?

    @Vitsliputsli
    Если 204, то тело должно быть пустое, следовательно нужно будет дополнительно обрабатывать код 204. Либо не писать дополнительную обработку, и сделать как автор и предположил. По-моему, нет смысла в погоне заиспользовать как можно больше http-кодов, усложняя код, пусть и незначительно.
    Касательно несуществующего ресурса, если он действительно несуществует как бизнесовая сущность, тогда 404. Если же мы просто не нашли подходящих строчек в базе, т.е. ресурс существует, но это пустой список, то удобнее ответить как и в предудущей ситуации.
    Ответ написан
    Комментировать
  • Как сокращенно записать условие в случае если значение не пустое?

    @Vitsliputsli
    Если someFunction возвращает bool, то
    if (someFunction(.....)) {
      doSomething();
    }

    Если не bool, то прописать условие.
    Ответ написан
    Комментировать
  • Есть ли смысл делить сеть на подсети, если она будет поделена на vlan-ы?

    @Vitsliputsli
    Если это физически одна сеть, делить на подсети смысла нет, ну может только ради широковещательных по ip. Найти машину хоть в своей, хоть не в своей не проблема.
    Если это сеть на обычных свитчах, вводить программно устанавливаемый vlan нет особого смысла по безопасности, только разве для приоритезации трафика.
    А вот если сеть с нормальными маршрутизаторами и они будут контролировать vlan, то да, это будет вполне безопасно.
    Ответ написан
    Комментировать
  • Ratchet WebSocket прошу посмотреть код с точки зрения нагрузки?

    @Vitsliputsli
    Проверьте, эмулируйте соединения.
    Скорее всего остановится в районе 1000. Тогда проверьте колво файловых дескрипторов на процесс. Либо увеличивайте их колво, либо запускайте несколько процессов, либо используйте другой язык.
    10к-20к - это много для одного процесса, если подразумевается, что они все одновременно ломанутся за подключением, то большинство будет долго ждать, и не секунды, а минуты.
    В коде логики практически нет, так что не должно из-за нее напрягаться. Хотя я особо не вчитывался, условия с неявными преобразованиями, ужасные названия переменных (типа $arrayCount[$items]) очень сильно мешают вникать.
    Ответ написан
    Комментировать