• Какой стек использовать для десктоп приложений в гос.предприятиях в 2023 году?

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

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

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

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

    vabka
    @vabka
    Токсичный шарпист
    Функция 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³)?

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

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

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

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Если радикально не переписывать - никак.
    Если перейти на 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 посмотри на их движок
    Ответ написан
    Комментировать
  • Уменьшается ли используемая память программы?

    bingo347
    @bingo347
    Crazy on performance...
    Во-первых, размер стека фиксирован, стек выделяется в момент запуска потока.
    Во-вторых, компилятор и сам достаточно умный, чтобы переиспользовать стек под разные переменные использование которых не пересекается.
    В-третьих, экономия на спичках, а читаемость ухудшается.

    P.S. такую штуку действительно иногда используют, но ради того чтоб вызвать деструктор в нужной точке кода.
    Ответ написан
    Комментировать
  • Должен ли RESTful API возвращать 200 OK при запросе списка записей категории, если сама категория не существует?

    AleksandrB
    @AleksandrB
    Совсем недавно вывел "Hello world"
    Категория - это ресурс, такой ресурс существует? Нет. Значит 404
    И пустое тело, но ресурс существует - это 204, а не 200
    Ответ написан
    Комментировать
  • Что можете сказать про данный код?

    @dima20155
    you don't choose c++. It chooses you
    1. Если вам удобно такое, то здорово, применяйте, но как минимум в input я большого смысла не вижу, ибо это заменятся одной строкой и будет выглядеть более явно. Я бы предложил добавить в реализацию данных функций шаблоны, иначе для каждого типа данных, хранимых контейнером придется писать новую функцию. Можно даже тип контейнера в шаблон завернуть. Для обучения практика вам будет полезная.

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

    3. Имя лист для вектора неудачное, лучше array или strArray в вашем конкретном случае.

    4. Функция NUM бесполезна, так как является обёрткой над понятной шаблонной функцией std::to_string. В вашем случае не ясно что делает функция при прочтении ее имени

    5. Вы уверены, что код типа output({ input() }); вам необходим? Вы здесь выполняете слишком много лишних операций. Хотя по факту это должна быть просто одна строка std::cout
    Ответ написан
    2 комментария
  • Как сделать перегрузку "=="?

    @dima20155
    you don't choose c++. It chooses you
    Замените строку
    if (planets[i].name == name_d)
    на
    if (planets[i] == name_d)
    Если хотите, чтобы вызывался operator==
    Но у вас там кроме этого ещё очень много странностей.
    Зачем сравниваете строки напрямую? Есть strcmp
    Зачем вообще работаете с сырыми строками, если даже не следите за очисткой памяти?
    Лучше замените все на std::string.
    Ответ написан
    Комментировать
  • Почему не получается скомпилировать файл через wsl на c?

    vabka
    @vabka
    Токсичный шарпист
    Для компиляции используется gcc, а не make.
    Ответ написан
    Комментировать
  • Как изменить свойства виджета Qt из другого виджета?

    @dima20155
    you don't choose c++. It chooses you
    Используйте сигналы и слоты.
    Ответ написан
    2 комментария
  • Как на микротике ограничить интернет, но открыть локалку при использовании kid control?

    @dronmaxman
    VoIP Administrator
    Можно.Выключи KidControl и добавь в конце всех правил
    /ip firewall add action=accept chain=kid-control comment="Allow localnet for kid-control" dst-address=192.168.88.0/24 src-address=192.168.88.0/24

    Когда включишь KidControl, это правило должно оказаться над остальными правила KidControl и разрешать трафик в локальной сети.
    192.168.88.0/24 - это адресация твоей локальной сети

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