• Стоит ли изучать Symfony?

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

    И тут приходим к тому что нужно учить не фреймворк, он тут много погоды не делает (хотя в Symfony чуть сложнее накосячить, хотя всегда можно сделать ужасно). Так же есть определенные нюансы. Скажем если вы захотите проникнуться настоящим феншуем, DDD всякими и т.д. придется отказаться от MySQL в пользу PostgreSQL (если конечно вы не работаете с ораклами какими, в mysql все плохо с автоинкрементами, что накладывает определенные ограничения при работе с Doctrine и заставляет писать кучу лишнего бойлерплейта что бы все было красиво, хотя этот бойлерплейт можно реюзать).

    По сути единственная разница между приложениями на Laravel и Symfony - ORM идущая из коробки (как бы все можно подменить под себя). Все остальное - минимальные различия. А с нормальным ORM (а в PHP мире она пока одна - Doctrine) уже можно делать дела красиво и эффективно с точки зрения трудозатрат. Но даже с ActiveRecord можно жить и не тужить.

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

    Прочитал много мнений о том что Laravel намного быстрее работает чем Symfony.

    Вот этот параметр просто не учитывайте. Как минимум Laravel основан на компонентах Symfony и единственное узкое место, которое явно работает медленнее это Doctrine ORM, но та гибкость которую она дает слихвой оправдывает прожерливость. Да и смысл вообще по этому поводу загоняться этом есть только на больших нагрузках, а так вы с большей вероятностью убьете производительность не расставив где надо индексы в базе.

    подскажите правильный путь

    А правильного нет. Каждый сам свой путь выбирает. Хотите развиваться? Читайте книги. Кента Бэка почитайте, Эрика Эванса и других персонажей... Расширяйте кругозор, а далее что понравится. А да, не ограничивайтесь книгами только для программистов. Почитайте чего по процессам разработки (чего-нибудь про скрамы, канбаны, лины, континиус импрувмент).
    Ответ написан
    4 комментария
  • Как социальные сети и прочие сайты определяют похожую музыку?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    у вас есть треки, у васи пупкина есть треки, множества частично пересекаются, объединив получим рекомендации для вас. Добавим к этому огромное количество пользователей и получим что-то худо бедно похожее на нормальный автоподбор музыки. Если учитывать кто с чем что слушает, можно повысить точность. Ну и т.д. Так собственно работает большая часть сервисов рекомендации музыки. Есть еще другие подходы основанные на анализе композиций, но таких сервисов не так много. Скажем спотифай использует echonest для увеличения точности выборки.
    Ответ написан
    Комментировать
  • Что такое static в ООП php?

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

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

    $foo = Singleton::instance();
    $bar = AbstractFactory::create('bar');
    $buz = Buz::fromArray([
        'many' => 'arguments', 'Buz' => 'has', 'private' => 'constructor'
    ]);


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

    Если рассматривать с точки зрения пораждающиз статических методов, нам так же надо знать кого создавать. И тут появляются два ключевых слова - self и static. Причем self равносильно написанию имени класса в котором наш статический метод находится и просто позволяет уменьшить дублирование. static же намного интереснее, так как оно указывает непосдерственно на тот класс, из под которого был совершен вызов. Скажем если у вас есть наследование вы можете запихнуть порождающий метод в базовый класс, и тогда узнать кого создавать в принципе не проблема.

    class Foo {
        public static function createWithSelf() {
             // равносильно new Foo();
             return new self();
        }
        public static function createWithStatic() {
             // а тут мы пока не знаем кто такой этот static
             $foo = new static();
        }
    }
    
    class Bar extends Foo {}
    
    $foo = Bar::createWithSelf(); // тут будет экземпляр Foo
    $bar = Bar::createWithStatic(); // тут будет экземпляр Bar
    Ответ написан
    1 комментарий
  • Правильный сон при умственных нагрузках - как правильно спать?

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

    8 часов +- для каждого человека. Есть так же различные способы "оптимизации", типа 36-ти часовых суток, разделения сна и много веселых вещей.

    "золотой середины"

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

    В целом об этом всем довольно много написано. Но на эксепременты и подбор "своего" режима уйдет много времени.
    Ответ написан
    Комментировать
  • Сaptcha для RESTFull(SPA) сайтов?

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

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

    Ко всем 38000 записям на каждого? И как-то волшебно это число звучит...

    Вообще судя по описанию (одна таблица) нет смысла использовать реляционную СУБД. В целом я бы рекомендовал посмотреть в сторону Cassandra
    Ответ написан
  • Почему приложение x64 в два раза медленнее x86?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Скорее всего в x64 билде происходит какая-то лишняя работа с памятью. В любом случае проблема кроется где-то в работе с указателями и оптимизациями компилятора.
    Ответ написан
    Комментировать
  • Почему тормоза MacBook pro 2014 + 4к монитор Samsung U28D590D?

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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Ух, просто не выйдет. Грубо говоря это альтернатива null-ам, но не только. Они в принципе обобщают много чего.

    Рекомендую почитать: habrahabr.ru/post/151703 + пробегитесь по комментам. Там и ссылки хорошие дают, и мысли высказывают неплохие.
    Ответ написан
    2 комментария
  • Как собрать шаблон jade на стороне клиента (в браузере) при помощи javascript на лету?

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

    Вместо этого предлагаю реализовать простенький менеджер шаблонов, который предоставляет простой интерфейс:
    templateManager.get('tpl/something.html');
    templateManager.put('tpl/something.html, 'some template');


    для разработки эта штука может загружать по ajax собранные шаблоны, а в прод можно было б скомпилить из этого всего простенький файлик который бы пихал все это туда. По аналогии с angular template cache короче.

    updated

    чет затупил я, у gulp-jade есть опция client, тогда будет jade будет компилироваться в js который вы уже можете использовать.
    Ответ написан
    6 комментариев
  • Как вызвать EntityManager в контроллере, который определен как сервис?

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

    Поздравляю, вы на пути к application level сервисам и тонким контроллерам.

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

    А примеры там есть: symfony.com/doc/current/book/service_container.html - почитайте.
    Ответ написан
    2 комментария
  • Документация к SOAP API. Нужна ли она и справедливо ли возражение о том, что WSDL достаточно?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    WSDL достаточно, по нему генерируется код, в нем есть вообще все все все что нужно для работы с API. Документация нужна только если у вас море методов и все они делают какие-то сложные вещи не очевидные из названий.
    Ответ написан
    6 комментариев
  • Какая бд выдержет нагрузку в 10к запросов в минуту?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    скорее всего вам посоветовали грамотно проектировать БД, а не свою СУБД написать.

    10К запросов в минуту это всего-то 166 запросов в секунду. Далее уже вопрос идет - какого плана запрсы. Если простые селекты то любая сгодится. Ну а если не простые - то тут уже надо думать. Опять же все упирается в архитектуру вашей БД и что вы будете с ней делать.

    В целом потсгрес наиболее универсальный ответ, и не только потому что у него производительность норм и он хорошо скейлится горизонтально.
    Ответ написан
    7 комментариев
  • Как вызвать функцию после отрисовки ng-repeat?

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

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

    javaportal.ru/java/articles/UnicodeJDK1_6.html

    Значит все же речь шла о "code point" и "code unit". Читаем статью и разбираемся.
    Ответ написан
    Комментировать
  • Как правильно синхронизировать проект на GIT?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    ммм... git pull --rebase (или без rebase если хотите merge)

    Почитайте книжечку "Pro Git" (есть на русском).
    Ответ написан
    6 комментариев
  • Как лучше организовать локальные настройки в angular-проекте?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    делаем файлик config.dev.js или что-то в этом духе и пишем туда что-то в этом духе:

    angular.module('app.config', [])
        .constant('API_ENDPOINT', 'http://api-dev.example.com')
    ;


    и делаем от него зависимым наше приложение и используем константы.

    Далее есть варианты:
    1) при сборке подключать нужный файлик
    2) инлайнить файлик с конфигурациями в страницу.
    Ответ написан
    2 комментария
  • Как удалить переменную в массиве, который находится в массиве?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    давайте быстренько разберемся.

    $scope.gridList[rowIndex]

    вот тут у нас идет ссылка на объект, у него нет метода splice.

    Далее...

    removeItem(gigleIndex, item, $index)

    item тут лишний, так как мы уже передаем индекс элемента.

    $scope.gridList[rowIndex].gigli.splice(index, 1)
    Ответ написан
  • Какие средства вы используете при работе с backend??

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    1. git репозиторий
    2. vagrant + ansible для настройки окружения (php 5.6, postgresql 9.4, nginx и далее уже то что нужно конкретно к проекту)
    3. базовый каркас приложения на основе symfony2 (чуть чуть изменена структура под себя)
    4. behat, phpspec - основные настройки
    5. phpcpd, phpmd, php-cs-fixer и прочие приблуды для автоматического анализа кода и генерации отчетов
    5. gulp - для сборки бэкэнда и фронтэнда
    6. скелет angular приложения для админки

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

    7. генерация ключей для деплоймента и их шифрование в gpg с ключами разработчика и CI-ки (если нужно)
    8. настройка CI

    Ну а далее идут уже митинги, обсуждения, и кодинг собственно
    Ответ написан
    Комментировать
  • Symfony 2 Авторизация по API?

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

    Для авторизации вы сами можете определить как забирать пользователя из юзер провайдера.

    В целом же, если внешнее API было бы вашим, я бы рекомендовал использовать oauth2.
    Ответ написан
    Комментировать