• Нужно ли складывать много маленьких JS файлов в один большой?

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

    если загрузить асинхронно 10 файлов по 100кб то это будет быстрее чем один 1МБ файл

    А если загружать по 80 файлов по 10кб то это будет медленнее чем 10 файлов по 100кб, так как расходы на установление соединения будут больше чем время ожидания доставки очередной порции данных.

    Браузер делает запросы за ресурсами паралельно (можете в дебагере браузера посмотреть, там же информация о том кто блокирует загрузку), так что загрузка нескольких файлов будет быстрее загрузки одного большого. Но, даже с учетом keep alive, браузер не может реюзать полноценно при таком раскладе соединения, и он будет их плодить в большом количестве, и чем больше их, тем больше нагрузка на сервер, тем медленнее будет получаться статика. Так что нужно найти баланс.

    Я бы предложил разделить все на:
    - angular.js
    - vendor.bundle.js - все сторонние модули и прочее
    - app.bundle.js - все файлики приложения.

    тогда да. асинхронная загрузка будет быстрее.
    Ответ написан
    1 комментарий
  • Почему не работает редьюсер в Redux?

    Так у вас state – объект. А filter – метод массива.
    Ответ написан
    Комментировать
  • Есть ли объективные причины отказаться от аннотации?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Почему аннотации это плохо? Потому что аннотаций в PHP нет (во всяком случае пока). А то что есть - это кастыль основанный на phpdoc.

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

    Есть еще одно НО. Скажем я когда-то был категорически против использования аннотаций в сущностях доктрины. Представьте себе типичный проект на symfony. У нас есть какое-то поле и мы должны написать туда минимум аннотацию для доктрины и аннотацию для валидатора. Если мы пишем апишку то появляются всякие сериализаторы и прочая чушь, документация к API и тд. Ну и собственно сам phpdoc. В итоге на одно поле сущности выходят минимум 5 строк в phpdoc с аннотациями.

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

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

    copist
    @copist
    Empower people to give
    Ты как дизайнер можешь заменить логотип, название и контакты компании. И выложить у себя на сайте без их разрешения.
    Ответ написан
    Комментировать
  • Как подключить symfony2 в существующий проект?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    1) делаем адаптер PSR-7 (или HttpKernel) к вашему движку
    2) делаем приложеньку на симфони
    3) ставим мидлвэр который будет разруливать на какое приложение какие запросы кидать. Это можно разруливать и через nginx но как-то не круто.
    4) когда начинаем пилить функционал на симфони и нужно что-то реюзать из старой кодобазы, стараемся отделить то что мы хотим заюзать от старой инфраструктуры (можно скажем сервис-декоратор запилить для старого движка) и регистрируем его в DI
    5) постепенно переносим код, модель можно оставить старую если это возможно.

    По сути основная сложность отделить модель от инфраструктуры движка и почистить сервисный слой.
    Ответ написан
    Комментировать
  • Как изменять сущности без форм?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Правильный способ: не использовать сущности в контроллерах, вообще, и никогда не скармливать их ни JMS Serializer-у ни формам.

    Более-менее правильный способ, определить свой Object Constructor для JMS Serializer-а что бы дать возможность указывать в какой объект пихать данные.
    Ответ написан
    5 комментариев
  • Какую версию выбрать?

    nazarpc
    @nazarpc
    Open Source enthusiast
    Итак, для Apache ставить php5 (на самом деле по зависимостях поставится libapache2-mod-php5, именно он и здесь и нужен), так вы поставите PHP как модуль для Apache2.
    Хотя я бы рекомендовал выкинуть Apache2 на свалку, оставить только Nginx. В этом случае вам будет нужен только php5-fpm.
    cli и cgi в данном случае вам не нужны абсолютно.
    Ответ написан
    Комментировать
  • Unreal Engine 4. Блюпринты\C++.?

    Блупритны хороши тем, что они исполняются в manage среде и поймать segmentation fault просто не реально. Также гдето я слышал, что в итоге получатся меньше логических багов за счет того, что не будет опечаток и схематическая информация воспринимается лучше, чем ковры кода.
    Но как всегда за все неоходимо платить) Сами разработчики говорят, что блупринты исполняются в среднем в 10 раз медленей аналогичного кода на плюсах. По этому там где необходима большая производительность, тотальное управление выделением и освобождением памяти, то без плюсов не обойтись. Также для таких больших проектов как UE4 время компиляции С++ кода становится ощутимой проблемой. Необходимость ждать около 30 минут на современной топовой машине, для перекопиляции всего проекта скажем так, немнного раздражает.. С блупринтами таких проблем нету.

    Сами разработчики рекомендують реализововать низко уровневую логику на С++ в виде отдельных компонентов, а уже взаимодействие этих компонентов между собой и игровым миром реализововать при помощи блупринтов.
    Ответ написан
    1 комментарий
  • Можно ли объявить в абстрактном классе абстрактное свойство (в PHP)?

    kompi
    @kompi
    nullstack devoops
    Это же свойство, оно , если можно так выразиться, - уже реализовано. Т.е. не может быть абстрактным по определению.
    PS Это вообще не имеет смысла, так как вся соль в абстракции - описание, без реализации.
    Ответ написан
    2 комментария
  • Как верстать древо скиллов как на картинке?

    Да не заморачивайтесь вы с этими бутстрапами. Они нужны для сетки, а тут сетка - три колонки.
    Верстайте эти вот элементики. С ними фреймворк не поможет
    Ответ написан
    Комментировать
  • Чем лучше сделать двухсторонний data-binding помимо AngularJS?

    premas
    @premas
    Full-stack web-developer
    Тоже были сомнения насчет ангуляра из-за этих статей. Когда изучил его на отличном уровне и покопался в потрохах, то понял, что авторы этих статей разбираются в ангуляре, примерно как свиньи в апельсинах. В таком тоне, который присущ этим статьям, можно написать о чем угодно, и это будет иметь уничижительный эффект.
    Можете попробовать Angular Light. Коллега на нем проект пилит. Мелкие вещи, вроде двухсторонней связи данных, он разруливает хорошо.

    Но мое мнение, если проект крупный и его нужно будет развивать и поддерживать, то выбирайте именно ангуляр. Ну и было бы полезно разобраться в нем.
    Ответ написан
    7 комментариев
  • Правильное ТЗ на проверку сайта на уязвимости или может есть спец-конторы которые этим занимаются?

    @cthulhudx
    Заказать penetration testing
    Если вы обладаете достаточной квалификацией в сфере информационной безопасности, то можете самостоятельно провести тестирование вашего сервера с помощью metasploit.
    Ответ написан
    1 комментарий
  • Почему ругается на дружественную функцию?

    @Mercury13
    Программист на «си с крестами» и не только
    Причина, вероятно, в том, что ты допустил код в хедере, и sort_pred оказался реализован дважды в разных единицах компиляции.
    Либо сделай sort_pred inline (inline кода не производит, производит его тот, кто этот inline вызовет), либо вынеси его в cpp-файл.

    Ах, да. Почему всё правильно с этой функцией…

    bool operator()(two *t)
    {
        return t->getA()==a;
    }


    А потому что тело внутри класса автоматически inline и тоже кода не производит.
    Ответ написан
    Комментировать
  • В чем разница между node и nodejs?

    sim3x
    @sim3x
    Снести оба
    Поставить офф пакет

    Читаем https://deb.nodesource.com/setup чтоб узнать каким образом к нам на пк добавятся доп репозитории. Вся ответственность за проблемы только на тебе

    По дефолту ставится 0.10.x

    curl -sL https://deb.nodesource.com/setup | sudo bash -
    вставить для установки репозиториев

    sudo apt-get update && sudo apt-get install -y nodejs
    установить ноду

    если нужно свежее, то меняем
    sudo vim /etc/apt/sources.list.d/nodesource.list

    deb https://deb.nodesource.com/node_0.10 ....
    deb-src https://deb.nodesource.com/node_0.10 ...

    на
    deb https://deb.nodesource.com/node_0.12 ....
    deb-src https://deb.nodesource.com/node_0.12 ...


    sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get install -y nodejs


    //узнать про твои пакеты ты можешь так which node; man node
    Ответ написан
    Комментировать
  • В чем могут помочь js фреймворки(React, Angular)?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    C MVC фреймворками все понятно, но они меня не интересуют. А что делать с инструментами, нацеленными больше на фронтенд (React, Angular) ?


    Открою вам страшную тайну - MVC фреймворки как раз на фронтэнд и нацелены, а не на бэкэнд.

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

    Angular - полноценный фреймворк, к которому можно подключить тот же React для вьюх. Используют его в основном при реализации Single Page Application-ов.

    Были ли у вас практические задачи, с которыми мог справиться только js фреймворк? Какие?

    Все задачи можно решить на чем угодно. Вопрос в сроках и кривости. Angular позволяет организовать структуру приложения, разделить его на слои, предоставляет ViewModel... все то что писать с нуля маленький ад и скучно. Ну и опять же все можно покрыть тестами и т.д.

    Могут ли быть полезны данные инструменты в совместной работе с Rails, например?

    Если брать ангуляр - я его использую только в контексте SPA. Это может быть не все приложение а только какая-то его часть но все же... А для SPA разницы нет вообще на чем бэкэнд реализован. От бэкэнда нужна только апишка.

    Реакт же можно использовать в принципе для построения view на клиенте. Так что можно и его юзать. Зависит от задачи. Скажем если в задачи входит организация работы жирной формы - то лучше взять knockout.js. А если вам нужно рендрить какие-то данные в реалтайме - можно вооружиться реактом.

    Нужно ли вообще тратить время и искать себе задачи, которые можно решить привычным jQuery, который в большей степени знают все (вопрос дальнейшей поддержки) ?

    Куча народу знает jQuery но не знает JS. И это грусть и печаль. Скорее всего если у вас в задачах стоит реализовать слайдер какой или что-то такое то ни Angular ни React вам не нужны. Ну или в контексте сайтиков тоже не особо есть от них польза (только в специфических случаях). А вот если пишите приложения какие-то, можно уже задуматься ибо если вам придется реализовывать весь бойлерплейт, да еще и не будет DI то с высокой долей вероятности (все же нормальные разработчики существуют) вы получите шматок гуано дико связанный и приносящий боль при рефакторинге. А еще использование только jQuery это на 99% отсутствие каких-либо тестов на фронтэнде.

    p.s. Я на ангуляре пишу админки к примеру для своих проектов. Ну и все все все что вписывается в концепцию SPA. Реакт планирую использовать как альтернативу phonegap (react-native вышел), поскольку он является слоем абстракции над формированием представления (за счет промежуточного виртуального DOM).
    Ответ написан
    1 комментарий
  • Как научиться разрабатывать сложные веб-проекты ?

    @FoxInSox
    На практике в больших компаниях среди квалифицированных специалистов.
    Ответ написан
    Комментировать
  • Насколько широко сейчас можно применять рендер на клиенте?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Идеальная ситуация - клиент и сервер - разные приложения. Это значит что у нас частично дублируется логика и т.д. и т.п. Так же реализация клиента усложняется а реализация сервера упрощается до простой rest api.

    По поводу грани - ее выставляете вы. Просто оцените по времени, сколько вам будет по времени занимать проект какой-нибудь с классическим подходом и на том же AngularJS. Например бложик написать, обычный такой бложик. По сути тут нет никакой логики. Сервер может просто закешировать и отдавать HTML. Нет смысла делать динамические переходы так как 95% страницы всеравно заменится, да и происходит это не часто.

    Что до поисковиков - это так же добавляет хлопот. либо подключать сервисы типа prerender.io либо реализовывать что-то подобное на базе phantom.js

    Я лично на Angular только web-приложения делаю. Там не нужно парится сильно с индексацией. Сайты делать на нем в большинстве случаев смысла не вижу, тут проще делать динамичными только отдельные элементы которые на самом деле этого требуют.
    Ответ написан
    1 комментарий
  • Как анимировать только что созданный элемент в Angularjs без сторонних библиотек?

    mr_T
    @mr_T
    Web-разработчик
    Во-первых, нужно подключить в зависимости модуля приложения ngAnimate (не забыв сам скрипт подключить, само собой).
    Во-вторых, задать в css transition'ы для элементов, которые нужно анимировать.
    Дальше ангуляр сам поймет, что с этим делать, и если все правильно прописано в стилях, то, как говорится, все заработает само. Только нужно разобраться с классами, которые ангуляр подставляет для анимации (или настроить свои в config через $animateProvider).
    Подробнее тут и в гугле.
    Ответ написан
    7 комментариев
  • Как написать реал-тайм онлайн игру? Методология, паттерны, статьи?

    lexxpavlov
    @lexxpavlov
    Программист, преподаватель
    По части вопросов и общих моментов - присоединяюсь к @kazmiruk и @dplsoft, они всё правильно сказали. Их советы на самом деле хороши.

    Добавлю только несколько ссылок, которые вам могут пригодиться:
    0fps.net - ресурс по созданию реалтаймовых сетевых движков (на англ.)

    Что должен знать каждый участник крупного MMO-проекта - отличный список вопросов, ответы на которые нужно знать для создания движков. Чем лучше понимаешь ответы на эти вопросы, тем лучше получится проект.

    Две статьи от Маилру по созданию сервера: Базы данных в онлайн-играх. От Аллодов Онлайн до S... и
    Архитектура сервера онлайн-игры на примере Skyforge. Подробно и качественно рассматривают создание сервера игры.

    Сетевое программирование для разработчиков игр:
    Часть 1: UDP vs. TCP
    Часть 2: прием и передача пакетов данных
    Часть 3: виртуальные соединения поверх UDP

    Ещё полезные статьи с хабра:
    Высоконагруженные системы: решение основных проблем
    Создание многопользовательской realtime игры на node.js
    Как не нужно писать большие сервера - на java
    Ответ написан
    Комментировать
  • Как созадть интерфейс в JavaScript?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    JS динамический язык с утиной типизацией. Собственно как в Ruby или Python. Наследование в нем реализуется через объекты и прототипы объектов. То есть места интерфейсу тупо нету.

    Грубо говоря, если допустить наличие "классов" в JS, то интерфейсом будет как раз таки абстрактный класс, у которого реализация всех методов выбрасывает ошибку not implemented. Во всяком случае люди которые еще не отвыкли писать интерфейсы на все и вся в Python или Ruby так обходятся.

    Но вообще вы должны подчиниться правилам утиной типизации и делать как-то так:

    function can(obj, methodName) {
         return ((typeof obj[methodName]) == "function");
    }
    
    // вот так вот сурово мы подаем вместо объекта словарь!
    var dict = {
       quack: function () {
           console.log('Quack! Quack!');
       }
    }
    
    // метод требует объект реализующий метод quack
    function test(obj) {
        if(!can(obj, 'quack')) { throw "Object should implement quack method" }
        obj.quack();
    }
    Ответ написан
    4 комментария