• Возможно ли измерить производительность кода js?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    - jsperf.com - бенчмарки, сохраняет статистику по разным браузерам (в которых запускало).
    - console.time
    - профайлер браузера.
    Ответ написан
  • Как сжимать и конкатенировать js-файлы с помощью gulp?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Задача AMD/CommonJS (require.js и browserify соответственно) - разруливать зависимости а не динамически скрипты подгружать.

    Подключение скриптов - gulp-inject + main-bower-files
    Обработка скриптов - gulp-concat + gulp-uglify + gulp-sourcemaps (без сорсмэпов никуда)
    Обработка стилей - gulp-less (или scss тут как хотите) + gulp-autoprefixer + gulp-sourcemaps
    Таски которые обычно есть: build (подготовка к продакшену) и server (пребилдит приложение для разработки и запускает ватчеры).

    Есть масса статей с описанием разных подходов. Есть всякие бойлерплейты и сиды. Есть yoman в конце концов с кучей генераторов.
    Ответ написан
    4 комментария
  • Angularjs. Почему изменения на странице происходят только после $apply?

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

    $apply вызывает у rootScope $digest-цикл, в котором сравнивается текущее значение и последнее сохраненное. При наличии изменений - запускается ватчер.

    Так что краткий ответ - нет, без $apply ничего работать не будет. Длинный ответ - www.sitepoint.com/understanding-angulars-apply-digest
    Ответ написан
    2 комментария
  • Давайте поговорим о sql_mode в MySQL?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    оукей, давайте соберем базу знаний. Действительно полезное дело сделаем... А хотя нет. Можно просто почитать в документации к mysql что за что отвечает
    dev.mysql.com/doc/refman/5.0/en/sql-mode.html
    причем с примерами. По большей части это неплохие ограничения для разработчика, которые позволяют избежать потенциальных ошибок.

    Начиная с 5.7.5

    что?
    Ответ написан
    8 комментариев
  • Как правильно деплоить NodeJS демона?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Docker + nginx. В docker контейнере ваше приложение. Выкатываете новую версию - поднимаете новый контейнер, как только он поднялся, переключаете nginx на новый контейнер и старый тушите. Ну или запускаете на другом порту приложение без docker контейнера, меняете ENV переменную, релоадите (не рестартите) nginx.
    Ответ написан
    Комментировать
  • Новичок в php, неправильно отображается код, что делать?

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

    если что-то пошло не так, то значит не все как надо.

    Выражу свое личное мнение: видеоуроки по языкам программирования это дичайший бред. Просто полнейший. Заплатите каких баксов 5 за онлайн курсы в виде лекций или просто поищите в сети бесплатные лекции. Будет намного полезнее. Все остальное - php.net - там есть документация на русском. Для начала ее более чем хватает.

    Для более углубленного понимания стоит так же почитать спеку по языку: https://github.com/php/php-langspec/tree/master/spec но это когда в голове базовые вещи сформируются.

    Что до вашей ошибки - это не ошибка. Посмотрите на строку в браузере. Видите там file:// ? Это значит что вы просто открыли файл в браузере. Вот когда там будет http и запрос будет обрабатываться web-сервером (apache, nginx или встроенный в сам php - решать вам. Рекомендую последний вариант так как ничего ставить не нужно будет) - тогда все будет хорошо.

    По этому видеоуроки отстой. Советую перед началом изучения PHP почитать про клиент-серверную архитектуру и HTTP хотя бы на википедии. Так же про PHP SAPI. В голове должно сформироваться хотя бы базовое представление о том как это работает, потом зато будет намного меньше проблем и вопросов.
    Ответ написан
    Комментировать
  • Symfony 2, как реализовать теги для статей?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Как я понял это должен быть отдельный бандл ?

    Если хотите базовую модельку сделать и форм тайпы то да и реюзать это добро из проекта в проект - то да. Если только для одного проекта - нет. Опять же можно потом вынести в бандл если понравится результат. Если будете делать в бандле, желательно не делать там энтитей, только базовая модель и мэппинг для оных + сервис менеджер

    Есть ли уже что-то готовое под symfony 2?

    https://github.com/hilobok/doctrine-extensions-taggable
    https://github.com/sulu-cmf/SuluTagBundle - нужно разбираться, сходу не скажу что норм.

    Можете поискать на packagist.org
    Ответ написан
    Комментировать
  • Как сделать простенькую MVC модель в php?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Итак, займемся переводом для начала

    на главной создаю объект:

    В точке входа/во фронт контроллере. Объект этот завется маршрутизатор или раутер. Имеет отношение к MVC - нет.

    вот что в файле hello.class.php:

    Такое именование файлов и классов было модным во времена php4. Отройте для себя PSR0 (и еще отдельно про PSR-4 можете почитать).

    Т.е. при обращении по url: site.localhost/hello я вижу hello!!!! на экране.

    Поздравляю вас с первым контроллером... хоть и убогим слегка. Читаем про контроллеры в контексте GRASP

    ну в htaccess я прописал нужную конструкцию

    Верни мне мой 2007-ой, когда все было круто и все хвастались своими ЧПУ на модреврайтах. Подумайте в сторону единой точки входа и перенаправления всех запросов, для которых не нашлось файлов на эту точку входа. Но это так... просто... совет. Это упростит жизнь при миграции скажем на nginx или черокки какой.

    Вот я и поплыл в этих терминах.

    Заходим на википедию и выплываем.

    Model-view-controller - схема использования нескольких шаблонов проектирования, с помощью которых модель данных приложения, пользовательский интерфейс и взаимодействие с пользователем разделены на три отдельных компонента таким образом, чтобы модификация одного из компонентов оказывала минимальное воздействие на остальные.


    Советую почитать полную статью и пройтись по ссылкам. Особенно по части модели данных. Это должно прояснить для вас такой момент что модель это модель данных. То есть у вас есть данные, например блог-пост, есть его модель (просто класс Post который имеет поля id, title, body и т.д.). Проще говоря модель это представления данных в приложении. А view - это слой который занимается тем что переводит данные из формата модели в формат запрашиваемый пользователем. Причем вам не запрещается работать из контроллера с базой. Ну то есть как, есть такие вещи как сервисный слой и тонкие контроллеры, но мы же пока только учимся да?). В любом случае модель не должна знать ничего о том где и как она хранится.

    Теперь по поводу view. Давайте вспомним что такое запрос в контексте WEB-приложений. Это старый добрый HTTP запрос. У запроса есть заголовок - Accept который говорит что хочет получить пользователь (пользователи могут быть не живыми и хотеть что-то другое, например JSON). Через него браузер говорит что хочет получить. Например он говорит "хочу text/html" и мы должны выполнить следующие стэпы:
    - вызвать контроллер
    - контроллер достает из закрамов модельки которые хочет пользователь и отдает их во view.
    - view переводит данные из формата приложения в формат который хочет увидеть пользователь.

    В очень грубой форме view может быть таким:
    PostView {
        
        private $post;    
    
        public function __construct(Post $post) {
            $this->post = $post;
        }
    
        public function renderTitle() {
             return sprintf("<h1>%s</h1>", $this->post->getTitle());
        }
        // и еще пара методов    
        public function render() {
             $this->renderTitle();
             $this->renderBody();
        }
    }


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

    Практическое задание:
    Если все что делает контроллер это отдает отрендренный шаблон без какой либо переменной в нем.... Это MVC? Где тут модель?
    Ответ написан
    3 комментария
  • Выборка больших данных из базы сложными запросами?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    EXPLAIN запроса, индексы. Иногда помогает замена JOIN на под запрос без зависимостей по данным (если результат база данных сама может закешировать). Так же если у вас проблемы с джойнами - спасают вьюшки.
    Ответ написан
    3 комментария
  • Yii2 vs Repository pattern?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    В ActiveRecord "модель" совмещена с репозиториями. Либо можете просто написать свой сервис, который будет этим делом заниматься. Главное же в репозитории в том, что код который его использует понятия не имеет о том где хранятся данные.
    Ответ написан
    Комментировать
  • Какой достаточный и необходимый набор навыков и умений формирует понятие "настоящий программист"?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Зависит от трактовки. Это может быть как профессионал своего дела так и человек, которому лишь бы код пописать и ему до лампочки на нужды клиентов.
    Ответ написан
    Комментировать
  • Как правильно организовать DRY архитектуру для REST back-end'a?

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

    Далее имеет смысл воспользоваться UI-Router что бы разделить скрины на отдельные состояния. Общие вещи можно так выносить в базовые состояния и добиться большей гибкости...

    Так же я делаю ресолвы как-то так:
    $stateProvider.state({
        resolve: {
           list: function (service) {
                return service.list();
           }
        },
        controller: function (list) {
           this.list = list;
        }
    });


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

    Как-то сумбурно... и мне так же было бы любопытно взглянуть на подходы других людей.
    Ответ написан
    3 комментария
  • С чего начать web разработчику ?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Кем я хочу быть: Мастером Ёдой в деле веб разработки . (front+back). Сейчас только front.

    То есть по итогу спятившим зеленым каратышкой хихикающим где-то в одиночестве на богом забытой планете?
    Ответ написан
    9 комментариев
  • Как подключить класс PDO, если есть функция autoload()?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Класс PDO предоставляет вам экстеншен. Судя по всему вы его не установили.

    И да, наследоваться от PDO плохая затея. Вообще наследоваться нужно очень осторожно. Лучше завернуть в класс аля Connection и там хранить инстанс PDO.
    Ответ написан
  • Как использовать матрицу 5х5, 7х7, ... в фильтрации Собеля?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Это называется ядром свертки. https://ru.wikipedia.org/wiki/%D0%A1%D0%B2%D1%91%D...

    Разберетесь с тем как работает свертка двух функций (или в контексте обработки изображений - свертка последовательностей) - вопросов не будет.

    Вообще оператор собеля, насколько я помню, использует ядра только 3x3.
    Ответ написан
    Комментировать
  • Как работает устройство аналогового ввода в ЭВМ?

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