• Производительность при частых событиях?

    @gribanov2la
    Full stack web разработчик
    Нет не будет, если будете грамотно управлять обработчиками (а точнее, он должен быть один). Плюс, можно повесить дебаунсер.
    Ответ написан
    Комментировать
  • Как определить, в какой области находится курсор?

    lastuniverse
    @lastuniverse
    Всегда вокруг да около IT тем
    держите, этого должно быть достаточно.
    Ответ написан
    Комментировать
  • Move объекта по траектории?

    Stalker_RED
    @Stalker_RED
    Рисуем фигуру, находим ее центр.
    При перетаскивании проводим прямую между координатами мыши и центром фигуры (отрисовывать ее не обязательно).
    В точку пересечения этой прямой и фигуры помещаем кружок.
    Ну и сдвинуть его на 5px по этой-же прямой.
    Ответ написан
    Комментировать
  • Move объекта по траектории?

    Ni55aN
    @Ni55aN
    Сделать ограничение по getBoundingClientRect()

    const clamp = (min, v, max) => Math.min(max, Math.max(min, v));
    
    let bbox = yourBlock.getBoundingClientRect();
    let x = clamp(bbox.left, e.clientX, bbox.right)
    let y = clamp(bbox.top, e.clientY, bbox.bottom)
    Ответ написан
    2 комментария
  • PHP постоянное соединение?

    А вы вообще как работаете с очередями? Думаете с постоянным соединением не будет проблем с отваливанием?
    1. Юзайте сишный клиент для RabbitMQ, а не PHP-библиотеку.
    2. Юзайте подписку на очереди, а не долбите в цикле проверку обновлений, там просто делается подписка на обновления и в нее передается функция обработчик, которая молниеносно выполнится в момент получения сообщений. Пример можно глянуть вот тут
    3. Можно проверять соединение примерно вот так (если у вас библиотека amqp)

    if ($conn->isConnected()) {
        echo "Connected to the broker \o/";
    }
    else {
        echo "Cannot connect to the broker";
    }


    ну и реконектить...

    4. Если несколько серверов, то наверно имеет смысл везде поставить локально RabbitMQ и настроить кластеризацию
    Ответ написан
    2 комментария
  • PHP постоянное соединение?

    politon
    @politon
    HTML5,CSS3,JS,PHP,SQL,API,canvas,animation...
    Ответ написан
    Комментировать
  • Разные цветовые шаблоны сайта?

    @nvdfxx
    Senior Pomidor developer
    Sass'у вроде как json можно скормить. Т.е. делаете какой-нибудь themes.json
    {
        'default': {
            'textColor': '#000',
            'bgColor': '#f5f5f5'
        },
        'dark': {
            'textColor': '#f5f5f5',
            'bgColor': '#212121'
        } // и т.д.
    }

    В app.vue его импортите в data, создаете там же переменную, которая хранит выбранную тему, в computed выполняете поиск по themes.json, выцепляете нужную тему и подсовываете ее sass'у. И не нужно никаких классов тогда добавлять
    Ответ написан
    Комментировать
  • Разные цветовые шаблоны сайта?

    @AdelNorbiblio
    В sass можно делать переменные. Их можно менять. За счёт этого можно управлять темами, так как все компоненты будут зависимы от них.
    Забегая вперед - юзайте localstorage для того, чтобы хранить тему в ней. Иначе после перезагрузки тема будет слетать.
    Ответ написан
    2 комментария
  • Разные цветовые шаблоны сайта?

    Relow
    @Relow
    Ничего не умею
    Видео урок, который может тебе помочь - https://www.youtube.com/watch?v=H4cG4tbc-xQ&t=1390s
    Статья, которая может тебе помочь - https://webdesign-master.ru/blog/tools/2016-06-04-...
    Документация на русском - https://sass-scss.ru
    Ответ написан
    9 комментариев
  • Как выбрать из объекта свойства по массиву?

    0xD34F
    @0xD34F Куратор тега JavaScript
    [...new Set(array.flatMap(n => n.columns).map(n => n.type).filter(n => !defaultTypes.includes(n)))]
    Ответ написан
    3 комментария
  • Онлайн-дизайнер схем баз данных MySQL

    @andrei24
    Ответ написан
    Комментировать
  • Как отследить, что данные во vuex добавились?

    0xD34F
    @0xD34F Куратор тега Vue.js
    пишет ошибку что свойства id нету

    А так ли это на самом деле? Вместо пересказа следует текст ошибки показывать. Почему-то уверен, что у вас там не id отсутствует, а не получается достать id из отсутствующего объекта, типа "Cannot read property 'id' of undefined". В случае отсутствия объектов подсовывайте пустые:

    isShow() {
      return ((this.getProject() || {}).creator || {}).id === this.user.id;
    },


    как в другом компоненте дождаться пока метод fetch() положит данные с store?

    Условный рендеринг - добавьте v-if="данные" тому элементу/компоненту, что эти данные использует.
    Ответ написан
    1 комментарий
  • Чем отличается constraint от foreign key?

    @cicatrix
    было бы большой ошибкой думать
    Вы путаете сладкое с мягким.
    Constraint ограничение - когда вы задаёте параметры таблицы при помощи create/alter table
    вы говорите, что для такого-то поля задаётся constraint (ограничение).
    Ограничениями может быть primary key, foreign key, unique, default, check и т. д. - это всё ограничения.
    Вот таблица:
    CREATE TABLE MYTABLE  (
       ID BIGINT NOT NULL CONSTRAINT PK_MYTABLE PRIMARY KEY,
       CLIENT BIGINT NOT NULL CONSTRAINT FK_MYTABLE_CLIENT FOREIGN KEY REFERENCES CLIENTS(ID),
       EMAIL NVARCHAR(100) NOT NULL CONSTRAINT UQ_MYTABLE_EMAIL UNIQUE,
       ACTIVE BIT NOT NULL CONSTRAINT DF_MYTABLE_ACTIVE DEFAULT (1)
    )

    Что переводится как:
    Создать таблицу MYTABLE (с полями):
    ID целое 64 бит, не допускать пустых, ограничение с названием PK_MYTABLE вида "Первичный ключ",
    CLIENT целое 64 бит, не допускать пустых, ограничение с названием FK_MYTABLE_CLIENT вида "Внешний ключ", который ссылается на таблицу CLIENTS, поле ID,
    EMAIL строковое длиной 100, не допускать пустых, ограничение с названием UQ_MYTABLE_EMAIL вида "Должно быть уникальным",
    ACTIVE бит, не допускать пустых, органичение с названием DF_MYTABLE_ACTIVE вида "Значение по умолчанию" равное 1

    Есть и альтернативный синтаксис, где ключевое слово constraint не используется.
    В основном его применяют, когда надо явно задать имя на ограничение.
    Ответ написан
    Комментировать
  • Отследить время загрузки картинки?

    @SeaBreeze876
    Front-end разработчик
    img бросает событие load после завершения загрузки. В selectImage включаем "кручу-верчу" (loading), в обработчике load "кручу-верчу" выключаем
    Ответ написан
    Комментировать
  • Отследить время загрузки картинки?

    BRAGA96
    @BRAGA96
    console.time('Image loading');
    document.querySelector('img').addEventListener('load', function() {
    	console.timeEnd('Image loading'); //> Image loading: 1192.903076171875ms
    });


    var start = performance.now();
    document.querySelector('img').addEventListener('load', function() {
    	var end = performance.now();
    	console.log(end - start); //> 13.999999999214197
    });
    Ответ написан
    Комментировать
  • Как на vuejs преобразовать строку в компонент?

    @dev_family
    Собственно кусок кода проекта из нашей статьи) https://habr.com/post/414137/
    <script>
        import {parse} from 'himalaya'
        import Product from '~/components/Product/Product.vue';
        const hasProduct = parsedHtml => {
            let has = false;
            if (parsedHtml.children) {
                parsedHtml.children.forEach(ch => {
                    if(has) return;
                    if (ch.tagName == 'product') {
                        has = true;
                    } else {
                        has = hasProduct(ch);
                    }
                });
            }
            return has;
        };
        const toElement = (h, products) => parsedHtml => {
            if (parsedHtml.type == 'Text') {
                return [h('span', {
                    domProps: {
                        innerHTML: parsedHtml.content
                    },
                })];
            }
            if (parsedHtml.tagName == 'product') {
                let product = products.find(product => product.slug == parsedHtml.attributes.slug);
                if (!product) return '';
                return [h('div', {
                    'class': ['catalog', 'catalog_view_row'],
                }, [
                    h('div', {
                        'class': ['catalog__cell'],
                    }, [
                        h(
                            'product',
                            {props: {product}}
                        )
                    ])
                ])];
            }
            let has = hasProduct(parsedHtml);
            return h(
                has ? 'div' : parsedHtml.tagName,
                {
                    'class': parsedHtml.attributes.className,
                    'attrs': parsedHtml.attributes,
                },
                parsedHtml.children
                    ? parsedHtml.children.map(toElement(h, products))
                    : []
            )
        };
        export default {
            components: {
                Product,
            },
            props: [
                'html',
                'products',
            ],
            render(h) {
                let tree = parse(`<div>${this.html}</div>`);
                return tree.map(toElement(h, this.products))[0];
            }
        };
    </script>


    И регулярга:
    let match = article.content.match(/\$product\[([^\]]+)\]/g);
                if(match != null && match.length) {
                    let promises = match.map(async (m) => {
                        let slug = m.match(/\[(.+)\]/)[1];
                        try {
                            let product = await ctx.app.$api.product(slug);
                            if(product) products.push(product);
                        } catch (e) {
                        }
                    });
                    await Promise.all(promises);
                }
    Ответ написан
    Комментировать
  • Как на vuejs преобразовать строку в компонент?

    На хабре есть статья

    Vue нам предоставляет широкие возможности рендеринга компонента с помощью метода render. Сначала ищем все упоминания указателей на компоненты в пришедшем html и получаем по api данные, нужные для отображения этого компонента. Далее разбиваем весь html на дерево. В этом нам помогла библиотека himalaya. И затем собираем обратно html заменяя указатели на уже готовые компоненты.
    Ответ написан
    1 комментарий
  • Как на vuejs преобразовать строку в компонент?

    Taraflex
    @Taraflex
    Ищу работу. Контакты в профиле.
    Пример с использованием кодогенерации. На выходе имеем строку содержащую замыкание, которое возвращает объект с render функцией и её помощниками.
    import { compile } from 'vue-template-compiler';
    import * as transpile from 'vue-template-es2015-compiler';
    
    function toFunction(code) {
        return `(function(){${code}})`;
    }
    
    export default () => {
        const vueTemplate = '<div>{{album_1}}</div>'; //тут html для vue шаблона без оборачивания в template
        const { render, staticRenderFns } = compile(vueTemplate, { preserveWhitespace: false });
        return transpile(`(function(){
    return {staticRenderFns:[${staticRenderFns.map(toFunction)}],render:${toFunction(render)}};
    })()`);
    }

    Дальше думаю понятно.
    Ответ написан
    Комментировать
  • Индексация новой версии сайта?

    @awesomer
    не нужно менять ссылки, категорически
    • или сохраняете все URL, которые сможете
    • или делаете редиректы со старых на новые

    редиректы можно реализовать или в движке нового сайта
    или отдельно, редиректами перед новым движком, где нибудь на nginx
    Ответ написан
    Комментировать