• Правильно ли я понимаю назначение конструкторов классов?

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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Говнокод и все. Не парьтесь. Автор этого кода слишком много писал на jQuery.
    Ответ написан
    Комментировать
  • Зачем нужны Dependency containers?

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

    Ваш класс при этом не завязан на конкретную реализацию, соблюдается принцип Dependency Inversion, легко покрыть тестами, и в любой момент времени в конфиге контейнера можно подменить реализацию не затрагивая при этом никакой другой код. Ну и меньше бойлерплейта.

    Так же можно разграничивать доступ к различным слоям приложения что бы небыло соблазнов из одного слоя (например представления) дернуть что-то из слоя обработки запросами... ну или не знаю...

    Так же есть варианты с коллекторами. То есть мы собираем все сервисы реализующие какой-то интерфейс (например драйвера) и регистрируем их в другом сервисе.
    Ответ написан
    Комментировать
  • Какой самый востребованный mvc framework для php для фрилансера?

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

    Рекомендую Symfony2, Zend2 или Laravel. Расположил их в порядке от лучшего к... чуть менее лучшим (да, мнение субъективно, но тройка лидеров на данный момент именно такая а уж как кто перетусует это мелочи).

    Востребованы... а вот эти три и являются самыми востребованными. Ну и если вы на СНГ ориентируетесь можно еще Yii2 включить в список.

    Базовые принципы и т.д. у всех этих фреймворков схожи. Laravel вообще на базе Symfony компонентов построен (как минимум имеет внутри все тот же AppKernel). Единственная разница, для серьезных проектов с применением всяких там DDD/BDD/TDD лучше брать Symfony или Zend. А для RAD - Laravel/Yii2.
    Ответ написан
    4 комментария
  • Ошибка в консоли отладчика, смертельно?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Ну или поставьте node-js, gulp и gulp-webserver. Заодно можно сразу подключить less/sass/stylus и вместо корявого prefixfree использовать более мение адекватный autoprefixer. Ну а там может дойдут руки и haml/jade освоить...
    Ответ написан
    1 комментарий
  • Какие SQL builder'ы для PHP вы используете?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Doctrine ORM имеет мощный встроенный билдер запросов с привязкой к объектам. Генерация схемы и миграций по метаданным, короче... удобнее штуки я не встречал и врят-ли на данный момент что-то удобнее есть (на втором месте пожалуй Propel).
    Ответ написан
    Комментировать
  • Есть такая программа которая скопирует и пронумерует заданный текст?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    for /l %x in (1, 100, 250) do echo http://my.com/1/%x.jpg


    Что-то в этом духе. Винды под рукой нет, так что не уверен в работоспособности.
    Ответ написан
    Комментировать
  • А в чем минусы node.js?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    В том же в чем его и плюсы.

    Асинхронность... ее там нет. Там есть event loop что позволяет писать крайне эффективные программы в плане работы с I/O (что для web очень неплохо) и не париться о таких вещях как потокобезопасность, блокировки и т.д. А если еще и несколько инстансов приложения запусть - по одному на ядро скажем, то утилизация вычислительных мощностей выйдет неплохой. Но распаралелить что-то в рамках одного процесса воркера мы уже не можем. Мы не можем посчитать что-то, проанализировать, заняться обработкой жирной картинки прямо при обработке запроса потому что наш процесс воркер так же обрабатываете еще пару десятков запросов, и пока мы будем удовлетворять нужды одного простаивать будут все. Нода хороша когда у нас все состоит из элементарных операций которые не занимают много времени, все жирное надо выносить из основного процесса и разруливать очередями и т.д. Эта проблема имеет массу решений на самом деле, но все уже усложняется и нода теряет свою красоту. Лучше взять Java/c#/Python для этого (и не надо тут вспоминать про шутки с многопоточностью в CPython).

    callback-hell. Собственно наличие event loop диктует так же правила о том, как должна писаться программа. Кучи колбэков, невозможность дебажить нормально и получить четкий стэктрейс из ошибки. Да, есть промисы которые решают первую проблему, да есть либы вроде zone.js которые решают вторую и частично первую проблему... но все это не тривиальное дело.

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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Ну как минимум не храните подобное в куках.
    Ответ написан
    3 комментария
  • AngularJS: Контроллер директивы и синтаксиc "controller as" (вопросы по style guide)?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Суть проста. Контроллер предоставляет данные, link мэпит данные на директиву (а как, через scope, темплейты, напрямую взаимодействуя с DOM - решать вам).

    То есть...

    angular.module('app',  [])
      .directive('fooBar', function () {
        
        return {
          restrict: 'EA',
          requires: 'fooBar',
          controller: controller,
          link: link
        };
          
        function controller() {
          var bars = [];
          
          this.getSomeData(someOption){
                return someValueOrPromise;
          }
          
          // do soome logic with data
          
        }
        
        function link(scope, el, attrs, ctrl) {
          ctrl.getSomeData(attrs.options).then(function (data) {
                // render data
          }
        }
      });


    Таким образом у вас работа с данными никак не зависит от способа вывода этих данных. Воспринимайте функцию link как слой представления.

    В случае с ngModel - если честно не могу предложить сходу варианты при котором контроллер должен иметь к нему доступ. Предложите пример если не сложно.
    Ответ написан
    3 комментария
  • Можете определить, на какой CMS сделан сайт 1ckab.ru?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Больно похоже на самопис на основе Symfony1 + Propel
    Ответ написан
    1 комментарий
  • Вопрос для ПРОФИ 3ds Max, как настроить Ignore Backfacing?

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

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

    Если объект сильно сложный и вы хотите сосредоточиться на отдельной части объекта самый простой способ - выделить интересующую вас часть, инвертировать выделение и спрятать. Помниться был и другой способ залочить часть геометрии но... уж не вспомню, давно не баловался с максом...
    Ответ написан
    Комментировать
  • Как в директиве сделать поддержку ngMessage если элемент формы не инпут?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    ngMessages берет тупо выражение которое вы ему скармливаете.
    form регистрирует контролы и забирает его имя из свойства $name, которое по умолчанию берется из атрибута name.

    Вывод, можно:
    - добавить атрибут name или data-name
    - через ngModelController самостоятельно установить имя контрола
    Ответ написан
    7 комментариев
  • Как в Angular назначить модели значение по умолчанию?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Значение по умолчанию стоит задавать именно в моделях (или на крайняк в контроллере) а не в представлении. Это проще, эффективнее и код проще поддерживать.

    function Article() {
        this.name = 'Default article name';
        this.text = '# Some default article text\n\nSome paragraph';
    }
    
    angular
        .module('app')
        .service('Article', Article),
        .controller('MainCtrl', function (Article) {
            this.article = new Article();
        }
    ;
    Ответ написан
    Комментировать
  • Стоит ли оптимизировать сайт склеиванием всех файлов в один?

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

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

    Так что лучше держать скрипты и стили отдельно, и инлайнить только то, что на самом деле важно. Например above-the-fold стили или любые другие критичные стили. Из скриптов заинлайнить имеет смысл то, что нужно для инициализации приложения. Скажем загрузчик модулей или что-либо подобное. Но не все приложение.
    Ответ написан
    Комментировать
  • Выбираю компьютер для программирования?

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

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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    sql parameters binding

    и в вашем случае думаю стоит посмотреть в сторону ORM какого...
    Ответ написан
    1 комментарий
  • Какой сервис, программа или плагин для webstorm может автоматически экспортировать структуру html в css?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Госпади какой ужас... Пощадите тех кто будет эту верстку потом поддерживать. Почитайте про модульный CSS, BEM и т.д.

    В селекторах вида body .wrapper нет ровным счетом никакого смысла.

    Но если вы хотите, рекомендую вам перейти на jade вместо html и stylus вместо less, это почти полностью решит вашу проблему.

    Ваш пример на Jade
    body
      .wrapper
         .left-box
         .right-box
           p
              span


    и Stylus (color взял просто так...)
    body
      color: #fff;
      .wrapper
         color: #f00;
         .left-box
             color: #0f0;
         .right-box
           color: #ff0;
           p
               color: #f0f;
             span
               color: #34f;


    Как видите - мы просто копируем шаблон jade и... все

    Но еще раз хочу заметить - вообще это все очень плохо. Даже less вам не поможет в этом случае нормально организовать структуру стилей. Не соблюдается семантика и т.д. Приоритеты стилей в разнобой - сложно поддерживать...
    Ответ написан
    Комментировать