• Почему команда не находить атрибут?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Django
    Седой и строгий
    Если отношение one to one, то reverse relation будет без _set.

    P.S. Очень странное название для модели ArticleAdd.
    Ответ написан
    Комментировать
  • Метод, который возвращает тип интерфейса. Как это вообще работает?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    В примере ниже, метод makeInterviewer(): Interviewer возвращает тип интерфейса Interviewer.
    Этот метод ничего не возвращает, а только объявляет требования к наследникам - они должны реализовать этот абстрактный метод и уже вернуть конкретный объект, реализующий интерфейс Interviewer.

    Соответственно, никакой магии тут нет, просто в вашем примере не хватает классов-наследников с конкретной реализацией.

    interface Interviewer {
        public function askQuestions();
    }
    
    abstract class HiringManager {
        abstract public function makeInterviewer(): Interviewer;
    
        public function takeInterview() {
            $interviewer = $this->makeInterviewer();
            $interviewer->askQuestions();
        }
    }
    
    class TeamLead implements Interviewer {
      public function askQuestions() {
        ...
      }
    }
    
    class Boss extends HiringManager {
      public function makeInterviewer(): Interviewer {
        return new TeamLead();
      }
    }


    https://www.php.net/manual/ru/language.oop5.abstra...
    Ответ написан
    Комментировать
  • Как можно проверить, папка ли это?

    kshnkvn
    @kshnkvn
    yay ✌️ t.me/kshnkvn
    Ответ написан
    Комментировать
  • Почему не работает код?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    1. НИКОГДА не публикуйте креды к базе!
    2. Не используйте подстановку данных в запрос через конкатенацию. Вместо этого используйте плейсхолдеры.
    Пример 1 (SQL инъекция):
    # Тут заэнкожено: '; DROP TABLE `users`; --
    curl -XPOST -H 'Content-type: application/x-www-form-urlencoded' -d'phone=%27%3B%20DROP%20TABLE%20%60users%60%3B%20--'

    Пример 2 (phone может содержать массив):
    curl -XPOST -H 'Content-type: application/x-www-form-urlencoded' -d'phone[]=+123'

    3. Не используйте глобальные переменные. Про это есть множество статтей.
    4. Если есть возможность - используйте \PDO, вместо mysqli.
    5. Не стоит объявлять функции/классы/трейты/интерфейсы по условию. Вместо этого используйте их по условию, но объявляйте без него.
    6. При работе с путями рекомендую пользоваться глобальными, вместо относительных, иначе этот самый путь будет зависеть от скрипта, с которого запустили ваш код, а не от того, где происходит работа с файлами.
    7. У вас конкурентно не безопасный код за счет того, что работа с файлами происходит в одном и том же каталоге, с одними и теми же именами файлов. Что будет если запустить два запроса одновременно на вытяжку всех пользователей? В лучшем случае один из запросов просто упадет с ошибкой что не может добавить в архив файл (это второй поток его уже удалил). Если будет запущено 2 запроса например на 1го пользователя и на всех - есть вероятность, что один из них вернет далеко не запрашиваемые данные)).
    8. Очень рекомендую разделить вашу обработку на 2 части:
    - Первая пусть записывает в файлики данные по пользователям при обновлении данных этих пользователей.
    - Вторая - вытягивает вытягивает только id требуемых для архивирования и уже добавляет их в архив. Имя архива стоит делать рэндомным, что бы избежать конкурентного доступа к одному и тому же файлу на запись.
    9. getUserses -> getUsers

    Конкретно по вашей проблеме: если я праивльно понимаю, вы в один и тот же архив запихиваете файлы на каждый запрос, грубо говоря один раз вытянув всех пользователей - дальше вы только обновляете их в архиве на 10к файлов, а не создаете новый архив.
    Ответ написан
    3 комментария
  • Может ли Golang заменить C/C++ в написании программ для железа?

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

    Для железа go использовать будет менее удобно, чем C/C++
    Для машинного обучения go использовать можно
    Для десктопного софта, если имеется ввиду графический интерфейс, go тоже будет использовать неудобно.
    Ответ написан
  • Ошибка inconsistent use of tabs and space in indetation?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Вот прямо в приведённом вами коде, в выделенной строке 4 пробела и символ табуляции.
    Ответ написан
    Комментировать
  • Какой лучше делать нейминг для файлов?

    yarkov
    @yarkov Куратор тега JavaScript
    Помог ответ? Отметь решением.
    У вас буквы платные что-ли? )) По-человечески называйте, не выдумывайте.

    e38b45e9ba4765b1557be93995804487
    Ответ написан
    9 комментариев
  • Что значит "Знать основные структуры данных и алгоритмы"?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Что чаще всего под этим подразумевается?

    Зависит от компании и того, кто будет проводить собеседование.

    Вообще на сколько нужно зазубрить это?

    Как правильно запоминать алгоритмы?
    Ответ написан
    1 комментарий
  • Помоготе найти пример?

    Kurokq
    @Kurokq
    Наполни смыслом каждое мгновенье
    как-то так? я правда первоначальную анимацию не видел
    Ответ написан
    5 комментариев
  • Правильно ли я понял централизованную обработку исключений в PHP?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    В целом правильно, неплохая проработка материала.
    У меня есть только пара замечаний, не относящихся напрямую к централизованному обработчику.

    • error_reporting(E_ALL & ~E_NOTICE); делать не стоит. Если только не приходится работать с адовым легаси, которое сыпет нотисами, лучше отлавливать все ошибки. Учитывая же что в 8-ке обращение к несуществующей переменной станет не нотисом а предупреждением, такая конструкция со временем станет бессмысленной. что означает - ошибки надо исправлять, а не замалчивать.
    • ini_set("error_log", __DIR__ . "/php-errors.log"); будет не очень хорошей идеей, если файл error-handler.php выше корня веб-сервера. Ошибки надо прятать подальше.
    • ini_set('display_startup_errors', 1); - это какая-то дичь, которая кочует из руководства в руководство. Никто никогда этих стартап еррорс не видел, но многие старательно пишут это заклинание у себя в коде. Это по-любому связано с настройкой сервера, и в отладке ошибок поможет примерно ничем.
    • само по себе задание настроек через ini-set ненадежно. Ошибка может случиться до того, как РНР прочитает эту команду. Задавать надо в конфигурации веб-сервера.
    • в теории можно добавить флаг или автоматическую проверку на джейсон запрос. и соответственно кодировать ответ в джейсон. Но это только для криовруких фронтендеров, которые не умеют читать НТТР статусы, а ждут что им все разжуют в джейсоне, и без error: true они не поймут, что была ошибка
    • стек вызовов может быть довольно длинным, и раздувать логи. Можно подумать о более укороченном варианте.


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

    Я только не понял, почему вопрос про error_handler. Что именно смущает?
    Ответ написан
    5 комментариев
  • Как в PhpStorm отметить функцию как глобальную?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    PhpStorm не ругается, а лишь уведомляет вас о возможной проблеме.
    Самое правильное решение - просто проигнорировать это предупреждение, так как разработчику виднее.
    Если оно мешает вам жить, то можно отключить эту проверку в разделе Inspections для данного проекта.
    spoiler
    5f90459b40bf4718754553.png
    Ответ написан
    1 комментарий
  • Существует ли способ защитить код написанный на Python?

    @javedimka
    Хочу сока
    Берёшь значит ситон. Выносишь значит критические части своей программы в отдельные модули. Потом значит ситоном преобразуешь свой питон код в .c, потом значит компилируешь в шаред обджект. И вот значит у тебя защищённый пайтон код.

    На linux как-то так:

    cython critical_business_rules.py -o critical_business_rules.c
    gcc -shared -pthread -fPIC -fwrapv -O2 -Wl,--strip-all -Wall -fno-strict-aliasing -I/usr/lib64/python3.6 -o critical_business_rules.so critical_business_rules.c


    Но флаги компайлеру конечно свои скармливай.
    Ответ написан
    5 комментариев
  • Как выйти из ступора и стагнации?

    inoise
    @inoise Куратор тега Карьера в IT
    Solution Architect, AWS Certified, Serverless
    Обожежтымой. Никогда не было и вот опять.

    В середине 2020 года начал изучать Python( ранее изучал C++)

    Ну и куда с такими знаниями. Люди чтобы получить работу от года пашут, учатся на курсах, света белого не видят чтобы получить работу в разработке. Куда так быстро?

    Отправлял своё резюме на позицию Python Junior Developer, но безуспешно.

    Вот когда с сотню компаний обойдешь - можно будет задуматься о том что не так и начать собирать обратную связь

    Data Science, ML

    Наверное единственное направление в IT куда без релевантной вышки дорога закрыта

    уверяет что порог вхождения в оную разработку более низок нежели в Web-backend

    На заборе тоже много чего написано. У каждого в IT своя история и у каждого свое видение ситуации. Получить первую работу в любом случае тяжело и очень часто больше удача

    Если проблема исключительно личностное(характер), прошу указать решение.

    Проблемы вообще нет. Есть непонимание как рынок устроен
    Ответ написан
    4 комментария
  • Как найти слово/а из char символов в строке из char символов?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Если решать в лоб, то просто проходишь в цикле по элементам массива, в котором осуществляется поиск, пока не встретишь символ, совпадающий с первым символом искомого слова, после чего во вложенном цикле сравниваешь символы попарно. Сложность квадратичная, но реализация элементарная. Более производительный вариант - это алгоритм Рабина-Карпа. Ещё более хорошие результаты могут дать алгоритмы Кнута-Морриса-Пратта и Бойера-Мура.
    Ответ написан
    Комментировать
  • Какую книгу после Headfirst python прочитать?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Марк Лутц - Изучаем Python
    Ответ написан
    1 комментарий
  • Какие вопросы задают на собеседовании на должность Senior .NET разработчика?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Разные задают. Это зависит от компании, от собеседующего, от собеседуемого, от вакансии и ещё от кучи случайных факторов. Заранее не подготовиться, надо идти с тем, что знаешь на уровне рефлексов.
    Ответ написан
    Комментировать
  • Как вывести строку из списка?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    В данной постановке список вообще не нужен
    x = input()
    print('Вы выбрали ' + x)
    Ответ написан
    1 комментарий
  • Возможно ли использование уникального примитива или вроде того?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Читайте про обобщённые типы.
    Ответ написан
    Комментировать
  • Как программисту отдыхать и организовать распорядок дня?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    В описанном графике дня очевидно много расходов на путь на работу и с работы, что подсказывает самое простое направление оптимизации - либо живите ближе к работе, либо работайте ближе к жилью, либо договаривайтесь об удалёнке. Затраты личного времени на профессиональный рост можно снизить, если работодатель способствует профессиональному росту сотрудников, но это на много более сложная оптимизация.
    Ответ написан
    Комментировать