• Прокомментируете тестовое на react?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    1. Хотелось бы видеть в проекте использование redux. react+redux - это самый распространенный и востребованный стек в React разработке.

    2. Почему все хандлеры и состояния находятся в App, а не в Main? Как вы потом эту кашу собираетесь масштабировать? Переносите все, что связанно только с Main в Main. По-хорошему смотрите пункт 1.

    3. Слишком много функциональных компонентов. Подумайте их где можно заменить на классы с реализованным shouldComponentUpdate или на PureComponent, чтобы убрать лишние вызовы render этих компонентов.

    4. import Logo from 'images/Logo.png';
    называть пути к ресурсам с заглавной буквы неправильно.

    5. Вместо:
    const StyledLogo = styled.img.attrs({
      src: Logo,
      alt: 'Aviasales'
    })`
      width: 60px;
      height: 61px;
    `;

    Удобней в использовании:
    const StyledLogo = styled.img`
      width: 60px;
      height: 61px;
    `;

    и:
    <StyledLogo src={logo} alt="Aviasales" />

    6.
    const Error = ({ text }) => (
      <StyledError dangerouslySetInnerHTML={{__html: text}} />
    );

    зачем тут html?
    Для сохранения переносов строки есть css правило:
    white-space: pre-line;

    7. Вместо:
    let element;
    
    if (error && !isLoading) {
      element = <Error text={error} />;
    }
    if (!error && isLoading) {
      element = <Loader />;
    }
    if (!error && !isLoading) {
      element = (
        <>
        <Heading />
        <Main
        isCurrencyExchanging={isCurrencyExchanging}
        activeCurrency={activeCurrency}
        handleCurrencyChange={this.handleCurrencyChange}
        ticketsFilteredByStops={ticketsFilteredByStops}
        stops={stops}
        handleStopsChange={this.handleStopsChange}
        handleUncheckOther={this.handleUncheckOther}
        />
        </>
      );
    }
    return element;

    Лучше:
    if (isLoading) return <Loader />;
    
    if (error) return <Error text={error} />;
    
    return (
      <>
        <Heading />
        <Main
          isCurrencyExchanging={isCurrencyExchanging}
          activeCurrency={activeCurrency}
          handleCurrencyChange={this.handleCurrencyChange}
          ticketsFilteredByStops={ticketsFilteredByStops}
          stops={stops}
          handleStopsChange={this.handleStopsChange}
          handleUncheckOther={this.handleUncheckOther}
        />
      </>
    );


    8. Вместо:
    filterTickets = (tickets, stops) => {
      return tickets.filter((ticket) => {
        return values(stops).indexOf(ticket.stops) !== -1;
      });
    };

    Лучше:
    filterTickets = (tickets, stops) => tickets.filter(
      ticket => values(stops).includes(ticket.stops),
    );


    9. Не пропускайте отступы между методами и между вложенными свойствами css.

    10. Вместо:
    componentsDidMount() {
      // много кода
    }


    Лучше:
    componentsDidMount() {
      this.fetchSomeData();
    }


    11. Директории и индексные файлы для каждого компонента, имхо, лишнее. Лучше компоненты определять в одноименном файле и только когда возникнет необходимость в его декомпозиции, заменять на директорию и index.

    12. Loader и Error самое место в директории components/core или что-то вроде того. Там же, по-хорошему, должны находиться базовые компоненты: кнопки, инпуты, табы, чекбоксы.

    13. Styled компоненты, имхо, лучше писать в файле с компонентом, где они применяются. Так анализ кода происходит гораздо быстрей и легче поддерживать. Исключение - переиспользуемые компоненты.
    Даже если вам больше нравится выносить, называть файл style неправильно, вы там описываете компоненты, а не просто стили.
    Ответ написан
    3 комментария
  • Простыми словами о this в стрелочных функциях?

    Stalker_RED
    @Stalker_RED
    Стрелочные функции не создают собственный контекст this, а используют значение this окружающего контекста.
    © mdn

    простыми словами:
    у стрелочной функции this указывает не туда, где она была объявлена, а туда, где она была вызвана.

    group.d() вызваный внутри group делает все как надо, а вызваный в контексте window - нет. И более того, у него нет return.

    UPD: вообще group.d это обычная функция, стрелочная уже у него внутри.
    Ответ написан
    Комментировать
  • Простыми словами о this в стрелочных функциях?

    https://habr.com/company/ruvds/blog/419371/

    Потому что функция d ничего не возвращает, чего вы ожидали ?
    let group = {
    
        prop: false,
    
        d: function () {
            return (() => {
                this.prop = true;
                return this.prop;
            })();
        },
    };
    
    console.log(group.d()); // true
    console.log(group);     // {prop: true, d: ƒ}
    Ответ написан
    1 комментарий
  • Как начать работать во frontend?

    @cluberr
    Это лучшая подборка ресурсов от лучших в мире курсов по Frontend, которая есть на данный момент со всем что нужно знать.
    Все на английском, но без него в этой сфере никак.
    https://frontendmasters.com/books/front-end-handbo...
    И да, обратите внимание на сами курсы
    https://frontendmasters.com/
    при желании в сети можно найти в открытом доступе записи.
    Ответ написан
    3 комментария
  • Как начать работать во frontend?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    В академию нужно приходить подготовленным. Академия не учит алгоритмам и структурам данных, подразумевается, что ты это уже умеешь. А без этого от академии толку будет мало.

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

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

    Я, по первости, вкладывая своё личное время, вытягивал бегемотов из болота, затрачивая своего личного времени 20+ часов на каждого, без всякой компенсации, просто из принципа, что раз могу значит должен.

    Однако, в целом, толку от этого мало, потому что да, курсант сдал интенсив, но что у него там осталось в голове - никому не известно. Поэтому с мая месяца я взял таймаут и не беру курсантов, перевариваю эту ситуацию и вырабатываю взвешенное отношение к ситуации.

    Таким образом резюме - прорешай олимпиадных задачек штук 100 разной сложности, выведи базовую алгоритмику и структуры данных на рефлексы. Это прям must have независимо от языка, на котором ты пишешь сейчас и будешь писать когда-либо, ибо это первейшие и универсальные навыки в программировании. Без этих навыков в профессии делать нечего. ИМХО.

    ЗЫ: Видывал я и синьоров, которые на обе ноги хромают в алгоритмах и структурах данных. Мде. Жизнь полна чудесов.

    ЗЫ2: Я всех отправляю на кодварс прокачивать скиллы в алгоритмах. Однако в последнее время кодварс стал зело тормозной. Пичалька. :(
    Ответ написан
    Комментировать
  • Какие есть альтернативы Google AdSense?

    noys
    @noys
    красноглазик
    РСЯ + Яндекс RTB - лучше дохода не найти особенно в денежных тематиках + налоги белые, пенсия
    Советую почитать https://www.cossa.ru/trends/187742/
    Ответ написан
    Комментировать
  • Как научиться вёрстке сайтов с нуля?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Как уже было сказано выше — htmlbook.ru. Там есть раздел «шаг за шагом» или практикум… его стоит просмотреть. Познакомиться с тегами что есть, со свойствами.

    Дальше углубляться в понятие семантики, смотреть css фреймворки (Bootstrap и подобные) на предмет разметки и вообще… Потом просто взять какой макет (благо в сети фришных PSD макетов хватает) и верстать верстать верстать. Желательно что бы у него был человек, который сможет оценить проделанную работу и указать на недостатки.

    В общем побольше практики, найти какой красивый сайтик и сверстать все с нуля например.

    И последнее но не наименьшее — ему нужно будет попытаться одеть верстку на какой-то движок/проект. Обычно это хорошо помогает выявлять недостатки в структуре документа.
    Ответ написан
    Комментировать
  • Зачем изучать несколько языков программирования(c++, java)?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Есть смежные языки, которые не пересекаются в плане конкурентности, а наоборот дополняют друг друга.
    Например javascript/html/css/kotlin
    Или например bash/c++ вообще никак не противоречат друг другу.
    Ответ написан
    Комментировать
  • Какой экспресс-курс по Tensorflow в 2018 вы можете посоветовать?

    aRegius
    @aRegius
    Python Enthusiast
    Добрый день!

    Посмотрите Tensorflow Cookbook (GitHub версия c кодом).
    Ответ написан
    Комментировать
  • Какой экспресс-курс по Tensorflow в 2018 вы можете посоветовать?

    @arsenalsar
    На Kaggle.com есть курсы без воды и с практикой.
    Ответ написан
    Комментировать
  • Shared сервера timeweb взломаны (или qh.php)?

    opium
    @opium
    Просто люблю качественно работать
    Смотрите дату создания файла идете в логи сервера и смотрите что было в это время, если заразили через взлом то найдете команду как его поставили если нет то не найдете ну и тогда долбить подддержку
    Ответ написан
    Комментировать
  • Зачем изучать несколько языков программирования(c++, java)?

    profesor08
    @profesor08
    Потому что это интересно.
    Ответ написан
    Комментировать
  • Зачем изучать несколько языков программирования(c++, java)?

    @ponaehal
    Полу-милорд, полу-купец,
    Полу-мудрец, полу-невежда,
    Полу-подлец, но есть надежда,
    Что будет полным наконец.

    Пушкин А.С. когда это говорил имел ввиду, что если выбираете стязю программирования, то чем быть полуспециалистом по тридцати технологиям, лучше в совершенстве освоить одну.
    Так и сказал.
    Ответ написан
    1 комментарий
  • Зачем изучать несколько языков программирования(c++, java)?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Во-первых, гипотеза лингвистической относительности утверждает, что чем больше языков знаешь, тем гибче и богаче твой логический аппарат. По своему опыту могу сказать, что это правда. Например изучение Lisp'ов существенно расширило мои возможности в других языках. Но мой опыт и мнение не так авторитетны, как авторов всемирно известного бестселлера "Программист-прагматик" - Эндрю Ханта и Дэвида Томаса, которые пишут: «Изучайте по крайней мере один новый язык ежегодно. Разные языки решают одни и те же проблемы разными способами. Изучив несколько разных подходов, вы сможете расширить свой кругозор и не погрязнуть в рутине.»

    Во-вторых, рано или поздно профессиональный рост java-программиста, например, неизбежно приводит его к необходимости глубоко понимать работу компилятора и виртуальной машины, а это невозможно без знания C++, на котором они написаны.

    В-третьих, java-программист свободно лазающий за ответами в исходники JVM, способный дебажить сборщик мусора, писать JNI-библиотеки и использовать Compiler API для метапрограммирования имеет больше предложений работы и более выгодные условия.
    Ответ написан
    4 комментария
  • Какие есть альтернативы Google AdSense?

    @KingAnton
    CPA партнерки
    Товарные тизеры https://recreativ.ru/
    РСЯ
    Видеореклама
    Ответ написан
    3 комментария
  • Какие есть альтернативы Google AdSense?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Юзаю рекламную сеть Rakuten и CityAds
    Ответ написан
    Комментировать
  • Где можно учить canvas?

    @ForgetAll
    Почему никто не вспомнил отличные работы Юры
    Ответ написан
    Комментировать
  • Где можно учить canvas?

    vicodin
    @vicodin
    Имею некоторый опыт
    Сам ужаснулся, что мало годных материалов на тему canvas/webgl, курсов вообще нет, даже задумался о том, чтобы записать свой :)
    Остаётся читать доки и разбираться в готовом коде
    Ответ написан
    1 комментарий
  • Это вообще люди делают?

    @JunDevTest
    Контакты: thejundev@gmail.com | @juniordev
    Ещё в тему.
    https://tproger.ru/digest/top-20-web-sites-2016/
    А вообще, когда смотришь на такого рода приложения в браузере, будь-то example или лендинг, хочется творить и это реально мотивирует. Однако, практической пользы у такого сайта практически нет, но зато своему fullstack-тимлиду есть чем похвастать в не рабочее время за стаканом пива.
    Ответ написан
    2 комментария