• Как записать сервер на игрока Unity?

    @antares4045
    совсем без сервера не выйдет -- вам нужен как минимум STUN.
    мне нагуглилась вот такая статья. Работоспособность кода не проверял, но выглядит всё правдоподобно.
    Ответ написан
    Комментировать
  • Я придумал свою валюту. Как мне рассчитать курс к другой валюте?

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

    Ваш же случай несколько иной: единственным продавцом и покупателем являетесь вы. И в нашей истории есть один невероятно яркий пример: Сергей Мавроди. Курс мавра к рублю обновлялся ежедневно и по формуле (каждый следующий день в два раза больше) и единственной причиной тому являлась воля создателя. Другими словами, если вас не интересует выживаемость модели то она полностью во власти вашего произвола.

    Моделей придумать можно. сколько угодно:

    продаём за доллар, покупаем за 90центов

    продаём за рубль + 0.001 * exp(количество уже проданных денежных единиц до сделки), покупаем за 90коп + 0.001 * exp(количество уже проданных денежных единиц после сделки)

    каждый вторник обновляем курс в соответствии с соотношением вашего индивидуального счёта к годовому бюджету вашего государства.

    главное убедитесь, что вас нельзя разорить просто покупая и продавая обратно вашу валюту)
    Ответ написан
  • Почему переменную принимает как None?

    @antares4045
    метод fetchone меняет положение курсора: соответственно если, как вы и утверждаете, для любого id не более одной записи, выведя в консоль строку и не сохранив результат никуда вы, вызвав ещё раз fetchone, гарантировано получаете None

    надо так

    curr.execute(f'SELECT city FROM users WHERE user_id={id}')
    result = curr.fetchone() 
    print(result )
    if result  is None:
       await jam.answer('<b>Введи своє місто:</b> \n\n<i>Доступні міста: \nВінниця, Дніпро, Житомир, Запоріжжя, Івано-Франківськ, Київ, Кропивницький, Луцьк, Львів, Миколаїв, Одеса, Полтава, Рівне, Суми, Тернопіль,  Ужгород, Харків, Херсон, Хмельницький, Черкаси, Чернігів, Чернівці</i>', parse_mode='HTML')
       await Jammer.get_city.set()
    else:
       await jam.answer('Введи назву препарату: ')
       await Jammer.get_name_preparat.set()


    ну или не принтить
    Ответ написан
    Комментировать
  • Как написать приложение на c++?

    @antares4045
    если вам нужно чистое c++, то любая os предоставляет api: просто вбиваете в поисковик что-то вроде
    "c++ windows create window" и получаете пачку ссылок на официальные мануалы и популистические статьи.

    но это на самом деле путь в бездну. от себя могу порекомендовать фреймворк qt (он кроссплатформенный и его интерфейсы гораздо более соответствуют языку c++ (интерфейсы OS слииишком сишные))

    а иконка на рабочем столе -- это просто специальный файл, говорящий выполнить определённую команду (как правило -- запуск экзешника) можете поэкспериментировать и руками посоздавать иконки на рабочем столе к вашим консольным играм.
    Если же вас интересует, как сделать установщик -- то именно такие слова и рекомендую вбить в поисковик.
    Я для своих плюсовых проектов обычно использую InnoSetup.
    Ответ написан
    Комментировать
  • Почему не видит второй жесткий диск?

    @antares4045
    https://lumpics.ru/pc-does-not-see-the-hard-drive/#_1
    Если коротко: винде не достаточно просто включить диск: он должен быть размечен и с ним должен быть ассоциирован том
    Ответ написан
  • Почему неправильно вычисляется значение?

    @antares4045
    не уверен, формулу вы не так прочитали, или таб не там поставили, но надо так:
    def func(n, b, y):
        result = 0
        for k in range(1, b+1):
            for j in range(1, n+1):
                result += (j**4-23*k**7)
        for k in range(1, b+1):
            result += ((71*y**3)**5-(56*k**3-y-y**2)**2)
        result = ('%.2E' % result)
        print(result)
        return result


    тогда с вашим ответом сходится
    Ответ написан
    Комментировать
  • Как писать правильнее?

    @antares4045
    первый вариант читабелнее (в терминальных случаях является безальтернативно верным)
    но он порождает новую переменную в контексте вызова, что сказывается как на времени так и на памяти: такой кейс вам приведу

    import datetime
    def fun(a,b):
        return a + b
    def fun2(arg1=1, arg2=2):
        return arg1 + arg2
    print("вариант 1")
    for j in range(10):
        start = datetime.datetime.now()
        for i in range(10000):
            a=fun(5, 6)
            fun2(arg2=a)
        end = datetime.datetime.now()
        print(end - start)
    print("===================")
    print("вариант 2")
    for j in range(10):
        start = datetime.datetime.now()
        for i in range(10000):
            fun2(arg2=fun(5, 6))
        end = datetime.datetime.now()
        print(end - start)

    вывод:
    вариант 1
    0:00:00.006048
    0:00:00.002219
    0:00:00.001937
    0:00:00.001955
    0:00:00.001893
    0:00:00.001886
    0:00:00.001879
    0:00:00.001891
    0:00:00.001895
    0:00:00.001887
    ===================
    вариант 2
    0:00:00.001541
    0:00:00.001551
    0:00:00.001551
    0:00:00.001546
    0:00:00.001564
    0:00:00.001535
    0:00:00.001537
    0:00:00.001546
    0:00:00.001516
    0:00:00.001704


    имеем в среднем раза в полтора разницу по скорости

    что вам важнее в данный момент сильно зависит от конкретной задачи
    Ответ написан
    1 комментарий
  • Как определить линию в python?

    @antares4045
    string = '''lalalala
    lalalaa1
    lalalaa2
    '''
    la = string.split('\n')[0]
    la1 = string.split('\n')[1]
    la2 = string.split('\n')[2]
    
    #ну или
    
    la, la1, la2, *_ = string.split('\n')
    Ответ написан
    1 комментарий
  • Как разрешить чтение куки для локалхоста?

    @antares4045
    ̶S̶e̶c̶u̶r̶e̶=̶f̶a̶l̶s̶e̶ ̶п̶о̶п̶р̶о̶б̶у̶й̶т̶е̶ ̶-̶-̶ ̶с̶у̶д̶я̶ ̶п̶о̶ ̶м̶а̶н̶у̶а̶л̶а̶м̶ ̶д̶о̶л̶ж̶н̶о̶ ̶п̶р̶о̶к̶а̶т̶и̶т̶ь̶.̶ Но cors безопасность давно на откупе производителей браузеров и каждый городит что хочет (когда последний раз возникли проблемы самым дружелюбным оказался яндекс-браузер)

    P.S. пока отвечал на комментарий, перечитал MDN и там написано, что джаваскрипту недоступны не Secure, а HttpOnly кукисы (хотя я уверен, что год назад было наоборот (может, я идиот)) соответственно сейчас у вас всё по идее правильно (если нет проблем с Expires и Domain с Path) если можете -- уберите HttpOnly вообще (чтобы оно в настройках не упоминалось). Правда гугл в данном случае не обязан следовать мануалам мазилы.
    Ответ написан
  • Как телеграм боту сбросить столбец sqlite в 0?

    @antares4045
    UPDATE имя_таблицы SET имя_колонки = 0;
    Ответ написан
    Комментировать
  • Как сделать скругленную стрелку?

    @antares4045
    Не уверен, что это оптимальный путь, но я сделал бы так: 61ab4454ce782408152423.png

    интрументом Pen (хоткей "P") рисуем кривую (если при постановке точки ломаной удерживать мышь, то линия выгнется в сторону которую вы тянете (рисуется кривая безье), а для наконечника уже обычный инструмент arrow минимальной длины.

    UPD:
    фигмой как рисовальшик в жизни один раз пользовался: можно поставить стрелку прямо на кривую:61ab4608a5cbf569749849.png
    Ответ написан
    Комментировать
  • Как сделать проверку на присутствие ID?

    @antares4045
    row = collticku.find_one({'_id': guild.id})
    if not row or not ('channel_id' in row):
      return
    channel = guild.get_channel(row.get('channel_id'))
    Ответ написан
  • Как сделать перенос элементов в div?

    @antares4045
    https://html5book.ru/css3-flexbox/

    если в двух словах, то:
    .menu {
      float: left;
      box-shadow: 0px 0px 5px black;
      position:fixed;
      width: 100%;
      max-width: 100%;
      display: flex;
    }

    Но раз вопрос возник, настоятельно рекомендую ознакомиться со статьёй по ссылке: современная вёрстка вся строиться на флексах и гридах, причём больше там (в современной вёрстке) ничего и нет.
    Ответ написан
  • Как обновить данные psycorp2?

    @antares4045
    db_object.execute(f"UPDATE users SET first_name =? WHERE id =? ", [first_name, user_id] )

    Ну или в крайнем случае

    db_object.execute(f"UPDATE users SET first_name = '{first_name}' WHERE id = '{user_id}' ")

    Почитайте на досуге про sql инъекции: анекдот про студента по имени DROP DATABASE станет понятнее.

    Upd:
    Толи psycopg2, толи cx_Oracle три года назад требовал явно указать тип инжектируемого: тоесть возможно всесто знаков вопроса надо поставить %s
    Ответ написан
  • Какие нагрузки выдерживает бот на aiogram?

    @antares4045
    Что касается вопроса из заголовка: зависит от функционала, который вы навесите на бота. Питон, грубо говоря, однопоточный, и из-за особенностей апи телеграмма масштабировать добавлением инстансов не выйдет (вернее будет супергеморно). Но если у вас в коде нет квадратичной логики, тысячу пользователей должно держать и на кофеварке; Если же есть... не факт что с одним пользователем бот справляться будет стабильно: без кода (или хотя бы общей идеи бота) на ваш вопрос конкретно невозможно ответить.

    Что касается защиты от падений: от слишком большой нагрузки бот не должен падать (если падает -- то где-то косяк), он должен просто всё медленнее и медленнее реагировать на запросы. Есть способы разруливать нагрузку, которым пользуются большие дяди, вроде гугла (но если у вас будут такие нагрузки, когда балансировщики есть смысл делать, я оооочень удивлюсь). Тем не менее, большой код периодически обречён наворачиваться, потому что программисты (в том числе и Гвидо) все косячат: просто нужна система которая будет следить, за тем, чтобы упавший инстанс заново вставал (ни и неплохо, чтобы он возобновлял работу с того места, на котором умер а не с чистого листа)

    По поводу сервака не вполне понятно: если вы хотите что-то купить, то сейчас не лучшее время (полупроводниковый кризис, близящиеся зимние праздники и т.п.). Если арендовать, то всё сложно: сегодня хороши одни, а завтра у них другой админ, но как правило верх поисковой выдачи на запрос "аренда VPS" плюс-минус адекватна (советую обратить внимание на регру и диджиталоушен).
    Ответ написан
    4 комментария
  • Как отсортировать массив из массивов по опрделенному элементу?

    @antares4045
    Посмотрите на параметр key у встроеной функций sort и sorted. Они сделаны в первую очередь для решения вашей проблемы.
    Ответ написан
    Комментировать
  • Можно ли сделать регулярное выражение для незакрытых скобок?

    @antares4045
    Рекурсии в нативном джаваскриптовом регэкспе нет. Соответственно вы конечно можете написать конструкцию с ограничением какой-то глубиной вложенности руками (хотя скорее сгенерить).
    Проблема не новая и строители велосипедов периодически выпускают свои версии регулярок (мне вот яндекс в ответ на запрос "js recursive regex" дал такую ссылку)
    Но судя по контексту вопроса вам не нативный регексп не подойдёт, так что в общем виде ваша задача не решаема.

    UPD.
    по поводу генерации руками:
    для глубины вложенности 3 у меня вышел вот такой франкенштейн:
    /^[^()]*(\([^()]*(\([^()]*(\([^()]*\))*[^()]*\))*[^()]*\))*(?<unclosed>\([^()]*(\([^()]*(\([^()]*\))*[^()]*\))*[^()]*)*[^()]*(\([^()]*(\([^()]*(\([^()]*\))*[^()]*\))*[^()]*\))*[^()]*$/

    -- если нашёл группу unclosed, то есть проблема
    (думаю, основная идея видна)

    UPD2:
    генератор выглядит примерно так, только сайт regex101 от моей рекгулярки на глубину 150 умер. так что, возможно, тупиковая идея.
    const anySymbols = `[^()]*`
    const closedRegexPattern = (depth) => {
        if(depth < 1)
            return anySymbols  
        return `\\((${anySymbols}${closedRegexPattern(depth-1)})*${anySymbols}\\)`
    }
    const unclosedCatcherRegexPattern = (depth) => {
        const unclosedPart = `(?<unclosed>\\((${anySymbols}${closedRegexPattern(depth-1)})*${anySymbols})*`
        return `^${anySymbols}${closedRegexPattern(depth)}${unclosedPart}${closedRegexPattern(depth)}${anySymbols}$`
    }
    
    console.log(unclosedCatcherRegexPattern(150))

    Кстати, в моей регулярке из UPD1 был косяк, из за которого вариант ((1)(2)) был валиден, а ((1)3(2)) уже нет.
    Ответ написан
    Комментировать
  • Telegram api. Может ли у user_id быть несколько chat_id при общении с ботом?

    @antares4045
    Пользователь может создать несколько групп и добавить в них бота. Иначе никак.
    Ответ написан
    Комментировать