Ответы пользователя по тегу Веб-разработка
  • Что выбрать во фрилансе: фронтенд, бэкенд или мобайл?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Верстать не скучно, если вам нужно не только сверстать а еще и всю клиенсткую логику реализовать. Только html+css никому не нужны, во всяком случае я считаю таких разработчиков лишним звеном. А вот нормальные front-end разработчики - это хорошо.

    Фронтэндщики на фрилансе могут делать многое: собственно фронтэнд, верстка и реализация клиентской логики, разработка одностраничных приложений, мобильные приложения с использованием phonegap или что-то подобное... Интересных задач хватает.

    На постсоветском пространстве рулят PHP, как бы там не кричали что язык так себе. Все языки не лишены недостатков. Да и с заказами проблем нету, как и с фреймворками, средствами тестирования/разработки, менеджерами пакетов и т.д. По сути разницы сейчас нету, брать php или питон (он тоже не лишен пережитков старых версий, проблем каких-либо). Руби свой пик популярности уже пережил, язык крутой, но меня лично раздражает подход к разработке навязываемый им. Так же есть еще своя ниша где царит javascript/node.js

    Я не люблю java, но тут ничего не поделать. Можно конечно писать на xamarin + c#, но толку? java не краткий язык, это правда, но по сути не так уж там все и страшно. Попробуйте.

    Сейчас время такое, что не особо важно где вы живете. Главное что бы интернет был и стремление учиться. Удаленную работу всегда можно найти, так что все же выбирите то направление которое вам нравится, но не ограничивайтесь этим, просто пробуйте что-то еще.
    Ответ написан
    4 комментария
  • Что нужно знать при написании мессенжера на node.js?

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

    switch/case это дурной тон. Есть конечно варианты при которых без этого никак, но явно не в вашей задаче.

    Используйте deferred объекты что бы убрать мешанину из каллбэков.

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

    Сделайте обертки вокруг сокетов внутри которых уже обрабатывайте исключения что бы ваш контроллер не распухал от количество try/catch блоков, ну и опять же используйте deferred объекты. Например библиотеку Q
    Ответ написан
    5 комментариев
  • Почему когда работает curl, apache блокирует доступ к хосту?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Есть простое решение - использовать очереди (rabbitmq/zeromq) и повесить выполнение грабера на cli (+ можно прописать в супервизоре правило, что бы тот поднимал обработчик очереди если тот вдруг упадет).
    Ответ написан
    Комментировать
  • Какую CMS использовать для лёгкого сайта-визитки?

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

    Для визиток мне нравится piecrust. Контент оформляется как вариант в markdown и потом просто по шаблонам генерится статическая версия сайта. Все работает очень быстро, достаточно гибко.

    Есть так же bolt. Тоже штука довольно интересная, простая, уже не просто на файлах а на sqlite/mysql с админкой. контент так же вроде бы через markdown.

    Есть еще pico cms. Тоже забавная мини-cms на файлах.
    Ответ написан
    3 комментария
  • Стоит ли выгружать старые элементы при бесконечном скролле?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)

    Разработчики linkedIn как-то публиковали описание подходов по оптимизации бесконечных скролов, которые они у себя применяли:
    http://engineering.linkedin.com/linkedin-ipad-5-techniques-smooth-infinite-scrolling-html5

    а фэйсбук не самый хороший пример оптимизации фронтэнда.

    p.s. по поводу ангуляра и делигированных событий, у меня в некоторых частях проекта используется всплытие ивентов вместо непосредственной привязки к элементу. Делается это у меня через 2 директивы (fsDelegate, и далее всякие обработчики ивентов аля fsTap и т.д). Причем fsDelegate вешает обработчики на элемент списка, fsTap регистрируется у fsDelegate (если конечно оно там будет, связь между ними через контроллер fsDelegate и параметр require: '^?fsDelegate'). Опять же при отлове события определяется какой именно элемент отработал, берется его скоуп и выполняется выражение заключенное в fsTap.

    Ответ написан
    1 комментарий
  • Как получить $event в ngChange

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Валидацию инпутов стоит делать только через директивы зависящие от ngModel. Например как-то так:

    angular.module('validators', [])
    
    .directive('maxlength', function () {
        
        return {
            restrict: 'A',
            require: 'ngModel',
            link: function ($scope, $el, attrs, ngModelCtrl) {
                ngModelCtrl.$parsers.unshift(validator);
                ngModelCtrl.$formatters.unshift(validator);
                
                function validator (value) {
                        if (value.length > attrs.maxlength) {
                               ngModelCtrl.$setValididy(false, 'maxlength')
                        }
    
                        return value;
                }
            }
        }
    })
    
    


    Пример не рабочий но должен объяснить суть. Чем это выгодно? Реюзабельность повышается в разы, не нужно городить свои велосипеды, одновременно все привязывается к скоупу и можно проверять валидность полей обращаясь к свойству $valid как у самого поля так и у формы целиком.

    Вообще все что касается какой-бы то ни было работы с DOM должно быть вынесено в директивы. а onchange и ngModel нужен только для контроллера или других директив.
    Ответ написан
  • Оптимизация загрузки изображений по url

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Распаралеливание запросов на скачку должно помочь. Подводные камни — смотря какие картинки… В теории могу предположить только что может упасть изза нехватки памяти, хотя не думаю что 5-10 картинок смогут обвалить скрипт. Придется помониторить утечки памяти и т.д.
    Ответ написан
    Комментировать
  • Как правильно организовать процесс разработки крупных сайтов?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Если все ваши пункты будут автоматизированы (скажем деплой через CI сервер) то да, это будет удобнее. Использовать git и less уже будет удобнее.
    Ответ написан
    1 комментарий
  • Как правильно сделать deploy с помощью git?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Можно написать простенький BASH скриптик для деплоя, и повесить его выполнение на хуку при пуше. Примеров масса: вот, вот и вот
    Ответ написан
    Комментировать
  • Как называется проект, мотив которого звучит так: «Сохраним трафик загружая картинки нужного размера»?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Думаю это просто один из пунктов какого-то чеклиста. Хотя проектов, реализующих подобное вагон.

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

    А уже конкретная реализация зависит от используемых технологий.
    Ответ написан
    Комментировать
  • Как оценить реальную стоимость проекта?

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

    И еще один момент — добавляйте риски. Мол оцененное время умножайте на некий коэффициент. По началу можете взять этот коэффициент равный двойке и постепенно его меняйте исходя из статистики.

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

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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Обычный старый добрый ID (число с автоинкриментом) + перевод в другую систему счисления. 62-ичной более чем хватит, как вам и предлагалось выше.
    Ответ написан
    Комментировать
  • Magento против X-Cart

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

    Но если выбирать между этими двумя… пройдемся по пунктам:

    1) Тут выигрывает x-cart (хотя опять же смотря в какой редакции, но даже в самое дешевой — выигрывает, хоть и не сильно)
    2) Тут уже сложнее, насколько я помню из коробки этого нету. Да и для x-cart вроде бы тоже не видел, а для магенту есть точно. Но быть может моя информация устарела. Я x-cart ресерчил где-то пол года назад.
    3) Из коробки в дорогих редакциях x-cart или же модули для магенту. Но если брать модули то возможностей больше.
    4) тут сказать ничего не могу.
    5) есть вроде бы в обеих. Явного лидера назвать не могу
    6) Модули
    7) X-CART примитивнее, но с другой стороны с разработчиками под magento намного более приятная ситуация. Да и сама структура непривычна только первое время.
    8) ERP — интеграции есть. Для x-cart знаю что некоторые конторки предоставляют возможность интеграции в обе стороны для множества ERP систем. Но точно ничего сказать не могу ибо с этим никогда не сталкивался. Мод магенту же с этим проще. Есть как бесплатные так и платные решения.
    9) если судить объективно — и то и то выглядит ущербно. Из коробки покрайнемере. По поводу костомизации в этом вопросе ничего сказать не могу, ибо не занимался. Хотя с другой стороны ничего лучше особо и нету… и это печально
    10) тут обе системы вроде подходят
    11) нифига админы не в грязных свиторах… Ну да несуть. По поводу x-cart честно не знаю в этом плане, но допилить какие-то механизмы для более шустрого поиска можно. Так же как и для магенту использовать для поиска сфинкс/монго. При небольшой заточке напильником, исходя из возможностей вашего сервера, нагрузки они оба будут выдерживать примерно одинаково.
    12) Тут однозначно лидер магенту. Потому то он и стал так быстро набирать обороты в самом начале.

    Такие дела.
    Ответ написан
  • Организация ЧПУ для многоуровневого каталога на сайте?

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

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

    А можно сделать еще круче — можно использовать медленные алгоритмы. Тобиш скажем хеширование происходит в цикле. Если колличество итераций динамическое — то и это хорошо. И алгоритмы шифрования надо брать не быстрый md5 а что-нибудь помедленнее, например sha512. Это в свою очередь сведет попытки подбора хэша и генерации радужных таблиц на нет, ибо каждый вариант перебора будет происходить немыслимо медленно. На хорошей видиокарте с CUDA можно в секунду сгенерить миллиончик MD5 хэшей. А так хорошо если сотню сгенерит.
    Ответ написан
    Комментировать
  • PUT & POST при написании API

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

    PUT — подмена записей. Тобиш обновить одно какое-то поле у записи нельзя. Опять же, если вы заменили объект — то вы уже имеете на руках все нужные данные, посему ответом может быть опять же заголовок location.

    есть еще метод PATCH, который позволяет именно обновлять запись (конкретное поле или несколько из них). Тут тоже подразумевается возврат только URI. По сути какие либо данные вам может вернуть только GET запрос.

    И есть еще куча заморочек со статус кодами, мол 200 это хорошо только для GET, так как оно имеет тело ответа. А для большинства других нужен 204, который говорит что все хорошо, но есть только заголовки.

    НО… это если по феншую и именно RESTFull, причем это далеко не все. Обычно дальше GET/POST/PUT/DELETE никто не идет… PATCH вообще редко используют, а вот LINK вообще ниразу не видел что бы на реальных проектах применяли…
    Ответ написан
    Комментировать
  • Новый CMS для создания небольшого интернет магазина?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Новый? А что для вас новый? SYmfony2 — самый новый фреймворк, куча мелких микро-фреймворков, куча двжиков для интернет магазинов… Из готового толкового мало.
    Ответ написан
    Комментировать
  • Как провести анализ времени выполнения веб приложения?

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

    Обращение к Facebook API на самом деле может быть узким местом, обычно выполнение запросов и исполнение PHP не настолько влияют как подключение к удаленному серверу.

    Таймеры навешивать ненужно, хотя логи стоит при разработке делать. Есть варианты использовать PECL APD, который покажет детальную статистику исполнения всех функций. Так же хороший вариант использовать xdebug. Думаю последний вариант будет проще так как требует только включение профайлинга в php.ini.
    Ответ написан
    Комментировать