• Какие обязанности в команде у джуна .Net?

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


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

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

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

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

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

    Ну а в целом - да, есть проекты, где больше разработки с нуля, есть проекты, где много миграций и рефакторинга, есть где больше просто поддержки. И специалисты везде нужны.
    Ответ написан
    3 комментария
  • Как передать массив в функцию С++ ( пишет no matching function to call)?

    Adamos
    @Adamos
    Используя Кресты, стоит использовать и их удобства.
    std::vector< std::vector< int > > a(rowCount, std::vector< int >(colCount, 0));
    void average (std::vector< std::vector< int > > &a){

    Так вы не нарветесь на промахи в индексах массива, например. Если умеючи.

    А в вашем коде int[][], конечно, не может самопроизвольно превратиться в int*
    Ответ написан
    2 комментария
  • Что означает "!!~"?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Сокращалка, удобная для indexOf(), который возвращает -1 если не найдено, или индекс от 0 и больше.

    Для логики приложения часто бывает нужно узнать только, найдено или нет: т.е. -1 или иное значение. Можно просто сравнивать if (a.indexOf(b) > -1) { /* найдено! */ } но иногда хочется короче.

    Битовый оператор НЕ ~ хорош тем, что выделяет -1: только -1 с этим оператором даст 0. Прочие числа дадут какое-то ненулевое значение.

    ~(-1) === 0

    Остаётся привести значение из численного в булево. Для этого два воскл. знака — два логических НЕ.
    • для варианта «найдено» из числа от 0 и больше получилось тоже ненулевое число, и !! даст true
    • для варианта «не найдено» из -1 получится уникальный 0, и !!0 вернёт false
    Ответ написан
    4 комментария
  • Почему программа постоянно выводит 0? Как исправить?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Вы делите два int-а, там где формулу считаете. В языке C++ в этом случае происходит деление нацело. Поскольку числитель меньше знаменателя - всегда получается 0. Или static_cast-ом приводите к double, или тип где-то на double поменяйте (функции или переменной). Или, на худой конец, прибавляйте 0.0 к числителю или знаменателю.
    Ответ написан
    1 комментарий
  • Стоит ли учить Boost в 2021 году?

    @res2001
    Developer, ex-admin
    Вполне востребованная библиотека.
    Но учить не стоит. Стоит знать, какие возможности она предоставляет и как ее исопльзовать в своем проекте. Сделать пример с какими-нибудь достаточно сложными компонентами буста, например asio.
    Ответ написан
    Комментировать
  • Как написать свой скриптовый язык?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Статей для этой задачи будет мало. Тут нужен как минимум SICP, а ещё лучше книга дракона.
    Ответ написан
    9 комментариев
  • Как процессы используют мьютекс?

    gbg
    @gbg Куратор тега Linux
    Любые ответы на любые вопросы
    Для этого надо научиться делать две вещи:
    1) Делать осмысленные заголовки своим вопросом, чтобы не было как здесь - заголовок нерелевантен телу вопроса.
    2) Помещать созданные мьютексы в память, расшаренную между процессами - тогда процессы смогут по ним синхронизироваться.
    Ответ написан
    Комментировать
  • Дырка ли в межбанковской системе быстрых платежей (СБП)?

    SayMAN83
    @SayMAN83
    Работаю в IT
    Я участвовал во внедрении СБП для банка ВТБ. Скажу кратко, все переводы СБП проходят через систему НСПК. И она по номеру телефона ищет клиента в указанном вами банке получателя. Вероятно косяк именно там.
    Ответ написан
    3 комментария
  • Почему создание пустого потока крашит процесс?

    gbg
    @gbg Куратор тега C++
    Любые ответы на любые вопросы
    Ну потому что как-бы вы говорите компьютеру пойди туда, не знаю куда, делай то, не знаю что.

    Он офигивает и падает.
    Ответ написан
    3 комментария
  • Возможно ли сгенерировать уникальный номер компьютера windows?

    GavriKos
    @GavriKos
    Вот вам ряд вопросов.
    Поменял жесткий диск - это тот же компьютер?
    Переставил ось - это тот же компьютер?
    Продал его другому юзеру - тот же компьютер?
    Поменял все но юзер тот же - что делать?

    Что есть компьютер для вашей программы?

    А так то можно опираться на айдишники жесткого, материнки, проца...Есть такая штука как fingerprint
    Ответ написан
    Комментировать
  • C# - плавающий глюк - насколько правильно исправил?

    Casper-SC
    @Casper-SC
    Программист (.NET)
    Подпишись на событие FormClosing (если ещё не подписан) и в его обработчике отпишись от обработчиков событий TitleChanged, AddressChanged, LoadingStateChanged:
    public partial class BrowserMain : Form
    {
        public BrowserMain()
        {
            InitializeComponent();
            
            WebBrowser = new ChromiumWebBrowser(
                string.IsNullOrWhiteSpace(address) ? "about:blank" : address)
            {
                // ...
            };
    
            Controls.Add(WebBrowser);
    
            WebBrowser.TitleChanged += WebBrowser_TitleChanged;
            WebBrowser.AddressChanged += WebBrowser_AddressChanged;
            WebBrowser.LoadingStateChanged += webBrowser_DocumentCompleted;
        }
    
        private void BrowserMain_FormClosing(object sender, FormClosingEventArgs e)
        {
           // После вызова этих строк методы WebBrowser_TitleChanged, WebBrowser_AddressChanged
           // и webBrowser_DocumentCompleted не будут выполняться. 
           // Это и не нужно, так как окно закрывается.
            WebBrowser.TitleChanged -= WebBrowser_TitleChanged;
            WebBrowser.AddressChanged -= WebBrowser_AddressChanged;
            WebBrowser.LoadingStateChanged -= webBrowser_DocumentCompleted;
        }
    }
    Ответ написан
    3 комментария
  • Почему у переменной тип unknown?

    bingo347
    @bingo347 Куратор тега TypeScript
    Crazy on performance...
    Во-первых, infer в самом предикате участвует как any
    Во-вторых, функция с меньшим количеством аргументов является подтипом для функции с большим количеством аргументов (это позволяет, например, отдать в колбэк функцию, которая не использует всех переданных ей аргументов)

    То есть тип () => void является потомком типа (param: any) => void, а значит Ваш предикат в типе A становится истинным и уходит в ветку, где Вы возвращаете R из infer, который выводится к вершине иерархии - типу unknown

    То что Вы задумали, можно сделать так:
    type A<T> = T extends (...param: infer P) => void
      ? P extends [infer R, ...unknown[]]
        ? R
        : string
      : string;
    Ответ написан
    1 комментарий
  • Почему вывод кириллицы cout в C++ производит символы неясного происхождения?

    wisgest
    @wisgest
    Не ИТ-специалист
    SetConsoleOutputCP(1251);
    SetConsoleCP(1251);

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

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Вы бы хоть погуглили что за файл вы там пытаетесь глянуть:

    .pyi файлы - это стабы (stubs), их назначение и формат описаны в PEP 484. Эти файлы вообще никак не используются интерпретатором, их назначение - предоставлять информацию о типизации кода. К примеру, у тебя есть сторонний модуль без типизации, который не твой, редактировать его ты не можешь, а прописать типы хотелось бы:

    # fizz.py
    
    def greet(who):
        return f'Hello {who}'


    Выход находится с помощью стаба: создаешь файл fizz.pyi, который содержит типизированную сигнатуру greet без имплементации:

    # fizz.pyi
    
    def greet(who: str) -> str:
        ...

    В этих файлах имплементация кода НЕ ПРЕДУСМОТРЕНА.
    Ответ написан
    Комментировать
  • Зачем Visual Studio нужен свой runtime?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Вы C++ не путаете ли с C++/CLI?

    C++/CLI сделано для того, чтобы было легче с дотнетом взаимодействовать
    Ответ написан
    Комментировать
  • Как правильно выкладывать на сайте exe-файлы?

    Zoominger
    @Zoominger
    System Integrator
    Упаковать в zip.
    Упаковать в msi.
    Ответ написан
    Комментировать
  • Нужно ли 40-летнему джуну уметь максимально много?

    php666
    @php666
    PHP-макака
    Короче, я боюсь, что, выучив слишком много всего, стану отпугивать работодателей своей продвинутостью.
    лол
    40 лет, а мыслит как 18-и летний юноша-максималист
    выучит он "слишком много всего"
    ты выучи сначала
    потом приходи сюда
    когда ты "слишком много всего" выучишь, тебе минимум будет 45 лет

    Но вот думаю: А не слишком ли "крутым" я стану?
    на первом же собеседовании тебя сотрет в порошок 25-30 летний чувак с опытом и покажет твое истинное место.
    это не оскорбления.
    это твое будущее.
    Ответ написан
    8 комментариев
  • Почему невозможно создать объект в стеке?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    ссылка на неразрешенный внешний символ "public: __thiscall MobilePhone::~MobilePhone(void)"
    почему просто из-за попытки создать экземпляр в стеке вообще должны вылазить какие-либо ошибки?

    Ты текст ошибки прочитал? Как ты думаешь, что происходит, когда заканчивается жизненный цикл объекта созданного на стеке (т.е. при выходе из main() в твоём случае)?
    Ответ написан
    Комментировать
  • Автоматическое обновление id при удалении эл. с бд. Как написать логику?

    rozhnev
    @rozhnev
    Fullstack programmer, DBA, медленно, дорого
    То о чем вы просите абсолютно не верно. Это тоже самое что если бы после смерти одного человека менять номера паспортов у всех оставшихся в живых.
    Ответ написан
    1 комментарий
  • Как посчитать количество определенных символов в строке на Rust?

    ozkriff
    @ozkriff
    Rust э̶н̶т̶у̶з̶и̶а̶с̶т сектант, хобби игродел
    В постановке задачи есть важный нюанс: что считать символом?

    Если считать обычный встроенный char, то просто получаем .chars() итератор из строки, фильтруем и считаем:
    "12121".chars().filter(|&c| c == '2').count()

    Но надо понимать, что на строках с графемными кластерами (а именно их обычные пользователи обычно считают символами) такой код будет криво работать. Если это нам важно, то идем за lib.rs/unicode_segmentation и пользуемся его graphemes методом:
    "éaébé".graphemes(true).filter(|&g| g == "é").count()


    Песочница.
    Ответ написан
    1 комментарий