Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (115)

Наибольший вклад в теги

Все теги (41)

Лучшие ответы пользователя

Все ответы (729)
  • Что можно считать глубокими знаниями в js?

    @MaxKorz
    Глубокое знание/понимание JS:
    - понимание как работает браузер;
    - как работает V8;
    - какой код будет оптимизирован движком, а какой нет и почему;
    - умение находить утечки памяти и знать что их вызывает;
    - умение пользоваться профайлером;

    Ну и сам JS: понимание прототипного наследования, замыканий, области видимости, this, promise, call, apply, bind, регулярки и т.п.

    Как работает браузер
    Под капотом V8
    Что убивает оптимизацию V8 (еще)
    Написание быстрого JS кода, еще и еще
    4 вида утечек памяти в JavaScript и как с ними бороться (перевод)

    Бонус - как работает интерпретатор javascript

    P.S. очевидно, что достичь глубоких познаний в JS будет сложновато без хотя бы средних познаний в английском
    Ответ написан
  • Есть сервис для того, чтобы научиться бегло понимать английскую речь?

    @MaxKorz
    Если мало времени (5-30 минут практики в день) - заходите на любой сервис с видео или музыкой и смотрите популярные видео на английском. Субтитры к видео прилагаются не всегда, в отличии от музыки (текст песни), но просто слушать речь (привыкая к ней) тоже полезно.
    youtube.com
    oplayer.org

    Рекомендую следующие каналы на youtube:
    По обучению английскому:
    www.youtube.com/user/krutopridumal
    www.youtube.com/user/duncaninchina
    Развлекательные:
    www.youtube.com/user/RayWilliamJohnson
    www.youtube.com/user/RunawayPlanet
    www.youtube.com/user/DeStorm
    www.youtube.com/user/TheFineBros
    www.youtube.com/user/sxephil
    Научные:
    www.youtube.com/user/Vsauce
    www.youtube.com/user/Vsauce2
    www.youtube.com/user/Vsauce3
    www.youtube.com/user/minutephysics

    Я делал именно так. Не скажу точно сколько времени я учу английский, но все эти каналы я смотрю без субтитров и понимаю речь, при том. что я не пользовался услугами репетиторов.

    Если времени много - скачиваете с thepiratebay.org или с рутрекера (и т.д.) любимый фильм или сериал в оригинале, а затем на notabenoid.com или www.opensubtitles.org/en/search ищите субтитры. И смотрите.

    Чем больше практики, тем будет легче.

    Если много времени и денег, то еще более лучший способ - нанять репетитора. Только не студентку филологического, а "натив спикера" - иностранца, приехавшего работать в Россию.
    Ответ написан
  • Где используются прототипы, наследование в JS приложениях?

    @MaxKorz
    Вы наверное шутите. Вы всегда используете prototype, когда используете классы
    class Car {
      constructor() {
        this.isRunning = false;
        this.engine = 'V8';
      }
      
      start() {
        this.isRunning = true;
      }
    }
    это синтаксический сахар над
    var Car = (function () {
        function Car() {
            this.isRunning = false;
            this.engine = 'V8';
        }
        Car.prototype.start = function () {
            this.isRunning = true;
        };
        return Car;
    }());


    bind нужен для передачи контекста. Самый банальный пример - стрелочные функции:
    this.setState({ loading: true });
    
    fetch('/').then(() => {
      this.setState({ loading: false });
    });
    это тоже самое, что
    this.setState({ loading: true });
    
    fetch('/').then(function() {
      this.setState({ loading: false });
    }.bind(this));

    пример из реального мира: https://jsfiddle.net/6L2wetcg/ при клике на кнопку alert выведет undefined, т.к. контекст вызова функции при клике отличается от того, в котором задается обработчик.
    Решение - использовать bind: https://jsfiddle.net/7u7qe61b/

    А как вы без наследования "два года" с angularJS приложениями работаете я не знаю.

    Банальный HttpService проверяющий авторизацию при запросах
    import {Injectable} from '@angular/core';
    import {Http, XHRBackend, RequestOptions, Request, RequestOptionsArgs, Response, Headers} from '@angular/http';
    import {Observable} from 'rxjs/Observable';
    import 'rxjs/add/operator/map';
    import 'rxjs/add/operator/catch';
    
    @Injectable()
    export class HttpService extends Http {
    
      constructor (backend: XHRBackend, options: RequestOptions) {
        let token = localStorage.getItem('auth_token'); // your custom token getter function here
        options.headers.set('Authorization', `Bearer ${token}`);
        super(backend, options);
      }
    
      request(url: string|Request, options?: RequestOptionsArgs): Observable<Response> {
        let token = localStorage.getItem('auth_token');
        if (typeof url === 'string') { // meaning we have to add the token to the options, not in url
          if (!options) {
            // let's make option object
            options = {headers: new Headers()};
          }
          options.headers.set('Authorization', `Bearer ${token}`);
        } else {
        // we have to add the token to the url object
          url.headers.set('Authorization', `Bearer ${token}`);
        }
        return super.request(url, options).catch(this.catchAuthError(this));
      }
    
      private catchAuthError (self: HttpService) {
        // we have to pass HttpService's own instance here as `self`
        return (res: Response) => {
          console.log(res);
          if (res.status === 401 || res.status === 403) {
            // if not authenticated
            console.log(res);
          }
          return Observable.throw(res);
        };
      }
    }

    Тем более, что весь react построен на наследовании от React.Component:
    export default class ComponentName extends React.Component


    Нужно коллекцию DOM элементов сделать массивом? Используем call
    var nodesArray = [].slice.call(document.querySelectorAll("div"));
    так же call используется для реализации наследования в es5 совместимом коде

    Нужно элегантно применить функцию к массиву? Используем apply
    var numbers = [1, 2, 3, 4];
    Math.max.apply(null, numbers) // 4
    Math.min.apply(null, numbers) // 1


    все эти вещи нужно знать не "для собеседования", а как раз чтобы продвинуться в профессиональном плане
    Ответ написан
  • Как объяснить клиенту, что дизайн необходимо оплатить, если он даже не понравился?

    @MaxKorz
    Заключали договор где все это описывали?
    Клиент извещён о том что в рамках заказа будет 1 версия дизайна и не более 5 правок бесплатно
    Дизайн разрабатывался после утверждения прототипов
    Дизайн содержит все пожелания клиента полученные из брифа и собранные в ТЗ

    Да - требуйте оплату услуг согласно заключенному соглашению, грозите судом
    Нет - на нет и суда нет
    Ответ написан
  • Верстать без фреймвороков это значит быть не професионалом?

    @MaxKorz
    Скорее всего правильно отшил.
    Заказчик платит за результат в короткий срок, а не за удовольствие программиста от кодерства.

    С нуля можно писать свои пет-проекты. При работе с заказчиками лучше использовать фреймворки, т.к:
    - Они проверены временем и сообществом (минимум багов)
    - Большое количество готовых плагинов (быстрое внедрение фич)
    - Новый разработчик легко войдет в разработку (уменьшение затрат на обучение и переписывание)
    - Быстрая разработка (нет необходимости кодить все подряд, а затем фиксить баги)

    У меня был коллега, который все писал с нуля. Не только CSS структуру, но и JS плагины. В итоге я ставил карусель за 5 минут (jquery + owl carousel), а он за пол дня свой велосипед который еще не пойми как работал на мобильных устройствах. В итоге его уволили за низкую производительность.
    Ответ написан

Лучшие вопросы пользователя

Все вопросы (43)