• Create products with color variants?

    Всё дело в понимании предметной области.

    Выходит, что "продукт" в вашем случае - это не один товар, а множество товаров с подобными характеристиками. Вы можете называть "продуктом" то, что выводите на основной странице, а "товаром" - конкретную разновидность продукта, и именно с "товаром" вести ценнобразование, учёт остатков и прочее.

    Ну а дальше всё по классике - например, можно сделать составной первичый ключ у товара, частью которого является ключ продукта. Тут уже всё зависит от того, какая у вас СУБД и насколько в ней удобно работать с нормальными ключами.

    Разумеется, это только один из вариантов решения. И только один из аспектов, т.к. встанет вопрос - как хранить различные поля в описании, немного разные в разных продуктах? Ну и прочее.
    Ответ написан
  • Как ускорить отрисовку изображения на picturebox.image и прочих элементов?

    А вы, показывая одно изображение, сразу грузите следующее (может даже парочку). Не важно - из сети, или с диска, идея одна и та же.

    Попробуйте полистать в виндовом средстве просмотра БЫСТРО - возможно заметите задержку.
    А вообще, раз речь идёт о сети, то у вас отличная возможность ознакомиться с кэшированием.
    Ответ написан
    Комментировать
  • Баг тайпчекинга параметров функции?

    Отличный вопрос.

    Strict function types:
    The stricter checking applies to all function types, except those originating in method or constructor declarations. Methods are excluded specifically to ensure generic classes and interfaces (such as Array) continue to mostly relate covariantly.

    При замене методов на обычные функции сразу появляется ошибка:
    type AFnc = (p: A) => void
    
    function foo(p: A): void { }
    function bar(p: AB): void { }
    
    const f: AFnc = foo;
    const b: AFnc = bar; // не компилируется с сообщением о том, что AB требует ещё и свойство b
    Ответ написан
    3 комментария
  • Как обработать такое исключение с помощью TS?

    const arr1 : [Item, ...Item[]] = [{ title: 'a' }] // OK
    const arr2 : [Item, ...Item[]] = [] // Не скомпилируется

    Playground

    Используя такой tuple-тип вместо обычного массива, вы можете ПОТРЕБОВАТЬ наличия некоторого количества элементов в начале массива.
    Ответ написан
  • Почему конструктор Class ( Class other) { } не может принимать объект своего типа по значению?

    Nipheris
    @Nipheris Куратор тега C++
    Потому что чтобы передать какой-либо агрумент по значению, его нужно скопировать. Чтобы скопировать аргумент, который является объектом класса, нужно вызвать конструктор копирования (неважно, сгенерирован ли он автоматически или вручную написан).

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

    Вроде должно быть понятно.
    Ответ написан
    2 комментария
  • Как получить схему базы Postgres через Select?

    Information Schema (стандартная для всех SQL-баз)
    System Catalogs (специфично для постгреса)
    Ответ написан
    Комментировать
  • Почему app.Use вызывается несколько раз(ASP.NET Core)?

    Nipheris
    @Nipheris Куратор тега C#
    А сколько запросов летит в Хроме в табе Network? Точно один? Думаю что два. Ставлю на favicon.
    Ответ написан
    9 комментариев
  • Как указать сторонние библиотеки в своём проекте на Github?

    Conan. Рекомендую. В ConanCenter правда ещё нет ffmpeg, но можно его отдельно через билд-систему затянуть, или поискать Conan-рецепты в инете.

    А если не годится, ну так это ж C++, тут боль с управлением зависимостями. Без конана/vcpkg у вас два нормальных варианта:
    • подключение отдельно собранных библиотек через CMake (find_package сотоварищи, самый нормальный вариант);
    • вендоринг (лучше через git-сабмодули). Библиотеки собираете вместе с самим проектом (если скажете что у вас за система сборки, найду примеры).


    Может есть какой-то скрипт по автоматическому скачиванию и правильному добавлению при компиляции или можно просто накидать уже собранные библиотеки и не париться

    Для решения этих задач используют языковые пакетные менеджеры. Точнее, связку пакетного менеджера и сборочной системы. Два самых популярных ПМ в C++ я указал выше.
    Ответ написан
  • Что за странная многопоточность в tarantool, что он не держит нагрузку?

    https://www.tarantool.io/en/doc/latest/book/box/at...

    Cooperative multitasking means: unless a running fiber deliberately yields control, it is not preempted by some other fiber. But a running fiber will deliberately yield when it encounters a “yield point”: a transaction commit, an operating system call, or an explicit “yield” request.

    Transactions in Tarantool occur in fibers on a single thread. That is why Tarantool has a guarantee of execution atomicity.

    Слышали когда-нибудь про кооперативную многозадачность? Это как раз про "Но там все же есть какие-то fiber". Предлагаю изучить, наверняка ответ кроется там.

    И чем атомарнее хранимки, тем быстрее все работает

    Более чем логичный результат, это всё равно что делать yield в нужных местах в одной большой хранимке.
    Ответ написан
    2 комментария
  • Как найти хост, созданный CreateHostBuilder(args).Build()?

    Nipheris
    @Nipheris Куратор тега C#
    Поразбирайтесь с временем жизни хоста: Manage the host lifetime.

    И попробуйте запустить его с помощью, например, Run.
    Ответ написан
    Комментировать
  • Как сохранить JSON в MongoDB с сохранением связей?

    Ну или, может, какие-то другие варианты есть?

    Есть. Использовать каждую СУБД по назначению и не пытаться запихнуть реляционные данные в документную БД.

    А вообще, наверное стоит просто для независимых сущностей генерировать новые ObjectId, и протаскивать их во все зависимые сущности вместо соответствующих id. Ну т.е. не нужно пытаться решать задачу в лоб, пытаясь сконвертировать один id в другой, вам нужно сконвертировать СВЯЗЬ, а не id. Чтобы сконвертировать связь, вам не нужен оригинальный id, вам важно соединить с помощью нового ObjectId те же самые сущности, что были соединены в реляционной базе оригинальным id.
    Ответ написан
    1 комментарий
  • Как сгенерить интерактивную OpenAPI документацию?

    Такую штуку на разных технологических стеках часто можно выставить с помощью какого-нибудь middleware, например в связке с ASP.NET Core с задачей хорошо справляется Swashbuckle:
    app.UseSwaggerUI(c =>
    {
        c.SwaggerEndpoint("v1/swagger.json", "My API V1");
    });


    Ну а если вам нужно оформить исключительно ваше yaml-описание - ну тогда задача сводится к приручению Swagger UI.
    Ответ написан
    Комментировать
  • Unable to load DLL (Module could not be found HRESULT: 0x8007007E)?

    Nipheris
    @Nipheris Куратор тега C#
    or one of its dependencies

    А своих зависимостей у baselib.dll случаем нет? Ну-ка, показывайте что видно в Dependencies.
    И да, библиотеку в любом случае стоит положить рядом с exe, можно настроить билд-правило для этого.
    Ответ написан
    Комментировать
  • Как утроена файловая система ВКонтакте?

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

    Это предположение в корне неверно. Большинство веб-фреймворков сейчас позволяют настраивать механизмы обработки URL по шаблонам, и большинство страниц сайта генерируются, а не хранятся на диске готовыми.

    Почитайте как вообще сейчас устроен веб-бэкенд у большинства сайтов. По сути это всё исполняющиеся на сервере программы (а на крупных сайтах - целый комплекс программ, расположенных на многих серверах и взаимодействующих между собой), которые могут сделать кучу разных действий (сходить в базу данных, переработать полученные от пользователя входные данные, прочитать файлы на диске, сделать запросы к другим сервисам) и в конечном счёте генерируют ответ в виде HTML-страницы, или же в машиночитаемом формате, который затем обрабатывается на клиентской стороне, например в формате JSON или XML.

    Если очень-очень сильно упростить, то задача программиста, специализирующегося на backend-разработке - писать программы, которые принимают HTTP-запросы, обрабатывают их, и генерируют ответ в виде HTML/JSON/ещё чего-нибудь. Другое дело, что "обработка запроса" может быть очень сложной операцией и состоять из сотен более мелких.
    Ответ написан
    Комментировать
  • Как повысить базовые знаний архитектуры?

    Думаю стоит попробовать поискать решение вашей проблемы в социально-процессной плоскости.

    На работе за 2 года поднял скилы на хороший уровень, спокойно работаю с нативным js + jquery. Но сам понимая что стагнирую плотно сел за пет проекты

    А что говорят на этот счёт люди, принимающие решение в вашей веб-студии? Если никто не использует инструменты, которые вы считаете эффективными, почему бы вам не быть первым?

    Совет может быть немножко вредный, раз вы только начинающий в реакте и вообще в разработке, но вреден он будет скорее для веб-студии, а не для вас.
    Ответ написан
  • Как читать из stdout другого процесса в linux api?

    Capture the output of a child process in C

    Думаю, то же самое можно проделать и для stdin.
    Ответ написан
    Комментировать
  • Существуют ли безсхемные реляционные базы данных?

    Реляционная база данных — база данных, основанная на реляционной модели данных.

    Реляционная модель данных (РМД) — логическая модель данных, прикладная теория построения баз данных, которая является приложением к задачам обработки данных таких разделов математики, как теория множеств и логика первого порядка.

    Отношение — фундаментальное понятие реляционной модели данных. По этой причине модель и называется реляционной (от англ. relation — «отношение»).

    Пусть дана совокупность типов данных T1, T2, …, Tn, называемых также доменами, не обязательно различных. Тогда n-арным отношением R, или отношением R степени n называют подмножество декартовa произведения множеств T1, T2, …, Tn.
    Отношение R состоит из заголовка (схемы) и тела. Заголовок представляет собой множество атрибутов (именованных вхождений домена в заголовок отношения), а тело — множество кортежей, соответствующих заголовку.

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

    Best-practice определяется технологией доставки и установки, и некоторыми системными соглашениями. В Microsoft Docs полно инфы об этом, вот например на странице Windows Installer: https://docs.microsoft.com/en-us/windows/win32/msi...

    MSIX-пакеты ставятся в другое место, а контейнеризованные приложения хранят данные немного в другой раскладке. Вот короткий обзор: https://docs.microsoft.com/en-us/windows/msix/desk...

    Разбирайтесь с конкретной технологией (MSI vs MSIX), и всё найдете. И умоляю вас, не пытайтесь писать собственный установщик и самостоятельно копировать файлы в Program Files или куда там вы собрались. Ничем хорошим это не заканчивается, плюс убьёте кучу времени зря (ну если конечно вы не горите особым желанием это сделать, только тогда не показывайте никому).
    Ответ написан
    Комментировать
  • Ссылка на неразрешённый внешний символ, что это и как исправить?

    Nipheris
    @Nipheris Куратор тега C++
    Я думаю, что вы создали консольное приложение вместо оконного. Можете пересоздать проект и выбрать Win32 Application в качестве шаблона, и поместить в него ваш код (рекомендую этот вариант), либо попробовать поменять подсистему с Console на Windows в настройках линковщика (скорее всего, ещё и точку входа нужно будет прописать вручну.).
    Ответ написан
    2 комментария
  • Почему скомпилированный "Hello World", на Rust занимает на диске 10 Мегабайт?

    Почему, если я напишу проект с использованием какой-то внешней библиотеки, то она будет скачана и скомпилирована, а затем в другом проекте мне понадобится таже библиотека, и в итоге она будет опять скачена и скомпилина, и в итоге на моем диске валяются проекты по 5+ GB.

    Т.е. вы хотите, чтобы Rust/Cargo тем или иным образом интегрировались с системным пакетным менеджером? Тогда предлагаю почитать вот эту статью: https://habr.com/ru/post/433052/
    Ответ написан
    Комментировать