Задать вопрос
  • Откуда полосы при рисовании WPF SKIA?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Проблема, вероятно, связана с точностью представления чисел с плавающей запятой. Хотя математически 3 + 2 должно быть равно 5, при использовании чисел с плавающей запятой могут возникать небольшие ошибки округления из-за представления десятичных чисел в двоичной системе.

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

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Это происходит из-за того, что переменная last содержит ссылку на последний элемент массива result. В JavaScript массивы - это объекты, а при обращении к элементам массива вы получаете доступ к самим объектам, а не их копиям.

    Когда вы выполняете let last = result[result.length - 1], last теперь указывает на тот же самый объект, что и последний элемент result.

    Таким образом, изменение last[1] фактически изменяет значение в result, потому что last и result[result.length - 1] ссылаются на один и тот же объект в памяти.

    Это происходит здесь:last[1] = Math.max(last[1], interval[1]), где обновляется второй элемент последнего интервала в массиве result.
    Ответ написан
    2 комментария
  • Как исправить ошибку ложного подключения на стороне TcpClient?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Попробуйте использовать более системный подход ограничения доступа через использования семафоров (SemaphoreSlim)

    Второй момент, это подключение. То, что соединения установлено говорит лишь о том, что соединение с сервером ЕСТЬ, но это не значит, что в клиента есть доступ к ресурсам сервера. Для этого вы можете создать свои правила. Вы можете сообщить клиенту, что он находится в очереди и перед ним находится n клиентов.
    Ответ написан
    Комментировать
  • Как лучше начать изучение c#?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Хотелось бы стать специалистом по backend, а не fullstack.

    Так не получится, либо очень мало вероятно.

    большинство вакансий по c# это идет fullstack разработка и активная работа с фронтом

    Если брать back-end, тогда да. Если брать desktop, то там ситуация другая.

    Если хотите работать на веб, тогда вот вам с чего начать (Чисто ключевые моменты для изучения asp.net core MVC):

    Client:
    1. Html/css
    1.1 margin, padding
    1.2 !important
    1.3 class
    1.4 :hover, :active, :focus-visible
    1.5 media requests

    2. Bootstrap 5
    2.1 form-control
    2.2 alert, alert-danger
    2.3 d-none
    2.4 row, col-sm, col-md, col-lg

    3. Java Script
    3.1 let, dynamic object
    3.2 document
    3.3 getElementById
    3.4 getElementBySelector
    3.5 innerHtml
    3.6 undefined
    3.7 addEventListener()
    3.8 JSON
    3.9 JSON.stringify()
    3.10 JSON.parse()

    4 jQuery
    4.1 jQuery selectors
    4.2 .on()
    4.3 .on('click', ... )
    4.4 .change()

    5 ajax
    5.1 ajax HttpGet request
    5.2 ajax HttpPost request
    5.3 ajax send FormData

    Simple C#:
    6 OOP
    6.1 Data types
    6.2 Condition operators (if-else, switch). bool type
    6.3 Loops (while, do-while, for, foreach)
    6.4 array
    6.5 List<>

    Classes in C#
    7.1 Classes
    7.2 Fields
    7.3 Properties
    7.4 Constructors
    7.5 Methods
    7.6 Inheritance
    7.7 Abstract classes
    7.8 Abstract and virtual methods
    7.9 Interfaces
    7.10 Generics
    7.11 Generic Methods
    7.12 Generic Interfaces
    7.13 Principals of OOP

    Server (asp.net):
    8.1 MVC architecture in asp.net
    8.2 Controllers and Actions
    8.3 Routing
    8.4 [HttpGet]. [HttpPost]
    8.5 [IgnoreAntyforgeryToken]
    8.6 IActionResult
    8.7 Razor Pages
    8.8 Build correct model in asp.net mvc
    8.9 View
    8.10 Dependency Injections
    8.11 asp.net mvc configuration
    8.12 AddSingleton, AddScoped, AddTransient

    Entity Framework
    9.1 DbContext
    9.2 DbSet<>
    9.3 Connection String Parameters
    9.4 IEntityTypeConfigraiton<>
    9.5 EF Core one-to-one configuration
    9.6 EF Core one-to-many configuration
    9.7 EF Core many-to-many configuratio
    9.8 .Include()
    9.9 Migrations, Database.Migrate()
    9.10 asp.net core .AddDbContext()
    9.11 Generic Repository Antipattern
    9.12 How to build custom services and include them to Dependency Injection

    10. Fluent Validation in asp.net mvc

    11. Authentication/Authorization
    11.1 Different between Authentication and Authorization
    11.2 Cookie
    11.3 JWT (JSON web token)
    11.4 Register authentication (app.UseAuthentication, app.UseAuthorization)
    11.5 Claims (Claim, ClaimPlincipal, ClaimIdentity)
    11.6 Authentication By Cookie
    11.7 services.AddAuthentication()
    Ответ написан
    Комментировать
  • Как отображать число с пробелом?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Так вот, все нормально работает до тех пор пока цена будет без пробела.


    Вы вкурсе как работают числа? Если вы ставите пробел, тогда ваше число уже не является числом, а является строкой

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

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Попробуйте использовать JavaScript:

    <button onclick="redirectToProfile()">Перейти на страницу profile.php</button>
    
    <script>
            function redirectToProfile() {
                window.open('profile.php#log_activity', '_blank');
            }
        </script>
    Ответ написан
  • Как создать объектную модель содержимого файла?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Ну псевдокод для это выглядит примерно так (С использованием библиотек .net):

    содержимоеФайла = файл.ЧитатьВсеСтроки()
    новоеСодержимое = пустаяСтрока
    
    цикл (строка по содержимоеФайла)
       если (НЕ строк.НачинаетсяС(*знакКомментария*) тогда
          новоеСодержимое += (строка + *знакПереносаСтроки*)
    конецЦикла
    
    объектКласса = джсонКонвертер.ДесериализироватьОбъект(новоеСодержимое)
    Ответ написан
    Комментировать
  • Как после редактирования в модальном окне сохранить данные в БД?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Попробуйте заменить строку
    $(document).on('click','.read-more',function(e){

    на
    $('#your-item-id').on('click', () => {
       // ....
    })


    А если смотреть в общем, то у вас вообще не верная структура запроса ajax скрипта. Читайте тут
    Ответ написан
    Комментировать
  • C#, сессии, JWT token?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Изучите более подробно об JWT токенах и IndentityServer'е, тогда у вас не будет желания хранить их в базе) Но сможете использовать это всё для аутентификации и авторизации. Так же советую посмотреть об OAuth/OAuth2.0 и OpenId Connect

    Если что-то более простое, тогда делайте просто на куках как под mvc:
    Use cookie authentication without ASP.NET Core Identity
    ASP.NET Core - Write a Simple Cookie Authentication
    Ответ написан
    Комментировать
  • Динамическое обращение к модели таблицы в EntityFrameworkCore возможно?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Для этого вы можете использовать GenericRepository pattern, а так же использовать метод .Set(), доступен от объекта DbContext'а, который будет возвращаться вам объект DbSet указанного типа
    Ответ написан
    4 комментария
  • Можно ли писать бэк на C#, а фронт на React и есть ли в этом смысл?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Вообще это довольно странный вопрос. Если вы знаете что такое C#, вы уже должны понимать, что такое стек технологий. Тем более, если понимаете связь между back-end и fron-end приложениями.

    Смысл есть! Почему? Первое на что стоит обратить внимание, это на рынок .NET. Там большая половина веб-апп делается на этой связке

    Или же смысла нету если вы хотите вложиться в некие дедлайны. Потому что, судя по ваших знаниях, вам это надоест уже на начале 2го месяца изучения asp.net, а это ещё к React даже не приступите.

    Пока есть смысл учить язык и фреймворки, а потом уже сверху на это всё ложить какой-то стек технологий

    Проблема заключается в том, что из-за брака знаний, вы не сможете нормально реализовать это. А вашу идею может украсть кто-то более продвинутый в этом и напишет нормально. Без багов/лагой и прочих недоработок, которых вы 100% допустите в ходе разработки. Или вашим приложением никто не будет пользоваться... В прочем, вариантов для краха этой идеи есть уйма

    Второе дело, это дело обучения. В целях обучения, это достаточно хорошая идея, но только вы должны понимать объём знаний, которые нужно изучить, или то, ЧТО вы хотите изучить. Хватит ли вам этого для написания приложения?
    Ответ написан
    3 комментария
  • Unity: ошибка "NullReferenceException" при взаимодействии с объектом. В чём может быть причина?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    public Rigidbody _rb;
        private FpcParam _fpc;
        public Transform _arm;
    
        private void Start()
        {
            _rb = GameObject.Find("Ball").GetComponent<Rigidbody>();
            _fpc = GameObject.Find("Player").GetComponent<FpcParam>();
        }
    
    public void Throw()
        {
            _rb.AddForce(Camera.main.transform.forward * 800);
            _rb.useGravity = true;
            _rb.isKinematic = false;
            _fpc.take = false;
        }


    Таки инициализация на 10 строке:
    public Transform _arm;


    Объявление переменной это когда вы в коде говорите, что есть такая переменная, что бы в будущем к ней обратиться и работать с ней.

    Инициализация переменно это когда вы даёте переменное первоначальное значение. Для ссылочных типов (Классы и т.д.) стандартное значение это null. Когда вы вызываете конструктор к классу либо передаёте ему ссылку (Через конструктор) такого же типа, ваша переменная уже считается инициализиваронной

    Ссылочные классы так называются, поскольку они не хранят в себе информацию о внутренним состоянии, а ссылаются на фрагмент памяти, где хранится эта информация. Стандартное значение null указывается, что ссылка существует, но она никуда не указывается (Аналогично, когда вы в поисковике переходите по ссылке на страницу, которой не существует).
    Ответ написан
    2 комментария
  • Как получить доступ к wwwroot из другого проекта в web api?

    NikFaraday
    @NikFaraday Автор вопроса
    Student full-stack Developer
    Конкретно в моём проекте оказало, что папки wwwroot вообще не существовало. Под капотом метод вообще не отрабатывал
    Directory.CreateDirector(...)

    Папку создал вручную в корне проекта, всё заработало.
    Ответ написан
    Комментировать
  • Почему InitializeComponent(); выдает System.NullReferenceException: "Object reference not set to an instance of an object."?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Попробуйте точку дебагата поставить на выполнении метода и зайти внутрь самого метода, что бы понять, какой из компонентов является null
    Ответ написан
    Комментировать
  • Как передать значение переменной из JS в PHP без перезагрузки страницы?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Так у вас блок success пустой
    success: (res) => {
        console.log(res);
      }

    Блок success отрабатывает когда у вас возвращается HttpStatusCode 200, но вы там ничего не делаете.

    Что нужно сделать? В соответствующем блоке success настраивать вывод/изменений элементов DOM структуры.

    Ответ написан
    2 комментария
  • Почему fetch отдаёт 401 при JWT авторизации на сервер asp.net core web api?

    NikFaraday
    @NikFaraday Автор вопроса
    Student full-stack Developer
    Если вкратце, что и почему работает:


    1. Настройка CORS. Для того, что бы настроить cors для React(Next)JS Application, нужно указывать адрес https и это важно, поскольку при запуске приложения React(Next)JS адрес начинается с http. Пример:
      // ...
      services.AddCors(options =>
      {
          options.AddPolicy("AllowTeachToolClient",
              builder =>
              {
                  builder.WithOrigins("http://localhost:3000", "https://localhost:3000");
                  builder.AllowAnyHeader();
                  builder.AllowAnyMethod();
              });
      });
      // ...



    2. При генерации Jwt токена, нужно использовать именно SymmetricSecurityKey. Это для тех, кто захочет аналогично как я попробовать использовать что-то типа RSA(2048)

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



    3. Самое главное это заголовки. Лично у меня проблема решилась при наличии следующих header'ов:
      • Get:
        'Accept': '*/*',
        'Host': 'http://localhost:3000',
        'Content-Type': 'application/json',
        'Authorization': 'Bearer {token}'



      • Post:
        'Accept': '*/*',
        'Host': "http://localhost:3000",
        'Content-Type': 'application/json;'



        Понятно, что наличие заголовка
      Authorization зависит от того, куда кидаете запрос. Обычно используется, для доступа к [Authorize] контроллерам/эндпоинтам



    4. Настройка Cors (Нюанс, для тех, кто с таким может столкнуться). Код для регистрации политики Cors:
      services.AddCors(options =>
      {
          options.AddPolicy("AllowTeachToolClient",
              builder =>
              {
                  builder.WithOrigins("http://localhost:3000");
                  builder.AllowAnyHeader();
                  builder.AllowAnyMethod();
              });
      });


      И самое главное, что ниже эту же политику нужно подключить перед тем, как вы будете использовать app.UseAuthentication(); и app.UseAuthorization();. Вырезка с самого вопроса:

      var app = builder.Build();
      
      app.UseCors("AllowTeachToolClient");
      
      app.UseHttpsRedirection();
      
      app.UseAuthentication();
      app.UseAuthorization();
      
      app.MapControllers();
      
      app.Run();



    Ответ написан
    Комментировать
  • Как мне перенаправить программу отправляющую http post запрос на другой адрес?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Что конкретно вы имеете в виду?

    У вас есть готовая программа (эхэшник), который взаимодействует с каким-то удалённым сервером? Тогда просто поставьте прокси и всё, весь трафик будет перенаправляться через прокси-сервер и всё.

    У вас есть проект, который общается с удалённым сервером?
    Просто поменяйте адрес запроса. Всё )

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

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Опираясь на некоторые детали в комментариях к вопросу, могу предположить, что вы могли бы отслеживать саму позицию элемента через JS относительно некоторых веще:
    • Экрана/Монитора
    • Родительский элемент
    • Документ


    Это можно сделать путём того же обсервера, который будет отслеживать изменения этих свойств. Это могут быть таки свойства как ClientHeight/Width и т.д.
    Ответ написан
    3 комментария
  • Как передать массив FormData через ajax?

    NikFaraday
    @NikFaraday Автор вопроса
    Student full-stack Developer
    Методом тыка, спустя три дня перебора комбинаций методов нашёл один, который работает. Конечно, он меня не удовлетворил в силу способа отправки данных, но это, по крайней мере, работает

    let packagesForm = new FormData();
    for (let i = 0; i < packages.length; i++) {
        packagesForm.append(`vm[${i}].Image`, packages[i].Image);
        packagesForm.append(`vm[${i}].MeasureUnit`, packages[i].MeasureUnit);
        packagesForm.append(`vm[${i}].VolumeUnit`, packages[i].VolumeUnit);
        packagesForm.append(`vm[${i}].Volume`, packages[i].Volume);
        packagesForm.append(`vm[${i}].Price`, packages[i].Price);
        packagesForm.append(`vm[${i}].ProductId`, Number(response.id));
    }
    Ответ написан
    Комментировать
  • Где можно узнать самый актуальный стек для веб разработки на c#?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Тут уже можно опираться на саму суть и предназначение языка и фреймворка, на котором вы хотели бы реализовать ваш проект. Первое, что вам нужно учесть (Вспомнить), это то, что у каждого языка есть своё конкретное предназначение. Аналогично и у фреймворка. Разберитесь с тем, для чего подходит тот или иной фреймворк и посмотрите, подходит ли он для ваших задач. Может ли этот фреймворк технически реализовать необходимый вам функционал?

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

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

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