• Популярен ли typescript среди ROR разработчиков?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Популярен ли typescript среди ROR разработчиков?

    Какая собственно разница, вы же себе стэк технологий подбираете.

    В общем и целом TypeScript не сильно распространен пока не только среди RoR сообщества.
    Ответ написан
    3 комментария
  • Удобно ли будет организовать PHP клиент для RestFull API (SPA)?

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

    Ну не совсем, с куками вы все так же можете работать и через куки хранить сессии, другое дело что это в 99% не нужно. А токены - JWT решает все проблемы.

    не очень удобно и не привычно работать с JS MVC

    Привыкните, учитывая то что JS MVC это то, чем должно быть MVC.

    сео оптимизация

    Тут есть варианты:
    - гугловский краулер поддерживает JS нынче, на счет остальные не вкурсе.
    - генерация снапшетов (phantomjs например) и Ajax crawling
    - server-side рендринг, актуально при втором пункте.

    везде нужно тягать токен туда сюда

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

    и к нему можем написать клиент на любом php фраэмворке в классическом виде

    Почитайте про гексагональную архитектуру, например. HTTP API и классический WEB UI это лишь два интерфейса к одной и той же логике, которая инкапсулирована в сервисы. Разница лишь в том, как DTO из сервисного слоя будет юзаться для формирования представления (будь то json или html).

    https://www.youtube.com/watch?v=ajhqScWECMo - вот вам посмотреть на досуге.
    Ответ написан
  • Зачем в Yii2 нужен ActiveRecord?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    ActiveRecord нужен для реализации persistence layer, а виджеты это кастыль для достижения чего-то тип HMVC. В общем и целом AR должно всегда быть за сервисным слоем, или на крайняк на уровне инфраструктуры.

    Не ну можно конечно забить и юзать в контроллерах как подавляющее большинство разработчиков на Yii.
    Ответ написан
  • Как узнать что есть что в javascript?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    console.log - console(переменная) log(свойство)


    console - это переменная, которая содержит ссылку на объект
    console.log - это свойство log объекта, содержащегося по ссылке в переменной console
    console.log() - это вызов функции, содержащейся в свойстве log объекта, содержащегося по ссылке в переменной console

    Person.prototype.greet - greet это свойство объекта-прототипа, объявленного для конструктора Person.
    Ответ написан
    Комментировать
  • Почему замедляется работа скрипта?

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

    Хотя даже при таком раскладе 20 часов для 16К элементов это как-то сильно долго...
    Ответ написан
    5 комментариев
  • Как отфильтровать значения полученные из ng-repeat?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Хватит пытаться все делать в шаблонах. Вынесите логику хотя бы в контроллер (а лучше в сервис, но я думаю подобного просить уже слишком много).
    Ответ написан
  • Где в Codeigniter полиморфизм?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Он точно там должен быть.


    Есть два вида полиморфизма:
    - параметрический полиморфизм
    - полиморфизм подтипов

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

    С полиморфизмом подтипов веселее, ибо уж сильно похоже на обычное описание наследования, но сводится все к теории типов. Почитайте про принцип подстановки Барбары Лисков.

    Повторное использование библиотек не будет являться полиморфизмом?

    Нет, полиморфизм действует на уровне типов, то есть даже не классов а именно типов. То что вы ищите называется Dependency Injection (IoC, DiC, не суть)

    Можно ли это назвать полиморфизмом?

    Нет.
    Ответ написан
    Комментировать
  • Сколько можно брать за создание сайта?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Согласно правилам рыночной экономики.

    Будете брать слишком много, будет мало проектов, будете брать слишком мало, будет слишком много плохих проектов. Так же все зависит от ниши на которую вы ориентируетесь, вашего опыта и т.д.

    Из вопроса я могу сделать вывод только о том что опыта у вас нет.
    Ответ написан
    Комментировать
  • Что значит heapUsed в JSON который отдает process.memoryUsage?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Куча

    vsize (Virtual Memory Size) - Общий размер памяти доступный процессу (включая shared memory, swap и т.д.)
    rss (Resident Set Size) - сколько памяти из RAM доступно процессу.
    heapTotal - сколько памяти отдано под кучу
    heapUsed - сколько уже памяти аллоцировано на куче

    По вашим данным судить об утечке памяти нельзя, так как недостаточно памяти использовано (heapUsed сильно меньше heapTotal), возможно просто еще сборщик мусора не запускался.
    Ответ написан
    2 комментария
  • Как правильней сделать быстрое выкатывание в продакшн?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    конфликты мерджей очень сильно тормозят

    1) Дробите задачи, делайте ветки короткоживущими
    2) Хорошая идея делать ребейз принятых веток
    3) Попробуйте адаптировать под себя git-flow, как альтернатива хорошо себя показывает feature-toggles вместо feature-branches

    Да и бд экспорт/импорт постоянно приходится делать.

    1) Миграции
    2) Старайтесь делать миграции так, что бы они не ломали предыдущие релизы. Ну мол если вам надо добавить колонку, хорошей мыслью будет в первом релизе сделать ее nullable что бы старая версия приложения еще могла работать с новой версией базы, и потом уже следующим релизом добивать этот кусок. Основная идея - желательно что бы две последние версии приложеньки могли работать с последней версией базы данных. Если у вас база нормализована нормально, то проблем с этим быть не должно.

    Если второй пункт соблюдается то вакатка новых релизов будет происходить по такому алгоритму:

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

    При таком сценарии даунтайм будет минимальным.

    вопрос с выкатыванием новых релизов

    Вот вам варианты в порядке сложности и мощности (от простого к сложному).
    - capistrano/capifony
    - ansible/puppet/chief/etc
    - docker + docker-machines + docker-compose

    Ну и да, тесты тесты тесты. Все самое критичное должно быть покрыто хотя бы интеграционными/функциональными тестами. В идеале же вся бизнес логика должна быть покрыта быстрыми юнит тестами и UI/инфраструктура функциональными (читать про пирамиду тестирования).
    Ответ написан
    5 комментариев
  • Как дождаться загрузки основных данных до начала обработки пути?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    1) выносим эту логику в сервис
    2) храним в сервисе промис
    3) используем этот промис в ресолверах
    Ответ написан
    3 комментария
  • XAMPP или чистый LAMP?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    3 комментария
  • Как и когда изучать AJAX?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Не изучайте AJAX, изучайте XMLHttpRequest и HTTP.

    на сколько устарела технология

    Это просто API браузера что бы из JS делать HTTP запросы. Это не технология даже. Просто API, сейчас актуальная версия - XmlHTTPRequest2.

    Просто в интерете не нашел более менее новых книг,

    Почти все "новые" книги учат писать контроллеры (ну тип, как клепать штуки, без объяснения почему так), фундаментальные знания они редко дают.
    Ответ написан
    Комментировать
  • Как написать директиву для TreeView?

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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    А зачем по вашему нужны циклы? Скажем
    var arr = [];
    for(var i =0; i < 10; i++) {
       arr.push(i);
    }


    это же можно записать просто:
    var arr = [];
    arr.push(0);
    arr.push(1);
    arr.push(2);
    //...
    arr.push(9);


    смысл тот же, и второй кусок кода будет работать быстрее... зачем тогда цикл?
    Ответ написан
    Комментировать
  • Сборник примеров по Verilog HDL?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Можете у Texas Instruments понакачать даташитов к каким-нибудь прикольными небольшими железкам (тип там, простенький UART ресивер) и реализовать их.
    Ответ написан
    Комментировать
  • Как организовать взаимодействие между REST бэкендами?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Обычные curl (или лучше Guzzle) запросы внутри сервисов-репозиториев. Тогда вы сможете в будущем отказаться от curl и перейти на MQ например или еще как... зависит от задачи и целей которые вы приследуете.
    Ответ написан
    Комментировать
  • Как использовать $scope вне контроллера?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    У подхода предложенного Павел Кононенко есть свои плюсы (просто), и минусы (логика из view layer чуть чуть вытекла в контроллер). Что бы этого не происходило можно сделать это дело при помощи старых добрых директив и выставлять заголовки и метатеги через них во вьюшках. Далее уже есть варианты:
    - в директивах ловить метаданные и сэтить их через сервис, метаданные выводит отдельная директива
    - передавать данные напрямую в директиву отвечающую за вывод метатегов (директивы могут общаться).
    Ответ написан
  • Как "правильно" передать данные в родительский контроллер из дочернего?

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

    события это круто и удобно, но очень легко превратить все в неподдерживаемый трэш как только система разрастется до хоть сколько нибудь большого масштаба. Завязывать на них какую-то логику вообще гиблое дело. В крайнем случае у вас есть два пути:
    - кастыль в виде data у родительского стэйта (данные стэйта наследуются, подробнее в документации)
    - заиметь сервис у которого будет актуальная информация
    Ответ написан
    9 комментариев