• Как правильно кинуть исключение в конструкторе класса?

    Nipheris
    @Nipheris Куратор тега C++
    Но я начал читать и узнал про некий эомби-режим объекта, в котором произошел вызов данного exception.

    Не владею такой терминологией. Подробную цитату или ссылку на статью.

    Вероятно там будет о том, что выбрасывать исключение из конструктора можно, но осторожно. В основном все проблемы оттого, что если конструктор выбросил исключение, объект считается недособранным, и деструктор НЕ будет вызываться. Т.е. перед тем как бросить исключение в к-ре вы должны САМИ подчистить всё, что успели насоздавать: https://isocpp.org/wiki/faq/exceptions#selfcleanin...
    Ответ написан
  • Что ж, как начать кодить(на C#)?

    Nipheris
    @Nipheris Куратор тега C#
    Тот случай, когда не могу добавить что-либо к тому, что предлагал пару лет назад.

    Но как можно понять, это учит лишь правильно держать карандаш, когда я хочу уметь рисовать.

    Хорошо, что вы это понимаете.

    Знаю о существовании книг и прочего по паттернам, но как по мне до этого еще чутка рановато, и нужно набить руку.

    И это тоже хорошо, что понимаете. Сначала нужно столкнуться с проблемами, а потом искать решения в книгах - иначе это будет как для швеи книга по закаливанию стали.
    Ответ написан
    Комментировать
  • Ellipse и TextBlock, как правильно сделать ширину TextBlock'a с TextWrapping?

    Nipheris
    @Nipheris Куратор тега C#
    Поставьте в ColumnDefinition вместо Auto значение 1*.
    Также запретите листбоксу иметь горизонтальную прокрутку:
    <ListBox Name="Test" Grid.Column="1" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
     ...
    Ответ написан
  • Как посчитать координаты для дерева?

    На вашей картинке некий нелистовой узел располагается посередине того интервала (по оси X), который занимают его дочерние узлы.

    Поэтому решите задачу определения того, сколько места должны занимать дочерние узлы, включая все их дочерние узлы и т.д. Эту задачу можно решить алгоритмом ПВГ-обхода дерева, управляя стеком вершин вручную или же пользуясь рекурсивными вызовами процедуры обхода.
    Ответ написан
    8 комментариев
  • Какие есть игровые движки, генерирующие wasm?

    Magnum тут объявил недавно о поддержке WebAssembly. Вроде подходит под ваши критерии.
    Ответ написан
    Комментировать
  • Откуда у Google столько памяти?

    www.artificialbrains.com/google/datacenters

    Посчитаете сколько там в сумме? Явно больше 1.5 миллионов. Как думаете, сколько суммарно памяти на них?
    Если что в Гулге изобрели, так это средства горизонтального масштабирования типа Google File System и много чего ещё. Чтобы если что, можно было поставить ещё десяток серверов. А потом ещё сотню. А потом ещё тысячу.

    И объем памяти уже становится не такой уж большой проблемой. Проблема - заставить это слаженно работать и синхронизировать то что должно быть синхронизировано. Умы инженеров будут стоить точно больше чем железки.
    Ответ написан
    Комментировать
  • Какие технологии использовать для создания чата?

    > Нашел статью на хабре от 2010 года:
    > HTML5 WebSockets -могут возникнуть проблемы со старыми браузерами

    2010 по меркам фронтэнда это до рождества Христова. Нужно искать актуальную информацию, чистых вебсокетов или решений на их основе более чем достаточно.
    Ответ написан
    Комментировать
  • Стал работать по часам и обнаружил, что выходит 6 часов в день. Это нормально?

    Мы планируем на день и логируем в JIRA 6 рабочих часов. Больше - бессмысленно, всё равно будет неправдой, т.к. ещё есть:
    - ревью кода;
    - питие чая;
    - рабочие беседы и совещания.
    Ответ написан
  • OpenGL или DirectX?

    Nipheris
    @Nipheris Куратор тега C++
    Зависит от ваших текущих знаний и пожеланий, особенно от того, насколько вы готовы разбираться с каждой их технологий.

    OpenGL это кроссплатформенное API, раньше было не очень удобно начинать работу с ним на Винде, сейчас доступны различные библиотеки (GLEW, GLFW) и это больше не проблема.
    DirectX возможно даст вам больше возможностей, но там много заморочек с Windows-специфичными вещами, т.к. DirectX работает через технологию COM. Поначалу будет непривычно.

    Я бы на вашем месте начал с OpenGL и посматривал на Vulkan. Знание OpenGL полезно ещё тем, что проще будет использовать родственные API, например WebGL, если захотите писать внутрибраузерный код.
    Ответ написан
    Комментировать
  • Как создать команду и организовать современный процесс разработки на C#/.NET?

    Однако, понимая, что команда застряла где-то в каменном веке, хочется хотя бы с чего-то начать.

    Ну вот с гита и начните - он вам даст нормальные возможности и для тестирования и для CI.
    Вы можете сказать - гит штука гибкая, нужно иметь какие-то требования к организации процесса чтобы подстроить под себя. Это верно, поэтому пока будете объяснять людям чем гит может быть полезен, сами поймёте что вам нужно.

    Современный процесс разработки диктуется не языком и даже не платформой, а требованиями бизнеса к гибкости, коротким релизам и быстрому MVP, а также пониманием того, что "если они могут выкатываться 2 раза в день - то и нам бы надо почаще, чем раз в 3 месяца".
    Ответ написан
  • Использование итераторов foreach?

    Nipheris
    @Nipheris Куратор тега C#
    Не должно быть duck typing в строго типизированном языке.

    Это не duck typing, это структурная типизация. Проверки, как вы могли заметить, выполняются во время компиляции, а не выполнения - где ж тут duck typing? А то что наследоваться не обязательно от опр. интерфейса - так что ж тут плохого? Язык даёт синтаксический сахар в виде foreach, задача компилятора - сгенерить код, содержащий вызовы определённых методов с определённой сигнатурой, не более. Это задача именно что для структурной типизации, когда компилятору без разницы что у вас там за класс и какие у него интерфейсы, лишь бы можно было сгенерировать нужный код, и это правильно.
    В конце-концов шаблоны в C++ работают точно также. И for-range циклы в C++ работают похожим образом (требуют чтобы были реализованы нужные методы, или свободные функции, принимающие аргумент нужного типа). В C# советуют реализовывать интерфейс, т.к. это даёт дополнительные возможности: а) передавать объект туда, где ожидается этот интерфейс (т.к. C# всё таки в основном язык с номинативной типизацией); б) контролировать что вы не забыли ничего реализовать.

    Прочитал, но по факту, класс всё равно реализует IEnumerable, просто явно об этом не заявляет.

    Не соглашусь, довольно спорный момент. Номинативная типизация говорит, что если только явное заявление о том, что мы реализуем какой-то интерфейс, даёт нам отношение is-a между классом и интерфейсом. Если мы НЕ говорим, что реализуем IEnumerable, то мы его НЕ реализуем, даже если у нас там такие же методы.

    И да, разберитесь заодно в разнице между статической и строгой типизацией, если вы не оговорились в комментарии, а действительно не понимаете разницы.
    Ответ написан
  • Как создаются большие игры на 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-шник.
    Ответ написан
    Комментировать