Задать вопрос
  • Какую LMS выбрать Фрилансеру и Руководителю для обучения сотрудников в 2023?

    @systembro
    Ну замену Moodle сложновато будет найти. Есть, конечно, iSpring Learn LMS, но вы будто ищете что гибче, выбор невелик: Chamilo, Canvas lms, ILIAS...
    Ответ написан
    Комментировать
  • Почему не проходит Authorize?

    @OwDafuq
    Токены отправляются с клиента в заголовке в формате "Bearer eyJhbGc......"

    Неправильно передаете токен в заголовке, так генерирует Swagger:
    65003f7bbe115283639973.png
    Ответ написан
    2 комментария
  • Какой стек необходим для изучения GraphQL и Apollo?

    @holllop
    Ну смотри. Если ты собираешься изучить работу с GraphQL и Apollo, то нужны хотя бы базовые знания по Node.js, так как Apollo в значительной степени связан с экосистемой Node.js и использует его для создания серверов GraphQL.
    Теперь к основным темам которые желательно знать(список не полный тут только те, что я вспомнил):
    1. Express.js: Express является популярным фреймворком для Node.js, и его знание будет полезным при создании сервера GraphQL с помощью Apollo. Рекомендуется изучить основы Express.js, такие как маршрутизация, обработка запросов и ответов, и middleware.
    2. Работа с базами данных: Apollo и GraphQL часто используются для запросов и манипуляций данных в базах данных. Поэтому полезно знать основы работы с базами данных в Node.js, такие как использование ORM (например, Sequelize или Mongoose), выполнение запросов SQL или MongoDB и работу с моделями данных.
    3. Асинхронное программирование: В GraphQL и Apollo запросы часто выполняются асинхронно. Поэтому знание принципов асинхронного программирования в JavaScript, таких как использование промисов, асинхронных функций и async/await, будет полезным.
    4. REST API: Хорошее понимание понятий и принципов работы с REST API также может быть полезным при изучении GraphQL, так как GraphQL может быть использован как альтернатива REST API. Рекомендуется изучить основы RESTful API и понимание различий между REST и GraphQL.
    Это те что мне первые приходят на ум возможно дополню список
    Ответ написан
    3 комментария
  • Как в контроллеры привязывается CancellationToken?

    Если совсем боишься - можешь брать CancellationToken не из аргументов, а из контекста (HttpContext.RequestAborted)

    А подсовывает его тебе рантайм через процесс под названием model binding:
    https://learn.microsoft.com/en-us/aspnet/core/mvc/...
    Биндинг происходит чисто по совпадению типа и имя аргумента не влияет на него.
    Ответ написан
    5 комментариев
  • Как при сборки мусора и перемещении объекта, сохраняется корректность ссылок?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Управление памятью в .NET для профессионалов

    Как работает сборка мусора.
    В .NET используется 2 фазная сборка мусора: Mark & Sweep (Пометить и Убрать).

    Mark

    На этом этапе обходится весь граф объектов. И выявляются все недостижимые.

    Каким образом достижимость объектов определяется?

    Достижимые это:
    - Аллоцированные на стеке
    - В статических полях
    - Достижимые из достижимых (см. выше)

    Все объекты, которые не удалось достичь (в граф не попали) - являются недостижимыми.

    Но на стеке лежат числа. могут быть как числами, так и адресами, как и числами?

    JIT копилятор достаточно умный, чтобы сгенерить код, который будет знать, что за объект/ссылка лежит на стеке. Так и получаются знания об объектах.

    Sweep

    Тогда итог, что языки с сборщиком мусора, под в 2 раза медленнее должны быть.(помимо сборки)

    Вот тут интереснее. Есть несколько хаков как достигается большая производительность.
    1. Линеризованное пространство памяти.
    Адреса 0, 1 и 2 поколения расположены не абы где, а последовательно, друг за другом. Т.е. если нужно сократить пространство 0 поколения, то это означает простое передвигание указателя влево.

    2. Переход в след. поколение происходит не всегда
    Из 0 в 1 - переход быстрый, но из 1 в 2 - не всегда.
    На этом этапе тоже может не затрачиваться много времени.

    3. Ссылки из недостижимых объектов не обновляются - эти объекты и так нигде не участвуют
    Обновление ссылок, к сожалению, - это ручное изменение и копирование. Ничего не поделаешь.

    Теперь где-то, сборщик мусора, начинает переносить arr в другое место.

    Ты слишком большой массив выделил, он аллоцируется в LOH. Оттуда не вытащишь.

    Я много о чем не упомянул. Например, очередь финализации, таблица дескрипторов (Handle), сегментирование памяти и т.д. но ответы на основные вопросы дал
    Ответ написан
    2 комментария
  • Возможно ли авторизоваться если злоумышенник получит чужие куки?

    mayton2019
    @mayton2019
    Bigdata Engineer
    С точки зрения современного инфо-беза логин + пароль - уже не танцуют.
    Сейчас - основной упор на безопасность - это многофакторка. И время сессии
    желательно как можно меньше. Например 15 минут. В кабинетах банков так уже делают.

    Если злоумышленник у вас угнал куки то у него есть очень мало времени чтобы ими
    воспользоваться иначе надо будет доставать как-то ваш телефон или RSA-брелок.

    Кроме того сами методы многофакторки рандомно меняются. Банк для авторизации
    входа может позвонить голосом. Чтоб подтвредить. Может попросить ввести число
    с генератора в MSAuth/Okta/Duo. Или приложить палец к сканеру отпечатков.

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

    vabka
    @vabka Куратор тега Rust
    На Java пишется очень много разных вещей, в тч не требовательных к утилизации ресурсов и задержкам так что предположу, что многие вещи просто нецелесообразно переписывать.

    Кроме Java в финтехе вообще много разных языков используется. Даже такая экзотика как Haskell и F# бывает.

    Могу сказать, что сейчас работаю в большой корпорации и мы как раз пишем на Rust штуки, которые отвечают за работу с платёжными системами.

    Раньше примерно то же самое писалось на плюсах.

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

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    На SO уже есть ответ (ссылка) - он в нижнем примере.

    Подробнее:
    1. Файл отправляется в теле HTTP. Обычно закодирован base64.
    2. В заголовке "Content-Disposition" может быть название файла (самого заголовка может не быть)
    3. Когда браузер принимает файл, то создает свою внутреннюю ссылку на него. Тебе нужно создать свою ссылку (URL.createObjectURL). Потом создаешь тег с полученным URL и "кликаешь" на него (либо п...
    Ответ написан
    Комментировать
  • Почему сервер не разрешает [delete] метод (ошибка 405)?

    petermzg
    @petermzg
    Самый лучший программист
    [HttpDelete("{id}")]
    Ответ написан
    Комментировать
  • В каком репозиторией должна быть логика?

    @Wan-Derer
    Зобанели на Хабре, волки́ ;((
    Между слоями Repository и Controller у тебя д.б. слой Service.
    Repository абстрагирует базу данных, т.е. занимается преобразованием объект_языка  <--> запись_БД. Благодаря этому, все остальные классы оперируют привычными им объектами, не заботясь об из происхождении: база данных, очередь, аппарат Луна-25 :)
    Controller обслуживает HTTP-точки - принимает запросы и выдаёт готовые ответы.
    А Service как раз занимается "бизнес-логикой", получая запросы от контроллера, запрашивая данные у репозитория, преобразуя их в готовый ответ и отправляя его обратно контроллеру. Сервис может подключить себе несколько репозиториев если ему требуются данные из нескольких источников, таблиц и пр.
    Ответ написан
    2 комментария
  • Как работает Object?

    Это особый класс, вот он и знает то, чего простым смертным не положено.

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

    Вот тебе ещё немного для взрыва мозга:
    Object - ссылочный тип.
    Все структуры - значимые типы.
    Но при этом все структуры каким-то образом наследуют от Object, хотя в обычной ситуации структуры вообще ни от чего наследовать не могут.

    UPD: а во втором случае всё работает, тк все объектынаследуются от object => происходит вполне легальный апкаст (или боксинг в случае int)
    Ответ написан
    2 комментария
  • Что использовать для написания сервера для многопользовательской игры?

    Но насколько я понимаю, HTTP-связь между клиентом и сервером для многопользовательской игры совершенно некорректна.

    Зависит от того, что это за игра. Если это какой-то онлайн-шутер, то да, конечно это будет некорректно, но для какой-нибудь пошаговой стратегии - это будет вполне допустимо.

    Socket.io и SignalR сделаны поверх websocket, который является расширением для HTTP и построен поверх TCP.
    Lidgren network сделан поверх UDP и сейчас активно не поддерживается.

    Прежде чем определить, какой именно тебе протокол и подход будет применим тебе нужно ответить на следующие вопросы:
    1. Какие именно данные (сообщения) нужно передавать
    2. Сколько их будет генерировать один клиент
    3. Сколько клиентов должен держать сервер в рамках одной игровой сессии.
    4. Какие задержки допустимы для каждого из типов сообщений.
    5. Как себя должна вести игра при потере каких-то сообщений и как ты можешь попробовать их компенсировать
    6. Клиентом для тебя является браузер или же десктопное/мобильное приложение, или всё сразу.

    После всего этого ты сможешь определить, какой протокол тебе допустим - это будет http, вебсокеты, или вообще что-то кастомное поверх UDP или TCP.
    Причём для разных типов сообщений ты можешь использовать разный транспорт. Например, для передачи информации о покупках на внутриигровом рынке ты вполне можешь использовать http, а для передачи уведомлений об этих покупках - websocket, а для передвижений персонажей и их действий во внутриигровом мире - UDP, а для загрузки информации о мире и самих игроках - TCP.
    Ответ написан
    6 комментариев
  • Как/Какой лучше создать клиент-сервер для мобильного приложения NET. Maui?

    Пиши на чём умеешь.
    Раз уж уже умеешь C#, то asp net core напрашивается.
    Ответ написан
    Комментировать
  • Как/Какой лучше создать клиент-сервер для мобильного приложения NET. Maui?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Поддерживаю asp net core или азур.

    Хотя можно на чем угодно, подробности тут
    https://learn.microsoft.com/en-us/dotnet/maui/data...
    Ответ написан
    Комментировать
  • Как работать с foreach так чтобы только первый приходил с active?

    @Shavadrius
    Можно решить несколькими способами.
    Например, добавить в передаваемую модель флаг "active" для слайдов:
    <div class="carousel-item @(slider.IsActive ? "active" : "")">

    Или добавить флаг-переключатель непосредственно в код представления:
    @ model HomeVM
    @ bool isFirstSlide = true;
    @ foreach (Slider slider in Model.Sliders) 
    { 
    <div class="carousel-item @(isFirstSlide ? "active" : "")">
    <div class="bg-img" 
    style="background-image: url('../src/img/products/@slider.Image')"></div> 
    </div> 
    isFirstSlide = false;
    }
    Ответ написан
    Комментировать
  • Почему при валидации одной модели подтягиваются свойства из другой?

    Acceptme3
    @Acceptme3 Автор вопроса
    Разобрался с проблемой, если кому вдруг пригодится. Просто вынес инициализацию моделей из ViewModel в соответствующие экшены контроллера перед валидацией.
    Ответ написан
    Комментировать
  • Как упаковать .NET в контейнер с приложением?

    В случае с .net (core) ты можешь собрать self contained приложение.
    https://learn.microsoft.com/en-us/dotnet/core/depl...

    В случае с net framework такого нет, но ты можешь просто вместе со своим приложением распространять инсталлятор net framework нужной версии
    Ответ написан
    9 комментариев
  • Какие есть библиотеки для работы с docx на dot net.cote (interop не работает на core)?

    Зависит от того, что именно нужно с docx делать.
    Есть npoi - для высокоуровневых абстракций, есть openxml SDK для низкоуровневых абстракций, есть templateengine для шаблонов.
    https://www.nuget.org/packages?q=Docx

    Да и интероп вроде тоже должен работать, но только на винде, и если офис установлен, и на десктопе, но не сервере.
    Ответ написан
    5 комментариев
  • Как сделать "кастомные" cookie для разных нужд?

    yarosroman
    @yarosroman Куратор тега C#
    C# the best
    в запросе полностью отправляете id и текс комментария, зачем эти сложности.
    Ответ написан
    Комментировать
  • В чём отличие многопоточности и асинхронности в контексте .NET C#?

    Nipheris
    @Nipheris Куратор тега C#
    Асинхронность - это способ организации вычислений, когда код, вызывающий какую-либо операцию/подпрограмму /функцию, не дожидается завершения работы этой операции, а если ему интересен результат вычислений, то он получает вместо готового результата некий способ запросить результат позже, когда он будет готов (то, что называется промисом или фьючером или ещё как-то в зависимости от языка). Это по сути противоположность "обычному" синхронному вызову, когда вызывающий код останавливается и ждёт завершения функции, чтобы получить результат. Как это будет достигнуто - это уже другой вопрос, это зависит от сути операции, запускаемой асинхронно.

    Но ведь при классической многопоточности никакой поток так же не блокируется

    Что такое "классическая многопоточность"? Что это за термин? Что такое неклассическая многопоточность?
    Если брать потоки ОС, то операционка просто передаёт управление созданному потоку в желаемую точку входа и дальше уже поток решает что и как делать. Поток может молотить вычисления 10 минут, потом записать их куда-нибудь в файл и завершиться. Никаких кормлений задачами не будет (хотя я не совсем понимаю что такое кормить задачами в вашем контексте).

    Тем более при асинхронности практически всегда подразумевается многопоточность

    С чего бы? Асинхронный код полезен при большом количестве операций ввода-вывода - диск, сеть и т.д. Не обязательно это должно быть что-то, вычисляющееся в отдельном потоке. Вот, почитайте хорошую статью: There is no thread.

    Вам будет полезно ознакомиться с асинхронностью в какой-нибудь изначально однопоточной среде, например JS в браузере не считая вебворкеров. Тогда вы поймёте разницу.
    Ответ написан
    5 комментариев