• Как писать селекторы должным образом?

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

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

    больше использовать комбираторы. Серьёзно?

    А почему нет? Основная проблема - изоляция стилей. То есть как сделать так, что бы имезения в стилях для блока A не влияли на блок Б. Рекомендую вам так же ознакомиться с популярными методологиями верстки (серьезно, чем раньше тем лучше), например БЭМ, smacss, oocss и т.д.

    селекторы на основе аттрибутов

    Для JS очень удобно на основе data-* атрибутов делать селекторы. В целом в этом плане можно посмотреть в сторону webcomponents и как-то ориентироваться на этот путь.
    Ответ написан
    3 комментария
  • Скажите, пожалуйста, как получить параметры с УРЛ?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    разделяй и властвуй.

    как получить параметр "inactive" с УРЛ

    Курить в сторону маршрутизации (ngRoute, ui-router). На чем у вас эти урлы реализованы я не вкурсе.

    передать его в php

    сервис $http.
    Ответ написан
    Комментировать
  • Как повысить скиллы в программировании?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Ну стало быть надо писать больше кода, решать больше задач и т.д. Попишите стандартные алгоритмы, сортировки и т.д.
    Ответ написан
  • На чем написать сервис наподобии fl.ru?

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


    Найдите разработчика, а он вам уже скажет на каком он будет это писать.

    Можно написать обсалютно любой функционал

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

    Скорость загрузки сайта

    Как бы нибыл язык хорош и быстр все может загубить кривая архитектура и плохой выбор СУБД или архитектуры базы. В целом на вашем месте я бы этот параметр опустил бы в самый конец списка. Можно предьявить к разработчику нефункциональное требование по выдерживаемой нагрузке и времени генерации страниц. А далее пойдут кэширования всякие и т.д. Посмотрите на GitHub, он написан на крайне медленном RoR но в целом довольно шустро работает.

    Безопасность от взломов

    Дырки есть везде. Вопрос профессианализма разработчика и используемых средств разработки, настройки сервера и т.д.

    Распространенность

    На PHP написано ~80% всего WEB, но если брать качественные проекты то распределение по технологиям я думаю будет приблизительно одинаковое. Возможно Java тут будет выигрывать но и дороже выйдет существенно.

    Словом, все решает вменяемый разработчик. И да, это дорого и не быстро. Можно взять PHP, Ruby или еще чего и быстренько сделать MVP, пускай и не выдерживающий больших нагрузок и не на 100% то что вам нужно, но можно будет запустить проект раньше. В любом случае расчитывать на большой поток пользователей при старте проекта - тут либо надо нехило вкинуть денег в маркетинг или привести трафик откуда-то еще, либо не знаю.
    Ответ написан
    4 комментария
  • Какой оптимальный размер MTU для скорости 1 Гбит/с?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Увеличивая MTU мы увеличиваем размер пакета и соотношение заголовок фреймов и полезной нагрузки этого фрейма. За счет того что увеличивается объем полезных данных по отношению к заголовкам, увеличивается процент утилизации пропускной способности. Но никто не гарантирует вам что фрейм не будет поврежден в пути и не потребуется его повторая отправка, с стало быть чем больше пакеты тем больше данных будут нуждаться в пересылке (мол из-за маленькой ошибки в пару байт придется отправлять заного блок данных в пару килобайт).

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

    Словом надеюсь вы уловили идею. Чем надежнее сеть - тем выше можно ставить MTU.
    Ответ написан
    1 комментарий
  • Разница между двумя селекторами?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    да. Но добавлю, лучше никогда не применять подобных селекторов. Они оба обладают слишком большой специфичностью. Даже если опустить тот факт, что использовать ID в CSS не стоит вовсе, на одной странице не должно быть двух элементов с одним ID. А это значит что уточнять что-то в селекторах вообще не стоит.

    Изучите вопрос приоритетов селекторов и старайтесь использовать селекторы равного приоритета. Тогда жизнь будет чуть менее болью. Крайнее проявление этих идей - методология БЭМ. Можно следовать полностью ей либо чуть чуть адаптировать под себя.
    Ответ написан
    8 комментариев
  • SPA application, авторизация и что рендерить backend'y?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    что стоит , если вообще стоит, рендерить на стороне backend ?

    Ничего вообще не надо редндрить. Сервер отдельно, клиент отдельно. Они никак не должны пересекаться. server-side рендеринг применяют как один из вариантов оптимизаций + для поисковиков. Это нужно далеко не всем и далеко не всегда.

    c REST авторизовываемся token'ом

    Еще следует помнить, что хранить секьюрные данные доступными из JS не шибко удобно (браузеры увы не предоставляют секьюрного хранилища пока-что), потому лучше токен сэтить сервером в httponly куку. Тогда браузер будет все сам разруливать и будет чуть чуть более безопасно. К сожалению другого способа в контексте SPA как организовать это дело секьюрно я не знаю. В общем случае и в localStorage хранить норм, но меня это смущает. Ну и естественно все под HTTPS, иначе все загоны по безопасности идут прахом.
    Ответ написан
    3 комментария
  • Как работать с datetime в angularjs?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Ответ написан
    Комментировать
  • Целесообразно ли использование br?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    <label class="checkbox checkbox--block">
        <input type="checkbox" />
        Some label
    </label>
    Ответ написан
    Комментировать
  • Где в backbone приложении правильно писать код?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    есть еще такая штука как контроллер. Вью вызывает контроллер так как поменялось его состояние, контроллер решает что делать и что что говорит представлению что б то обновилось.
    Ответ написан
  • Правильно ли я понимаю проектирование БД на mongo?

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

    name,date,user_id

    user_id вообще быть не должно.

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

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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    1 - метод $scope.getChildList вызывается на каждый $digest цикл
    2 - каждый вызов $scope.getChildList порождает вызов запроса на сервак через $http
    3 - каждый вызов $http завершенный (да и вообще изменение статуса) порождает запуск $digest цикла
    4 - возвращаемся к первому пункту

    // Все люди ходят в туалет
    // но обычно делают это в одном месте
    function dataProviderFactory($http, $q) {
    
        return {
            getManufactures: getManufactures,
            getCategories: getCategories,
            getCategoryTree: getCategoryTree
        };
    
        function getManufactures () {
            var sql = 'SELECT * FROM audio.w8265_virtuemart_manufacturers_ru_ru';
    
            return exec(sql)
                .then(function (data) {
                    return pluck(data, 'mf_name');
                }, repeatError);
        }
    
        function getCategories(pid) {
            var sql = 'SELECT virtuemart_category_id, category_name FROM audio.w8265_virtuemart_categories_ru_ru join audio.w8265_virtuemart_category_categories on virtuemart_category_id = category_child_id where category_parent_id = ' + (pid || 0);
    
            return exec(sql)
                .then(function (data) {
                    return pluck(data, 'category_name');
                }, repeatError);
        }
    
        // а еще лучше уж тогда так:
        function getCategoryTree() {
            // get all categories
            var sql = 'SELECT virtuemart_category_id as id, category_name, category_parent_id as parent_id FROM audio.w8265_virtuemart_categories_ru_ru join audio.w8265_virtuemart_category_categories on virtuemart_category_id = category_child_id';
    
            return exec(sql)
                .then(function (categories) {
    
                    return getChildren(categories);
    
                    // простенький рекурсивный обход дерева
                    function getChildren(collection, pid) {
                        pid = pid || 0;
    
                        return collection.filter(function (item) {
                            return item.parent_id == pid;
                        }).map(function (category) {
    
                            return {
                                name: category.category_name,
                                children: getChildren(collection, category.id)
                            }
                        });
                    }
                }, repeatError);
        }
    
        // я думаю не стоит даже говорить насколько это плохо....
        // я надеюсь что никто не увидит эту систему кроме как менеджеры какие-нибудь...
        // ибо это нехилая такая дыра в безопасности
        // да и вообще стремно
        function exec(sql) {
    
            return $http
                .get('/ajax/index.php')
                .then(function (response) {
                    // а если вы на сервере укажите Content-type application/json
                    // Angular будет делать вам это автоматом
                    return angular.fromJson(response.data);
                }, repeatError);
        }
    
        function repeatError(reason) {
            return $q.reject(reason)
        }
    
        function pluck(collection, key) {
    
            return collection.map(function (item) {
                return item[key];
            });
        }
    }
    
    // чистенький контроллер
    function SearchController (dataProvider) {
        var vm = this;
    
        dataProvider.getCategoryTree().then(function (tree) {
    
            vm.categories = tree;
        });
    }


    ну и да. используйте controller as синтаксис:

    <div ng-controller="SearchController as search">
        <ul>
           <li ng-repeat="item in search.tree">
    </div>


    короче мысль простая - вам вообще не нужно было дергать этот метод контроллера или вообще делать его.

    еще одно замечание, вы сделали просто ужасные штуки в контроллере и приэтом еще и используете track by явно не понимая что это такое и зачем оно надо.
    Ответ написан
  • Как создают свой протокол?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    более низкому по цепочке, TCP/UDP протоколу.

    Именно так. Читаем про модель OSI.

    шифрование данных собственным алгоритмом (и расшифровка на приеме) своим протоколом?

    Если в рамках вашего протокола вы так же описываете как происходит обмен ключами и т.д. то да.
    Ответ написан
    Комментировать
  • Относятся ли методы не связанные с запросами к бд с моделью?

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

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

    Рекомендую к прочтению: blog.8thlight.com/uncle-bob/2012/08/13/the-clean-a...
    Ответ написан
    5 комментариев
  • Почему в javascript не работает добавление в FormData?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    А что вы хотите увидеть в распечатке то?

    Попробуйте так:
    var formData = new FormData();
    formData.append("username", "Groucho");
    console.log(formData.getAll());
    Ответ написан
  • Как правильно вывести $scope?

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

    {{vm[CurrentLanguage]}}
    Ответ написан
    2 комментария
  • Как реализовать возврат данных на angularjs?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    вот только ради бога, не надо использовать фильтр filter для этого.

    фильтры поменялись - контроллер фильтрует коллекцию результат - выводим коллекцию. Никакой магии, никаких фильтров во вьюшках, все максимально примитивно и просто.
    Ответ написан
    Комментировать
  • Как на angular, вызвать событие focus на input?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    писать совю директиву?

    да, именно так.

    angular.module('app')
        .directive('focusOnEnter', focusOnEnter)
    ;
    
    function focusOnEnter() {
         return (scope, el) => {
             el.focus();
         }
    };


    <input focus-on-enter type="text" />
    Ответ написан
    5 комментариев
  • Как в Linux выполнить команду с параметром взятым из stdout предидущей команды?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    MY_MAC=$(tail -n2 | head -n1 | tr -s " " | tr -d \' | cut -f3 -d " ")
    etherwake -i br-lan "$MY_MAC"
    Ответ написан
    Комментировать