• Как рассчитать объем работ в часах?

    @Stalinko Куратор тега Фриланс
    PHP'шник и фрилансер до мозга костей
    Только на основе собственного опыта подобных работ. Оценка - это целое искусство, ему учатся всю жизнь. Ну и желательно умножать эти часы на 1.5-2, потому что на деле так и выходит.
    Ответ написан
    Комментировать
  • Скоростная конкурентоспособная верстка: оптимальное кол-во мониторов/очки виртуальной реальности?

    sim3x
    @sim3x
    Скоростная верстка подразумевает, что вы пишете непрерывно код, а потом мельком проверяете результат
    Ответ написан
    6 комментариев
  • Оценка своего уровня. Как улучшить код?

    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 комментариев
  • Promise как в .then получить ответ GET запроса?

    TTATPuOT
    @TTATPuOT
    https://code.patriotovsky.ru/
    let inputRub = document.getElementById('rub'),
        inputUsd = document.getElementById('usd');
    
    
    
    inputRub.addEventListener('input', () => {
        function postData(url){
            return new Promise(function(resolve,reject){
                let request = new XMLHttpRequest();
                request.open('GET', url);
                request.setRequestHeader('Content-type', 'application/json; charset=utf-8');
                request.addEventListener('readystatechange', function() {
                    if (request.readyState === 4 && request.status == 200) {
                        resolve(request.response);
                    } else {
                        reject();
                    }
                });
                request.send();
             });
             
    
        };
        postData('/js/current.json')
        .then((response)=>{
            let data = JSON.parse(response);
            console.log(data);
        })
    });

    В resolve нужно передать ответ сервера, а уже потом в then можно будет этот ответ получить и обработать.
    И вы используете .catch, а не .then. В catch падают ошибки, которые произошли до того, как будет then. Т.е. когда вы вызываете reject();
    Ответ написан
    1 комментарий
  • Что можно сделать лучше?

    @KappyJS
    Линки прикрутить, не знаю, по мне обычный хороший сайт. Если совсем рьяно, то убрать шаблон Lorem ipsum в отзывах, а так же обратить внимание на консоль.
    Ответ написан
    1 комментарий
  • Как не присваивать класс, если значение переменной null?

    0xD34F
    @0xD34F Куратор тега Vue.js
    :class="form.FirstName !== null ? form.FirstName ? 'input-successes' : 'input-error' : ''"

    или

    :class="{ 'input-successes': form.FirstName, 'input-error': form.FirstName === false }"

    или

    :class="form.FirstName !== null && [ 'input-error', 'input-successes' ][+form.FirstName]"

    или

    :class="({ true: 'input-successes', false: 'input-error' })[form.FirstName]"

    Лучше бы подобное конечно в computed/метод завернуть, как-то громоздко получается.
    Ответ написан
    2 комментария
  • Можно ли научиться хорошо программировать если сначала теория потом практика?

    saboteur_kiev
    @saboteur_kiev Куратор тега IT-образование
    software engineer
    ходить в вуз, а там полная фигня

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

    Если вам так сложно учиться в вузе, а потом учиться самостоятельно, то может быть вообще не стоит идти в ИТ?
    Там в области манкикодинг очень высокая конкуренция, по сравнению с тем, что было 20 лет назад.
    Ответ написан
    3 комментария
  • Как обращаться к определенным элементам на странице в Vue.js?

    delphinpro
    @delphinpro
    frontend developer
    Когда вы пишете на вью, вы должны ориентироваться на состояние данных. Грубо говоря, императивный подход здесь не совсем в тему.
    Вы не должны писать "по клику присвоить класс"
    Вместо этого вы должны делать так
    data() {
      return {
        isShowHelloBlock: false,
      }
    }
    <div :class="{someClass : isShowHelloBlock}">Hello</div>
    <button @click="isShowHelloBlock = true">toggle block</button>


    Изменяя состояние, вы изменяете представление.
    Ответ написан
    2 комментария
  • Может ли помочь данное направление подготовки ВУЗа при изучении веба?

    sim3x
    @sim3x
    Для веба требуется умение читать (английский) и повторять инструкции

    Я не уверен в каком классе или дошкольном заведении такому учат
    Ответ написан
    Комментировать
  • Как изменить цвет по клику?

    lastuniverse
    @lastuniverse
    Всегда вокруг да около IT тем
    Много где:

    1. вместо let u = document.querySelector('.u-p');
    должно быть let u = document.querySelectorAll('.u-p');

    2. вместо this[i].onclick = function() {
    должно быть u[i].onclick = function() {

    3. вместо u.style.color = 'red';
    должно быть u[i].style.color = 'red';

    Разберитесь с циклами и массивами а так-же будьте внимательней.

    let u = document.querySelectorAll('.u-p');
    for (let i = 0; i < u.length; i++) {
      u[i].onclick = function() {
        u[i].style.color = 'red';
      }
    }
    Ответ написан
    Комментировать
  • Как найти возможность в любой момент брать шабашки на 1000-2000 рублей?

    Zoominger
    @Zoominger
    System Integrator
    А мне нужно чтобы была возможность в любой день взять какую-нибудь подработку на 1-2 т.р.

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

    Можно ли себя называть миддлом, если твой код говно?

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

    как писать поддерживаемый код?

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

    webinar
    @webinar Куратор тега Веб-разработка
    Учим yii: https://youtu.be/-WRMlGHLgRg
    Сколько времени у вас уходит на развертыванием веб-проекта

    3 часа 14 минут. Не зависимо от ТЗ и сложности. Просто чудо какое-то что б не делал всегда 3,14 часов. Что бы не делал - 3,14 просто ПИ...тое число.

    Хочу ускориться, делать больше работы за единицу времени

    Найми сотрудников. Или прими за единицу времени большую единицу. Еще есть опыт, он со временем даст прирост скорости.

    Неужели создание сайта (верстка, бэкенд, фронтенд, проектирование бд итд) настолько нудный и муторный процесс?!

    Вам виднее, это дело вкуса. Если Вам нудно - значит нудный. Попробуйте копать траншеи, может веселее пойдет.

    Поделитесь секретными инструментами, приемами, фреймворками, позволяющими выполнять проект за считанные дни.

    boostrap, vue, jquery, gulp, нормальная IDE, опыт и т.д.
    если надо волшебства - беритесь за проекты, которые делаются за "считанные дни". Например, работайте только wp и готовыми шаблонами. Думаю за пару часов можно собрать сайт (3 часа 14 минут).
    Ответ написан
    Комментировать
  • Как сделать эффект скольжения на слайдере?

    @S-a-n-d-r-0
    В css свойство transition. Позволяет плавно менять любое другое свойство. Например, если вы расположите верстку слайдов в слайдере так
    5d74153c72c36502580876.png
    И будете переключать их не свойством display, а задавая сдвиг этого ряда слайдов каким-нибудь left или transform: translateX(...), то применив transition к этому свойству получится плавный эффект плавного переключения слайдов.
    Ответ написан
    Комментировать
  • Как начать программировать под web (frontend, backend)?

    @Lord_Dantes
    Создаете папку называете " мой веб проект ".
    Создаете там файл index.html и main.css
    И создаете свой первый сайт. Первый шаг выполнен.

    Для достижения остальных 249125125 шагов купите ПРО-версию интернета ведь он такой дорогой!
    Ответ написан
    Комментировать
  • Ответьте, пожалуйста, на вопросы по ES6?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Ох, сдается мне пока рано всё это обсуждать. Есть у меня ощущение, что критическая масса практики еще не накоплена, шишки не набиты, грабли не собраны, говорить пока не о чем...
    Ответ написан
    Комментировать
  • Как сделать анимацию логотипа?

    SmthTo
    @SmthTo Куратор тега CSS
    Все перепёлки мира будут оплакивать мою смерть.
    Что первое, что второе, по описанию, требуют WebGL. Второй вариант проще и легче в плане кода будет: статичная сфера с текстурой + текст, который описывает движение по её орбите.

    Можно на CSS сделать достаточно убогую бесконечную прокрутку карты, но она не будет учитывать геометрию шара.

    Типа так:


    UPDATE. Увидел такой баг в Android Chrome в результате совместной работы border-radius и overflow:
    5d694ce0ed71b148762968.png
    Нашел решение хаком. Нужно добавить следующее к такому блоку:
    -webkit-mask-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC); /* this fixes the overflow:hidden in Chrome/Opera */


    Это исправило проблему, обновил песочницу.
    Ответ написан
    3 комментария
  • Зачем нужны psd макеты для создания сайтов?

    Moskus
    @Moskus
    Строго говоря, Photoshop - не самый удобный инструмент для создания макетов, есть средства, которые позволяют получить из макета разметку и изображения более коротким путем. Но это не отменяет того факта, что разработка дизайна сайта и разработка разметки - задачи для двух разных людей с разными навыками и даже областями деятельности, которые противоречат друг другу. Попробуйте заставить разработчика front end слушать заказчика на тему "сайт выглядит дёшево, давайте используем цвета повеселее", и поймёте, почему дизайн делает не он.
    Ответ написан
    Комментировать