• Как объединить несколько типов в один интерфейс?

    @Ne7Le4Der
    Не могу сказать как сделать это с использованием interface, буду рад если кто-нибудь подскажет, но можно реализовать примерно так с использованием type:
    type StageState = {
        mode: string; 
        categoryKey: string
    } & Record<string, Product[]>
    Ответ написан
    Комментировать
  • Как построить такую сетку?

    @andand44
    Через column-count: 3; можно ещё попробовать, если с js не подходит решение
    https://css-tricks.com/almanac/properties/c/columns/
    Ответ написан
    Комментировать
  • Отправка сообщений пользователю через telegram?

    @twistfire92
    Python backend developer
    Можете. Если вам нужно только отправлять сообщения, то вам нужно только знать токен бота и ID чата, куда хотите отправить сообщение.
    Через тот же telebot/aiogram или вообще напрямую через requests.
    Ответ написан
    Комментировать
  • Как повысить шансы при устройстве на работу junior frontend разработчику?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    1. Знать больше других, стараться больше других.
    2. Нет.
    3. Нет.
    Ответ написан
    Комментировать
  • Что мне делать дальше в изучении Web Development'а?

    OtshelnikFm
    @OtshelnikFm
    Обо мне расскажет yawncato.com
    на уровне джуниора
    прошел там 60% курса


    У вас проблемы с понятиями. Идите учиться.

    Да и вообще в 19 лет (ушел, не закончил) школы - вы 2 раза на второй год оставались?

    Вам еще учиться, а не на фрилансе бодаться.
    Ответ написан
    3 комментария
  • Что мне делать дальше в изучении Web Development'а?

    Zoominger
    @Zoominger Куратор тега IT-образование
    System Integrator
    Начнём с того, что вы не джуниор и никогда им не были. Джуниором вы станете только тогда, когда получите хотя бы год опыта, при этом не на фрилансе.

    Про фриланс, в свою очередь, сразу забудьте, потому что по соотношению цена-качество вы абсолютно неконкурентоспособны.
    Ответ написан
    9 комментариев
  • Одно ли и то же эти куски кода?

    Stalker_RED
    @Stalker_RED
    Представим что эти ваши фрагменты не в начале кода, а где-нибудь в середине.

    В варианте №3 функция будет создана в самом начале, до выполнения самой первой строки. Вызывать ее можно в любом месте.

    В вариантах №1 и №2 это не совсем функции, но "функциональные выражения". Они будут обработаны только когда до них дойдет интерпретатор, и попытка вызвать такую функцию раньше ее объявления приведет к ошибке.

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

    X2XFT7Q.png
    Ответ написан
    Комментировать
  • Как расположить множество форм на странице?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Очень сложно судить не зная контекста приложения, но лично для меня на первый взгляд бросается пару моментов:

    1) На одном уровне находятся разные по сути формы.
    Если эти формы стоят рядом, то лично для меня они имеют одинаковое смысловое значение - сейчас это 3 разных формы, каждая со своей информацией.

    2) Непонятная группировка полей в форме.
    У вас есть поля "Широта и долгота", которые получаются из геопозиции, а еще есть поля "Страна", "Город", "Адрес". Я предполагаю что либо мне не нужна геопозиция, либо мне не нужен адрес (из одного можно получить другое).
    Вообще само расположение их в разных блоках наводит на мысли что адрес один, а точка другая.

    3) Обилие полей.
    Какую смысловую нагрузку выполняет поле "Описание устройства"? Зачем оно нужно, если имеется "Номер"? Чем "Номер" отличается от "Номер счётчика"?
    Зачем нужен "Additional type"? На что он влияет?

    4) Наименования
    Часть полей подписано, часть не подписано, часть на русском, часть на английском. Лучше если будет единство в именовании.

    5) Обилие дополнительных действий
    Что делают кнопки "Дискета"? Какое должно быть их поведение? Она должна сохранять конкретное поле? или Всю форму? А если я изменю поле из 3 блока "Холодная вода" и изменю "Множитель" из первого? Какое изменение сохранится?
    А если так есть еще и кнопка сохранить (ниже), то изменение поля "Множитель" без нажатия дискеты, с последующим нажатие кнопки сохранить, изменит ли поле множитель? или сбросит его?
    Ответ написан
    Комментировать
  • Как отправить большой массив в Web API с помощью ajax?

    ArsenyMatytsyn
    @ArsenyMatytsyn Куратор тега JavaScript
    Руководитель frontend направления, предприниматель
    Да, POST\PUT и т.д.
    Ответ написан
    Комментировать
  • Как отправить большой массив в Web API с помощью ajax?

    @makcim512
    Люблю компы)
    Да отправить json в формате json!
    $.ajax({
    	type: 'post', 
    	data: {json},
    	cache: false, 
    	contentType: 'application/json; charset=utf-8', 
    	dataType: 'json' 
    
    })
    Ответ написан
    Комментировать
  • Как вывести результат запроса в одной колонке 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
    Ответ написан
    5 комментариев
  • Как сделать несколько count c разными фильтрами в sql?

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


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

    не делать count вовсе.
    Ответ написан
    2 комментария
  • Как изменить тип из 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 добиться реально
    Ответ написан
    4 комментария
  • Как обновить react компонент после изменения в объекте?

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

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

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

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

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

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Я работаю с 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'
    }


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

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

    0xD34F
    @0xD34F Куратор тега JavaScript
    const sorted = (arr, key) => arr
      .map(n => [ n, key(n) ])
      .sort((a, b) => a[1] - b[1])
      .map(n => n[0]);
    
    
    // если элементы с отсутствующим номером квартиры должны оказаться
    // в начале, а не в конце, то вместо Infinity надо поставить 0
    const sortedArr = sorted(arr, n => +(n.address.match(/кв.\s*(\d+)/) || [ Infinity ]).pop());
    Ответ написан
    Комментировать
  • Как запустить метод ребёнка из родителя?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Ответ написан
    Комментировать