• Почему не работает System.Text.Encoding? Ошибается на 1 символ?

    twobomb
    @twobomb
    Ну потому-что ваш генератор тупо генерирует рандомные числа от 0 до FFFF, а в UTF16 там есть определенные правила. Почитайте например в вики

    Я не вникал ну вики говорит что там есть диапазон для суррогатных пар тоесть символы которые кодируются двумя 16битными словами, тоесть 4 байтами. Крч как вариант или тупо добавить проверку в генератор чтобы если рандомное число входит в диапазон исключений D80016..DFFF16 то пропускать и генерировать другое. Или замарачиваться с этими парами, ну это будет сложнее.

    Принцип кодирования
    В UTF-16 символы кодируются двухбайтовыми словами с использованием всех возможных диапазонов значений (от 0 до FFFF16). При этом можно кодировать символы Unicode в диапазонах 000016..D7FF16 и E00016..FFFF16. Исключенный отсюда диапазон D80016..DFFF16 используется как раз для кодирования так называемых суррогатных пар — символов, которые кодируются двумя 16-битными словами.

    Символы Unicode до FFFF16 включительно (исключая диапазон для суррогатов) записываются как есть 16-битным словом.

    Символы же в диапазоне 1000016..10FFFF16 (больше 16 бит) кодируются по следующей схеме:

    Из кода символа вычитается 1000016. В результате получится значение от нуля до FFFFF16, которое помещается в разрядную сетку 20 бит.
    Старшие 10 бит (число в диапазоне 000016..03FF16) суммируются с D80016, и результат идёт в ведущее (первое) слово, которое входит в диапазон D80016..DBFF16.
    Младшие 10 бит (тоже число в диапазоне 000016..03FF16) суммируются с DC0016, и результат идёт в последующее (второе) слово, которое входит в диапазон DC0016..DFFF16.
    Ответ написан
    Комментировать
  • Как поставляются игры на компьютеры?

    @mletov
    Сложно было сформулировать вопрос более косноязычно.

    Кто такие "обычные люди"? Есть разработчики, есть клиенты, которые покупают и играют.

    Что такое "поставка"? Кто-то по старинке покупает игры на дисках, кто-то качает в торрентах или стим.
    О чем вообще речь?

    Игра - такая же скомпилированная программа, как и любая другая программа, зачем передавать клиенту исходники игры и собирать на его компе?

    но в таком случае как читы пишут

    Декомпиляция, сканеры памяти, процессов и т д.
    Ответ написан
    Комментировать
  • Можно ли начать разрабатывать игры в Unity, зная основы c#?

    @oleg_ods
    Смотря что Вы подразумеваете под фразой «знаю основы».

    Можете устроить себе тест. Возьмите 200 последних вопросов с тэгом Unity с этого ресурса и попробуйте сами на них ответить(большинство проблем в них как раз таки связано с незнанием основ языка). Если нашли ответ на 80% то смело беритесь за Unity, если меньше то у Вас будет список тем по которым Вам нужно подтянуть знания.
    Ответ написан
    3 комментария
  • Как ограничить копирование данных из сетевых папок, локального ПК, на флешки и внешние ресурсы?

    @12rbah
    Руководство боится утечки данных. Просит сделать так, чтобы никто ничего не мог скопировать из сетевых папок, с локального компа, на флешки и т.д.
    По сути от копирования электронного документа нет защиты т.к. при просмотре файл все равно попадет в память. В целом можете конечно пробовать шифровать, тогда встанет вопрос, где безопасно хранить ключи. Хороший вариант использовать аудит и знать когда и кто получал доступ к файлу и настроить доступы в ad ds, если файл должен иметь ограниченный доступ, то наверное к нему не должен получать доступ любой сотрудник.
    флешки
    Можно отключить порты, если эта информация такая ценная, но все равно достаточно опытный пользотель сможет это обойти.
    Ответ написан
    5 комментариев
  • Как пишут обмен данными (сетевой движок) для компьютерных игр?

    делал как-то движок для не-экшн механики. Команд было мало: нужно успеть сделать правильный выбор за ограниченное время. Консолидировать результаты.

    Сервер принимает сообщения от игроков. Некоторые тут же форвардит остальным подключённым к нему. Некоторые вызывают серверное событие, и уже оно рассылает всем какое-то сообщение.

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

    С зажатой клавишей, наверное, достаточно события нажатия, и события снятия. Вычисление позиции на карте при таком управлении не тяжёлая вычислительная задача – можно параллельно считать на сервере, наверное. Раз в пару секунд синхронизируя координаты между сервером и игроком.

    Время должно быть точно синхронизировано между каждым игроком и сервером. Несмотря на сетевые задержки, эта задача решается протоколом NTP. Общее время позволяет сопровождать важные события отметками времени.

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

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    А почему PostgreSQL не должен ругаться на диалект DB2? Разные СУБД, разные диалекты. Не всё, что возможно в одной СУБД, напрямую переносится в другую.
    Хотите, чтобы запросы работали везде более-менее одинаково - используйте подмножество ANSI (SQL-89 или SQL-92). Хотите переносить нативные запросы из одной СУБД в другую - изучайте обе и ищите аналоги команд/функций/опций.
    Ответ написан
    Комментировать
  • Чем обусловлены различия в работе со строками и другими массивами?

    mayton2019
    @mayton2019
    Bigdata Engineer
    И ещё хотелось бы понять, почему каждый такой указатель является константой?


    Это - тяжелое наследие старых систем. В данном примере ты разбираешся с ASCIIZ-строками. С массивами символов которые завершаются нулем. Такая организация позволяет хранить строки компактно. Маркер const защищает строку от случайного изменения. И правильно делает. От этого больше проблем. Тот формат и тот способ хранения строки вообще не предполагает активных изменений. Особенно с размером. Максимум что можно делать - только читать.

    С точки зрения современного бизнес-программирования ASCIIZ строки устарели. Но поскольку этот формат является единственным транспортом который понимает ядро ОС - то его часто можно встретить в исходниках.

    Для С++ более удобной строкой является std::string. Его использовать приятнее. И с размерами там веселее.
    В легаси исходниках можно встретить причудливые CString (MFC), TString (Borland). Это все разные реализации строк.

    Для Qt есть тоже свой тип строк.
    Ответ написан
    Комментировать
  • Как игровые движки понимают инородные языки?

    vabka
    @vabka
    Токсичный шарпист
    Интерпретатор lua (в случае Love2D и Cocos), и Mono (в случае Unity) можно подключить, как обычную сишную библиотеку.
    В этом случае C++ не нужно "понимать" чужой язык, достаточно лишь понимать, какие сишные функции надо вызывать, чтобы запустить код на "чужом" языке, и как туда передать доступ к функциям движка (это делается, обычно, путём передачи указателей на функции)
    Ответ написан
    Комментировать
  • Как передать координаты GPS через ссылку?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    POST https://site.com/api/geolog/

    payload

    {
    "longitude": 57,55
    "latitude": 32,765
    }


    либо https://site.com/api/geolog/?lon=57,55&lat=32,765
    Ответ написан
    Комментировать
  • Как повесить скрипт на нажатие по метке Яндекс Карты?

    @dmitryfx
    Изменение свойств объекта.

    my_map.geoObjects.each(function(ob){
    
            if( ob.properties.get("ob_type") == "Point" ){
    
              ob.options.set({iconColor: "#EAA6A5"});
              ob.properties.set({active: false});
    
              if( ob.properties.get("iconContent") == ptid ){
                om_point = ob;
                ob.options.set({iconColor: "#f15a22"});
                ob.properties.set({active: true});
              }
    
            } else if( ob.properties.get("ob_type") == "LineString" ){
    
              ob.options.set({strokeColor: "#EAA6A5"});
              ob.properties.set({active: false});
    
              if( ob.properties.get("description") == ptid ){
                om_line = ob;
                ob.options.set({strokeColor: "#f15a22"});
                ob.properties.set({active: true});
              }
    
            }
    
          });


    Обработка событий:

    var new_mark = new ymaps.Placemark( coord,
            {
              iconCaption: icon_caption,
              iconContent: icon_content,
              ob_type: "Point",
              active: true
          }, {
              iconColor: color_default,
              preset: 'islands#redDotIcon'
          });
    
          new_mark.events.add("click", function(e){
            var ptid = parseInt(  e.get('target').properties.get("iconContent") );
            Show_Addr( ptid );
          });
    
          new_mark.events.add("mouseenter", function(e){
            if( e.get('target').properties.get("active") === false ){
              e.get('target').options.set({iconColor: color_mouseenter});
            }
          });


    var new_line = new ymaps.GeoObject({
            geometry: {
              type: "LineString",
              coordinates: coords,
              description: descr,
            },
            properties:{
             // hintContent: "",
             description: descr,
             ob_type: "LineString",
             active: true
            }},
            {
              //draggable: true,
              strokeColor: "#ed4543",
              strokeWidth: 6
          });
    
        new_line.events.add("click", function(e){
          var ptid = parseInt( e.get('target').properties.get("description") );
          Show_Addr( ptid );
        });
    Ответ написан
    Комментировать
  • Какой формат (кроп или полное с разметкой) изображения лучше применять для обучения нейросети (yolov5)?

    mayton2019
    @mayton2019
    Bigdata Engineer
    А позвольте спросить вы занимаетесь обучением сети "для чего" ?

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

    saboteur_kiev
    @saboteur_kiev Куратор тега Разработка игр
    software engineer
    эм. логирование может быть разнообразным, и вообще не обязательно в файл.
    Зависит от игры, зависит от того, что надо.

    Можно логировать технические моменты, например работу 3д движка, подключаемые библиотеки и функции, детект что может карточка, разрешение, мониторы, использование ресурсов.
    Можно логировать игровые действия игроков или npc
    Можно логировать сетевую активность
    Можно логировать пользовательскую активность по интерфейсу (сбор метрик для ui дизайнеров)
    Мало ли что.
    формат НИЧЕМ не отличается от логирования любого другого софта.
    Смотришь сколько логов, думаешь нужно больше или меньше. думаешь как оптимизировать.
    можно в файл, можно в базу, можно в несколько сразу
    Ответ написан
    3 комментария
  • Можно ли сравнивать через переопределенный GetHashCode() в C#?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    GetHashCode - это не про сравнение, а про генерацию хэша для объекта.
    Хэши могут пересекаться, тк количество хэшэй принципиально меньше количества уникальных объектов.
    По тому, если тебе нужно ответить на вопрос "равен ли объект А объекту Б", то обязательно нужно проверить на Equals.
    Чтобы при разных типах у тебя не было ложного совпадения - просто сравнивай ещё и тип в Equals (через GetType)

    Если тебе нужно сравнить объекты по принципу больше/меньше/равно, то тут к тебе на помощь приходит интерфейс IComparable.
    Ответ написан
    2 комментария
  • Что из этого исходный код?

    @Voland69
    bin - результаты компиляции вашего приложения - в гите не нужно
    obj - промежуточные результаты компиляции - в гите не нужно
    ConsoleApp.csproj - файл проекта, метаданные и зависимости - кладем в гит
    ConsoleApp.sln - файл решения (это проект из других вложенных проектов) - кладем в гит
    Program.cs - собственно исходный текст вашей программы - кладем в гит

    Чтобы делать это не руками, освойте .gitignore.
    У github есть для вас шаблон для c# и VS
    Ответ написан
    4 комментария
  • Как снизить нагрузку на API?

    BasiC2k
    @BasiC2k
    .NET developer (open to job offers)
    Включите логгирование. Выясните - какие запросы чаще всего поступают, какие запросы дольше всего выполняются. Оптимизируйте.
    Следующий этап - создание очереди запросов (возможно потребуется пересмотр имеющейся архитектуры) приложения.
    Ответ написан
    Комментировать
  • Какое наиболее простое решение для генерации текста на основе текста, написанного реальным человеком?

    AlexNest
    @AlexNest
    Работаю с Python/Django
    Скорее всего, вам нужно что-то вроде GPT-3.
    Но и то, можно сделать лишь в некотором приближении.
    загрузил мегабайты

    Все потому, что человек это не просто набор из пары мегабайтов диалогов, это терабайты воспоминаний за десятки лет
    Ответ написан
    Комментировать
  • Делает ли использование AssetStore разработчика низкосортным?

    vabka
    @vabka
    Токсичный шарпист
    Использование готовых ассетов в разумных пределах - это нормально.

    Нет совершенно никакого смысла, например, рисовать с нуля кнопки для подсказок по управлению, когда можно взять уже существующие, которыми пользуются буквально все.

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

    + Нужно иметь запасной план на случай, если нужно отказаться от готового ассета (например если он не подходит по стилистике к остальной игре, негативно сказывается на производительности, или ещё что)
    Ответ написан
    Комментировать
  • Как одному единственному сайту удается определить оригинальный IP?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    ни один сайт не может узнать мой оригинальный IP

    ты всего лишь не нашел правильные сайты

    потрейси вызов https://2ip.ru/privacy/ и код страницы - увидишь, что именно передает
    Ответ написан
  • Как произвести на свет сию программу?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Для создания сей программы есть два пути:
    1. Самостоятельно изучить Python, равно как и программирование, как таковое. То есть полностью погрузиться в тему, в том числе изучить сопутствующие библиотеки, их плюсы и минусы.
    2. Составить ТЗ и заказать работу на фрилансе.

    В любом случае вопрос отпадает сам собой. Таков путь, ибо задания здесь запрещены.
    Ответ написан
    Комментировать