• В чем разница между map, observable, subscribe, Promise?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    map - для каждого результата
    toPromise - преобразовать Observable в промис
    subscribe - подписаться на изменения в observable

    разница между observable и промисами - промисы отрабатывают только один раз, observable можно перезапускать множество раз. То есть вместо того что бы запоминать конфиг, мы буквально создаем объект, описывающий запрос (до вызова subscribe/map запрос реальный не отправляется). Если у вас отвалилась сеть и мы хотим повторить запрос - достаточно еще раз вызвать метод объекта, а не создавать новый запрос. Банально удобнее, особенно в плане реюза кода (можно сделать на уровне сервиса перехватчик запросов, который бы хэндлил за нас такие ситуации).
    Ответ написан
    Комментировать
  • Инкапсуляция в Es6 отсуствует?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Раньше я объявлял приватные свойства и методы так:


    Раньше вы криво создавали объекты и у вас получалась кривая реализация паттерна "модуль". Да и "свойства и методы" ваши приватные они как бы не совсем свойства и методы, это просто переменные (статические свойства в терминах java) и функции.

    Или я что-то упустил?

    Инкапсуляция в javascript достигается и достигалась ранее за счет модулей (сокрытие переменных в дочернем скоупе.

    let privateStaticVar = 'foo';
    
    // то что экспортируется - то публичное
    export default class MyClass() {
        constructor() {
        }
    }
    
    // или
    
    export default (function () {
        let foo = 'foo';
    
        return class FooBar {
             constructor() {
             }
        };
    }());


    Ну и в es2015 добавились символы как простой вариант сделать настоящие приватные переменные, ну и еще есть weakmap.

    const privateFoo = Symbol('foo');
    
    export default FooBar {
        constructor(foo) {
           this[privateFoo] = foo;
        }
    }
    Ответ написан
    5 комментариев
  • Какой стиль комментирования кода правильнее?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    с последовательным объяснением всех действий


    Пишите код так, что бы не нужно было комменты делать для действий, только для отдельных методов. Если вот совсем никак и надо объяснить что делает блок кода - выносим его в приватный метод с адекватным названием. Вот и все.
    Ответ написан
    5 комментариев
  • Каких онлайн-сервисов, веб-приложений не хвататет в интернете?

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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Почитайте про реализацию BigInt

    https://github.com/ibiwan/swift-bigint/blob/master... - вот например.
    Ответ написан
    Комментировать
  • JavaScript ООП, запутался?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    шаблон создания повторного использования кода, то есть ооп


    Вы запутались. ООП не про повторное использование кода, функции/процедуры больше за это отвечают. Объекты отвечают за сокрытие состояния.

    Автор писал что в свойство prototype вообще не нужно лезть.

    Изнутри инстанса объекта - да. Когда ты описываешь новый тип объектов и хочешь отнеследоваться - то надо указать прототип объекта.

    То ли пока я учил JavaScript что то поменялось в этом плане

    Чуть поменялось, вышел ES2015, еще в прошлом году. Теперь все чуть проще и работа с прототипами объектов при наследовании/определении новых объектов стала чуть более прозрачной и удобной. И про createObject/defineProperties можно помнить только что бы понимать как все работает.
    Ответ написан
  • Будет ли работать IPS-монитор 23 дюйма на ноутбуке?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    MD Radeon HD 8670M (1024 Мб GDDR3)


    4K конечно не потянет, но FullHD норм. Если конечно в игрушки не играться.
    Ответ написан
    1 комментарий
  • Какую ценность представляет собой Sketch для верстальщика?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    но что до разработчика или верстальщика?


    посмотрите доклад Вадима Макеева: О чем смеются верстальщики. Он там приводил парочку кейсов, в которых sketch может помочь верстальщику.

    В целом есть куча вещей которые оказались полезны лично мне:
    - вместо детальной спецификации по дизайну, или пипетки можно просто скопировать css отдельных элементов
    - есть возможность автоматизировать нарезку графики (с учетом сетки, ретины и т.д.)
    - он удобен при разработке адаптивного дизайна и т.д.
    Ответ написан
    3 комментария
  • Вопрос про архитектуру приложения и ngRoute?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    https://habrahabr.ru/post/277087/

    если коротко:

    - прекращайте использовать ngController, используйте компоненты. Желательно stateless компоненты.
    - получение данных - в ресолверах (resolve)
    - проброс данных - через биндинги компонентов
    - для проектов чуть побольше используйте uiRouter. Ну или на худой конец angular-router. ngRoute подходит для очень маленьких приложений. Учитывайте это.
    Ответ написан
    Комментировать
  • Совмещение angular, yii2?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Laravel бери и не мудри. Если нет нормального опыта работы с javascript (jquery не считается) - лучше не брать angular. Лучше погоди чутка пока не релизнится ng2, по ng1 слишком много булшита написано, достаточно вопросы на тостере глянуть.

    Но по вопросу "совмещение" - учить надо по отдельности, да и работать это все независимо друг от друга. Ангуляры отдельно, бэкэнды отдельно, между ними rest api. Ну то есть бэкэнды ничего не знают о том на чем написан клиент и наоборот.
    Ответ написан
  • Минифицируете ли файлы JS для фриланса?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    а нужно ли?


    Нужно, но не с целью "уберечься от воровства", не минифицированные исходники конечному клиенту тоже нужно предоставить так как они его собственность.

    А вот с целью клиентской оптимизации - да, нужно. И поэтому во время демо тоже это нужно, что бы можно было прогнать google pagespeed например и радоваться хорошим показателям. У многих клиентов это выступает в качестве нефункционального требования - быстрая загрузка/отрисовка.
    Ответ написан
  • Как тестировать DAO слой на Java с Mockito?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Мокают сам DAO, никто в здравом уме не мокает Connection/DataSource и т.д. поскольку поддерживать такие тесты выходит слишком дорого - проще написать простенький интеграционный тест, который использует реальную базу данных.
    Ответ написан
    Комментировать
  • Существует ли какая-то ionic версия графиков?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    вам просто нужна библиотека для работы с графиками, которая поддерживает работу на мобильных устройствах. Никакой привязки к ionic.

    Лично я использую d3.js. Для него есть директивы под ангуляр: krispo.github.io/angular-nvd3/#
    Ответ написан
    Комментировать
  • Можно ли узнать количество элементов после фильтрации в Angularjs?

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

    А ели у вас отфильтрованная коллекция есть в контроллере, то вывести ее длину вообще не проблема.
    Ответ написан
    2 комментария
  • Как использовать шаблоны проектирования на практике?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    зачем они вообще нужны в работе, ведь всё хорошо и без них?


    Видите ли, паттерны это не что-то такое, что "применяют намерянно", они просто появляются. Им просто дали названия и все. Это "словарь", что бы быстро сказать другому разработчику мол "мы тут медиатор впихнем, а сверху вот этой фигни фасадом закроем". И всем сразу все понятно.

    Словом, если вы разберетесь с принципами SOLID и GRASP, а так же в принципе с ООП (сокрытие состояния, обмен сообщениями между объектами разных типов), то паттерны будут появляться сами по себе.

    Еще хорошо себя показывает TDD в вопросах "как узнать как лучше делать". В виде теста описываем что должен делать объект, или как они взаимодействуют, потом делаем. Если неудобно в тестах или они становятся слишком завязаны на реализацию (опять же неудобно поддерживать) - то значит что-то пошло не так и надо рефакторить. А при наличии тестов это делать очень легко и просто.
    Ответ написан
    4 комментария
  • Чем отличается onion-architecture от n-layer-architecture?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    n-layered архитектура - это просто архитектура построенное на рандомном количестве слоев. оно определяет базовые принципы разделения ответственности и все такое, но на этом все.

    onion - тут уже идет уточнение, что мол в самом сердце у нас core-domain, сущности, базовые бизнес правила. От него уже идет дальше domain layer, application layer и т.д. То есть сначала мы проектируем core-domain а потом уже все остальное.

    Есть еще гексагональная - это опять же уточнения для n-layered архитектур, что мол каждый слой отделен друг от друга за счет dependency inversion. На границах слоев всегда есть интерфейсы, а у внешнего слоя - реализация. Потому ее называют "архитектура портов и адаптеров".
    Ответ написан
    2 комментария
  • Как построить аутентификацию через токены?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Пожалуй выложу чуть более "няшную" ссылку, в допллнение к Алексей Уколов

    jwt.io
    Ответ написан
    Комментировать
  • Насколько подходит Scala как язык для web?

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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Есть непонимание процесса написания правильных тестов.


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

    Добавил я продукт и что мне мониторить?


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

    Если такого метода нет, то нам надо подменить List на мок, но ваш код этого не позволяет сделать. Опять же это мы уже тест на реализацию завязываем, а стало быть наши тесты становятся хуже. Но коль уж мы пошли по этому пути можно просто length померять.
    Ответ написан