Anonymous Quiz
4%
numbers.sort();
28%
numbers.sort((a, b) => a > b);
56%
numbers.sort((a, b) => b - a);
13%
numbers.reverse();
❤2
#собес
🤔 Перечислите основные методы массивов.
Основные методы массивов в JavaScript включают push() , pop() , shift(), unshift(), splice(), slice(), forEach() , map(), filter(), reduce(), find(), includes () u join() . Эти методы позволяют добавлять, удалять, изменять, перебирать и проверять элементы массива, что делает их незаменимыми для работы с коллекциями данных.
👉 Новости 👉 Платформа
Основные методы массивов в JavaScript включают push() , pop() , shift(), unshift(), splice(), slice(), forEach() , map(), filter(), reduce(), find(), includes () u join() . Эти методы позволяют добавлять, удалять, изменять, перебирать и проверять элементы массива, что делает их незаменимыми для работы с коллекциями данных.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤1
#полезное
😊 Пошаговое руководство по созданию персональной блог-платформы!
🟠 Автор фокусируется на разработке бэкенда с использованием REST API, реализованных с помощью Encore.ts — фреймворка для создания масштабируемых распределенных систем. В качестве базы данных для хранения данных блога используется PostgreSQL.
Смотреть руководство
👉 Новости 👉 Платформа
Смотреть руководство
Please open Telegram to view this post
VIEW IN TELEGRAM
🍓3❤2🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Базовые требования на JS-разраба 😅
Please open Telegram to view this post
VIEW IN TELEGRAM
🍓4❤2
Anonymous Quiz
44%
Navigator.geolocation
19%
Window.location
21%
Document.getCoordinates()
15%
HTML5 Location API
❤3
#собес
🤔 Что такое мутирующие и не мутирующие методы?
Мутирующие методы изменяют оригинальный массив или объект, тогда как не мутирующие методы возвращают новый массив или объект без изменения исходного. Например, методы 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
67%
WebSocket
4%
Server-Sent Events
14%
AJAX
14%
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