• Почему не срабатывает тест vue-test-utils?

    Fragster
    @Fragster
    помогло? отметь решением!
    вероятно дело в этом:
    https://ru.vuejs.org/v2/guide/reactivity.html#%D0%...
    и должно сработать что-то типа
    wrapper.vm.nextTick().then(function(){
      expect(wrapper.find("button[disabled='disabled']").exists()).toBe(false)
    })

    ну или вместо
    wrapper.setData({ "selectedOffers": [1, 2, 3] });
    использовать
    wrapper.vm.selectedOffers = [1, 2, 3];
    Ответ написан
    3 комментария
  • Что такое ElasticSearch?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    Знаете, я с вами соглашусь, что хорошую вводную по Elastic трудно найти. Пока сам не переварил доков и не набил шишек многие элементарные понятия оставались для меня неясными. Поэтому вот моя вводная: Elastic можно использовать как NoSQL БД, только надо быть внимательным, т.к. всё-таки его основная задача поиск, а не удовлетворение функций БД. Например, если вы не настроили хранение исходных данных, а только индексацию, то свои данные вы уже не извлечёте из него. НИКОГДА. Только отдельные выражения, удовлетворяющие условиям поиска. Всё, тупик. Так же нельзя повторно индексировать уже загнанные в него данные. Т.е. перед загрузкой данных надо грамотно настроить индексацию, т.к. перестроить индекс, как это делается в реляционной БД невозможно. Нужно придумать новую схему индексации и перезалить данные в Elastic. Именно поэтому основное использование Elastic - как дополнение к существующей БД из которой данные можно перезалить по одному или полностью в Elastic (можно, конечно сделать схему Elastic->Elastic, но тоже есть нюансы).
    Ещё пару слов про схему. Это ЛОЖЬ, что в Elastic нет схемы данных. Она как раз есть и ооочень жёсткая. Жёсткая до того, что однажды определив, вы не сможете её поменять. Изначально Elastic оказывает медвежью услугу, разрешая вам дополнять схему по-умолчанию, но когда вы разберётесь с этой темой, то можете обнаружить, что Elastic "понастроил" такого у себя внутри, что остаётся только охреневать и переделывать всё явно, отказавшись от его "услуг" по автоматическому добавлению полей в схему.
    Так же в Elastic очень непросто строить сложные запросы на поиск и агрегатные запросы. Совершенно неинтуитивно. Но если освоитесь, то будет вам счастье. )))
    Несмотря за такие "страшные" вещи - Elastic классная система и по производительности агрегатных запросов не уступает платной версии MSSQL в поиске в многопроцессорных системах (проверял на одинаковых аппаратных конфигурациях с 16 ядрами). Так что если вам хочется большую скорость в агрегатных запросах и главное - это бесплатность, то берите и осваивайте Elastic. Мощности и возможности у него огромные. Но... нужно потратить приличные усилия на изучение.
    Ответ написан
    1 комментарий
  • Как присвоить значение из mapGetters в data?

    this.formData.description = this.getOneTask.description;

    Запомни в vue нельзя изменять свойство объекта прямым присваиванием!
    В таком случае свойство обьекта меняется, но vue не знает что данные изменились. Не работает реактивность, в результате компонент не перерисовывается
    Что бы заработало нужно использовать Vue.set() метод, например так:
    this.$set(this.formData, "description", this.getOneTask.description)

    Тогда все заработает.
    Почитай в vue доках про Vue.set() ? Какой у него синтаксис и какие псевдонимы. Тогда все получится
    Ответ написан
    1 комментарий
  • Как присвоить значение из mapGetters в data?

    Я думаю, чтобы работало нужно чтобы getOneTask возвращал Promise
    Что-то типа этого

    в actions
    async loadTaskById() {
        const {data} = await axios.get('[url]');
        commit('MUTATE_FORM_DATA', data);
    }


    в компоненте
    async created() {
                // вызываю через mapActions по AJAX загрузить данные
                await this.loadTaskById(this.$route.params.id);
                this.formData.description = this.getOneTask.description
    }
    Ответ написан
    Комментировать
  • Может ли быть API не как API?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Что вы наваяете - то и будет вашим API. Хоть рандомные поля возвращайте.

    То что вы привели как аргументацию тимлида - выглядит так себе. Апи для "внутреннего" использования отличается не тем что оно не строгое и там можно развести бардак, а тем что его менять проще и быстрее.

    Однако делать так как говорит тимлид - возвращать {error: '...'} если ошибка, и {/*всякие данные в зависимости от запроса*/} если все ок - совершенно нормальная практика, и ничего плохого в этом нет. главное чтобы поле error не попалось в каком-то ответе, это по сути ваше единственное ограничение. Считайте что вы используете union types с детерминатором по наличию поля error, если вам хочется высоких формальностей и успокойтесь :)
    Ответ написан
    Комментировать
  • Может ли быть API не как API?

    @bkosun
    То, что API будет использоваться для внутренних целей не означает, что там может быть "бардак". Правильно было бы изначально договориться о формате, который будет использоваться в вашей команде.

    Если соглашений нет, или возникают споры - есть некоторые общепринятые стандарты:


    Так же посмотрите OpenAPI, RAML, API Blueprint
    Ответ написан
    Комментировать
  • Может ли быть API не как API?

    mindtester
    @mindtester
    http://iczin.su/hexagram_48
    просто в копилку https://habr.com/ru/post/441854/
    (в остальном поддержу предыдущие ответ)
    Ответ написан
    3 комментария
  • Может ли быть API не как API?

    @karminski
    Senior React.JS Developer
    Так вот, для меня, - все AJAX запросы это API

    В этом ваша ошибка. Аякс это далеко не апи! Аякс это всего лишь асинхронный запрос к серверу. А что там на сервере - это другое дело.

    Апи можно дергать как Аяксом, так и curl и другими методами.
    Ответ написан
    Комментировать
  • Может ли быть API не как API?

    Alex_Wells
    @Alex_Wells
    PHP/Kotlin
    Нет, не "должен", но может. Лично я пришел к такой схеме:
    - 200-ые статус коды отправляются ТОЛЬКО тогда, когда все прошло успешно. В таком случае не будет никаких success: true или response: {} - а нужные данные, прямо на первом уровне нестинга. Собственно если взять за правило, что 200-ые коды возвращаются когда все ок, то можно полностью избавлятся от этих плохих проверок на наличие ключа в респонсе.
    - 400-ые и 500-ые будут попадать в отдельный колбек/реджектить промис, опять же избавляя от нужды проверять какие-то ключи. Для всех кодов ответов, кроме 400 и 422 - в ответе нету нихрена. Ни code, ни message, ни response. Вообще ничего. Вся инфа находится в самом http status коде. Для 400 и 422 прибавляется параметр code, который является номером ВНУТРЕННЕЙ ошибки (ну, например, есть какие-то предусловия для выполнения запроса - уникальность эмейл адреса при регистрации как пример) - по ней фронт может показывать отдельные ошибки либо выполнять какую-то логику.

    Плюс ко всему этому у себя локально и на сервере для фронта включен дебаг, добавляющий некий параметр _debug к каждому ответу. В нем может хранится любая инфа - сообщение с ошибкой (даже если ее можно понять по http коду или внутреннему), стак трэйс 500-ой ошибки и тд.
    Ответ написан
    Комментировать
  • Может ли быть API не как API?

    ivanvorobei
    @ivanvorobei
    iOS разработчик, канал https://t.me/sparrowcode
    Полиции нравов, которая проверит ваш АПИ и даст срок, нету. Тимлид может делать как угодно.
    Но для внутреннего использования не нужно придумывать костыли. Формат, который предложил тимлид, не упрощает жизнь и не выглядит удобным.

    P.S. Параметр code выглядит очень странно, есть коды ответа - используйте.
    Ответ написан
    2 комментария
  • Laravel - как вывести данные из одной таблицы на основе второй?

    @AlexRudkowskij
    Студент
    Пример:
    https://gist.github.com/AlexeyRudkovskiy/9fb4fcfd3...
    В начале каждого файла в комментарии указан путь где он находится.

    Далее пишете так:
    $product = App\Product::find(1); // Поулчаем запись с id = 1
    foreach ($product->categories as $category) {
        // Делаете что хотите с категориями этого товара
    }


    Тоже самое можно сделать и с категориями:
    $category = App\Category::find(1); // Поулчаем запись с id = 1
    foreach ($category->products as $product) {
        // Продукты в категории
    }


    Добавляем запись в категорию:
    $product = ...;
    $category = App\Category::find(1); // Для примера будем использовать категорию с id = 1
    $category->products()->attach($product->id);


    Или добавляем несколько записей за раз:
    $category = App\Category::find(1); // Для примера будем использовать категорию с id = 1
    $category->products()->attach([1, 2, 3]); // Добавляем товары с id = 1, 2, 3 в категорию с id = 1


    Удаляем продукты из категории:
    $category = App\Category::find(1); // Для примера будем использовать категорию с id = 1
    $category->products()->detach(1); // Удаляем продукт с id = 1 из категории с id = 1. Так же можно передать массив для удаления сразу нескольких продуктов из категории


    Всё описанное выше работает в обе стороны, т.е. можно таким же образом продукту добавлять и удалять категории(аналогично каждому из примеру, см. первый и второй пример)
    Ответ написан
    1 комментарий
  • Как сделать чтобы git не видел .idea?

    27cm
    @27cm
    TODO: Написать статус
    Для начала удалите папку из git: git rm -r --cached .idea

    В .gitignore должно быть просто .idea/ без звёздочки. Пример.

    Кстати, для .gitignore в PhpStorm есть плагин.

    Если сделать, как посоветовал Назар Мокринский, то файлы будут игнориться только при работе с git через PhpStorm, что в общем-то серьёзное ограничение. Тогда уж лучше использовать .git/info/exclude, но все эти способы отказаться от gitignore, скажем так, не пользуются популярностью.
    Ответ написан
    2 комментария
  • Есть ли разница между url()->route("named_route") и route("named_route")?

    @Yan-s
    Оба способа - алиасы https://laravel.com/api/5.6/Illuminate/Routing/Url...
    Ответ написан
    Комментировать
  • Есть ли разница между url()->route("named_route") и route("named_route")?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега Laravel
    Никакой разницы, кроме количества символов нет - и то и другое в конечном счёте использует \Illuminate\Routing\UrlGenerator.

    P.S. Поставьте себе IDE и легко сможете отвечать на такие вопросы самостоятельно - достаточно просто перейти к определению интересующих функций.
    Ответ написан
    Комментировать
  • Есть ли разница между url()->route("named_route") и route("named_route")?

    xpert13
    @xpert13
    Full Stack Developer
    Смотрим на исходник функции route:
    function route($name, $parameters = [], $absolute = true)
    {
        return app('url')->route($name, $parameters, $absolute);
    }


    Вывод - никакой разницы.
    Ответ написан
    Комментировать
  • Кто сталкивался со странным багом в PHP при использовании switch case?

    @neol
    Странное у вас значение в case. Мне кажется вы вообще не очень понимаете как работает switch.

    Для сравнения с $userLang выражение ($userLang>2) неявно приводится к типу int и там получается 0.
    Это не баг в PHP.
    Ответ написан
    3 комментария
  • Кто сталкивался со странным багом в PHP при использовании switch case?

    ivankomolin
    @ivankomolin
    Потому что вы перепутали место условия и место значения условия.

    Почему с 0 обрабаывает так:
    //В switch пишется условие, результат выполнения которого ищется в case
    switch(0) {
        case (0>2)://false, итог: 0==false, ответа да, case сработает
                $userLang = 1;
                break;
    }


    Почему с 1 вы не заметите:
    //В switch пишется условие, результат выполнения которого ищется в case
    switch(1) {
        case (1>2)://false, итог: 1==false, ответа нет, case не сработает
                $userLang = 1;
                break;
    }


    Почему со значениями больше 2х все хорошо:
    //В switch пишется условие, результат выполнения которого ищется в case
    switch(3) {
        case (3>2)://true, итог: 3==true, ответа да, case сработает
                $userLang = 1;
                break;
    }


    Поэтому никакой это не баг php. Это баг, который написали вы, невнимательно читая документацию.
    То что в некоторых случаях работало - это всего лишь стандартные для этого языка манипуляции с типами.
    Ответ написан
    Комментировать
  • Как защитить доступ к DynamoDB в ReactJS?

    opium
    @opium
    Просто люблю качественно работать
    Решается бекендом, прямой заступ с фронта только на чтение дают
    Ответ написан
    2 комментария
  • Как передать функцию в родительский компонент?

    @Listrigon
    У вас скорее всего this ссылается на что-то другое в момент срабатывания события, а не на текущий компонент.
    Ответ написан
    1 комментарий
  • К решить проблему с ubuntu 16.04 выключением?

    @PixelJuice
    Спешу вас обрадовать, вы столкнулись с очень кастомной проблемой. Тоже самое на 14.04 имел как то. Решение искал очень долго, но все же нашел. Все что касается софта тут уже вроде как почти все советовали, но скорее всего проблема не в этом.
    Если батарея садится и после того как, ноут выключался с кнопки, то смотреть надо в сторону двух вещей (как правило в комплексе) первое это биос и про это уже говорили, а вот второе как не странно - драйвера. В моем случае у ноута просто не отключалась видеокарта. Если очень грубо объяснять, то драйвер видеокарты большой и толстый клал на биос, те просто игнорил его как не нужного посредника обращаясь к железкам напрямую. Чуть позже я нашел на ютубе видос где парень вообще без южного моста под фрибсд загрузил ноут и у него клавиатура отлично работала несмотря на то, что так вроде не может быть
    Ответ написан
    3 комментария