Задать вопрос
  • В каком порядке изучать C# по метаниту?

    И я думаю, что не все темы важны для освоения.

    Как ты это определил?

    Но вообще да. По моему мнению, можно пропустить следующие темы:
    • Глава 13. Многопоточность (но очень желательно не пропускать, ну или хотябы ознакомиться частично)
    • Глава 17. Parallel LINQ (но лучше знать что он существует)
    • Глава 18. Рефлексия (желательно знать, что она есть, и для чего её можно использовать, а для чего нельзя)
    • Глава 19. Dynamic Language Runtime (главное знать, что его лучше не использовать)
    • Глава 21. Работа с файловой системой. (можно пропустить пункт про BinaryFormatter)
    • Глава 22. Работа с JSON (это не является частью языка, но это нужное и используется часто, и эта тема освещена на метаните не достаточно)
    • Глава 23. Работа с XML (не является частью языка, да и используется редко)
    • Глава 24. Процессы и домены приложения (AppDomain больше не существует, но про процессы и загрузку сборок лучше знать, чем не знать)
    • Глава 25. Валидация модели (Не является частью языка, а для валидации лучше использовать FluentValidation)

    Остальное крайне не рекомендую пропускать. Да и то что можно пропустить, в принципе пропускать не желательно, тем более что материала там не много.

    Изучать следует в том порядке, в котором материалы даны, тк они идут в том порядке, в котором будет легче их осваивать (от простого к сложному. И новая тема даётся только после изучения тех тем, без которых понять её будет сложно)
    Ответ написан
    Комментировать
  • Зачем и где именно писать @Override?

    EugeneP2
    @EugeneP2
    Java Dev
    Это аннотация пишется над методами, которые переопределяются из супер класса.

    Это что-то вроде страховки, гарантирующая что 100% переопределен метод.

    class A {
    public void superMethod() {}
    }
    
    class B extends A {
    @Override
    public void superMethod() {}
    }


    Компилятор, когда встретит данную аннотацию, проверит, чтоб сигнатуры методов в супер классе и в под классе совпадали, т.е. вы переопределили метод, и в полиморфизме будит вызываться переопределенный метод.

    Если вдруг вы ошиблись в сигнатуре метода (например пропустили букву в название), то компилятор выдаст ошибку
    Ответ написан
    2 комментария
  • Зачем и где именно писать @Override?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Писать перед теми методами, которые переопределяете. Этим вы сигналите компилятору, что хотите не определить новый метод, а именно переопределить. Компилятор будет проверять наличие помеченных методов в базовом классе и выдавать ошибку, если их нет.
    Ответ написан
    Комментировать
  • В чём суть шутки про ноги в С/С++?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Это есть книга такая
    71AE90J735L._SX377_BO1,204,203,200_.gif

    В продолжение веселья https://www-users.cs.york.ac.uk/susan/joke/foot.htm
    Ответ написан
    Комментировать
  • Какие обязанности в команде у джуна .Net?

    saboteur_kiev
    @saboteur_kiev Куратор тега Карьера в IT
    software engineer
    Устраивался с большим желанием постоянно изучать и применять что-то новое, быстро вырасти как специалист, дойти до уверенного миддла, а в итоге занимаюсь штамповкой однотипных задач, не связанных с веб-разработкой и с инструментами .NET.


    Ну это ваши личные проблемы. Работа это не школа не институт и не курсы. На работе заказчик платит за то, что хочет заказчик, а не за то, что хочет разработчик.

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

    Этот вопрос совершенно не нужен в интернет. Спрашивай своего тимлида. Не во всех проектах есть "нормальные задачи", как ты их считаешь. Где-то ведь продукт уже написан, им пользуются люди, и в нем не нужно ничего дорабатывать. Просто обслуживать - решать проблемы эксплуатации, возможно подправлять баги, возможно обновлять что-то, чтобы продукт запускался на более новой версии java или оборудовании.
    И это НОРМАЛЬНО. С точки зрения пользователя, тебе было бы интересно купить машину, а потом платить каждый месяц еще 10% ее стоимости за то, что в ней каждый месяц то форма дверей меняется то диаметр колес то еще что-то? Думаю нет, ты бы хотел купить машину один раз и не лазить под капот несколько лет.

    При этот мой же куратор объяснил, что большая часть задач подобного рода, но его опыт и его задачи говорят о том, что всё же есть и много нормальных задач как и с использованием ASP.NET, реализацией API, структурой самой веб-системы и прочего.

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

    Ну а в целом - да, есть проекты, где больше разработки с нуля, есть проекты, где много миграций и рефакторинга, есть где больше просто поддержки. И специалисты везде нужны.
    Ответ написан
    3 комментария
  • Не могли бы вы разъяснить всю эту "кашу" фреймворков экосистемы .NET на 2021 год?

    .NET

    Это общее название всей экосистемы + название .net core после 5 версии.
    .NET Core

    Это название кроссплатформенного рантайма.
    ASP NET Core

    Фреймворк для разработки веб-приложений под .net core / .net 5+
    ASP NET Core 5

    Конкретно пятая версия этого фреймворка
    ASP NET Core 5 MVC

    То же самое + реализация паттерна MVC с использованием razor pages.
    Что к чему? Что самое свежее/актуальное сейчас?

    Самое свежее - .net 5, asp net core 5, asp net core 5 mvc
    Через месяц уже 6 версия выйдет.
    Ответ написан
    Комментировать
  • Как обновлять текст в файле?

    GavriKos
    @GavriKos
    Проблема в том, что при остановке приложения, файл удаляется

    А не должен. Значит где то прописано удаление. КОд ваш?
    Ответ написан
    5 комментариев
  • Можно ли в Dictionary cделать так?

    Можно через новый тип
    class Value {
        public int Id {get; set;}
        public string File {get;set;}
    }
    var dictionary = new Dictionary<string, Value> {
        ["asd"] = new Value { Id = 1, File = "File.png" }
    }

    Можно через кортежи (хз доступны ли они в юнити)
    var dictionary = new Dictionary<string, (int Id, string File)> {
        ["asd"] = (1, "File.png")
    }
    Ответ написан
    Комментировать
  • Какие есть удобные приложения для рисования UML диаграмм?

    plantuml - рисовать кодом
    staruml - платно, но удобно
    visio - платно и не удобно
    Ответ написан
    1 комментарий
  • Нужно ли знать +- ассемблер, чтобы изучать C?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Всем программистам стоит пройти хотя бы ознакомительный курс ассемблера. Особенно тем, кто пишет на отсносительно близких к железу языках, вроде Си.

    Это здорово вправляет мозги. Появляется понимание, а как вообще компьютер работает. Это не необходимое знание, конечно, но лишним оно не будет точно.
    Ответ написан
    Комментировать
  • Что значит С++17 в вакансиях? Зачем это пишут?

    Adamos
    @Adamos
    в вакансиях пишут "используем стандарт С++хх". Поясните, зачем это делают?

    Для привлечения разработчиков, которым тошно поддерживать код, написанный до C++0x ;)
    Ответ написан
    4 комментария
  • Как улучшить алгоритм?

    Добавлю свой вариант решения.
    Всё чётко по условию задачи
    // (1)     (2)      (3)     (4)     (5)     (6)     (7)     (8)     (9)
    // 1   2 | 5   6 | 9  10 | 13 14 | 17 18 | 21 22 | 25 26 | 29 30 | 33 34 |
    // 3   4 | 7   8 | 11 12 | 15 16 | 19 20 | 23 24 | 27 28 | 31 32 | 35 36 |
    // 54 53  52  51   50 49   48 47   46 45   44 43   42 41   40 39   38 37
    
    public int GetRoomByPlace(int place) =>
        place < 37
            ? (place - 1) / 4 + 1
            : 9 - (place - 37) / 2;
    Ответ написан
    1 комментарий
  • Где может быть полезен Rust?

    @ZOXEXIVO
    Пишите на любом языке и года через 3 поймете, что то, что вы скачете по верхам - совершенно ничего не значит.
    Только через 3 года жесткого программирования вы начнете писать с умом и по-настоящему (если попадется хорошая компания). И вопросы отпадут такие.
    Из всего того, что вы назвали - самое лучше решение, покрывающее практически все запросы - C#.
    Ответ написан
    Комментировать
  • Где может быть полезен Rust?

    Gorthauer87
    @Gorthauer87
    Программист
    Даже если не брать в расчет практическое применение, то rust здорово просветляет в вопросах владения ресурсами, после него куда проще проектировать многопоточность безопасную, куда лучше понимаешь move семантику в плюсах.
    Ответ написан
    Комментировать
  • Странный дизайн Rust?

    Rust это не C++. Почему он должен брать термины из C++?

    В Java вон тоже ссылки - это указатели в терминологии C++.

    Более того, ссылка от указателя отличается лишь абстракцией. В памяти это будут одинаковые ячейки, содержащие адрес.
    Ответ написан
    Комментировать
  • Не рано ли изучать Rust?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Первым лучше учить тот язык, на который реально много вакансий. Это не только не Rust, но даже и не Go.
    Ответ написан
    7 комментариев
  • Не рано ли изучать Rust?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Я думаю, что стоит учить Rust именно сейчас потому, что язык перспективный. Вакансии начнут появляться через пару-тройку лет. Язык сложный, поэтому нужно время на его изучение. Пока выучите и рынок подтянется.
    К тому времени будете в топе разработчиков с реальным опытом.
    У Rust есть хороший потенциал по вытеснению C, особенно с учетом того, что его дизайн способствует эффективному применению в многопоточных системах. Ввиду предстоящего бума ARM-процессоров перспектива очень даже заманчива.
    На текущий момент Rust + работа зарубежом (фриланс) вполне нормальная перспектива.
    Ответ написан
    7 комментариев
  • Как скомпилировать проект на C# в один .exe файл?

    Single File Application - фича современных дотнетов со времён .net Core 3
    Буквально при помощи одной опции в файле проекта или одной строкой в консоли собирает ваш проект в единый екзешник, в который ещё может быть опционально встроен рантайм.
    Вот пример csproj:
    <Project Sdk="Microsoft.NET.Sdk">
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>net6.0</TargetFramework>
        <Nullable>enable</Nullable>
      </PropertyGroup>
    
      <PropertyGroup>
        <!-- Вот это самое главное -->
        <PublishSingleFile>true</PublishSingleFile>
        <!-- Это чтобы тащить за собой рантайм До .NET 6 будут рядом лежать нативные библиотеки jit-а и сборщика мусора-->
        <SelfContained>true</SelfContained>
        <!-- Это необходимо, чтобы сборщик понимал, для какой ОС нужен экзешник -->
        <RuntimeIdentifier>win-x64</RuntimeIdentifier>
        <!-- Это чтобы ускорить запуск -->
        <PublishReadyToRun>true</PublishReadyToRun>
        <!-- Эти две строки, чтобы уменьшить размер бинарника -->
        <PublishTrimmed>true</PublishTrimmed>
        <TrimMode>link</TrimMode>
      </PropertyGroup>
    </Project>

    В результате получается единственный exe, который реально можно запустить где угодно, вне зависимости от установленной версии .NET

    Для старых версий дотнета есть ILMerge и Costura.Fody, но в .net 5+ они не нужны, и я крайне советую использовать именно .NET 8, тк он сейчас самый актуальный
    Ответ написан
  • Тема в справке по TypeScript - Generic parameter defaults. Чем является T?

    @StockholmSyndrome
    1)
    function a<T extends SomeType>(arg: T): void {
      // ...
    }
    данная конструкция означает, что обобщённый тип T должен иметь все свойства SomeType
    https://www.typescriptlang.org/docs/handbook/2/gen...

    2)
    function a<T = SomeType>(arg: T): void {
      // ...
    }
    в данном случае мы задаём дефолтное значение для обобщённого типа T, то есть по умолчанию он будет равен SomeType, подобно параметрам по умолчанию в обычном javascript

    function a<T extends SomeType = DefaultType>(arg: T): void {
      // ...
    }
    сливая всё воедино, мы получаем, что обобщённый тип T должен быть расширением SomeType и по умолчанию равен DefaultType (который тоже должен являться расширением SomeType)
    Ответ написан
    Комментировать
  • Стоит ли идти в NoCode разработку?

    saboteur_kiev
    @saboteur_kiev Куратор тега Карьера в IT
    software engineer
    NoCode это инструменты для тех, кто не умеет кодить, но готов потратить немного времени чтобы сделать какую-то штуку сам для себя.
    Специалисты по NoCode не нужны вообще.
    Если кто-то сделал свой "бизнес" и решил сделать себе сайт-визитку, то благодаря NoCode, не особо криворуким рукам и невысоким требованиям к конечному результату, он сможет сам ее себе сделать в одном из тысяч конструкторов.
    Но такому бизнесмену ты вообще не нужен.

    Поэтому твой вопрос глуп сам по сути. NoCode - это возможность сделать что-то простенькое для себя не привлекая разработчиков вообще и экономя на этом деньги. Зарабатывают в NoCode только создатели подобных конструкторов.
    Ответ написан
    Комментировать