• Почему запрос SQL не проходит без GROUP BY?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Вы не указали GROUP BY, но использовали агрегирующую функцию SUM. Такая комбинация эквивалентна агрегации всей выборки в одну строку. Однако, вы выбираете поле order_id. У СУБД возникает вопрос - а из какой именно строки брать значение этого поля в итоговую выборку? Скажем, после фильтрации осталось 10 строк с разными order_id. Какое именно из этих 10 значений вы хотите увидеть после агрегации?
    Ответ написан
    Комментировать
  • Почему запрос SQL не проходит без GROUP BY?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Потому что это азы SQL: если в выражении есть и агрегирующая функция, и просто неагрегируемые значения, то необходимо явным образом указать, что нужно по ним группировать.
    Ответ написан
    3 комментария
  • Чем заменить google docs?

    @tensor_sbis
    Можем предложить свое решение от СБИС https://sbis.ru/help/disk
    Все пользователи СБИС могут пользоваться им бесплатно :)
    Ответ написан
    Комментировать
  • Как понять микросервисы?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Микросервисы пишут не для того, чтобы просто переделать API.

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

    А уже исходя из этой точки зрения:

    1. Если у каждого сервиса есть свой api, зачем API Gateway (точка входа), можно же на nginx сделать обращение по location на нужный api?

    А если нужно много экземпляров, будете одним nginx-ом раскидывать по 10 локейшенам? Микросервисы в современном мире предполагается запускать в докере на собственном легковесном веб-сервере (типа Jetty), поднимать нужное количество экземпляров и балансировать чем-нибудь на входе, но не по локейшенам.

    2. Стоит ли использовать RabbitMQ для общения между сервисами? Правильно ли понимаю, что точка входа на ноде, посылает запрос в раббит и ждет от него же ответ и отдает клиенту?

    РаббитMQ или kafka позволяют множеству экземпляров вашего сервиса обрабатывать сообщения, с гарантией того, что из очереди ничего не пропадет, и если какой-то экземпляр сдохнет, то этот запрос обработает другой экземпляр. Именно ждать ответ наверное не самое правильное, но это можно смотреть как вам удобнее - периодически опрашивать очередь, или настроить чтобы message service сам пушил по событию.

    3. Например делаем микросервис по авторизации пользователя и регистрации. У него должна быть своя база данных? Как например в админке обращаться к пользователям, чтобы их добавить или заблокировать, я должен запрашивать пользователей с микросервиса? Получается микросервис отвечающий за пользователей CRUD + Регистрация, авторизация, сброс пароля?

    Это как вы хотите. Если у вас очень много пользователей и авторизация тормозит, но можно сделать микросервис с авторизацией, сделать кластер базы данных с репликацией. Дальше можете балансировать пользователей и там уже решать как их раскидывать. Или база мощная и все экземпляры могут работать с кластером. Или делите базу на части, и раскидываете пользователей по алфавиту (база юзеров от A* до H*, база юзеров от I* до M*, по региону или как вам нравится).

    Микросервисы нельзя писать до того как вы представите себе в голове общую архитектуру всего проекта, и какую проблему вы хотите решить.

    Второй немаловажный плюс микросервисов - работать над небольшим микросервисом проще, чем над крупным монолитом. Упрощается его поддержка рефакторинг. То есть в конечном счете упрощается требования к квалификации программиста. Но усложняется общая архитектура проекта, то есть на сеньоров/техлидов нагрузка возрастает.
    Ответ написан
    Комментировать
  • Что такое end-to-end тестирование?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Понятие еnd-to-end обозначает всего-навсего классификацию тестов по уровню, на котором тестируется система, и, само по себе, ничего не говорит ни о том, какие конкретно должны быть эти тесты, ни о том, какую роль они играют в общей стратегии обеспечения/проверки качества и, также, не является методикой тестирования. (Методика - это совсем другое понятие.)

    Для понимания сути этого понятия хорошо сравнить его с модульным ("нижний" уровень) и интеграционным ("средний") тестированием на каком-нибудь конкретном примере. Давайте рассмотрим некий сферический webshop в вакууме. Предположим, в нем есть 50 классов и для большинства из них написаны модульные тесты. Они проверяют исключительно функционал конкретного модуля (чаще всего, класса), т.е. тот, что зависит только от самого модуля и ни от чего чего более. Потом есть интеграционные тесты. Они проверяют корректность работы отдельных "модулей", если их собрать вместе согласно архитектурe. Например, работает ли правильно "Корзина", состоящая, в свою очередь, из 10 классов (предварительно проверенных модульными тестами), или "Корзина", подключенная к "Вебморде" и т.д. Где-то повыше в этой иерархии есть такие интеграционные тесты, которые проверяют конкретный функционал всей системы. Например, отправляется ли юзеру мейлом копия оплаченного заказа...

    И вот тут начинается самое интересное для понимания того, что такое end-to-end тестирование! Можно представить себе тест, проверяющий, что соответствующий мейл генерируется и сбрасывается SMTP серверу. Если SMTP сервер не рассматривать, как часть разрабатываемой системы, то этот тест вполне можно назвать end-to-end тестом (послали кучку HTTP запросов через "Вебморду" и проверили сброс мыла на SMTP - все зашибись!). Однако, если настройки и эксплуатация SMTP сервера - часть проекта (например, заказана разработка webshop "под ключ"), может оказаться, что это мыло будет отфильтровано каким-нибудь спам-фильтром, превысит лимит почтового ящика пользователя... короче, не дойдет до него. Тогда этот же самый тест уже нельзя считать end-to-end, а нужно бы было написать тест, проверяющий приход мыла в POP3/IMAP ящик. (Опять же, если это действительно нужно! Ибо, в зависимости от конкретных функциональных и нефункциональных требований, архитектор и QA инженер вполне могут найти возможность обеспечить адекватный контроль качества и без такого теста.)

    Таким образом, end-to-end тесты, это такие интеграционные тесты, которые воздействуют на систему через ее самые внешние интерфейсы и проверяют ожидаемую реакцию системы через эти же интерфейсы. Почему именно интеграционные? Потому, что это единственное, что можно о них сказать наверняка: они по определению не могут быть модульными тестами. А все остальное: являются ли они одновременно приемочными, нагрузочными или еще какими - зависит только от общих плана/стратегии тестирования и той роли, которые эти тесты в них играют.
    Ответ написан
    Комментировать
  • Как правильно структурировать реакт проект?

    @McBernar
    Общее в app/assets, частное в app/components/assets
    Ответ написан
    Комментировать
  • Почему Windows-юзеры обычно держат окна приложений развёрнутыми на весь экран, а пользователи macOS — нет?

    Jump
    @Jump Куратор тега Windows
    Системный администратор со стажем.
    Как удобней так и держат.
    Какой смысл держать окно в котором работаешь не полностью развернутым? Это же неудобно, ограничивает рабочее пространство, кроме окна с нужной информацией отображается всякая фигня на заднем плане.
    Поэтому открыл приложение - развернул на полный экран и работаешь.
    Сворачиваешь только если надо видеть одновременно несколько окон, что бывает не часто.
    Понятно что тот же мессенджер или проигрыватель разворачивать на полный не будешь - потому что не работаешь в нем.
    Как можно работать по другому я не представляю.
    На маке не работал.
    Ответ написан
    1 комментарий
  • Что заложить в проект квартиры для умного дома?

    sim3x
    @sim3x
    Управление светом (светильники, цветные led)
    нет, баловство, которое надоест за неделю. А вот посвятить время выбору тех самых лед и продумать как их менять - да

    "Непрерывные колонки"
    у вас 200+м2 и божественная звукоизоляция каждой комнаты?

    Управление некоторыми розетками
    сделайте на каждую комнату отдельные автоматы на свет и питание. Отдельно на каждый прибор, который потребляет больше 1кВт

    Датчики температуры/света
    сильно зависит от типа отопления. Нужно делать для управления отоплением

    Голосовое управление
    у вас такое сильное желание отдавать все ваши секреты корпорациям бесплатно за проигрывание деспасито? Покушайте смузи и забудьте

    Хороший ремонт - не умный дом, а хороший проект и умный подбор комплектующих
    Никакое голосове управление вам не уберет плохо поставленный степлопакет

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

    - хорошая метеостанция с разумным ее расположением и выводом датчика внутрь квартиры
    - тесты различного типа освещения - лед економные, но если в помещении проводится много времени возможно стоит потратиться на другой тип освещения
    - умное расположение выводов 1(10)-гигабитной сети
    - подумать о возможности прокладки оптоволокна и инфраструктуры на ней
    Ответ написан
  • Подготовка к верстке, чеклист. Что еще?

    LucasKane
    @LucasKane
    Front-end Developer
    Господи пусть такие дизайнеры плодятся и размножаются!

    А теперь по сути.

    1) Названия лучше давать на английском.
    2) Не злоупотреблять количеством шрифтов - вполне хватит двух или трех (Шрифт для текст, шрифт для заголовков, хитросделанный шрифт для подписи под лого или других декораций)
    3) Хоть немного быть в курсе того, что можно сверстать, а что нет - например цвет заголовков градиентом или картинкой - можно реализовать на css, но работать это будет разве что в Chrome.
    4) Не обрезать картинки делая их круглыми - используйте маски перекрытия или как то так, в верстке нет кругов только прямоугольники и квадрат как частный случай прямоугольника, но визуально сделать картинку круглой и скажем с бордером можно стилями - при этом исходник картинки будет квадратом или прямоугольником.
    5) Используя тени делать их отдельно от изображений.
    6) Элементы форм рисовать без фанатизма и стараться оставлять их такими какие отрисовываются браузером, в основном это касается чекбоксов/радиокнопок выпадающих списков, их можно стилизовать, но до сих пор это такие костыли и гемор, что аж горит, а потом горит у бекэндщиков, так как им все это реализовывать через задницу приходится.
    7) Прежде чем нарисовать какую то супермега крутую красивую вещицу, спросить верстальщика (если есть возможность) сможет он это реализовать.
    Ответ написан
    4 комментария
  • Паттерны программирования для react developer-а?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    Хорошо знать, что они есть и какие задачи решают. Стоит понимать, что JavaScript и, в частности, код React приложения, сильно далек от классического ООП и во многих классических паттернах тут нет необходимости. А что-то уже реализовано в браузерных API и библиотеках которые вы используете.
    В JavaScript и в React разработке используются свои паттерны и приемы. Просто вбейте в поисковике React patterns . Так же хорошо знать что такое принципы SOLID, DRY и прочее.
    Ответ написан
    2 комментария
  • Как организовать архитектуру взаимодействия микросервисов?

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

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

    Об аутентификации можно тоже говорить много и долго, обычно чтобы жить некоторое время без сервиса аутентификации её делают по токенам (JWT например). Тогда целевой сервис сам может проверить, авторизован человек или нет.

    Если уж так хочется бложик, то я бы оставил его в покое в виде самостоятельного сервиса, а в качестве других сервисов сделал бы:
    - уведомления о новых комментариях/постах в мессенджер/почту (как раз хорошо будет через MQ общаться с основным сервисом);
    - какую-нибудь аналитику элементарную, которая независимо собирается, например по посетителям, телеметрию короче;
    - сервис автопостов - заказываешь пост с нужным содержимым на указанную дату и время, этот сервис пользуется API основного сервиса бложика и постит что-либо без вашего участия.

    Вот уже что-то будет интересное. Обратите внимание, что пожалуй все из этих трёх сервисов могут работать без основного, и наоборот - основной сервис может класть сообщения в очередь для других сервисов (1-го и 2-го), и сервисы будут разгребать эту очередь пока работают.
    Ответ написан
    Комментировать
  • Почему тормозит NGINX + NodeJS WebSocket + MySQL при 2000+ подключениях?

    miraage
    @miraage
    Старый прогер
    Используйте pm2, если он не еще не используется.
    Ответ написан
    Комментировать
  • Почему Android со временем начинает очень тормозить?

    MrNewbie
    @MrNewbie
    Мешаю водку с пивом
    Если ты когда-нибудь видел исходный коды Android OS и исходники работ какого-нибудь пограмиста-индуса, то вполне можешь догадаться кто виноват в "крутой" оптимизации ранних версий Android. C выходом более мощного железа, многие даже не парятся насчет утечки памяти и бесконечных циклов. Работает ну да ладно... "начальника я все готово... программа работать"
    Ответ написан
    Комментировать
  • Единый список "Сегодня" / "ToDo" с разных досок Trello. Как сделать?

    Maksclub
    @Maksclub
    maksfedorov.ru
    Решение:
    • Называете одинаково на всех досках список ToDo
    • В поиске вбиваете: list:ToDo
    • Если нужно только активные list:ToDo is:open
    • Если нужно только активные кроме доски NotDo list:ToDo is:open -board:NotDo
    • Можно комбинировать запрос (фильтровать, минусовать) и сохранять эти запросы для расширенного тарифа


    Фильтрация задач по спискам или доскам в Trello
    Ответ написан
    1 комментарий
  • Возможно ли создать онлайн-игру с использованием блокчейн?

    Jump
    @Jump
    Системный администратор со стажем.
    Возможно ли создать онлайн-игру с использованием блокчейн?

    Возможно.
    0_facfe_46f0772c_orig.jpg

    В промышленности можно делать что угодно, но чтобы это было модным там обязательно должен быть графен и нанотрубки.
    В IT тоже можно делать что угодно, но чтобы это было модным, там обязательно должен быть блокчейн.
    Ответ написан
    1 комментарий
  • Как реагировать на письмо, которое пришло мобильному разработчику, от некой компании FMFG?

    Домен notificationcommunicationpatent.com зарегистрирован в июне этого года, сайт notificationcommunicationpatent.com безграмотно оформлен включая копирайты, это не может быть сайтом юридической компании.

    Содержание патента не имеет никакого отношения к описанию на сайте. При этом патент скорей всего не имеет к вам никакого отношения к вашему приложению и у него совсем другой представитель:

    Reiser & Partner Patentanwälte mbB
    Weinheimer Straße 102
    69469 Weinheim / DE
    Ответ написан
    Комментировать
  • Насколько грубым нарушением считается писать логику в редьюсере а не в екшине?

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

    Negwereth
    @Negwereth
    lvivcss.com.ua
    А у тебя здесь this не будет твоим компонентом, так как это stateless компонент, в виде чистой функции.
    Ответ написан
    1 комментарий
  • React/Redux работа редьюсера?

    @davidnum95
    Если без immutablejs, то:
    1.
    return {
            ...state,
            items: [
              ...state.items,
              action.payload,
            ],

    2.
    return {
            ...state,
            items: state.items.map((item) => {
              if (item.id === action.payload.id) {
                return {
                  ...item,
                  name: action.payload.name,
                };
              }
              return item;
            }),
          };
    Ответ написан
    Комментировать
  • Чем отличается forceUpdate от setState?

    @LiguidCool
    Серьезно?!
    forceUpdate() - черным по белому жеж ...
    использование forceUpdate привести к каким то побочным эфектам

    конечно может. Но вообще это скорее исключение из правил и лучше пользовать setState()

    Если кратко:
    setState() записывает данные в this.state и вызывает рендер.
    forceUpdate() ничего не делает, а просто вызывает рендер. В принципе бесполезная функция, т.е. если ни props, ни state не изменились, то отрендерится один фиг тоже самое. Если честно даже в голову не приходит зачем это может понадобится, кроме каких-нить волшебных асинхронных костылей в render'e.
    Ответ написан
    3 комментария