• Как создать Сайт на 3-х языках?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Я не знаю, на чём вы пишете, но ответ на ваш вопрос это - локализация. Просто добавьте на свой сайт локализацию. Это отдельная тема при разработке сайтов, обычно реализуется через Key-Value Pair в словарях с переводами. Далее просто найдите как это реализовать на вашем языке программирования (Фреймворке)
    Ответ написан
    Комментировать
  • Как задать img источник из svg inline?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Вы можете вывести изображение в формате svg прямо а html разметку и работать с ним± как с img. Попробуйте открыть svg в любом редакторе текста/кода и перекопировать его содержимое в свой html. Так же рекоменду почитать про svg хотя бы в этой статье
    Ответ написан
  • Как найти работу после курсов по фронтенду?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Как я уже писал в ответе на этот вопрос, с работой в IT сейчас ооочень туго. Перечислю первичные проблемы, которые к этому привели:
    Быстрый рост количество программистов (И других профессий в IT)
    • Большое количество начинающих ITшников
    • Почти еженедельные прогрессы в технологиях
    • Нереально быстро развивающиеся нейросети
    • Мировой кризис вызванный войной


    Обо всём по порядку

    дело во мне лично, или в моем уровне.

    Просто ДА. Тут играет роль несколько факторов. У вас начинающий стек, который программист с кое-каким опытом осваивает за неделю. Стоит ли это того, что бы нанять программиста-новичка (Верстальщика-новчика) за тех самых 300 долларов (Хотя бы), или просто доплатить их человеку, который уже работает на фирме/компании? Тут ответ очевиден.

    Из этого вытекает два момента. Первое - нереальный рост программистов в сфере IT. Все, кто не связан с IT думаю, что это легко. Если у вас не получилось в другой области, у вас есть два варианта: Идти в IT или открыть свой бизнес. Это логика 90% людей стран СНГ. Если взять для примера студента, который реально знает и хочет чего-то достичь и старается, просто по резюме его выбрать среди 500 откликнувшихся нереально.

    Из этого выходит то, что постоянно повышается минимальная планка для получения работы. Если так смотреть, если вы хотите получить работу после курсов, вам нужно идти на курсы и уже что-то знать, а лучше - много знать. Да, вы правильно думаете, для того, что бы учиться, нужно уже много знать.

    Ещё несколько моментов, почему нет фитбека? Тут опять же есть несколько вариантов. По первых, до этого все (Более 90%) заказы были фактически на фриланс/аутсорсинг, то т.к. сейчас много западных компаний отказывается от работы с программистами со стран СНГ (На это есть ряд причин), идёт ожесточенная борьба за заказы между компаниями. Т.к. нет инвестиций из-за границы (Желательно в валюте) зарплаты начинают падать, хотя и не во всех. Те что остались, их достаточно мало по сравнению с тем уровнем, что был ранее.

    Почему большие компании не желают нанимать программистов-новичков? Во-первых, сейчас очень стремительно развиваются нейросети и владельцам компании на много проце заплатить, условно, 100 долларов за нейронку и дасть её в руки опытному программисту, чем ради этого нанимать 10 разработчиков. То, что вы сейчас научились верстать, нейросети делают в 10 раз лучше и в 1 000 000 раз быстрее, на самых новых front-end фреймворках.

    Т.к. рабочих мест нету, .вы просто никому не нужны, потому что html/css/js это стек, которым владеет 90% программистов в IT. Ваша задача составить конкуренцию, а не выучить что-то что относится к IT. Посмотрите вакансии, посмотрите сколько желающих на это рабочее место. Вы сможете сказать, что вы лучше 95% из них? А нужно, что бы так и было.

    В дополнение к этому, повторюсь, рекомендую прочитать этот ответ
    Ответ написан
    3 комментария
  • Как из файла txt записать в Dictionary?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Не используйте File.ReadAllLines и подобные, это ошибка и вы не умеете правильно с ним работать, что бы его так использовать. Исправленный код:

    string fileTagsPath = $@"{AppDomain.CurrentDomain.BaseDirectory}tags\{имя файла}.txt";
    using (StreamReader reader = new StreamReader(fileTagsPath))
    {
        while (!reader.EndOfStream)
        {
            string line = reader.ReadLine();
            string[] lineParts = line.Split(", ");
            replacements.Add(lineParts[0], lineParts[1]);
        }
    }
    Ответ написан
    5 комментариев
  • Как понять что я выучил основы C#?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Вообще вы можете язык очень много лет учить. Что вы знаете о языке C#? Можете написать несколько классов, прокинуть соединение к БД, написать несколько linq запросов? А что на счёт делегатов, событий? Рефлексия учится долго. Потоки, и тут имеется ввиду не просто банальный async/await, а прям взаимодействие с памятью и системными потоками. Знаете? Нет? Учить будете? Само собой, что будете, а стоит ли оно того?

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

    А знаете где она используется? Для примера это Dependency Injection контейнер в asp.net.

    А где используются событие? Для примера это handler'ы в таких фреймворках как Windows Forms и WPF.

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

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Скорее всего, если смотреть на блоках, тут два блока "верхнего уровня". Первый блок (ZOOM 4, Стоматологическая установка) размещены в ряд, тут проблем нет. Второй блок (E&Q MASTER, Микроскоп, 3D томограф, Пьезотом) может разделяться на две колонки. Соответственно, там придётся делать "замеры" не по ширине, а по высоте
    Ответ написан
  • Как решить проблему подключения БД к WPF проекту?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Да, может, т.к. MacOS не поддерживает работу с MSSQL Server в принципе. Для того, что бы получить доступ через виртуалку, нужно изрядно поизвращаться, так что используйте PostgreSql, либо Sqlite, который уже идёт "из коробки" на маках.

    Тут вопрос второй, как вы хотите запустить БД на виртуалке и достучаться к ней из вашего MacOS? Оно не так просто всё делается, что вы просто запустили и оно всё обнаружило. Виртуальная машина это вообще, считайте, отдельный ПК где-то там далеко от вас. Что бы с ним работать, нужно вообще по сети раскидывать соединение (Я так когда-то делал, не знаю, может кто-то скажет, что есть другие варианты) и стучаться по портам как на удалённый БД сервер. Понятно, что оно у вас не видит
    Ответ написан
  • Как изменить объект с вложенными свойствами?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Прочитал комментарии, могу предложить такой вариант:

    function increaseValues(obj) {
        // Увеличиваем значение value и присваиваем ему activeValue + 1
        if (obj.hasOwnProperty('value')) {
            obj.value = obj.user.activeValue + 1;
        }
        // Рекурсивно вызываем функцию для всех вложенных объектов
        for (let key in obj) {
            if (typeof obj[key] === 'object') {
                increaseValues(obj[key]);
            }
        }
    }
    
    const obj = {
        user: {
            activeValue: 2,
            accountList: {
                112211: {
                    value: 1,
                },
                112212: {
                    value: 2,
                },
            },
        },
    };
    
    increaseValues(obj);
    console.log(obj);
    Ответ написан
    2 комментария
  • Как создать многопоточную программу обращающиеся к API?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    обращаться многопоточно к API


    Многопоточно? Как, блин, потоки с IP связанны? Ну закиньте что-то типа такого:

    while(true)
    {
        requestTo('https://domail.com') // Async operation without await
    }


    UPD:

    Если стоит ограничение, тогда лучше так:

    while(true)
    {
    speep(100); // API waiting
    await requestTo('https://domail.com');
    }
    Ответ написан
    2 комментария
  • Как подключить proto файлы к проекту?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Клик сюда
    660ebe1a9e832661047201.jpeg

    Далее сюда
    660ebe371e0df243799837.png

    Подключаете .proto файл. После этого делает Rebuild вашего solution'а. Потом даблклик по проекту, в этом .csproj файле ищите секцию ItemGroup в которой будут ваши Protobuf. К ним додаёте аттрибут ProtoRoot, который (Для удобной работы) должен быть таким же как и пусть в аттрибуте Include без указания названия файла .proto

    UPD:
    Так же стоит отметить, чтобы импортировать в .proto ваш другой .proto, они должны быть хотя бы на одном уровне. Другими словами, вы можете импортировать только файлы, который находятся по архитектуре на том же уровне или ниже, потому что в import запрещено использования символа точки и запятой. Это значит, что вы не сможете выйти на уровень выше
    Ответ написан
    7 комментариев
  • Создается dll вместо exe?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    dll это библиотека. Значит вам нужен проект не библиотека, а, допустим, консольное приложение
    Ответ написан
    Комментировать
  • Selenium не может нажать на radio button из- за befor, что делать?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    В Selenium должна быть функция ожидания появления элемента. Вот отличная статья на Хабре по Selenium + Python для ожидания появления элемента. Так же можете использовать XPath, что бы более эффективно находить нужные элементы. Вот отличная статья на Хабре и по этому поводу
    Ответ написан
    Комментировать
  • Какую должность я занимаю?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    IT-Разнорабочий, оплата почасовая высчитывается по формуле:
    Количество отработанных часов * стоимость часа работы * коэффициент тяжести работы


    Стоимость часа работы высчитывается по формуле:
    (Количество лет опыта работы с текущей задачей + 0.2) * стандартная оплата за час работы


    Все коэффициенты можете найти в таблице ниже...
    Ответ написан
    4 комментария
  • В какую сторону учиться, QA, front end или back end для реалистичного входа?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Ок, обо всём по порядку

    IT в самом худшем положении чем когда-либо

    Да, есть такое. В первую очередь это вызвано из-за быстрорастущей сферы ИИ. Я думаю вы в курсе, что уже сейчас есть нейронки, которые могут по наброску написать страницу сайта на React, что в 1 000 раз быстрее, чем сделал это джун, и в столько же раз дешевле. Зачем тогда держать джунов? Это и есть одна из причин, по которой требования растут.

    Вторая причина, это конечно же мировой кризис, войны, пандемия так же принесла свой вклад в это.

    И третья причина, это огромный приток людей в сферу ИТ. У нас очень любят шутить: "Если ты попробовал всё и у тебя ничего не получилось в жизни, иди в IT, сюда идут все кто ничего не смог добиться". Вообще это достаточно странно, потому что программисты должны быть умными и знать очень много, тут люди могут всю жизнь учиться. Почему так случилось? Потому что пришёл тот же PHP, Python и прочее, где низки порог вхождения, и тут уже всё стаёт на свои места. Даже школьники пишут всякую дичь на PHP и очень этим гордятся.

    Со стороны работодателя, как понять, что ты принимаешь на роботу человека с опытом и мозгами в голове, а не школьника? Поднимать требования!

    Почему поднимаются ЕЩЁ требования? Потому что если очень много людей на рынке, ты можешь выставлять более высокие требования. Это природны отбор и тут нет ничего удивительного. Скоро это всё будет на уровне вундеркиндов (с вундервафлями). За год выпускается группа в универе где есть обученные студенты программирования. В такой группе может быть человек 30, на потоке 120 и больше. Таких университетов 100500. Как понять кто лучше из них, кто знает и хочет работать, а кто пошёл сюда чисто, потому что он тупой и больше никуда его не взяли?

    конкуренция адская, front-end, UX/UI дизайнеров и тестировщиков/QA -- как собак нерезаных и все профнепригодны

    Ещё одна причина по которой это всё происходит. Почему вообще IT стало очень популярное? Потому что большинство заказов на проекты были западные, соответственно, з/п в долларах это очень сладкая и желательная вещь для всех. Но теперь рынок в странах бывшего СССР очень сильно просел из-за таких вещей.

    А теперь подумайте, выгнали целый отдел программистов, мидлы, синьйоры и т.д. и сидят они без работы. Месяц, два, пол года. Мидл, который по факту стоит около 4000 долларов, за пол года без работы будет пробовать подавать заявку на вакансии джун/джун-стронг с зп 2000-3000 долларов. Почему? Потому что у него нет работы

    А как со стороны работодателей? Взять перспективного джуна по цене 1000 долларов на вакансию 2000 долларов, либо взять мидла, который стоит 4000 долларов, по платить ему 2000-3000? Конечно, тут все очевидно.

    А теперь все эти факты в совокупности дают очень большой регресс для рынка. Хочешь нормально зарабатывать? Ты должен составить конкуренцию и победить в этом среди этих 300 человек. А среди них может быть кто угодно. И при этом всё, вероятность пройти хотя бы ДО СОБЕСЕДОВАНИЯ крайне мала. Скорее всего ваш непрочитанный отзыв завернут после 3х недель ожидания и всё.

    КУДА ИДТИ И КЕМ БЫТЬ?
    Вообще в вашей ситуации, тут больше вопрос "Как?", а не "Кем?". Если вы посмотрите на статистику, то примерно все developer стеки получают одинаково на уровне senoir.

    Так же не стоит думать, что перейти из QA и Dev'ы можно вот просто так. Сейчас разработчики сами отлично умеют всё тестировать, так что тут сложно сказать что-то... Вообще QA стек используется одни инструменты, deve стек использует другие инструменты для работы, по этому тут так же не получится прыгать туда-сюда. Даже если вы будете QA и захотите перейти в dev'ы и программирования не убежишь

    А вообще я бы посоветовал заводить общение с программистами и учить, учить и ещё раз учить. Потому что тут играет ещё одно очень важное правило, что вы никому даже бесплатно не нужны, если вы приносите прибыть. Что бы приносить прибыть, не получится прийти и сказать: "Давайте я тут у вас потусуюсь, что-то учить буду, 3 строки напишу, а вы мне стакан риса". Да, так не прокатит, как бы это печально не звучало.

    Года 2 назад даже с небольшими, но уверенными знаниями программирования вас бы с руками и ногами забрали, если бы вы сказали, что вы там алгоритмы знаете, или на C++ умеет писать программы. Та вам все дороги открыты были бы
    Ответ написан
    2 комментария
  • Как правильно настроить валидацию пароля в Blazor FluentValidation?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Вы используете
    fv.RegisterValidatorsFromAssemblyContaining<LoginModelValidation>())


    Это автоматическая регистрация сервисов валидаци, но она не работает на .net 8 (И, вроде бы на .net 7, но жто не точно). По этому, если вы используете указанную версию .net, вас все валидаторы нужно регистрировать вручную
    Ответ написан
  • Как создать QR-код по строке и направить его пользователю на скачивание?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Для генерации можете использовать этот QR Code Generator (Я его не пробовал, по этому не знаю что там к чему).
    Для UI по QR кодам можете использовать QRCode от Ant Design
    Ответ написан
    Комментировать
  • Как получить текст ответа ASP Net Core API?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Основным методом общения между клиентом и сервером являются Status Code. Зачем вам передавать точное описание, что там оно не нашло, если вы можете просто передавать 404 и клиент пусть сам генерирует себе ошибку.

    Вообще забудьте про этот бред return StatusCode. Есть нормальные методы StatusResult к которым относятся Ok(), BadRequest() и тот же NotFound(). В эти методы можете передавать какие-то мета-данные если вам нужно. Либо можете использовать Response.Headers. Но если вам прям очень-очень нужно впихнуть туда вот это вообще об ошибке, так что бы ваш сервер был на все руки мастер, можете сделать что-то типа такого:

    return NotFound(new { message = "Omg, Not Found!!!" });


    UPD:
    Как на клиенте через JS вытянуть ошибку? Я бы использовал просто ajax:

    $.ajax({
        url: '...',
        method: 'get',
        success: (response): {
            let data = JSON.parse(response.responseText);
            console.log(data.message); //Omg, Not Found!!!
        }
    });
    Ответ написан
    3 комментария
  • Почему не работает поиск по классу?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Обратите внимание, что есть методы который .getElemtByX(), а есть .getElemtsByX(). Логично предположить, что .getElements() будет возвращать вам массив элементов, по этому эта строка у вас и не работает:

    document.getElementsByClassName('child2').textContent = 'Измененная строка 2'; // не работает!
    Ответ написан
    5 комментариев
  • Как сделать редирект на refresh-token когда получаю AuthenticationFailed на asp.net core web api?

    NikFaraday
    @NikFaraday Автор вопроса
    Student full-stack Developer
    Решил. Как это всё делается? Внутрь onAuthenticationFailed вставляем этот код:
    if (context.Exception?.GetType() == typeof(SecurityTokenExpiredException))
    {
        IJwtService jwtService = context.HttpContext.RequestServices.GetService<IJwtService>();
    
        if (context.Request.Cookies.TryGetValue("refresh-token", out string refreshToken))
        {
            Result<ClaimsPrincipal> principalResult = jwtService.ValidateAndDecodeToken(refreshToken);
            if (!principalResult.IsSuccess || principalResult.Value == null)
            {
                return Task.CompletedTask;
            }
    
            Result<string> renewAccessTokenResult = jwtService.Encode(principalResult.Value);
            if (!renewAccessTokenResult.IsSuccess && renewAccessTokenResult.ValidationErrors.Any())
            {
                return Task.CompletedTask;
            }
    
            context.Response.Cookies.Append("access-token", renewAccessTokenResult.Value);
            context.Response.StatusCode = 200;
            context.HttpContext.User = principalResult.Value;
            context.Principal = principalResult.Value;
            context.Success();
        }
    }
    return Task.CompletedTask;


    Т.е.. вызывает сервис, берём refresh token и из него извлекаем ClaimPrincipal, далее на его основе делаем access token из того же сервиса и обрабатываем запрос, что бы он возвращал нужный статус. Как говорил Andrei SunnyPh , это допустимая практика (Спасибо)
    Ответ написан
    Комментировать
  • Не работает js на jquery-3.7.0?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    В вашем коде вы используете неправильные имена обработчиков для успеха и ошибки ajax-запроса. Вместо done и fail используйте success и error, соответственно.

    UPD:
    Вот стандартный пример ajax-запроса:
    $.ajax({
        url: 'https://domain.com/router/',
        method: 'post', // NOT A TYPE
        data: JSON.stringify({ ... }),
        dataType: 'application/json; charset=utf-8',
        success: (response) => { ... },
        error: (response) => { ... }
    })


    .done и .fail срабатываю, когда у вас получилось либо не получилось сделать запрос. success и error срабатывают в зависимости от ответа сервера.
    Ответ написан
    2 комментария