• Имеет ли смысл в angular делать какой то сервис для всех других сервисов?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    есть такие вещи как пинцип единой ответственности и DRY. В соответствии с ними сервисы и надо проектировать. Контроллеры должны отвечать лишь за связь view и логики, то есть должны быть потоньше.

    Выносить какие-то общие вещи в отдельные сервисы, делать иерархию зависимостей сервисов не настолько линейную - это вообще нормально. Зависит от логики приложения.
    Ответ написан
    1 комментарий
  • Одностраничное приложение только на websocket, делал кто?

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

    По сути, websockets будут продуктивнее работать (если мы не берем в расчет HTTP2), но вам придется реализовывать мультиплексирование запросов/ответов, как-то писать свой протокол поверх и словом куча гемороя. При том что профита по производительности в сравнении со старым добрым HTTP + Keep Alive не так много.

    Для реалтайма - да, конечно же websockets наилучшее решение, но использовать его целиком как транспорт - сомнительное занятие. С другой стороны встречаются уже готовые реализации транспорта на websockets где проблемы, которые я перечислил, уже решены (возможно не полностью но с большего).

    p.s. пробовал делать все на websockets но без мультиплексирования, у меня небыло необходимости разруливать конкурентные запросы или паралельные, все шло через очередь да и задачи были очень простые. А почему был выбран websockets - потому что всеравно использовался а для одного метода еще API писать было лень.
    Ответ написан
    2 комментария
  • Что лучше использовать при верстке структуры?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Jade?

    По поводу установки препроцессоров - Node.js, gulp, ваш препроцессор (заодно и для стилей препроцессоры + autoprefixer) + livereload или browsersync + watch.
    Ответ написан
    1 комментарий
  • Возможно ли редактирование неполных сущностей в доктрине?

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

    Тогда не понятно почему вы вообще используете Doctrine ORM. Вы вкурсе что происходит при Flush? (если конечно не меняли ChangeTrackingPolicy, но тогда и что внутри flush вы тоже должны знать)

    Вообще подобные задачи, если вам в принципе плевать на внутреннее состояние ваших энтити, то есть вы прекрасно знаете что вы меняете и зачем - лучше использовать DBAL или DQL напрямую в репозитории.
    Ответ написан
  • Возможно ли в Doctrine создать сущность без уникальных полей?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Можно конечно добавить полям ID и DATE, анотацию @Id

    а зачем вам тут составной первичный ключь? ID достаточно.

    Вообще по определению у сущности должен быть ID, иначе это уже не сущность.
    Ответ написан
    1 комментарий
  • Mysql умеет сам делать merge index, но быстрее ли это?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Что быстрее, сканирование одного индекса или манипуляции с четырьмя индексами с целью получить пересечение/объеденение (в зависимости от логики запроса) результатов сканирования?
    Ответ написан
    2 комментария
  • Как реализовать темпоральную модель с Doctrine ORM?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Функционал вьюшки и временных таблиц отсутствует у части баз данных. Посему доктрина из коробки не умеет работать с оными.

    docs.doctrine-project.org/en/latest/reference/nati...

    Как-то так... Желательно это дело инкапсулировать внутри репозитория.
    Ответ написан
    Комментировать
  • Ресурсоемкая функция подвешивает браузер?

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

    Варианты - самый наилучший - вынести тяжелую задачу в WebWorker-ы. Их для этого и придумали.

    Другой вариант, если вам важна поддержка старых браузеров - делать паузы через каждые N операций. То есть у вас скажем массив с миллионом айтемов. Можно попробовать все делать асинхронно через setTimeout, что разгрузит event loop и позволит в перерывах UI-ке реагировать. И да это кастыль.
    Ответ написан
    1 комментарий
  • Какой аналог jQuery.globalEval есть в AngularJS?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Аналогов нет. А $eval несколько другая штука.
    Ответ написан
    Комментировать
  • Стоит ли начинать учить Angular 1.x или дождаться 2.x и не забивать себе голову?

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

    С концептуальной точки зрения все то же самое. Просто что-то стало проще, модули заменили на es6 модули, упростили DI, директивы сменились webcomponents и т.д.

    Словом... учите JS и ES2015 (с babel.js) а остальное так.

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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Да на самом деле ватман + стикеры и Kanban-борду для джиры, спецификации и требования (а так же тест кейсы, definition of done) к самим стори в джире + гуглодоки (для QA).

    Этот подход мне не слишком нравится и сейчас в поисках альтернатив, в частности как-то хочется что бы спеки были в терминах GivenWhenThen, тогда можно будет чуть оптимизировать ведение проектной документации. Но пока есть проблемы со внедрением. От realtimeboard отказались сразу так как... стикеры удобнее и нагляднее на стэндап митингах. Тут профит больше для тех у кого команда распределенная.

    По поводу серверного API - как это не странно, тупо документация в markdown написанная руками которая хранится в git. Это с одной стороны геморой, так как надо руками поддерживать, с другой стороны удобно, так как это просто (что может быть проще?) + можно посмотреть изменения в API за период, что бывает удобно.

    Со сваггером я особо не разбирался, если там можно как-то следить за изменениями в API то оно имеет смысл. Если нет - то не вижу смысла. Удобно только когда разработка клиентов происходит силами другой команды разработчиков и это все разнесено во времени.

    А вот за zeplin спасибо, интересно глянуть, сейчас это хаос, который частично решается какими-то внутренними силами но в целом это пока самая трешовая часть. В основном же наши дизайнеры любят google drive и локальную файловую систему, что не слишком продуктивно, особенно когда речь идет о нарезке. Хотя вроде как планируют что-то внедрять что бы сделать ситуацию по лучше но я пока точно не знаю что.
    Ответ написан
    2 комментария
  • Какой MV* JS фреймворк стоит начать изучать?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Хочется что-то похожее на Yii, но в контексте JS

    Боже упаси.

    Ionic+angular для старта более чем. Есть еще famo.us для красивого UI и т.д. Как правило юзают Angular но можно и на React + Flux все делать, но под Angular банально больше готовых решений, во всяком случае на данный момент. Единственный ощутимый минус Angular - он порочный. То есть он клевый и няшный, но, как и Yii, провоцирует разработчиков использовать не очень красивые решения. Скажем можно соблазниться решить проблему в лоб и убить производительность фреймворка жирным дип-ватчем в контроллере.

    изучать вторую версию или первую?

    Вторая еще не вышла. Достаточно взять первую, вооружиться ES6/7 через babel.js и пытаться перенимать практики из второго для первого (сервисный слой к примеру можно будет перенести просто так, скопипастив почти, больше мороки будет с директивами, но опять же есть советы как лучше писать директивы что бы потом можно было легко это дело во второй версии юзать).

    общаться с API с помощью RESTful.

    Большинство фреймворков предложат вам только относительно низкоуровневое API для работы с сетью. Есть так же Ember.data, есть так же js-data хотя думаю для начала для вас это будет оверхэд. А может и нет.
    Ответ написан
    7 комментариев
  • Как лечится кризис начинающего программиста?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Доктор, что со мной?

    Волчанка

    или неправильно рассматриваю обучение в целом

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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Есть допустим 100 разных названий товара, нужно вывести их в 3 столбца.

    а зачем тут таблица? Да и в вашем примере таблицы как бы и нет... Это можно сделать через css

    <div class="col-md-12 product-list" ng-repeat="phone in phones">
       <div class="product">{{phone.name}}</div>
    </div>


    .product-list {
        column-count: 3;
    }


    Для IE9 есть полифил (ну и для хрома он тоже нужен, так как column-gap не поддерживается).

    Если все же хочется именно средствами ангуляра - то по хорошему следует сделать директиву, которая будет резать коллекцию на три части и выводить. Но это сложно, если делать именно по феншую. А можно фигнуть фильтром, это не очень хорошо зато влоб.
    Ответ написан
    Комментировать
  • Стоит ли начинать проект на Angular?

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

    Что до Angular2 - он еще не скоро будет стабильным, да и если будете соблюдать рекоммендации из angular styleguide и будете использовать es2015 (babel.js), то проблем с миграцией будет не так много, если оно вам вообще нужно будет.

    У Meteor вообще чуть другая концепция. Там основная фишка - один код на клиенте и на сервере. Но это накладывает свои ограничения.

    Polymer - няшка. но это только UI. Сверху вам всеравно придется что-то еще использовать.
    Ответ написан
    Комментировать
  • Какова скорость работы различных CMS?

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

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

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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Да, подключение файлов не влияет на пространства имен. То есть если вы подключаете файл, в котором пространство имен File, из пространства имен Index, то оно и останется File.

    Соответственно __NAMESPACE__ выводит к какому пространству имен относится выполняемый код.

    Что до вашей задачи, подключаемые файлы ничего не должны знать о том, кто их подключает. Просто смиритесь с этим фактом (задачу решить можно но кастылями со стэком вызовов и извращениями). Да и вообще, используйте PSR-4 и автозагрузку и прекратите все вручную реквайрить. А еще лучше используйте Composer.
    Ответ написан
    Комментировать
  • Design patterns in PHP?

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

    Вообще стоит почитать оригинальную книгу. Хотя и на википедии информации предостаточно в сжатом виде.

    Если без лишней воды, можно еще послушать лекции Сергея Немчинского (там помимо GoF рассказывается в принципе про основы ООП, GRASP и т.д. Что вобщем-то логично ибо без основ понять почему так а не иначе сложно и все сведется к простому заучиванию. и еще несколько лекций по рефакторингу).

    Ну и еще рекомендую почитать/посмотреть дяду Боба и подчерпнуть там чего о SOLID.
    Ответ написан
    Комментировать
  • Можно ли на JavaScript разрабатывать полноценные Android-приложения?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Если нет, то на Java?

    Java это нэйтив платформа для андроида, так что да.

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

    Можно но дороже и сложнее чем на Java (профит только при суппорте хотя бы двух платформ). Еще есть native-react из интересного.
    Ответ написан
  • Какие ЧПУ лучше для SEO?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Точно не второй вариант, в нем нет смысла ни для машины ни для человека.

    Разницы между 1-ым и 3-им вариантов особо нет, поисковики прекрасно умеют переводить ключевые слова и учитывать это при поиске. Для человека урл в большинстве случаев так же бесполезен, никто не пишет их руками, только разработчики и SEO-шники страдают подобным. Насколько я понимаю логика довольно проста, если ключевое слово входит в урл, то в ранжировании оно будет выше чем перевод. Так если вы ищите "page" то 3-ий вариант, а если "страница" то 1-ый. Хотя опять же у меня нет информации о том насколько велика разница с учетом остальных параметров (у вас же не только урл влияет на все это, а вообще все, от банально метатегов и ключевых слов в тексте до оптимизации фронтэнда и поддержки мобильных устройств).

    Если я не прав, требую прув.
    Ответ написан
    2 комментария