• React - как писать тесты, чтобы линтеру они нравились?

    miraage
    @miraage
    Старый прогер
    Нужно сказать линтеру, что некоторые глобалы.
    Попробуйте в eslint конфиге для тестов указать что-то такое:

    "env": {
        "jest": true
    }


    Или

    "env": {
        "jest/globals": true
      }
    Ответ написан
    1 комментарий
  • React Router - разное поведение dev и build - как исправить?

    @McBernar
    Вам нужно, чтобы сервер направлял все запросы на индексный файл. Когда вы заходите на главную — сервер находит ее, потому что там есть index.html. Когда вы переходите по ссылкам — реакт трекает это и рендерит нужные страницы. Но как только вы пытаетесь открыть что-то напрямую — сервер просто не находит вашего about.html.

    Гуглите «htaccess перенаправление на индекс»

    Ладно, не гуглите, вот

    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.html [L]
    Ответ написан
    1 комментарий
  • Как отличать поведение взрослых от поведения детей в мобильном приложении?

    miraage
    @miraage
    Старый прогер
    Никак. Мне 30 и веду себя, как ребёнок.
    Ответ написан
    Комментировать
  • Как стать Junior верстальщиком?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Я все починил, теперь ваша карьера и ориентация в порядке!
    Не благодарите.
    5de34eb3a4d87370303583.png
    Ответ написан
    10 комментариев
  • Идти на стажировку за бесплатно или учиться дома?

    Zoominger
    @Zoominger Куратор тега IT-образование
    System Integrator
    Идти на стажировку за бесплатно

    This. У вас будет реальный опыт и реальная бумажка, что вас хоть где-то потерпели.

    неплохо в html, css (сверстано порядка 20 одностраничных макетов PSD)

    Фигня.

    сейчас учу основы JS (есть пара работ: todo, calculator, математическая игра с генерацией рандомных примеров)

    Ничто.

    Как бы вы поступили на моем месте?

    Побежал бы на стажировку бегом.

    P. S. А ещё я забыл пункт "целовать ноги тому, кто позвал на стажировку".
    Ответ написан
    1 комментарий
  • Как у вас происходило обучение python?

    Battle_Hamster
    @Battle_Hamster
    Если дейтсвительно только начинаете - действительно советую Stepik
    Там и теория преподнесена, и практика. При чём задачи не принимает, пока не проходишь все тесты, соответственно костыль на костыле не получится, надо писать что-то действительно работающее
    Ответ написан
    3 комментария
  • Yii2 как в контроллере понять, что в форме нажата кнопка Save?

    myks92
    @myks92 Куратор тега Yii
    Нашёл решение — пометь вопрос ответом!
    1. Кнопка Save тут ни причем.

    2. У модели есть 2 метода $model->save() и $model->validate()
    $model->save() - сохраняет и валидирует
    $model->validate() - только валидирует данные.

    У вас должно быть немного иначе:
    if ($model->validate()) {
            ///здесь ваш код
            $model->save()
            пишем данные, закрываем модалку
        } else {
            выводим результат валидации (рендерим аякс? или встроенная валидация?)
        }
    }


    С загрузкой данных из формы
    if ($model->load(Yii::$app->request->post()) && $model->validate()) {
    ///code
       $model->save()
    }


    Валидацию вы выбираете сами. Я думаю, что простые правила валидации валидируются ajax. А сложные уже после нажатия кнопки и запроса на сервер. Например, длину текста валидируем на клиенте. А сложную логику после запроса

    Вопрос: как мне в контроллере проверить, что была нажата кнопка Save в форме?

    Зачем вам проверять нажата ли кнопка? Это вопрос JS. А в контроллере вы смотрите на переданные данные из формы. Если они есть, то вы их обрабатываете. Если их нет, то вы показываете форму.
    Ответ написан
    2 комментария
  • Yii2, Grid view, Label - как сделать метку из нескольких полей по внешнему ключу?

    myks92
    @myks92 Куратор тега Yii
    Нашёл решение — пометь вопрос ответом!
    Нужно создать новый метод в модели User:

    Как вариант создать в представлении анонимную функцию:

    public function getFullName(string $separator = ' '): string
    {
        return implode($separator, array_filter([
            $this->firstName,
            $this->middleName,
            $this->lastName
        ]));
    }


    'value'=> function($model) {
    return $model->first_name .' '. $model->last_name
    }


    Использовать:
    user.fullName
    //или
    
    $user->getFullName(', ')
    Ответ написан
    1 комментарий
  • Существует ли "чистая" установка Yii2?

    @Mylistryx
    composer require "yiisoft/yii2:*" - таким образом вы получите действительно чистую установку. По сути у вас будет только файлы composer.json, composer.lock и папка vendor в которой будет лежать сам фреймворк с зависимостями. Вы сможете строить структуру своего приложения самостоятельно, т.е. сами решать, где у вас будут лежать контроллеры, модели, view и прочее. Это можно изменить и в готовых шаблонах basic/advanced.
    Теперь по шаблонам:
    Basic - пример организации описанного выше. Используется обычно для небольших приложений с одной точкой входа (/web/index.php). Есть как свои преимущества, так и недостатки (если не менять структуру). Из преимуществ - реально проще, нет дублирования классов и т.д. Из недостатков - расширяемость только модулями, не очень удобный способ хранения конфигов (нельзя переопределять локальными значениями). Всё это конечно можно легко устранить.
    Advanced - типа расширенный вариант. Нужен далеко не всем. Позволяет организовать несколько точек входа (frontend и backend по умолчанию) и легко добавлять свои. К примеру копируем папку backend, правим в ней namespace`ы и вуаля, у нас есть API, который настраиваем на уровне конфигов и он нам отдает только JSON. Мне так удобней по крайней мере. При этом все приложения могут использовать общие компоненты\модели\сервисы и т.д. из папки common.
    Для лучшего понимания я рекомендую посмотреть\прочитать все, что есть в блоге у Elisdn (ссылку давали выше), мне в свое время это очень сильно помогло. Ну и рекомендую сначала ознакомиться с его же курсом по сервисному слою. Привыкнув к AR и т.д. тяжело потом будет перейти на что то другое. К примеру у меня сейчас как источники данных используется несколько сторонних сервисов, SOAP сервис и своя БД (и не одна!). Без сервисного слоя это было бы ооочень тяжело поддерживать и обслуживать в дальнейшем. А так - у меня есть сервисный слой, который представляет собой "черный ящик", и что и как у него там происходит внутри меня в принципе не интересует.
    В интернете сейчас несколько книг и обучающих курсов обучающих работе с Yii2, но из всего этого я рекомендую Elisdn! 99% курсов дают общее понимание о фреймворке, но загоняют в жесткие рамки, что помоему очень плохо. Отсюда и мнение, что Yii2 умирает и всё прочее.
    Ответ написан
    Комментировать
  • Почему при загрузке страницы скрипт не видит offsetHeight картинки?

    TommyV888
    @TommyV888
    -
    Это происходит из-за долгой загрузки картинки т.к. DOMContentLoaded срабатывает при окончании загрузки html и построении dom, но он не ждет загрузку картинки, используйте window.onload. Вот тут можно про это почитать подробнее и с примерами кода.
    Ответ написан
    Комментировать
  • Можно ли использовать setTimeout рекурсивно?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Перенесите следующий вызов в тело функции, которая выполнится через паузу:
    function scrollToStep(coord = 0, step = 20, pause = 1000) {
      if (coord > step) {
        setTimeout(function() {
    	    coord -= step;
          window.scrollBy(0, step);
    	    scrollToStep(coord, step, pause)
        }, pause);
      } else {
        return false;
      }
    }
    
    buttonChoice.addEventListener('click', function() {
      let catalog = document.querySelector('.catalog');
      scrollToStep(catalog.getBoundingClientRect().top);
    });
    Ответ написан
    3 комментария
  • Как полностью написать сайт с нуля, если ты знаешь только frontend?

    saboteur_kiev
    @saboteur_kiev Куратор тега Веб-разработка
    software engineer
    Неужели для того, чтобы написать простенький сайт без головокружительной графики, гифок и прочей "фигни" нужно для начала:


    Для того, чтобы написать простенький сайт, можно просто html.

    Вы лукавите, не указывая в вопросе какой именно функционал вы хотите. Если сказать хотелки, можно подсказать какими технологиями они реализуются. Тогда будет понятно куда копать.
    Простенький сайтик может быть hello world, а может быть адаптивный "одностраничник со скроллингом" на webassembly.
    Ответ написан
    Комментировать
  • Как используя addEventListener передать параметр в функцию?

    @alexeyproject
    // Вариант 1. Привязываем контекст и первые по порядку параметры
    function someFunk(a, b, event) {
    	console.log(a, b, event);
    }
    element.addEventListener('click', someFunk.bind(null, 1, 2));
    
    // Вариант 2. Используем интерфейс EventListener
    function someFunk(event) {
    	console.log(this.a, this.b, event);
    }
    element.addEventListener('click', {handleEvent: someFunk, a: 1, b: 2});
    Ответ написан
    5 комментариев