• Есть ли у кого-нибудь контракт ВЭД, подписанный 2Checkout?

    Unhandled_Exception
    @Unhandled_Exception
    Могу порекомендовать перейти к другому провайдеру: Plimus, Avangate, PayProGlobal. У последний двух даже русскоязычные версии договоров есть. Они могут выслать твердую копию с печатями.

    Еще вариант попробовать другой банк. Валютные контроли у разных банков разные.

    Также можно спросить на rsdn.ru в разделе Shareware и бизнес, может там кто-то уже решил вопрос 2checkout-ом.

    А что не так с договором, если не секрет?..
    Ответ написан
    4 комментария
  • Как лучше продвинуть сайт?

    @anton99zel
    29а класс средней школы №7
    Как лучше продвинуть сайт?

    забыть про сайт и выкладывать свои сумки на маркетплейсах, потому что в 2020 году работает только вбухивание денег в рекламу на яндексе
    Ответ написан
    Комментировать
  • Require.context and lazy-loading?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    https://webpack.js.org/api/module-methods/#require...
    обратите внимание на 4й необязательный параметр mode, особенно на 'lazy' и 'lazy-once'
    Ответ написан
    4 комментария
  • Require.context and lazy-loading?

    FLUNKEY
    @FLUNKEY
    самовар
    Вот документация

    const requireComponents = {};
    const requireComponentContext = require.context('./', false, /\.vue$/i, 'lazy'); //lazy!
    requireComponentContext.keys().forEach((fileName, index) => {
    	//componentName может быть по названию файла, смотрите пример в документации.
    	const componentName = `MySuperComponent-${index + 1}`;
    	const componentConfig = requireComponentContext(fileName);
    	requireComponents[componentName] = () => componentConfig;
    });
    
    //vue instance
    export default {
    	components: {
    		...requireComponents
    	}
    }


    <my-super-component-1></my-super-component-1>
    <my-super-component-2></my-super-component-2>
    ...
    Ответ написан
    4 комментария
  • JavaScript неправильно вычитает числа 8.18 - 1.99. В чем дело?

    SagePtr
    @SagePtr
    Еда - это святое
    Это особенность архитектуры процессора, а не языка программирования, все числа (в том числе и с плавающей точкой) он хранит в двоичном виде. А десятичные дроби далеко не все можно представить в виде конечных двоичных дробей. Самый яркий пример: 0.1 + 0.2.
    Ответ написан
    1 комментарий
  • JavaScript неправильно вычитает числа 8.18 - 1.99. В чем дело?

    @yvetrov
    Дело в том, что JavaScript может ошибаться, если числа дробные, так называемые "числа с плавающей точкой". Подробнее вы можете разобраться в статье.

    Как решение, вы можете использовать библиотеку Dinero или использовать метод .toFixed(n). Библиотека создана для расчета неизменяемых денежных величин.
    Ответ написан
    1 комментарий
  • VueJS: где лучше хранить css, в компонентах .vue или main.css?

    1. Используем препроцессор, любой: sass, less, stylus

    2. Общие стили(все что используется или может использоваться часто) в общее.
    Один файл точка входа, в него импортируется другие файлы с общими стилями.
    Файлы с общими стилями, максимально разбиты, по назначению, разделам... Зависит от проекта. На огромных проэктах, можно дополнительно по подпапкам разбивать. Главное что бы удобно было в этом ориентироваться.

    Все общие переменные обязательно в отдельный файл*
    Все общие миксины обязательно в отдельный файл*
    ** Дает возможность быстро изменить препроцессор, если понадобится. У всех разные синтаксис переменных и миксинов

    Если миксин статичный, без параметров, лучше заменить его на класс, например .some-mixin-class
    И использовать его так:
    .some-class {
    @extend .some-mixin-class;
    ...
    }
    При этом .some-mixin-class нельзя использовать как обычный класс напримую, только экстендить в других классах

    @extend .some-mixin-class - Работает одинаково во всех препроцессорах и хорошо читается

    Все общие стили только по БЕМ

    3. Специфичные стили для компонента пишем в файле компонента.
    Или scoped или БЕМ - как удобней
    Если таких стилей очень много, то выносим в отдельный файл и импортируем в компаненте
    В эти стили по необходимости(если нужно использовать) и импортируем файл с общими переменными или миксинами

    Самое сложное, научится определять, что общее а что специфичное, это не объяснить. Приходит с опытом и постепенно
    Ответ написан
    Комментировать
  • Что такое AWS Amplify?

    inoise
    @inoise Куратор тега Amazon Web Services
    Solution Architect, AWS Certified, Serverless
    Amplify это фреймворк - каркас вашего проекта и удобный sdk. Все) Как мне сказали ребята из Accenture "мы задолбались его devops'ить". Если привыкнуть то действительно упрощает жизнь разработчику, но только ему.

    тут читать больше
    Ответ написан
    Комментировать
  • AdBlock блокирует Ya.Metrika?

    1. Давно, например uBlock уже где-то полгода точно блокирует.
    2. Да, такая же абсолютно.
    Ответ написан
    Комментировать
  • VueJS: где лучше хранить css, в компонентах .vue или main.css?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    В Vue приложении используем препроцессор (scss). Кроме того используем внешние пакеты для вертикального ритма и сетки.

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

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

    Что делаем:
    Подключаем в точке входа (main.js) основной стилевой файл:
    import '@/styles/main.scss';
    import Vue from 'vue';
    //...

    В нем подключаем всякое-разное-глобальное-базовое:
    @import "base/normalize";
    @import "base/init";
    @import "base/typography";
    @import "base/code";
    @import "base/links";
    @import "base/tables";
    @import "base/buttons";
    @import "base/control-group";
    @import "base/general-form";
    @import "parts/transitions";
    ...

    Далаем два файла: env-development.scss и env-production.scss
    $NODE_ENV: development;
    @import "cfg-vars";

    $NODE_ENV: production;
    @import "cfg-vars";

    Переменная $NODE_ENV нам нужно. чтобы управлять стилями в зависимости от окружения.
    Дальше в cfg-vars.scss подключаем/пишем все необходимые глобальные конфиги
    $DEV_MODE: $NODE_ENV == development;
    $MAX_INT32: 2147483647;
    
    @import "cfg-vrhythm";
    @import "cfg-grid";
    @import "../../../node_modules/vrhythm/source/vrhythm";
    @import "../../../node_modules/bs-grid-system/source/scss/bs-grid";
    @import "../mixins";
    @import "cfg-z-indexes";
    
    $wt-family-base: "Open Sans", sans-serif;
    $wt-family-head: "Roboto Slab", serif;
    $font-family-monospace:  "Fira Code", Menlo, Monaco, Consolas, "Courier New", monospace;
    
    //==
    //== Color palette
    //== ======================================= ==//
    
    $palette-light-blue: #3c8dbc; // Primary
    $palette-red       : #dd4b39; // Danger
    $palette-green     : #00a65a; // Success
    $palette-aqua      : #00c0ef; // Info
    $palette-yellow    : #f39c12; // Warning
    
    ...


    Почти всё готово. Осталось только автоматически подключить эти конфиги к сборке.
    Идём в vue.config.js и добавляем секцию css:
    const NODE_ENV = process.env.NODE_ENV === 'development'
        ? 'development'
        : 'production';
    //...
    module.exports = {
        //...
        css: {
            extract: NODE_ENV === 'production',
            loaderOptions: {
                sass: {
                    data: `@import "@/styles/config/env-${NODE_ENV}.scss";`,
                },
            },
        },
    };


    Теперь мы спокойно пишем стили компонентов на scss прямо vue-файлах, и оставляем возможность какие-то стили писать в отдельных файлах.

    Enjoy!
    Ответ написан
    6 комментариев
  • VueJS: где лучше хранить css, в компонентах .vue или main.css?

    @quadabrashell
    Vue-way - хранить стили в .vue, для того оно и придумано. Компонентный подход улучшает восприятие кода.

    css-файл можно оставить только если, например, он уже остался от верстальщика и лень раскидывать по компонентам.
    Ответ написан
    2 комментария
  • Надежены ли сервера от Hetzner?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    За последние годы в hetzner обслуживали более 50 серверов.
    Держим там продакшен нескольких проектов.

    Соотношение цена/качество считаю идеальным.
    Из подвохов - обратите внимание на заявленную память и диски:
    • Память должны быть с ECC
    • У дисков должно быть написано data center class / enterprise class


    Года 3 назад у них была мода ставить жестко б/у диски, сейчас вроде бы исправились.
    Ответ написан
    9 комментариев
  • Как удалить невалидные email после рассылки?

    @feanor7
    Системный администратор
    Красивого решения не подскажу, но что если пропарсить maillog через grep+awk+wc?
    ну то есть grep invalid /var/log/maillog выплюнет вам все строчки содержащие неверный email, а дальше awk с сортировкой,м?
    Ответ написан
    1 комментарий
  • Как подключить Babel 7 stage 3 во VueJS?

    kleinmaximus
    @kleinmaximus
    Senior Full-stack Javascript Developer
    Как менять настройки webpack

    Выполните vue inspect для вывода конфигурации в консоль или vue inspect > inspect.js для вывода в файл. Можно выводить не полностью, а конкретный узел.

    Используемые версии пакетов можно посмотреть в yarn.lock (package-lock.json) или непосредственно в node_modules.
    Ответ написан
    Комментировать
  • Как оформить небольшую прибыль от физ. лиц из Европы?

    @boss_lexa
    Без ИП и онлайн касс, для SaaS https://paddle.com/

    если будете продавать через российский paypal в иностранное валюте будете терять еще около 5% за конвертацию в рубли
    Ответ написан
    2 комментария
  • Какая готовая библиотека для авторизации VueJS существует?

    Sanasol
    @Sanasol
    нельзя просто так взять и загуглить ошибку
    Всё настраивается нормально, документация говно прост.

    Vue.use(VueAuth, {
        auth: require('./components/auth'),
        http: require('@websanova/vue-auth/drivers/http/axios.1.x.js'),
        router: require('@websanova/vue-auth/drivers/router/vue-router.2.x.js'),
        rolesVar: 'role',
        loginData: {url: '/api-token-auth/', method: 'POST', redirect: '/somepage', fetchUser: true},
        fetchData: {url: '/users/me/', method: 'GET', enabled: true},
        refreshData: {url: '/users/me/', method: 'GET', enabled: true, interval: 5},
        parseUserData: function(res) { return res; },
        logoutData: {url: 'auth/logout', method: 'POST', redirect: '/login', makeRequest: false},
    });


    components/auth.js
    module.exports = {
        request: function (req, token) {
            this.options.http._setHeaders.call(this, req, { Authorization: 'Token ' + token });
        },
    
        response: function (res) {
            let token = res.data.token
            if (token) {
                return token;
            }
        }
    };
    Ответ написан
    3 комментария
  • Помогает ли в больших js приложения (react, vue, angular) http2?

    riky
    @riky
    Laravel
    http2 c пхп в классическом варианте, например, не поможет, потому что на каждый запрос все равно будет запускаться отдельный процесс на сервере, а это накладно.
    очень многое от конкретного приложения зависит, а может что в вашем случае оно и не надо, эти фреймворки не панацея.
    Ответ написан
    Комментировать
  • Помогает ли в больших js приложения (react, vue, angular) http2?

    С подобным сталкивался. Решил проблему так, при загрузке страницы подгружал не все данные, а только малую часть (достаточную для того что бы юзер мог начать пользоваться приложением), и информацию о количестве всех данных. И после этого подгружал остальную часть данных. Для юзера это не заметно, а скорость загрузки приложения при первом обращении увеличивается в разы.
    Как вариант можно использовать GraphQL.
    Ответ написан
    4 комментария
  • Как организована система оповещений а-ля Вконтакте?

    goshakkk_reborn
    @goshakkk_reborn
    Скорее паттерн Publish-subscribe. Фронт-энд подписывается на какой-то тип сообщений на каком-то канале (например, new-message, new-friendship-request, new-gift на канале user-ID) и выполняет какие-то действия с данными этих сообщений (обновляет счетчик непрочитанных сообщение, делает новое уведомление через Web Notifications API, что угодно). А сервер, помимо записи данных в базу, отправляет новое сообщение какого-то типа на конкретный канал.

    Т.е. кто-то отправил новое сообщение. Сервер пишет его в базу и пушит на клиент:

    message = Message.create params[:message]
    Pusher["user-#{message.receiver.id}"].trigger('new-message', message)
    


    Клиент просто слушает и что-то делает с данными:

    var channel = pusher.subscribe('user-500fbf726446c604d2000001');
    channel.bind('new-message', function(data) {
      alert('Received new message from ' + data.sender.name + ': ' + data.text)
    });
    


    Посмотрите в сторону Web Sockets — socket.io/faye (если хочется у себя держать) или pusher (если хочется все это просто делать через сервис).
    Ответ написан
    4 комментария
  • React.js vs. Ember.js Чем React лучше Ember?

    Kaer_Morchen
    @Kaer_Morchen
    Разрабатываю web-приложения.
    Вопрос сам по себе не корректный. React библиотека для рендера интерфейса. Ember фреймворк для создания веб-приложений (амбициозных), в котором тоже есть библиотека для рендера интерфейса - Glimmer и она тоже поддерживается виртуальный DOM.

    Вот сравнение между React и Glimmer.
    Ответ написан
    2 комментария