• Деградация передачи данных через php stream_socket_server и неблокируемый режим?

    @antobra Автор вопроса
    Решение:
    1. Убедиться, что PHP-код исправен
    2. Настроить ulimit -u, ulimit -n
    3. Настроить sysctl для highload
    4. Reboot
    Ответ написан
    2 комментария
  • Что наследуется в ООП? Как работает наследование?

    Adamos
    @Adamos
    Publlic / protected / private - это архитектура. Компьютеру они на хрен не нужны, они ограничивают программиста.
    И уж если программист считает, что метод должен быть публичным - значит, любой наследник должен его реализовывать. Если приватным - значит, нечего в него лезть наследникам. Если защищенный - значит, только этот класс и его наследники о том, что он существует, и должны знать.

    А если у вас сын утки плавает, как утка, но молчит, как рыба - это не он урод, а вы с планированием классов обосрались. Нет, не тот парень, от чьих классов вы наследуетесь, а именно вы. И те парни, которым надо будет поддерживать ваш код (если они знают не только о принципе Лисков, но и где вы живете) смогут очень доходчиво вам это объяснить.
    Ответ написан
    5 комментариев
  • Цель - WEB Full-stack. Сносный ли план обучения для новичка?

    vabka
    @vabka Куратор тега Веб-разработка
    Токсичный шарпист
    Если бы это был вопрос "хороший ли это роадмап для asp net разработчика", то я бы сказал, что это отличный роадмап (за исключением питона, php, фриланса, и в принципе порядка изучения).
    Многое можно учить параллельно (английский)
    Что-то можно отложить (копание в алгоритмах)
    Ну и на счёт источников знаний не уверен - те же "Грокаем Алгоритмы" уж слишком для маслят книга.

    А вот по девопсу я что-то не вижу тут ничего.
    Для девопса важно:
    1. Понимать, как устроен процесс разработки. В идеале ещё и уметь писать код
    2. Уметь работать с ci/cd системами. Gitlab, Azure devops, Jenkins, Teamcity
    3. Уметь работать с git
    4. Уметь работать с линуксовой консолью, и с линуксом в целом
    5. Шарить за docker и k8s
    6. Понимать, что devops - это набор практик, а не должность.
    Ответ написан
    7 комментариев
  • Рекурсия, зачем она нужна, и используете ли вы её?

    New_Horizons
    @New_Horizons
    Бред:
    Самый простой пример: построение дерева элементов с неопределённым уровнем вложенности.

    Неужели если я научусь ей пользоваться и приду в хорошую контору там все (особенно джуны) будут понимать мой код?

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

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Прежде чем всё это усложнять описанным вами способом, необходимо определиться с ожидаемыми количествами. Насколько много всего будет переменных, насколько много может быть этих объектов, какие ожидаются частоты этих ваших обращений.
    Ещё нужно определиться как вы планируете редактировать наборы изменяемых переменных. Запишете прямо в БД руками, или нужно делать API для редактирования списков?
    Вы собираетесь скрипт запускать при каждом поступлении новой порции данных? Может правильнее запустить его на ожидание порций из пайпа? Или АПИ сделать поверх http.

    По существу вопроса. Минус хранимых процедур в том, что это код, который хранится вместе с данными. Нужно делать отдельные специфические "приседания", чтобы правильно деплоить и обновлять такой код, хранить его в системе контроля версий, мигрировать от версии к версии...
    Быстродействие в обоих случаях будет зависеть от конкретных действий, которые вы будете каждый раз повторять при "обращениях". Однако при наличии "бутылочного горлышка" в этом месте при реализации через хранимые процедуры вы уже мало что там можете сделать. А вот в коде на питоне можно при необходимости добавить воркеров и таски на длительные операции передавать им через очередь.

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

    saboteur_kiev
    @saboteur_kiev Куратор тега IT-образование
    software engineer
    Изучать алгоритмы нельзя просто читая. Надо решать задачки.
    Но для программиста, задачки лучше решать не в тетрадке а на языке программирования.
    Поэтому забивать на программирование не нужно.
    Берите различные задачки по алгоритмам и пишите программы которые этот алгоритм реализуют и что-то считают.
    Но да, чтобы написать программу для алгоритма, надо этот алгоритм сперва понять.

    P.S. Сложные алгоритмы нужны не всем. Начните с простых - с банальных сортировок и обходов массивов/графов.
    Ответ написан
    2 комментария
  • Почему долгий запрос delete к таблице сильно тормозит запросы insert к другим таблицам?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Скорее всего, тормоза связаны с тем, что UNDO для такого массированного удаления весьма объёмен.

    Организуйте удаление пакетами. Скажем, по 10к записей.
    CREATE PROCEDURE delete_rows()
    BEGIN
        SELECT @@autocommit INTO @autocommit;
        SET SESSION autocommit = ON;
        REPEAT
            DELETE FROM bigtable WHERE state=2 LIMIT 10000;
            SELECT SLEEP(1) INTO @tmp;
        UNTIL NOT ROW_COUNT() END REPEAT;
        SET SESSION autocommit = @autocommit;
    END
    Ответ написан
    Комментировать
  • Поможет ли суррогатный ключ увеличить скорость вставки в таблицу?

    @neol
    Если речь про Innodb, то
    Indexes other than the clustered index are known as secondary indexes. In InnoDB, each record in a secondary index contains the primary key columns for the row, as well as the columns specified for the secondary index. InnoDB uses this primary key value to search for the row in the clustered index.

    If the primary key is long, the secondary indexes use more space, so it is advantageous to have a short primary key.

    https://dev.mysql.com/doc/refman/5.7/en/innodb-ind...

    В вольном переводе каждый из ваших вторичных индексов будет содержать в себе значение из primary key (PK) и чем длиннее PK, тем больше все индексы в таблице.
    Вполне вероятно, что при таких раскладах PK даже из 8 байтового bigint сильно выиграет у 36 байтового char+int (а то и 102, если с дуру сделали ID utf8mb4). Как минимум по занимаемому месту.
    Ответ написан
    Комментировать
  • Конструкция if или switch?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    в данном конкретном случае switch явно не нужен.
    switch Нужен когда у вас есть переменная, которую вы хотите сравнить с разными значениями и в зависимости от этого делать разные действия. А вы в качестве условия switch вообще true пишете, и case без завершения - это с точки зрения читабельности, очень неявный OR.
    Ответ написан
    Комментировать
  • Как работает веб-сервер и node js в связке? Зачем нужен Nginx?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега Веб-разработка
    Самое простое - nginx отдаёт статику. На больших объёмах делать это через Ноду неэффективно.
    Посложнее - nginx позволяет управлять ходом запроса. Например, редиректить на https.
    Ещё сложнее - можно настроить nginx, чтобы он умно балансировал запросы между несколькими бэкендами и автоматом блокировал слишком частые попытки подключения.

    Nginx очень хорошо в промышленных масштабах делает определённую часть работы, связанной с http-запросом, поэтому ему эту часть работы и делегируют.
    Ответ написан
    Комментировать
  • Где то слышал что префиксный инкремент работает быстрее чем постфиксный. Это так?

    gbg
    @gbg Куратор тега C++
    Любые ответы на любые вопросы
    Все уже изучено

    Коротко - используйте везде префиксный, тогда отладочный код будет работать чуточку (или даже существенно) быстрее, а сам код будет выглядеть крепко, основательно - как будто сениор писал.
    Ответ написан
    Комментировать
  • Нужно ли использовать связи между таблицами mySQL?

    @galaxy
    Вроде всё ок. Но недавно узнал что есть тип связей многие ко многим. Где в самой бд эту связь нужно создавать. Возникает вопрос, зачем в бд указывать эти связи, если и без них этот join норм работает?

    Звучит, как будто subscribers - и есть связь многие-ко-многим (между сущностями users и groups).

    Недавно узнал, что когда делаешь селект к бд, например WHERE id=20, то БД не ищет эту запись перебором начиная с id=1, а обращается к id=20 сразу. Это для меня был шок. Как оно находит запись сразу?

    Оно и не находит сразу. Если нет индекса, то будет полный перебор (только не начиная с id=1, id=2, а скорее id=4324, id=88, id=281... - в том порядке, как они валяются в таблице).
    Это можно сравнить с библиотекой: если книги свалены в кучу, библиотекарь будет вынужден перебирать их по одной, пока не найдет нужную, допустим, "Войну и мир". А если у него есть каталог, он быстро найдет ящик с буквой "В", в нем отсек "ВЛ-ВР", в нем карточку "Войны и мира" и в ней уже стойку, полку и ряд, где искать книгу.
    Ответ написан
    5 комментариев
  • Где найти книги или курсы по PHP, где даётся проектирование приложений с учётом ООП?

    Adamos
    @Adamos
    Вам не нужно сравнение процедурщины с ООП, вам нужно нормальное понимание ООП.
    Для этого, например, подойдут классические "Рефакторинг" Фаулера или "Совершенный код" Макконнелла.
    Ответ написан
    Комментировать
  • Как описать посредством JSON типы данных?

    @d-stream
    Готовые решения - не подаю, но...
    Ну вообще зачастую для такого используют google protobuf
    Ответ написан
    2 комментария
  • Функции по "Чистому коду" - нужно ли это?

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

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Собеседования показывают только умение проходить собеседования. Единственный верный способ проверить человека - трёхмесячный испытательный срок.
    Ответ написан
    Комментировать
  • Как преобразовать "[a,b,c]" в [a,b,c]?

    profesor08
    @profesor08
    import re
    
    str = "[1 , 2,3]";
    
    matches = re.finditer(r"\[\s*([^)]+?)\s*\]", str, re.MULTILINE)
    
    arr = []
    
    for matchNum, match in enumerate(matches, start=1):
        arr = re.split(r"\s*,\s*", match.group(1))
    
    print(arr)
    Ответ написан
    Комментировать
  • Что входит в бизнес логику?

    sarapinit
    @sarapinit
    Точу водой камень
    Если вы опишете цели и процессы проекта без упоминания того как это реализовано в коде, то как раз и останется бизнес-логика. Все остальное инфраструктура.

    Почитать можно вот эту книгу
    Ответ написан
    Комментировать
  • Бесплатен ли VirtualBox?

    @kalapanga
    Всё здесь https://www.virtualbox.org/wiki/Licensing_FAQ и дальше по ссылкам.
    Если я правильно понимаю, то собственно VirtualBox, распространяется под GNU GPL v2, которая не накладывает ограничений на использование. Если умудритесь только им обойтись - можно использовать.
    А вот VirtualBox Extension Pack распространяется под лицензией Personal Use and Evaluation License, которая не допускает использования в коммерческих целях. И это на него покупается Enterprise License, которая ещё включает поддержку.
    Ответ написан
    1 комментарий