Задать вопрос
  • Стоит ли делать для своей игры лаунчер?

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

    402d
    @402d
    начинал с бейсика на УКНЦ в 1988
    только в морг. Имя пакеджа сменить нельзя
    Ответ написан
    2 комментария
  • Как языки, исполняемые на ВМ, пишут в консоль?

    hint000
    @hint000
    у админа три руки
    как это работает именно в случае с языками по типу Java или C#
    Это запрятано в библиотечных функциях и программист может не задумываться о том, как оно работает. Вызываете стандартную функцию вывода и она делает всю работу. Примеры:
    https://ru.wikipedia.org/wiki/Printf
    https://prog-cpp.ru/cpp-std/
    записать данные в него можно используя API POSIX
    Может быть и можно. Но на самом-то деле все используют те же самые библиотечные функции.
    Ответ написан
    Комментировать
  • Как языки, исполняемые на ВМ, пишут в консоль?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    stdout это просто дескриптор, который открывает консоль.

    Для каждой консольной программы открывается три дескриптора с номерами 0, 1, 2 (stdin, stdout, stderr), куда они могут писать.

    /dev/fd/1
    Нет, fd это просто файловый дескриптор/1
    правильный путь будет /proc/ID_процесса/fd/1
    то есть у каждого процесса stdout свой.

    Ну и еще. Неважно какой язык. Это про архитектуру операционки, а не язык.
    Ответ написан
    5 комментариев
  • Как сделать проверку на null?

    Вообще хз, как ты не додумался до самого простого - через if:
    string name;
    if(entity.Name == null)
    {
      name = "Name";
    }
    else
    {
      name = entity.Name;
    }
    DataModel dataModel = new DataModel()
    {
      Id = entity.Id,
      Name = name
    };
    // ...

    Но вообще есть вот такой синтаксис:
    new DataModel
    {
      Id = entity.Id,
      Name = entity?.Name ?? "Name"
    }

    Если нужно ещё обрабатывать пустоту, то самый короткий вариант будет как у freeExec
    Вот ссылки на документацию:
    string.IsNullOrEmpty: https://docs.microsoft.com/ru-ru/dotnet/api/system...
    Про ??: https://docs.microsoft.com/en-us/dotnet/csharp/lan...
    Про ?.: https://docs.microsoft.com/en-us/dotnet/csharp/lan...
    Ответ написан
    Комментировать
  • Какие функции лучше использовать?

    GavriKos
    @GavriKos Куратор тега Unity
    Для описанной вами задачи вообще ни одна из этих функций не нужна - физика втоматически просчитает новые вектора сил и все будет разлетаться автоматически
    Ответ написан
    Комментировать
  • Защищаются ли алгоритмы авторским правом?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    кто первый встал того и тапки. только в россии защищают конкретный продукт, а вот алгоритм по моему нет. В сша можно защитить и алгоритм и общий принцип
    Ответ написан
    Комментировать
  • Как суммировать столбцы?

    @Akela_wolf
    Extreme Programmer
    SELECT SUM(confirmed_ones) AS confirmed_ones, SUM(rejected_ones) AS rejected_ones FROM (
      SELECT ... /*тут ваш запрос из вопроса */
    )
    Ответ написан
    Комментировать
  • В чем ошибка проверки на уровень сложности пароля?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Не люблю я регекспы, может проще сделать?
    namespace ConsoleApp1
    {
        class Program
        {
            static void Main(string[] args)
            {
                var pwd = "Test1236";
                var r = new PasswordChecker(pwd);
                ;
    
            }
        }
    
        public class PasswordChecker
        {
            private readonly char[] _upper = new char[] { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', };
            private readonly char[] _digit = new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
            private readonly char[] _special = new char[] { '!', '@', '#', '$', '%', '^', '&', '*', '?', '_', '~' };
            private readonly int _strongPasswordLength;
            private readonly string _password;
            public bool IsLengthOk => _password.Length > _strongPasswordLength;
            public bool HasUpper { get; private set; }
            public bool HasDigit { get; private set; }
            public bool HasSpecial { get; private set; }
    
            public PasswordChecker(string password, int passwordLength=8)
            {
                _password = password;
                _strongPasswordLength = passwordLength;
                foreach (var ch in _password)
                {
                    HasUpper = _upper.Any(x => x == ch);
                    HasDigit = _digit.Any(x => x == ch);
                    HasSpecial = _special.Any(x => x == ch);
                }
            }
        }
    }
    Ответ написан
    1 комментарий
  • Как конвертировать object[] к Class[] где Class пользовательский класс?

    Как решить такой трабл явно не приводя массив к нужному типу ?

    Эмм, а как должно это работать? У тебя массив обжектов, а ты ждёшь массив из Class-ов.
    Тебе нужна функция которая будет преобразовывать каждый элемент по отдельности, ибо в этом массиве не обязательно будет лежать Class.
    Может проще сразу массив нужного типа создать?

    Вообще вариантов несколько:
    1. Через Select и некую функцию, которая преобразует объект в твой тип.
    var classes = objects.Select(ConvertObjectToClass).ToArray();

    2. Через метод Cast - тогда просто произойдёт даункаст каждого элемента.
    var classes = objects.Cast<Class>().ToArray();
    3. Через Unsafe, но только если ты заранее знаешь, что внутри этого массива только Class-ы, а не какие-то другие типы, которые с ним не совместимы. Иначе получишь мусор вместо данных. Со структурами, конечно, работать не будет.
    var classes = System.Runtime.CompilerServices.Unsafe.As<Class[]>(objects);

    Вот что кстати будет

    using System.Runtime.CompilerServices;
    var objects = new object[] { new A { x = 1 }, new B { y = 2, z = 3 } };
    var something = Unsafe.As<A[]>(objects);
    Console.WriteLine(something[0].x); // 1
    Console.WriteLine(something[1].x); // 2
    var something2 = Unsafe.As<B[]>(objects);
    Console.WriteLine($"{something2[0].y} {something2[0].z}"); // 1 0
    Console.WriteLine($"{something2[1].y} {something2[1].z}"); // 2 3
    class A
    {
        public int x;
    }
    class B
    {
        public int y;
        public int z;
    }

    А вот если добавить ещё поле - всё совсем поломается.
    Ответ написан
    8 комментариев
  • Дорого ли обходиться использовавние lock, зачем делать Singleton with double check locking?

    зачем делать Singleton with double check locking

    Синглтон имеет смысл делать только тогда, когда (все три):
    1. Не факт, что за время работы приложения, понадобится экземпляр этого класса (иначе разруливаем через обычный static)
    2. Создавать его очень дорого, и его экземпляр требует много ресурсов (памяти, или может каких-то неуправляемых), по тому его нужно ещё и переиспользовать везде. (иначе зачем в принципе синглтон?)
    3. Нет возможности разрулить это на уровне Dependency Injection (иначе разруливаем через DI)

    Double check-lock необходим, чтобы гарантировать, что экземпляр синглтона будет создан только 1.
    Считается, что создавать экземпляр синглтона дороже, чем 1 лок.
    А проверка перед локом нужна затем, чтобы не блокировать лишний раз.
    сказали что lock это одна из самых дешевых оперций по синхронизации.

    Да, это так. Если гораздо более дорогие операции.

    get
                {
                      lock (Loker)
                      {
                            // only one check and everything is fine :)
                          if (_instance == null)
                          {
                              _instance = new Singleton1();
                          }
                    }
    
                    return _instance;
                }

    А зачем тебе Lock, если ты не собираешься изменять переменную?
    Сначала проверяешь на null, чтобы проверить, придётся ли тебе её менять.
    Потом поднимаешь lock и проверяешь снова, чтобы гарантировать, что ты один обращаешься.
    Для чтения lock не нужен.
    Проверка на null - гораздо дешевле, чем lock, по тому перед поднятием блокировки есть смысл проверить на null
    Ответ написан
  • Права на Gif созданные в онлайн конструкторе?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Авторское право (в том смысле, что вы считаетесь автором) принадлежит только вам, навсегда.

    Вы можете добровольно передать часть прав (кроме факта авторства) кому угодно, например, заключив договор.

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

    @Ente
    Unity developer
    1) Поиск объектов по тегам долгое, потребуется постоянное кеширование.
    2) Тегов может стать очень много, выбирать нужный тег из 2000 такое себе удовольствие.
    3) Нельзя сделать несколько тегов (по аналогии с классами в HTML/JS). Допустим у нас есть стратегия, где есть два типа юнитов - техника и пехота, мы не можем сделать общий тег Юнит и добавить плюсом теги Пехота и Техника соответственно для лучшего поиска.

    Если хочешь отвязаться от сериализованных полей Unity (так как они часто бьются) и искать по ним - лучше написать свою систему тегов (которая будет поддерживать множественность) и сделать ее по аналогии с классами в HTML/JS (естественно, с кешированием)
    Ответ написан
    1 комментарий
  • Как можно сделать свою ОС на чистом ассемблере NASM и яп C (C++)?

    @Myclass
    Вы знаете, что например такое куча, стек, чем отличается int от double, что такое shared memory и много чего другого, логический или физический адресс ? Вы Бога за рога решили взять, а силёнки есть для этого?
    Ответ написан
    1 комментарий
  • Как можно сделать свою ОС на чистом ассемблере NASM и яп C (C++)?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Начни с написания собственного загрузчика, чтобы ты мог загрузиться в свою программу прямо с флешки и написать приветствие.
    Потом придумай свою файловую систему, чтобы ты мог хранить файлы и с ними работать.

    Ну и собственно, вопрос слишком общий и нехороший. Если ты новичок в программировании, то задача явно не по плечу, следует сперва попробовать что-то попроще.
    Если опытный, то почему не нашел в гугле первые топ ссылок?
    Ответ написан
    Комментировать
  • Как можно сделать свою ОС на чистом ассемблере NASM и яп C (C++)?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    для x86 свою ос? но зачем?
    x86 очень широкая архитектура, учесть все довольно сложно.
    Почему не глянуть в сторону STM32F411RE
    Ответ написан
    Комментировать
  • Как изучить и понять математику для ML девятикласснику?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Есть два варианта:
    1. Объявить себя вундеркиндом, найти свой уникальный путь изучения математики - но мы вам тут не советчики, вы уж сами как-нибудь

    2. С прискорбием начать повторять тот тернистый путь, который проходят выпускники физмата - именно,

    Нормально выучить матанализ, чтобы понимать все эти производные, интегралы, ряды и прочий бедлам - и решать с их помощью физические и геометрические прикладные задачи
    g7ierv6dkziz4mvrmj2i7w-pgyw.png
    Нормально выучить линейную алгебру, чтобы не смотреть на произведение матриц как на новые ворота, а понимать, что это и зачем это. Опять же, решать геометрические задачи и помнить, что все эти нейроны - это просто извращенное название для скалярного произведения многомерных векторов.

    Далее идет дифференциальная геометрия, без понимания которой будет трудно понять методы оптимизации - а именно, почему это градиентный спуск работает и что же он там такое обучает.

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

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

    Итого, для нормального (осознанного) ориентирования в ML нужно иметь знания студента 2 курса любого физмата (даже пединститута городского вам хватит). Если вы хотите аналогичный результат в девятом классе (и главное, быыыыстра!!!!), начинать нужно было в пятом.
    Ответ написан
    Комментировать