Задать вопрос
  • Как написать на с++ метод и экспортировать его в c# заинлайнить, и можно ли _fastcall его сделать???


    Или бессмысленно маленькие методы экспортировать?

    Бессмысленно. Лучше сразу на C# их и писать.
    Прибегать к C++ и p/invoke есть смысл только если невозможно переписать на C#.

    Например это имеет смысл в случае библиотек уровня ffmpeg, sqlite, tensorflow
    Ответ написан
    Комментировать
  • VCS в квадрате. Можно ли с помощью Git контролировать состояние другого Git-репозитория?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Нет, рекурсия работать не будет. Гит увидит, что внутри каталога лежит вложенный репозиторий и проигнорирует его. А в своей базе пометит этот подкаталог как поддерево (subtree), чтобы не сломать.

    Вы пытаетесь соорудить какой-то жуткий костыль только лишь потому, что поленились изучить инструмент, в котором работаете. Поэтому для вас Git сейчас представляется как некая шайтан-машина, которой вы скармливаете команды, которые не понимаете, и в результате получаете ещё более непонятные «неожиданные результаты». Просто потратьте несколько дней, чтобы изучить азы. Не зубрите непонятные команды, а постарайтесь понять логику гита. А она — эта логика предельно проста и гениальна.

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

    Сломать что-то в гите довольно сложно. Вам может только показаться что всё сломалось, но это лишь потому, что вы не понимаете, что делаете.

    каким-то образом снес половину коммитов

    Коммиты в гите — это неизменяемые сущности. Можно лишь создать новые «на замену», но старые не исчезают. Коммиты невозможно удалить без специальных команд очистки мусора.
    Вам показалось что коммиты исчезли, но на самом деле они все остались в репозитории, вы просто их не видите в текущей ветке. Но всё легко откатывается назад, используя журнал Reflog.

    Поэтому было бы неплохо как-либо сохранять прошлые версии Git репозитория

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

    Мой вам совет: Пройдите 16 коротких бесплатных уроков и полу́чите просветление.
    Ответ написан
    2 комментария
  • Есть устройство на астра линукс (Смоленск) версия ос с сертификатом ФСТЭК, никак не получается установить программы или окружение на устройство, идеи?

    CityCat4
    @CityCat4
    //COPY01 EXEC PGM=IEBGENER
    Интересно, кто это пустил на Смоленск, где сертификат на гостайну - одмина, который явно что-то там хочет поставить с неодобренных реп?
    Братан, ты в курсе, что установка любого неодобренного "сертификатерами" обновления снимает сертификацию? Если у вас Смоленск - значит в нем есть необходимость - от балды такое не покупают. Особисты будут безумно рады, когда узнают, что их система превратилась в тыкву.

    В сертифиицированную систему лезть нельзя!
    Ответ написан
    2 комментария
  • Не работает простой код хотя он правильный в чем может быть проблема?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Цифр больше 9 в десятичной системе не бывает.
    А ваш код выдаёт числа от 1 до 10, как вы в нём и написали.
    Ответ написан
    1 комментарий
  • Как преобразовать std::function в указатель на функцию?

    @sergiodev
    Как вариант можно так сделать:

    1. Запомнить указатель на объект (this) в какую-то глобальную переменную
    2. Создать обычную функции в соответствии с параметром WlanRegisterNotification и передать её туда
    3. В теле функции достать указатель на экземпляр из глобальной переменной и далее работать с ним

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

    Если вы работаете с функцией https://learn.microsoft.com/en-us/windows/win32/ap... из Windows API, то там есть параметр context как раз для передачи контекста в callback. Можно положить туда this и позже достать из контекста внутри вашей callback-функции.
    Ответ написан
    2 комментария
  • Как быстро изучить C#?

    @tukreb
    Быстро изучить просто.
    Придумывайте любой проект и начинаете его делать.
    И самое главное, вы должны делать это самостоятельно, без всяких тостеров.
    Книги вам помогут любые где есть просто базовые знания, а вот всякие ютуб каналы особо не помогут, может только чуть разобраться в фреймворках, но всё равно документация рулит.
    Если хотите создавать игры, то копайте движок Unity и его документацию.

    Сам процесс простой.
    1. Пишите как знаете проект, главное чтобы заработало как планируете, на сам код не обращайте особого внимания.
    2. Начинаете переписывать проект с полученным опытом из 1 пункта с использование новых знаний из прочтения книг по всяким архитектурам и паттернам.
    3. Повторяете в цикле первые 2 пункта до 11 класса каждый день тратя по 4 часа минимум.

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

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    С такой паранойей - и без антивируса?! Феноменально!
    Ответ написан
    1 комментарий
  • Можно ревью супергрязного(наверное) кода на с#?

    yarosroman
    @yarosroman Куратор тега C#
    C# the best
    Найди .gitignore для шарповых проектов, чтобы не тащить мусор в виде временных и исполняемых файлов на гит
    Ответ написан
    Комментировать
  • Какой стек использовать для десктоп приложений в гос.предприятиях в 2023 году?

    Мне удобнее сделать всё на C#, .Net, WPF и в случае появления linux запускать всё под Mono.

    Ты под Mono не сможешь запустить приложение на WPF:)
    Тогда уж сразу лучше писать на Avalonia.
    Это раз.

    Два - если будет Linux, то очень велик шанс, что какой-нибудь особенный российский linux, у которого могут быть проблемы с совместимостью - нужно будет тестировать и как минимум писать инструкции по установке.

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

    Функция cout из стандартной библиотеки C++ использует указатель для доступа к объекту ostream, который представляет поток вывода. Указатель используется для работы с методами и свойствами этого объекта, такими как << оператор для вывода данных.

    Обманул тебя ChatGPT.
    cout - это не функция, а объект.
    И конкретно в твоём коде указатели напрямую нигде не используются.
    Ответ написан
    Комментировать
  • Существуют ли аналоги Яндекс/Гугл фото в своей сети?

    iiiBird
    @iiiBird
    Пока ты спишь - твой конкурент совершенствуется
    https://syncthing.net/
    на ютубе полно гайдов по его настройке
    Ответ написан
    4 комментария
  • Как редактировать XAML из C#?

    @SZolotov
    Asp.net core, MAUI,WPF,Qt, Avalonia
    Почитайте про биндинги и контролы для показа коллекций. Вопросы отпадут и время сэкономите. После прочтения поймёте что в xaml верстать сильно проще.
    Если желание верстать шарповым кодом всё же останется, алгоритм действий такой же как и в xaml:
    1. Забиндить массив на специально предназначенное свойство контролла для показа коллекций
    2. Переопределить DataTemplate для нужного дизайна элемента списка
    3. Наслаждаться результатом.
    Ответ написан
    Комментировать
  • (Вопрос без однозначного ответа) Почему в window socket 2 используется так много различных дефайнов и псевдонимов?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я тоже до конца не понимаю цели и задачи которые ставились для winsock2 но вот можно
    почитать аннотацию здесь https://learn.microsoft.com/en-us/windows/win32/wi...

    С моей точки зрения было время большого разлада между лагерем Microsoft и Unix. И вместо того
    чтобы просто позаимстовать сетевые библиотеки или купить лицензии, MS как всегда стал делать
    что-то свое, "сумчатое" и ни на что не похожее. Яркий пример Component-Object Model (COM).
    Нигде такого нет.

    Для чего создаватьtypedef struct addrinfo{}? Только ради того, чтобы не писать struct в Си?

    Да все верно. Именно для такого юзкейса typedef и создавался. Плюс еще можно примитивы определять.

    Для чего определять *PADDRINFOA

    Вот здесь не знаю для чего. Хотя подобный подход я видел не только у Microsoft но и у других.
    Вообще иногда мы не догадываемся но код может быть сгенерирован кросс-компилляторами
    и в этом случае названия идентификаторов могут быть очень длинными и причудливыми.
    А удаление звездочки из синтаксиса сужает возможности разработчика тоесть не дает
    допустить ошибку. Такая себе строгая типизация в квадарате.

    Где-то спокойно используется int, а где-то используетсяtypedef unsigned __int64 UINT_PTR, опять же вместо того, чтобы просто писать unsigned __int64.

    Это очень старый технический долг языка С++ и его уже нельзя исправить. Дело в том
    что спецификация языка не объясняет какой разрядности должен быть int. Он может быть
    16, 32 бит в зависимости от целевого железа. По сути он - синоним регистра процессора.
    И когда мы делаем цикл от 1 до 10 и нам по сути неважна разрядность параметра цикла - мы просто заказываем
    int чтоб долго не думать. И компиллятор собирает очень быстрый и оптимальный код.
    sizeof(int), или константы в в limits.h могут дать подсказку по вашей текущей архитектуре.

    typedef unsigned __int64 UINT_PTR

    Здесь идет форсирование разрядности в 64 бита. Такие потребности возникают
    в момент когда у нас есть например жестко заданный формат (сетевой протокол
    или дисковый формат файла) и мы должны гарантировать что другие архитектуры
    микрокотноллеры, мобилы и прочее правильно смогут интерпретировать эту структуру.
    Тут еще и порядок байтов внутри слова тоже важен. В наше время даже есть сет
    стандартов на описание таких структур ASN, AVRO, Protobuf, Thrift.
    Ответ написан
    1 комментарий
  • Почему сложность алгоритма (n+2n+3n+…+n⋅n) = O(n³)?

    Не нужно путать big-O и алгоритм для подсчёта прогрессии.
    Ответ написан
    Комментировать
  • Калькулятор работает неисправно, как решить?

    YuriyVorobyov1333
    @YuriyVorobyov1333
    Software Developer
    Ну так a это int, а switch по char'ам, просто уберите одинарные кавычки и все заработает
    Ответ написан
    Комментировать
  • Как избежать обнуления массива?

    GavriKos
    @GavriKos
    Почему решили, что он обнуляется? Не похоже чт с ним должно что то происходить
    Ответ написан
    2 комментария
  • Как можно сделать перебор по массиву быстрее?

    Если радикально не переписывать - никак.
    Если перейти на Span, как ты рядом советуют - получишь выигрыш в пару процентов.

    У тебя основное замедление происходит из-за того что:
    1. На каждый someItem ты делаешь вызов _additionItemsSerivce
    2. На каждый property ты делаешь вызов UpdateProperties

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

    GavriKos
    @GavriKos
    Сделать свою реализацию printf/tostring/<>> у структуры.
    Ответ написан
    Комментировать
  • Как скомпилировать программу linux?

    hint000
    @hint000
    у админа три руки
    Есть такой код (не мой)

    Что я делаю не так?
    1. вы не даёте ссылку на источник кода, а это могло бы упростить разбор.
    2. вангую, что этому коду лет десять, может быть меньше, может быть больше. Давайте посмотрим, какие версии ядра Linux были поддерживаемыми лет 10 назад; а это были версии 2.6.x и 3.x.x; версия 4.0 впервые появилась в 2015 г., версия 5.0 - в 2019 г. Уже поняли, на что я намекаю? Вы пытаетесь подсунуть компилятору исходники ядра одной из последних версий, на которой этот код, возможно, никто вообще не тестировал. Сколько там изменений было за десяток лет... Короче, пробуйте его скомпилировать вместе с исходниками 3.x. Если ошибок будет хотя бы меньше - уже кое-что.
    Ответ написан
    Комментировать
  • Как реализовать отображение чертежей в winForms?

    @rPman
    Вне зависимости от использования библиотек или фреймворка общая идея ускорения вывода большого количества примитивов или просто сложные объекты, есть разные подходы:
    * кешировать результат, в твоем случае можно в памяти создать битмап и отрисовывать в него, тогда при перемещении окна просмотра в него перерисовывать объекты не понадобится
    недостаток - при большом размере холста (в пикселах) будут повышенные требования к оперативной памяти
    * частично кешировать результат, чем то таким занимаются разработчики/движки игр, когда далекие сцены, внешний вид которых не меняется при локальных перемещениях игрока, заменяются на заранее отрендеренный битмап (текстуру) и рисуют простой спрайт
    В общем это перераспределение нагрузки между процессором и оперативной памятью, либо ты постоянно перерисовываешь все объекты на сцене либо ты это делаешь реже но хранишь все в памяти
    * воспользоваться видеоускорителем, красивого решения именно для c# у тебя не будет, это вообще не подходящий инструмент. Смысл в том что современные видеоускорители, даже если это оффисный, встроенный в процессор, способны отрисовывать миллионы примитивов, но разработка приложения будет похожа на разработку игры, и готовые фрейамворки либо ограничат тебя в возможностях либо из-за того что используешь неподходящий инструмент, ты будешь тратить время на переходы от managed разработки до нативной
    погугли .net using gpu acceleration
    если ты готов к вендорлоку nvidia посмотри на их движок
    Ответ написан
    Комментировать