• Как избежать ошибки eslint no-param-reassign в моем случае?

    Lynn
    @Lynn
    nginx, js, css
    Вы изменяете item, а в настройках eslint запретили это.

    Я бы, например сделал так

    const item = this.itemsData.find(val => val.id === this.selectedItem.id);
    if (item) {
      item.name = newItem.name;
      item.data = newItem.data;
    }
    Ответ написан
    Комментировать
  • Что делать если команда говнокодит?

    Мы стараемся не запускать эту проблему посредством code review, пытаясь распределить нагрузку по ревью между наиболее опытными участниками. Если в коде есть проблемы - тикет возвращается на доработку с замечаниями. Даже если банально не мержится с главной веткой. Попробуйте наладить этот процесс.

    Также мы всё собираемся настроить Continuous Integration. Jenkins может прогонять по коду проверку на соблюдение стандартов и покрытие тестами, а затем показывать результаты в красивом виде. Если чей-то коммит показывает более чем N ошибок в расчёте на единицу объёма кода - можно возвращать на исправление.

    Прямо уж откровенной копипасты и лапши у нас вроде бы нет почти. Мы стараемся избегать её, придумывать декларативные абстракции во всех случаях, где много тупого императивного кода, писать в функциональном стиле. Я думаю, что необходимы постоянные целенаправленные усилия в этом направлении, чтоб не допускать засилья энтропии.

    Ещё пара идей.
    • можно отправить разработчиков на какой-нибудь онлайн-курс по чистому коду, хотя я таких даже не знаю, но наверняка должны быть
    • или устраивать "хакатоны чистого кода", на коих команда разбивается на пары-тройки, каждая из коих пишет какую-нибудь маленькую, но полезную, а главное чистую и оттестированную штуковину, причём тема - по собственному выбору. Потраченное время - оплачиваемое, разумеется. Это уже зависит от руководства фирмы, согласится ли оно на такие развлечения.


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

    Ну и важно, чтобы у самих разработчиков была установка на хороший код, профессиональная гордость. У фрилансеров её, бывает, нет, а есть отношение "тяп-ляп, лишь бы работало и лишь бы часы оплатили, а там хоть потоп". Учитывая, что их заказчики занимаются code review нечасто, развитие такого отношения закономерно. Но всё-таки хочется писать красивые программы. Такое желание обязано быть.

    Я, конечно, сам не волшебник, я только учусь, и работа с командой - такая штука, которой надо постоянно учиться. Видимо, вы тоже учитесь; успехов в этом.
    Ответ написан
    2 комментария
  • Удаленная работа на американскую, что оформить?

    kleinmaximus
    @kleinmaximus
    Senior Full-stack Javascript Developer
    У меня ИП на УСН с доходов (в нашем регионе ставка 4%).

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

    Для открытия счета требовался договор с компанией. Я предоставил на английском, банк сам занимался переводом, причем бесплатно, просто на это потребовалось несколько дополнительных дней. Если договор с переводом, то вообще хорошо. Ну, еще потребуются всякие свидетельства ИП, ОГРН, декларация за прошлый год и пр.. Все это обычно лежит в специальной папочке у любого ИП :)

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

    Расчеты с компанией были по инвойсам, которые я так же отправлял в банк.

    В декларации указывал поступления в рублях после продажи валюты.

    Не парился вообще!
    Ответ написан
  • Удаленная работа на американскую, что оформить?

    Zifix
    @Zifix
    Barbatum
    13% проще, но не особо безопаснее. Если открыть ИП, можно легально уменьшить налог до 6%.

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

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

    https://evileg.com/ru/post/200/
    Ответ написан
    9 комментариев
  • Где взять дизайны (.psd) для практики верстки?

    Danakishi
    @Danakishi
    Full stack web dev
    У HTML Academy есть рассылка, иногда присылают на почту макеты для практики верстки
    Ответ написан
    1 комментарий
  • Как исправить ошибку eslint – prefer-arrow-callback?

    @lemme
    Frontend
    // JS task
    gulp.task('js', () => (
       gulp.src('./dist/**/*.js')
            .pipe(concat('scripts.min.js'))
            .pipe(uglify())
            .pipe(gulp.dest(dest));
    ));
    Ответ написан
    Комментировать
  • Как сделать проверку по атрибутам?

    Shutik
    @Shutik
    Погромист халявщик
    Options can be passed via data attributes or JavaScript. For data attributes, append the option name to data-, as in data-animation="".

    просто добавьте атрибут к тем элементам где требуется задержка data-delay='{"show":"500", "hide":"100"}'
    Ответ написан
    Комментировать
  • Как рандомно вывести три элемента из array в js?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    function getRandom(arr, n) {
        var result = new Array(n),
            len = arr.length,
            taken = new Array(len);
        if (n > len)
            throw new RangeError("getRandom: more elements taken than available");
        while (n--) {
            var x = Math.floor(Math.random() * len);
            result[n] = arr[x in taken ? taken[x] : x];
            taken[x] = --len;
        }
        return result;
    }

    Отсюда.
    Ответ написан
    2 комментария
  • Как реализовать функционал на jquery?

    qork
    @qork
    { background: #F00B42 }
    Это если учитывать вложенность тегов, как на тостере.
    $('.btn_comments-toggle').click(function(){
       $(this).parent().next('.question__comments').toggle();
    });
    Ответ написан
    Комментировать
  • Как переписать функцию на обычный js с jquery?

    @GreatRash
    jQuery делает следующее.

    Array.prototype.slice.call(document.querySelectorAll('#random-search-field')).forEach(function(val, key, arr) {
      val.addEventListener('keyup', function() {
        list.search(this.value);
      }, false);
    });
    Ответ написан
    2 комментария
  • Как переписать функцию на обычный js с jquery?

    devdesire
    @devdesire
    Программер
    var search = document.getElementByID('random-search-field');
    search.onkeyup = function() {
    //действия
    }

    Как то так!
    Ответ написан
    Комментировать
  • Как исправить баг в Safari с flexbox?

    @bromzh
    Drugs-driven development
    .col-auto {
        flex-grow: 1;
        flex-basis: initial; // Тут надо не 0, а initial, например. 
    // Иначе сафари справедливо считает, что мин. размер блока нулевой, 
    // так что переносить блоки не надо, они всё равно помещаются
        max-width: 100%;
        padding: 8px;
    }


    PS И у .row не надо прописывать `flex: 0 1 auto;`, если только он. сам не является дочерним flex-элементом.
    Ответ написан
    Комментировать
  • Как пополнить баланс в paypal?

    TravelExpert
    @TravelExpert
    LifeHacker
    Если карта не добавлена - добавьте, далее, просто на сайте магазина, при выборе и переходе в PayPal, входите под логином и паролем, выбираете привязанную карту для оплаты(если у вас их несколько), и конвертацию лучше поставить на стороне банка, а не PayPal. В PP - дороже выходит. Собственно и всё!
    Ответ написан
    1 комментарий
  • Как пополнить баланс в paypal?

    15432
    @15432
    Системный программист ^_^
    При оплате через PayPal можно выбрать одну из привязанных карт, с которой и снимутся средства. Советую при этом выбрать конвертицию в валюте, чтоб обмен был по курсу банка, а не PayPal (он дороже)
    Ответ написан
    2 комментария
  • Как импортировать все файлы из subfolders конкретного расширения?

    Чтобы сохранить структуру, нужно для каждого набора entries указывать соответствующий output.path. Это возможно только если экспортировать массив из конфигов:

    var path = require('path');
    var glob = require('glob');
    
    var files = glob.sync('./app/src/views/**/*.js');
    var dirs = getDirs(files);
    
    var configs = [];
    
    for (var dirname in dirs) {
        var files = dirs[dirname];
    
        configs.push({
            entry: getEntries(files),
            output: {
                path: dirname.replace('app/src/views', 'build'),
                filename: '[name].js'
            }
        });
    }
    
    module.exports = configs;
    
    
    
    function getDirs(files) {
        var dirs = {};
    
        files.forEach(function (file) {
            var dirname = path.dirname(file);
    
            if (!dirs[dirname]) {
                dirs[dirname] = [];
            }
    
            dirs[dirname].push(file);
        });
    
        return dirs;
    }
    
    function getEntries(files) {
        var entries = {};
    
        files.forEach(function (file) {
            var name = path.basename(file, path.extname(file));
    
            entries[name] = file;
        });
    
        return entries;
    }
    Ответ написан
    1 комментарий
  • Нужен ли background для изучения swift?

    bonditmo
    @bonditmo
    Java
    Нет, не нужен. Свифт специально разработан упрощенно, ибо Эппл заботиться о своих платформах, девайсах..
    Ответ написан
    Комментировать
  • Как вырезать из строки только то что нужно?

    miraage
    @miraage
    Старый прогер
    Долой извращения.
    const [os, version] = "ios-9.3".split("-");
    Ответ написан
    Комментировать
  • Как вырезать из строки только то что нужно?

    yarkov
    @yarkov Куратор тега JavaScript
    Помог ответ? Отметь решением.
    var str = "ios-9.3";
    var os = str.replace(/^([^\-]+)\-[0-9\.]+/, "$1");
    var version = str.replace(/^[^\-]+\-([0-9\.]+)/, "$1");
    console.log(os);
    console.log(version);
    Ответ написан
    2 комментария
  • Как фронтенд взаимодействует с бэкэндом?

    dajnz
    @dajnz
    Frontend и backend web-разработчик
    Если используете vue.js, и, скорее всего, вам нужна отработка действия пользователя без перезагрузки страницы, тогда попробуйте плагин vue-resource. Чисто технически он отправляет на сервер запрос нужного вам типа (POST, GET итд.) с произвольными данными используя XmlHttpRequest.

    this.$http.post('/select-city', {cityId: 1}).then((response) => {
              // success callback
          }, (response) => {
              // error callback
          });


    Вышеприведенный сниппет может послужить примером как обрабатывать событие по клику на карточке, при этом на сервер вы можете отослать например ID карточки или что-то другое, а там уже нужно реализовать обработку POST запроса для роута /select-city (если рассматривать данный пример) и переданным ID как этого требует бизнес-логика вашего приложения.
    Ответ написан
    1 комментарий
  • Как фронтенд взаимодействует с бэкэндом?

    evnuh
    @evnuh
    Поиск Гугл помог мне, впусти и ты его в свой дом
    Первая ссылка в гугле по запросу "как устроен интернет":
    http://noob.onthe.io/Как+устроен+Интернет
    Was it so hard?
    Ответ написан
    Комментировать