• Что такое 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 пузырь уже сдулся

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

    Nipheris
    @Nipheris Куратор тега C++
    https://learn.microsoft.com/en-us/cpp/windows/depl... - нужно изучить вот эту статью и выбрать для себя подходящую стратегию. Все остальные ответы здесь как раз выбирают одну из них.

    Вот более полный ответ на точно такой же вопрос, тоже с участием SFML: https://qna.habr.com/q/1178154#answer_2198102
    Ответ написан
  • Как подключить boost в проект CMake Project в Visual Studio 2022?

    Nipheris
    @Nipheris Куратор тега C++
    то ничего не получается

    Это не описание проблемы. Пожалуйста, приведите в вопросе вывод отработавшей команды find_package для начала.
    Это во-первых. Во-вторых - у вас буст скорее всего не ищется как надо, но вы на это "забиваете", засунув всю логику в if (Boost_FOUND) - ну т.е. если буст НЕ найден, то ничего не делать. Даже add_executable не будет выполнен. Я понимаю что вы где-то взяли какой-то пример, но надо думать и самому, точнее сначала разбираться, а потом уже будет над чем подумать.

    И да, использование include_directories и target_link_libraries в режиме передачи lib-файлов - это допотопный подход. ЕМНИП, Find-модуль для Буста создаёт вполне себе человеческие imported-таргеты, советую использовать их.
    Ответ написан
  • Кто подскажет, как у созданного программно TextBox вытащить значения C# WPF?

    Nipheris
    @Nipheris Куратор тега C#
    textblock1.Text сгодится?
    Ответ написан
    Комментировать
  • Ошибка "Can't write CLR type System.String with handler type Int32Handler", что делать?

    Nipheris
    @Nipheris Куратор тега C#
    drschool_Data.command.Parameters.Add(new NpgsqlParameter("value4", NpgsqlDbType.Integer)); // тут Integer
    ...
    string selectedPlace = place.SelectedItem.ToString();
    drschool_Data.command.Parameters[3].Value = selectedPlace; // тут String
    ...
    Ответ написан
    1 комментарий
  • Как в .js запустить функцию из файла .cjs?

    С таким func.cjs у меня всё работает:
    function say(x){
        console.log(x)
    }
    
    exports.say = say;

    Нода 18.15
    Ответ написан
    2 комментария
  • Как лучше вносить изменения в стороннюю библиотеку С?

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

    Для меньшей связности между фронтом и бэком я бы вообще посоветовал протянуть всё через OpenAPI (если конечно у вас HTTP API), и по нему генерить типы как минимум для фронта, но это потребует некоторых дополнительных усилий.
    Иначе можете при релизе бэка собирать NPM-пакет с d.ts-ками и выкатывать его в локальную NPM-репу, а клиент соотв-но будет себе этот пакет ставить. Насколько это вам подходит - не могу судить, мало информации.
    Ответ написан
    Комментировать
  • Есть ли программы для поиска недостающих файлов (фотографий) при сравнении разных папок с похожим содержанием?

    Beyond Compare - оно того стоит, поверьте. Решаю уже более 6 лет такие же задачи, как и вы - что-то куда-то скопировал по-быстрому, а потом поди вспомни)

    Об этом тут, кстати, регулярно спрашивают.
    Ответ написан
    Комментировать