Задать вопрос
  • Как правильно записать переменные в функции?

    Vindicar
    @Vindicar
    RTFM!
    В discord.py не слишеом сложные правила разбора строки с командой.
    1. По умолчанию одно слово интерпретируется как один параметр.
    async def command(ctx, a: str, b: str, c:str)
    !command раз два три
    a, b, c == "раз", "два", "три"


    2. Если часть вводимой команды заключена в кавычки, то она интерпретируется как один параметр.
    async def command(ctx, a: str, b: str)
    !command "раз два" три
    a, b == "раз два", "три"


    3. Если последний параметр отмечен как "все позиционные аргументы" (*args), то все последующие слова попадают в него как отдельные элементы.
    async def command(ctx, a: str, *b: str)
    !command раз два три
    a, b == "раз", ("два", "три")


    4. Если последний параметр обозначен как "только ключевое слово" (..., *, param), то остаток строки подаётся в него как есть.
    async def command(ctx, a: str, *, b: str)
    !command раз два три
    a, b == "раз", "два три"


    Таким образом, у тебя есть два выхода.
    а) помещай строку с названием книги в кавычки
    б) поставь название книги последним параметром в своей команде

    EDIT: ниже напомнили, что есть слэш-команды. Посмотри их!
    Ответ написан
    2 комментария
  • Как изучать программирование?

    xez
    @xez
    TL Junior Roo
    Просто начать писать код
    Ответ написан
    Комментировать
  • Django - иерархическая структура данных в бд?

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

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

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

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

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

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

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

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

    Vindicar
    @Vindicar
    RTFM!
    Никак. Переменная - это просто именованная ссылка на объект.
    И одна переменная не знает про остальные. Можно узнать число ссылок на объект, но их имена в общем случае узнать нельзя. Есть частный случай, показанный EugeneKh, который работает, если ты знаешь пространство имён, где могут лежать искомые ссылки. Но тут вообще впору задаться вопросом "а зачем тебе это?".

    Также есть такая вещь как предварительное выделение (interning) типовых объектов.
    Иными словами:
    >>> a = -100
    >>> b = -100
    >>> a is b
    False
    >>> a = 100
    >>> b = 100
    >>> a is b
    True

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

    Griboks
    @Griboks
    1. Устраиваетесь на работу бекендером.
    2. Работаете 3-5 лет на различных стартапах.
    3. Красиво описываете стартапы как свои проекты.
    Ответ написан
    4 комментария
  • Стоит ли покупать и проходить модный онлайн курс по квантовым вычислениям?

    Griboks
    @Griboks
    мне через несколько дней исполнится 24 года, что приближает меня к рубежу, после которого начинается плавный упадок когнитивных способностей.

    Жаль, но вы опоздали. Придётся оставшуюся часть жизни трудится на заводе. Попробуйте в следующей жизни, когда ваши когнитивный способности ещё буду стоять.
    Ответ написан
    Комментировать
  • Как начать работать?

    @AVKor
    метался

    Учился основательно

    Выбрать одно.
    кучу пройденных видеокурсов - знания остались довольно поверхностные

    Не преувеличивайте. После видосов их нет вообще, а не "поверхностные".
    ибо такими и только такими переполнены общедоступные источники

    Враньё. Документация общедоступна. Хорошие статьи общедоступны. Книги как бы не общедоступны (их надо, как правило, покупать), но по факту общедоступны.
    как понять, когда необходимый минимум знаний будет набран?

    Берёте проекты с фриланса и делаете. Без ставок и оплаты.

    Делаете проекты, интересные себе самому.
    Ответ написан
    Комментировать
  • Rust мёртв, или только развивается?

    vabka
    @vabka Куратор тега Rust
    Rust появился в 2006

    Rust перешёл в stable только в 2015.
    До этого это были всякие прототипы и эксперименты.
    на данное время крупных проектов использующие его (кроме дискорда) нет

    https://www.rust-lang.org/production/users
    Как мне кажется, достаточно много разных крупных и именитых продуктов.

    PS: С Rust у тебя бы не возникло таких вопросов:
    https://qna.habr.com/q/1155256
    https://qna.habr.com/q/1147948
    Ответ написан
    Комментировать
  • Ошибка при работе со Spring Security. Как ее решить?

    @Akela_wolf
    Extreme Programmer
    Я step by step повторял за ютубером "Eugene Suleimanov"

    С какой целью вы это делали?
    я понятие не имею в чем причина

    И что вы хотите от нас? Чтобы вам решили эту проблему, а со следующей вы снова прибежите и снова напишете "я понятие не имею в чем причина"?
    Ответ написан
    2 комментария
  • С чего начать в 30 лет?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Фундаментальная проблема - в игрострой стоит очередь фанатов с горящими глазами. Людей, которые пишут игры, играют в игры, моддят игры, хакают игры..., начиная с возраста, когда они смогли дотянуться до клавиатуры (как ваш покорный слуга). При этом, у них столько мотивации, что они могут сами поставить себе задачу, сами нагуглить все, что нужно (Спасибо дяде Немнюгину за его учебник. Это все что нужно знать о DOS, чтобы закодить dOOm) и сами все напишут и нарисуют (работая над этим сутками. Не потому что над душей стоит босс с воплями о лишении премии, а потому что им это интересно).

    И вот теперь, Андрей, который уже устал хочет встать в очередь высоко мотивированных конкурентов и попросить себе оффер. Каковы его шансы на успех?

    В играх есть много специализаций программирования - хотите графику, придется учить одно (причем на 2d и 3d это одно будет разное), хотите игровую логику и скриптинг - это номер два, хотите системную часть и бэкенд - это будет третье.

    Для универсального развития, нужно начинать с простых фиговин вроде тетриса, арканоида, бильярда и прочего (в которых однако есть все столпы игростроя - графика + логика + системный движок, можно и добавить сеть, если подумать) и потом наращивать сложность - делать платформер или RTS.
    Ответ написан
    4 комментария
  • Почему функция в общем потоке отрабатывает быстрей чем в отдельном асинхронном?

    Alexandroppolus
    @Alexandroppolus
    кодир
    Если у тебя вычисление работает только в одном вспомогательном потоке, то никакого ускорения вычислений, разумеется, не будет. Это просто освобождает основной нодовский поток для обработки других запросов.
    Ответ написан
    3 комментария
  • Сервер для docker?

    Sanes
    @Sanes
    Тебе надо выучить 10 консольных команд.
    Ответ написан
    Комментировать
  • Как получить переменную из любой функции класса?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    Почитать учебник.
    Про поля класса рассказывают в первой главе раздела, посвященного ООП
    Ответ написан
    5 комментариев
  • Как с помощью python вызвать функцию другой программы по ее адресу в памяти?

    Vindicar
    @Vindicar
    RTFM!
    Во-первых, получить ее возвращаемое значение - это слишком обще. Одно дело - получить целое число, другое дело - получить объект или строку.
    Во-вторых, речь про программу или про библиотеку? Всё-таки есть разница.

    Если речь про программу, то встаёт ещё несколько вопросов.
    Исходи из того, что целевой процесс тебе придётся запускать самому. Иначе у тебя не будет прав на манипуляции с ним. Да и тогда программа может сопротивляться отладке.
    Далее, вопрос про поток исполнения. Если ты можешь позволить себе запустить отдельный поток, и функция отработает нормально в контексте отдельного потока (нет состояний гонки, нет проверок и т.п.), то это будет проще.
    Если же тебе нужно выполнить код в контексте главного потока, тебе придётся как-то поймать момент, когда главный поток можно прервать для исполнения твоего кода.

    Без ответов на эти вопросы детали предоставить трудно.

    Ты можешь посмотреть библиотеку Detours, она вроде многие вещи автоматизирует, но она для C++. Pymem может помочь, но нужно посмотреть, получится ли подружить его с ctypes.
    Но общий алгоритм и используемые winapi-функции я опишу.
    1. CreateProcess() для запуска целевого процесса как дочернего. Это самый простой способ получить права на его изменение.
    2. VirtualAllocEx(), чтобы выделить память в адресном пространстве этого процесса. Память может быть нужна как для данных, так и для исполняемого кода (нагрузки).
    3. Сформировать нагрузку в машинном коде, которая бы выполняла вызов требуемой функции. Может потребоваться знание соглашения о вызове целевой функции, чтобы подготовить регистры и стек перед вызовом, и корректно очистить их после вызова.
    4а. Если хочешь создавать поток, то твоя нагрузка должна быть функцией с сигнатурой вида:
    int __stdcall payload(LPVOID param)
    читай про конвенцию stdcall, чтобы понять, как это должно выглядеть в машинном коде на целевой платформе. Создав такую функцию, передаёшь её в CreateRemoteThread() для запуска потока.
    4б. Если хочешь вызвать целевую функцию в главном потоке, тебе еще придётся почитать про SuspendThread(), ResumeThread(), GetThreadContext() и SetThreadContext(). Грубо говоря, останавливаешь поток, запоминаешь его контекст (где он сейчас находится), перенастраиваешь контекст так, чтобы выполнение продолжилось с твоей нагрузки (меняешь регистр EIP/RIP), и возобновляешь поток. Твоя нагрузка, в свою очередь, должна просигналить твоему внешнему коду, что она завершила работу, и уйти в вечный цикл. Тогда внешний код должен снова остановить поток, вернуть старый контекст, и возобновить поток. В этом случае твоя нагрузка может быть просто кодом, а не функцией.
    4в. Ещё можно выполнить код при инъекции библиотеки в процесс, в рамках DLLMain(), но этот код, ЕМНИП, сильно ограничен в том, что он может делать. Хотя он наверняка сможет запустить новый поток, а тот поток уже будет делать что сочтёт нужным.

    В любом случае это всё куда проще сделать на C/C++ чем на питоне. Можно ли провернуть такой фокус только через pymem и ctypes, я не знаю. Насколько я знаю, pymem делает вариант 4a чтобы засунуть интерпретатор питона внутрь целевого процесса, и выполнять код в контексте этого процесса. Так что может и прокатит.
    Ответ написан
    1 комментарий
  • Как заупстить асинхронный цикл вне основного потока?

    @nedland
    Может за ответ и не пойдет, но если тебе нужно, чтобы каждые 10 секунд выполнялась асинхронная функция, то я бы это делал с помощью asyncio

    import asyncio
    
    async def example():
        while True:
    
            #ТУТ ВЫПОЛНЯЙ ЛЮБЫЕ ДЕЙСТВИЯ, КОТОРЫЕ БУДУТ ПОВТОРЯТСЯ В ЗАДАНОМ ИНТЕРВАЛЕ (интервал ниже)
    
            await asyncio.sleep(10) #10 СЕКУНД 
    
    if __name__ == '__main__':
        loop = asyncio.get_event_loop()
        loop.create_task(example())


    Работает самостоятельно, как ты говоришь "вне основного цикла"
    Ответ написан
    Комментировать
  • Существуют ли компании, где нет перерывов в работе?

    alexgp13
    @alexgp13
    Руководитель ИТ-проектов
    Была в моей практике одна компания, где реально с секундомером следили за наличием сотрудников на рабочем месте. С другой стороны, это никак не мешало делать перерывы на кофе. Продуктивность работы при этом была очень низкая.

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

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

    Natebash
    @Natebash
    React, Vue, Angular, Navite JS, Python / Node JS
    Похоже на описание концлагеря) Сейчас большинство айтишных компаний практикуют удаленную работу, тем самым снижая финансовую нагрузку(условие наличия большого офиса, снеков, и прочего). У адекватной компании - вы закрываете таски - вы молодец, когда вы их закрываете - ваше дело. У нас условие - 4 часа пересечения общего времени с командой. К примеру я встаю в 5, в 6 уже на работе, в 2 заканчиваю работать. Далее "свободное время"

    Ищите компанию где не будет такого идиотизма)
    Ответ написан
    1 комментарий
  • Требование высшего образования в вакансии?

    CityCat4
    @CityCat4
    Дома с переломом ноги
    О Боже, этот вопрос рассматривался тут сто тыщ мильенов раз.

    Тот факт, что ты заочник - тебе все равно не скрыть, лучше скажи сразу. По закону да, работодатель обязан дать тебе учебный отпуск, но в России закон что дышло :) Лучше договориться сразу, как будешь на сессию уходить :) Потому что работать в сессию - нет никакой возможности (я сам заочку заканчивал и знаю, каково это... ээээххх...)
    Ответ написан
    Комментировать
  • Как реализовать "живой" поиск на базе Node и MySQL?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Если подразумевается что поиск будет производиться прямо во время набора текста в поле ввода, то довольно простая схема:

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

    Нюанс: По кейап надо ставить небольшую паузу, чтобы не спамить запросами.
    Ответ написан
    Комментировать