• Как вывести результат запроса в одной колонке sql?

    @MaximaXXl
    Ну что за мода прикреплять скрипты без текста селекта =(
    select case when status in ('ACTIVE', 'ONLINE') then 1
                when status in ('DISCHARGED', 'WARN', 'ABNORMAL') then 2
              end status_type,
    Count(*) cnt
    from sensor_instances
    where groupid = 18
    group by status_type
    Ответ написан
  • Как сделать несколько count c разными фильтрами в sql?

    Melkij
    @Melkij
    PostgreSQL DBA
    select count(*) filter (where status = 'active'),
    count(*) filter (where status = 'offline') ...


    наиболее оптимально

    не делать count вовсе.
    Ответ написан
  • Как изменить тип из varchar в int?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега PostgreSQL
    Седой и строгий
    update some_table set
      number = substring(address1 from '[0-9]+')::int
    where number is null and address is not null;

    P.S. address1 - это плохое название для колонки.
    Ответ написан
  • Можно ли закодировать string что бы уменьшить его вес?

    15432
    @15432
    Системный программист ^_^
    Есть куча алгоритмов сжатия. Посмотрите арифметическое кодирование и Huffman. Совсем длинные строки всё равно не влезут, конечно, но процентов 30 добиться реально
    Ответ написан
  • Как обновить react компонент после изменения в объекте?

    @twolegs
    Во-первых, у вас каждый рендер будет создаваться новый экземпляр объекта FactorModel(). Т.е. каждую итерацию рендера у вас заново инициализированный объект.
    Чтобы этого избежать, надо либо мемоизировать этот инстанс (хук useMemo), либо инстанцировать объект вне компонента (если это возможно).
    Во-вторых, эффект также вызывается каждый рендер, и на событие каждый раз подписывается новая функция (память течет). Чтобы этого избежать, нужно указать второй параметр в useEffect: useEffect(..., []) - такой эффект выполнится только при монтировании компонента.
    Ответ написан
  • Реализация поиска по но нескольким полям psql?

    @anikavoi
    Ну если таблица заполняется так как у вас показана, и запрос такой как у вас показан, то сплит по запятым и WHERE ... ILIKE... AND .... ILIKE...

    Но я вам все-таки советую сначала поискать аналог FIAS в РБ.
    Потому как адреса, штука очень странная и загадочная.
    Не знаю как в РБ, а у нас есть такие вещи:

    город Москва, город Зеленоград, микрорайон .... (ага, Зеленоград не в Московской области, а в Москве)
    "область Такая-то, поселок Сякой-то, дом 2" без улицы, но в том же поселке может быть ул. Ленина, дом 2 - и это другой дом.
    Про корпуса\литеры\строения - можно написать отдельную сагу, сплошь из нецензурных выражений, потому как, например дом в котором я сейчас нахожусь, в одних ГОСУДАРСТВЕННЫХ ресурсах обозначен как 4/1, в других 4 корпус 1.

    На хабре были несколько статей как люди прикручивали fias к postgres. Поищите.
    Ответ написан
  • Несколько вопросов о mongodb?

    zoonman
    @zoonman
    CEO @ LinuxQuestions.ru
    Я работаю с MongoDB уже более 3 лет, поэтому буду рассказывать и давать советы опираясь на личный опыт эксплуатации.

    Получается, что нас всю жизнь учили данные нормализовывать и объясняли, почему это хорошо, а теперь все с точностью наоборот?

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

    Объясните, пожалуйста, на пальцах, правильно ли я все понимаю?

    По большей части вы правы. Это денормализованные данные, но с определенными моментами. Я покажу вам их на вашем же примере.

    Как в монго при этом обновлять данные, которые хранятся в каждом документе?


    Это реализуется с помощью банальных обновлений.
    Например, если у меня есть коллекция с книгами, в которой мне нужно обновить авторов.

    Типичная запись в ней выглядит так
    {
        "_id" : ObjectId("5801aa17964c6b2a050041a7"),
        "title" : "New Book",
        "authors" : [ 
            {
                "_id" : ObjectId("5801aa0f964c6b26030041a9"),
                "firstName" : "Phil",
                "lastName" : "Tkachev"
            }
        ]
    }


    И я хочу заменить имя в тех книгах, в которых я - автор, то мой запрос будет выглядеть так:

    db.getCollection('book').update(
     {'authors._id':ObjectId("5801aa0f964c6b26030041a9")}, 
     {$set: {'authors.$.firstName': 'Philipp'}  }, 
     {multi: true } 
    )


    Здесь есть ряд разных сценариев, просто почитайте документацию. В ней все неплохо расписано.

    Приемлемо ли в монго денормализовывать данные, чтобы хранить данные в отдельной коллекции, и обращаться к ним отдельным запросом (ведь джоинов там нет)?


    Есть ряд случаев, когда так и делают. Например есть разного рода ORM, тот же Mongoose, который так и делает.

    И принято ли так работать?


    И да, и нет. Когда вы работаете с такого рода базой данных, вам нужно подходить к организации данных исходя из решаемой проблемы, отталкиваться от проекта будущего приложения или решения задачи.
    Вам просто нужно ответить на вопрос, что дешевле, запросить документ по ключу или обновить запись внутри документов.
    Взять к примеру, ваш сайт, в котором есть новости и их авторы. Новости могут читать миллионы, а значит при обращении к каждой новости нужно будет делать подзапрос на информацию о каждом авторе. Т.е. вместо одного запроса, при просмотре новости, нужно будет делать 2. А если показывать список из 100 новостей? Будете делать 100 вторичных запросов? Нет, это тоже неправильно. Нужно будет получить список новостей, в коде приложения собрать идентификаторы авторов, сделать второй подзапрос, получить информацию об авторах, затем объединить ее с уже полученным списком статей. Это немного усложнит ваше приложение, но тоже позволит сэкономить ресурсы. Если вы встроите авторов внутрь статьи, это позволит вам обойтись одним запросом к базе, хоть на просмотр, хоть на список новостей. С другой стороны вам прийдется подумать об обновлении информации об авторе. Но, т.к. такая информация меняется сравнительно редко, то есть смысл встраивания.

    Что делать, если изменилась структура данных, если структуры то и нет?


    Здесь все просто. Когда вы разрабатываете свое приложение, вы изначально закладываете в него обработку изменений. Например, вы можете добавить поле версии документа, в котором храните номер версии структуры и реагировать на ее изменение в коде. Либо вы можете просто писать приложение таким образом, что оно автоматически будет конвертировать структуру из старой в новую при первом обращении.

    По дизайну вашего приложения.
    Судя по первичным данным, у вас новостной сайт.
    Логично было бы его представить в следующем виде.

    Коллекция новостей:

    {
    	_id: 'MongoId',
    	title: '',
    	body: '',
    	author: {
    		_id: 'идентификатор пользователя',
    		name: 'Имя пользователя',
    		subscribers: 'Количество подписчиков'
    	}
    }


    Автор является неполной копией данных о пользователе. Это поможет сэкономить место и позволит избежать ненужных запросов.

    Коллекция пользователей:

    {
    	_id: 'MongoId',
    	name: 'Имя пользователя',
    	email: '',
    	roles: ['user', 'author', 'admin'],
    	subscribers: 'Number'
    }


    Список ролей может опеределять уровень доступных возможностей. Его легко изменить, можно легко найти авторов или админов.

    Коллекция подписок:

    {
    	initiator: {
    		_id: 'идентификатор пользователя, который инициировал подписку',
    		name: 'Имя пользователя'
    	},
    	target: {
    		_id: 'идентификатор автора',
    		name: 'Имя пользователя'
    	},
    	date: 'ISODate',
    	confirmed: 'bool'
    }


    Здесь вы можете подстроить, как список подписок, так и список подписчиков одним запросом.
    Ответ написан
  • После успешного запроса ajax триггерит .fail?

    fail должен принимать 3 аргумента
    xhr, status, error. Можете добавить их в параметры, и что приходит в них.
    Возможно текст ошибки подскажет.
    Ответ написан
  • Как отсортировать массив по возрастанию?

    locky_yotun
    @locky_yotun Куратор тега JavaScript
    Я видел некоторый джаваскрипт
    const array = [
        {address: "ул.Колоса, 115, кв. 01"},
        {address: "ул.Колоса, 115, кв. 20"},
        {address: "ул.Колоса, 115, кв. 05"},
        {address: "ул.Колоса, 115, кв.31"},
        {address: "ул.Колоса, 115, кв. -"},
        {address: "ул.Колоса, 115, кв.105"},
    ];
    
    const getApt = str => parseInt(str.split('кв.')[1].replace(/[^\d]/g, '')) || 0;
    const sorter = (aa,bb) => {
      const a = getApt(aa.address);
      const b = getApt(bb.address);
      return a - b;
    };
    
    const sorted = array.sort(sorter);
    Ответ написан
  • Как отсортировать массив по возрастанию?

    0xD34F
    @0xD34F Куратор тега JavaScript
    array.sort((a, b) => {
      [ a, b ] = [ a, b ].map(n => (n.address.match(/кв.\s*(\d+)/) || [ Infinity ]).pop());
      return a - b;
    });
    Ответ написан
  • Как переписать react mixins в React es6?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    Слишком мало данных. Тут может подойти вариант как с переносом логики в методы компонента, так и с использованием HOC или Hooks API.
    Ответ написан
  • Почему переменная объявленная в ComponentWillMount стала Undefined?

    smilingcheater
    @smilingcheater
    Потому что написав onClick={this.handleSubmit} вы отрываете функцию от контекста, и в этой функции у вас this - не ваш компонент
    Попробуйте написать
    onClick={this.handleSubmit.bind(this)}
    Ответ написан
  • Модальное окно с загрузкой React?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    Как можно реализовать модальное окно с загрузкой в реакте?

    Точно так же как и без React. По хорошему, для модалок надо использовать портал. Удобная библиотека для работы с порталами react-portal. Если хотите блокировать только отдельный блок, то портал использовать не надо.
    {isFetching && <Preloader />}
    где isFetching - состояние загрузки, Preloader - ваш оверлей/модальное окно.
    Ответ написан
  • Как сделать дамп удалённой базы данных postgresql?

    @mezhuev
    Системный администратор
    man pg_dump:
    -h host
    --host=host
    Specifies the host name of the machine on which the server is running. If the value begins with a slash, it is used as the directory for the Unix domain socket. The default is taken from the PGHOST environment variable, if set, else a Unix domain socket connection is attempted.

    -p port
    --port=port
    Specifies the TCP port or local Unix domain socket file extension on which the server is listening for connections. Defaults to the PGPORT environment variable, if set, or a compiled-in default.
    Ответ написан
  • Как сделать асинхронный запрос в redux с помощью Type Script?

    rockon404
    @rockon404 Куратор тега Redux
    Frontend Developer
    1. Оператор await можно использовать только в асинхронных функциях
    2. Блок return у вас не валидный.

    interface FetchNewsDataSucceededAction {
      type: typeof FETCH_NEWS_DATA_SUCCEEDED;
      payload: News[];
    }
    
    interface FetchNewsDataFailedAction {
      type: typeof FETCH_NEWS_DATA_FAILED;
      payload: MappedError;
    }
    
    type NewsActionTypes = FetchNewsDataSucceededAction | 
      Action<typeof FETCH_NEWS_DATA_REQUEST> |
      FetchNewsDataFailedAction;
    
    const fetchNewsDataRequest = (): NewsActionTypes => ({
      type: FETCH_NEWS_DATA_REQUEST,
    });
    
    const fetchNewsDataSucceeded = (payload: News[]): NewsActionTypes => ({
      type: FETCH_NEWS_DATA_SUCCEEDED,
      payload,
    });
    
    const fetchNewsDataFailed = (payload: MappedError): NewsActionTypes => ({
      type: FETCH_NEWS_DATA_FAILED,
      payload,
    });
    
    export const fetchNewsData = (): : ThunkAction<Promise<void>, {}, {}, AnyAction> => 
      async (dispatch: ThunkDispatch<{}, {}, NewsActionTypes>): Promise<void> => {
        try {
          const { data } = await Axios.get(`https://api.dtf.ru/v1.6/news/default/recent?count=1`);
          dispatch(fetchNewsDataSucceeded(data));
        } catch (error) {
          dispatch(fetchNewsDataFailed(mapAxiosError(error)));
        }
      };
    Ответ написан
  • Как отфильтровать два массива?

    @msdosx86
    const filtered = impotyList.filter(item => {
        for (const removeItem of removeFromImportList) {
           if (JSON.stringify(removeItem) === JSON.stringify(item)) return false;
        }
       return true;
      })
    Ответ написан
  • Как отфильтровать два массива?

    hzzzzl
    @hzzzzl
    const list = [
      [1,2,3,4,5],
      [2,3,4,5,6],
      [3,4,5,6,7],
      [4,5,6,7,8],
      ['adasd', 123, 312, 1234]
    ];
    
    const remove = [
      [2,3,4,5,6],
      [3,4,5,6,7],
      [4,5,6,7,8],
    ]
    
    _remove = remove.map(a => a.toString())
    list.filter(a => !_remove.includes(a.toString()))
    Ответ написан
  • Насколько необходимо middle frontend разработчику знать другие языки и библиотеки?

    Vlad_IT
    @Vlad_IT
    Front-end разработчик
    Ну, один из фреймворков вам точно нужен. Vue или React, не важно. WebGL, Three.js, GSAP нужны, если вы планируете работать с графикой, анимацией - этим владеют не все, по этому поводу париться пока не стоит (хотя это довольно интересная область). Посмотрите вакансии middle front-end разработчиков, там как правило все перечислено.
    пробую создавать макеты в Figma

    Это front-end'еру совсем необязательно учить, оставьте эту работу дизайнерам. Хотя, расширять кругозор всегда полезно, да и фронтендеру близка работа с дизайнерами, неплохо бы понимать специфику их работы.
    Готовых сайтов на чистом vue/react + эти библиотеки пока не видел

    Видели, просто не догадывались об этом.
    Ответ написан