#собес
🤔 Что такое мутирующие и не мутирующие методы?
Мутирующие методы изменяют оригинальный массив или объект, тогда как не мутирующие методы возвращают новый массив или объект без изменения исходного. Например, методы push ( ) и рор() являются мутирующими, потому что они изменяют исходный массив. В то время как map() и filter() являются не мутирующими, так как они создают новый массив на основе исходного.
👉 Новости 👉 Платформа
Мутирующие методы изменяют оригинальный массив или объект, тогда как не мутирующие методы возвращают новый массив или объект без изменения исходного. Например, методы push ( ) и рор() являются мутирующими, потому что они изменяют исходный массив. В то время как map() и filter() являются не мутирующими, так как они создают новый массив на основе исходного.
Please open Telegram to view this post
VIEW IN TELEGRAM
#статьи
😊 HTTP-запросы: структура, методы, строка статуса и коды состояния
Статья объясняет базовые элементы HTTP: структуру запросов, методы для выполнения операций, строку статуса и коды состояния, помогающие понять результат взаимодействия с сервером.
Читать статью
👉 Новости 👉 Платформа
Статья объясняет базовые элементы HTTP: структуру запросов, методы для выполнения операций, строку статуса и коды состояния, помогающие понять результат взаимодействия с сервером.
Читать статью
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
HTTP-запросы: структура, методы, строка статуса и коды состояния
HTTP-запросы: структура, методы, строка статуса и коды состояния Цель: написать небольшую статью, максимально понятным языком, которая дает представление о протоколе http и объясняет структуру http...
❤2🔥1
#ЛитКод
Задача: 636. Exclusive Time of Functions
На однопоточном процессоре выполняется программа, содержащая n функций. Каждая функция имеет уникальный ID от 0 до n-1. Вызовы функций хранятся в стеке вызовов: когда начинается вызов функции, ее ID заталкивается в стек, а когда вызов функции заканчивается, ее ID выгружается из стека. Функция, чей идентификатор находится в верхней части стека, является текущей выполняемой функцией. Каждый раз, когда функция запускается или завершается, мы пишем лог с идентификатором, началом или завершением и меткой времени. Вам предоставляется список logs, где logs[i] представляет собой i-е сообщение лога, отформатированное как строка "{function_id}:{"start" | "end"}:{timestamp}". Например, "0:start:3" означает, что вызов функции с идентификатором 0 начался в начале временной метки 3, а "1:end:2" означает, что вызов функции с идентификатором 1 завершился в конце временной метки 2. Обратите внимание, что функция может быть вызвана несколько раз, возможно, рекурсивно. Исключительное время функции - это сумма времен выполнения всех вызовов функции в программе. Например, если функция вызывается дважды, причем один вызов выполняется за 2 единицы времени, а другой - за 1 единицу, то эксклюзивное время равно 2 + 1 = 3. Верните эксклюзивное время каждой функции в массив, где значение по i-му индексу представляет собой эксклюзивное время для функции с идентификатором i.
Пример:
👨💻 Алгоритм:
1⃣ Парсинг логов
Пройдитесь по каждому логу, чтобы распознать действие (start или end) и идентификатор функции вместе с временной меткой.
2⃣ Использование стека
Используйте стек для отслеживания текущих вызовов функций. Если лог содержит start, добавьте функцию в стек и начните отсчет времени. Если лог содержит end, снимите функцию со стека и обновите эксклюзивное время.
3⃣ Обновление времени выполнения
Когда функция завершает выполнение, обновите ее эксклюзивное время и также учитывайте время выполнения вложенных функций.
😎 Решение:
👉 Новости 👉 Платформа
Задача: 636. Exclusive Time of Functions
На однопоточном процессоре выполняется программа, содержащая n функций. Каждая функция имеет уникальный ID от 0 до n-1. Вызовы функций хранятся в стеке вызовов: когда начинается вызов функции, ее ID заталкивается в стек, а когда вызов функции заканчивается, ее ID выгружается из стека. Функция, чей идентификатор находится в верхней части стека, является текущей выполняемой функцией. Каждый раз, когда функция запускается или завершается, мы пишем лог с идентификатором, началом или завершением и меткой времени. Вам предоставляется список logs, где logs[i] представляет собой i-е сообщение лога, отформатированное как строка "{function_id}:{"start" | "end"}:{timestamp}". Например, "0:start:3" означает, что вызов функции с идентификатором 0 начался в начале временной метки 3, а "1:end:2" означает, что вызов функции с идентификатором 1 завершился в конце временной метки 2. Обратите внимание, что функция может быть вызвана несколько раз, возможно, рекурсивно. Исключительное время функции - это сумма времен выполнения всех вызовов функции в программе. Например, если функция вызывается дважды, причем один вызов выполняется за 2 единицы времени, а другой - за 1 единицу, то эксклюзивное время равно 2 + 1 = 3. Верните эксклюзивное время каждой функции в массив, где значение по i-му индексу представляет собой эксклюзивное время для функции с идентификатором i.
Пример:
Input: n = 2, logs = ["0:start:0","1:start:2","1:end:5","0:end:6"]
Output: [3,4]
Пройдитесь по каждому логу, чтобы распознать действие (start или end) и идентификатор функции вместе с временной меткой.
Используйте стек для отслеживания текущих вызовов функций. Если лог содержит start, добавьте функцию в стек и начните отсчет времени. Если лог содержит end, снимите функцию со стека и обновите эксклюзивное время.
Когда функция завершает выполнение, обновите ее эксклюзивное время и также учитывайте время выполнения вложенных функций.
var exclusiveTime = function(n, logs) {
let stack = [];
let times = new Array(n).fill(0);
let prevTime = 0;
for (let log of logs) {
let [fid, type, time] = log.split(':');
fid = parseInt(fid);
time = parseInt(time);
if (type === 'start') {
if (stack.length) {
times[stack[stack.length - 1]] += time - prevTime;
}
stack.push(fid);
prevTime = time;
} else {
times[stack.pop()] += time - prevTime + 1;
prevTime = time + 1;
}
}
return times;
};Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1
Anonymous Quiz
57%
new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(number);
13%
new Intl.NumberFormat('USD', { style: 'currency' }).format(number);
23%
number.toLocaleString('USD', { style: 'currency' });
7%
number.format('en-US', { style: 'currency', currency: 'USD' });
#собес
🤔 Что такое деструктуризация?
Деструктуризация - это удобный способ извлечения значений из массивов и объектов и
присваивания их переменным. С помощью деструктуризации можно быстро и легко работать с
данными, извлекая необходимые значения в несколько строк кода. Это делает код более читаемым и
упрощает работу с комплексными структурами данных.
👉 Новости 👉 Платформа
Деструктуризация - это удобный способ извлечения значений из массивов и объектов и
присваивания их переменным. С помощью деструктуризации можно быстро и легко работать с
данными, извлекая необходимые значения в несколько строк кода. Это делает код более читаемым и
упрощает работу с комплексными структурами данных.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍2👎1👌1
#полезное
🤓 Roadmap для веб-разработчиков
Один из самых красивых роадмэпов, который я когда-либо видел, создал разработчик из Дании.
🟠 Он составил интерактивную дорожную карту для веб-разработчиков.
🟠 К каждому пункту прилагаются ссылки на ресурсы, где можно изучить или подтянуть соответствующую тему.
Это отличный способ организовать обучение и следить за своим прогрессом в веб-разработке.
Роадмэп тут
👉 Новости 👉 Платформа
Один из самых красивых роадмэпов, который я когда-либо видел, создал разработчик из Дании.
Это отличный способ организовать обучение и следить за своим прогрессом в веб-разработке.
Роадмэп тут
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Anonymous Quiz
66%
WebSocket
4%
Server-Sent Events
14%
AJAX
16%
Fetch API
#вакансии
👨💻 React I Senior
Локация: Удалённо
Компания: Top Selection
ЗП: до 340 000 р. gross
Занятость: Полная
Описание проекта: Мессенджер для коммуникации (b2b/ b2с).
Оформление: ИП
Срок проекта: 6+ месяцев
🚩 Требования
🔵 Опыт работы с JS 5+ лет, опыт и ReactJS 3+ лет;
🔵 Опыт с MobX;
🔵 Выше среднего навыки Html + CSS, (верстки не много, но она сложнее обычного).
Будет плюсом
🔵 Опыт работы с Electron API.
💬 Резюме отправлять: @Elena_Stegnina
👉 Новости 👉 Платформа
Локация: Удалённо
Компания: Top Selection
ЗП: до 340 000 р. gross
Занятость: Полная
Описание проекта: Мессенджер для коммуникации (b2b/ b2с).
Оформление: ИП
Срок проекта: 6+ месяцев
Будет плюсом
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#собес
🤔 Что такое rest оператор?
Rest оператор (
функции. Он позволяет передавать переменное количество аргументов и легко работать с ними, не заботясь о
том, сколько аргументов будет передано. Это особенно удобно, когда необходимо обрабатывать множество
значений.
👉 Новости 👉 Платформа
Rest оператор (
... ) используется в JavaScript для сбора оставшихся аргументов в массив при определениифункции. Он позволяет передавать переменное количество аргументов и легко работать с ними, не заботясь о
том, сколько аргументов будет передано. Это особенно удобно, когда необходимо обрабатывать множество
значений.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#видео
🥄 Jest+Enzyme: Тестирование событий клика
Продолжаем делиться циклом видео, где автор рассказывает про тестирование с помощью Jest и Enzyme. В этот раз речь идет про тестирование пропсов.
📱 Смотреть видео
👉 Новости 👉 Платформа
Продолжаем делиться циклом видео, где автор рассказывает про тестирование с помощью Jest и Enzyme. В этот раз речь идет про тестирование пропсов.
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Jest + Enzyme #7 Тестирование событий клика (Testing Click Events)
#YauhenK #webDev #Jest #Enzyme #testing
Всех приветствую в курсе «Jest + Enzyme».
В данном видеокурсе мы с вами рассмотрим тестирование React-приложения и React-компонентов с помощью Jest и Enzyme. Разберём мы данную тему на примере написания Unit тестов.…
Всех приветствую в курсе «Jest + Enzyme».
В данном видеокурсе мы с вами рассмотрим тестирование React-приложения и React-компонентов с помощью Jest и Enzyme. Разберём мы данную тему на примере написания Unit тестов.…
❤1
#статьи
😊 Создаем Hamster Kombat почти с нуля. Практика по Vue 3 и Telegram Mini Apps
В статье рассказывается, как создать Telegram-тапалку с нуля, используя современный стек технологий. Вы освоите Serverless-подход, разработку на Node.js, Vue, Supabase и деплой проектов в облаке.
Читать статью
👉 Новости 👉 Платформа
В статье рассказывается, как создать Telegram-тапалку с нуля, используя современный стек технологий. Вы освоите Serverless-подход, разработку на Node.js, Vue, Supabase и деплой проектов в облаке.
Читать статью
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Создаем Hamster Kombat почти с нуля. Практика по Vue 3 и Telegram Mini Apps
Привет, Хабр! В этой статье-инструкции вы узнаете, как с нуля сделать свою собственную Telegram-тапалку на современном стеке. Важный дисклеймер: тапалка, кликер и прочее — это всего лишь форма. Цель...
#ЛитКод
Задача: 639. Decode Ways II
Сообщение, содержащее буквы от A-Z, может быть закодировано в цифры с помощью следующего отображения: 'A' -> "1" 'B' -> "2" ... 'Z' -> "26" Чтобы декодировать закодированное сообщение, все цифры должны быть сгруппированы, а затем снова преобразованы в буквы с помощью обратного отображения (может быть несколько способов). Например, "11106" может быть преобразовано в: "AAJF" с группировкой (1 1 10 6) "KJF" с группировкой (11 10 6) Обратите внимание, что группировка (1 11 06) недействительна, поскольку "06" не может быть преобразовано в "F", так как "6" отличается от "06". В дополнение к вышеуказанным преобразованиям кодированное сообщение может содержать символ "*", который может представлять любую цифру от "1" до "9" ("0" исключается). Например, кодированное сообщение "1*" может представлять любое из кодированных сообщений "11", "12", "13", "14", "15", "16", "17", "18" или "19". Декодирование "1*" эквивалентно декодированию любого из кодированных сообщений, которые оно может представлять. Если задана строка s, состоящая из цифр и символов '*', верните количество способов ее декодирования. Поскольку ответ может быть очень большим, верните его по модулю 109 + 7.
Пример:
👨💻 Алгоритм:
1⃣ Инициализация
Создайте массив dp, где dp[i] представляет количество способов декодирования подстроки s[0:i]. Установите начальные значения dp[0] = 1 (пустая строка имеет один способ декодирования).
2⃣ Обход строки
Используйте цикл для обхода строки и вычисления количества способов декодирования для каждого символа, включая обработку символа '*'.
3⃣ Модульное вычисление
Поскольку количество способов декодирования может быть большим, вычисляйте результаты по модулю 10^9 + 7.
😎 Решение:
👉 Новости 👉 Платформа
Задача: 639. Decode Ways II
Сообщение, содержащее буквы от A-Z, может быть закодировано в цифры с помощью следующего отображения: 'A' -> "1" 'B' -> "2" ... 'Z' -> "26" Чтобы декодировать закодированное сообщение, все цифры должны быть сгруппированы, а затем снова преобразованы в буквы с помощью обратного отображения (может быть несколько способов). Например, "11106" может быть преобразовано в: "AAJF" с группировкой (1 1 10 6) "KJF" с группировкой (11 10 6) Обратите внимание, что группировка (1 11 06) недействительна, поскольку "06" не может быть преобразовано в "F", так как "6" отличается от "06". В дополнение к вышеуказанным преобразованиям кодированное сообщение может содержать символ "*", который может представлять любую цифру от "1" до "9" ("0" исключается). Например, кодированное сообщение "1*" может представлять любое из кодированных сообщений "11", "12", "13", "14", "15", "16", "17", "18" или "19". Декодирование "1*" эквивалентно декодированию любого из кодированных сообщений, которые оно может представлять. Если задана строка s, состоящая из цифр и символов '*', верните количество способов ее декодирования. Поскольку ответ может быть очень большим, верните его по модулю 109 + 7.
Пример:
Input: s = "*"
Output: 9
Создайте массив dp, где dp[i] представляет количество способов декодирования подстроки s[0:i]. Установите начальные значения dp[0] = 1 (пустая строка имеет один способ декодирования).
Используйте цикл для обхода строки и вычисления количества способов декодирования для каждого символа, включая обработку символа '*'.
Поскольку количество способов декодирования может быть большим, вычисляйте результаты по модулю 10^9 + 7.
var numDecodings = function(s) {
const MOD = 1e9 + 7;
const n = s.length;
const dp = new Array(n + 1).fill(0);
dp[0] = 1;
for (let i = 1; i <= n; i++) {
if (s[i - 1] === '*') {
dp[i] = 9 * dp[i - 1];
} else if (s[i - 1] !== '0') {
dp[i] = dp[i - 1];
}
if (i > 1) {
if (s[i - 2] === '*') {
if (s[i - 1] === '*') {
dp[i] += 15 * dp[i - 2];
} else if ('0' <= s[i - 1] && s[i - 1] <= '6') {
dp[i] += 2 * dp[i - 2];
} else {
dp[i] += dp[i - 2];
}
} else if (s[i - 2] === '1') {
if (s[i - 1] === '*') {
dp[i] += 9 * dp[i - 2];
} else {
dp[i] += dp[i - 2];
}
} else if (s[i - 2] === '2') {
if (s[i - 1] === '*') {
dp[i] += 6 * dp[i - 2];
} else if ('0' <= s[i - 1] && s[i - 1] <= '6') {
dp[i] += dp[i - 2];
}
}
}
dp[i] %= MOD;
}
return dp[n];
};Please open Telegram to view this post
VIEW IN TELEGRAM
😨4
#собес
🤔 Какие преимущества предоставляет оператор spread по сравнению с альтернативными подходами, такими как метод concat() для массивов или Object.assign() для объектов?
Оператор
👉 Новости 👉 Платформа
Оператор
spread(...) позволяет легко копировать и объединять массивы и обьекты с помощью более лаконичного и читаемого синтаксиса. В отличие от метода concat( ) , который требует явного указания массива для объединения, и Object. assign() , который может затруднить копирование объектов с вложенными структурами, оператор spread делает эти операции интуитивно понятными и менее подверженными ошибкам. Это упрощает написание кода и повышает его читаемость.Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
#статьи
👍 Как за 10 минут создать тестировщик нагрузки для API на Node.js
Почему разработка собственного инструмента для нагрузки на API иногда оказывается лучшим выбором? В статье обсуждается реальный кейс: задачи тестирования производительности, ограничения Postman и сложность JMeter. Узнайте, как и зачем был создан простой и эффективный API-лоадер на Node.js.
Читать статью
👉 Новости 👉 Платформа
Почему разработка собственного инструмента для нагрузки на API иногда оказывается лучшим выбором? В статье обсуждается реальный кейс: задачи тестирования производительности, ограничения Postman и сложность JMeter. Узнайте, как и зачем был создан простой и эффективный API-лоадер на Node.js.
Читать статью
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Как за 10 минут создать тестировщик нагрузки для API на Node.js
Вступительное слово Немного объясню, зачем я вообще написал код для нагрузки на API и не воспользовался готовыми инструментами. В своей работе я порой сталкиваюсь с задачами, которые, хоть и связаны с...
❤1
#статьи
🤓 Важность HTTP-протокола для веб-разработчиков
Статья по ссылке ниже охватывает ключевые аспекты, такие как методы HTTP (GET, POST, PUT, DELETE), заголовки, аутентификацию и цикл запроса/ответа. Также приводятся практические примеры и лучшие практики для создания безопасных, масштабируемых и производительных API.
Чикать статью
👉 Новости 👉 Платформа
Статья по ссылке ниже охватывает ключевые аспекты, такие как методы HTTP (GET, POST, PUT, DELETE), заголовки, аутентификацию и цикл запроса/ответа. Также приводятся практические примеры и лучшие практики для создания безопасных, масштабируемых и производительных API.
Чикать статью
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3😁2
#собес
🤔 Что такое рекурсия, когда применяется? Пример рекурсивной структуры?
Рекурсия - это метод, при котором функция вызывает саму себя для решения задачи. Она часто используется для решения задач, которые можно разбить на подзадачи меньшего размера, таких как вычисление факториала, обход деревьев или работа с вложенными структурами. Чтобы рекурсия работала, необходимо иметь условие выхода, которое остановит бесконечный цикл.
👉 Новости 👉 Платформа
Рекурсия - это метод, при котором функция вызывает саму себя для решения задачи. Она часто используется для решения задач, которые можно разбить на подзадачи меньшего размера, таких как вычисление факториала, обход деревьев или работа с вложенными структурами. Чтобы рекурсия работала, необходимо иметь условие выхода, которое остановит бесконечный цикл.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1