Последние сообщения

Автотрейд
Автотрейд
  • Сообщений: 18
  • Последний визит: 24 февраля 2025 в 11:27

Если вы создадите индекс на

table(col1, col2)
, и ты делаешь
WHERE col1 = 'something' AND col2 = 'something'
вы будете использовать индекс; это будет очень избирательно. То же самое с
WHERE col1 = 'something'

Но

WHERE col1 IS NOT NULL
вам придется протестировать.
WHERE col1 IS NULL
будет сканировать таблицу, поскольку в этой ситуации индекс вовсе не является избирательным.

Обновление индекса с помощью INSERT или UPDATE требует небольших накладных расходов. Это не может быть УНИКАЛЬНЫЙ индекс, поэтому рабочая нагрузка немного меньше. Но в большинстве случаев об этом не стоит беспокоиться, если только ваша рабочая нагрузка INSERT/UPDATE не намного тяжелее рабочей нагрузки SELECT. Если вы можете сделать столбцы

COLLATE latin1_bin
вы получите максимально легкие индексы. Но никаких смайлов, китайских иероглифов или нечувствительности к регистру.

Редактировалось: 1 раз (Последний: 19 января 2025 в 22:45)
Автотрейд
Автотрейд
  • Сообщений: 18
  • Последний визит: 24 февраля 2025 в 11:27
Всё зависит от ваших целей. Если вы стремитесь создать MVP (минимально жизнеспособный продукт), то вам подойдёт CS Cart. Это быстро и недорого.

Если же вы хотите настоящий, эффективно работающий маркетплейс, то лучше выбрать ДСТ. Однако стоит помнить, что никакой движок не может заменить организационную работу. Многие начинающие предприниматели не понимают этого и не учитывают, когда открывают свой бизнес.

Кроме выбора CMS-системы, вам понадобятся качественный бизнес-план, финансовые средства, товары и поставщики, а также соответствующие документы.
Редактировалось: 1 раз (Последний: 19 января 2025 в 16:17)
Автотрейд
Автотрейд
  • Сообщений: 18
  • Последний визит: 24 февраля 2025 в 11:27
Вы можете использовать тип объединения, который позволяет enforceAdvancedOrder быть логическим значением, если enableAdvancedFeatures установлено на true и в противном случае требует, чтобы enforceAdvancedOrder является неопределенным.

Вот как:
type Options = ({
    settings?: Settings<true>;
    enforceAdvancedOrder?: boolean;
} | {
    settings?: Settings<false | undefined>;
    enforceAdvancedOrder?: never;
});
 
type Settings<B extends boolean | undefined = boolean> = B extends undefined ? {
    enableAdvancedFeature?: B;
} : {
    enableAdvancedFeature: B;
};

Вот несколько образцов для проверки:
const validOption1: Options = {
    settings: { enableAdvancedFeature: true },
    enforceAdvancedOrder: true,
};
 
const validOption2: Options = {
    settings: { enableAdvancedFeature: false },
    enforceAdvancedOrder: undefined, // enforceAdvancedOrder should be undefined
};
 
const validOption3: Options = {
    settings: {},
    enforceAdvancedOrder: undefined, // enforceAdvancedOrder should be undefined
};
 
const invalidOption: Options = {
    settings: { enableAdvancedFeature: false },
    enforceAdvancedOrder: true, // This should cause a TypeScript error
};
 
const invalidOption2: Options = {
    settings: {},
    enforceAdvancedOrder: true, // This should cause a TypeScript error
};
Владимир Соколов
Владимир Соколов
  • Сообщений: 31
  • Последний визит: 25 марта 2025 в 21:57
Просто так:
type ConditionalOption =
    | { enforceAdvancedOrder?: boolean, settings?: { enableAdvancedFeature?: true } }
    | { enforceAdvancedOrder?: undefined, settings?: { enableAdvancedFeature?: false | undefined } }

Примеры:
let a: ConditionalOption = {
    settings: {
        enableAdvancedFeature: true
    },
    enforceAdvancedOrder: true
} // okay
 
let b: ConditionalOption = {
    settings: {
        enableAdvancedFeature: false
    },
    enforceAdvancedOrder: true
} // throws error
 
let c: ConditionalOption = {
    settings: {
        enableAdvancedFeature: false
    },
    enforceAdvancedOrder: undefined
} // okay
Технопарк Нобель
Технопарк Нобель
  • Сообщений: 12
  • Последний визит: 31 марта 2025 в 17:13
Добавьте приведенный ниже код в свой CSS-файл, чтобы импортировать веб-шрифты Google.
@import url(https://fonts.googleapis.com/css?family=Open+Sans);

Замените значение параметра Open+Sans на имя вашего шрифта.

Ваш CSS-файл должен выглядеть так:
@import url(https://fonts.googleapis.com/css?family=Open+Sans);
 
body{
   font-family: 'Open Sans',serif;
}


DST Global
DST Global
  • Сообщений: 19
  • Последний визит: 7 мая 2025 в 18:07
Используйте @import метод:
@import url('https://fonts.googleapis.com/css?family=Open+Sans&display=swap');

Очевидно, «Открытый Санс» ( Open+Sans) — это импортируемый шрифт. Так что замените его на свой. Если имя шрифта состоит из нескольких слов, закодируйте его по URL-адресу, добавив + подпишитесь между каждым словом, как это сделал я.

Обязательно поместите @import в самом верху вашего CSS, перед любыми правилами.

Google Fonts может автоматически генерировать @import директива для вас. Выбрав шрифт, нажмите кнопку (+) значок рядом с ним. В левом нижнем углу появится контейнер под названием «Выбрано 1 семейство». Нажмите на нее, и она расширится. Используйте вкладку «Настроить», чтобы выбрать параметры, а затем вернитесь к «Встроить» и нажмите «@import» в разделе «Встроить шрифт». Скопируйте CSS между
Технопарк Нобель
Технопарк Нобель
  • Сообщений: 12
  • Последний визит: 31 марта 2025 в 17:13

По моему мнению, поработав с несколькими разными системами, создание маркетплейса на DST Маркетплейс имеет несколько ключевых преимуществ по сравнению с другими популярными платформами, такими как CS Cart и 1С-Битрикс: 1. Битрикс это все таки Интернет-магазин, а маркетплейс это лишь расширение т.е. отдельный модуль, что конечно сразу усложняет всю ситуацию с дальнейшим масштабированием. 2. С Agora не работал, так что тут ничего сказать не могу. 3. На CS Cart нам не хватило функционала, даже купив самую дорогую лицензию ее оказалось меньше чем в базовой DST Маркетплейс. 4. Также попробовали и WordPress с модулем WooCommerce, оказалась вообще игрушкой, нет ни ЛК поставщика, не серьезных инструментов аналитики, ни системы уведомлений, да вообще ничего. Так что если рассматривать альтернативы, то сейчас на рынке 2 системы для запуска своего маркетплейса это CS Cart и DST Маркетплейс, мы выбрали последнее.

Ну а главные преимущества это конечно огромное количество разного функционала, просто сравните ЛК клиента и ЛК поставщика в DST Маркетплейс и сразу поймете в чем разница.

Редактировалось: 1 раз (Последний: 22 января 2025 в 22:43)
Автотрейд
Автотрейд
  • Сообщений: 18
  • Последний визит: 24 февраля 2025 в 11:27

Автотрейд, спасибо за ответ, а не подскажите может у Вас какая то расширенная лицензия — Энтерпрайз, у меня просто лицензия Премиум, а также если не секрет во сколько обходиться содержание сервера?


Владимир Соколов


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

По поводу сервера, то мы платили примерно 30-40 т.р. в месяц, но затем заказали работы по оптимизации сервера и снизили расходы до 20-25 т.р. в месяц, что при таком объеме считаем очень хорошим показателем.
Редактировалось: 1 раз (Последний: 19 января 2025 в 10:27)
Владимир Соколов
Владимир Соколов
  • Сообщений: 31
  • Последний визит: 25 марта 2025 в 21:57
Автотрейд, спасибо за ответ, а не подскажите может у Вас какая то расширенная лицензия — Энтерпрайз, у меня просто лицензия Премиум, а также если не секрет во сколько обходиться содержание сервера?
Автотрейд
Автотрейд
  • Сообщений: 18
  • Последний визит: 24 февраля 2025 в 11:27
Ну 200К это не так много, у нас маркетплейс автозапчастей и уже более 2 млн. позиций, все работает и летает отлично, единственное что нужно это увеличивать и оптимизировать возможности сервера чтоб ежемесячно меньше выходило платить, так что тут больше не от движка зависит а от конфигурации Вашего сервера
Технопарк Нобель
Технопарк Нобель
  • Сообщений: 12
  • Последний визит: 31 марта 2025 в 17:13
У нас VPS на adminvps.ru 5, отличная техподдержка, отвечают мгновенно, помогают решить проблемы, даже те которые по сути лежат на плечах администратора VPS.
Редактировалось: 1 раз (Последний: 19 января 2025 в 09:45)
DST Global
DST Global
  • Сообщений: 19
  • Последний визит: 7 мая 2025 в 18:07
Хостинг тут совершенно не причем, поддержка и загрузка формата WebP у Вас должна быть в панели управления в разделе настройки, в пункте «Список разрешенных типов файлов для загрузки», там в поле у Вас будет введены разрешенные форматы: xml, rar, zip, txt, jpg, gif, jpeg, png, doc, docx, xls, xlsx, pdf, txt, 7zip, rar, xlsx
добавьте к ним WebP и сохраните настройки
Владимир Соколов
Владимир Соколов
  • Сообщений: 31
  • Последний визит: 25 марта 2025 в 21:57
Если у вас VDS, то хостинг может что-то там делать. Но за очень дополнительные деньги, скорее всего
DST Global
DST Global
  • Сообщений: 19
  • Последний визит: 7 мая 2025 в 18:07
Эта ошибка у вас die команда. Вы не можете подавить die отключив ошибки, поскольку вы явно повторяете mysql_error на экран перед выходом.

Вы должны использовать trigger_error так же, как и ваш mysql_select_db строку выше, чтобы исправить это:
mysql_query("SELECT * FROM `FakeTable`") OR trigger_error(mysql_error(), E_USER_ERROR);


Владимир Соколов
Владимир Соколов
  • Сообщений: 31
  • Последний визит: 25 марта 2025 в 21:57
Если вы просто не можете изменить конфигурацию PHP, вы можете сделать один трюк. Создайте новый файл, содержащий файл с ошибкой. Прежде чем делать включение, установите нужную конфигурацию.

Пример
error_reporting(E_ALL);
ini_set("display_errors", 1);
include 'some other file with a parse error.php';

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