• Писать ли уроки по программированию?

    Nominom: вы учились в ВУЗе? алгоритмизация и все эти вещи аля "как информация представляется в машине", системы исчисления и прочая чушь давались нам с первого по третий семестр. Более того, системы счисления и прочие основы основ давались на уроках информатики в школах.
  • Писать ли уроки по программированию?

    Nominom: вы же понимаете что вопрос не в методике обучения а во времени? На то что бы сделать что-то полезное человек должен потратить минимум год эксперементов, баловства и изучения.
  • Какой язык программирования учить для Android NDK?

    Ринат Велиахмедов: каков вопрос таков и ответ.

    Большая часть "чужих либ" написаны на Си, так что... Ну и да, никакого ООП в C++ и не нужно особо в контексте NDK, только если вдруг захочется написать графический движек.

    Опять же если автору надо разбираться в библиотеках на C++ то ответ так же очевиден. Автор же не потрудился описать зачем ему вообще понадобился NDK.
  • Как запустить контейнер Docker-а, созданный без опции -ti?

    зачем вам внутрь контейнера, позвольте спросить?
  • Как выполнить запрос из одного сервиса к другому и создать объект app-platform(doctrine)?

    Евгений Попов: ну тогда...

    class BFactory{
        private $bRepository;
        private $aRepository;
    
        public function __construct(ARepository $aRepository, BRepository $bRepository) {
             $this->aRepository = $aRepository;
        }
    
        public function create($data) {
             $criteria = $this->getCriteriaFromData(); // 
             $a = $this->aRepository->findMatchingCriteria($criteria);
             
              // передаем внутрь конструктора всю сущность A, 
             // а там внутри пусть уже разбирается конструктор что ему там надо. 
             // если нам связь между объектами нужна то просто айдишкой уже не обойтись
    
             return new B($data, $a); 
        }
    }
  • Методы оптимизации AngularJS?

    Yaroslav Lyzlov: да, это реализация шаблона проектирования, но не более. Вопрос для чего его применять. Чуваки из команды ангуляра и полимера применяли эту штуку для увеличения производительности дата бинднга. Если у вас есть штука которая говорит вам что поменялось в системе, то вам не нужен дерти чекинг.

    А выпилить его давно хотели так как фича слишком сложная и не нужная. Все то же самое легко можно сделать с Proxy которые уже заимплеменчены в edge и firefox и когда-нибудь появятся в хроме.
  • Вопрос по прочитанному( Гексагональная архитектура)?

    ГЛЕБ ГЛЕБОВ: нет. Абстрактная фабрика - это шаблон проектирования. Инверсия зависимости - принцип проектирования.

    Шаблоны проектирования возникли не как результат каких-то изысканий, это просто данность. Они были всегда. И появились они как раз таки потому что люди пытались развязать систему, следуя тем самым принципам проектирования. Их потом просто собрали в 94-ом году их существующих проектов и дали им названия. То есть сначала реализация а потом теория. Потому то и был в 90-х холивары на тему надо ли использовать паттерны.
  • Вопрос по прочитанному( Гексагональная архитектура)?

    ГЛЕБ ГЛЕБОВ: контейнер зависимости это компонент который ресолвит зависимости. По сути это компонент который знает как собирать объекты.

    инверсия зависимости это вот:

    Dependency_inversion.png

    https://en.wikipedia.org/wiki/Dependency_inversion...
  • Методы оптимизации AngularJS?

    Yaroslav Lyzlov: обзервер это обзервер. Я говорил о Object.observe, механизм отслеживания изменений у объекта. Нативные биндинги в браузерах.

    Опять же пробежался по доке - ничего интересного у эмбер или отличного от других я не нашел.
  • Как выполнить запрос из одного сервиса к другому и создать объект app-platform(doctrine)?

    Евгений Попов: так может вам сначала надо узнать есть ли объект A в репозитории и если нет уже делать с объектом B?
  • Вопрос по прочитанному( Гексагональная архитектура)?

    ГЛЕБ ГЛЕБОВ: наверное стоит привести пример раздувшегося технического долга что бы вы понимали когда это нужно все применять и когда не нужно.

    Был проектик... вроде бы не большой, нацеленный на развлекательный сегмент рынка и все такое... то есть ничего не предвещало беды. Разработчики проекта были молоды и наинвы, поддались на маркетинг и взяли в качестве основной СУБД mongodb. То есть они изначально приняли какое-то решение связанное с инфраструктурой не особо понимая контекст приложения.

    Шло время, приложение потихоньку разрабатывалось. И все бы ничего да только... из-за отсутствия изоляции повышалась связанность системы. То есть с каждым днем править код становилось все сложнее и сложнее. И в итоге оценки стэкхолдерам уходили все больше и больше.

    И случилось страшное - внезапно оказалось что... люди взяли монгу и решили организовать связи на уровне ORM. То есть эмулировать внешние ключи и прочие вещи. В итоге система резко потеряла стабильность, начали появлться странные баги и прочие забавные вещи (при этом проект на 80% покрыт тестами).

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

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

    'nuff said. То есть с этим разделением все было бы круто, но и в крайности после этого тоже бросаться не надо, ибо из-за излишней изоляции всего от всего мы можем те же 30% бюджета спалить без особого профита.
  • Вопрос по прочитанному( Гексагональная архитектура)?

    ГЛЕБ ГЛЕБОВ: ну так отделяйте. Для этого не нужно применять никаикх там гексагоналок и прочего. Для этого просто надо ввести сервисный слой и делать тонкие контроллеры. Вам этого может быть более чем достаточно.

    По поводу "отделения от фреймворка" - мне не очень нравится этот термин так как люди начинают понимать под этим... совсем не правильные вещи. Есть бизнес логика приложения, и есть инфраструктура, на которой работает ваше приложение. Интерфейс пользователя (способы которыми мы можем попросить приложение что-то сделать), базы данных, почта и прочая чушь - это все инфраструктура. Мы хотим изолировать инфраструктуру от бизнес логики для того, что бы при изменении оной эти изменения не затрагивали бизнес логику. Бизнес логика может меняться сама по себе в зависимости от требований бизнеса, но бизнесу плевать на инфраструктуру. Это наша с вами головная боль.

    По сути вся идея архитектуры сводится к инверсии зависимостей. И да, я искренне верю в то что все ООП только ради этого принципа и нужно. Это самая сильная сторона ОО подходов но почему-то мало кто это понимает.
  • Методы оптимизации AngularJS?

    Yaroslav Lyzlov: я уже давно не слежу за ember. Что вы понимаете под observe?

    в любом случае я не вижу никакого смысла для себя лично переходить на что-то отличное от angular. Он устраивает меня целиком и полностью. А если еще и с babel.js то и писать на JS становится не так противно.
  • Вопрос по прочитанному( Гексагональная архитектура)?

    ГЛЕБ ГЛЕБОВ: сценарии использования (юз кейсы) это концепция и только. И да, я использую команды, но в контексте symfony2.
  • Есть ли autoprefixer для css на php?

    Jimmy_Exploit: бр...... вкропления php в css открывают врата ада
  • Как добавить условие в ng-repeat (головоломка)?

    imelos: обработка данных на js это как раз таки angular-way. Обработка данных это ваша обязанность а не фреймворка.
  • Методы оптимизации AngularJS?

    lega: только дерти чекинг на разных уровнях идет.

    И да, я знаю что реакт заставляет слишком много думать... я потому и не перешел на него - слишком ленивый, не вижу смысла. Собственно я никаких проблем с ангуляром не ощущаю, а с учетом module.component из angular 1.5 и angular/router вообще ништяк (но правда это я пока на домашних проектах тыкаю, в продакшен пускать еще не хочу).
  • Методы оптимизации AngularJS?

    lega: ну и да и нет. В ангуляре дерти чекинг проверят изменились ли данные, в то время как в реакте идет поиск изменений в виртуальном DOM и вычисление наиболее эффективного способа применения этих изменений. Ангуляр же тупо фигачит изменения в DOM как выходит, и это перекладывает ответственность на разработчика.

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

    Ангуляр не парится и просто фигачит изменения в DOM так что для оптимизации разработчику придется задумываться о том, как применять изменения к данным что бы ангуляр эффективно работал с DOM. По этой причине у angular есть track by для ngRepeat, который позволяет легко и просто сказать ангуляру как реюзать DOM элементы. За счет того что ангуляру не нужно вычислять как применять изменения, то все выходит сильно быстрее. НО для этого разработчику придется приложить усилия.

    На счет второго ангуляра сказать не могу - я еще не смотрел что там внутри происходит да и документация только в процессе. Но подозреваю что будет как-то так же. Вот только насколько я помню, дерти чекинг ангуляр будет использовать только как полифил для Object.observe (ну или Proxy/Map сейчас раз Object.observe хотят выкинуть из ES7 и выпилить из хрома до нового года), так что необходимости именно вычислять diff нет.
  • Методы оптимизации AngularJS?

    Yaroslav Lyzlov: нет, смотрел но не придумал зачем мне это надо. Как показывает практика с reactjs вычисление дифов для оптимизации работы с DOM это хоть и клево, но... например ngRepeat + track by работает в среднем быстрее чем любая реализация с виртуальным домом так как алгоритм там намного проще + нет вычисления diff-а. Ну и опять же по приведенной вами ссылке мне придется сделать все имутабельным а я не знаю как у меня это отразится на архитектуре приложения (по идее пофиг но зачем?)

    В целом же angular2 будет работать поверх виртуального DOM так что там все будет то же самое.