Задать вопрос
  • Как хранить товары с различными опциями в БД?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    В стародавние времена это действительно было проблемой.

    И обычно использовался п.2, который называется EAV, и который в нормальном виде (таблица всех атрибутов, таблица всех значений, и таблица-связка товар-атрибут-значение), хотя и является истинно реляционным решением, служил причиной кровавых слез не одного поколения программистов.

    Эта ситуация послужила одной из причин появления хранилищ для неструктурированных данных, таких как Монго, которые входят в очень широкую категорию NoSQL.
    Но сами по себе "документо-ориентированные базы данных" в качестве основного хранилища - это ад и проклятие, хуже EAV. Если EAV делает адом только работу с атрибутами товаров, то Монга делает проклятием работу со всей БД целиком. Забудьте об этой идее.

    Тем более что в последние годы появилось вполне достойное решение: во всех классических СУБД появилась поддержка JSON полей.
    То есть таблица товаров будет самая обычная, в которой есть общие поля типа цены, названия и прочее. А свойства хранятся в JSON поле. Беря, таким образом, лучшее из двух миров.

    На начальном этапе вы даже сможете делать поиск по атрибутам, используя нативные JSON функции. Но в дальнейшем поиск товаров, а так же фильтрацию по атрибутам на странице категории (так называемый "фасетный поиск") надо будет возложить на специальный поисковый движок (который тоже входит в широкую категорию "NoSQL", хотя ничего общего с документными БД не имеет, и БД, собственно, не является), такой как Эластик или Мантикора.

    Главное при этом хранить (либо в коде, либо в таблице категорий) эталонные структуры таких json полей, которые, во-первых, использовать как справочники для заполнения товаров (тупо чтобы помнить, что частота процессора называется freq, а не frequency), и чтобы собственно делать фасетные фильтры.
    Ответ написан
    5 комментариев
  • Возможно ли удалить новые файлы используя Git?

    Исходя из скупости технических деталей в вопросе - возникает ощущение что git ранее не использовался. В таком случае ответ - нет. Гитом нельзя удалять и восстанавливать файлы, свидетелем создания и удаления которых он не был.
    Ответ написан
    Комментировать
  • Где найти такую CLI?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Хочется как-то отойти от указания всех параметров а считать что есть некий контекст.

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

    Griboks
    @Griboks
    Рекомендую использовать конфиг файл.
    Ответ написан
    1 комментарий
  • Может ли Раст полноценно заменить Джаву в сфере финансовых технологий?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Нет. У них разные области применения. Java проектировалась именно как предельно простой и лёгкий для восприятия язык, максимально препятствующий выстрелу в ногу. Никогда этим параметрам не будет соответствовать язык одновременно пригодный к системному программированию. И это не учитывая тот фактор, что инвестиции в переписывание всего финтеха с Java на Rust потребуются больше, чем планетарный ВВП.
    Ответ написан
    4 комментария
  • Может ли Раст полноценно заменить Джаву в сфере финансовых технологий?

    vabka
    @vabka Куратор тега Rust
    На Java пишется очень много разных вещей, в тч не требовательных к утилизации ресурсов и задержкам так что предположу, что многие вещи просто нецелесообразно переписывать.

    Кроме Java в финтехе вообще много разных языков используется. Даже такая экзотика как Haskell и F# бывает.

    Могу сказать, что сейчас работаю в большой корпорации и мы как раз пишем на Rust штуки, которые отвечают за работу с платёжными системами.

    Раньше примерно то же самое писалось на плюсах.

    На Java такое не писалось, тк авторизация транзакций должна меньше чем за секунду происходить после того как покупатель приложил карту к терминалу, и при этом нужно много разных проверок произвести.
    При этом многомиллионную ораву клиентов спокойно обслуживает не самый мощный сервер (емнип всего 32гб оперативки) с минимальным количеством сбоев.
    Ответ написан
    5 комментариев
  • Как использовать диски на сервере?

    Без входа в управление RAID вы явно ничего не сможете сделать - во время загрузки сервера явно выводится сочетание клавиш для входа в управление RAID
    Ответ написан
    Комментировать
  • Как использовать диски на сервере?

    @Hardened
    И какая ОС стоит неплохо было бы знать
    Ответ написан
    2 комментария
  • Какая видеокарта мощнее?

    xez
    @xez Куратор тега Железо
    TL Junior Roo
    RTX 2080 чуть мощнее. Из этих двух - явно ее надо брать.
    1080 - старая карта. Если даже в этом августе на нее вышло обновление драйверов, нет никакой гаранти, что выйдет в следующем (по правде нет гарантии, что и на 2080 выйдет, но шансов больше).
    Ответ написан
    1 комментарий
  • Пытаюсь собрать прошивку для stm32. Ошибка "src/core_cm3.c: Assembler messages"?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    g++  ...   src/core_cm3.c src/system_stm32f10x.c -o build/main


    src/core_cm3.c: Assembler messages:
    src/core_cm3.c:447: Error: no such instruction: `mrs %eax,psp'


    На какой системе ты выполняешь сборку, на x86? Тогда чтобы получить код для arm тебе нужен не g++, а какой-нибудь arm-linux-gnueabi-g++.
    Ответ написан
    2 комментария
  • Можно ли учить Go первым языком?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Для понимания. GO это С подобный язык, а их сейчас 90% примерно, значит другие будет учить легче.
    Ключевые особенности и для чего он разрабатывался:

    * Простота и только один путь для достижения цели (это и плюс и минус)
    * Динамическое управление памятью
    * Компиляция в машинные кода и независимость ни от чего, это несомненный плюс
    * Быстрый вход по идее люди должны начать кодить уже через месяц
    * Язык общего назначения, со всеми плюсами и минусами этого подхода
    Ответ написан
    Комментировать
  • Как хранить большое количество json в mysql?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    Как лучше организовать подобное подобное хранение?

    MongoDB

    JSON в реляционных есть, но он идет довеском,
    ты же, судя по вопросу - делаешь его основным хранилищем

    если все же реляц - Postgresql + bjson
    Ответ написан
    Комментировать
  • Каков универсальный стек технологий для приложений со сложным GUI?

    Я бы посмотрел на Flutter, тк он ближе всего к тому чтобы удовлетворить все требования:
    1. Кроссплатформенный
    2. В собранном виде заметно меньше, чем Electron
    3. Умеет собираться под веб и даже под мобилки
    4. Адаптивность - это уже скорее к прослойке между клавиатурой и монитором.
    На счёт многооконности сложно, но вроде что-то есть. (и вообще многооконность и веб слабо сочетаются)
    5. (мне кажется это важным) Сам язык сильно проще чем какой-нибудь C++ / Rust / C# / Delphi / Swift, которые хорошо (или не очень) подходят под отдельные пункты, но при этом гораздо сложнее в изучении.
    Ответ написан
    2 комментария
  • Как хешировать в хеш таблице узлы дерева?

    wataru
    @wataru Куратор тега Алгоритмы
    Разработчик на С++, экс-олимпиадник.
    Итак, у вас ключи - какая-то древовидная структура и вам надо быстро определять, а есть ли такая структура в таблице. Я правильно понял?

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

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

    Или можно тупо записать вашу структуру данных в строку (Например, расставив скобки вокруг каждого поддерева вроде "(a(b)(ccc(dd))" - это узел a, у которого есть дети b и ccc, у последнего есть ребенок dd) и потом как угодно хешировать уже строку, тогда ничего самостоятельно реализовавать ничего вообще не надо (to_json и hash от строки возможно уже есть).
    Ответ написан
    2 комментария
  • Как посчитать стрит флеш без одной карты на флопе?

    1. В колоде 52 карты.
    2. При этом две карты у тебя на руках.
    3. Стрит флеш - это когда карты идут по порядку и все одной масти.
    4. Тк у нас девятки, то мы ждём, что будут такие наборы:
    - 6, 7, 8
    - 7, 8, 10
    - 8, 10, J
    - 10, J, Q
    Всего 8 благоприятных исходов

    Сколько всего возможно исходов?
    Нам нужно посчитать, сколько всего уникальных наборов по 3 карты можно получить из колоды в 50 карт.
    Операция, которая даст нам это количество название "сочетание из 50 по 3"
    И равняется оно C(50,3) = 50! / (3! * (50 -3)!)

    Делим 8 на С(50,3) и получаем примерно 0.0408%
    Ну и шанс, что последняя карта соберёт нам стрит флеш равен 4.25% (2/47)
    Ну и если самая самая последняя карта, если предыдущая не дала нам благоприятный исход - 2/46 ~ 4.3%

    Надеюсь, что нигде не ошибся.
    Ответ написан
  • Какие есть аналоги 3proxy на C++?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    Ответ написан
    Комментировать
  • Какой существует самый новый ThinkPad с возможность замены CPU?

    @rPman
    Бессмысленно.

    Времена, когда через 2-3 года можно приобрести процессор за те же деньги но со значительно большей производительностью - прошли (лет 5 назад), 'закон мура' перестал действовать, потому что производители подошли к физическому пределу технологии.

    Так же производители старательно придерживаются стратегии запланированного устаревания (все чаще и теперь выбор mid/high-end линеек может не защитить от этого) это значит что то в твоем ноутбуке через 3-5 лет уже не будет хватать для задач нового времени и менять его все равно придется целиком.
    Ответ написан
    5 комментариев
  • Как найти минимальное число прохождений по автомату до конечного состояния с N вероятностью?

    @AlexSku
    не буду отвечать из-за модератора
    Вроде, марковский процесс описывает конечные (предельные) значения вероятностей при любых начальных условиях.
    Ответ написан
    Комментировать
  • Как написать функцию sin из библиотеки math.h в Си?

    @res2001
    Developer, ex-admin
    У вас sum2 не инициализируется в начале, а в цикле вы туда уже чего-то прибавляете.
    Как думаете какой результат будет возвращен функцией? Зависит от того что лежало на стеке где теперь лежит sum2, а лежать там может все что угодно.
    Ответ написан
    Комментировать