• Как перевести декартовые координаты в полярные и найти полярный угол?

    Vindicar
    @Vindicar
    RTFM!
    Тригонометрию в школе проходили?
    Есть прямоугольный треугольник. Одна точка - начало координат О, вторая - искомая точка в декартовых координатах A, третья - её проекция на ось X (назовем точка B).
    Тогда гипотенуза - это отрезок ОA, а катеты - OB и AB. Тебе нужно найти угол AOB.
    Вспоминаем определения:
    sin AOB = |AB| / |OA| =>
    cos AOB = |OB| / |OA|
    tg AOB = |AB| / |OB|

    Как найти длину гипотенузы OA ты уже знаешь.
    Длина AB будет координатой y, а длина OB - координатой x.
    Используй любое из указанный выражений для нахождения AOB, только не забывай про коррекцию знаков (так, cos AOB не изменится, если сменить знак координаты y, а вот знак угла при этом должен измениться).
    Ответ написан
    Комментировать
  • Pool vs ThreadPool или как задействовать все процессоры с максимальной отдачей?

    @mgearr
    Ну а как вообще запускать параллельные треды на питоне?
    На чистом питоне - видимо, никак. Ведь именно для того знаменитый GIL и сделали, чтоб нельзя было. На C и CPython - можно, но это уже выход за рамки питона

    Стандартный питоновский путь - вместо тредов использовать процессы. При этом, естественно, расходуется больше памяти и прочих ресурсов, зато легче избегать конфликтов чтения-записи (race conditions)

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

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Наверное, надо проверять элемент исходного списка, является ли он списком, и только тогда распаковывать?
    Если уровень вложенности у нас один, то так и написать
    chained = []
    for item in posl:
        if isinstance(item, list):
            for subitem in item:
                chained.append(subitem)
        else:
            chained.append(item)

    Это будет самый кондовый алгоритм. Задачу можно реализовать и короче, и оптимальнее. Но при изучении программирования надо сначала научиться составлять самому простейшие алгоритмы и их реализовывать, а не просто пытаться использовать по очереди какие-то магические заклинания - авось какое-то сработает. А если не сработает - то идти на Хабр, чтобы тебе его написали.
    Любой красивый код следует применять только тогда, когда ты понимаешь, как он работает, что делает внутри. А если не понимаешь, то лучше сначала разобраться, реализовать тот же алгоритм руками. Иначе ты будешь не программист, а обезьяна с гранатой.

    Если вложенность неограниченная, то придется познакомиться с таким понятием, как рекурсия.
    Ответ написан
    Комментировать
  • Какую книгу прочитать про SQL?

    @User2017
    SQL для начинающих

    https://sqlbolt.com/ - онлайн тренажер - здесь каждый урок проходишь на практике
    Ответ написан
    Комментировать
  • Какую книгу прочитать про SQL?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Изучать SQL как сферический язык в вакууме - нет особого смысла. Особенно если ты спрашиваешь про хинты. Хинты - это опция конкретной реализации DBMS. У Оракла - свои хинты. У Microsoft - свои. И знания между ними - совершенно не переносимые. И сами хинты кажется не стандартизированы в SQL стандарте. Здесь я могу ошибаться - пускай знающие подскажут.

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

    Я в своё время тоже искал теоретическую литературу по оптимизации SQL. Нет толком ничего. Есть Ден Тоу. Настройка SQL для профессионалов. Он пытается подогнать под оптимизацию свою теорию. Считает селективности и кардинальности для суб-запросов и рисует "облачки" - диаграммы пытаясь вывести формулу cost. Но это всё не работает. Это разбивается о практику. Ни одна практика Oracle/PG/MSQL/MySQL не подрверждает эффеткивности диаграмм Тоу. Вобщем я зря потратил время на чтение этой книги. И тебе не советую.

    Бери конкретные книги от вендора и по ним смотри.

    И в твоём вопросе не хватает еще одного хеш-тега.
    Ответ написан
    Комментировать
  • Можно ли в модели добавить несколько элементов циклом?

    fox_12
    @fox_12 Куратор тега Django
    Расставляю биты, управляю заряженными частицами
    В Django модели есть IntegerField в нем 8 байт - вполне достаточно чтобы хранить 64 битовых состояний.
    Ну либо строку в CharField из 80 "0" или "1"
    Ну или ArrayField из bool
    Или JSONField в котором хранить dict из состояний чекбоксов
    и т.п.

    В общем - достаточно вариантов чтобы избавиться от такой дичи вроде создания циклом полей в модели.
    Ответ написан
    1 комментарий
  • На каких фриланс биржах искать заказы?

    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 комментария
  • Как правильно организовать архитектуру микросервисов docker?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Правильно задумались. Добавьте в ваши таблицы Userid и храните все в одной базе. Бэкапить 100500 баз то ещё удовольствие
    Ответ написан
    1 комментарий
  • Зачем функции нужны магические методы класса?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    Собственно, функции в питоне - объекты, так-же как и классы. Методы, да рудименты.
    Ответ написан
  • Почему при вводе числа всегда будет выводиться (доброй ночи)? Как исправить ошибку?

    ForestAndGarden
    @ForestAndGarden
    Совершенствовать среду обитания
    Отрабатывается первое if для wopros.

    Например, вводим 7. 7 >=6? Да. Доброй ночи!

    Проверка вводимых значений должна производиться от бо́льших к меньшим.
    Ответ написан
    Комментировать
  • В чем разница между str и &str?

    Erik_Mironov
    @Erik_Mironov
    Старые вопросы: *Dies from cringe*
    str представляет собой неизменяемую последовательность байтов UTF-8 динамической длины где-то в памяти. Поскольку размер неизвестен, его можно обрабатывать только за указателем. Это означает, что str чаще всего используется как &str — ссылка на некоторые данные UTF-8, обычно называемые «срезом строки» или просто «срезом». Срез — это просто представление данных, и эти данные могут быть где угодно, например:

    - В статическом хранилище: строковый литерал "foo"представляет собой файл &'static str. Данные жестко закодированы в исполняемый файл и загружаются в память при запуске программы.

    - Внутри выделенной кучи: String разыменовывает представление &str в строке.

    - На стеке: Например, в следующем примере создается массив байтов, выделенный стеком, а затем он получает представление этих данных как &str:

    use std::str;
    
    let x: &[u8] = &[b'a', b'b', b'c'];
    let stack_str: &str = str::from_utf8(x).unwrap();


    Используйте String, если вам требуется владение строковыми данными (например, передача строк в другие потоки или их создание во время выполнения), и используйте &str, если вам нужно только представление строки.
    Ответ написан
    1 комментарий
  • Кто подскажет, смогу ли я так сделать?

    Vindicar
    @Vindicar
    RTFM!
    pyinstaller для сборки питон-скрипта в exe файл. Скрипт бота импортировать динамически, через importlib. Ну и продумать интерфейс взаимодействия между ботом и лаунчером - объекты журналов (logging), передача токена, и т.д.
    Ответ написан
    Комментировать
  • Как реализовать?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Прочитайте про концепцию "конечного автомата". В вашем автомате будет столько отдельных курсоров, сколько пользователей общается с ботом. Нужно для каждого пользователя хранить отдельный курсор в графе состояний. В зависимости от пользователя выбираем извлекаем нужный курсор и в зависимости от его положения интерпретируем сообщение.
    Цикл отдельный запускать сожиданием ответа для одного польователя - это не правильно.
    Ответ написан
    2 комментария
  • Глупые вопросы по тостеру, которые меня интересуют?

    @Drno
    1. потому что нафиг ненадо и нагружает сервер. в большинстве случаев вопрошающие и так знают какие теги ставить
    2. потому что сохраняй у себя на ПК, вот почему. место не резиновое
    3. просто они гуглят лучше))

    ПС - это все без наезда следует расценивать ))
    Ответ написан
    Комментировать
  • Быстрый старт в IT с хорошей базой?

    DevMan
    @DevMan
    все описанные скилы на фрилансе вообще не роялят: там в первую очередь важен единственный скилл - продать себя.
    затем следует понимание процессов и задач: клиента вообще не интересует path_finding и прочая заумная хрень, его интересует реализация свои хотелок ещё вчера, даже если она из говнопалок, но работает.
    серьезных/крупных клиентов на фрилансе нет. максимум - развитие стартапа или какого-то локального среднячка.

    ну и отдельно: "старт в it" и "старт в фрилансе" - два разных человека.
    Ответ написан
    1 комментарий
  • Быстрый старт в IT с хорошей базой?

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

    sloboda
    @sloboda
    Java QA Automation
    Всё же лучше отдельные репозитории.
    Или несколько отдельных репозиториев, сгруппированных по функционалу приложения, в которых будут подпапки.
    У вас же каждый сотрудник работает в своем форке.
    При внимательной организации code review и мержа только по результатам code review большой свалки в проектах и подпроектах быть не должно.
    Ответ написан
    Комментировать
  • Как ораганизовать репозиторий для команды?

    sheerluck
    @sheerluck
    Так как приходят новые люди и им нужно показывать только часть кода -- то надо заводить новый отдельный репозиторий. Отслеживать их не сложно. Добавлять и исключать людей не сложно.
    А свалку делать не надо.
    Ответ написан
    Комментировать
  • Как правильно организовать работу с Git для соло-разработки?

    saboteur_kiev
    @saboteur_kiev Куратор тега Git
    software engineer
    Если ты один, сделай флоу какой тебе удобный с нейм конвеншеном какой тебе удобен.

    Сделай две ветки:
    site-ru
    dev-site-ru

    Делай ветки для вставки новых крупных фич типа:
    feature-XXXX

    как ветка готова, мержи ее в dev-site-ru c --squash
    Как протестировал на дев, делай мерж в site-ru

    Для тебя и клиента будет интуитивно понятно что за ветки, и не надо будет запоминать зачем нужен мастер или транк.
    Ответ написан
    3 комментария