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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    То что вы описали реализуется на чем угодно. Обработка видео всеравно будет делаться на отдельном сервере через *MQ какой, то есть тут от языка который будет добавлять в очередь на обработку мало чего зависит. Остальное - стандартный функционал.

    По поводу производительности: facebook/vkontakte написан на php, что как бы намекает на то что сам язык роли не играет. twitter первое время был на ruby, сейчас ruby+scala. github - ruby.

    Если брать PHP - то брать за основу Symfony2 или брать его компоненты. У этого фреймворка пожалуй самая развитая экосистема, на его компонентах базируются множество других (в том числе из популярных - Drupal). Ну и по сути, помимо zend2 для чего-то серьезного и на вырост вообще как бы и нечего предложить.

    Есть еще Ruby с его рельсами и множеством других интересных фреймворков.

    Есть еще Scala, Python... много чего есть.

    По другим языкам не подскажу. Рекомендую вам просить кандидатов не указывать явно стэк технологий, пусть сами выберут и аргументируют.
    Ответ написан
    7 комментариев
  • Как более правильно реализовать такой функционал в ООП (C#)?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    - Создайте структуру для ваших этих справок
    - Храните их в ArrayList (так как длина заранее не известна)
    - Реализуйте класс, который будет хранить колекцию ваших структурок и реализовывать методы для поиска, возвращая коллекции. Внутри уже можно использовать linq для выборки.
    - Реализуйте сервис (класс пренадлежащий сервисному слою), который будет хранить настройки и обрабатывать коллекцию, подаваемую на вход.
    Ответ написан
  • Как разделить строку пополам, сохраняя целостность слов?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    решение в лоб.
    function wordSafeBreak($str) {
        for($middle = floor(strlen($str)/2); $middle >= 0 && $str[$middle] !== ' '; $middle--);
        if ($middle < 0)
            return array('', $str);
        
        return array(substr($str, 0, $middle), substr($str, $middle+1));
    }
    Ответ написан
    2 комментария
  • Как полностью заменить html элемента, используя jq?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Ответ написан
    Комментировать
  • Почему не применяются скрипты для кода загруженного через load()?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Начнем с того что так делать не стоит вообще. Я про сборку страницы посредством ajax.

    Что бы подключение работало нужно подключить скрипт. Вообще у jQuery если мне память не изменяет есть метод getScript, который выполнит скрипт. Вы же просто помещаете текст в script - выполняться от этого он не будет.

    Если вы хотите динамически подключить js - проще будет сделать так:
    var script = $('<script />', {
        src: 'js/app.js'
    });
    $('body').append(script);

    А еще лучше воспользоваться загрузчиками аля head.js или, что было бы элегантнее, require.js.
    Ответ написан
    Комментировать
  • AngularJs Рендер таблицы, почему срабатывает только 1 раз ?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    что бы angular понял что данные нужно синхронизировать, нужно запустить у $scope либо $apply (проверяет на изменения все от $rootScope и вниз по иерархии) либо $digest (обновляет текущий и дочерние скоупы).

    Вообще как это должно выглядеть:
    angular.module('app')
    
    .factory('myApi', function ($http, $q) {
        return {
            list: function () {
                 return $http.get('/points').then(function (response) {
                     return response.data;
                 }, function () {
                     return $q.reject(); // произошла какая-то ошибка
                 });
            },
            add: function (point) {
                  return $http.post('/points', data).then(function (response) {
                       if (201 === response.status) { // если на сервере все сохранилось удачно
                            return response.data;
                       }
    
                       return $q.reject(); // как-то не удалось
                  }, function () {
                       return $q.reject();
                  });
            }
        }
    })
    
    .controller('MyCtrl', function ($scope, myApi) {
        myApi.list().then(function (points) {
            $scope.points = points;
        }); // было бы неплохо еще и ошибки как-то обрабатывать
        
        $scope.add = function () {
            myApi.add({...}).then(function (item) {
                 $scope.points.push(item);
            });
        }
    });


    Это как пример. Когда $http завершит запрос, этот сервис запустит digest цикл (так как на него завязаны промисы, без вызова $apply/$digest промисы так же не отработают сразу. Так что при таком варианте скоуп всегда будет в актуальном состоянии.

    Если у вас какое-то действие меняет что-то в $scope по событию - нужно вручную вызывать $scope.$apply или $scope.$digest. Причем лучше сделать так:
    // перед вызовом функции, переданной в $apply, 
    // приложение синхронизирует свое состояние
    // Это позволяет гарантировать то, что в на момент вызова функции
    // отработают все ватчеры и внесут возможные изменения
    // Это эдакий безопасный способ
    $scope.$apply(function () {
        // chage scope
        $scope.points = []; // меняем...
    });


    Если же у вас подменяется коллекция на ту же, то не отработает ватчер, не обновится таблица.
    Ответ написан
  • Валидация формы (обязательные поля)

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    <input name='email' type='email' value='Не email' required='required' />
    Ответ написан
    1 комментарий
  • Проблемы в конвертировании int в string и наоборот.И вызов метода. С#

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Xpath: *[text()[normalize-space()]]
    По идее так
    Ответ написан
    Комментировать
  • Как Angularjs сделать подобие $(document).on("click",".edit" ...) ?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Собирайте таблицу через ngRepeat и вешайте все через ngClick. Если вам нужно реализовать именно делигированный обработчик, реализуйте пару директив, одна будет ловить всплывающие ивенты и разруливать их, другая будет говорить на какие элементы реагировать. Общение можно организовать через контроллер директивы на родительском элементе (читать про опцию require при объявлении директивы).
    Ответ написан
  • Angular.js и backend будет ли дублирование кода?

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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Ответ написан
    Комментировать
  • Как без помощи php include разбить макет на отдельные страницы?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Используйте какой-либо сборщик шаблонов, есть кучи решений под grunt.
    Ответ написан
    Комментировать
  • Как сделать xmlHttpRequest кроссбраузерным?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    www.quirksmode.org/js/xmlhttp.html - попробуйте этот снипет.
    Ответ написан
    Комментировать
  • KPHP - обмен опытом, кто работал?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    1. Чем WEB приложение принципиально отличается от консольного? Задумайтесь. Вам нужно просто каким-то образом проксировать запросы от вашего web сервера (думаю nginx) в приложение.
    2. Смотри ответ к 1-ому пункту. Как именно связать не вкурсе, не использовал и не вижу практической пользы от KPHP.
    3. Нет, это не возможно. Попробуйте зефир.

    На самом деле KPHP очень сомнительная штука. и если у вас возникают вопросы подобного рода, то вам оно и не нужно.
    Ответ написан
    Комментировать
  • Работа с angular, bootstrap модальные окна, как правильно работать с AJAX ?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    вы заменили кастыль на jquery гуано на angular.js.

    Никогда в контроллере не работайте с jquery или dom. Для этого существуют директивы.
    Никогда в контроллере не работайте с $http, выносите все это в сервисы.

    Конструкция, которую вы приводите, реализуется приблизительно так:
    angular.module('app')
       .factory('myApiClient', function ($http, $q) {
           return {
                save: function (data) {
                
                     return $http({
                           method: 'POST',
                           url: 'some_url',
                           data: data
                     }).then(function (response) {
                         if (!response.data || response.data.error) {
                             return $q.reject();
                         }
                         
                         return response.data; // я не уверен надо ли вам это... сами решите
                     }, function () {
                         return $q.reject();
                     });
                } 
           }     
       })
    
       .controller('MyCtrl', function ($scope, myApiClient) {
           $scope.save = function () {
               myApiClient.save(...).then(function (data) {
                    $scope.showResponse = true;
               }, function () {
                    $scope.showResponse = false;
               })
           }
       });


    А в представлении уже используете директивы, которые завязаны на scope (ngHide/ngShow). Идею вы должны уловить. Суть в максимальном уменьшении связанности. Иначе смысла использовать angular я не вижу. И у меня есть подозрение что для вашей задачи не нужен angular.
    Ответ написан
    Комментировать
  • Наследование DOM интерфейсов?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Ответ написан
    Комментировать
  • Какой язык программирования изучить для создания аналога google translate?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    любой подходящий: java/python/ruby/php/erlang/golang/dlang...

    Для вашей задачи больше необходимо определиться с алгоритмами, нежели с языком реализации.
    Ответ написан
    Комментировать
  • Как изменить окружающую среду (environment) в Symfony2?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    app.php - тут prod окружение
    app_dev.php - тут dev окружение, которое должно использоваться только для разработки на локальном сревере.
    Собственно именно в этих файлах задается какое окружение использовать и проверки доступа (в частности проверка идет только в app_dev.php).

    по поводу ошибок при вармапе кэша, Запустите cache:clear и потом уже cache:warmup.
    Ответ написан
  • Можно ли считать Golang заменой Nodejs?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Node.js по сути представляет собой набор библиотек с биндингом в JS, использующий V8 в качестве виртуальной машины. Причем это далеко не первая, но пожалуй самая успешная попытка привнести javascript на сервера.

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

    Является ли Golang заменой Node.js - нет. Это абсолютно разные технологии, которые не смогут заменить друг друга.

    Помимо golang можно взять любой другой компилируемый язык программирования (например dlang, как наиболее приятный из альтернатив по моему личному мнению).
    Ответ написан
    9 комментариев
  • Насколько востребованы nodejs разработчики во фрилансе?

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

    Что до node.js - на рынке труда очень востребован javascript, от того серверный он или на клиенте разницы не так много. Более того, node.js может вам пригодиться для организации своей инфраструктуры и т.д. Скажем в описанном вами кейсе со сборкой статики для проекта на php вам никто не мешает поставить node.js для сборки, настроить и иметь свой профит. У меня на проектах для сборки фронтэнда всегда используется gulp/grunt + куча плагинов + livereload, и это не мешает мне писать на php. Админки я сейчас вообще стараюсь делать как single-page-apps так что тут вообще отдельное приложение целиком на js+restfull api на php.

    Да и с экосистемой в php все довольно хорошо, особенно последние пару лет. Скажем я не могу сходу сказать есть ли у Composer явные минусы по сравнению с pip/bundler/bower/npm. Создавался он все же с оглядкой на все грабли, через которые прошли и pip и easy-install и npm и т.д. Думаю виной тому использование инструментов среднего качества, обратите внимание на серьезные решения аля Symfony2/Zend2/Silex.

    Ну и да, расширяйте кругозор. Стало скучно писать на php - попишите на node.js. В целях обучения - сделайте какой инструмент для организации своей работы, или что еще. Когда почувствуете уверенность - найдите проект на ноде и балуйтесь. Всегда нужно пытаться привносить какое-то разнообразие в работу.
    Ответ написан
    6 комментариев