• Где учиться PHP?

    @iAlex195
    Советую почитать PHP 7. В подлиннике Игорь Симдянов, Дмитрий Котеров
    Ответ написан
    6 комментариев
  • Как сделать правильно Route для id и new?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    <Switch>
      <Route exact path={`${match.url}/`} component={List} />
      <Route exact path={`${match.url}/new`} component={New} />
      <Route exact path={`${match.url}/:id`} component={View} />
    </Switch>
    Ответ написан
    3 комментария
  • Как убрать hash(#) с пути react-router-dom?

    Вы используете компонент HashRouter, поэтому и хэши в адресной строке. Для вашей задачи вам подойдет BrowserRouter
    А для ссылок использовать компонент Link
    Ответ написан
    Комментировать
  • Есть ли расширение для браузера Google Chrome позволяющее вставить сгенерированный пароль в форму требующую ручного "побуквенного" ввода пароля?

    sim3x
    @sim3x
    Проще вставить в форму в девтулзах в value каждого из полей и руками отправить форму

    Как вариант - отключить жс на время

    И напишите в поддержку того сайта, что они очень-очень неочень
    Ответ написан
    Комментировать
  • На чем (за счет чего) рендерится html? Почему svg рендерится не с помощью видеокарты?

    sim3x
    @sim3x
    Только малая часть рендеринга страницы перенесена на видеокарту
    Большая часть вещей рендерится на цпу
    Грубо говоря, цпу генерит сайт на всю высоту, а потом видеокарта определяет, что показать во вьюпорте

    Про свг: свг1.1 очень крутая спека, если б ее внедрили (8+ лет назад) она б заменила весь цсс3 и сделала б все очень няшненько. Намного круче чем все есть сейчас
    Но никто не захотел ее пилить
    Ответ написан
  • На чём писать UDP-сервер под VPS: Java vs Node.js?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Никакой разницы. Выбирайте то, что лучше знаете и считаете более удобным.
    Ответ написан
    Комментировать
  • Какой сейчас хороший зарубежный регистратор доменов?

    @VoyagerRus
    Посмотрите NameCheap.com

    В качестве DNS и защиты DDOS - Cloudflare.com - бесплатные планы отлично работают
    Ответ написан
    1 комментарий
  • Single Page Application для интернет-магазина, какие технологии использовать?

    @vardoLP
    Ват ю сэй эбаут май мама?!
    А в чем собственно вопрос? Для простенького магазинчика разверните wordpress, установите плагин woocommerce и все готово.
    Ответ написан
    5 комментариев
  • Как правильно перезаписать значение state?

    Vlad_IT
    @Vlad_IT
    Front-end разработчик
    Вам нужно получить ваш объект, изменить поле и отослать обратно в setState

    1) через клонирование объекта
    let checkboxes= Object.assign({}, this.state.checkboxes); // Создаем копию, можно просто ссылку взять, но копию безопаснее
    checkboxes[e.target.value] = false; // изменяем поле
    this.setState({checkboxes}); // Сохраняем

    2) через оператор spread
    this.setState({
        checkboxes: {
              ...this.state.checkboxes,
              [e.target.value]: false // измененное поле объекта checkboxes
        }
    })
    Ответ написан
    1 комментарий
  • Как вы находите идеи домашних проектов?

    @YoloV
    Делайте проекты под свои нужны.
    Ответ написан
    Комментировать
  • Как достать PromiseStatus из fetch?

    lavezzi1
    @lavezzi1
    Вам не нужны статусы. Единственное что вам нужно, это узнать что промис разрезолвился. Просто дождитесь этого через await.

    Вариант с async/await.
    export default {
        data(){
            return {
                blockBtn: false
            }
        },
        methods: {
            async isWait(url) {
                this.blockBtn = true;
                let dosomething = await fetch(url)
                
                this.blockBtn = false;
            }
        }
    }


    Вариант с then
    export default {
        data(){
            return {
                blockBtn: false
            }
        },
        methods: {
            isWait(url) {
                this.blockBtn = true;
                let dosomething = fetch(url).then(() => {
                     this.blockBtn = false;
                });
            }
        }
    }


    Живой пример: https://jsfiddle.net/ujnpzqgf/

    Ответ написан
    1 комментарий
  • Как сделать Link из функции в react?

    Alexangeras
    @Alexangeras
    Как-то так
    import React, { Сomponent } from 'react'
    import { withRouter } from 'react-rouer-dom'
    
    class Game extends Component {
      constructor(props) {
        super(props)
      }
      finishGames = () => {
        this.props.history.push("/finish")
      }
      render() {...}
    }
    
    export default withRouter(Game)
    Ответ написан
    Комментировать
  • Оценка своего уровня. Как улучшить код?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    1. Используйте const вместо let для определения переменных которые не переопределяются в коде. Это помогает снизить когнитивную нагрузку с человека читающего код и негласный стандарт в React разработке.

    2. Такие вещи как globalStyles и конфигурацию store лучше вынести в отдельные файлы. Они могут со временем хорошо разрастись.
    По поводу globalStyles, вы вообще можете вынести их в отдельный css файл.

    3. Вместо:
    {
      isModal
      ? <Route path="/auth" component={AuthPopup} />
      : null
    }

    лучше:
    {isModal && <Route path="/auth" component={AuthPopup} />}


    4. Вместо:
    function mapDispatchToProps(dispatch) {
        return {
            autoLogin: () => dispatch(autoLogin()),
            getBrowser: () => dispatch(getBrowser()),
            getMedia: () => dispatch(getMedia())
        }
    }


    лучше:
    const mapDispatchToProps = {
      autoLogin,
      getBrowser,
      getMedia,
    };


    5. Точки с запятыми в конце то есть, то нет. Определитесь и приведите код к одному виду.

    6.
    & label {}
    & input {}
    & span {}

    Это не очень хороший подход. Во-первых ваши стили не изолированные, что может приводить к неожиданным результатам. Во-вторых у вас очень много дублирования стилей. Определите Input и Label как базовые компоненты и используйте в разных местах, то же с остальным если есть.

    7. Почему папка со страницами называется Containers? Дань бойлерплейтам?

    8. Использование trailing comma является хорошей практикой.

    9.
    import {combineReducers} from 'redux';
    import photoReducer from './photoReducer';
    import authReducer from './authReducer';
    import globalReducer from './globalReducer';
    
    export default combineReducers({
        photoReducer, authReducer, globalReducer
    })


    Все таки приятней работать с хранилищем в котором ключи не имеют в названии слова reducer:
    import {combineReducers} from 'redux';
    import photo from './photoReducer';
    import auth from './authReducer';
    import global from './globalReducer';
    
    export default combineReducers({
      photo, 
      auth,
      global,
    });


    10. Забудьте вообще, что в языке есть возможность использовать вложенный тернарный оператор:
    return e === 'invalid-email' ? 'Неверно указан e-mail'
        : e === 'user-not-found' ? 'Указанный e-mail на найден'
        : e === 'wrong-password' ? 'Неверный пароль'
        : e === 'email-already-in-use' ? 'Указанный e-mail уже используется'
        : e === 'network-request-failed' ? 'Нет подключения к интернету'
        : e === 'operation-not-allowed' ? 'Произошла ошибка, попробуйте снова'
        : e === 'popup-closed-by-user' ? 'Окно авторизации закрыто пользователем'
        : e === 'account-exists-with-different-credential' ? 'Аккаунт уже существует с другими данными, используйте другой способ авторизации'
        : e

    Это одна из самых худших практик в JavaScript разработке. Тут лучше подойдет конструкция switch case

    11. Константы actionTypes лучше вынести в папку constants и разложить по разным файлам, иначе со временем у вас там будет свалка.

    12. Вместо:
    import {SET_ACTIVE, CHANGE_VALUE, SET_DEFAULT, UPLOAD, UPDATE_IMAGE, SET_IMAGE_ERROR, SET_LIKE, SET_COMMENT, ADD_ARTICLE_SUCCESS, FETCH_ARTICLES_START, FETCH_ARTICLES_SUCCESS, FETCH_ARTICLES_ERROR} from '../actions/actionTypes';

    Лучше:
    import {
      SET_ACTIVE,
      CHANGE_VALUE,
      SET_DEFAULT, UPLOAD,  
      UPDATE_IMAGE,
      SET_IMAGE_ERROR,
      SET_LIKE,
      SET_COMMENT,
      ADD_ARTICLE_SUCCESS,
      FETCH_ARTICLES_START,
      FETCH_ARTICLES_SUCCESS,
      FETCH_ARTICLES_ERROR,
    } from '../actions/actionTypes';


    13. Попробуйте внедрить библиотеку reselect. И для получения значения из store вместо записи вида:
    function mapStateToProps(state) {
        return {
            browser: state.globalReducer.browser
        }
    }


    использовать селектор:
    const mapStateToProps = state => ({
      browser: browserSelector(state),
    });
    Ответ написан
    12 комментариев
  • Как сделать быстрый ввод тегов В PhpStorm?

    @pu6elozed
    Bitrix, fullstack
    Это называется в шторме live templates. Там можно указать свои собственные шаблоны ака сниппеты. Собственно автор скорее всего так и сделал
    Ответ написан
    Комментировать
  • Как в JS проверить является ли объект файлом?

    Vlad_IT
    @Vlad_IT Куратор тега JavaScript
    Front-end разработчик
    var isFile = file instanceof File
    Ответ написан
    Комментировать
  • Как работает подход Unit of Work?

    @Flying
    Unit of Work - это паттерн определяющий логическую транзакцию т.е. атомарную синхронизацию изменений в объектах, помещённых в объект UoW с хранилищем (базой данных).

    Если обратиться к исходному описанию этого паттерна у Мартина Фаулера - то видно что объект, реализующий этот паттерн отвечает за накопление информации о том какие объекты входят в транзакцию и каковы их изменния относительно исходных значений в хранилище. Основная работа производится в методе commit() который отвечает за вычисление изменений в сохранённых в UoW объектах и синхронизацию этих изменений с хранилищем (базой данных).

    Паттерн Unit of Work как правило не является полностью самостоятельным, он обычно тесно связан с паттерном Identity Map, задача которого - сохранение карты созданных объектов, взятых из хранилища с тем чтобы гарантировать что одна единица информации из хранилища представлена ровно одним экземпляром объекта данных в приложении. Это позволяет избежать конфликтов изменений т.к. не допускает ситуации когда два объекта, представляющих один и тот же элемент данных в хранилище, изменены по-разному. Информация из Identity Map используется в методе commit() паттерна Unit of Work для вычисления разницы между исходными данными и накопленными изменениями.

    Поскольку для вычисления разницы (и, соответственно, определения того что и каким образом должно быть изменено в хранилище) необходимо знать какие данные и как именно хранятся в объектах - как правило необходима также реализация паттерна Metadata Mapping, описывающего связь между содержимым хранилища (к примеру таблицами и столбцами базы данных) и классами / свойствами объектов.

    Также, если данные в хранилище не являются независимыми (к примеру связи между таблицами в базе данных) - может потребоваться реализации ряда паттернов, отвечающих за сохранение информации о связях между данными (это паттерны раздела Object-Relational Structural Patterns в каталоге паттернов).

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

    Если говорить о PHP - то лучшей реализацией этих паттернов на PHP безусловно является Doctrine ORM. В частности в разделе Working with Objects документации Doctrine можно найти хорошее описание и множество примеров использования паттернов, описанных выше.
    Ответ написан
    6 комментариев
  • На чем зарабатывает Quora, toster или подобные сайты?

    shmatuan
    @shmatuan
    8 year of Web, 5 years of Vue
    Можно просто выключить адблок и увидеть ответ
    5bd0447166cd2277435374.png
    Ответ написан
    Комментировать
  • Документирована ли postMessage?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    Там же в документации есть и ссылки на спецификации: https://developer.mozilla.org/ru/docs/Web/API/Wind...

    MDN вполне можно доверять, если что-то не соответствует стандарту, там это указано.
    Ответ написан
    Комментировать
  • Интернет-магазин на nodejs?

    Sanes
    @Sanes
    Javascript плохо дружит с математикой. Не биллинг конечно, но я бы задумался.
    Ответ написан
  • Как переопределить функцию в классе EloquentUserProvider?

    Astatroth
    @Astatroth
    Я тут случайно
    Создайте свой провайдер, наследующий EloquentUserProvider, зарегистрируйте и переопределяйте сколько душе угодно.
    Ответ написан
    Комментировать