• Какие БД используют крупнейшие торговые сети для хранения заказов?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я полагаю, что такие магазины сохраняют всё, например в postgres или greenplum, а затем передают в аналитические базы (или пишут параллельно), типа в кликхаус или oracle?


    XX век прошел под флагом реляционных СУБД. Вокруг них строились все системы.
    Для любой банковской системы БД - абсолютная царица дизайна. Именно от нее шло
    техническое задание. От базы а не от Хибернейта и синтетических таблиц как щас.
    Таблицы любили. Вокруг них строили красивые теории. Модели. EAV. Подгоняли
    аппарат алгебры (Эдгар Кодд со своими формочками).

    В появлением NoSQL и стриминговых систем - пришлось всем признать что реляционка
    исчерпала возможность линейного роста. У Майкла Стоунбрейкера есть статья где
    он меряет БД под нагрузкой и доказывает что треть ресурсов CPU просто сгорает
    в блокировках и защелках и прочих механизмах синхронизации.

    Какой софт использует розничная торговля - сложно сказать. Там будет десяток систем которые
    работают просто всместе как Grid. Например сообщения от кассовых аппаратов и платежных
    систем могут в первую очередь падать в JMS/MQ систему. А уже потом процесситься и ложиться в
    БД операционного дня. И по проишествии периода - сливаться Warehouse и в BigData
    Есть еще вариант что в аналитику сразу попадают данные со стриминга. Я такое видел.
    И это не последняя часть стека. Аналитика в свою очередь является источником для всяких
    BI, витрин данных. ОЛАП-кубиков и прочее что любят смотреть и показывать на презентациях.
    С красивой инфографикой.

    Что использует Магнит - чорт его знает. Это можно поискать по всяким конференциям. Но само
    знание или название продуктов вам ни о чем не скажет. Если они используют допустим
    Kafka+Clickhouse - из этого не следует что вам это пригодится.

    Были странные архитектурные решения. Uber например пытался выжать максимальные мощности
    из Postgres и не смог. Перешел на MySQL. Видимо им было достаточно MyISAM и брали лишь
    только те фичи что надо.

    Facebook строил Rocksdb (Key-Value) с очень сильной оптимизацией по диску. Там уже было
    не R+Tree а другой тип дерева. Тоже видимо у конторы так "пригорело" что им надо было
    штучную NoSQL делать.

    СБЕР по слухам строил на Apache Ignite прослойку между Ораклом и клиентами потому что Оракл
    не справлялся с нагрузками. Впрочем я не могу это нигде доказать. Просто слышал в разговорах
    архитекторов. И это очень штучное и очень деликатоное решение. Другим оно может вообще не подойдет.
    Нужно много думать о механике инвалидации кешей.

    Хедж фонд BridgeWater строит свои хранилища ассетов на базе Amazon S3. Реально эти ребята пихают
    в С3 все что можно. И в этом есть своя стратегия. S3 стоит дешево. И масштабируется. Дешевле чем DBMS.

    Также, я думаю, что множество магазинов могут быть обслуживаться отдельными кластерами, чтобы работа всей сети не остановилась, если какая та БД выйдет из строя?

    Эту задачу тоже можно решать на разных уровнях. Мне нравится решение от Cassandra. Там все
    таблицы имеют 1-2 реплики. И убить всю систему в целом в принципе невозможно пока последний
    датацентр стоит. Но Кассандра платит за это отказом от consistency и вообще она считается не-реляционкой.
    Хотя базовый диалект SQL поддерживает. Фактически она - умный NoSQL c хорошим сетевым протоколом
    обхода сбоев и конфликтов. Кажется Netflix ее активно использует.

    Вобщем можно дизайнить системы по разному усиливая одни части и ослабляя другие.
    Это как тот треугольник дешево-медленно-дорого но в углах стоят разные качества. Например
    CAP-свойства систем. Или приоритеты. Тебе что важно. Быстро записать в БД платеж? Но при этом
    чтение оперативных данных потребует лагов. Или наоборот писать медленно зато чтоб все по ящичкам
    и по коробочкам лежало да и еще в разных копиях и вариациях.
    Ответ написан
    10 комментариев
  • Как поднять свои математические способности для алгоритмической и логической практики?

    @calculator212
    Не хочется выучить язык, а потом понять, что зная его синтаксис и всякие там рекурсии и подобное, смотришь на задачи как баран на ворота
    В целом математика не особо нужна для 90% задач(конкретно в js и верстке это еще менее востребованно, лучше уделить время практическим вещам). Чтобы научиться решать такие задачи можно почитать конкретно про алгоритмы(одна из популярных книг это грокаем алгоритмы) и решать такие задачи, если вообще никак не получается, то изучайте другие решения и пытайтесь понять их.
    Может есть какие-то хорошие сайты в интернете по математике для полных нулей в этой теме.
    Но если вы все же решили это делать, то честно говоря хз зачем вам нужен конкретный сайт или книга, если что-то не понимаете, то вы можете вбить в ютубе гугле "математематическая индукция простыми словами пример", а основную книгу использовать больше как путеводитель. Сейчас по математике на таком уровне просто огромное число видео, если мало информации на русском, то можно залезть в англоязычный интернет, где еще больше объяснений.
    "дискретная математика для программистов"
    Конкректно это книга является очень популярной и часто рекомендуется, соотвественно можно предположить, что много кто по ней задавал вопросы и вероятно кто-то выложил решение задач в сеть например сюда, также хорошим приёмом будет поиск на английском, если на русском ничего не нашли. При чем ответы по похожим книгам есть смысл дополнительно искать на гитхабе.
    Тем более работодателю ведь, как я понял, и важнее всего навык решения таких вот задач...
    Этот навык не важнее всего. И на конкретко такие задачи реально полезны, т.к. в них встречаются базовые вещи, которые будут реально нужны в работе.
    Ответ написан
    Комментировать
  • Стоит ли использовать index в названиях файлов в React?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    или все же стоит использовать
    /audioList/audioList.tsx

    Если не компонент:
    audioList/audioList.tsx
    Если компонент:
    AudioList/AudioList.tsx

    Какие вообще есть плюсы и минусы при использовании того или иного способа.

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

    Мое мнение - если есть определенный стандарт, а у Вас нет острой необходимости его нарушать, то лучше его придерживаться.
    Ответ написан
    3 комментария
  • Без CMS не обойтись в веб разработке?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Лет 20 в web-разработке и с CMS особо не пересекался.
    Ответ написан
  • Договорился на подработку, прислали договор на подписание, в нём увидел пункты которые не видел в других подобных договорах - это мошенники?

    AgentSmith
    @AgentSmith
    Это мой правильный ответ на твой вопрос
    И ещё мне зачем то прислали скан паспорта человека который проводил собеседование - это нормальная практика?

    Это нарушение закона о персональных данных.
    Этот работодатель нарушил закон и ты смело можешь подавать на него в суд - они передали третьим лицам (тебе) чьи-то персональные данные, а это жёсткий писец.
    Скоро и твой скан паспорта они кому-то передадут, можешь не сомневаться.
    Ответ написан
    Комментировать
  • Какое оптимальное время въехать в проект?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Какое оптимальное время въехать в проект?

    Не бывает оптимального времени. Обычно заказчик и исполнитель вместе решают какое время.
    Но для оценки я рекомендую следующее. Посмотреть backlog проекта. Посмотреть какие критичные
    таски висят. Или блокеры. Посмотреть что у них общее.

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

    Для анализа кода поставте план - график. Например 1 неделя на развертывание проекта.
    Если там специфичное облако - то на изучение облака еще 1-2 недели.

    План график должен включать обязательные пункты который надо пройти. Например если это
    Laravel/react - то вы должны поднять в облаке привет-мир на этом стеке и продемонстрировать
    что он работает. И только после этого переходить к развертыванию проекта.

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

    У вас должен быть ментор или консультант который раз в несколько дней должен отвечать
    на ваши вопросы по списку. Ваш план-график должен учитывать риски и внезапные investigations
    результатом которых могут быть НОВЫЕ таски которые вы сами создадите. Например - сдохли
    сертификаты по сроку. Создать новые. Это время. Это тоже таски и они должны быть эстимированы.
    Ответ написан
    3 комментария
  • Как решит вопрос с учеткой?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Не допускать таких ситуаций. Сделать какой-то микросервис, ставить ему в очередь запросы клиентов, а сервис уже пусть эту очередь обрабатывает.
    Ответ написан
    Комментировать
  • Как решить задачу с двумя массивами JS?

    Можно вот так. Тогда вообще по фигу, сколько массивов и какая у них длина

    const sum = (...args) => (
        args.flat().reduce((acc, next) => acc += next, 0)
    )


    Подробнее:
    Стрелочные функции
    rest-параметры
    ES6 reduce
    ES6 flat

    Если все же нужно "олдовым" способом (и если точно всегда оба массива равной длины), то, как вам и написали, две проверки излишни.

    function sum(a1, a2) {
      let result = 0
      
      for (let i = 0; i < a1.length; i++) {
        result += a1[i] + a2[i]
      }
      
      return result
    }
    Ответ написан
    2 комментария
  • Как повысить свои навыки в построении архитектуры сложных приложений?

    bingo347
    @bingo347
    Crazy on performance...
    Если по теории, то мне в свое время вот эта книга помогла:
    https://www.litres.ru/robert-s-martin/chistaya-arh...

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

    Через несколько месяцев прочел еще раз, анализируя все затупы, что записал за это время в блокнот. После прочтения начал потихоньку рефакторить в существующих проектах места, которые уж очень жить мешали.

    Еще через пол года прочел третий раз, опять же с оглядкой на личный опыт. И тут я кажется уже совсем въехал. По крайней мере многие проблемы с организацией взаимодействия между компонентами стали разрешаться. И вообще появилось достаточно четкое понимание, как структурировать приложение и где разбивать его на компоненты.
    Ну и после 3 прочтения еще помог момент: мне дали с нуля проектировать новое, достаточно крупное приложение на Rust. Притом заказчик кричал "микросервисы - это круто, хочу, хочу, хочу", а тимлид мне сказал "давай монолит, но так чтоб потом легко было распилить, а то все сроки про**ем". Вот тут прямо вообще понимание пришло. Ну и плюс в Rust архитектурные компоненты очень хорошо ложатся на отдельные крейты (это такая единица компиляции в Rust), а компилятор в принципе не дает делать циклические зависимости между крейтами.

    Ну и недавно решил освежить память и перечитать еще раз. И на этот раз уже были мысли вроде "так если делать по другому, потом проблемы вылезут тут и тут".
    Ответ написан
    1 комментарий
  • Есть ли польза от codewars?

    sim3x
    @sim3x
    Синтетические задачки
    Для начинающих - крайне полезно
    Для средняков - полезно посмотреть на чужой код и понять как он работает
    Для топов - развлечение на самое простое, короткое или однострочное решение

    Просто куски кода оттуда никогда не юзал
    Подходы - юзал

    Не знаешь как решить. Сядь и нарисуй блоксхему алгоритма без привязки к ЯП
    Ответ написан
    Комментировать
  • Есть ли польза от codewars?

    theobroma
    @theobroma
    javascript developer (ReactJS)
    2 года назад CodeWars помог мне выучить JavaScript. Сухая теория не заходила вообще, а вот с практикой совсем другое дело... Решал задачки 8-7 kyu. На уровнях выше начинаются уже не основы языка, а больше упор на алгоритмы, знание математики и т.д. На 7 уровне не должно возникать проблем точно.
    Пишу код для решение на locahost в своем редакторе или IDE. Дебажу в консоли браузера. Когда вижу, что результат похож на правду, копирую код с редактора в окно для решения CodeWars. Проганяю предложенные тесты. Если все ОК, то сабмит, а если нет, то смотрю результаты тестов и допиливаю решение.
    Результаты не открываю пока сам не решу. В топовых и хитрых решения других всегда разбираюсь.
    Не стоит сильно зацикливаться на определенной задачи, которая не получается... Возможно не хватает знаний языка программирования. Бывает, что не могу понять условие задачи как таковое... Можно немного заморочиться, но если не идет, то смело откладываю на потом. Неудачи снижают боевой дух, а это ничем не помогает.
    Ответ написан
    2 комментария
  • Как правильно учить Javascript?

    По поводу книг, кто бы, что не говорил, но Definitive Guide конченая книга, имхо! Человека не знающего программирования по мере чтения грузят разрознеными терминами, и чем дальше тем хуже. В итоге чтение превращается постоянное прыгание назад в попытках понять тот или иной термин. Вообще не рекомендую эту книгу.
    Секреты нинзя обязательна к прочтению, но не сейчас. Шаблоны тем более.

    Учебник на javascript.ru достойное руководство, вот его и читайте не прыгая.
    На javascript можно теже самые и интернет-магазины, и мини соц. сети, но вы себе башку не забивайте этим. Изначально он был разработан для выполнения скриптов на стороне браузера (клиента). Добавление динамики для статичного html. Элементарные примеры: анимация (сложная), обработка событий (например мышки: клик, даблклик, пермещение).
    Ответ написан
    8 комментариев
  • Какие знания из математики нужны для изучения математической статистики?

    @dmshar
    Обычно статистика предваряется изучением теории вероятностей. Вот для ее понимания необходимо иметь представление о том, что такое предел и что такое интеграл. Ну и основы комбинаторики. Потом в матстатистике нелишним окажется понимание что такое оптимум, как его искать аналитически и численными методами. По мере усложнения понадобиться линейная алгебра, понимание векторного исчисления, ну и многомерная оптимизация. (Кстати, учебником "на все времена" и "для всех" считается книга Вентцель Е.С - вот она самодостаточна, кстати.)

    Есть несколько полезных ресурсов. Там в основном говорят про Machine Learning, но на самом деле - их можно трактовать и как "Статистические науки"
    https://habr.com/ru/post/432670/
    https://www.datasciencecentral.com/profiles/blogs/...
    https://www.analyticsvidhya.com/blog/2019/10/mathe...

    Вот в этой, весьма неплохой книге - вообще никаких тебе сложных математических основ.
    loveread.ec/view_global.php?id=76269

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