Задать вопрос
  • Unity 2D, Как убрать скольжение по наклонным поверхностям?

    @Ezekiel4
    Охотник на пиратов и сборщик монолитов
    1. Узнаёте что персонаж на земле, например через Physics2D.OverlapCircle
    2. Получаете нормаль поверхости под ногами персонажа, например через Physics2D.Raycast
    3. Вычисляете угол поверхности, через Vector2.Angle
    4. Угол меньше максимального (поле класса, например 70 градусов)
    5а. Да: двигаемся как обычно
    5б. Нет: Можно поменять физический материал (свойство friction), или, например, обнулить x часть вектора rigidbody2D.velocity
    Ответ написан
    2 комментария
  • Чем различаются версии Postgres 13, 14, 15?

    В документации же русским по белому написано:
    PostgreSQL 15 содержит много новых возможностей и улучшений, в том числе:
    • Поддержка SQL-команды MERGE.
    • Выборочная публикация содержимого таблицы в рамках логической репликации с возможностью указывать списки столбцов и фильтры строк.
    • Больше возможностей для использования сжатия и поддержка сжатия Zstandard (zstd). В том числе реализована возможность сжатия на стороне сервера при создании копии с помощью pg_basebackup.
    • Поддержка структурированного вывода журнала сервера в формате JSON.
    • Улучшения производительности, в частности, оптимизация операций сортировки в памяти и на диске.

    https://postgrespro.ru/docs/postgresql/15/release-...


    PostgreSQL 14 содержит много новых возможностей и улучшений, в том числе:

    • Хранимые процедуры теперь могут возвращать данные через параметры OUT.
    • Реализованы описанные в стандарте SQL параметры SEARCH и CYCLE для общих табличных выражений.
    • Операцию обращения по индексу теперь можно применять не только к массивам, но и к любому типу данных, для которого она имеет смысл. В этом выпуске такие операторы добавлены для типов jsonb и hstore.
    • Диапазонные типы были дополнены мультидиапазонными, позволяющими представлять несплошные диапазоны данных.
    • Проведена большая работа по улучшению производительности параллельных запросов, обработки многопоточной нагрузки, секционированных таблиц, логической репликации и процедуры очистки.
    • Изменения в индексах-B-деревьях теперь обрабатываются более эффективным методом, уменьшающим замусоривание индексов.
    • Процедура VACUUM автоматически становится агрессивнее и пропускает несущественные операции очистки в случае приближения базы данных к моменту зацикливания идентификаторов транзакций.
    • Расширенную статистику теперь можно собирать по выражениям, что позволяет получить лучшие планы для сложных запросов.
    • Библиотека libpq теперь поддерживает конвейерную передачу нескольких запросов, что позволяет ускорить получение результатов через сетевые соединения, которым свойственны большие задержки.


    https://postgrespro.ru/docs/postgresql/14/release-14
    Ответ написан
    Комментировать
  • Почему камера после старта поварачивается на 180 градусов?

    GavriKos
    @GavriKos Куратор тега Unity
    Нет, это явно баг юнити, пишите багрепорт вам за него дадут 100500 баксов.

    Конечно что то в вашем скрипте камеры! Сама по себе камера не ворочается
    Ответ написан
    1 комментарий
  • Как в unity 3d (C#) сделать открытие панели при нажатии на кнопку клавиатуры?

    @Ezekiel4
    Охотник на пиратов и сборщик монолитов
    Что-то такое:
    using UnityEngine;
    
    public class ShowPanelDemo : MonoBehaviour {
    
    	// флаг состояния
    	bool isOpened;
    	// ссылка на панель
    	public GameObject panel;
    
    	void Update() {
    		if (Input.GetKeyDown(KeyCode.Escape)) {
    			// меняем состояние
    			isOpened = !isOpened;
    			// присваиваем
    			panel.SetActive(isOpened);
    		}
    	}
    }
    Ответ написан
    6 комментариев
  • Почему не работает асинхронность?

    petermzg
    @petermzg
    Самый лучший программист
    Для Windows Form нужно использовать SynchronizationContext.
    Вызов таска в отдельном потоке Task.Run(...).

    В отдельном потоке должно делаться все, что не касается обновления UI контролов. Как только все данные для отображения подготовлены, вызываете synchContext.Post(...) для обновления UI
    Ответ написан
    Комментировать
  • Как избавиться от спама Яндекс карт?

    Это не "спам", а запись действий пользователя в вебвизор.
    Если помимо Я.Карт у вас ещё подключена Я.Метрика, то вы можете уменьшить количество сигналов, отключив вебвизор в её настройках. Скорее всего, это ваш случай.
    Если же это сами карты отправляют себе аналитику, то вы с этим ничего не сделаете, вряд ли они сделали опцию для отключения.
    Ответ написан
    Комментировать
  • Где лучше получать ввод - в Update или FixedUpdate?

    GavriKos
    @GavriKos Куратор тега Unity
    Вся документация говорит что "в апдейте".

    Аргументация - FixedUpdate работает не каждый кадр, что в целом и написано в документации. И он предназначен для просчетов физики.
    А вот как раз всякие ивенты привязаны именно к Update.
    Ответ написан
    Комментировать
  • Почему мой код работает медленнее?

    В более быстром варианте вот тут за константное время проверка делается.
    if (track.ContainsKey(chest))
            {
              yield return track[chest];
              continue;
            }

    У тебя она сделана через цикл:
    for (int i = 0; i < chests.Length; i++)
                    {
                        if (point.Value.Equals(chests[i]))
                        {
                            yield return point;
                        }
                    }

    Если я не туплю, и эти куски действительно делают одно и то же.

    А вообще более детально разобраться в причинах низкой скорости ты можешь:
    1. При помощи бенчмарков (гугли BenchmarkDotNet)
    2. Посмотрев на листинг кода, который генерирует компилятор (смотри sharplab)
    3. Путём профайлинга - посмотри на dotmemory и dottrace
    Ответ написан
    Комментировать
  • На каком игровом движке создают подобного рода игры?

    @dima20155
    you don't choose c++. It chooses you
    Полагаю, что самый первый скил, который вам необходим - это умение гуглить. Мобильные игры довольно часто создаются на unity, но есть и другие движки поддерживающие такую функциональность тот же unreal (погуглите возможности движков, погуглите распределение рынка мобильных игр). На счёт литературы: многое терабайты курсов, книг на любом языке платно и бесплатно есть в интернете, все свободно находится в поисковике, вот прям без малейших проблем.

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

    Ты никак не используешь возвращаемое значение.
    enemy.GetComponent<Enemy>().TakeDamage(Damage, EXP)


    Видимо тебе нужно чтото типа:
    var exp = enemy.GetComponent<Enemy>().TakeDamage(Damage, EXP);
    Debug.Log(exp);


    Чтобы в будущем таких конфузов не случалось - изучай C# как самодостаточный язык, а не как "скрипты для юнити"
    Ответ написан
    2 комментария
  • Как эффективно использовать 'сервисы' для обращения к БД?

    mayton2019
    @mayton2019
    Bigdata Engineer
    По поводу смыслов. Обычно с БД работают сущностями (entities). Я не специалист в Node и я не знаю
    как у вас принято. Кажется в новых ecma-спецификациях уже ввели понятие класса.

    В данном коде идет проверка на то что email существует. Но полезный эффект - слабый.
    Я-бы сразу возвращал сущность пользователя. Чтоб не бегать потом в базу еще
    раз когда надо поискать имя или дату регистрации. Ну идея такая что
    если вы уж пошли в базу (это сетевой round-trip) то постарайтесь
    за этот трип собрать максимум информации.

    Вот это более рационально
    export const findUserEntityByEmail = async (
      email: string
    ): Promise<User> => {
      try {
        const users = await db
          .query('SELECT * FROM accounts WHERE email = $1', [email])


    Тоже самое относится к выборкам множества строк по множеству ключей.
    Лучше сделать 1 callback который вернет коллекцию чем для коллекции
    ключей дергать один несчастный метод который по штучке что-то достает.

    Еще важне - join. Если соединяете сущности - то соединяйте сразу в БД
    без попыток соединять в приложении. Это кстати еще бонус к компетенции
    в части ACID.

    Тоесть идеальный вариант работы с БД - запросить пакетом всю информацию
    что может потербоваться на ближайшие несколько секунд. Это рациональнее
    чем потом что-то подтягивать.
    Ответ написан
    6 комментариев
  • Ошибка SqlDataReader?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Так вам же английским по белому пишет - не инициализировано свойство Connection.
    Где инициализация sqlConnection?
    Ответ написан
    3 комментария
  • Программа как сделать com file?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    ; устанавливаем сегмент стека
    mov ax, s_seg
    mov ss, ax
    ; устанавливаем сегмент данных
    mov ax, d_seg
    mov ds, ax


    пишет segment relocate

    Ну правильно пишет, вот же у тебя код хочет загрузить в ax то s_seg, то d_seg как константы, откуда он их возьмёт без релокаций? Если хочешь com-файл, то либо пиши вместо этого mov ax, cs ; mov ds, ax, либо вообще этот код выкинь, потому что com-файл и так стартует со всеми сегментами указывающими в одно и то же место.
    Ответ написан
    Комментировать
  • Как сделать сертификаты для поддоменов?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Если портятся сертификаты - лечить нужно причину порчи сертификатов, а не вот это вот все!
    Ответ написан
    Комментировать
  • Для чего на микрике мыши 3 контакта?

    Stalker_RED
    @Stalker_RED
    микрик для мыши распиновка
    bc6c5b.jpg
    Один нормально замкнутый, другой нормально разомкнутый, можно было и догадаться или прозвонить.
    Теперь ваша мышь ловит наводки на провод, либо же, даблклики были из-за излома в проводе, и перепайка микриков ничем не помогла (а может проблемы были и в микрике и проводе одновременно).
    Попробуйте отрезать несколько сантиметров провода, чаще всего он убивается в точке выхода из мыши. Жилы изламываются и начинают плохо контачить, изоляция изнашивается, вот это все.
    Ответ написан
  • Как лучше вносить изменения в стороннюю библиотеку С?

    Непонятно, какие у этой библиотеки есть точки расширения, какие есть интерфейсы. Общий ответ всегда один - форкать, наливать сверху свои изменения и затем портировать их регулярно на свежий релиз. Это самый затратный вариант, но он не требует ничего от библиотеки кроме открытости кода и подходящей лицензии, разрешающей вносить правки без неприемлемых для вас обязательств.
    Ответ написан
    Комментировать
  • Могу ли я использовать иллюстрации бесплатной версии Midjourney в своем GPL3-проекте?

    В любой непонятной ситуации - читай ToS:


    Subject to the above license, You own all Assets You create with the Services, to the extent possible under current law. This excludes upscaling the images of others, which images remain owned by the original Asset creators. Midjourney makes no representations or warranties with respect to the current law that might apply to You. Please consult Your own lawyer if You want more information about the state of current law in Your jurisdiction. Your ownership of the Assets you created persists even if in subsequent months You downgrade or cancel Your membership. However, You do not own the Assets if You fall under the exceptions below.

    If You are an employee or owner of a company with more than $1,000,000 USD a year in gross revenue and You are using the Services on behalf of Your employer, You must purchase a “Pro” membership for every individual accessing the Services on Your behalf in order to own Assets You create. If You are not sure whether Your use qualifies as on behalf of Your employer, please assume it does.

    If You are not a Paid Member, You don’t own the Assets You create. Instead, Midjourney grants You a license to the Assets under the Creative Commons Noncommercial 4.0 Attribution International License (the “Asset License”).
    The full text is accessible as of the Effective Date here: https://creativecommons.org/licenses/by-nc/4.0/leg....

    В общем можно, но только если твой GPL-3 проект не коммерческий.
    + нужно соблюсти CC
    Ответ написан
    2 комментария
  • Как в архитектурах risc одинаковые виртуальные адреса разных контекстов задач различаются?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    В risc вроде там куча csr регистров

    Вот на этом месте остановись. RISC -- это не конкретный набор инструкций и регистров, это принцип организации набора инструкций. RISC-процессоры все разные, возьми крнкретный и разбирайся с ним, не вали их все в одну кучу, не ставь на вопрос теги процессоров которые не имеют к нему отношения.

    на разных компиляторах одна си операция ассемблируется то в комбинацию lui + addi, то в комбинацию auipc +addi

    Ты указал ARM в тегах, но у ARM нет инструкций lui и auipc. Такие инструкции есть у RISC-V.
    Если ты посмотришь в The RISC-V Instruction Set Manual, раздел 2.4 Integer Computational Instructions, то увидишь, что опкод lui загружает константу собранную из 20 битов непосредственного значения из инструкции и 12 нулевых младших битов в целевой регистр, а auipc прибавляет такую же точно константу к PC и загружает в целевой регистр результат сложения, и в этом вся разница между ними.

    где какая используется не совсем понимаю.

    lui используется для генерации констант, которые не зависят от того, где расположен код, а auipc для генерации констант, которые двигаются вместе с кодом. Т.е. Если ты хочешь вызвать функцию, которая находится дальше чем ±2К от точки вызова, ты можешь сгенерировать её адрес инструкцией auipc, и полученный код будет работать одинаково, независимо от того, по какому адресу он будет размещён. А если тебе надо поместить в регистр константу, например 0x12345678, то ты можешь это сделать парой инструкций lui rd, 0x12345 ; addi rd, rd, 0x678 и значение константы будет всегда одинаковым, вне зависимости от того, где будет этот код.

    Каким образом одинаковые адреса различаются. Или они просто не могут быть одинаковыми(типа ос позаботиться)?

    Если есть MMU и он используется ОС, то есть и виртуальные адреса и они могут быть одинаковыми у разных процессов. Если MMU нет или он не используется, то ОС размещает все процессы в одном адресном пространстве, нет смысла говорить отдельно о виртуальных адресах, поскольку они равны физическим, адреса выделяемые ОС разным процессам могут быть как одинаковыми (например несколько процессов запущенных из одного исполняемого образа могут использовать один и тот же код и константные данные), так и разными (например изменяемые данные разные у всех процессов, а стеки разные у всех потоков).

    Как они в tlb обрабатываются, если вдруг они реально могут быть одинаковыми, и там нету ни каких дополнительных индексов процесса)

    Выбери конкретную процессорную архитектуру -- обсудим. у многих RISC-архитектур есть ASID, который идентифицирует адресное пространство и записывается вместе с виртуальным адресом в TLB. Но в любом случае ASID -- это просто оптимизация для повышения производительности, когда он отсутствует или переполняется ОС должна сбрасывать содержимое TLB при переключении адресного пространства.

    У ARM есть регистры TTBR с примерно той же функцией, что и cr3 в x86.
    У RISC-V есть CSR satp, содержащий ASID и базовый адрес корневого каталога страничных таблиц. Об этом можно прочитать в разделе 4.1.12 Supervisor Address Translation and Protection (satp) Register спецификации The RISC-V Instruction Set Manual Volume II: Privi....
    Ответ написан
    Комментировать
  • Что нужно для авторизации через Google?

    "Sign in with google" реализуется при помощи OIDC:
    В документации есть ссылки и на стандарт, как это работает, и что примерно нужно сделать у себя в приложении, чтобы это заработало.
    https://developers.google.com/identity/openid-conn...

    Кстати, если ты такую кнопку добавляешь у себя в приложение на яблоке, то ты также будешь обязан сделать "Sign in with apple"
    https://developer.apple.com/sign-in-with-apple/get...

    Но на яблоке вроде для игр есть какой-то свой API, так что ты вполне можешь на Android использовать Google Play Games, а на яблоке - яблочное.
    Ответ написан
    3 комментария
  • While Do не работает?

    GavriKos
    @GavriKos Куратор тега Unity
    Ну так первая дистанция больше 300. false && true && true даст false. Цикл и прервется.

    P.S. за такие циклы в целом надо руки отрубать. Их время выполнения неизвестно от слова совсем. Могут вообще никогда не завершитсья
    Ответ написан