Задать вопрос
  • Стоит ли переходить на MongoDB для блога (PHP)?

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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Since mpm-itk has to be able to setuid(), it runs as root (although restricted with POSIX capabilities and seccomp v2 where possible) until the request is parsed and the vhost determined. This means that any code execution hole before the request is parsed will be a potential root security hole. (The most likely place is probably in mod_ssl.) This is not likely to change in the near future, as socket passing, the most likely alternative solution, is very hard to get to work properly in a number of common use cases (e.g. SSL).


    mpm-itk.sesse.net
    Ответ написан
    Комментировать
  • Можете объяснить, чем полезна буферизация?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    конкретно в контексте шаблонизатора как в вашем примере - возможность пост-процессинга.

    В целом буферизация вывода означает что в сокет данные будут писаться большими пачками, что бы не плодить маленькие пакеты. Это позволяет более эффективно работать с I/O.
    Ответ написан
    Комментировать
  • Как справляется Google с индексацией сайтов на AngularJS и других фреймворках?

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

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

    Ну и еще вариант - тупо пропиать на уровне вэб сервера - если зашел бот - отдать ему снапшет.

    для генерации снапшетов можно либо поднять у себя phantom.js либо воспользоваться сервисами типа https://prerender.io/
    Ответ написан
    Комментировать
  • Конструктор в массиве объекта. Как реализовать?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    да, нужно вызвать конструктор, конструкция
    Curier[] crs = new Curier[n];

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

    Curier[] crs = new Curier[2];

    равносильно

    Curier crs = null, 
           crs2 = null;
    Ответ написан
    1 комментарий
  • Сидячий образ жизни кодера на самом деле ухудшает здоровье?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Да, чисто сидячий образ жизни ухудшает здоровье.
    Ответ написан
    Комментировать
  • Без каких плагинов не может обойтись современная front-end разработка под gulp?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Есть решения?


    50 милисекунд это не так уж много. Средний человек реагирует на событие после примерно 200 милисекунд. Так что либо вы привели не верные цифры, либо не знаю.

    В целом вам нужно почитать в wiki галпа (или в его README) про инкрементную сборку и решения вроде gulp-cache и gulp-newer. Либо хранить все файлы в памяти и уменьшить количество чтений с диска, либо компилировать только измененные файлы. Ну и неплохо совместить эти два подхода).
    Ответ написан
    1 комментарий
  • Какой основной стек технологий на front-end SPA ваша команда использовала за последний год работы на дядю (офис)?

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


    ashleynolan.co.uk/blog/frontend-tooling-survey-201...

    Собственно моя команда использует Angular уже где-то два с половиной года, и в принципе мы довольны. Особенно радует Angular2, который судя по тому что можно видеть, уже не особо страдает болячками 1.x версии. Не вижу смысла переходить на ReactJS, хотя он в списке потыкать (уже год). Основная боль - привить разработчику компонентный подход в Angular и с таким раскладом жить становится не так уж плохо. Особенно с ES6/7 в варианте babel. На Ember смотрел но опять же не вижу смысла. Кроме ember-data там для меня нет ничего особо интересного.

    Для сборки ранее использовали просто gulp и кучу тасков, сейчас это scss/less в зависимости от проекта и webpack в качестве бандлера. Я все надеюсь перевести все на jspm + system.js но увы пока ранова-то.

    Для тестов пока используется mocha, потихоньку хочется перейти на cucumber.js (на бэкэнде используем Behat, так что подружить их вместе и гонять одни и те же фичаспеки кажется логичным).
    Ответ написан
    8 комментариев
  • Эффективное обучение?

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

    А вы что хотели? Так у всех.

    Везде пишут: больше программируйте, чтобы стать профессионалом, но у меня пока что от такого способа только котелок начинает кипеть.

    Правильно, больше практики.

    но о каком-то прогрессе пока заявить не могу.

    Сколько времени прошло? Не думаю что сильно много. Отвлекитесь, почитайте про XP, может что-то новое для себя откроете. В целом же вам предстоит набить еще много шишек.
    Ответ написан
    Комментировать
  • Можно ли обрабатывать json напрямую в mysql?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Есть ли какой то метод для обработки этих данных напрямую в mysql

    Если заменить mysql на postgresql то минимальный набор инструментов для выборки есть.

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

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

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

    Но более простой вариант сделать все внешние ключи DEFERRABLE, так что при импорте данных мы можем просто обернуть это дело в транзакцию, и проверка целостности данных будет произведена только после коммита оной.
    Ответ написан
  • Где взять HTML5 аудио-плеер без прерывания при переходе по страницам?

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

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


    Тогда никак, ибо иначе придется собирать все потоки самостоятельно либо придется писать свой микшер.
    Ответ написан
    Комментировать
  • Для чего используются сессии в Django?

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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Может, вообще не использовать nav из bootstrap и делать самому?


    Это логично.

    Правильно ли убирать bootstrap отступы у блоков .col через "important"

    important это кастыль. Старайтесь обходиться без него. Вы всегда можете сделать свои модификаторы.

    Правильно ли дописывать к блокам типа ".col-md-4" свои классы типа ".item .col-md-4" или лучше оборачивать их?

    Семантика. В целом норм. Читаем про каскадирование и приоритеты селекторов.
    Ответ написан
    Комментировать
  • А как подставлять переменную в директиву?

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

    return {
        template: '<ng-include src="templateUrl"></ng-include>',
        scope: {},
        link: function (scope, el, attr) {
            attr.templateUrl.$observe(); // логика изменения переменной.
        }
    }
    Ответ написан
    2 комментария
  • Из чего состоит окружение продвинутого php разработчика?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Docker или Vagrant + Ansible/Puppet для окружения.
    Ответ написан
    Комментировать
  • Symfony - Перестали работать сервисы, что делать?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Обновил composer update и перестали работать сервисы

    интересно почему это... Смотрите как ваш сервис называется в том самом бандле в котором все это дело не работает и куда пропал сервис. Старайтесь в composer.json прописывать версию как можно точнее, что бы позволять обновляться только минорным релизам (никаких dev-master).
    Ответ написан
  • Нужно ли делать фильтр для коллекции в Angular?

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


    Я уже вам написал в комментариях к другому вопросу но продублирую. Когда пользователь выбирает какой-то другой вариант сортировки или фильтрации, мы просто уведомляем контроллер об этом. Тот уже будет просить сервисы что бы тот предоставил данные согласно нашим новым условиям. Сервис все это сделает и вернет нам данные в контроллер. Мы чуть чуть может еще подготовим данные под наше представление и выплюнем во view (по сути данные попадают в $scope). Далее за счет дата биндинга view реагирует на изменение состояния данных и подстраивается под них согласно вашему описанию (все эти ng-repeat и т.д. Не спроста шаблоны в ангуляре называют декларативными).

    Это собвенно и есть MVC, при таком подходе нашему view будет глубоко плевать на реализацию фильтрации, а нашей модели (логике по работе с данными) плевать на то как эти данные выводятся. А контроллер будет лишь посредником который будет знать как эти два слоя связываются друг с дружкой.

    updated

    Решил сделать пример, на который буду ссылаться дальше:

    Пример

    А теперь немного поясню зачем вообще так загоняться и когда допустимо фильтровать все в контроллере или вообще во вью, что бы небыло недопонимания.

    Давайте представим что мы мысленно раздели наше приложение на два слоя: слой который работает с данными (M), и слой который занимается отображением этих данных пользователю (V), ну и посовместительству хэндлит взаимодействие пользователя с этим view (формы например).

    Что бы упростить поддержку системы, нам надо снизить связанность этих двух слоев, сделав их максимально независимыми. Что бы изменения в одном слое не вызывали особой необходимости менять что-то в другом. Для этого мы вводим промежуточный слой - контроллеры (С). Это по сути и есть основная идея MVC. Разделяй и властвуй.

    Теперь давайте задумаемся. Вот вы делаете каталог товаров по схеме аля "загружаем все данные на клиент и там все фильтруем". И все идет хорошо, мы быстро все запилили и вот данных становится уже сильно много. Настолько много что приложение начинает пидалить или же просто загрузка всех данных занимает чудовищно много времени. И вот вы приняли решение о том что фильтрация теперь будет происходить на сервере, а вы будете загружать только то что нужно сейчас.

    Если у вас работа с данными уже была разделена сделать это не составит проблем. Мы просто поменяем наш ProductCatalog и заменим там методы на нужные нам. View от этого не поменяется ни сколички. Более того мы можем спокойно покрыть этот функционал быстрыми юнит тестами.

    Но есть еще такая штука как "технический долг". Это когда нам надо запилить этот самый фильр в первый раз, к вам подходит клиент или менеджер и говорит "нет времеин объяснять нужно срочно еще позавчера". И у нас тут выбор:
    - спорить с заказчиком о том что надо делать все правильно
    - плюнуть и сделать максимально быструю реализацию, таким образом взяв у нашего кода "взаймы". То есть все работает но в будущем нам этот долг придется вернуть. Мол решили мы потом перенести фильтрацию на сервер и времени на это уйдет уже больше, так как когда-то мы сэкономили на разработке.

    Словом, нужно соблюдать баланс. Иногда такие решения более чем оправданы.

    Но вернемся к реалиям anuglar-а. Дело в том что когда вы используете фильтры в шаблонах, они будут дергаться на КАЖДЫЙ $digest цикл, так работает дата биндинг. То есть при относительно небольшом объеме данных у нас приложение уже будет жутко педалить. Потому использовать фильтры с коллекциями в шаблонах простительно только если вы на 100% уверены что данных пока будет мало, а потом можно будет переделать.

    Как-то так. Поскольку у вас есть возможность использовать ангуляровские фильтры внутри сервисов или контроллеров, "экономный" вариант будет занимать не больше времени разработки и поддерживать такой код будет проще.
    Ответ написан
    8 комментариев