Какая основная функция Event Loop в JavaScript?
Anonymous Quiz
16%
Выполнение синхронного кода.
9%
Управление DOM элементами.
73%
Обработка и выполнение асинхронных операций.
2%
борка мусора.
👎17👍8🤔4
Backspaces in string
Предположим, что символ "
Примеры
👉 @seniorFront
Предположим, что символ "
#" - это как обратный пробел в строке. Это означает, что строка "a#bc#d" на самом деле является "bd" Ваша задача - обработать строку с символами "#". Примеры
"abc#d##c" ==> "ac"
"abc##d######" ==> ""
"#######" ==> ""
"" ==> ""
👉 @seniorFront
👍4
Как я разрабатываю конвертер в 2024 (Frontend часть)
Меня зовут Руслан и я fullstack разработчик, я работаю над заказами и разрабатываю свои digital продукты. На данный момент я разрабатываю конвертер файлов, например картинок, png в webp, jpg в png и так далее. Итак, я решил поделиться этапами своей разработки, рассказать о своем опыте и показать, как шаг за шагом создаются собственные продукты. Именно в данной статье я буду писать только про frontend часть, так как, к разработке бэкенда еще не приступил.
👉 @seniorFront
Меня зовут Руслан и я fullstack разработчик, я работаю над заказами и разрабатываю свои digital продукты. На данный момент я разрабатываю конвертер файлов, например картинок, png в webp, jpg в png и так далее. Итак, я решил поделиться этапами своей разработки, рассказать о своем опыте и показать, как шаг за шагом создаются собственные продукты. Именно в данной статье я буду писать только про frontend часть, так как, к разработке бэкенда еще не приступил.
👉 @seniorFront
👍4👎2
Как взаимодействуют frontend и backend ?
Веб-разработка состоит из двух основных частей: фронтенда и бэкенда. Эти две части взаимодействуют между собой для создания полнофункциональных веб-приложений, предоставляя пользователям интерфейсы и обеспечивая работу бизнес-логики и управления данными на сервере. Рассмотрим, как они взаимодействуют.
Архитектура взаимодействия
Фронтенд: Это часть веб-приложения, с которой взаимодействует пользователь. Она включает HTML, CSS и JavaScript, а также фреймворки и библиотеки, такие как React, Vue.js и Angular. Фронтенд отвечает за отображение данных, обработку событий и обеспечение интерактивности.
Бэкенд: Это серверная часть веб-приложения, которая управляет бизнес-логикой, обработкой данных и взаимодействием с базой данных. Бэкенд может быть написан на разных языках программирования, таких как C#, Python, Ruby, Java, PHP и других. Он включает веб-серверы, базы данных и API.
HTTP-запросы и ответы
Фронтенд и бэкенд взаимодействуют через HTTP-запросы и ответы. Фронтенд отправляет запросы на сервер (бэкенд), который обрабатывает их и отправляет ответы обратно на фронтенд.
Запрос данных:
- Фронтенд отправляет HTTP GET-запрос на сервер, чтобы получить данные.
- Бэкенд получает запрос, извлекает данные из базы данных и отправляет их обратно в виде JSON-ответа.
Отправка данных:
- Фронтенд отправляет HTTP POST-запрос на сервер с данными для создания нового ресурса.
- Бэкенд получает запрос, обрабатывает данные и сохраняет их в базе данных, затем отправляет ответ о статусе операции.
WebSocket
Для взаимодействия в реальном времени между фронтендом и бэкендом используется WebSocket. Он позволяет устанавливать постоянное двустороннее соединение между клиентом и сервером, что полезно для приложений с обновлениями в реальном времени, таких как чаты или онлайн-игры.
RESTful API и GraphQL
RESTful API: Это стиль архитектуры API, который использует стандартные HTTP методы (GET, POST, PUT, DELETE) для взаимодействия с ресурсами. Каждый ресурс идентифицируется уникальным URL, а данные передаются в формате JSON или XML.
GraphQL: Это язык запросов для API, который позволяет клиенту запрашивать именно те данные, которые ему нужны. В отличие от REST, где каждый ресурс имеет свой URL, в GraphQL есть единая точка доступа (endpoint), и запросы могут быть более гибкими и оптимизированными.
👉 @seniorFront
Веб-разработка состоит из двух основных частей: фронтенда и бэкенда. Эти две части взаимодействуют между собой для создания полнофункциональных веб-приложений, предоставляя пользователям интерфейсы и обеспечивая работу бизнес-логики и управления данными на сервере. Рассмотрим, как они взаимодействуют.
Архитектура взаимодействия
Фронтенд: Это часть веб-приложения, с которой взаимодействует пользователь. Она включает HTML, CSS и JavaScript, а также фреймворки и библиотеки, такие как React, Vue.js и Angular. Фронтенд отвечает за отображение данных, обработку событий и обеспечение интерактивности.
Бэкенд: Это серверная часть веб-приложения, которая управляет бизнес-логикой, обработкой данных и взаимодействием с базой данных. Бэкенд может быть написан на разных языках программирования, таких как C#, Python, Ruby, Java, PHP и других. Он включает веб-серверы, базы данных и API.
HTTP-запросы и ответы
Фронтенд и бэкенд взаимодействуют через HTTP-запросы и ответы. Фронтенд отправляет запросы на сервер (бэкенд), который обрабатывает их и отправляет ответы обратно на фронтенд.
Запрос данных:
- Фронтенд отправляет HTTP GET-запрос на сервер, чтобы получить данные.
- Бэкенд получает запрос, извлекает данные из базы данных и отправляет их обратно в виде JSON-ответа.
// Фронтенд (JavaScript с использованием Fetch API)
fetch('https://api.example.com/data')
.then(response => response.json())
.then(data => {
console.log(data); // Обработка данных на фронтенде
})
.catch(error => {
console.error('Error:', error);
});
Отправка данных:
- Фронтенд отправляет HTTP POST-запрос на сервер с данными для создания нового ресурса.
- Бэкенд получает запрос, обрабатывает данные и сохраняет их в базе данных, затем отправляет ответ о статусе операции.
// Фронтенд (JavaScript с использованием Fetch API)
fetch('https://api.example.com/data', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ key: 'value' })
})
.then(response => response.json())
.then(data => {
console.log(data); // Обработка ответа на фронтенде
})
.catch(error => {
console.error('Error:', error);
});
WebSocket
Для взаимодействия в реальном времени между фронтендом и бэкендом используется WebSocket. Он позволяет устанавливать постоянное двустороннее соединение между клиентом и сервером, что полезно для приложений с обновлениями в реальном времени, таких как чаты или онлайн-игры.
// Фронтенд (JavaScript с использованием WebSocket API)
const socket = new WebSocket('ws://example.com/socket');
socket.onopen = () => {
console.log('WebSocket is open now.');
socket.send(JSON.stringify({ message: 'Hello Server!' }));
};
socket.onmessage = (event) => {
console.log('Received:', event.data);
};
socket.onclose = () => {
console.log('WebSocket is closed now.');
};
RESTful API и GraphQL
RESTful API: Это стиль архитектуры API, который использует стандартные HTTP методы (GET, POST, PUT, DELETE) для взаимодействия с ресурсами. Каждый ресурс идентифицируется уникальным URL, а данные передаются в формате JSON или XML.
GraphQL: Это язык запросов для API, который позволяет клиенту запрашивать именно те данные, которые ему нужны. В отличие от REST, где каждый ресурс имеет свой URL, в GraphQL есть единая точка доступа (endpoint), и запросы могут быть более гибкими и оптимизированными.
👉 @seniorFront
👍8🔥5❤2
Как перестать отвлекаться по мелочам, избавиться от прокрастинации и стать продуктивнее как минимум в 2 раза?
Если ты не можешь долго сконцентрироваться на одной задаче и часто отвлекаешься на что-то другое - то эта статья специально для тебя!
Избавьтесь от перфекционизма. Он лишь замедляет работу. Не нужно быть идеалистом и стараться угодить всем подряд. Стремитесь оптимально использовать свои возможности и достигать хорошего результата. Этого достаточно, чтобы поддерживать активность и ни на что не отвлекаться.
Не ждите подходящего момента. В его ожидании можно провести вечность, но так и не дождаться. Помните, что самый лучший момент – это сейчас. Вы сами создаете нужное время для серьезных действий, а мелкие дела всегда можно успеть сделать в любое другое время.
Планируйте. Непонимание того, что нужно делать, часто приводит к тому, что человек вообще ничего не делает. Избежать этого очень просто – составляйте списки дел на день, задач – на месяц, целей – на год вперед. Вы удивитесь тому, насколько быстрее вы станете действовать и достигать результатов.
Учитесь отказывать. Окружающие люди и ненужные дела всегда будут вторгаться в вашу жизнь. И если вы будете каждый раз идти у них на поводу, вы рискуете всю жизнь топтаться на одном месте. Относитесь к своему времени и силам как к ценности – тогда и желания отвлекаться и соглашаться на все просто не будет.
Приоритизируйте. Среди массива всех дел важно уметь выделять то, что достойно внимания в первую очередь. Учитесь определять ключевые шаги для достижения своих целей. Удивительно, но все второстепенные вещи будут выполняться подспудно, и вам даже не придется выкраивать для них отдельное время.
Фиксируйте прогресс. Во-первых, вычеркивайте из списка дел все, что сделано, а во‑вторых, отмечайте даже самые незначительные продвижения на своем пути. Это поможет вам постоянно оставаться в тонусе и сохранять мотивацию для дальнейших действий, ведь вы будете наглядно видеть, что есть реальный результат.
👉 @seniorFront
Если ты не можешь долго сконцентрироваться на одной задаче и часто отвлекаешься на что-то другое - то эта статья специально для тебя!
Избавьтесь от перфекционизма. Он лишь замедляет работу. Не нужно быть идеалистом и стараться угодить всем подряд. Стремитесь оптимально использовать свои возможности и достигать хорошего результата. Этого достаточно, чтобы поддерживать активность и ни на что не отвлекаться.
Не ждите подходящего момента. В его ожидании можно провести вечность, но так и не дождаться. Помните, что самый лучший момент – это сейчас. Вы сами создаете нужное время для серьезных действий, а мелкие дела всегда можно успеть сделать в любое другое время.
Планируйте. Непонимание того, что нужно делать, часто приводит к тому, что человек вообще ничего не делает. Избежать этого очень просто – составляйте списки дел на день, задач – на месяц, целей – на год вперед. Вы удивитесь тому, насколько быстрее вы станете действовать и достигать результатов.
Учитесь отказывать. Окружающие люди и ненужные дела всегда будут вторгаться в вашу жизнь. И если вы будете каждый раз идти у них на поводу, вы рискуете всю жизнь топтаться на одном месте. Относитесь к своему времени и силам как к ценности – тогда и желания отвлекаться и соглашаться на все просто не будет.
Приоритизируйте. Среди массива всех дел важно уметь выделять то, что достойно внимания в первую очередь. Учитесь определять ключевые шаги для достижения своих целей. Удивительно, но все второстепенные вещи будут выполняться подспудно, и вам даже не придется выкраивать для них отдельное время.
Фиксируйте прогресс. Во-первых, вычеркивайте из списка дел все, что сделано, а во‑вторых, отмечайте даже самые незначительные продвижения на своем пути. Это поможет вам постоянно оставаться в тонусе и сохранять мотивацию для дальнейших действий, ведь вы будете наглядно видеть, что есть реальный результат.
👉 @seniorFront
❤9👍1
Как превратить свой пет проект из хобби в карьеру
В этой статье я хочу рассказать почему и как ваши pet-проекты могут стать ключом к развитию вашей карьеры и почему нельзя недооценивать важность pet-проектов.
👉 @seniorFront
В этой статье я хочу рассказать почему и как ваши pet-проекты могут стать ключом к развитию вашей карьеры и почему нельзя недооценивать важность pet-проектов.
👉 @seniorFront
👍2👎1
Media is too big
VIEW IN TELEGRAM
Animated Text Background
В этом видео создается текст, следующий за курсором. Буквы генерируются в JS, а затем анимируются в CSS.
👉 @seniorFront
В этом видео создается текст, следующий за курсором. Буквы генерируются в JS, а затем анимируются в CSS.
👉 @seniorFront
Какой параметр свойства animation используется для создания бесконечно повторяющейся анимации?
Anonymous Quiz
23%
repeat
21%
loop
54%
infinite
2%
orever
👍4👎1
Media is too big
VIEW IN TELEGRAM
Stacked Cards
В этом видео создается стопка карточек, анимируемая при наведении на чистом CSS.
👉 @seniorFront
В этом видео создается стопка карточек, анимируемая при наведении на чистом CSS.
👉 @seniorFront
👍5
This media is not supported in your browser
VIEW IN TELEGRAM
Simple switch with led indicator
Переключатель - это input type="checkbox", стилизованный в CSS.
👉 @seniorFront
Переключатель - это input type="checkbox", стилизованный в CSS.
👉 @seniorFront
👍8❤1
count '9's from 1 to n
Я хочу сосчитать от 1 до n. Сколько раз встретится цифра "9"?
9, 19, 91... будут использовать по одной "9",
99, 199, 919... будут использовать по две "9"... и т.д.
Примечание: n всегда будет целым положительным числом.
Пример:
👉 @seniorFront
Я хочу сосчитать от 1 до n. Сколько раз встретится цифра "9"?
9, 19, 91... будут использовать по одной "9",
99, 199, 919... будут использовать по две "9"... и т.д.
Примечание: n всегда будет целым положительным числом.
Пример:
8 -> 0
9 -> 1
10 -> 1
98 -> 18
100 -> 20
👉 @seniorFront
👍4👎2
Type VS Interface: разница есть, но не всегда
Эта статья — попытка дать максимально объективный взгляд на выбор между интерфейсами и типами, рассматривая их с точки зрения практики, возможностей и ограничений TypeScript.
👉 @seniorFront
Эта статья — попытка дать максимально объективный взгляд на выбор между интерфейсами и типами, рассматривая их с точки зрения практики, возможностей и ограничений TypeScript.
👉 @seniorFront
👍6
В чём разница между классической функцией и стрелочной?
Классические функции (объявленные через ключевое слово
Синтаксис
Классическая функция:
Стрелочная функция:
Предлагают более краткий синтаксис для написания функций, особенно если функция состоит из одного выражения.
Контекст this
В классических функциях контекст определяется тем, как функция была вызвана. В стрелочных функциях контекст наследуется из окружающего контекста (лексический контекст this), где функция была объявлена.
Пример с классической функцией:
Пример со стрелочной функцией:
Конструктор
Классические функции могут использоваться с помощью ключевого слова
Пример с классической функцией:
Попытка использовать стрелочную функцию как конструктор:
Аргументы
В классических функциях можно использовать объект
👉 @seniorFront
Классические функции (объявленные через ключевое слово
function) и стрелочные функции (введённые в ES6 через => синтаксис) являются двумя способами объявления функций, но между ними есть несколько важных различий:Синтаксис
Классическая функция:
function add(a, b) {
return a + b;
}
Стрелочная функция:
const add = (a, b) => a + b;
Предлагают более краткий синтаксис для написания функций, особенно если функция состоит из одного выражения.
Контекст this
В классических функциях контекст определяется тем, как функция была вызвана. В стрелочных функциях контекст наследуется из окружающего контекста (лексический контекст this), где функция была объявлена.
Пример с классической функцией:
const obj = {
id: 42,
counter: function() {
setTimeout(function() {
console.log(this.id); // this ссылается на глобальный объект или undefined в строгом режиме, а не на obj
}, 1000);
}
};
Пример со стрелочной функцией:
const obj = {
id: 42,
counter: function() {
setTimeout(() => {
console.log(this.id); // this корректно ссылается на obj, так как стрелочная функция наследует this из окружения
}, 1000);
}
};
Конструктор
Классические функции могут использоваться с помощью ключевого слова
new. Стрелочные функции не могут быть использованы как конструкторы, и попытка это сделать приведет к ошибке.Пример с классической функцией:
function Person(name)
{
this.name = name;
}
const person = new Person("Alice");
Попытка использовать стрелочную функцию как конструктор:
const Person = (name) => {
this.name = name;
};
// const person = new Person("Alice"); // Ошибка: Person не является конструктором
Аргументы
В классических функциях можно использовать объект
arguments, который содержит аргументы, переданные функции. В стрелочных функциях нет объекта arguments, но можно использовать оператор расширения ... для достижения аналогичного результата.👉 @seniorFront
👍16
Канал senior-разработчика, где он на протяжении двух лет помогает специалистам из мира IT, публикуя слитые материалы и полезные практики:
Python - ( 170 уроков)
Flask - (122 уроков)
Git - (74 уроков)
OpenCV - (144 уроков)
Flask - (59 уроков)
GameDev - (137 уроков)
Pyramid - (96 уроков)
AIOgram - ( 34 уроков)
Ruff - (82 уроков)
HTTPX - (57 уроков)
Pyramid - (72 урока)
Django - (132 урока)
NumPy - (46 урока)
Pillow - (74 урока)
PyTorch - (32 урока)
Pymorphy2 - (42 урока)
Сохраняй канал, который сэкономит твое время на поиск информации
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3👎2❤1🔥1
Когда пора менять работу?
Работу следует менять тогда, когда она перестаёт вести Вас вверх и в гору, и это идёт вразрез с Вашими карьерными целями. Иными словами, если Вы хотите расти профессионально, есть простой способ оценить насколько текущее место помогает это сделать.
Этот способ, или, скорее, инструмент носит акроним AIGCC.
Чтобы его запомнить, можно использовать следующую мнемонику:
Каждая заглавная буква в акрониме означает метрику, по которой мы можем оценить нашу текущую ситуацию.
Accomplishment (достижение): описывает собственные достижения, которыми Вы гордитесь или о которых не стыдно рассказать
Impact (влияние): описывает отношение или, скорее даже, важность той работы, что была совершена; насколько она ценна
Growth / Future alignment (соответствие с собственными целями): описывает насколько полученный опыт соотносится с собственными карьерными целями и планами
Challenge (вызов): описывает наличие или отсутствие сложных задач, которые продвигают Вас вперёд
Community (сообщество): описывает Ваше отношение к коллегам, к руководству, к ценностям и целям организации
Для того, чтобы воспользоваться инструментом, достаточно взглянуть на собственный карьерный путь раз в квартал и оценить описанные выше метрики. Легко и просто это можно сделать с помощью обычной таблички.
На скриншоте ниже, моя собственная карьерная рефлексия с использованием именно этого инструмента
Набор метрик для оценки, перечень вопросов, ответы на которые помогают оценить значение метрики за последний квартал, и, общая оценка за квартал.
Значениями метрик могут быть только «Да» и «Нет». Каждая «да» — это 20% к результату квартала.
Так вот, оценив свой карьерный путь за квартал, мы получим итоговый результат за квартал. Именно, с помощью него и можно ответить на главный вопрос этой статьи — «Когда пора менять работу?». Если результат двух последних кварталов равен 40% и ниже, то это явный сигнал о том, что, возможно, стоит поискать что‑то ещё.
👉 @seniorFront
Работу следует менять тогда, когда она перестаёт вести Вас вверх и в гору, и это идёт вразрез с Вашими карьерными целями. Иными словами, если Вы хотите расти профессионально, есть простой способ оценить насколько текущее место помогает это сделать.
Этот способ, или, скорее, инструмент носит акроним AIGCC.
Чтобы его запомнить, можно использовать следующую мнемонику:
Am I Growing Complacent Currently? (дословный перевод: «Становлюсь ли Я самодовольным?», смысловой перевод: «Скатился ли я в зону комфорта?»)
Каждая заглавная буква в акрониме означает метрику, по которой мы можем оценить нашу текущую ситуацию.
Accomplishment (достижение): описывает собственные достижения, которыми Вы гордитесь или о которых не стыдно рассказать
Impact (влияние): описывает отношение или, скорее даже, важность той работы, что была совершена; насколько она ценна
Growth / Future alignment (соответствие с собственными целями): описывает насколько полученный опыт соотносится с собственными карьерными целями и планами
Challenge (вызов): описывает наличие или отсутствие сложных задач, которые продвигают Вас вперёд
Community (сообщество): описывает Ваше отношение к коллегам, к руководству, к ценностям и целям организации
Для того, чтобы воспользоваться инструментом, достаточно взглянуть на собственный карьерный путь раз в квартал и оценить описанные выше метрики. Легко и просто это можно сделать с помощью обычной таблички.
На скриншоте ниже, моя собственная карьерная рефлексия с использованием именно этого инструмента
Набор метрик для оценки, перечень вопросов, ответы на которые помогают оценить значение метрики за последний квартал, и, общая оценка за квартал.
Значениями метрик могут быть только «Да» и «Нет». Каждая «да» — это 20% к результату квартала.
Так вот, оценив свой карьерный путь за квартал, мы получим итоговый результат за квартал. Именно, с помощью него и можно ответить на главный вопрос этой статьи — «Когда пора менять работу?». Если результат двух последних кварталов равен 40% и ниже, то это явный сигнал о том, что, возможно, стоит поискать что‑то ещё.
👉 @seniorFront
👍5🔥2