Задать вопрос
  • Как правильно разбирать задачи и примеры?

    Вообще, ваш вопрос не вопрос, а задание, но.
    1. Из-за паскале-подобного кода было сложно понять, но после рефакторинга я понял, что это вычисление n-го члена последовательности фибоначи. n-3 сделано, тк автор когда м***к и не знает ничего про чистоту и читабельность кода.
    Console.Write("n = ");
    var n = Convert.ToInt32(Console.ReadLine());
    
    var s = new [] { 1, 1, 2};
    for(var i = 0; i < n - 3; i++)
    {
        s[0] = s[1];
        s[1] = s[2];
        s[2] = s[0] + s[1];
    }
    Console.WriteLine(x2);

    Тут "- 3" из-за того, что первые три члена уже вычислены - 1, 1, 2, ...
    И так далее.
    Аналогично со второй задачей - сначала даёшь нормальные имена переменным, и переносишь их туда, где они реально нужны, потом убираешь лишние комментарии, while вот это странный заменяешь на for, и так далее.
    Вообще, понять, почему код именно такой, не зная изначальную задачу, сложно.
    Ответ написан
  • Java интерфейс для entity/dto или передача метода по ссылке?

    1. Я бы не стал делать в валидаторе сигнатуру, которая принимает список объектов.
    Как минимум из-за того, что ему не нужен весь интерфейс, который даёт List. А как максимум - это просто не красиво.
    2. Я бы не стал валидировать объекты, которые лежат в базе (считается, что раз объект попал в базу, то он уже валиден). Так что имеет смысл валидировать только DTO.
    3. Вы правы, прокидывать лямбду для геттера в метод - это плохо.
    я бы сделал билдер для валидатора, наподобие
    // Псевдо-Java
    var validator = new ValidatorBuilder<MyDto>()
                                    .rule(d -> d.catalogues, catalogues -> catalogues.stream().map(c -> c.code).distinct().count() > 1)
                                    // etc
                                    .build();
    var dto = //как-то получаем экземпляр dto
    var dtoValid = validator.validate(dto);

    PS:
    Вдохновлялся шарповым FluentValidation - можете посмотреть на его API, но я бы не стал пытаться его портировать на Java, тк там много зависимостей от чисто шарповых штук
    Ответ написан
    Комментировать
  • Почему в c# метод static, но может содержать в себе не статические поля? Объекты, экземпляры?

    1. Метод Main объявлен как static, тк только так можно сделать его точкой входа. (если бы был не статик, то пришлось бы как-то компилятору объяснить, что надо создать экземпляр некоторого класса и вызвать на нём метод, а это излишне).
    2. Метод Main всё так-же не может обращаться к не статичным полям )) Попробуй сам и убедись. (но не надо путать обращение к полям и обращение к переменной)
    Ответ написан
  • Как в Java разбить класс на три более мелкие, чтобы не потерялась цепочка наследования?

    - Перетаскиваете ту логику, которая вам нужна в класс H и G (без наследования)
    - В классе 'B' делаете поля для экземпляров H и G (прикидываете через конструктор, или там-же инициализируете.
    - 'B' наследуете от A. Опционально даёте как-нибудь потомкам доступ к H и G (через методы B или напрямую к полям)
    Ответ написан
    Комментировать
  • Для чего абстракции в ООП?

    Абстра́кция (лат. abstractio — отвлечение) — теоретическое обобщение как результат абстрагирования.

    Пример близкий к реальности:
    Есть массив чисел и очередь из сообщений.

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

    Вариант без абстракций:
    пишем две независимые функции для каждого типа объектов.

    Вариант с абстракциями:
    1. Создаём абстракцию для нашей задачи: "Дана коллекция из элементов, нужно создать новую коллекцию и поместить в неё только те элементы, которые удовлетворяют некоторому данному условию".
    2. Выделяем из условия две новые абстракции: Коллекция элементов и Условие (предикат).
    3. Создаём функцию, которая будет принимать себе как аргумент коллекцию элементов и некоторый предикат
    4. Реализуем интерфейс предиката - "число чётное и больше 0" и "сообщение свежее и важное"

    Результат: Мы изобрели функцию filter
    const array = [-2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
    const predicate = num => num > 0 && num % 2 === 0;
    const result = array.filter(predicate);

    Вариант с абстракциями выглядит сложнее (так и есть) и заставляет больше думать на этапе проектирования, но позволяет избежать дублирования кода и, иногда, упростить работу с кодом.

    В качестве упражнения можете попробовать реализовать такую функцию в таких условиях, в которых у вас нет функций высшего порядка, а массивы и очереди не имеют какого-то общего интерфейса, чтобы проитерировать каждый элемент.
    Подсказка: тут вам пригодится паттерн "адаптер" и "стратегия" (хорошую книгу про паттерны уже упомянул VicTHOR)
    Ответ написан
    Комментировать
  • Можно ли сделать индексаторы динамической длиный?

    Такое ощущение, что вам нужен Dictionary<int, Person>, вместо массива, тогда не нужно будет динамически расширять массив, когда это надо (и не будет создаваться лишнее пустое место, если вы захотите пропустить пару сотен элементов)
    Ответ написан
    Комментировать
  • До какого уровня нужно выучить программирование, чтобы получить хоть какую-нибудь работу?

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

    Из моего опыта, самый быстрый способ, какой я наблюдал - за полгода можно научиться до хоть какого-то уровня в C#/Js/SQL, чтобы найти первую работу, а там уже при достаточном уровне любопытства развитие идёт гораздо быстрее (например я, по ощущениям, за первый месяц на первой работе получил примерно такой-же объём знаний, что я получил за пару лет учёбы до этого).

    Сначала имеет смысл определиться, какое направление больше всего привлекает, попробовать по-немного разные сферы, а потом учиться в ней (не страшно, если на этом этапе будут ошибки - перейти в другое направление не сложно)
    Ответ написан
    Комментировать
  • Какие перспективы у профессий разработчик бд (oracle) и веб-разработчик? Что выбрать?

    По поводу фронтенда:
    Конкуренция большая, но спрос тоже большой. Если добавить к знанию ноды и js ещё typescript, и знание какой-нибудь популярной технологии для бэкенда (Java/C#/Python/PHP), то конкуренция уже будет не особа страшна.
    Слухи о нестабильности веба сильно преувеличены.
    По поводу оракла:
    По моим личным ощущениям, сейчас очень мало (почти 0) новых компаний выбирают оракл, в качестве своей СУБД, по тому остаются всякие банки и прочие, кто уже давно использует его и не станет переезжать на условный постгрес. Платят достаточно много, но лично мне бы это удовольствия не принесло. Если вам оно нравится, то можете попробовать себя в этом направлении.
    > Может ли быть такое, что лет через 5 разработчики бд будут совсем не востребованы?
    Вообще, они и сейчас мало востребованы, тк новые продукты стараются выносить всю сложную логику из БД на сторону приложения, а накинуть индексы какие надо способен и обычный разработчик.
    Ответ написан
    1 комментарий
  • На чем писать кроссплатформенные десктопные приложения чтобы не было мучительно больно?

    > Electron. Главный недостаток - считается аццкой машиной, которая будет тормозить на любом железе.
    В том и дело, что только считается. Если нормально готовить и не возлагать на него непосильные задачи, то всё будет ок.
    > С# - давным давно имел с ним дело. Недостатки - условно кроссплатформенный, возможно, сложнее двух предыдущих.
    Вполне кроссплатформенный, но с кроссплатформенным gui имеются некоторые проблемы. Из наиболее адекватного есть Avalonia, которая похожа на WPF, но чуть удобнее.
    Ещё как вариант есть Java с её JavaFX и swing, но это на любителя.
    Больше я более-менее рабочих кроссплатформенных вариантов не знаю. Вывод делать не буду, тк опыта с кроссплатформенным десктопом у меня нет
    Ответ написан
    1 комментарий
  • Будет ли работать Видеокарта GeForce GTX 1660 Ti на частоте 144 Гц?

    1. Читаем спецификацию видеокарты, ищем строчку про версию hdmi
    - Видим, что там 2.0b
    2. Гуглим https://ultrahd.su/video/raznica-hdmi-1-4-hdmi-2-0...
    - Видим таблицу с совместимыми разрешениями и фпс
    3. Делаем вывод
    - Да сможет, вплоть до 2К (QuadHD), если монитор и кабель поддерживают hdmi 2.0
    Ответ написан
    1 комментарий
  • Как настроить канал в Slack с таким функционалом?

    Вы можете автоматически создавать каналы для каждого пользователя из user1, user2, user3. И создать ещё 1 канал, в который будут пересылаться сообщения из них. Можно пересылать и в обратную сторону, но, чтобы было красиво, нужно пересылать их с токеном пользователя (либо ставить опции в сообщения, чтобы бот мимикрировал под пользователя - ставил нужное имя и аватарку).
    Но так, чтобы какие-то сообщения были видны, а какие-то нет в рамках одного канала - так нельзя
    Ответ написан
    2 комментария
  • Почему студия не переходит к коду при возникновении исключений?

    1. Нужно запускать в дебаге
    2. Нужно поставить галку в настройках break on exceptions
    3. Чтобы отлаживать не только свой код, то ещё надо убрать галку "только мой код"
    Ответ написан
    Комментировать
  • Как убрать подсветку комментариев?

    1. Поставьте плагин Grazie - в нём более умный спеллчек, либо спеллчек можно отключить в настройках
    2. Не понятно, откуда это подчёркивание взялось. Так, часто, heap allocation viewer подсвечивает.
    Вытащить цвет налево, кажется, нельзя встроенными средствами
    Ответ написан
    Комментировать
  • Нужно ли хранить калорийность, количество жиров, углеводов и белков отдельно для рецепта и ингредиента?

    Хех, я подобное сам делал.
    Убрал из рецепта всё что относится к атрибутам результирующего продукта и добавил поле типа result_product_id, в котором пусть и хранится результат. (правда тогда не получится сделать так, чтобы рецепт голубцов и "ленивые голубцы" приводили к одному результату, хотя с определённой стороны - это ок)
    Ответ написан
    Комментировать
  • Куда курить по вопросу программной интеграции 1С и С#?

    Как из 1С вызывать шарп без вебсервисов не скажу, но есть неплохая библиотека для запрашивания данных из хранилища 1С Simple1C. Работает достаточно стабильно для использования в продакшене, но если именно такое не подходит, то можно посмотреть какие-нибудь идеи
    Ответ написан
  • Как замерить производительность скрипта в тактах процессора?

    На самом деле количество тактов вам мало даст полезной информации.
    Заметно полезнее будет профилирование и бенчмарки
    Такты процессора - слишком условная метрика, особенно, когда выполнение может остановиться в любой момент из-за сборки мусора или работы event-loop
    Ответ написан
    Комментировать
  • Как правильно передать массив байт из приложения .NET Core, при помощи web api?

    попробуйте при помощи
    new HttpClient().GetAsync() - тогда в ответе будут именно те байты, которые нужны.
    WebClient - легаси
    И возвращать из контроллера byte[] или Stream
    ByteArrayContent - это для клиента.
    Если вам нужно вернуть файл, а не произвольные байты, то тогда делайте return File(...);
    Ответ написан
    3 комментария
  • Как узнать на чем проект .net core или asp .net?

    Если в проекте есть файлы aspx, asax, то это ASP.NET.
    Если в .csproj файле имеется строка наподобие
    <PackageReference Include="Microsoft.AspNetCore" />
    , или <Project Sdk="Microsoft.NET.Sdk.Web"> с <TargetFramework>netcoreapp3.1</TargetFramework>, то это ASP .net Core
    Ответ написан
    Комментировать
  • При инициализации модуля возникает ошибка: "Значение не может быть неопределенным"?

    Скорее всего, у вас в момент вызова Region имел значение null. Попробуйте запустить в режиме отладки, предварительно поставив точку останова в начале метода OnInitialized. Если там действительно null, то проверьте, что IRegionManager регистрируется в вашем IoC контейнере, а сам MainWindowModule резолвится через контейнер
    Ответ написан