• Как оптимально найти подмножества в наборе данных многие-ко-многим?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Стоит подумать о том что бы преобразовать структуру в граф, что бы была связь не только между сообществом и пользователем но и наоборот. Так перебор будет уже эффективнее. Так же если данных много можно вооружиться neo4j
    Ответ написан
    1 комментарий
  • MVC, Entity. Что должен "видеть" Контроллер?

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

    Что до модели - сущности ничего не должны знать о том кто и как их где хранит. Как уже было озвучено - шаблон репозиторий. В C# с нормальными ORM проблем вроде бы нет.
    Ответ написан
    Комментировать
  • Нужно ли кешировать данные в Redis из MongoDB?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Эм... а почему в реддисе это хранить? Эффективнее прямо в основном потоке, нет? Ну да не суть.

    Почему хранить айдишник сокета в монге (как и в любой другой СУБД) дурная затея вы поймете после первого ребута системы, отваливающихся соединений и т.д. То есть вам на каждый чих придется еще и базу дергать, относительно медленную к слову если сравнивать с key=>value в памяти или тем более просто мэпу в памяти.

    Кешировать комнаты в реддисе тоже неплохая задумка. Все горячие данные стоит хранить в памяти и минимизировать время доступа. Но есть мнение что у вас не будет таких нагрузок что все будет плохо. Так что решайте по мере возникновения проблем.
    Ответ написан
  • Что вы используете под Linux, когда пишете сайты?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    пишыте

    Я думаю вам стоит начать с простого. Установите PHP, с версии 5.4 (которая нынче минимальная) в него встроен маленький web сервер (что бы не напрягать себя всякими Apache/nginx). Так же cli скрипты тоже приходится писать так что тоже вариант для практики.

    А уж потом... когда перед вами встанут серьезные вопросы работы в команде, изоляции окружения, тестирования кода и т.д. Тогда уже решайте вопросы. А то вам тут насоветуют сейчас вагранты, ансиблы, докеры и прочее...
    Ответ написан
    Комментировать
  • Возможно ли на Ionic framework сделать и мобильное и веб-приложение?

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

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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Главное правило оптимизации - не заниматься преждевременной оптимизацией.

    Вообще все просто - пишите код, пишите нагрузочные тесты, профилируете, оптимизируете узкие места. С опытом ляпов будет меньше изначально. Ну и книжки стоит читать всякие, желательно обобщенные (типа там паттерны проектирования и т.д.) что бы можно было вместо оптимизации просто быстро систему масштабировать (это дешевле). Ну и еще теория алгоритмов помогает, если у вас есть именно обработка больших объемов данных (массивы на миллионы айтемов, на тысячах пофигу обычно)
    Ответ написан
    1 комментарий
  • Множественное наследование не нарушает ООП?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    И вот теперь я хочу получить класс реализующий поведение и Task и Node. Это нормально?

    Само желание вполне нормально, но лучше все же разделить так как у этих объектов абсолютно разные задачи.

    Читаем про SOLID, в частности Принцип подстановки Барбары Лисков. Так же принцип единой ответственности, слабая связанность (low coupling) и высокое зацепление (high cohesion). По поводу реализации нескольких интерфейсов - скажем для композиции двух классов все будет ок, так как вы при этом мы не сломаем принцип единой ответственности, каждый компонент будет отвечать за свое и все будут счастливы. А класс который будет объеденять две реализаци интерфейсов будет просто проксировать вызовы в нужным инстансам.

    Множественное наследование норм... только высок риск что все это дело благодаря оному будет нарушено.
    Ответ написан
    4 комментария
  • Как разобраться с typescript?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Начните с ES6. TypeScript это тот же ES6/7 + плюшки.

    Собственно "классы" в TS или в ES6 это всего-лишь сахар над старыми добрыми прототипами, что бы не писать все руками через Object.create или Object.defineProperties
    Ответ написан
    5 комментариев
  • Будет ли грамотен такой подход в angularJS?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    А в renderArray уже городить ng-repeat? Либо все это делайте директивой, либо не парьтесь и используйте вложенный ng-repeat. Ну или если то что у вас в renderArray можно использовать отдельно - то тогда имеет смысл. Если оно именно "рендрит массив", то есть там какой-то ваш цикл который формирует DOM - лучше все же использовать ng-repeat который скорее всего всеравно будет быстрее работать.

    Если вас парит вопрос производительности - читайте про track by. Если у вас списки меняются редко, или вы точно знаете как меняются данные, можно получить неплохой прирост производительности за счет меньшего количества операций с DOM.
    Ответ написан
    Комментировать
  • Каким алгоритмом можно проверить Большое число на простоту?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Быстро это сделать не выйдет. Не спроста же большие простые числа используют в криптографии. Даже если принять во внимание тот факт, что вы не пытаетесь разложить это добро на множители.
    Ответ написан
  • Дефрагментация диска на C/C++, куда копать?

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

    В любом случае - смотрите opensource решения и читайте документацию. Так как в списке есть DOS думаю проще взять какой FAT16 или FAT32. Реализаций уйма. пруф.
    Ответ написан
    Комментировать
  • Какие задачи в веб-разработке считаются самыми сложными?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    martinfowler.com/bliki/TwoHardThings.html

    Я думаю самая сложная еще впереди. Все что было сложное раньше теперь сложным не кажется, сделал же. Сложности возникали в основном по незнанию каких-то вещей. Скажем года три назад был проект со сложной бизнес логикой, о CQRS и event sourcing я тогда не знал и в итоге вышло как-то слишком сложно в плане поддержки.
    Ответ написан
    1 комментарий
  • Интересные блоги/источники информации по архитектурам Web приложений?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    общепринятых паттернов нет.

    Почитайте Мартина Фаулера, Боба Мартина, Крэйга Лармана, Кента Бэка, банду четырех, Эрика Эванса и других людей и возможно в этом вопросе у вас поменяется мнение. Скажем SoA и гексагональная архитектура, CQRS и т.д. хорошо вписываются в концепцию распределенных систем.

    Как вы комбинируете все идеи которые нагенерили за последние лет 20, это уже другое дело. А высокие нагрузки (реально высокие) когда нужно вкладывать кастыли - эта задача появляется далеко не сразу. И если архитектура изначально позволяет масштабировать приложение - проблем будет явно меньше. Преждевременная оптимизация - корень всех зол (почти).

    По поводу технологий, что где и когда - никто не даст вам такого ответа. Проще всего, раз уж речь идет о распределенной системе, проектировать систему таким образом, что бы узкое место можно было легко заменить. Скажем если у вас весь проект написан на Python и один его компонент подвержен особенно большим нагрузкам, можно переписать его на Go или C++ а всю остальную систему оставить без изменений. Если у вас узким местом стала база - вводить кэши или уровни кешей. Если узким местом стала шина данных между различными компонентами системы - думаем как оптимизировать это звено (какие-нибудь protobuf для обмена данными, zeromq или свой бинарный протокол)
    Ответ написан
    Комментировать
  • Чем вы пользуетесь для составления требований и проектировании ПО?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Jira + testlodge. Если именно документация - можно какую вики поставить.

    Вопрос довольно сложный, так как под "документацией" и "требованиями" многие понимают разные штуки. Я вот пытаюсь писать приемочные тесты на геркине, и использовать это как документацию к проекту.
    Ответ написан
    Комментировать
  • Кто пробовалл программирование под android на python?

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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Сейчас разбираю - в одном файле создание объектов через замыкания, через new и через Object.create. Нафига?


    Создание объекта через замыкание - модуль. Нужно потому что в JS нет модификаторов доступа и все приватное должно быть сокрыто в изолированной области видимости. Это шаблон.

    Создание объекта через new - а вы как объекты создаете? Не пользуетесь объектами вообще?

    Object.create - это уже для наследования применяется. Да, конечно если вооружиться каким ES6 все будет делать сам JS или трансляторы ES6 - ES5. Но знать об этом нужно.

    Как разбираться в чужом коде? Нужно уметь писать свой для начала. Описанные вами проблемы решает периодический код ревью и т.д. А среди фронтэндщиков писать говнокод так же популярно как и среди других разработчиков. Возможно только в PHP комьюнити процент говнокода больше. Это проблема отсутствия образования и понимания тех самых паттернов и т.д. Заучат для собеседования и все.
    Ответ написан
    6 комментариев
  • AngularJS SPA и Symfony2, подводные камни?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Сразу ознакомьтесь: https://github.com/johnpapa/angular-styleguide

    Как писать REST Api - решать вам. Если посложнее и для самообучения - посмотрите в сторону драфта стандарта jsonapi.org

    По поводу модулей - лично мне не нравится ни ngResource и restangular (хотя этот сносно использовать). Для простых приложений подойдет любой вариант, мне же нравится моя обертка над $http. Но если обертки нет - лучше взять готовое решение. Для ваших задач подойдет любой вариант.

    По поводу services/factories - рекомендую писать приложение сразу на ES6, тогда можно будет писать нормальные сервисы. По сути различие между services и factories - в первый передается функция-конструктор, во втором - функция-фабрика. при использовании ES6 классов сервисы писать намного удобнее.

    Как проектировать приложение - тут сходу сложно будет. Тут стоит много чего почитать и не только по ангуляру или symfony. По Symfony к примеру подойдут следующие штуки: https://github.com/phptodayorg/php-must-watch
    Ответ написан
    2 комментария
  • Какой вариант оптимальней?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    А что по вашему читается лучше?

    для первого примера - второй вариант как более читабельный. Пусть лучше дублируется условие чем действие по этому условию.

    По второму - как вам удобнее и если логика допускает реверс порядка.
    Ответ написан
    Комментировать
  • Каковы ваши впечатления о книгах Мартина Фаулера?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Норм.

    p.s. Каков вопрос таков и ответ.
    Ответ написан
    Комментировать