• Как установить appx пакет на версию ниже заявленной в манифесте?

    Крайняя версия, которую поддерживает appx - 22000. Обновляться не буду, поэтому ищу обходной путь.

    Прога может использовать апихи, которых нет в Десятке, так что не ожидайте что она заработает, даже если вам удастся её поставить

    так как при регистрации расширения windows.appExecutionAlias произошла следующая ошибка

    Ну так снесите из манифеста установку алиаса SnippingTool, раз уж взялись редактировать, неужто он вам так нужен? Не думаю.
    Ответ написан
  • Какую build system для C++ стоит изучать в 2023?

    Второй вопрос: минусы cmake

    Чёрт ногу сломит. Но что поделаешь, сегодня это считай стандарт.

    Точее сказать - пользоваться можно, и даже с удовольствием, но до сих пор новичкам приходится выискивать туториалы по тому как делать "правильно" и "современно". В официальных доках сложно (если вообще возможно) найти best practices, поэтому появляются такие проекты и учебники, как An Introduction to Modern CMake. Ещё полезно чейнджлоги смотреть, а то ещё два года пройдёт, пока узнаешь о появлении новых команд для работы с публичными хедерами библиотек.

    Можно ещё Meson глянуть, перспективная штука. Тот же Conan активно вкладывается в её поддержку.
    Ответ написан
    Комментировать
  • Возможно ли изменить прошлое в Git (или подобном) с передачей изменений в настоящее?

    А возможно ли внести изменения в прошлом так, чтобы они перешли в каждого потомка(коммиты, ветки) и в последнем сейве проявились последствия?

    Можно не "внести изменения в прошлом", а как вы и сказали, создать "параллельную реальность". Все команды Git, про которые мы говорим, что они "редактируют историю" на самом деле ничего не редактируют в истории НИКОГДА, а лишь создают НОВУЮ историю ("параллельную реальность") на основе существующей. Например, команда rebase именно так и делает. Существуют инструменты, которые позволяют выполнять гораздо более сложные операции с историей - менять содержимое blob и tree объектов, менять дату/почту в коммитах и вообще всё что угодно, например CLI-инструмент и неплохая Python-библиотека в одном лице - git-filter-repo.

    Если нет, то как делается чтобы прога, имеющая издания с разными степенями урезанности (nonlimit, premium, home, ...) могла эволюционировать лишь только главным изданием, и не приходилось каждый раз всё заново урезать вручную?

    Офигенно неожиданное продолжение вопроса. А при чём тут это вообще? Это делается например условной компиляцией (причём препроцессор можно присобачить и сбоку, не обязательно он должен быть в основном ЯП), плагинами и прочими техниками, при чём тут вообще Git и сохранения в играх?
    Ответ написан
    Комментировать
  • Как разрабатывать красивые интерфейсы в Desktop-приложениях?

    Вас какая платформа интересует вообще? И как конкретно ДЛЯ ВАС коррелирует красивость с нативностью для платформы? Для меня например это важно, но может для вас - нет.

    Для дотнета есть Avalonia UI и Uno Platform, это если кроссплатформенно. Если нативно под Винду, то актуальной технологией считается WinUI 3 (статейка на Хабре).

    HTML/CSS в десктопных приложениях я люто ненавижу, поэтому про Electron/Tauri ищите сами :D Не буду подталкивать ещё одного человека к такому технологическому решению.
    Ответ написан
    Комментировать
  • Как написать на с++ метод и экспортировать его в c# заинлайнить, и можно ли _fastcall его сделать???

    Nipheris
    @Nipheris Куратор тега C++
    Экспортированная функция работает в 4 раза медленнее.

    Разумеется, у вас всё время уходит на накладные расходы на PInvoke. Это полное безумие - выносить сложение чисел вообще в функцию, а тем более ещё и делать вызовом между языками. А PInvoke - это вам не InternalCall

    ВОПРОС как сделать функцию sum в с++ что бы она работала так же быстро как и sum в c# коде? Как ее заинлайнить

    Методы Math реализованы в самом рантайме и вызываются без маршалинга с помощью InternalCall. Не думаю, что это возможно для вашей функции.

    К примеру, если хочу c# библиотеку сделать, то просто добавили ссылку и забыл о всем. А когда добавляю так же ссылку на dll от с++ проекта, то ноль реакции.

    Потому что dll которые получились из C# - это дотнетовские сборки, которые только прикидываются Portable Executable, а вот то, что компилится из C++ - это действительно Portable Executable, и ничего дотнетовского там нет (если конечно это обычный C++ DLL-проект, а не C++/CLI).

    Кстати еще вопрос, как библиотеку с++ подключать к проекту, почему DllImport не находит, если указать ссылку на проект,

    Вам нужно настроить копирование C++ DLL в выходную директорию проекта, рядом с вашей дотнет-сборкой, в которой находится DllImport
    Ответ написан
    Комментировать
  • Как обойти все исполнения программы?

    Nipheris
    @Nipheris Куратор тега C++
    т.е. чтобы готовая программа гарантировано была без гонок данных.

    для этого лучше использовать язык программирования с отсутствием гонок данных, например Rust (без unsafe).
    А так то что вы хотите от C++ - это к сожалению аналог проблемы останова.

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

    Вот именно, что нужно программы ПИСАТЬ так, чтобы не было гонок, а не пытаться проверять непонятно как написанное.
    Ответ написан
  • Как сделать полноценную рабочую станцию?

    Коммерческие решения такой задачи называются Virtual Desktop Infrastructure (VDI), можете так и гуглить. У многих крупных вендоров это есть - Citrix, Microsoft, VMWare. Машина, на которой собственно весь софт запускается обычно называется сервером виртуальных рабочих столов.

    Такие решения как правило требуют соответствующей поддержки от железа - как отметил Василий Банников , по-хорошему вам нужна видяха с поддержкой SR-IOV - эта такая фишка у устройства, когда оно умеет распадаться на несколько виртуальных устройств - примерно как сами CPU умеют делать последние 15 лет, только для PCI-e устройств. Это например серия Quadro у нвидии и карточки с технологией MxGPU у AMD. Но это весьма дорогое удовольствие, вы удивитесь стоимости таких видеокарт, т.к. они обычно рассчитаны на корпоративный сектор, где можно снять побольше бабла.

    С другой стороны, PCI passtrough уже более-менее нормально работает для обычных потребительских видях, я например пишу этот текст на Виндовой виртуалке в Proxmox, в которую проброшена целиком видяха. Но честно говоря я не пробовал собирать такое решение для работы по сети с потребительскими карточками. PCI passtrough подразумевает, что карточка пробрасывается в виртуалку целиком, поэтому вам нужно по одной карточке на каждую виртуалку.

    Была ещё на свете такая прикольная штука как Windows Multipoint Server, но кажется она умерла.
    Ответ написан
    Комментировать
  • Не получается подключить библиотеку luabridge выдает ошибки, что делать?

    Nipheris
    @Nipheris Куратор тега C++
    1. Откуда вы скачали библиотеку, просто клонировали репозиторий?
    2. Откуда взялись те include-пути, которые у вас перечислены? Почему они выглядят именно так?
    3. Почему в список include-путей попал путь с "/detail"?
    4. Почему include-пути настроены так, что вы делаете #include <LuaBridge.h>, а не #include <LuaBridge/LuaBridge.h>? В доках пишут именно про второй вариант.
    Ответ написан
    Комментировать
  • Что такое Docker простыми словами?

    Docker, как и любая другая технология контейнеризации (а их довольно много, и существуют они давно, например jails во FreeBSD или workload partitions в AIX), это технология создания множества пользовательских пространств (их ещё называют userland) поверх одного экземпляра ядра.

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

    Вышеуказанные сервисы предоставляются самим ядром - т.е. ядро как раз и умеет делить СВОИ ресурсы на группы (а задача ядра ОС как раз и заключается в том, чтобы выставить пользователю такие "виртуальные" ресурсы, как ФС, процесс, TCP-подключение и т.д., обернув собой железячные ресурсы, такие как диски, сетевая карта и т.д.). Поверх этих возможностей ядра с помощью таких решений как Docker уже строится всякая инфраструктура - упаковка файловой системы в "снимок", называемый "образом", виртуальные сети между контейнерами и т.д. и т.п.

    Вам важно понять базовые принципы, и не путать себя другими ответами, из того что сейчас есть только DollyPapper написал по делу. Остальные пишут про применение, а не про смысл технологии.
    Ответ написан
    Комментировать
  • Где можно прочитать про всю суть ЯПов под капотом?

    Все советуют вам Книгу Дракона. Книга, безусловно, отличная и классическая, но я что-то по вашему вопросу сомневаюсь, что вам нужно именно это - реализация и механика/синтаксис языков. Попробуйте Programming Language Pragmatics - мне кажется там ответы на ваши вопросы.
    Ответ написан
    Комментировать
  • Ошибка при компиляции файла в cmake, mingw и wxwidgets?

    Попробуйте не использовать кириллические символы в пути к проекту, это может приводить к проблемам. Равно как и пробелы в путях. И того и другого желательно избегать.
    Ответ написан
    Комментировать
  • В чём отличие многопоточности и асинхронности в контексте .NET C#?

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

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

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

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

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

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

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

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

    В C++ и C# есть классовое ООП, соединённое с номинативной стратегией типизации. В JS и Lua есть прототипное ООП, которое в TypeScript приправляется структурной типизацией. В Rust по сути нет наследования, но есть полиморфизм. В Ruby есть концепция метаклассов, которая не особо известна в других языках. Все делают по-своему, говорить, что в каком-то языке "истинное" ООП - глупо, потому что об этом нет договорённости.

    Исторически есть две крупные "школы" ООП - школа языка SIMULA и школа языка Smalltalk, вот можете почитать об этом. К этим школам добавляется ещё прототипный подход, который впервые появился в языке Self, джаваскрипт тут Америку миру не открыл. История языков программирования вообще очень длинная и интересная штука, большинство идей в современных промышленных языках были изобретены значительно ранее в других языках, экспериментальных или академических.

    JS как язык отвратителен не потому, что в нём "ненастоящее" ООП, а совсем по другим причинам.
    с вашей идееологией интересно(с которой я согласен), как вы относитесь к тсу?

    Вы спросили не у меня, но позволю себе ответить - TypeScript это лучшее, что было с JS, потому что он делает программирование на JS возможным. Обратите внимание - с точки зрения ООП тайпскрипт ничего нового не вносит, так что на мой взгляд дело вообще не в ООП. А например в том, что в JS никак бл..ь не доедут записи. Как можно в 2023 году программировать на языке без таких элементарных вещей? За что нам такое наказание?
    Ответ написан
  • Не устанавливается libpqxx на Windows через vcpkg/conan?

    Nipheris
    @Nipheris Куратор тега C++
    У Конана всё нормально на Винде (т.е. действительно остаётся вопрос только с самой библиотекой), поэтому давайте разбираться.

    Для начала выяснить бы, что у вас за settings выставлены, что Конан пытается вам собрать libpq, а не взять один из готовых бинарных пакетов для Винды. Пожалуйста, просмотрите список доступных бинарей и скажите, подходит ли вам какой-либо.

    После этого желательно ещё увидеть ваши профили, с которыми собираете. Где-то кроется проблема в выбранной конфигурации, это 95% проблем с Конаном у новичков (да что там с Конаном, вообще с C++).
    Ответ написан
  • Актуальна ли на данный момент Desktop разработка на C# WPF?

    Моё мнение - десктоп-разработка по-прежнему актуальна, но стала более нишевой.
    Кажется, что её совсем мало - но это не потому, что прям десктоп вообще никто не пишет, а потому что веба пишут намного-намного больше.

    Почему веба сейчас так много?
    Потому что веб дал возможность доставлять на клиента исполняемую логику очень быстро. Не нужно ничего ставить, просто заходишь на сайт. При этом, обеспечивается ПРИЕМЛЕМЫЙ уровень user experience. Это всё ещё и кроссплатформенно.
    Вот на мобилках веб во многих случаях не даёт столь же хороший UX, поэтому там пышным цветом цветёт разработка "нативных" приложений. Забавно, не так ли? Ну и на мобилках изначально были созданы каналы быстрой доставки приложений - Магазины. Очень важно, что это было сделано изначально, и к этому все сразу привыкли.

    Так что там с десктопом?
    Я считаю, он остался для того софта, который обычно относят к категории проф. инструментов (тут согласен с Dmitry Roo ). Тяжелые редакторы вроде After Effects, CAD-системы, ну и тулы для разработчиков. Если так подумать, десктопный софт и раньше был в основном для специалистов и профессионалов, как и вообще стационарный компьютер. Просто раньше те, кто сейчас читает новости на смартфоне, читали их в бумажной газете, а пиццу заказывали по телефону.

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

    А что с WPF?
    Конечно именно эта технология потеряла в популярности. Основная причина очевидна - отсутствие кросс-платформенности. Да, Винда все ещё имеет сильные позиции на десктопе, но всё-таки уже перестала быть нерушимой. Одних макодрочеровюзеров вон сколько. Линукс уже не такой страшный (хотя конечно это все ещё 1-2% от всего десктопа). Да и вообще, когда на вебе платформа по сути одна - это Хром (я обожаю Firefox, но такими темпами через лет 10 он точно сдохнет, как это не прискорбно), то видя это десктоп-разработчики жутко бомбят (я в том числе) и требуют себе такого же удовольствия. Поэтому вместо WPF нынче интересны Avalonia и Platform UNO (это если на дотнете).

    С точки зрения Винды есть WinUI, но это опять таки платформозависимая есть. Она для тех, кому интересна только Винда, или у кого есть бабки поддерживать нативно все нужные платформы.
    Ну и соглашусь с ответом Василий Банников , он хорошо описал границы десктопа на сегодняшний день.

    А вообще, я жду когда WebAssembly наберёт ещё больше силы, и границы между вебом и десктопом просто сотрутся. Нет ничего такого в HTML и тем более JS, чтобы на них всё на свете переписывать. Это делается только по одной причине - см. выше про скорость доставки логики на машину клиента. И текущая популярность веба как платформы для приложений (именно платформы, а не информационной сети) - это по причине того, что Гугол всех победил производительностью браузера, и все подсели на Хром как на платформу - дешёво, доставляется ОЧЕНЬ быстро, работает ДОСТАТОЧНО быстро, покрыты сразу все устройства.
    Ответ написан
    2 комментария
  • Какой вариант организации домашней виртуализации выбрать?

    Использую дома Proxmox, в том числе с виртуалками на Винде с пробросом видяхи. Планирую прикупить пау дисочков и ZFS-зеркало сделать для файлопомойки. Пока всё нравится, использую чуть больше двух лет.
    Ответ написан
  • Как используется TLS в HttpClient?

    если в нём нет( мне так кажется, я не знаю ) корневых сертификатов

    Что значит нет? Корневые сертификаты находятся в системном хранилище. На Винде это спец-хранилище со своим API (его смотрят с помощью certmgr.msc), на Линуксе дотнет использует OpenSSL, ну соотв-но и его логику поиска.
    Ответ написан
    3 комментария
  • Как правильно просить повышения зарплаты?

    Нет желания блефовать увольнением и жирным оффером из другой компании, так как текущая меня более чем устраивает, да и на данный момент опасно угрожать уходом начальству, так как it пузырь уже сдулся

    Ну так а вы не блефуйте, а действительно получите оффер и говорите по существу. Разумеется уважающий себя разработчик не будет махать выдуманным оффером - он реально его получит и будет открыто говорить с текущим работодателем. При этом разумно скинуть какой-то процент от зарплаты в оффере, ну мол "я готов получать тут чуть меньше, т.к. я тоже не хочу менять сейчас работу". Вот и вся история. Либо признайтесь себе, что у вас и так всё неплохо и вам платят подходящие деньги. Перейдите от теории к действию.
    Ответ написан
    Комментировать