• Как корректно завершить webapplication, чтобы вызвался и исполнился до конца IHostLifetime.ApplicationStopping.Register(mymethod)?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Для ответа на вопрос несколько не хватает информации - как у вас организована реакция на отмену IHostApplicationLifetime.ApplicationStoping (что и как делает регистрируемый callback при отмене), какие сервисы вы используете и как они реагируют на отмену того же маркера.
    И IMHO информацию лучше собирать методом проб и ошибок. Самое первое, что вы можете попробовать - это такой вариант. Во-первых, нужно зарегистрировать свой callback последним. А для этого нужно вызвать конструкторы всех сервисов в надежде, чо если они и регистрируют callback на этот маркер, то делают это у себя в конструкторах и только потом регистрировать свой callback (если вы эти сервисы получаете путем внедрения зависимостей через конструктор, это получится автоматически). Во-вторых, нужно выполнить всю работу в своем callback синхронно, в частности, если сообщения отправляются сервисами асинхронно, то подождать завершение каждого (Tasl.WaitAll вам в помощь), а не ждать каждый через await (или явно - используя ContinueWith - но сейчас так никто не делает).
    Идея рассчитана на то, что реализация IHostApplicationLifeTime отменяет (ЕМНИПпроверено в исходниках) этот маркер простым Cancel и ждет завершения отмены (и в документации об этом ожидании смутно упомянуто, т.е., это не хак, зависящий от реализации) , а Cancel вызывает все зарегистрированные callback синхронно, в порядке, обратном регистрации (это ЕМНИП тоже документированнное поведение).
    Попробуйте для начала так, прежде чем применять более крутые меры (например, подменять реализации IHostLifeTime и IHostApplicationLifetime(UPD: погорячился, эту реализацию подменять нельзя, там обязан быть класс ApplicationLifetime) - технически это реально, но лучше такое оставить на потом).
    Если не прокатит, я ответ постараюсь продолжить.

    PS По поводу способов закрытия приложения. AFAIK остановка через "красный квадратик" в VS и закрытие окна консоли вызывает просто уничтожение процесса, и это не перехватывается (могу ошибаться, конечно). А вот закрытие по Ctrl+C отлично перехватывается ConsoleLifeTime (обычно испольуемая для консольных приложений реализация IHostLifetime), так что именно этот способ закрытия можно считать штатным. А вообще по жизни, 100% срабатывающих способов реакции на прекращение работы приложения нет - ибо прекращение может быть вызвано такой причной, как пропадание питания (особенно - если вследствие перерубания кабелей топором ;-) ).
    Ответ написан
    1 комментарий
  • Как установить Intel RST?

    pindschik
    @pindschik
    ФЫВА ОЛДЖ
    Два путя

    Первый:
    1) Включить в BIOS
    2) Скачать дистрибутив IRST, особый драйвер для установки Windows, распаковать его на установочную флешку (папки VMD и NonVMD).
    3) Загрузиться с флешки, показать один их 4-х драйверов, убедиться что установщик стал видеть диски. Ставить винду.

    Второй, раньше точно работал, но в последнее время не проверял:
    1) Скачиваем установщик IRST, запускаем.
    2) Соглашаемся, что он нам сам включит в BIOS режим VMD и поставит драйвер в систему. Ставим, перезагружаемся.

    Получаем софтовый RAID и остальные фишки
    Ответ написан
    Комментировать
  • Получил ошибку при парсинге json, но не могу найти где в json не такое поле. Как решить?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Так вам пишет, что проблема при парсинге "[object Object]" (Который является строковым представлением JS объекта)

    Вот стандартная структура для fetch get запроса:
    let response = await fetch('https://url.address.com/routes/') <-- получаем "ответ"
    let data = await response.json() <-- получаем данные в формает json


    В вашем случае, вы этот объект data дальше пытаетесь пропарсить через JSON.parse(...).

    Если вы учили JavaScript, вы должны знать, что [object Object] это строковое представление JS объекта, тогда у вас не было бы проблемы с поиском ошибки, но вы пропустили изучение JS и перешли сразу к api и запросам на api, отсюда и получаете результат
    Ответ написан
    1 комментарий
  • Получил ошибку при парсинге json, но не могу найти где в json не такое поле. Как решить?

    IvanU7n
    @IvanU7n
    nothing interesting here
    а зачем уже спарсенный результат ещё раз парсить?
    или
    const tasks = JSON.parse(await response.text());
    или
    const tasks = await response.json();
    Ответ написан
    1 комментарий
  • Получил ошибку при парсинге json, но не могу найти где в json не такое поле. Как решить?

    @historydev Куратор тега JavaScript
    Редактирую файлы с непонятными расширениями
    Ты пытаешься спарсить js объект.

    Здесь уже НЕ json.
    await response.json()
    Ответ написан
    2 комментария
  • Получил ошибку при парсинге json, но не могу найти где в json не такое поле. Как решить?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    -     const tasks = JSON.parse(await response.json());
    +     const tasks = await response.json();
    Ответ написан
    Комментировать
  • Почему пишет неопределенный тип?

    maaGames
    @maaGames
    Погроммирую программы
    Судя по вот этому: "EventArgs.h", в вопросе показан код из срр файла. А в другом срр файле происходит создание объектов и там включен только "EventArgs.h" с forward declaration этих классов. Собственно, об этих классах там известно только то, что они есть и можно только указатель на них создать и всё. Определение класса олжно быть в хэдере и этот хедер надо включить во все файлы, которые этот класс используют.
    И сделай виртуальный деструктор. Но это уже следующая ошибка, про которую спросишь.
    Ответ написан
  • Почему сервер не разрешает [delete] метод (ошибка 405)?

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

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


    От опытных программистов хочу узнать: что делать дальше, куда и как развиваться, что попробовать.

    1. Посмотри как у других оформлены проекты.
    2. Посмотри на современные стандарты C# и попробуй обновить свой проект.
    3. Смотри вакансии и изучай технологии, которые требуются.
    4. Погугли, что изучают в вузах и поизучай фундаментальные вещи.

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я не специалист по C# поэтому по качеству кода не смогу ничего сказать. Но могу сказать по другой части.

    Проект создан в 2 коммита. Это обман. Так не бывает. Программисты не делают проект в 2 шага. Обычно
    идет некий итерационный процесс когда в течение дня. Либо в течение итерации разработки какой-то
    фичи делается бранч. И вмерживается в мастер. Или делается отдельный коммит в мастер с описаием что делалось.
    И тогда проект приобретает ИСТОРИЮ изменений. По истории видно как авторы работали. Что изменяли.

    У проекта нет документации. Надо описать что это для чего и так далее. Нет инструкции по сборке.
    Каждый разработчик должен иметь возможность собрать любой проект с гитхаба прочитав инструкцию.
    Сборка - это не программирование. Это отдельный скилл. Почитай что такое сборщики. И это не среда
    разработки. Это отдельный продукт. Обычно в консоли работает. Чтоб на сервере собирать проекты
    в режиме автономного процесса без участия человека.

    У проекта нет модульных тестов. Это говорит о том что нет возможности бытро проверить не сломалась
    ли логика после изменений. Тесты надо добавить.

    Нет внешних метрик здоровья проекта. Непонятно в каком состоянии щас он находится. Компилируется ли вообще? Посмотри как другие проекты в гитхабе выглядят.

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