Задать вопрос
  • Рассылка на php. Как сделать многоканальность?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Вам нужны очереди, смотрите в сторону rabbitmq.
    Ответ написан
    4 комментария
  • Как позиционировать Блок в БЭМ?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    это не бэм.

    Первый способ, как я понял, заворачивать в Элемент


    Не совсем "заворачивать", просто только элементы отвечают за позиционирование, а блоки - задают базовые стили.

    <!-- у элемента в принципе не обязательно должен быть блок, но желательно -->
    <div class="page__wrapper block"> 
        <div class="block__header header"></div>
    </div>


    Ну то есть идея примерно такая.

    а второй добавлять вспомогательные классы как-то так


    Это вообще не БЭМ, это... ну как через атрибут style только меньше проблем, но куча дублирования.

    Вообще рекомендую вам посмотреть вот это: WSD в Новосибирске // БЭМ — норм, Вадим Макеев
    Ответ написан
    5 комментариев
  • Легковесная Data Mapper PHP ORM?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    да и для проекта она тяжеловата.


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

    В целом рекомендую глянуть на Spot2 или analogue, но количество "лишнего" для молодого проекта кода будет намного выше чем в случае с доктриной.

    Если же вам нужен именно data mapper а не ORM, то... тут сложно, все что я видел так себе. Из интересных проектов разве что https://github.com/idr0id/Papper порекомендую.
    Ответ написан
    Комментировать
  • Где лучше хранить историю действий в базе данных или в файлах?

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

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

    Сделать MVP на CMS можно только из расчета найти инвесторов что бы заплатить за разработку реального продукта. Реальность такова что такие проекты намного дешевле в последствии писать сразу на фреймворках, вроде laravel или symfony, и потом уже дальше подкручивать расширяя команду разработки.

    Словом... удачи с вашей задумкой, но это проигранная битва.
    Ответ написан
    7 комментариев
  • Стоит ли разделять БД?

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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Решил сделать простую игру.


    MVC для приложений, для игр оно не применимо так как у вас UI и предметная область слишком уж сильно связаны друг с другом, а MVC ставит перед собой цель именно "развязать" их. Конфликт идет уже в фразе:

    Модель хранит в себе спрайт.


    Модель должна хранить данные, то есть это симуляции каких-то процессов, ИИ, физика и т.д. Ну а спрайты - это по сути представление данных. И как вы могли заметить игра без графики - не игра и не имеет смысла. А вот сменить UI у приложения можно, на бизнес логику оно не влияет.

    Короче для игрушек обычно применяют чуть другой паттерн, под названием ECS (Entity-Component-system), которы позволяет разделить обязанности чуть-чуть подругому.

    p.s. но если вернуться к MVC - то третий вариант. А что до
    Но за хранение состояний должна отвечать модель.

    Модель отвечает не столько за хранение состояния, сколько вообще за обработку оного. Ну то есть внешний мир о внутреннем состоянии ничего не знает, но это не значит что внешний мир не может попросить кусочек состояния для себя и потом его хранить. View так же может хранить состояние связанное с view и не влияющее ни на что другое.
    Ответ написан
    1 комментарий
  • Оправданно ли использование doctrine в хелпер классе symfony 3?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    container-aware - знает про контейнер и может работать с ним, чего по хорошему оно не должно уметь делать.

    Хочу писать написать функцию которая достает записи из бд по id.


    Записи из БД или сущности? Это вопервых весьма большая разница, а во вторых уже же есть старый добрый $em->find(Entity::class, $id), парам конвертеры дефолтные и т.д

    функцию в хелпер классе который будет находиться тут AppBundle\Utils


    Вообще это весьма плохая идея. И про то что будет глобальная функция которая этим будет заниматься, и то что вы ее как статику в класс запихаете а не сервис сделаете, и то что Utils... это называется "мне было лень придумывать адекватное название".
    Ответ написан
    3 комментария
  • Кто может поделиться схемой БД для хранения товаров с вариациями?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Гуглите Entity-Attribute-Value.

    А еще есть другой координальный ход - откажитесь от mysql и используйте mongodb для хранения каталога товаров.
    Ответ написан
    7 комментариев
  • Модульность в mvc, как лучше реализовать?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Создавать по модели на каждое представление?


    Модель в контексте MVC это не модель отдельных сущностей, а модель части системы (или всей системы), которая нужна для этой конкретной view. То есть представьте себе "модель" системы как нейкий объект, внутри которого есть другие объекты, которые работают с третьими и так далее. Такая вот иерархия. Так вот вьюшки выходит коннектятся каждая к своему кусочку этой иерархии, и по сути кроме этой точки соприкосновения ничего более о системе не знают. У них весьма ограниченное представление о системе и много знать им не надо.

    Так вот. В REST "вьюшка" у вас - репрезентация ресурса. И они не должны (хоть и могут) быть проекцией таблиц в базе данных.

    Получается на каждую сущность по 20 моделей?

    Тут есть несколько подходов, основной из них - не париться и просто в рамках определенного ресурса подсовывать тот кусок данных сущности который нужен. Все же не пихать в json как-то что-то проще чем пытаться достать то чего нет.

    Так же есть подход, описанный в стандарте jsonapi.org, где у вас есть дополнительные параметры в query string, которые позволяют "включать" определенные группы связанных ресурсов и т.д. Это дает нам определенную гибкость в плане работы с API но в случае например мобильных приложений есть свои нюансы.

    появилась какая-то боязнь ошибиться.

    Тогда пишите тесты, хотя бы на уровне приложения. Тогда бояться что-то исправить/поменять перестанете. А поскольку у вас нет опыта проектирования таких вещей, вам придется фиксить свои ошибки.
    Ответ написан
    Комментировать
  • Почему при использовании Angular ссылки работают не так как я ожидал?

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


    возможно потому что вы используете какой-нибудь ngRoute или uiRouter?
    Ответ написан
    5 комментариев
  • Как обрабатывают ошибки в классах?

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

    2) исключения.
    Ответ написан
    Комментировать
  • Как остановить отрпавку формы по enter в Angular?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    красиво - сложный вопрос.... Красиво эта проблема решена в Angular2, с использованием observable и т.д.

    А для 1.x можно пользоваться параметром timeout у запроса:

    var canceler = $q.defer();
    $http.post('/someUrl', {timeout: canceler.promise})
      .then(
        response => successCallback(response),
        reason => failCallback(reason)
    );
    canceler.resolve();
    Ответ написан
  • NodeJS + socket.io + mongoDB. Где утечка памяти?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    вызов GC вручную


    И как это могло бы помочь интересно.

    сокет сервер таким образом не справляется с нагрузкой?


    если там есть внутри буфер сообщений на отправку - то вполне может просто не успевать отправлять сообщеньки.
    Ответ написан
    3 комментария
  • Как эффективно изучать angular js?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    1) продолжаем учить "ванильный JS", паралельно почитывая про babel, es2015 и т.д.
    2) когда мы ищем информацию в интернетах - учитываем что сейчас актуальная версия ангуляра - 1.5, второй ангуляр в бете, так что 90% информации устарело. Я даже больше скажу - даже официальная документация устарела, обновленный вариант сможете найти на github проекта в пул реквестах.
    3) https://github.com/gdi2290/ngExam - рекомендую этот список тем того, что вам надо знать про ангуляр (ну и не только).
    4) https://github.com/AngularClass/NG6-todomvc-starter - тут я попытался собрать полезные статьи на тему что надо учить и как + пример маленького современного приложения. Так же в ишусах к NG6-starter обсуждается как лучше его готовить.
    5) https://habrahabr.ru/post/277087/ - про angular 1.5 и то как я готовлю ангуляр.

    Ну и так же не стоит пренебрежительно относиться ко всяким реактам и эмберам - идеология у всех приблизительно схожа, все крутые чуваки юзают компонентный подход (потому что это удобно и логично для проектирования интерфейсов), у всех примерно одинаковое виденье по поводу data-flow в приложениях и т.д. Так что с ними ознакомиться тоже можно, у реакта чуть больше расписано про компоненты например.

    Ну и да - обязательно прочитать документацию к ангуляру. Возможно не всю сразу но базовые понятия что бы раскрыть. И разобраться с тем что значит "декларативное представление".
    Ответ написан
    4 комментария
  • Как в React.js обновить компонент из вне? Или как связать React компоненты и Angular директивы?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    this.watchCollection


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

    Код React компонента:


    А вот код ангуляр компонента:

    class IstManagerListRowComponent {
        
    }
    export default {
        controller: IstManagerListRowComponent,
        bindings: {
             'uid': '='
        },
        template: `
            <div className="table-row">$ctrl.uid </div>
        `
    }


    а вместо ватчеров:

    class IstManagerListRowComponent {
        set uid(value) {
           this._uid = value;
           // do something
        }
    }


    Я сильно сомневаюсь что такое использование реакта вам хоть чем-то поможет. Если бы вы не внутри отдельных директив это делали, на например... сделали бы все компоненты на реакте. а состояние, роутинг и т.д. разруливали ангуляром - тогда да, профит был бы. А так - никакого профита, просто помимо накладных расходов на дерти чекинг ангуляра у вас добавляется накладные расходы на дерти чекинг реакта (между vDom и dom).
    Ответ написан
    Комментировать
  • Как правильно орагизовать SPA на Angular?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    возьмите uiRouter, там есть возможность делать иерархию вьюшек. Ну или component router если вы всеравно будете брать angular 1.5.

    Если вы еще не начали - рекомендую взять вот этот стартер (на правах рекламы).
    Ответ написан
    Комментировать
  • Доставка проекта на продакшен, какие инструменты для деплоя?

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

    собираем на CI-ке контейнер, прогоняем на нем тесты (вы же сказали что проект большой, большой проект без тестов - боль), если все хорошо - пушим в docker hub или в свой локальный docker distribution, после чего можно на серваке сделать просто docker-compose pull && docker-compose up -d и радоваться.
    Ответ написан
  • Что умеет такого Node.js что не умеет ASP.NET Core?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Node.js - кросплатформенный. .NET - нет (пока во всяком случае).

    Mono для серьезных проектов не особо прикольно использовать.

    Что более перспективно в принципе?

    Если не можете определиться - выучите и то и то. Будет пользы больше чем эти метания.
    Ответ написан