• PhpStorm - сохранение css файл другом папке после его компиляции

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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Symfony2 + FOS/Rest + JMS/Serializer + Doctrine. Для очень простых штук возможно избыточно, но покрывает все кейсы. Для чего-то маленького мне нравится использовать Silex.

    Отдельно посмотрите в сторону HTTP Middlewares. Их можно поставить на любое приложение на базе HttpKernel (то есть Symfony2, Silex, Laravel и т.д.)

    stackphp.com

    Среди мидлваров вас могут заинтересовать OAuth (для авторизации) и CORS. Ну и можно свои полностью реюзабельные компоненты делать.
    Ответ написан
    Комментировать
  • Как вытащить из большого CSS только используемые свойства?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    прогоните этот CSS через uglifycss и раздавайте с gzip-сжатием. Можно даже что бы не напрягать сервак положить рядом уже сжатую в gzip версию, и указать серверу не пережимать а брать этот файл. Таким образом стили похудеют на пару сотен килобайт и будут грузиться больше.

    Далее браузер закеширует стили и при переходе на другие страницы разве что будет делать грустные запросы в ответ на которые будет приходить код 304 (не изменен). Это намного лучше подобных извращений.
    Ответ написан
    Комментировать
  • Как расшифровать непонятную кодировку в JS?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    обычная примитивная обфускация. Просто составляется строка из кусочков хэш таблицы $y.
    Ответ написан
    Комментировать
  • Почему все так любят YII?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Потому что так сложилось, что большинству WEB разработчикам в мире PHP почему-то плевать на все эти "fancy patterns", SOLID и прочее. Зачем людям тратить время и разбираться в best-practice когда можно взять и лепить сайты.

    Скажу откровенно, на момент выхода Yii1.0 это было действительно что-то новое в мире PHP. Но за отсутствием качественного развития - сдулось.
    Ответ написан
    2 комментария
  • MySQL or PHP? Сложный запрос

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Лучше это делать уже после того как отработала выборка, то есть на php.
    Ответ написан
  • Continuous Deploy. Не только вперед по истории коммитов git, но и экстренно назад?

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

    Если Docker смущает своей молодостью, есть вариант с оформлением приложения в виде DEB-пакета.

    А еще есть Capistrano.

    p.s. Довольно интересная тема, но на большинстве проектов, с которыми довелось сталкиваться или общаться с разработчиками оных, популярна стратегия "фиксить АСАП!" (за редкими исключениями, причем даже если минута простоя стоит тысячи долларов). Обычно это связано с тем что такие ситуации не случались ибо все предварительно обкатывается на стэйджинге с копией реальных данных.
    Ответ написан
    2 комментария
  • PHP, как не принимать get запрос с чужих сайтов?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Если запрос к скрипту осуществляется через JS, можно добавлять дополнительные заголовки. Но это не 100% гарантия. Да и нету таких способов, которые бы дали 100% ую гарантию защиты от подобного.
    Ответ написан
    Комментировать
  • На каких ресурсах можно поизучать тестирование в PHP?

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

    Почитайте документацию к PHPUnit, там хорошо написано. Есть так же частичный перевод (чуть старый).

    Про функциональные и интеграционные тесты можно почитать сначала на вики и потом уже гуглить что не понятно, различные статьи и т.д.

    Если вас интересует TDD - почитайте "экстремальное программирование" Кента Бэка. Мне очень понравилась подача материала в этой книге. Там же про рефакторинг в контексте TDD хорошо расписано.

    Если вас интересует BDD - behat.org
    Ответ написан
    Комментировать
  • Как работают сервиса по накрутки в вк?

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

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

    Ну это из таких способов, которые могут привлечь реальных пользователей.
    Ответ написан
    Комментировать
  • Настройка grunt для различных url

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    эм... как настроите так и будет. Сделайте один таск для сборки под админку, и другой для сборки под фронтэнд. Общие части можно собрать один раз и продублировать через grunt-copy.
    Ответ написан
    Комментировать
  • На каком движке работает сайт

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    если судить по сайту разработчика - Ruby on Rails.
    Ответ написан
    Комментировать
  • Как сделать универсальный независимый модуль в yii2?

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

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

    Есть так же готовые решения, генераторы статических сайтов (правда так сложилось что большая часть поддерживает только YAML).
    Ответ написан
    Комментировать
  • Какие выбрать БД и движок (фреймворк) для проекта?

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

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

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

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

    По сути, все сводится к формированию регулярного выражения из правила. Например правило вида
    route="/blog/{id}" requirements={id: '\d+'}
    где route - это шаблон нашего урла, а requirements - валидация параметров (опционально)
    сгенерит регулярку вида:
    ^/blog/(?P<id>\d+)$
    где (?P<id>\d+) именованный подшаблон (можно сделать и проще, но так удобнее). С версии 5,2+ могут быть такие варианты:
    (?P<id>\d+)
    (?<id>\d+)
    (?'id'\d+)


    Далее ваш маршрутизатор при проверке соответствий с маршрутами просто проходит по массиву правил (по сути массиву регулярок) и смотрит соответствует ли оно какому-либо правилу.

    На самом деле в целях обучения, это самый классный способ. Ибо там есть где подумать и над формированием новой строки, и с регулярками разобраться можно неслабо... Последнее поможет вам не только в PHP, но и в JS (немного), и просто в жизни (кучи IDE и редакторов имеют поиск и замену по регуляркам, что иногда очень полезно).

    Схожая реализация в Yii, и в большинстве других фреймворков.
    Ответ написан
    3 комментария
  • AngularJS, как выполнить синхронный запрос через $http?

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

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

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