Ответы пользователя по тегу Веб-разработка
  • CommonJS / RequireJS - зачем?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Плюс в каких ситуациях такие инструменты должны быть нужны и вообще зачем нужны все эти dependency injection?


    Инверсия управления. Управление зависимостями, снижение связанности между компонентами системы. Что бы то что должно зависить зависило от чего-то и наоборот.

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

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


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

    или перевод всего в текст.

    Как это поможет слабовидящим?

    Так же интересует возможность полного управлением функционалом сайта лишь с помощью клавиатуры.


    хоткеи? Причем тут люди с ограниченными возможностями?

    Короче мое мнение: вы придумываете никому не нужные фичи. Ими никто не будет пользоваться и они никому не помогут.
    Ответ написан
  • Зачем в Angular есть Jsonp?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    1) Jsonp был с самых ранних версий angular
    2) angular на момент выхода версии 1.0 имел поддержку ie8 как минимум
    3) поскольку angular 1.x не может иметь значительных нарушений обратной совместимости - нельзя просто так удалять jsonp.
    Ответ написан
  • Как стать спикером по фронтенду?

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


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

    Собственно никакой магии. Либо просто случайно кто-то попросит что-то в духе "слушай, может выступишь?" либо сам.

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

    Тем более по фронтэнду. Там сейчас ситуация такая что большинство не очень опытные разработчики. И что-то интересное им рассказать и полезное более чем легко.
    Ответ написан
  • Как сделать удаления переписки?

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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Иными словами нативный JS или React & Angular ?


    А что вы собственно сможете написать на том же React без знания языка? Или тот же ангуляр... ну ок, UI-ку зная только ангуляр методом тыка и тд. вы накидаете но про поддерживаемые приложения, сервисный слой и логику на клиенте уже можно забыть.

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

    как будто бы знание JS нужно лишь для галочки, и действительно важно лишь какими фреймворками ты владеешь.


    Потому что знание JS это само собой разумеющееся. Без этого дальше смысла нету разговаривать.
    Ответ написан
  • Экспресс обучение frontend разработке. Как подступиться?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Достаточно солидны список, неправда ли?


    Вы не правильно сделали декомпозицию. Дробите список и перемещайте местами пока не будет абстрактных "базовое знание mysql". Да и зачем фронтэндщику вообще базовое знание mysql или php? Вам нужно знать как с бэкэндом взаимодействовать (HTTP, принципы REST хотя бы приблизительно понимать), примерно понимать что такое базы данных (localStorage, IndexedDB). Словом никаких mysql/php. Это потом когда-нибудь освоите.

    Или например список ваших фреймворков. Выкидываем backbone - о нем можно почитать просто что он есть и что из себя представляет, но на вашем этапе толку не будет. Есть тройка лидеров - React/Angular/Ember. Затем идут небольшие фреймворки и библиотеки - Aurelia/Vue/Backbone/etc.

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

    p.s. я бы требовал еще es2015/2016, webpack/systemjs/вообще модули, препроцессоры стилей (хотя бы основы и понимание зачем нужны) и т.д.

    Ну или еще - jquery можно не изучать. Ознакомиться - да, но на уровне джуниора нужно знать как решить стандартную задачку подключения плагина и организации очереди анимаций. А так в 90% случаев jquery даже и не нужен вовсе. Ну и AJAX - разберетесь с HTTP и вы познаете AJAX.

    Ну и последнее. Джуниор это разработчик с годом опыта работы. Это человек который запросто может решать типичные задачи (можно пробежаться по фриланс биржам и составить представление о типичных задачах). Перед джуниором идет стажер.
    Ответ написан
  • Что нужно уметь делать в Photoshop для front-end developer-а?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    что нужно уметь делать в Photoshop фронтендщику?


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

    Мое личное мнение - лучше изучить sketch, из опыта могу сказать что в контексте web разработки он подходит намного лучше. Особенно для разработчиков.
    Ответ написан
  • Как сжимать изображения прямо при загрузке на сервер?

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

    Есть очень простой способ - aws s3 + aws lambda для загрузки файлов и обработке оных по загрузке на сервер.
    Ответ написан
  • Как работает front-end?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    https://developer.mozilla.org/en-US/docs/Web/JavaScript

    как минимум вам нужно нормально знать javascript. Без этого углубляться смысла нет. (помимо основ синтаксиса, объектов и прототипного наследования, модулей, нужно еще разобраться с такими понятиями как event loop)

    затем минимально нужно почитать про DOM, как оно там работает, как отрисовывается страница, что такое reflow/repaint и т.д. Всплытие событий и т... Ajax - нынче с ним все просто: https://developer.mozilla.org/en-US/docs/Web/API/F...

    В целом MDN + learn.javascript.ru
    Ответ написан
  • Что изучать для создания динамического сайта?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    да и не вся информация запомнится


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

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


    Для начала все эти сайтики знакомств не использовали шаред хостинги и в 2005-ом году.

    На самом деле достаточно посмотреть на вконтактик. Они как в 200x использовали long polling так и сегодня. Еще есть просто polling но это выходит по нагрузкам на сервер тяжелова-то.
    Ответ написан
  • Разработка: что должно быть впереди фронтэнд или бекенд?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    В идеале второй вариант, если это возможно.

    Скажем я на своих проектах пытаюсь делать так насколько это возможно. Перед началом разработки какой-то фичи разработчики просто договариваются между собой как будет организовано взаимодействие с сервером (по сути пишется описание API на каком api blueprint, сейчас будем переходить на raml).

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

    Таким образом какие-то проблемы с серверным взаимодействием можно отловить задолго до того как разработчики в принципе реализуют эту часть api. Хотя если разработчики не используют какие-то средства для валидации реализации на предмет соответствию описанию, то в итоге на интеграцию может уйти больше времени.

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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    с самого начала у нас есть более-менее абстрактный класс


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

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

    Вот и вся разница. Далее вход идет инкапсуляция. То есть наше состояние должно быть изолировано внутри объекта, и доступ к нему напрямую из внешнего мира должен быть закрыт.

    Если мы хотим создать объект с каким-то состоянием по умолчанию - мы берем первый вариант (либо как в примере прописывваем прямо как значение свойства, либо сэтим в конструкторе).

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

    Если же мы хотим создать объект но он не может быть пустым, объект должен требовать начальное значение в момент создания. Тогда мы просто передаем значение в конструктор. Без этого значения (или с неправильным) мы не сможем создать объект. К примеру если у пользователя обязательно должен быть email и пароль имеет смысл "заставлять" разработчиков явно передавать их в конструктор объекта. Это эдакая вариация.

    А теперь попробуем первый и второй подходы вместе + третий кейс с обязательными параметрами:

    class User {
         private $id;
         private $email;
         private $password;
    
         public function __construct($email, $password) 
         {
               // это ваш первый пример только без наследования, оно не нужно
               // в нашей задаче идентификатор пораждается
               // при создании объекта самим объектом, состояние по умолчанию
               $this->id = Uuid::uuid4(); 
    
               // мы требуем входящие данные что бы задать начальное состояние
               $this->email = $email;
               $this->password = $password;
         }
    
         // мутация состояния, второй вариант.
         public function changePassword($password) 
         {
                $this->password = $password;
         }
    }


    То есть вся разница только в том, откуда приходят данные для формирование объектом своего состояния. Изнутри (первый случай) или снаружи (второй случай). Оба подхода вполне себе можно использовать вместе.

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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Как решаются подобные проблемы в серьёзных проектах?


    Никак. Оптимизируют сам поиск, используя денормализацию данных что бы максимально упростить поиск и сделать его как можно менее напряжным для сервера. Ну и что бы "сократить" количество запросов используют "приемы" вроде throttle/debounce на клиенте, что бы не на каждый кник мышкой слать запрос, а когда пользователь не проявлял активности, к примеру секунду.

    Частично эту проблему можно решить HTTP кешированием. То есть все парамеры поиска ходят в queryString а значит по одному URI мы можем иметь нужную страницу/данные. Однако вармат такого кэша будет занимать много времени, а сложность инвалидации будет так высока, что нужно 10 раз подумать прежде чем решаться на такое.
    Ответ написан