Ответы пользователя по тегу Веб-разработка
  • Как организовать работу над проектами из любого места?

    bingo347
    @bingo347
    Бородатый программер
    1. Сервак торчащий через ssh в интернет, желательно с хорошим каналом и близко к большинству Ваших мест работы.
    2. VSCode с плагином для удаленной разработки
    Ответ написан
  • Как получить колбек загрузки внешнего скрипта?

    bingo347
    @bingo347 Куратор тега JavaScript
    Бородатый программер
    Если сторонняя библиотека посылает xhr/fetch запрос, то перехватить его со страницы невозможно никак, разве что обернуть соответствующее апи до загрузки этой библиотеки.
    Если это именно вставка скрипта, то у скрипт элемента есть события load и error связанные с загрузкой, можете подписаться на них. Тут задача уже, как поймать добавление конкретного тега скрипт, думаю MutationObserver прекрасно справится с этой задачей.
    Более подробных советов без кода и понимания, что происходит на странице, тут не дашь
    Ответ написан
  • Какие области computer science нужно знать full stack веб разработчику?

    bingo347
    @bingo347
    Бородатый программер
    Веб-разработчику знание computer science не обязательно, но полезно. Помимо общего развития оно позволит писать более производительный и менее ресурсоемкий код.

    Что стоит изучить:
    1. базовое устройство и принцип работы ЦП и ОЗУ, как выполняются команды, как происходит чтение и запись памяти, как работают процессорные кэши, как работают прерывания и для чего они нужны.
    2. базовое понимание ассемблера хотя бы для одной архитектуры (наиболее актуально x86_64)
    3. базовое понимание как работает ОС - системные вызовы, отличие user space от kernel space, отличие микроядерной и монолитной архитектур. Что такое виртуальная память

    Помимо общих тем полезно будет знать более прикладные вещи:
    1. Структуры данных, какие есть, какая для чего нужна и где ее более оптимально использовать
    2. Алгоритмы, алгоритмическая сложность (о-нотация и омега-нотация), знание о наличии распространенных решений и понимание, какое решение будет наиболее оптимально в конкретном случае
    3. Архитектура программного обеспечения
    4. Паттерны проектирования
    5. ООП (наследование, инкапсуляция, полиморфизм подтипов (на наследовании и на интерфейсах), композиция, абстракция)
    6. ФП (функции высшего порядка, замыкания, параметрический полиморфизм, композиция, ассоциативность, контроль побочных эффектов, монады и функторы)

    А еще есть закон протекающих абстракций, согласно которому не лишним будет знать, что и как у нас работает под капотом:
    1. как работает интерпретатор python
    2. как работают интерпретаторы js (на примере v8 хотя бы)
    3. как работают JIT компиляторы, и как это вообще возможно если executable память read-only, а writable память не executable в большинстве популярных ОС
    4. как работает сборка мусора, какие есть алгоритмы, почему большинство сборщиков мусора используют поколения. А конкретно к v8 еще можно задать актуальный для react вопрос: почему иммутабельность и постоянное создание коротко-живущих объектов в js относительно дешево, если аллокация памяти - это дорого?
    5. как работает браузер, как он рисует страницу, как обрабатывает event-loop js

    P.S. большинству работодателей предлагающих работу связанную с разработкой в вебе это все нафик не сдалось от нанимаемого разработчика... большинству работодателей нужно тупое формошлепство на фронте и создание тупых проксей от БД до фронта на бэке... но те немногие работодатели, кому эти знания стоят острой необходимостью, готовы платить практически любые деньги разработчику, который все это знает и умеет применять на практике.
    Ответ написан
  • Реально ли заниматься веб разработкой на планшете?

    bingo347
    @bingo347
    Бородатый программер
    Самой большой проблемой станет отсутствие dev-tools во всех (известных мне) браузерах под android и iOS - iPad сразу в пролете, андроид планшеты можно попробовать прошить каким нить armbian, но скорее всего будут проблемы с драйверами. Но тут есть планшеты на win10, полноценных линуксах и т.д., да и собрать самодельный планшет из малинки - вопрос прямых рук.
    Так же немаловажный момент - это удобство. Маленький экран и тормоза ide из-за ограниченных ресурсов создадут не мало дискомфорта не только на планшете, но и на большинстве бюджетных ноутов.
    Ну и если рассматривать вариант планшет + клавиатура против ноута - ноут опять же будет удобнее.
    Ответ написан
  • Нужна ли олимпиадная подготовка, чтобы стать программистом?

    bingo347
    @bingo347
    Бородатый программер
    Разработчик должен более-менее разбираться в сфере, с которой он работает.
    Если в сфере задействовано много математики (научные расчеты например или машинное обучение) - то тут без математики не как.
    А вот в разработке, например, сайтиков для e-commerce гораздо нужнее будет знание продаж.

    Я понимаю, что хорошо, когда программист знает мат
    мат программисту жизненного не обходим, без него никак...
    Ответ написан
  • Какую версию IE поддерживать в коммерческих проектах?

    bingo347
    @bingo347
    Бородатый программер
    Зависит от целевой аудитории.
    Где-то вопрос о поддержке IE уже просто не стоит, а скорее стоит какую версию safari поддерживать
    Где-то нужен хотя бы 11
    А где-то нужна даже 6
    Ответ написан
  • Вопрос о новых веяниях и требованиях во фронтенде?

    bingo347
    @bingo347
    Бородатый программер
    Для начала скажу об Html academy, что знаю.
    В начале года звали преподавать у них js + разрабатывать по нему курсы. Сразу скажу, что у меня впервые сложилось положительное впечатление от такого предложения, а не пошел я к ним по причинам не зависящим от них. Во-первых они дают базис, основы без которых Вы просто не сможете нормально разрабатывать, а освоить с этим базисом фреймворк большого труда не составит (про фреймворки ниже напишу).
    Во-вторых, хорошее впечатление у них составили люди, с кем удалось пообщаться, которые занимаются там составлением курсов и преподаванием - все как один не академики-теоретики, а практикующие разработчики с хорошим уровнем (а набирала в преподаватели Html academy в тот момент не ниже сеньера, предлагая соответствующую рынку зп).
    Ну и в-третьих, один раз собеседовал кандидата, имеющего за плечами только Html academy, обычно я негативно отношусь к кандидатом имеющим только курсы за плечами, но тут собеседуемый показал хороший уровень владения js.

    Теперь по фреймворкам.
    Не одному адекватному работодателю не нужен тупой фреймворкописатель без знания языка и нативного api, на которых этот фреймворк основан. В то же время, при знании js и DOM Api - Vue и React осваиваются за неделю, Angular за месяц. А без знания основ, может формочки ваять и сможете, но не больше. Так что учите сначала основы - js и нативное api браузера (DOM, CSSOM, ajax и т.д.), а уже потом беритесь за фреймворк.
    Ответ написан
  • Веб студии просто не выставляют многие работы в портфолио или в свободное время на стройке работают?

    bingo347
    @bingo347
    Бородатый программер
    Когда я на старте своей карьеры работал в веб-студии (давно было, но не думаю, что что-то кардинально поменялось), сайты клепались пачками, по несколько штук в день. Естественно 90% из них были как под копирку, отличаясь лишь контентом. Смысла выставлять 100500 однотипных сайтов в портфолио просто нет
    Ответ написан
  • Как с технической точки зрения сделаны сервисы генерирующие виджеты?

    bingo347
    @bingo347 Куратор тега JavaScript
    Бородатый программер
    Поделюсь как это сделано у нас, надеюсь поможет
    во-первых, сайт заводится в нашей БД и ему присваивается id
    во-вторых, сайт вставляет к себе наш код, он небольшой, но делает две вещи:
    1. создает временную функцию в window - которая совпадает по имени с нашей функцией запуска, но просто сохраняет себе в массив все вызовы и их аргументы
    2. начинает загрузку js-кода нашего виджета
    в-третьих, сайт вызывает нашу функцию запуска, куда передает свой id из нашей БД и некоторые параметры

    когда наш основной js загрузился, он делает следующее:
    1. переписывает в window временную функцию собирающую аргументы на настоящую, которая запускает вставку виджета
    2. если собранны запуски до этого момента - запускает их в настоящей функции запуска
    3. функция запуска дергает сервер и запрашивает данные по id сайта
    4. вставляем на страницу iframe и в нем рисуем виджет

    на деле все чуть сложнее, но общий принцип такой
    Ответ написан
  • Нужно ли информировать по правилам GDPR об использовании IndexedDB, когда Cookies фактически не используются?

    bingo347
    @bingo347
    Бородатый программер
    Нужно информировать пользователя если Ваш ресурс либо третья сторона посредством Вашего ресурса, хранит любые данные, в любом хранилище, позволяющие идентифицировать пользователя в дальнейшем.
    То есть:
    храним токен авторизации (в куках, localStorage, indexedDB или еще где-то) - уведомляем
    храним id истории поиска - уведомляем
    подключили яндекс метрику, гугл аналитику, гугл таг менеджер, скрипты рекламных сетей - уведомляем
    ну и т.д.
    Ответ написан
  • Как и по какому принципу работает внедрение рекламы на сайт Wordpress?

    bingo347
    @bingo347
    Бородатый программер
    В современных реалиях, единственный адекватный подход - заключить договор с агентством.
    Вам предоставят js-код, который нужно будет просто вставить на сайт и остальное (поиск рекламодателя, анализ аудитории, таргетинг и т.д.) уже не Ваша проблема.

    Если хотите текстовую рекламу: Yandex.Direct
    Если интерактивную/видео: Adfox (Yandex), MyTarget (mail.ru) или NativeRoll
    Ответ написан
  • Насколько актуально использование шаблонизаторов на сервере?

    bingo347
    @bingo347
    Бородатый программер
    Есть такая весьма полезная, но иногда трудно реализуемая (зависит от выбранного стека) штука, как двухсторонний рендеринг. Преимущества в скорости выдачи готового к потреблению контента, как при первом запросе к сайту (серверный рендеринг), так и при последующих (клиентский рендеринг).
    Один из подходов упрощения реализации - вынос рендеринга в отдельный слой, способный работать, как на клиенте так и на сервере. Притом на сервере, скорее всего, он будет работать под node.js (так как на клиенте у нас только js), хотя и не обязательно (handlebars шаблоны легко реализуются на php или python).
    При этом слой api может быть реализован на любом языке.
    Пример: фронтенд (под ним я понимаю слой UI + UX) на vue, api на Go. Для серверного рендеринга нам нужна упрощенная реализация vue, без байндинга с DOM, но способная выдавать html в виде строки - VueSSR (не очень оптимизированая вещь, но нагрузка на серверный рендеринг как правило не большая).
    Есть еще два важных момента:
    Во-первых, крайне не желательно, чтоб на клиентской стороне не тратились и так дефицитные ресурсы на старте на рендеринг, который уже выполнен (vueRootVM.$mount()).
    Во-вторых, серверному рендерингу скорее всего понадобится доступ к api. Необходимо его упростить, чтобы запросы шли в обход nginx, напрямую, по локальной сети (в случае разных машин под api и рендеринг) или по unix сокету (в случае одной машины).

    Подводя итог. Актуально ли делать серверный рендеринг? Зависит от проекта. В любом случае, в современном мире он может существовать только в дополнение к клиентскому. А стоит ли оно того - решает каждый сам.
    Ответ написан
  • Воспроизведение аудио?

    bingo347
    @bingo347 Куратор тега JavaScript
    Бородатый программер
    Полностью обойти не получится, ибо политика против агрессивного воспроизведения звука.
    Звук, что у video что у audio, можно включать только синхронно по действию пользователя.
    В blink (chrome, chromium, etc.) прокатит хак, если на действие пользователя вызвать метод load(), после play() можно вызывать когда угодно. Однако хак не работает в AppleWebkit (Safari на osX, любой браузер на iOS).

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

    bingo347
    @bingo347
    Бородатый программер
    Никак и не нужно! Подрубайте эквайринг банка у которого обслуживаетесь, это гораздо лучше по трем причинам:
    1. Вам объяснят как отследить оплату
    2. Это законно, не будет проблем с налоговой
    3. Это дешевле (если сравнивать со штрафами от налоговой)
    Ответ написан
  • Как разместить картинку как на макете?

    bingo347
    @bingo347
    Бородатый программер
    /*блок родителя*/
    .parent-block {
      position: relative;
      width: 100%;
      max-width: 1330px;
      margin: auto;
    }
    /*блок картинки*/
    .image-block {
      position: absolute;
      right: 0;
      transform: translateX(60%);
    }
    Ответ написан
  • Откуда пошло разделение терминов с Client-side и Server-side на Front end и Back end?

    bingo347
    @bingo347
    Бородатый программер
    "Client-side и Server-side" и "Frontend и Backend" - это абсолютно разные и никак не связанные понятия

    Клиент - это приложение, которое делегирует часть своего функционала другому приложению - серверу
    Сервер - это приложение, которое обслуживает множество клиентов, предоставляя им свой функционал
    Frontend - это часть приложения, отвечающая за интерфейс (GUI, CLI, etc.), то есть то, что непосредственно видит пользователь, с чем пользователь взаимодействует
    Backend - это часть приложения, отвечающая за бизнес логику, за фоновые задачи, за то что скрыто от пользователя

    Практически любое приложение содержит backend часть, не зависимо от того клиент оно, сервер или вообще работает без клиент-серверного взаимодействия
    frontend часть может содержать как клиент, так и сервер, хотя сервера содержат ее не часто
    Яркий пример - X.org (сервер GUI в Linux и некоторых других *nix системах) содержит frontend часть - рисует на экране, получает пользовательский ввод (клавиатура, мышь, джойстик, etc.), а простейшие WindowManager (например awesome), являющиеся клиентами по отношению к X.org, frontend части не содержат

    Конкретно в web это идет с тех времен, когда вся логика была на сервере, а на клиенте были статичные html страницы, а js использовался только для красотулечек-финтифлюшечек

    P.S. Еще про web, а конкретно про его клиентскую часть, то есть браузер:
    Когда пишем html, css - это frontend (пусть "чистые" верстальщики порадуются)
    Когда пишем js код взаимодействующий с DOM, CSSOM, рисующий на Canvas - это frontend
    Когда в js обрабатываем пользовательские события (keyup, click, focus, touchstart, etc.) - это frontend
    Когда на js производим расчеты, проверки ввода, вешаем таймеры, работаем с локальными хранилищами, отправляем ajax запросы - это backend
    Когда обрабатываем такие события как load, message, DOMContentLoaded - это backend
    Код работающий в WebWorker'е - это backend
    Продолжать можно долго, суть думаю ясна
    Ответ написан
  • Что нужно помнить в js?

    bingo347
    @bingo347 Куратор тега JavaScript
    Бородатый программер
    Бесполезно учить JS (как и любой другой ЯП или технологию), владение приходит только с практикой и опытом
    От того, что Вы прочитали что-то о незнакомой Вам технологии, Вы получите нулевой результат
    От того, что скопировали примеры - аналогично
    От того, что решили самостоятельные задачи - результат около 5%
    Начните делать небольшой проект и за информацией лезте в MDN, это будет гораздо эффективнее
    P.S. Кантор устарел, ИМХО
    Ответ написан
  • В каких случаях использование фреймворка(например express.js) для nodejs не оправдано?

    bingo347
    @bingo347 Куратор тега JavaScript
    Бородатый программер
    Когда у Вас хайлоад express/koa выльются затратами вида "нам нужно еще +5 машин", но железо нынче дешевое, пишите на express, и Вам проще и я буду продолжать по 200-300 тыс зарабатывать
    Ответ написан
  • Что делать веб разработчику, если уже всё придумано?

    bingo347
    @bingo347
    Бородатый программер
    Пока не возникнет потребности в чем-то - не появится и идеи. Делать что-либо ради того, чтобы сделать - результаты будут плачевными, хотя бы потому, что Вы даже не представляете себе потребности ожидаемые от продукта, который Вы делаете.
    Пример. Все мои пакеты на npm возникли из-за того, что я не нашел того, что хорошо бы решало мою задачу, далее делался велосипед, далее приходило понимание, что этот велосипед нужен где-то еще, в итоге я создаю пакет, npm publish и... блин, а мой велосипед полезен кому-то еще
    Ответ написан
  • Чем опасна загрузка в iframe с постороннего сайта?

    bingo347
    @bingo347 Куратор тега JavaScript
    Бородатый программер
    Ничем. Кросдоменный iframe исполняется в отдельном изолированном контексте, а в последних версиях хрома в отдельном потоке
    Ответ написан