• Переменные на кирилице?

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

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Многопоточность
    Седой и строгий
    С терминологией в этой области у многих путаница. Ситуацию усложняет то, что одни и те же термины могут по-разному использоваться в разных контекстах и разных средах. Например самый общий термин "асинхронность" в общем смысле синоним многозадачности, то есть одновременного выполнения произвольного количества задач. Но часто под "асинхронностью" подразумевают мультиплексирование неблокирующихся сокетов в цикле событий. Конкурентность в контексте выполняемой работы - это одновременное выполнение разных задач. Параллельность в том же контексте - это одновременное выполнение одной задачи на разных данных. В контексте же того, как задачи выполняются, первое может означать, что асинхронность выполнения задач лимитировано конкурентным доступом к некому общему ресурсу, например процессору, а второе - возможность задач выполняться независимо друг от друга, например на разных ядрах. Запускать асинхронные задачи можно различными способами:
    1. В отдельных процессах, что обычно называют мультипроцессингом, и это как раз то, что делает Celery;
    2. В отдельных потоках, что называются многопоточностью;
    3. В сопрограммах или легковесных потоках, управляемых циклом событий, что часто называют асинхронностью, как я уже писал.
    4. На GPU;
    5. На разных машинах, что обычно происходит в распределённых системах.

    Первый вопрос мой состоит вот в чем: в асинхронном коде задачи как бы не выполняются абсолютно параллельно. Они выполняются по очереди, просто не приостанавливая главный поток, как в синхронном коде. А вот многопоточные и мультипроцессорные программы действительно выполняются параллельно (? или не совсем ?).

    С этим поможет разобраться, во-первых, понимание кооперативной и совместной или вытесняющей многозадачности, а во-вторых, понимание того, что многозадачность реализована на каждом уровне абстракции, от железа и ядра операционной системы до прикладного кода. В модели кооперативной многозадачности задачи самостоятельно отдают друг другу управление, когда достигают некоторой точки, в которой продолжить работу не могут. Например, при ожидании поступления данных из сети. В вытесняющей многозадачности есть некий планировщик, который решает какую из задач остановить, а какую запустить и старается распределить процессор между задачами примерно поровну. То, что называют асинхронным кодом, обычно использует кооперативную многозадачность. Если грубо, где-то в глубине среды исполнения крутится бесконечный цикл, на каждой итерации которого запускается одна из сопрограмм, работает пока не решит отпустить управление, после чего происходит следующая итерация и запуск следующей сопрограммы. Тонкость в том, что например питонячий цикл событий крутится внутри потока, который выполняется внутри процесса интерпретатора, который вместе с другими процессами в системе делит процессор под управлением системного планировщика. Так что некая асинхронная функция в вашем коде выполняется одновременно и кооперативно, и совместно. Её так же, как и любой поток в любом процессе может остановить системный планировщик, чтобы отдать процессор другой задаче. Абсолютной параллельности добиться в принципе невозможно, даже если у вас будет тысяча ядер, всё равно выполняемые на них задачи будут останавливаться, как минимум механизмом когерентности кэшей.
    Ответ написан
    Комментировать
  • Пишу телеграм бота на пайтон и вылезает ошибка KeyError: 'recipes'. Как решить?

    @Everything_is_bad
    сначала учим основы python, только потом пишем ботов
    Ответ написан
    Комментировать
  • Может ли Раст полноценно заменить Джаву в сфере финансовых технологий?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    На сколько я знаю, на сегодняшний день у раста проблемы с интеграциями. Брошеные либы, зависимости от версии и платформы и вот это все... (я рад бы ошибаться, возможно, г-н Василий Банников меня поправит).
    В джаве же есть спринг-бут, который умеет интегрировться хоть с чертом лысым, при этом поддерживается, развивается, выходят новые версиии...
    В большом энтерпрайзе это важно.

    Ну и у джавы, нерешаемых проблем довольно мало, чтобы от нее отказываться. На рынке есть много персонала разной квалификации, JVM - прекрасная, развивающяяся платформа.
    На расте же писать никто не умеет (по сравнению с джавой), не понятно какие у технологии перспективы, есть вышеуказанные проблемы. Чем он может заинтересоваться большой бизнес?
    Производительностью? Так и jvm достаточно производительна, во-первых, а во вторых, есть куча приложений, для которых никакой хай-лоад и никакое лоу-латенси не предусмотренно...
    Ответ написан
  • Может ли Раст полноценно заменить Джаву в сфере финансовых технологий?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Нет. У них разные области применения. Java проектировалась именно как предельно простой и лёгкий для восприятия язык, максимально препятствующий выстрелу в ногу. Никогда этим параметрам не будет соответствовать язык одновременно пригодный к системному программированию. И это не учитывая тот фактор, что инвестиции в переписывание всего финтеха с Java на Rust потребуются больше, чем планетарный ВВП.
    Ответ написан
    4 комментария
  • Что можно смотреть/слушать во время учёбы?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    сложно себя заставить начать или читать продолжительное время

    Воля развивается только тренировкой.

    Была хорошая рекомендация включать хорошо знакомый сериал в новом окне/на втором мониторе параллельно с обучением.

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

    sergey-gornostaev
    @sergey-gornostaev Куратор тега SQL
    Седой и строгий
    Проще всего создавать отдельную схему под каждую песочницу.
    Ответ написан
    Комментировать
  • Программирования учат или применяют?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Решил прокомментировать, с точки зрения своего опыта (я в отрасли уже более 22-и лет). Знание без понимания - это как раз то, чем страдают почти все выпускники курсов и немало выпускников ВУЗов. Обучение - это не копирование знаний в память, как на флешку - это наращивание новых связей в мозге и перестраивание существующих. Поэтому это долгий процесс, требующий многократного применения знаний. Однако, практика без теории - это тоже плохая идея, так как несистемное обучение создаст в голове хаос и замедлит профессиональное развитие. Пользуйтесь поиском, этот вопрос задавали здесь уже много раз, рецепт эффективного обучения можно найти среди ответов.
    Ответ написан
    1 комментарий
  • Использование Thread в Django приложении?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Django
    Седой и строгий
    Django разрабатывался синхронным и в конкурентной среде взрывается.
    Ответ написан
    Комментировать
  • На каких фриланс биржах искать заказы?

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

    Starina_js
    @Starina_js
    full-stack web dev
    Вы из РФ? Сейчас ситуация такая, что несколько бирж закрыты для РФ.

    Вот какие работают
    https://fl.ru - самая большая по заказам. Больше всего заданий там генерируется
    https://freelance.habr.com - меньше, но задания в большинстве своем более сложные
    https://freelance.ru - много тоже заданий
    https://kwork.ru/ - фриланс, только такого, магазинного плана. Немного другой подход к покупке фриланс услуг

    Какие сейчас отпали:
    freelancehunt.com , weblancer.net, зарубежная upwork.com

    По своему опыту скажу: на наших фриланс биржах не заработать. Заказы идут за копейки, конкуренция бешеная. Можно рассмотреть как старт в получении опыта коммерческой разработки, получения портфолио, но не советую засиживаться.

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

    p.s На биржах может быть проверка личности по документам, это нормально, взамен дадут спец. статус подтвержденного.
    Ответ написан
    4 комментария
  • Не работает def?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    IndentationError: unexpected indent
    Что в фразе "неожиданный отступ" вам непонятно?
    Ответ написан
    2 комментария
  • Почему при подсчете количества строк в SQLite3 выводится не число, а 0x0000009E9DC70E30>?

    Vindicar
    @Vindicar
    RTFM!
    1. Ты получил объект-курсор. У него нет строкового представления, поэтому пр ивыводе он отображается по умолчанию - <Cursor object at адрес-объекта-в-памяти>
    Чтобы получить выбранные данные, нужно вызывать методы fetchone() или fetchall().
    2. Если ты делаешь запрос к БД, который возвращает данные (неважно какие), получить их придётся как описано выше. Что это за данные - сами строки, какая-то агрегатная функция, или еще что - не важно. Даже если выполнишь запрос вида SELECT 123;, всё равно результат придётся вытаскивать через fetchone()/fetchall().
    3. SUM(id) вернёт тебе сумму всех идентификаторов строк в таблице, а не количество строк в ней. Используй COUNT(*).
    Ответ написан
    Комментировать
  • Является ли правильными такие связи / foreign keys (древовидная структура) в базе данных?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Для иерархических данных в БД эффективнее использовать nested sets.
    Ответ написан
    Комментировать
  • Что такое Python Core?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Комментировать
  • Как вывести метки в радиусе 10 метров от меня?

    freeExec
    @freeExec
    Участник OpenStreetMap
    Ответ написан
    Комментировать
  • Что не так с программой?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Когда удаляешь из массива - то нумерация элементов справа - сдвигается. Вообще здесь массив не нужен.
    Ответ написан
    Комментировать
  • Какое пояснение битовым операциям?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Почему код выводит конкретно 4 и 3, а не 1 и 1?

    Какое пояснение битовым операциям?

    Пояснение простое - потому что это не битовые операции

    Битовые операции это к примеру вот:
    print(bin(0b0110 | 0b0001))
    # 0b111
    print(bin(0b0111 ^ 0b0001))
    # 0b110
    print(bin(0b0101 & 0b0001))
    # 0b1
    Ответ написан
    Комментировать
  • Django - иерархическая структура данных в бд?

    fox_12
    @fox_12 Куратор тега Django
    Расставляю биты, управляю заряженными частицами
    реализовывать иерархические структуры данных ( совсем не понял и в гугле не нашел )

    А что тут искать - достаточно прочитать словарь русского языка, если уж термин непонятен - и включить голову - "у каждого сотрудника есть один начальник". ForeignKey модели на саму себя - и вперед...

    Как заполнить базу данных на 50 000 сотрудников

    И в чем сложности, сделать один цикл и создать 50000 рандомных сотрудников? Можно немного погуглить и найти готовые библиотеки - тот же faker

    api передавать иерархию сотрудников

    На вывод - можно деревом отдать. На ввод - просто указать айдишник начальника в соответствующем поле...

    это вообще тестовое задание на джуна без опыта

    Да - с этим вполне должен справляться джун без опыта.
    Если такие задания вводят в ступор - то пока рановато в программисты...
    Ответ написан
    Комментировать