• Как сделать проверку на существование $scope в AngularJS?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    if($scope.formData && $scope.formData.telephone) {

    p.s. Хватит использовать $scope!
    Ответ написан
  • Как решить проблему с блоком,разделенным на четверти?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    flexbox! пример

    они встают в ряд только при ширине в 49%


    Потому что надо учитывать пробелы. Либо убираем пробелы из html либо лепим кастыли с font-size: 0 на контейнер.
    Ответ написан
    4 комментария
  • Как в angular js ,реализовать загрузку файлов,связка yii2+angular js?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Ответ написан
    Комментировать
  • Актуален ли данный туториал?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    не актуален. Это ангуляр в стиле 2012-ого года. Сейчас ангуляр чуточку другой.

    PhoneCat не подходит.


    Почему не подходит? Единственное что, тут нужно смотреть примеры более актуальные. Например вот:

    https://github.com/gkalpak/angular-phonecat/tree/p... и https://github.com/teropa/angular.js/tree/update-p... к сожалению обновление документации ангуляра происходит мягко скажем медленно.
    Ответ написан
  • Для чего inversedBy и mappedBy в Doctrine и в чём разница?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Для объявления двусторонних связей между сущностями. Справедливости ради - в 99% случаев двусторонние связи не нужны и их лучше по возможности избегать. Как минимум потому что они не нужны и позволяют делать страшные вещи, ну и на производительность сказывается это пагубно.
    Ответ написан
    Комментировать
  • В чем моя причина провала тестового задания Яндекса?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Ну давайте я покритикую:

    возьмем файлик

    1) вы не разобрались как объявлять методы у прототипов с новой нотацией `class`:

    class Travelsort {
        constructor() {}
        sortTickets(tickets) {}
    }


    2) вы не умеете пользоваться исключениями.
    if (!Array.isArray(cards)) {
        throw new ValueError('Wrong input');
    }


    3) использование let там где должен использоваться const

    4) в принципе использование переменных там где их быть не должно

    5) вы зачем-то реализовали свою функцию сортировки, я не увидел в требованиях отсутствия возможности использовать старый добрый Array.prototype.sort

    6) Общие замечания по кодинг стайлу. snake_case там где должен быть camelCase, пишите с большой буквы то что должно быть с маленькой и т.д.

    7) нарушения принципа единой ответственности. У вас объеткт умеет и сортировать и писать куда-то. Это категорически плохо.

    8) Если исправить 7-ой пункт то наш класс превращается просто в функцию.

    Далее... берем следующий файлик

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

    2) вы зачем-то тут в прототип объекта строки впихиваете функции для парсинга CSS. Таким образом мы нарушаем принцип единой ответственности. Да и в целом расширять без надобности прототипы объектов как-то не ок.

    Чуть дальше проскролил - вы пытаетесь расширить прототип строк для того что бы добиться API jquery? ух, батенька.

    3) очень много дублирования.

    4) очень плохо с protected variations.

    Справедливости ради, ваш код входит в категорию ">50% JS кода", так что не расстраивайтесь. Просто для работы в яндексе нужен чуть более высокий уровень и понимание вещей.
    Ответ написан
    17 комментариев
  • Как новичку влиться в мир современного фронт-енда?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    с мнениями, что знания ангуляр1 "вредны".


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

    Например вот то как я готовлю ангуляр, а вот как другие. Последнее считается вредным. Скажем если вы используете $scope в ангуляр приложении версии 1.5+ то вы уже готовите ангуляр не правильно. Если у вас бизнес логика вытекает в компоненты - тоже что-то странное и тд. Но последнее уже никак к ангуляру не привязано.

    Стоит ли тратить время дальше на jQuery?

    Учите javascript. и так и так понадобится. Причем серьезно учите. И не только основы, надо еще общие вещи, не привязанные к js знать. Типа ооп, функциональное программирование, принципы solid, grasp, dry и другие аббривиатуры. Короче именно серьезно так подойти к этим вопросам. Паралельно разобраться с HTTP, уметь не только пользоваться API но и проектировать их и т.д. Короче это огромный пласт знаний который формируется не один год.

    Стоит ли тратить время сейчас на Backbone?

    Нет, не стоит. Backbone это низкоуровневая библиотека для тех кто знает как все делать. Человеку который не отличает MVC от MVVM оно только навредит (у меня есть парочка проектов доставшихся от других разработчиков которые демонстрируют проблему).

    На сколько экосистема ReactJS стремительно изменяющаяся по сравнению с angular1-> angular2 ?


    С учетом того что с моммента выхода angular 1.x до момента выхода angular2 (а он еще в бэте) прошло 4 года... мегабыстро.

    Всё упирается в то, что времени/сил после работы на учебу не много остается и не хочется тратить их на то, что в последствии окажется "вредным".


    Просто учить нужно не фреймворк, а принципы на которых все это основано. Понимать идею. И тогда ничего не будет вредно. Большинство же разработчиков втупую копипастит код и радуется этому.
    Ответ написан
    1 комментарий
  • Почему в PHP 200.81 - 200.73 равно 0.080000000000013?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Комментировать
  • Что за шаблон Декоратор, и зачем он нужен?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    То что вы реализовали - не декоратор. Декоратор это интерфейсы а не абстрактные классы.

    суть шаблона Декоратор


    Декоратор, это такой шаблон, при котором мы "расширяем" поведение объекта без изменения оного. При этом важная состовляющая - интерфейс объекта не меняется.

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

    К примеру при использовании контейнера зависимостей, мы можем обернуть какой-то сервис в декоратор временно, и в декораторе логировать аргументы и результат выполнения методов. Скажем это нужно только для быстрого дебага. Делаем быстренько декоратор, подсовываем его вместо настоящей реализации (обычно это одна строчка в di-конфиге) и вуаля. Мы не вносили изменений в код а стало быть не могли ничего сломать случайно. История изменений будет выглядеть красиво. Да и тестировать такие вещи намного проще.
    Ответ написан
    Комментировать
  • Как протестировать это в Angular?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    вы уточните что именно вы хотите протестировать, сервис или контроллер?

    Сервис - $httpBackend мокаем (есть в доке). Контроллер - мокаем UserService.
    Ответ написан
    7 комментариев
  • Что такое автотесты кода и какие они бывают?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    логика простая. Вы же как-то проверяете что все работает? А теперь представьте что вы написали программу которая делает это за вас и она дает два результата - работает (зеленое) или не работает (красное).

    Тесты можно писать на разных уровнях. От отдельных модулей вашего приложения (масые маленькие кусочки) до всей системы (вся многопользовательская игра). Далее подключаем здравый смысл. Мы сначала должны убедиться что каждый отдельный компонент системы работает, а затем проверять как работают компоненты в сборе.

    Далее гуглите.
    Ответ написан
    Комментировать
  • Как написать директивы(компоненты) которые взаимодействуют друг с другом?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    В этом примере директивы в дом дереве размещаются "одна в другой", в моем случае дом деревья директив не пересекаются.


    Значит и не должны они взаимодействовать напрямую.

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

    То есть в идеале компоненты понятия не имеют откуда приходит состояние, и сами не меняю его, просят сервисы это делать. Так изменения проходят по кругу и можно организовать любой уровень логики.
    Ответ написан
  • Чем отличаются директивы и компоненты в Vue.js?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    компоненты - существительные (элементы). директивы - прилагательные (атрибуты), по сути как декораторы для компонентов. Они должны расширять поведение компонентов.
    Ответ написан
    Комментировать
  • Есть ли альтернатива конструкций if else?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    есть, называется меняйте алгоритм, унифицируйте структуры, устраняйте различия, ну и ООП нормальное, а не курильщика (без статики, с использованием инкапсуляции, разделения ответственности и полиморфизма).
    Ответ написан
    Комментировать
  • Как проверить отношение аргумента к методу?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Ответ написан
    Комментировать
  • Так что же выбрать для REST API -> ORACLE, (NODE vs PHP)?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    вам дела делать или играться? Если играться - попишите на ноде, заодно и опыта наберетесь. А если дела делать - php, раз опыт есть.

    Под вашу задачу что угодно сойдет, а ангуляру плевать на чем реализована серверная часть, лишь бы вы правильно апишку сделали.
    Ответ написан
    9 комментариев
  • Невытесняющая многозадачность в Java (Coroutine, Fibers), почему не Callable?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    callback hell. Мы же не хотим из-за модели выполнения код особо переписывать.
    Ответ написан
    Комментировать
  • Как правильно спроектировать классы?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Это называется двусторонней many-to-one связью, и как правила вам стоит избегать оных если вот без них совсем неудобно. Скажем сотруднику совсем не обязательно знать о том что он принадлежит какой-то компании. А потому от свойства company мы можем легко и просто отказаться, если конечно у нас нет какой-то специфичной логики.

    class Employe {
        constructor(firstName) {
            this.firtsName = firstName;
        }
    }
    
    class Company {
        constructor(name, employes){
            this.name = name;
            this.employes = employes;     
        }
    
        rename(name) {
           this.name = name;
        }
    
        addEmploye(employe) {
             this.eployes.push(employe);
        }
    }
    Ответ написан