• Как можно сделать код, что-бы он был красивее?

    • на функции побейте, с вменяемыми названиями
    • литералам регулярок можно тоже дать нормальные имена, сейчас не разберёшь что собственно тестится регуляркой - приходится её читать и думать
    • непонятно зачем тут стрелочная функция вместо обычной, ради чего весь этот синтаксический шум
    • непонятно зачем это присваивание: newText = newText.substring(1);, чтобы что? Почему не завести отдельную переменную tailText или перенести это во второе выражение?
    • лично я запутался в использовании text и newText - непонятно почему в последнем условии тестируется text[0], а хвост берём у newText. Выглядит так, что это сделано специально, но не пойму почему. А если НЕ специально - то вот вам пример как вы усложнили код на ровном месте.

    Чем меньше вы пользуетесь сменой состояния, иными словами, чем больше у вас констант, а не переменных, и чем меньше присваиваний - тем код лучше читается. Я надеюсь вы не ради экономии чего-то там это делаете.
    Ответ написан
  • Как выбрать нужный ClaimIdentity из ClaimPrincipal, если их несколько штук?

    Ну так а мы откуда знаем, какие claims вам нужны? Всё зависит от вашей модели безопасности в приложении - каким образом вы авторизуете ваших пользователей (или что там у вас) на соответствующие действия.

    Например в простом случае, если у вас модель, основанная на ролях, то вам вероятно хватит клэима "роль", для которого даже helper-метод сделан: IsInRole.

    Сейчас вы задали вопрос в духе "у меня есть запись в базе данных, какие поля мне из неё нужно взять?". ClaimsPrincipal в общем-то похож на такую "запись в базе" - набор фактов о каком-то принципале (например, о пользователе), с бонусом в виде того, что мы тем или иным способом убедились в подлинности этих фактов, а сами факты более-менее стандартизированы для многих практических задач.
    Ответ написан
    1 комментарий
  • Как отправить готовую написанную игру на другой компьютер?

    Nipheris
    @Nipheris Куратор тега C++
    Всё как и должно быть. Потому что не всегда C++ приложение можно просто так запустить на другой машине.
    На тулчейне от Microsoft (очевидно, вы используете Visual Studio для разработки, т.к. недостающие библиотеки из текста ваших ошибок - это студийный C++ рантайм) при использовании динамической линковки рантайма нужно приложить некоторые дополнительные усилия, чтобы этот рантайм появился на другой машине (т.к. его там ещё может не быть - ведь рантайм для каждой мажорной версии студийного компилятора свой). Вы можете как установить рантайм централизованно, так и положить его рядом с вашим приложением. Ну или вы можете слинковать рантайм статически.

    Задача, которую вам сейчас нужно решить, называется развёртыванием (deployment). Это абсолютно нормально, что вы столкнулись с необходимостью разобраться с этим, раз вы пользуетесь C++.

    Нет лучшего источника информации по этой задаче в рамках тулчейна Visual C++, чем вот эта страница: en/ru. Разбирайтесь, и у вас точно всё получится - абсолютно в каждом C++ проекте production-уровня эта задача решается тем или иным способом. Возможно вам потребуется дополнительно разобраться, что это вообще такое за "рантайм" и почему он требуется для работы вашего приложения.
    Ответ написан
    1 комментарий
  • Как перевести переменную на русский язык?

    i18next например?
    Ответ написан
    Комментировать
  • Как анализировать crash dumpы программы для Windows?

    Ставишь Студию с ворклоадом C++ Desktop, берёшь дамп, открываешь в Студии. Если есть файлы символов - настраиваешь пути к ним, чтобы они подтянулись при просмотра дампа.

    Чтобы символа были - нужно и релизные билды (т.е. те, которые отдаются пользователям) тоже собирать с отладочной информацией (к слову, в терминологии CMake такой тип сборки называют RelWithDebInfo) и складывать её на долговременное хранение (пока поддерживается конкретная релизая версия), см. технологии Symbol Server и SSQP.

    Чтобы было вообще круто, желательно ещё настроить автоматическое подтягивание исходников. Раньше это делалось кастомными CMD-командами, вшитыми прямо в PDB, теперь есть технология Source Link, которая с недавнего времени поддерживается и C++ным тулчейном, теперь лучше использовать её.

    А, ну и конечно же дампы нужно собирать и отправлять на сервер (если конечно стоит такая задача). В этом вам поможет либо dbghelp, либо более комплексные решения вроде CrashFix и CrashRpt.

    Это если в крупном масштабе и только про Windows + Visual Studio (ну т.е. это всё в основном Microsoft-specific). Задавайте вопросы, я расскажу детальнее если что-то непонятно.
    Ответ написан
    4 комментария
  • Как работает зеркальный массив из 2х дисков в proxmox?

    Ничего не понятно. У вас boot уже на ZFS-зеркале? Где вы смотрите диски? Это страница Disks? Ну так там всегда физические диски. Что у вас на подстранице ZFS? Там есть уже созданные пулы или ещё нет ничего?
    Ответ написан
    Комментировать
  • Как задавать длину линии в сантиметрах и рисовать такую линию (C# в WPF на Canvas)?

    Nipheris
    @Nipheris Куратор тега C#
    В ваших расчётах вы не учли реальную плотность пикселей вашего монитора (physical PPI). Тот DPI, который вы вычислили, описывает некий эталонный монитор с 96 PPI, а реальный монитор может значительно отличаться. Иными словами, вы скорее получили информацию об установленном у вас масштабе экрана, и пока не соотнесли это с реальным физическим устройством, которое установлено конкретно у вас.

    Если вы сейчас подключите себе проектор, то очевидно, что длина линии будет зависеть от расстояния от проектора до доски - тут уже проще померять длину некоторой эталонной линии (допустим, 500 пикселей), и по ней определить, сколько пикселей картинки приходится на сантиметр какой-либо поверхности (экран монитора, доска проектора). Соотв-но эту длину должен померять пользователь и ввести в вашу программу. С монитором чуть проще - возможно есть способ запросить у некоторых устройств отображения физический размер или физический PPI.
    Ответ написан
  • Как поставить нужную версию Python на VS code(если Vs code эту версию не видит)?

    Самый простой вариант - взять нормальный менеджер окружений (и пакетов заодно), например Poetry, ну или pipenv, если очень хочется, развернуть где-нибудь в подпапке .venv вирт. окружение для вашего проекта, и натравить на него VS Code (вероятно, он сам даже предложит вам в списке этот вариант). Это если вы собираетесь делать что-то сложнее Hello world.

    Ну а вообще почему бы вам не ввести путь /usr/bin/python3.10? Ну мало ли почему vscode его не нашёл.
    Ответ написан
  • Почему при введении команды пишет Python?

    У вас не установлен Python. Вместо этого вы вызываете заглушку, которая с некоторых пор поставляется с Windows 10/11. Эта заглушка, когда вызывается без параметров, должна открывать вам страницу в Microsoft Store, с которой можно быстро поставить Python. Она сделана для новичков, чтобы им было проще поставить Python. Если у вас Стор удалён или как-то заблокирован (не удивлюсь, т.к. многие его почему-то боятся), то возможно поэтому у вас ничего не открывается.

    Если вы поставите Python из Стора, то команда python автоматически отвяжется от этой заглушки и привяжется к реальному интерпретатору Питона. Если поставите иным способом, возможно нужно будет выключить эту заглушку вручную, чтобы ваши шеллы не находили её в PATH раньше настоящего Питона. Это быстро делается через Manage app execution aliases на странице Apps & Features.

    Лично меня Питон из Магазина почти во всём устраивает (особенно если им правильно пользоваться и использовать виртуальные окружения), но народ любит подискутировать на эту тему, поэтому не буду навязывать вам свою точку зрения на этот счёт.
    Ответ написан
    Комментировать
  • Можно ли использовать разные версии node для разных пользователей Windows?

    Попробуйте Вольту, он ставит тулы (ноду, NPM, Yarn) в %LocalAppData%\Volta, не должно быть проблем с разными версиями у разных пользователей.
    Ответ написан
    1 комментарий
  • Как правильно определить опциональный тип?

    let object: Record<string, string | boolean | undefined> & { field?: boolean } = {
      s: 's',
      field: true,
    };

    Но вообще код попахивает. Что-то вы делаете не так.
    Ответ написан
    Комментировать
  • Что означает *&?

    Nipheris
    @Nipheris Куратор тега C++
    делает тоже самое что и передача простого int по ссылке в функцию?

    Скорее всего вы не очень удачно выразились, поэтому попробую догадаться: да, передача ссылки на int, ссылки на float, ссылки на int* и ссылки на float** ничем принципиально не отличается. В обоих случаях вы получаете идентификатор, в кторый можно присваивать значение того типа, на которое у вас ссылка (т.е. int, float, указатель на int, указатель на указатель на float), и это значение попадёт в ту область памяти, которая была "завёрнута" в ссылку при вызове функции. Это может быть как обычная переменная, так и какой-нибудь разыменованный указатель.
    Ответ написан
    Комментировать
  • Как правильно типизировать класс?

    export class TimeSeries<T extends Record<string, number>>
    Ответ написан
    Комментировать
  • .baml файл? как редактировать и сохранить в проект?

    Nipheris
    @Nipheris Куратор тега C#
    XAML и так компЕлируется в BAML, когда вы собираете ваш проект, и встраивается в ресурсы результирующей сборки.

    Поэтому неясно, почему вы это спрашиваете и почему это вас беспокоит. Какой у вас тип проекта и какую UI-библиотеку вы используете?
    Ответ написан
    8 комментариев
  • Криптографические библиотеки для C/C++?

    конкретно для моих проектов меня интересуют алгоритмы(sha, rsa,ecdh, aes), и хочу найти информацию по поводу существующих библиотек на эту тему.

    https://www.cryptopp.com/wiki/RSA_Cryptography - вот страничка на cryptopp-шной wiki по RSA, пробовали читать? Что понятно/непонятно? Вы уверены, что вам нужна информация именно по библиотеке, а не по самим алгоритмам?

    Мне интересно узнать ваше мнение, как вы думаете, насколько безопастно/грамотно использовать самописные крипто-либы, и использовали ли вы бы такие библиотеки для какого-то продакшена?

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

    Судя по вашему вопросу, вы пытаетесь обойти необходимость разбираться со сложными вещами, в том числе путём велосипедостроения. Криптография - это область, которая не терпит такого подхода. Разумеется, люди время от времени реализовывают свои собственные решения с нуля (ведь кто-то же начал проекты cryptopp и openssl), но они хорошо осведомлены как о всех существующих решениях, так и сложностях с созданием своего собственного. И о практическом выхлопе от затрат на качественную реализацию своего решения.

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

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

    Правда осознанно это делают только авторы библиотек/nuget-пакетов (публичных или приватных, в рамках компании), остальные скорее потому, что так сказали.
    Ответ написан
    Комментировать
  • Access to fetch at 'http://127.0.0.1:8000/api/v1/movie' from origin 'http://localhost:8080' has been blocked by CORS policy. Как решить проблему?

    backendUrl: "http://127.0.0.1:8000/api/v1"

    Вот тут предлагаю поменять айпишник на localhost, чтобы ориджин был действительно одинаковый.
    Ответ написан
    Комментировать
  • Gitlab remote: HTTP Basic: Access denied?

    Откройте панель управления, в поиске введите Credential Manager (не помню точно как в русском интерфейсе, кажется Диспетчер учётных данных), откройте первое окно в результатах поиска, там выберите вкладку Windows Credentials, и поищите в этом окне креды, которые вы ввели. Найденное - удалите. И затем попробуйте ещё раз склонировать, пароль должен запроситься ещё раз.
    Ответ написан
    1 комментарий