• Как использовать Http в сущностях angular2?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Как правильно использовать Http в User, если User не Injectable


    никак. Используйте http в каком-нибудь отдельном сервисе который ответственнен за сохранение данных. Сущность не должна знать о том где и как она хранится.
    Ответ написан
  • Где найти русскоязычную литературу / документацию symfony3?

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


    Они имеют свойство очень быстро устаревать.
    Ответ написан
    Комментировать
  • React и очень длинные списки. Как сделать, чтобы "не лагало"?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    называется это "виртуальный скролл"

    Вот готовый велосипед (и есть еще штуки 4 но у них меньше звездочек)

    developerdizzle.github.io/react-virtual-list - тут сразу пример с 100К записей. Большинство тех которые я видел расчитаны только на случаи когда у нас всегда известна высота элемента списка заранее. Во вконтактиках или там линкединах чуть хитрее, там они заранее пытаются пререндрить список ну и им еще помогает то что данные подгружаются не сразу (не сразу 100К айтемов а кусками по 100 штук например). Это дает дополнительный простор для действий.
    Ответ написан
    Комментировать
  • Unglify не оптимизирует а увеливает размер в 2 раза.. ВТФ?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    .pipe(sourcemaps.write())


    вот тут ответ на ваш вопрос. У вас сорсмэпа записывается прямо в результирующий файл. Ложите ее рядом и все будет хорошо.
    Ответ написан
    1 комментарий
  • Как лучше организовать отложенные http-запросы?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    beanstalkd

    либо я вас не понял. В этом случае лучше опишите какую задачу вы хотите решить.
    Ответ написан
    4 комментария
  • Как в Symfony2 добавить переменную в base layout?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Есть блок кода, назовем его меню, который одинаковый на всех страницах


    если данные берутся из БД и как настроить получение этих данных в одном месте?


    https://symfony.com/doc/current/book/templating.ht...
    Ответ написан
    1 комментарий
  • Как правильно организовать базу данных?

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

    комплектующие словом можно так же добавить как продукты в каталог. И просто делать many-to-many связь между комплектующими и системным блоком.
    Ответ написан
  • Как правильно осуществлять задержку в цикле?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    читаем что такое event loop, что такое колбэки и промисы и как вообще жить в асинхронном мире.

    p.s. я подозреваю что число 500 там не с проста и вы таким образом хотите дожидаться окончания анимаций. Так вот, вместо хардкода значений используйте event listener и тогда задача сама собой решится.
    Ответ написан
    1 комментарий
  • Вопрос логики: как правильно назвать метод?

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

    Сущность юзера должна знать о лайках? Скорее всего нет. Сущность которую лайкают должна знать о лайках? По сути тоже нет, но это удобно. Потому пусть будет так.

    Итого минимум который нам нужен для того что бы сделай лайки - это одностороння many-to-many связь. Если брать например Doctrine реализация будет примерно такой:

    class Photo {
        /**
         * @type User[]|ArrayCollection
         */
        private $likes;
    
        public function __construct(/** ... */) {
            // тут какой-то еще код
            $this->likes = new ArrayCollection();
        }
    
        // ... другая логика
    
        public function like(User $user)
        {
              $this->likes->add($user);
        }
    }


    Итого имеем интерфейс:

    $photo->like($user);

    мол мы отправляем сообщение объекту $photo что он кому-то нравится, и передаем кому. А тот уже сам внутри все разрулит.

    Поскольку вы захотели сделать Like сущностью, подозреваю что вы хотите знать еще дополнительную информацию вроде "когда кто-то что-то лайкнул" и т.д. Зачем - не мое дело. Но просто давайте чуть изменим имплементацию метода не меняя интерфейса:

    public function like(User $user) 
    {
        $this->likes->add(Like::photo($this, $user));
    }


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

    Еще такой интересный момент, что мы можем все методы вроде `isLikedBy` и т.д. вынести прямо в сущность при желании. Для этого в случае доктрины можно воспользоваться extra lazy ассоциациями и методом matching у коллекции которая вместо обхода объектов может и sql выполнить по критерии какой-то.

    Ну и что бы совсем закончить. Пока у нас корнем агрегата сущностей (состоящего из Photo и User) корнем выступает сущность Photo. Но может статься так что лайки у нас могут быть еще сложнее. Например нам надо учитывать репосты и считать количество лайков из этого расчета (как вконтактике например). Тогда с реляционной базой мы быстро начинаем проигрывать и мы можем взять Neo4J например для того что бы хранить лайки как граф. Тогда все удобно и быстро. И тогда можно вытащить логику работы с лайками наверх так что сущности сами о ней вообще ничего не будут знать.

    Но это наверное уже совсем другая история.
    Ответ написан
    4 комментария
  • У кого как организован процесс оценки работ по разработке?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Зависит от того что оценивается. В контексте начальной оценки может делать как тимлид так и кто-то из членов команды. Делигирование и все такое.

    Ну и сами задачи оценивают разработчики которые будут их делать.
    Ответ написан
    Комментировать
  • Как передать данные из фабрики в контроллер?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    через get данные из фабрики


    Так, давайте разберемся с начала что такое "фабрика". Фабрика - это способ получения сервисов. То есть это та вещь которая вызывается контейнером зависимостей ангуляра при создании сервиса и все.

    Так что давайте будем называть это сервисом.

    чтобы потом можно было их обработать в контроллере?


    Далее. Читаем документацию относительно такой вещи как promises (можно не в контексте ангуляра даже). Вы как js разработчик обязаны понимать что такое event loop, почему все взаимодействие с внешним миром должно происходить асинхронно и как с этим жить (колбэки, промисы, yield и async/await).

    Далее. Старайтесь использовать ресолверы маршрутизатора для получения данных. Тогда данные будут приходить готовыми.

    Ну и последнее. Отказывайтесь от $scope и от контроллеров. Используйте компоненты. Сейчас на дворе 2016-ый год и актуальная версия ангуляра 1.5, да и вторая на подходе. Не стоит использовать материалы для обучения 5-ти летней давности.

    как раз пару недель назад наконец-то обновили официальные туториалы ангуляра под современный подход с учетом наработанных лучших практик: https://github.com/angular/angular-phonecat
    Ответ написан
    Комментировать
  • Переход на mongoDB?

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


    Казалось бы, причем тут mongodb. Мускуль json умеет (хоть и не так удобно), и подозреваю что речь все же идет о графах. В этом случае стоит графовую БД брать (Neo4j например).

    Словом уточните свою задачу.

    А вот как их получать?! Не смог найти свойства и метода.


    Читаем документацию.
    Ответ написан
  • Экспресс обучение frontend разработке. Как подступиться?

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


    Вы не правильно сделали декомпозицию. Дробите список и перемещайте местами пока не будет абстрактных "базовое знание mysql". Да и зачем фронтэндщику вообще базовое знание mysql или php? Вам нужно знать как с бэкэндом взаимодействовать (HTTP, принципы REST хотя бы приблизительно понимать), примерно понимать что такое базы данных (localStorage, IndexedDB). Словом никаких mysql/php. Это потом когда-нибудь освоите.

    Или например список ваших фреймворков. Выкидываем backbone - о нем можно почитать просто что он есть и что из себя представляет, но на вашем этапе толку не будет. Есть тройка лидеров - React/Angular/Ember. Затем идут небольшие фреймворки и библиотеки - Aurelia/Vue/Backbone/etc.

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

    p.s. я бы требовал еще es2015/2016, webpack/systemjs/вообще модули, препроцессоры стилей (хотя бы основы и понимание зачем нужны) и т.д.

    Ну или еще - jquery можно не изучать. Ознакомиться - да, но на уровне джуниора нужно знать как решить стандартную задачку подключения плагина и организации очереди анимаций. А так в 90% случаев jquery даже и не нужен вовсе. Ну и AJAX - разберетесь с HTTP и вы познаете AJAX.

    Ну и последнее. Джуниор это разработчик с годом опыта работы. Это человек который запросто может решать типичные задачи (можно пробежаться по фриланс биржам и составить представление о типичных задачах). Перед джуниором идет стажер.
    Ответ написан
    3 комментария
  • Как хранит изменения git?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    те он просто сохраняет версию файла на текущий коммит ?


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

    пример с пояснением
    Ответ написан
    Комментировать
  • Сложно ли выучить React-Native?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    https://facebook.github.io/react-native/docs/getti... - и вперед.

    p.s. Характеристики в духе "сложно" или "легко" не имеют смысла. Вам либо нужно либо нет.
    Ответ написан
    3 комментария
  • Какую использовать СУБД?

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


    У вас не должно быть связей в mongodb. Все связанные сущности должны лежать в пределах одного документа. Вот и весь секрет. Это налагает весьма строгие ограничения по тому как вы должны строить структуру базы. Профит - гибкость, масштабирование, удобненько... Но нужно понимать что делаешь ибо если появляются связи - вы проиграли (ну почти).

    В mysql напротив все данные желательно хранить в нормализованном виде (хотя бы 3-я нормальная форма).

    p.s. sim3x прав, можно пойти на компромис и использовать mysql 5.7 с поддержкой json или postgresql 9.4+. Все зависит от того зачем вам монга. Но подозреваю что у вас сейчас не те проблемы которые монга хорошо решает.
    Ответ написан
    5 комментариев
  • Как организовать следующую логику?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    я не пойму смысла тогда от этого MVC если это почти тот же flat-php


    Symfony request/response фреймворк. MVC - web так не работает. То что на бэкэнде называют MVC на самом деле завется mediating controller MVC или MVA.

    Ну и опять же, где тут flat php? Это по сути возможность делать "под запросы" и реюзать код. Что-то типа виджетов.

    Если вам это не нужно - воспользуйтесь наследованием шаблонов и вынесите в базовый все что относится к формированию подвала и хидера сайта.

    Не зацикливайтесь на MVC, потому что люди часто проигрывают, думая что модель это доктриновские сущности и только. А есть еще сервисы - это тоже часть модели. И суть вся в разделении ответственности (контроллеры конвертят HTTP запросы в вызовы методов модели и конвертят состояние модели в HTTP ответы и только).
    Ответ написан
    7 комментариев
  • Есть ли жизнь без дискретного видеоадаптера?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Под ваши задачи не нужна дискретная видеокарта. Имеющиеся интегрированные видеочипы неплохо справляются и с 4K видео.

    Играться же без дискретки во что-то поновее уже не выйдет. Но для этого проще консоль купить.
    Ответ написан
    1 комментарий