• Какой выбрать JS-фреймворк для построения крейне сложных кастомных CMS?

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

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

    Если вы пишите тесты, или планируете покрыть тестами будущее приложение, или вы являетесь адептом TDD/BDD, то можно взять angular.js. Можно взять backbone и использовать его как связь с сервером, как view взять knockout.js/react.js (последний можно использовать с ангуляром).

    Короче... посмотрите примеры, делайте выводы. Задачи которые вы описали можно спокойно решить на angular.js, ember.js, backbone+knockout.js и т.д.

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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    setInterval(Pusk(), 1000);
    скорее всего должно быть:
    setInterval(Pusk, 1000)

    и еще:
    if(navigator.appName == "Microsoft Internet Explorer")

    не делайте так. IE уже давно поддерживает XHR. По сути, этот код нужен только если вы поддерживаете IE5.5 и 6.
    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
    } else {
        req = new ActiveXObject("Microsoft.XMLHTTP");
    }


    И что именно не происходит? смотрели в консоль?
    Ответ написан
  • Что лучше использовать std::vector или простой массив в c++?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    я бы ring-buffer организовал, если это дело в реалтайме надо делать.
    Ответ написан
    Комментировать
  • VPS - Wordpres сайт работает ну оооочень медленно, что делать?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    3. Ставился W3 Total Cahce, проблему не решил, ну вернее как, первая загрузка страницы всё равно занимает полминуты, а потом всё летает - не подходит


    о как, не подходит? А кэш кто за вас вармапить будет? Сделайте просто скриптик который по curl-у вармапит кэш.

    Поставил memcache толку не дало

    его не просто поставить надо, а еще что бы код умел кешировать все в нем.

    запустил тестовый VPS с 5.5 разницы собственно не замечено

    а opcache включали?

    рекомендую вам сменить VDS на что-то с большим количеством памяти и более быстрым хранилищем. Так же есть VDS оптимизированые под WP.
    Ответ написан
    1 комментарий
  • Можно ли объединить авторизацию в Yii на несколько доменов?

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

    Можно при авторизации на домене A вставлять ссылку (картинку например) с идентификатором/токеном на домен B. При обработке запроса картинки, объеденять сессии.
    Ответ написан
  • Как отладить переменные в PHPStorm?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    xdebug, phpdbg (последний в версии php 5,6 из коробки идет).
    Ответ написан
    Комментировать
  • NodeJS: Есть ли парсер HTML подобного текста, который можно просто допилить для разбора такого типа документа?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    предлагаю парсить в два прохода.

    1) обычный парсер посимвольный + регулярки. Находим тег template, отмечаем начало содержимого, находим конец, оборачиваем содержимое в CDATA, заменяем.

    2) простой xml парсер + xpath

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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Шаблонизатор шаблонизатору рознь. Но в целом следует выделить общие задачи. которые должны решать за вас шаблонизаторы. С blade не работал и не вижу смысла есть есть twig.

    Безопасность. Это пожалуй можно поднять на верх. Типичная картина в шаблонах на php - <?= $someUserInput; ?>. Частенько это можно встретить в выводе инпутов, при формировании ошибок поиска (мол "по запросу $userInput ничего не найдено. То есть вставляем в инпут подключение наших js скриптиков, если это форма поиска - делимся с "другом" и забираем его сессию. Ну или еще какие забавные штуки можно делать. А ведь все очень просто решается. Ставим какую-то функцию, которая по умолчанию будет фильтровать XSS инъекции при выводе, и не будет этого делать только если мы попросим. Если писать просто на php - появляются отвратные функции, которые можно просто забыть вызвать. А с шаблонизаторами мы пишем красивые {{ someUserInput }} и можем спать спокойно.

    Помогают соблюдать принцип DRY. Современные средства шаблонизации (twig например), предоставляют вам возможность разделять шаблоны на блоки, переиспользовать их несколько раз, выделять макросы, наследовать шаблоны... словом все что угодно. лишь бы вы могли реюзать куски html а не копипастить их.

    Ограничивают полет фантазии разработчика. Далеко не новость что разработчики ленивые засранцы. Особенно молодые. Если им в шаблоне внезапно понадобились какие-то данные из БД, или данные связанные с запросом, большинство не будет париться и зафигачит нужный код прямо в темплейте. Так же некоторые грешат тем что часть бизнес логики размазывают по шаблонам. Так же встречал проекты отданные на суппорт, где чуваки в шаблонах разбирали через xpath ответы от сторонней апишки (которая использовалась вместо базы данных. То есть это дело было размазано по всему проекту). Рефакторинг в случае изменения апишки будет болью.

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

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

    Так как за все эти приятные вещи мы по сути ничего не платим (шаблонизатор должен компилировать все это в нативный php так что оверхэда просто не будет), почему бы не пользоваться?
    Ответ написан
    1 комментарий
  • Как стажеру лучше понять JavaScript?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    в студию пришёл парень - стажер, недавно закончивший вуз.

    Ну да, один мой знакомый...

    Зайдя на learn.javascript.ru, я понял, что многие задачи, действительно, не для новичков.

    Ошибаетесь. Что тогда есть "для новичков"? на jquery плагины подключать? Если брать раздел "Функции и Замыкания", там основы основ. Просто если что-то не понятно - вперед гуглить. Встретил непонятное слово - гуглить, вики, словари, google translate и т.д.
    Ответ написан
    Комментировать
  • Как оценить стоимость проекта на angular js?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Я с ангуляром не знаком, только jquery

    Может стоит отказаться или предупредить клиента? Либо предупредите что добавится еще месяцок что бы вы разобрались с ангуляром. Там работы не мало, скажем так. Если вы в бой сразу ломанетесь не разобравшись толком, в конце получится неподдерживаемый кусок гуано. Как я понимаю опыта с SPA до этого у вас так же небыло.

    А так оценивайте как обычно и умножайте на три а то и на четыре.
    Ответ написан
  • Как написать авторизация на php с использованием cookies или сессий?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    1) выкинуть mysql_* и использовать mysqli/PDO и prepared statements. У вас там уже можно SQL инъекции шмалять
    2) экранируйте вывод данных, мол не просто echo $_POST, а echo htmlentities($_POST) или стриптегом пройтись что бы все инъекции скриптов убрать. У вас в шаблонах уже XSS уязвимость.
    3) не работайте напрямую с $_POST.
    4) не используйте куки, используйте сессии (они через куки всеравно привязываются)
    5) хешируйте пароли. хотя бы md5 с рандомной солью. а еще лучше sha512.

    Ну а если по делу - а где вы в куки то пишите? Я что-то не вижу вообще работы с куками/сессией. Посмотрите в дебагере браузера записались ли они.
    Ответ написан
  • [Angular.js] Multi view в angular 1.3?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Насколько я помню, что-то типа ui-router будет только в angular 2.0

    Если вам интересно что будте, можете ознакомиться:
    https://docs.google.com/document/d/1I3UC0RrgCh9CKr...
    Ответ написан
    Комментировать
  • Что должен знать/уметь wordpress-разработчик?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    php, sql, javascript, html+css ну и разобраться как что принято делать под Wp/Joomla/OpenCart, разобраться с апишкой/фреймворком. Скажем для joomla уже давно можно писать хоть сколько нибудь приличный код но отчего-то этого не происходит.

    То есть по сути вы должны знать все то же что и все остальные.
    Ответ написан
    4 комментария
  • Почему не работает ng-click?

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

    angular.module('productStore', [])
    
    .factory('productRepository', function ($http) {
        var dataResolve = function(promise) {
             return promise.then(function(response) {
                  return response.data;
             }
        }
       
        return {
            getProducts: function (category) {
                category = category || '';
                return dataResolver($http.get('/api/productservice/' + category));
            },
            addToCart: function (id) {
                return dataResolver($http.post('/api/cartservice/add/' + id));
            },
            getTotalPrice: function (callback) {
                return dataResolver($http.get('/api/cartservice/'));
            }
        }
    })
    
    .controller('ProductController', function ($http, productRepository) {
    
        var updateTotalPrice = angular.bind(this, function() {
             return productRepository.getTotalPrice.then(angular.bind(this, function(result) {
                   this.totalPrice = result;
             }));
        });
        updateTotalPrice();
    
        productRepository.getProducts(category).then(angular.bind(this, function(results) {
            this.products = results;
        });
    
        this.addToCart = function(id) {
            productRepository.addToCart(id).then(function() {
                   updateTotalPrice();
            };
        }
    });


    Используйте промисы, не используйте эти стремные штуки с this. У вас есть .bind нативный и angular.bind.

    в частности меня вводит в ступор следующее:
    var ProductController = new productStore.controller


    Если вы методы этого контроллера используете где-то еще, то самое время подумать о том что бы вынести все это добро в сервис.
    Ответ написан
    1 комментарий
  • Как избавиться от global-перменных в php?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Как избавиться от global-перменных в php?

    не использовать глобальные переменные.

    альтернатива - inversion of control, dependency injection.
    Ответ написан
    Комментировать
  • Каков алгоритм и принцип работы данной функции на PHP?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    1) соль - это то что долепить к строке если мы ее обрезали.
    2) вообще вся эта строка нужна что бы убрать двойные пробелы, табуляции и прочие штуки на пробелы заменить. Что бы правильно можно было посчитать длину строки.
    3) нет, если вы внимательно посмотрите, в начале есть условие:
    // если $size равно нулю или false, или длина строки меньше данной нам для обрезания
    if (!$size || mb_strlen($string) <= $size) {
        // ничего не обрезаем и не лепим к строке соль
        return $string;
    }
    Ответ написан
    1 комментарий
  • Как сделать спецификацию макета сайта и нужно ли?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Приссоеденяюсь к @Rrooom

    Вообще было бы не плохо делать подобное, у вас не так много времени на этой уйдет. Есть специализированные инструменты.

    www.specctr.com
    wuwacorp.com
    Ответ написан
    2 комментария
  • Как установить недостающие dll?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Microsoft c++ Redistributable Package
    Ответ написан
    Комментировать
  • Как демонстрировать работу заказчику?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    skype - показать рабочий стол и демонстрировать. Или штуки типа team viewer и т.д. Ну и да, лучше залить на хостинг какой. Можно даже без домена.

    Мне для целей демонстрации и тестирования (как стэйджинг) нравится digital ocean. Поднял инстанс, потестили/презентавали, потушили инстанс. Если у вас еще и автоматизирован деплой вообще никаких проблем с этим нету. Оплата почасовая, так что то что инстанс будет крутиться пару дней будет стоить копейки.
    Ответ написан
    Комментировать