Задать вопрос
  • Правильна ли реализация АПИ: new Car().Run(100)?

    Я бы переписал этот код так:
    public abstract class Transport {
        public int MaxSpeed { get; private set; }
    
        public Transport(int maxSpeed) {
            MaxSpeed = maxSpeed;
        }
    
        public string Run(int speed)
            => $"Скорость движения транспорта {(speed <= MaxSpeed ? "в пределах нормы" : "выше максимальной")}";
    }
    
    public class Car : Transport {
        public Car() : base(300) {}
    }
    
    public class Bike : Transport {
        public Bike() : base(40) {}
    }
    Ответ написан
    Комментировать
  • Какую технологию для бекенда проще освоить?

    Chronicler
    @Chronicler
    Программист
    C# и мощнее и проще во всех отношениях. Каждый раз выбирая JS вы выбираете всю боль динамической и при этом одновременно нестрогой типизации.
    Кроме того, C# разработан тем же человеком, что разрабатывал раньше Delphi.
    Ответ написан
    Комментировать
  • Какая есть литература для изучения ASP.NET MVC?

    sarapinit
    @sarapinit Куратор тега C#
    Точу водой камень
    Вот это и вот это покрывают тему примерно на 98%.

    Актуальнее учить Core.
    Ответ написан
    Комментировать
  • Как запретить доступ для юзеров с VPN?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    От накручивания не баны впнов помогают, а верификация. Например, по номеру телефона.
    Ответ написан
    2 комментария
  • Внешнее подключение к локальному iis express?

    kreo_OL
    @kreo_OL Автор вопроса
    Медузко -_-
    Решение проблемы вышло в три пункта
    1. Необходимо запустить именно сбилженный сервер - от ide не работает вообще ни как кроме локалхост.
    2. В моем случае необходим https. Но не знаю почему, но помогло только прописать оба порта
    .UseStartup<Startup>().UseUrls("http://192.168.88.6:6666", "https://192.168.88.6:6669");

    Если общаться на 6666 то приходит что необходимо пойти на 6669. А вот если прописать только один порт в UseUrls, то приходит то самое "Error: connect ECONNREFUSED 192.168.88.6:6666" (или 6669).
    3. Первые два пункта помогли увидеть сервер в локальной сети. и только включение службы iss в компонентах виндовс дало доступ из вне
    spoiler
    5f3ef0fd41527473603034.png


    Кстати если не делать пункт 2, а третий сделать, то все ровно ничего не работает ни на каком порту.)

    Надеюсь сюда придут знающие, и расскажут почему все именно так.
    spoiler
    Если смущает путаница портов в вопросе и ответе, то это изза того что я в отчаиние применял научный тык.
    Ответ написан
    Комментировать
  • Как переделать код (см. внутри)?

    FoggyFinder
    @FoggyFinder
    Давайте попробуем вместе разобраться как решать подобные вопросы.

    В таких случаях первое что нужно сделать это правильно докопаться до корня проблемы.

    Ваша задача убрать использование пространства имен System.Drawing.

    Что для этого нужно сделать?
    1. Убрать вверху заголовочный using
    using System.Drawing;
    2. Удалить ссылку на сборку

    Теперь пробуем скомпилировать проект, получаем ошибки:

    error CS0246: Не удалось найти тип или имя пространства имен "Point" (возможно, отсутствует директива using или ссылка на сборку)


    Значит вопрос можно переформулировать примерно следующим образом:

    Чем можно заменить класс Point из System.Drawing?


    Согласитесь, что чем более конкретен вопрос тем легче на него ответить.

    Итак, всего одна ошибка значит большого труда исправление не составит. Не хватает одного класса Point. Можно пойти посмотреть исходники и скопировать класс оттуда, но мы пойдем другим путем.

    Компилятор пишет что нужен класс? Окей, давайте создадим класс

    class Point
    {
    
    }


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

    if (field[i, j] == "0") current = new Point(i, j);

    1>error CS1061: "Point" не содержит определения "X", и не удалось найти доступный метод расширения "X", принимающий тип "Point" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку).


    if ((i == current.X) && (j == current.Y))


    1>error CS1061: "Point" не содержит определения "Y", и не удалось найти доступный метод расширения "Y", принимающий тип "Point" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку).
    1>error CS1061: "Point" не содержит определения "Y", и не удалось найти доступный метод расширения "Y", принимающий тип "Point" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку).


    Кажется, все понятно. Мы пытаемся использовать несуществующий конструктор и несуществующие свойства.

    Добавляем все необходимое. Компилятор ругается на два свойства и ожидает увидеть конструктор с двумя параметрами? Ага, зависимость видна - каждому параметру соответствует свое свойство с названиями X и Y соответственно.

    Как определить их тип? Смотрим что мы пытаемся туда передать? i , j - целые числа - int. Значит его и ставим.

    class Point
    {
        public int X { get; set; }
        public int Y { get; set; }
    
        public Point(int x, int y)
        {
            X = x;
            Y = y;
        }
    }


    Пробуем скомпилировать? Ошибок нет, можно переходить к этапу проверки работоспособности.
    Ответ написан
    2 комментария
  • Как использовать DDD?

    @EvgeniiR
    https://github.com/EvgeniiR
    Пусть статья и комментарии будут разными агрегатами. У комментариев будет свой домен.

    Можно в контексте комментариев сделать свой класс статьи( Article ). Он даже не будет сущностью:
    class Article {
      private UUID id;
      
      private CommentsRepository comments;
      
      ...
      
      public void function addComment(commentData: commentData) {
        this.coments.add(new Comment(this.id, commentData));
      }
    }


    В контексте комментариев не обязательно нужна статья - нужен только её идентификатор.
    Также в контексте комментариев вовсе не нужны данные пользователя - только его идентификатор. Идентификаторы достаточно стабильная информация чтобы не бояться их шарить.

    И да, в данном случае мы имеем дело просто с декомпозицией системы, к реальному DDD это мало отношения имеет, потому что domain-driven-design, он domain-driven за счёт того что конексты обсуждаются с бизнесом, а не придумываются разработчиком, в данном случае мы просто берём оттуда немножко терминологии потому что она уже стала довольно общей.
    Ответ написан
    2 комментария
  • Что НЕ стоит начинать изучать в ближайшем будущем?

    myks92
    @myks92
    Нашёл решение — пометь вопрос ответом!
    Всё, кроме того что советуют учить по теме: «Что учить новичку в 2020?»
    Ответ написан
    Комментировать
  • На каком языке сейчас чаще всего программируют микроконтроллеры?

    @0x131315
    Тут чистая экономика.
    Контроллеры ставят в основном в массовые устройства.
    Это значит что каждый сэкономленный доллар - это десятки, а то и сотни миллионов прибыли на ровном месте.
    Подобные суммы с лихвой покрывают время программистов, поэтому им ставят задачу уложить функционал на самый дешёвый контроллер, который ещё хоть как-то способен потянуть этот функционал.
    Отсюда - высокая степень оптимизации кода при работе с контроллерами.
    Нужно максимально использовать все особенности конкретного контроллера - программисты много работают с даташитом.
    Язык должен позволить максимально полно использовать систему команд конкретного контроллера, и гибко управлять регистрами и памятью контроллера.
    Поэтому в ходу в основном ассемблер - с ним можно писать максимально компактный код.
    Но функционал зачастую достаточно большой, чтобы его целиком писать на ассемблере.
    Поэтому, в целях экономии времени, пишут на Си, с использованием библиотек, а самые ответственные места реализуют с помощью ассемблерных вставок.
    Благодаря этому удается реализовать почти все преимущества и ассемблера и Си: быстрая и достаточно полно контролируемая разработка, с достаточно компактным и быстрым кодом.

    С симками ситуация иная - там важно было реализовать кроссплатформенный код. Поэтому используют java, не смотря на ресурсы.

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

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

    Так что все зависит от здравого смысла и стоимости.
    Просто так везде пихать java - немного глупо.
    Ответ написан
    Комментировать
  • ASP.NET Core несколько страниц или несколько if?

    @d-stream
    Готовые решения - не подаю, но...
    Видимо стоит подумать на тему "а что будет, если внезапно потребуется еще одну-две-двадцать-двести вывести?"
    Ответ написан
    3 комментария
  • Java на уровне железа, отличия от C++?

    gbg
    @gbg Куратор тега C++
    Любые ответы на любые вопросы
    Авторы надеялись, что к железу можно будет обращаться с помощью абстракций - производитель железа у себя реализует java-машину, а уж сверху нее можно запускать прикладной код.

    Вы забываете о большом пласте истории техники, который был сильно до этого - 8 битные домашние ЭВМ (десятки их) и язык Бейсик.

    Так вот, ЭВМ того времени были катастрофически разными - разные носители (кассеты, дискеты, картриджи), разная аппаратура (засунуть еще один центральный процессор в дисковод? да нивапрос! разная скорость для PAL и NTSC версий - легко!). Но вот бейсик был везде и позволял, с некоторыми переделками, таскать программы с машины на машину.

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

    Отчасти, это сработало на старых мобилках, в эпоху j2me - это как раз Java, засунутая в телефон - игры, браузеры, карты (были даже ЯндексКарты), читалки, чатилки - куча всего.

    Еще один виток эволюции, которые вы, видимо, не застали - (чорд, я - стар, я очень стар) - попытки сотворить интерактивные веб страницы.
    "У нас же есть всюду переносимая Java - давайте влупим ее поддержку в браузер в виде апплетов - небольших приложений". Тут резко активировались вирусописатели и прочий сброд - благодаря развесистой и дырявой архитектуре, апплеты могли творить всякую дичь.

    Сейчас апплет на java можно встретить во всяком старом железе, на нем там сделано GUI для удаленного администрирования серверов, коммутаторов и СХД. Вы браузером заходите на железку, и тут на вас вываливается ворох предупреждений о том, что сейчас будет запущено какое-то ужасное дырявое ПО, держите штаны, а то слетят. Уверены? Точно уверены? А с этим согласны? А так?

    А уже потом начали активно применять JavaScript, главным образом, изобретя Ajax - продолжая люто натягивать сову (систему для создания электронных библиотек для ученых/HTML) на глобус (задачу создания интерактивного гуя с красивой версткой).

    И это вы еще бэк на Perle не рефакторили
    Ответ написан
    2 комментария
  • Как реализовать свой маппинг обьектов в ASP NET CORE MVC?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Возможно стоит спросить у
    Мне сказали, что Автомаппер зло и его лучше не использовать

    И напомнить ему про принцип не изобретай очередной велосипед?
    Ответ написан
    8 комментариев
  • Какую задачу поставить для диплома по нейронным сетям?

    @dmshar
    Ну как можно проучиться сколько-то там лет в универе, дожить до диплома и не уметь себе найти интересную задачу для диплома? При это - обращаться за подсказками к людям, которые понятия не имеют, ни по какой специальности вы обучаетесь, ни про уровень вашей подготовки, ни направления ваших интересов.
    Ну вот задача самая интересная, актуальная, c кучей доступных данных, с десятками примеров в сети, вполне решаемая с помощью нейросети и - на мой взгляд - адекватно (для диплома) не сложная:
    Предсказание развития пандемии COVID-19 в вашей стране.
    Подойдет?
    Ответ написан
    Комментировать
  • Как решить задачу в С# console?

    GavriKos
    @GavriKos
    Обычно решение задачи разделяется на следующие вещи:
    - вдумчивое чтение задачи, уточнение вопросов
    - декомпозиция задачи
    - написание "на бумажке" каких нить схем, алгоритмов, классов и их связей , архитектуры
    - перенос того что на бумажке в код
    - отладка и проверка соответствие требованиям.

    Вот краткий ответ на вопрос "как решить задачу". Следуйте этим пунктам и у вас все получится.
    Ответ написан
    Комментировать
  • Как перевести этот код c++ в python?

    valerylinkov
    @valerylinkov Автор вопроса
    Гик
    Вот так

    n = int(input())
    
    def get_count(prev_level, n):
    	if (0 == n):
    		return 1
    
    	count = 0
    	for level in range (1, prev_level):
    		if ((n - level) < 0):
    			break
    		count = count + get_count(level, n - level)
    	return count
    
    print (get_count(n+1, n))
    Ответ написан
    1 комментарий
  • С чего начать разработку программы-игры?

    GavriKos
    @GavriKos Куратор тега Unity
    Любая разработка начинается с ТЗ!
    Ответ написан
    Комментировать
  • С чего начать разработку программы-игры?

    50Dreams
    @50Dreams
    Я в ютубе видел видео ("Вся суть программирование")

    Кроме этого существуют видео "Программирование за час", существуют книга "Java за 21 день"... Но вот представте - "Хирургия за чаc". Вы бы стали лечиться у хирурга, который час назад прочитал эту книгу и до этого не имел никакого медицинского образования?.. Ответ ясен - нет.
    с чего начать делать игру

    Какой у вас уровень английского? А какой уровень математики (Алгебры и геометрии)?.. Это вопросы не в шутку... Хоть и необязательно, но информации больше на зарубежных источниках, поэтому вам необходимы средние знания английского, чтобы в состоянии воспринимать текст из этих источников. А математика необходима чтобы понять, для чего необходимы те или иные вычисления в коде. Если вы уверены, или уже улучшаете своики навыки в английском и математике, далее, вам необходимо прочитать книгу про Алгоритмы. Лучшее для новичка - это "Грокаем Алгоритмы" Бхаргава Адитья. Необязательно от корочки до корочки! Позже можно уже приступать к изучению языка программирования... Но не высокого уровня! Изучите язык низкого уровня - Си! Изучив Си, вам легко будут даваться любые Си-подобные языки программирования. Поэтому вам легко будет пересесть с одного Си подобного языка на другой! С этими знаниями уже можно идти в бой! Но как же насчёт графики? Тут вам необходимо изучить компьютерную графику для того чтобы понимать происходящее на экране (Тут уже обязательно нужна как геометрия, так и алгебра). Возьмите под руку старый добрый OpenGL! На мой взгляд, он имеет самый понятный синтаксис для новичка (В отличии от DirectX и уж тем более Vulkan). После всего этого, если вы до сих пор заинтересованы в создании игр, изучите архитектуру игровых движков. Тут можете взять популярную книгу Game Engine Architecture Джейсона Грегори. Можно посмотреть архитектуру движка Quake. После всего этого - вы готовы писать игру (И не только)! Я не просто описал этот путь (И это он ещё не описан до конца!). Если вы хотите писать качественные игры самостоятельно или устроиться в какую либо крутую студию игроделов - эти знания необходимы.
    Ответ написан
    Комментировать
  • Почему все так рьяно говорят о том, что C++ ужасен и не нужен, но при этом он стабильно входит в топ 10 яп?

    @towin
    У С++ нормальный синтаксис. Он намного логичнее чем у Python с его отступами.
    С++ хоть и язык высокого уровня, но позволяет писать очень быстрый код. Настолько быстрый, что он является стандартом для микроконтроллеров, все остальные языки там скорее как исключение (не считая Си).
    С++ позволяет писать очень крупные и сложные проекты. При этом не обязательно использовать все его навороты.

    С++ не любят, потому что на нем можно написать просты вещи очень сложным образом, особенно с использованием новых стандартов. Так конечно не нужно делать в совместной работе, но многие любят тешить свое эго.
    Подключение внешних библиотек к С++ непростое и все нужно делать ручками.
    Количество вакансий на С++ постепенно снижается, т.к. десктоп угасает, очень многое уходит в web и мобилки.
    Ответ написан
    2 комментария
  • Почему все так рьяно говорят о том, что C++ ужасен и не нужен, но при этом он стабильно входит в топ 10 яп?

    gbg
    @gbg Куратор тега C++
    Любые ответы на любые вопросы
    Потому что он оставляет программиста почти один на один с
    - абстрактной машиной, очень похожей на PDP-11
    - навороченным стандартом, логически следующим из п.1, который призван дать возможность писать максимально легковесный для машины код, и при этом реализуя сложные структуры и алгоритмы.

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

    Но если надо выдавить из железа остатки процентов (игрушка/числодробилка) - увы, остаются плюсики.

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

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Какой-то конкретной цели, объясняющей для чего мне это надо, пока что нет.

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

    Льюис Кэрролл
    Ответ написан
    1 комментарий