Frontend meetup (Online)
1. Построение микрофронтендной архитектуры. Первый взгляд, боли и решения —Никита Морозов, АО "МТТ"
В докладе будет представлен путь построения микрофронтендной архитектуры на примере проекта МТС «Exolve», а также поэтапный рассказ об эволюции проекта от webpack до vite, от SingleSPA до собственного решения
2. Бьем монолит. Основные практики — Гузенко Александр IT ONE
Рассмотрим основные подходы к разбиению монолитных фронтедов.
3. Безопасный TypeScript. Защищаемся от any в кодовой базе —Максим Земсков, Яндекс
Как получить максимум безопастности при использования TypeScript. Какие настройки стоит использовать и как улучшить типизацию стандартных функций.
4. Beyond Frontend — Алексей Тюльдюков, VK
Как T-shape подход может помочь фронтенд разработчику стать техническим менеджером
🗓 12 июля, начало в 19:00 мск, Среда
🚀 Телеграмм канал с анонсами митапов
✅ Регистрация на мероприятие
1. Построение микрофронтендной архитектуры. Первый взгляд, боли и решения —Никита Морозов, АО "МТТ"
В докладе будет представлен путь построения микрофронтендной архитектуры на примере проекта МТС «Exolve», а также поэтапный рассказ об эволюции проекта от webpack до vite, от SingleSPA до собственного решения
2. Бьем монолит. Основные практики — Гузенко Александр IT ONE
Рассмотрим основные подходы к разбиению монолитных фронтедов.
3. Безопасный TypeScript. Защищаемся от any в кодовой базе —Максим Земсков, Яндекс
Как получить максимум безопастности при использования TypeScript. Какие настройки стоит использовать и как улучшить типизацию стандартных функций.
4. Beyond Frontend — Алексей Тюльдюков, VK
Как T-shape подход может помочь фронтенд разработчику стать техническим менеджером
🗓 12 июля, начало в 19:00 мск, Среда
🚀 Телеграмм канал с анонсами митапов
✅ Регистрация на мероприятие
🔥3👍1
Каким будет значение выражения "искать такси".split('').reverse().join('')?
Anonymous Quiz
18%
"искать такси"
70%
"искат ьтакси"
6%
"искат иксат"
5%
"иксат такси"
😁23👍12👎5❤1
Что значит текст max call stack size exceeded в консоли?
Текст "max call stack size exceeded" в консоли означает, что было достигнуто максимальное количество вызовов функции в стеке вызовов JavaScript. Стек вызовов - это механизм, который используется для отслеживания выполнения функций. Каждый раз, когда функция вызывается, она помещается в стек вызовов. Когда функция заканчивает свое выполнение, она удаляется из стека вызовов.
Когда функция вызывает саму себя рекурсивно без остановки, то каждый новый вызов функции добавляется в стек вызовов, и если количество вызовов становится слишком большим, то возникает ошибка "max call stack size exceeded". Это происходит потому, что стек вызовов имеет ограниченный размер и не может бесконечно увеличиваться.
Чтобы решить эту проблему, нужно переписать код таким образом, чтобы рекурсивные вызовы функции прекращались на определенном условии. Например, можно добавить условие, которое проверяет, достигнуто ли максимальное количество вызовов функции, и если да, то прекратить рекурсивные вызовы. Также можно использовать циклы вместо рекурсии, чтобы избежать проблемы с переполнением стека вызовов.
👉 @frontendInterview
Текст "max call stack size exceeded" в консоли означает, что было достигнуто максимальное количество вызовов функции в стеке вызовов JavaScript. Стек вызовов - это механизм, который используется для отслеживания выполнения функций. Каждый раз, когда функция вызывается, она помещается в стек вызовов. Когда функция заканчивает свое выполнение, она удаляется из стека вызовов.
Когда функция вызывает саму себя рекурсивно без остановки, то каждый новый вызов функции добавляется в стек вызовов, и если количество вызовов становится слишком большим, то возникает ошибка "max call stack size exceeded". Это происходит потому, что стек вызовов имеет ограниченный размер и не может бесконечно увеличиваться.
Чтобы решить эту проблему, нужно переписать код таким образом, чтобы рекурсивные вызовы функции прекращались на определенном условии. Например, можно добавить условие, которое проверяет, достигнуто ли максимальное количество вызовов функции, и если да, то прекратить рекурсивные вызовы. Также можно использовать циклы вместо рекурсии, чтобы избежать проблемы с переполнением стека вызовов.
👉 @frontendInterview
❤6👍1
Какая единица измерения размера шрифта в CSS является абсолютной и не зависит от размера шрифта родительского элемента и устройства, на котором отображается страница?
Anonymous Quiz
25%
em
51%
pt
24%
vh
👍7👎4
Что выведется в консоль?
Anonymous Quiz
26%
{ name: 'Cat' }
19%
Animal { name: 'Cat' }
43%
undefined
12%
'Cat'
❤11👍3
Чему будет равно значение переменной variable: let variable = 1 + '15'?
Значение переменной variable будет равно '115'. В переменной будет храниться строка, а не число.
👉 @frontendInterview
Значение переменной variable будет равно '115'. В переменной будет храниться строка, а не число.
let variable = 1 + '15'
console.log(variable) // '115'
Оператор + в JavaScript используется для сложения чисел или конкатенации строк. В результате применения этого оператора к двум значениям получится строка или число. Если один из операндов будет строковым типом, то оба операнда сначала будут приведены к строке, а результатом станет их конкатенация.👉 @frontendInterview
👍12👎2
Essential TypeScript 4: From Beginner to Pro 2nd Edition(2021)
Узнайте об основных и дополнительных возможностях TypeScript, популярного супернабора языка JavaScript, в котором добавлена поддержка статической типизации. TypeScript сочетает в себе возможности типизации C# или Java с гибкостью JavaScript, уменьшая количество ошибок типизации и обеспечивая более легкий путь к разработке JavaScript.
👉 @frontendInterview
Узнайте об основных и дополнительных возможностях TypeScript, популярного супернабора языка JavaScript, в котором добавлена поддержка статической типизации. TypeScript сочетает в себе возможности типизации C# или Java с гибкостью JavaScript, уменьшая количество ошибок типизации и обеспечивая более легкий путь к разработке JavaScript.
👉 @frontendInterview
👍2👎1
Count the divisible numbers
Создайте функцию, которая принимает 3 числа - x, y, k. И возвращает количество целых чисел в промежутке от x до y, которые делятся на k.
Пример:
x = 6, y = 11, k = 2
Функция должна вернуть 3, так как в промежутке от 6 до 11 три числа делятся на 2 (6, 8, 10).
👉 @frontendInterview
Создайте функцию, которая принимает 3 числа - x, y, k. И возвращает количество целых чисел в промежутке от x до y, которые делятся на k.
Пример:
x = 6, y = 11, k = 2
Функция должна вернуть 3, так как в промежутке от 6 до 11 три числа делятся на 2 (6, 8, 10).
👉 @frontendInterview
Как фронтендеру расти дальше?
Для роста нужен опыт с проектами посложнее, но бывает, что таких проектов на текущей работе нет и не предвидится. Можно залететь в оперсорс, но я не знаю о крупных проектах, куда можно легко залететь и получить поддержку наставника.
Как вариант, пройти обучение с акцентом на практику, которое было создано руками тимлидов с опытом работы в Яндексе, Вконтакте, TON и Frogly.
Здесь вы будете постепенно добавлять в проект самые актуальные технологии и разбираться в том, как они работают.
За 5 месяцев обучения вы научитесь:
- находить и лечить сложные ошибки производительности
- готовить Service Worker и PWA, чтобы сайт работал в офлайне
- делать сайт доступным для людей с ограниченными способностями
- DevOps штукам для фронтендера
- создавать серверную часть веб-приложения самостоятельно с нуля
Приходите прокачивать скиллы
А по промокоду FRONTINT22 для вас скидка 7% на ближайший поток.
Для роста нужен опыт с проектами посложнее, но бывает, что таких проектов на текущей работе нет и не предвидится. Можно залететь в оперсорс, но я не знаю о крупных проектах, куда можно легко залететь и получить поддержку наставника.
Как вариант, пройти обучение с акцентом на практику, которое было создано руками тимлидов с опытом работы в Яндексе, Вконтакте, TON и Frogly.
Здесь вы будете постепенно добавлять в проект самые актуальные технологии и разбираться в том, как они работают.
За 5 месяцев обучения вы научитесь:
- находить и лечить сложные ошибки производительности
- готовить Service Worker и PWA, чтобы сайт работал в офлайне
- делать сайт доступным для людей с ограниченными способностями
- DevOps штукам для фронтендера
- создавать серверную часть веб-приложения самостоятельно с нуля
Приходите прокачивать скиллы
А по промокоду FRONTINT22 для вас скидка 7% на ближайший поток.
👎2❤1
Объясните, что делает приведенный выше код
Приведенный код использует генераторную функцию (function*) и ключевое слово yield для создания итератора, который будет возвращать значения в цикле.
Давайте разберем код по шагам:
1. Сначала определяется генераторная функция fn, которая принимает аргумент num. Генераторная функция отличается от обычной функции тем, что может приостанавливать свое выполнение и возобновлять его позднее.
2. Внутри генераторной функции есть цикл for, который итерирует от 0 до num - 1. В каждой итерации цикла выполняется следующая строка кода.
3. Ключевое слово yield используется для приостановки выполнения функции и возврата значения во время каждой итерации цикла. В данном случае, yield console.log(i) приостанавливает выполнение функции и выводит значение i в консоль. Затем yield возвращает undefined.
4. После выполнения каждой итерации цикла, выполнение генераторной функции приостанавливается, и управление передается обратно во внешний код.
5. Затем создается переменная loop, которая получает результат вызова генераторной функции fn(5). Это создает итератор, связанный с генераторной функцией.
6. Вызов
7. Затем вызов
Таким образом, код последовательно выводит числа от 0 до 1 в консоль.
👉 @frontendInterview
Приведенный код использует генераторную функцию (function*) и ключевое слово yield для создания итератора, который будет возвращать значения в цикле.
Давайте разберем код по шагам:
1. Сначала определяется генераторная функция fn, которая принимает аргумент num. Генераторная функция отличается от обычной функции тем, что может приостанавливать свое выполнение и возобновлять его позднее.
2. Внутри генераторной функции есть цикл for, который итерирует от 0 до num - 1. В каждой итерации цикла выполняется следующая строка кода.
3. Ключевое слово yield используется для приостановки выполнения функции и возврата значения во время каждой итерации цикла. В данном случае, yield console.log(i) приостанавливает выполнение функции и выводит значение i в консоль. Затем yield возвращает undefined.
4. После выполнения каждой итерации цикла, выполнение генераторной функции приостанавливается, и управление передается обратно во внешний код.
5. Затем создается переменная loop, которая получает результат вызова генераторной функции fn(5). Это создает итератор, связанный с генераторной функцией.
6. Вызов
loop.next() запускает выполнение генераторной функции до первого ключевого слова yield. В данном случае, это приведет к выполнению console.log(0) и возврату объекта {value: undefined, done: false}. Значение value равно undefined, потому что console.log() не возвращает никакого значения.7. Затем вызов
loop.next() возобновляет выполнение генераторной функции сразу после последнего ключевого слова yield. В данном случае, это приведет к выполнению console.log(1) и возврату объекта {value: undefined, done: false}.Таким образом, код последовательно выводит числа от 0 до 1 в консоль.
👉 @frontendInterview
👍17
🔥8👎3👍2
Объяснение:
При использовании флага "global" или "sticky" у RegExp появляется состояние. У него есть lastIndex полученный из предыдущего вызова регулярки. При первом вызове lastIndex'у присваивается 5 (индекс на котором регулярка остановилась) и при следующем он начинает поиск с этого индекса, но т. к. это конец строки - там ничего нет и он выдаёт false (и lastIndex, кстати, обратно устанавливается в 0).
👉 @frontendInterview
👉 @frontendInterview
👍24❤2👎2🔥1
Можете ли вы описать суть методологии git flow?
Git-flow — наиболее популярная методология разработки проектов с использованием git.
Зачем нам вообще нужны какие-то методологии для работы с git?
Дело в том, что сам git не привязывает нас к какому-либо определённому способу разработки, и каждый разработчик, в теории, может работать с контролем версий так, как он хочет. Чтобы в таких условиях не погрузить наш репозиторий в хаос, нам нужно придумать и донести до всех разработчиков некий единый стандарт для работы с контролем версий в проекте.
Всего в git-flow существует 5 типов веток, каждый из которых несёт определённую функциональную нагрузку.
Каждая ветка feature отделяется от develop и мержится обратно в него. После завершения работы над фичей и финального мержа в develop, ветка удаляется.
В ветку master мержатся только изменения из веток release и hotfix. На каждый такой мерж создаётся тег с именем версии.
Ветка выходит из develop и может мержится в develop по ходу подготовки версии. Как только работа над версией заканчивается, происходит финальный мерж ветки в master и develop, после чего ветка удаляется, а коммиту мержа в master присваивается тег новой версии.
Ветка отходит от master и по завершению правок багов мержится обратно. Сама ветка после этого удаляется, а коммиту мержа в master присваивается тег новой версии.
👉 @frontendInterview
Git-flow — наиболее популярная методология разработки проектов с использованием git.
Зачем нам вообще нужны какие-то методологии для работы с git?
Дело в том, что сам git не привязывает нас к какому-либо определённому способу разработки, и каждый разработчик, в теории, может работать с контролем версий так, как он хочет. Чтобы в таких условиях не погрузить наш репозиторий в хаос, нам нужно придумать и донести до всех разработчиков некий единый стандарт для работы с контролем версий в проекте.
Всего в git-flow существует 5 типов веток, каждый из которых несёт определённую функциональную нагрузку.
developВетка существует на протяжении всего процесса разработки. В данную ветку попадает стабильный код новых фич и багфиксов.
feature-*Временные ветки, которые создаются для каждой нетривиальной фичи.
Каждая ветка feature отделяется от develop и мержится обратно в него. После завершения работы над фичей и финального мержа в develop, ветка удаляется.
masterВетка, куда поступают самые стабильные изменения, которые идут в релиз. Существует на протяжении всего процесса разработки.
В ветку master мержатся только изменения из веток release и hotfix. На каждый такой мерж создаётся тег с именем версии.
release-*Временные ветки, создаваемые для подготовки новой версии к релизу. В эти ветки попадают правки багов и настройки перед релизом.
Ветка выходит из develop и может мержится в develop по ходу подготовки версии. Как только работа над версией заканчивается, происходит финальный мерж ветки в master и develop, после чего ветка удаляется, а коммиту мержа в master присваивается тег новой версии.
hotfix-*Временные ветки создаются для правки критических проблем в релизной версии.
Ветка отходит от master и по завершению правок багов мержится обратно. Сама ветка после этого удаляется, а коммиту мержа в master присваивается тег новой версии.
👉 @frontendInterview
👍24
Как вырасти от junior до middle? Middle-специалист отличается не только опытом и уровнем владения технологиями, но и софт скилами. Курс Яндекс Практикума «Мидл фронтенд-разработчик» составлен так, чтобы вы могли освоить и то, и другое а ещё:
• разработать мессенджер, используя только JavaScript, Typenoscript, CSS и API браузера;
• познакомиться с теорией и отработать её на практике в больших проектах;
• научиться брать ответственность за решения и вкладываться в общий результат;
• самостоятельно декомпозировать задачи и распределять время;
• исследовать смежные сферы программирования, без которых невозможен фронтенд:
• информационную безопасность, прототипирование интерфейсов, командную работу, DevOps, ООП.
На всех этапах вас будут сопровождать опытные разработчики: мы не дадим просесть по учёбе и поможем выкроить время на образование. Вы будете практиковаться на реальных кейсах и положите в портфолио работающие проекты. А карьерные консультации подготовят вас к разговору о повышении или помогут с поиском новой работы.
Пройдите первый бесплатный урок
• разработать мессенджер, используя только JavaScript, Typenoscript, CSS и API браузера;
• познакомиться с теорией и отработать её на практике в больших проектах;
• научиться брать ответственность за решения и вкладываться в общий результат;
• самостоятельно декомпозировать задачи и распределять время;
• исследовать смежные сферы программирования, без которых невозможен фронтенд:
• информационную безопасность, прототипирование интерфейсов, командную работу, DevOps, ООП.
На всех этапах вас будут сопровождать опытные разработчики: мы не дадим просесть по учёбе и поможем выкроить время на образование. Вы будете практиковаться на реальных кейсах и положите в портфолио работающие проекты. А карьерные консультации подготовят вас к разговору о повышении или помогут с поиском новой работы.
Пройдите первый бесплатный урок
❤4