• Как создаются большие игры на c++ или c#?

    Nipheris
    @Nipheris Куратор тега C++
    1. Разработка крупных игровых проектов имеет как минимум те же особенности, что и разработка крупных приложений вообще. Раз вопрос о движках, не будем рассматривать прочие аспекты, такие как построение игровой модели, графический дизайн игры, написание сюжета и пр. Разработка движка, как большого проекта, требует:
    - умение поставить начальные технические условия, которые будут заложены в архитектуру проекта (чтобы потом не было очень больно это всё менять);
    - умение разбить движок на крупные подсистемы и выстроить между ними необходимые интерфейсы, чтобы каждую из подсистем отдать на разработку в отдельную команду;
    - умение получить MVP в разумные сроки и строить дальнейшую разработку итеративно.

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

    Для всех тех, кто понимает как реализовать вышеописанное, C++ и C# - лишь инструменты и жизненная необходимость, чтобы получить всё это, поэтому про знание языков даже говорить не буду, это подразумевается.
    Ответ написан
    Комментировать
  • Свой gps трекер с выводом на свой сервер?

    https://www.traccar.org/devices/

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

    Nipheris
    @Nipheris Куратор тега C#
    Конечно у вас будет один и тот же массив, вы ведь его один раз создали снаружи цикла.

    В C# массив - ссылочный тип. Это значит что ваша переменная anyArr хранит в качестве значения ссылку (!) на массив. Если вы скопируете значение переменной, что вы по сути делаете в строке arrList.Add(anyArr); вы скопируете эту самую ссылку на массив, но не сам массив (в результате ссылка на один и тот же массив будет помещена в список 6 раз).

    Если хотите иметь 6 разных массивов - создавайте их в цикле, или копируйте исходный, смотря что вам нужно делать. В любом случае, вам нужно 6 разных объектов типа object[] .

    Затем читайте про типы-значения и типы-ссылки в C#.
    Ответ написан
    2 комментария
  • Какая лучше практика подключения внешних зависимостей в Webpack?

    Плохо искали:
    Split add and vendor code
    This will remove all modules in the vendor chunk from the app chunk. The bundle.js will now contain just your app code, without any of its dependencies. These are in vendor.bundle.js.
    Ответ написан
    1 комментарий
  • Существует ли в Typescript возможность использования динамической памяти?

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

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

    Поэтому вопрос переходит к тому, какой язык вам нужен. Хотите попытаться писать браузерный код на C++? Попробуйте поэкспериментировать с WebAssembly.
    Ответ написан
    Комментировать
  • Дружба C# и Linux, как?

    Nipheris
    @Nipheris Куратор тега C#
    Гуглите .NET Core / Mono.
    Ответ написан
    Комментировать
  • Формирование класса С++?

    Тот код что в вопросе нужно поместить в хедер, затем тело конструктора перенести из хедера в cpp-шник.
    Ответ написан
    Комментировать
  • Куда исчезает память с диска "С"?

    TreeSize Free для начала. Ну и сразу посмотрите размер файла подкачки (pagefile.sys) и сколько жрёт файл гибернации (hyberfil.sys) в корне диска. Чтобы иметь файловый менеджер который не скрывает лишнего от ваших глаз, можно установить Far Manager.
    Ответ написан
    3 комментария
  • Как организовать сложную бизнес-логику?

    Nipheris
    @Nipheris Куратор тега C#
    Такой подход называется реактивное программирование. и реализован в библиотеках Rx.NET и ReactiveUI. Бизнес-логику он вам проще не сделает, но организовать зависимости между тем какие значения как вычисляются - поможет (благодаря декларативному подходу к описанию зависимостей).
    Ответ написан
    Комментировать
  • Мёртв ли QML? Стоит ли забыть раз и навсегда о кроссплатформенных гибридных приложениях на Qt?

    Nipheris
    @Nipheris Куратор тега C++
    Моё мнение таково:
    1) популярность QML на "том же Upwork" зависит от популярности C++ на "том же Upwork";
    2) C++ - язык крупномасштабной командной разработки, либо же разработки узкоспециализированной;
    3) заказы на крупномасштабную командную разрабоку всегда будут составлять лишь небольшую часть заказов на Upwork ввиду природы этого ресурса (т.к. на этом ресурсе не только крупные заказы а ЛЮБЫЕ заказы);
    4) вывод: Upwork - плохой критерий оценки пригодности QML для продакшена.

    Что касается React Native - это инструмент для задействования frontend-рабочей силы в сфере, где специалист QML/C++ будет более дорогим. Это разумный выбор для приложений и компаний, где ещё нет C++ разработчиков но есть JS разработчики, и где ещё нет C++ кодобазы, но есть JS, либо ещё нет никакой вообще.

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

    Я бы не взялся отвечать сколь либо конкретно на ваши вопросы, т.к. всё это очень сильно зависит от конкретных задач, которые будет решать ваш пакетный менеджер. Непонятно, системный ли это пакетный менеджер, вроде RPM или Windows Installer, или это пакетный менеджер для языка/экосистемы вроде NPM.

    Также непонятно и о каком хранилище вы говорите. Вероятно ваш пакетный менеджер будет клиент-серверным комплексом. Ваши вопросы касаются хранилища для сервисного компонента или способ хранения/установки пакетов на той машине, где они "потребляются" вас тоже интересует?

    Что для вас безопасность? Доступ к каким операциям и ресурсам в вашем программном комплексе вы хотите ограничить?

    Вам следует задать гораздо более узкий вопрос, а для этого сначала нужно продумать задачу самостоятельно. Если вы не знаете с чего начать - тогда либо ваши цели вам поставил другой человек, и нужно уточнить у него, либо, если эти цели вы сами себе поставили - вам надо понять, что вам хочется/нужно. Начните с изучения существующих решений, хотя бы чтобы понять, что "пакетный менеджер" - слишком шиорокое понятие, чтобы рекомендовать что-то конкретное.
    Ответ написан
    1 комментарий
  • Использование библиотеки не имеющей typescript d.ts?

    Ответ очевиден - написать type definitions самостоятельно.
    Ответ написан
    4 комментария
  • Какую вы знаете литературу о внутренностях С++?

    Nipheris
    @Nipheris Куратор тега C++
    Advanced C and C++ Compiling
    Linkers and Loaders.

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

    Nipheris
    @Nipheris Куратор тега C#
    Какая версия VS? Какой тип проекта? Есть возможность использовать новую проектную систему? Если да, то PackageReference и вперёд.

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

    Nipheris
    @Nipheris Куратор тега C++
    Факт 1. malloc и free реализуется не ОС, а рантайм-библиотекой языка C/C++. Да, безусловно, время от времени рантайм библиотека делает системные вызовы для того чтобы получить от ОС адресное пространство, но делается это далеко не на каждый malloc/free.

    Факт 2. Вам нужно чётко понимать, что работаете вы со средствами языка и стандартной библиотеки языка, а не ОС. Если на каком-то устройстве скомпилированная программа на C должна работать без ОС, то и способы реализации функционала malloc/free будут иные.

    Факт 3. Алгоритмы, реализующие работу malloc и free, хранят довольно много служебной информации для себя, в частности размер и положение выделенных блоков. Вы не имеете непосредственного доступа к этой информации, но это не значит что её нет. Её достаточно как минимум для того, чтобы выделять вам новые блоки и корректно освобождать старые. Такие алгоритмы называются менеджерами памяти. Кстати в этой незамысловатой статье на вики написано о так называемой иерархии менеджеров памяти. Если вы ознакомитесь с этим понятием, узнаете наверняка больше, чем из всех ответов вместе взятых.
    Ответ написан
    Комментировать
  • Можно ли получать OHLCV из coinigy?

    Вы или непонятно спросили или невнимательно смотрели: https://www.coinigy.com/bitcoin-data/ .

    Вот схемы таблиц для тиковых данных и для баров (внизу страницы): historical-data-schema.png
    Вроде вам должно подойти (в принципе чего ещё можно хотеть-то..).

    Update: не сразу понял что речь об API. Видимо это лучше что доступно: docs.coinigy.apiary.io/#reference/market-data/mark... . Конечно если вам для личных непродакшен целей, можно попытаться брать данные из терминала, но не факт что это будет просто, да и им это не понравится.
    Ответ написан
  • Почему автозагрузка программы не работает С# WPF?

    Nipheris
    @Nipheris Куратор тега C#
    В современной Винде приложения, требующие повышения привелегий, можно нормально запустить только с помощью планировщика заданий. Повышение привелегий (которое в свою очередь приведёт к срабатыванию UAC, если он включён) невозможно для программ в автозагрузке (неважно в папке или через реестр).
    Ответ написан
    1 комментарий
  • Почему WebGL такой медленный (с пустым шейдером)?

    (хотя и в GPU тоже копируется, но опять же, 60 раз).

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

    gl.bindBuffer(gl.ARRAY_BUFFER, gl.createBuffer());
    Вот так делать нельзя. Создание и заюзание буфера разделили не для того чтобы вам жизнь усложнять. Попробуйте избавиться от этого и сделайте нормально.
    Ответ написан
    1 комментарий
  • Преимущество использования Expression вместо Func?

    Nipheris
    @Nipheris Куратор тега C#
    Это совершенно разные вещи.

    Func это стандартный тип функтора, который позволяет вам передавать/сохранять некое поведение или вычисления и работать с функией как со значением.

    Expression-ы - это не функторы, это синтаксические деревья выражений. Вы можете их скомпилировать в код, чтобы получить функцию, которую можно обернуть в Func, но вы можете воспользовать экспрешенном совершенно иначе, например вывести его содержимое тем или иным образом или вообще скомпилить экспрешн не в код, а например в SQL-запрос, как, ЕМНИП, делает LINQ-to-SQL. Экспрешен - это структура данных, а не функтор, который можно вызвать.

    Если непонятно, советую погуглить по "функтор" и "синтаксическое дерево", а также посмотреть примеры на MSDN про компиляцию Expression-ов. Слишком много тут мат. части чтобы в двух предложениях объяснить.
    Ответ написан
    Комментировать