• Дополнительный заработок программисту?

    При всем моем уважении, но такой подход крайне деструктивен для жизни.

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

    2) Поэтому рационально будет идти по двум путям:

    - увеличивать доход на своей текущей работе (либо при смене работы)
    - идти в полукоммерческую схему со своим продуктом.

    Т.е. если вы просто найдете способ себя продать дороже на работе, то вы будете делать все ту же работу (то же время), но при этом вам станет в разы приятнее жить. Во-вторых, вкладывайте силы в развитие того, что потом можно будет продать, как за время, так и сделать на основании этого собственный проект (продукт), и уже получить совсем другие деньги, на совсем других условиях.

    p.s. у меня в свое время была работа, поддержка ряда клиентов в it-инфрастуктуре, пару клиентов на поддержке сайтов, плюс контракты на продвижение сайтов. Просто вся жизнь превратилась в работу, как смог накопить на квартиру, сразу же от этого всего отказался в пользу жирной работы, и своих проектов.
    Ответ написан
    2 комментария
  • Прокомментируете тестовое на 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 комментария
  • Почему createStore не видит редюсер?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    reducers/index.js третья строчка. Посмотрите какой экспорт в файле и какой вы делаете импорт.
    Ответ написан
    Комментировать
  • Как удалять пустые значения в объекте перед отправкой на бэк?

    rockon404
    @rockon404
    Frontend Developer
    function filterEmptyProps(obj) {
      const result = {};
      Object.entries(obj).forEach(([ key, val ]) => {
        if (val || val === 0) {
          result[key] = val;
        }
      });
    
      return result;
    }

    Чистая функция, возвращает новый объект.

    Демо.
    Ответ написан
    Комментировать
  • Поможете выбрать ресурс по изучению JS?

    Самый эффективный и быстрой метод обучения - сразу начать писать код. Поставьте себе задачу и подумайте как её выполнить на таком-то языке программирования. Если чего-то не понимаете гуглите. Самую базу можете посмотреть в видео уроках Sorax'a например. А непонятные моменты, которые будут появлятся со временем, и чтоб понять как всё работает, то вам поможет всеми известный учебник learn.javascript.ru
    Ответ написан
    5 комментариев
  • Объясните что такое полиморфизм простыми словами ?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    Я в шоке, если честно... Вот как ни начинаются вопросы про ООП в Javascript, так руки в ноги и понеслось... Кто Java, кто C# примеры приводит. да ещё портянками суровыми. И каждый приписку делает — дескать в Javascript не так наглядно.

    То есть человек, изучающий Javascript, и никогда не видевший других языков, тут же радостно закивает от вида незнакомого синтаксиса? Вы и взаправду преисполнены веры в такой светлый финал?

    Спрошу всех отвечающих:
    1. Number.prototype.toString() и Object.prototype.toString() — это полиморфизм или нет?
    2. Date.prototype.hasOwnProperty() и Object.prototype.hasOwnProperty() — это наследование или нет?
    3. В чём тогда между ними разница?

    ПыСы. И ещё хочу спросить всех знатоков любых языков, кроме указанного в вопросе — если в темах с тэгами Python, Ruby, PHP, C# я начну строчить куски кода на Javascript, потому мне кажется, что так понятнее, как скоро подписанные на эти тэги попросят меня забанить?
    Ответ написан
    7 комментариев
  • Как отличить клик сделанный мышкой от клика на сэнсорном экране?

    politon
    @politon
    HTML5,CSS3,JS,PHP,SQL,API,canvas,animation...
    Получаешь девайс с помощью, например https://github.com/matthewhudson/current-device
    И уже по условию задаешь для click нужное действие
    Ответ написан
    Комментировать
  • Как разпарсить строку?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Проверяйте, что у вас получается при конвертации в число:

    const arr = str.split(' ').map(n => isNaN(n) ? n : +n);
    Ответ написан
    1 комментарий
  • Как оптимизировать повторяющийся js код?

    @Arik
    function fun(id, selector) {
      selector || (selector = ".next-slide-text");
    
      var chbox = document.getElementById(id);
      if (chbox.checked) {
        document.querySelector(selector).click();
      }
    }
    
    fun('tab5');
    fun('dvd1');
    Ответ написан
    7 комментариев
  • Задачка на codewars, как решить?

    Stalker_RED
    @Stalker_RED
    Еще в копилку, 50 символов
    checkRange=(a,x,y,s=0)=>(a.map(i=>s+=x<=i&i<=y),s)

    Мне вот тоже кажется, что вот это выражение x<=i&i<=y нужно сократить.
    Ответ написан
    2 комментария
  • Задачка на codewars, как решить?

    Shemil
    @Shemil
    checkRange=(a,x,y)=>a.map(b=>n+=b<x==b>y,n=0)|n
    checkRange=(a,x,y,c=0)=>a.map(v=>c+=v<x==v>y)|c


    Более понятнее
    function checkRange(array, x, y, counter = 0) {
      return array.map(item => counter += ((item < x) == (item > y))) | counter
    }
    
    checkRange([2, 5, 6, 7, 1, 3, 4, 11, 56, 49],1,7)

    где, после итерация
    return [1, 2, 3, 4, 5, 6, 7, 7, 7, 7] | 7 // возращает 7
    Ответ написан
    7 комментариев
  • Как создать часы на JS c привязкой к серверному времени?

    Stalker_RED
    @Stalker_RED
    При загрузке страницы передаете время сервера.
    На клиенте берете текущее время, вычисляете насколько оно отличается от серверного.
    Затем по setInterval() раз в секунду берете время клиента, применяете к нему поправку, и обновляете циферки на дисплее.

    Делать сам отсчет на setInterval(..., 1000) - идея так себе, потому что он вообще не гарантирует, что следующий вызов функции будет через секунду. Он гарантирует, что вызов будет НЕ РАНЬШЕ ЧЕМ через секунду. Ну и есть еще замедление работы при переключении вкладки, сворачивании окна, а так же уход компьютера в сон, гибернацию, вот это все.
    Ответ написан
    Комментировать
  • Стоит ли учиться по видеоурокам HTMLacdemy?

    vicodin
    @vicodin
    Имею некоторый опыт
    Если честно, то сам курс хтмлакадеми качественнее чем их вебинары, лучше пройти его весь(с премиум акком за 300 рублей или сколько там), этих знаний с головой хватит, чтобы начинать получать деньги за вёрстку, ну а дальше только опыт.
    Ответ написан
    6 комментариев
  • Как задать регулярное выражение через шаблон в переменной?

    0xD34F
    @0xD34F Куратор тега JavaScript
    reg = new RegExp(`(.*\\${pattern}$)`)
    Ответ написан
    Комментировать
  • Как задать регулярное выражение через шаблон в переменной?

    Stalker_RED
    @Stalker_RED
    const pattern = '\.js'
    const reg = new RegExp('/(.*'+pattern+'$)/')
    Ответ написан
    Комментировать
  • Возможно ли сделать эффект поедания border'a?

    qork
    @qork
    { background: #F00B42 }
    Ответ написан
    Комментировать
  • Почему БП АТХ не стартует?

    @nehrung
    Не забывайте кликать кнопку "Отметить решением"!
    О, тут возможны множество причин.
    1. Перед пуском крайне полезно убедиться в исправности силовых транзисторов и диодов. Вместо плавкого предохранителя полезно включить лампу накаливания 100 ватт - по её свечению (или несвечению) можно многое понять, да и если там действительно неприятность, то без такой лампы предохранителей не напасёшься.
    2. Дежурка даёт не только 5, но и 12 вольт для питания управляющих схем БП - проверить. Иногда эти 12 в действительности повышены до 15...20 - не пугаться, это норма, стабилизируется в канале дежурки только 5 вольт.
    3. Проверить исправность микросхемы контроллера ШИМ. Тут есть такой нюанс: если этот контроллер - не TL494 (или его точный аналог 7500), то такой БП лучше не ремонтировать, а пустить на запчасти, поскольку остальные контроллеры (из собственного опыта) слишком капризны, легко сгорают и не стоят затраченного труда. Если же это TL494, можно идти дальше. Самая поверхностная проверка 494: на ножке 13 должны быть стабильные 5,0 вольт, на ножке 5 - пила с частотой несколько десятков килогерц, на 4 и 16 - ноль вольт, на 2 - 2,5 вольт.
    4. Если это всё в норме, а запуска нет, попробовать поменять TL494.
    5. Бывает кратковременный запуск, затем через 1...3 сек отключение - тогда искать короткое замыкание в выходных цепях.
    Это очень краткое перечисление, в действительности по ремонту БП АТХ написаны (и выложены в Сеть) большие тома и ещё больше "охотничьих рассказов".
    Ответ написан
    Комментировать
  • Почему Vue.JS не видит переменную?

    ernesto77
    @ernesto77
    php, rb, py, js, webdev
    компонент email-error нигде не инициализирован, наверно надо добавить компонент email-error, примерно что то вроде этого:
    Vue.component('email-error', require('./EmailError.vue'));
    
    new Vue({
            el: '#main',
            data: {
                email: "Ваша почта",
                emailwriting: "Укажите email который Вам выдали.",
                submit: "Подтвердить",
                seen: true
            },
            watch: {
                emailwriting: function (val) {
                    var re = new RegExp('^[\\w.+\\-]+@iuca\\.kg$');
                    if(re.test(this.emailwriting)){
                        console.log('Email прошел проверку');
                    }
                }
            },
            components: ['email-error']
        })
    Ответ написан
    Комментировать
  • Какой код начать писать на JS?

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

    А вообще, делайте хоть как нибудь. Хоть в процедурном стиле, хоть с использованием GOTO, хоть называя переменные сМиЩнЫмИ названиями. Главное начните уже писать хоть что-нибудь, если упражнения вы уже переросли. Перед тем как вы напишете что-то полезное вам ПРИДЕТСЯ прокачивать скилл на чем-то простом.

    Подавляющее большинство всей литературы о программировании не о том как сделать 2+2 а о том, как сделать некий кусок работы более простым/быстрым/надежным/дешевым способом. Но никакого смысла нет в это вникать, если вы не можете написать вообще никаким.
    Ответ написан
    1 комментарий
  • Какую программу лучше использовать верстальщику для работы с psd?

    wbrapist
    @wbrapist
    Ты в порядке?
    Ответ написан
    Комментировать