18174
По всем вопросам - @workakkk @itchannels_telegram -🔥лучшие ИТ-каналы @ai_machinelearning_big_data - машинное обучение @JavaScript_testit- js тесты @pythonl - 🐍 @ArtificialIntelligencedl - AI @datascienceiot - ml 📚 РКН: № 5153160945
Responsive Social Platform UI — красивый адаптивный интерфейс социальной платформы, реализованный с помощью Alpine.js
https://codepen.io/TurkAysenur/pen/RwWKYMO
@javascriptv
🖥 Landing page with swiper - Карточки с прокруткой.
https://codepen.io/kristen17/pen/GRXgqaB
@javascriptv
💬 10 ключевых концепций JavaScript
1. Замыкания
▪️Замыкания обычно используются в JavaScript для создания частных переменных и инкапсуляции. Определяя переменные во внешней функции и возвращая внутреннюю функцию, которая обращается к этим переменным и изменяет их, можно контролировать видимость и манипуляции с данными. Это позволяет добиться сокрытия информации и избежать загрязнения глобального пространства имен.
▪️Когда outerFunction вызывается и присваивается замыканию, создается замыкание, которое сохраняет ссылку на outerVariable. В дальнейшем при вызове замыкания оно будет иметь доступ к outerVariable и может регистрировать ее значение.
▪️Замыкания часто используются в таких сценариях, как обработчики событий, обратные вызовы и поддержание состояния в функциональном программировании. Они обеспечивают создание постоянных ссылок на переменные и позволяют использовать эффективные и гибкие методы программирования в JavaScript.
2. Промисы
▪️Промис представляет собой конечный результат асинхронной операции, который может быть либо разрешенным значением, либо причиной отказа. Промис бывает в трех состояниях: ожидающий, выполненный, отклоненный.
▪️Для создания промиса используется конструктор Promise, который принимает функцию обратного вызова с двумя параметрами: resolve и reject. Внутри этого обратного вызова выполняется асинхронная задача с вызовом либо resolve(value) для выполнения промиса со значением, либо reject(reason) для отклонения его с указанием причины (обычно это объект error).
▪️Метод then() используется для обработки выполнения промиса. Он принимает функцию обратного вызова, которая получает разрешенное значение в качестве аргумента. Можно объединить несколько вызовов then() в цепочку для выполнения последовательных операций или преобразований разрешенного значения.
▪️Метод catch() используется для обработки отказа от выполнения промиса. В качестве аргумента он принимает функцию обратного вызова, которая получает причину отказа (ошибку). Обычно он используется в конце цепочки промисов для обработки ошибок, возникших во время асинхронной операции.
▪️Промисы также предоставляют дополнительные методы, такие как finally(), позволяющий указать обратный вызов, который будет вызван независимо от того, выполнен промис или отклонен, и Promise.all(), который можно использовать для ожидания выполнения нескольких промисов.
3. Прототипы и прототипное наследование
▪️Прототип — это объект, от которого другие объекты наследуют свойства и методы. При обращении к свойству или методу объекта JavaScript сначала проверяет, есть ли это свойство у самого объекта. Если нет, он просматривает цепочку прототипов в поисках прототипа объекта, затем прототипа прототипа и так далее, пока не найдет свойство или не достигнет конца цепочки.
В этой программе используются функции-конструкторы Animal и Dog.
▪️Функция-конструктор Animal принимает параметр name и присваивает его свойству name вновь создаваемого объекта с помощью this.name.
▪️Добавляем метод greet в Animal.prototype, который будет общим для всех экземпляров, созданных с помощью функции-конструктора Animal.
▪️Функция-конструктор Dog расширяет Animal с помощью Animal.call(this, name) для наследования свойств от конструктора Animal.
▪️Образуем цепочку прототипов, создав новый объект с помощью Object.create(Animal.prototype) и присвоив его Dog.prototype. Это связывает прототип экземпляров Dog с Animal.prototype, обеспечивая наследование.
▪️Добавляем в Dog.prototype метод bark, который предназначен для экземпляров, созданных с помощью конструктора Dog.
▪️Создаем экземпляры Animal и Dog с помощью ключевого слова new. Экземпляр animal использует метод greet, унаследованный от Animal.prototype, а экземпляр dog использует как метод greet, унаследованный от Animal.prototype, так и метод bark, определенный в Dog.prototype.
📌Читать
@javascriptv
Glassmorphing card - Карточка в стиле стекломорфизма с плавным 3D-наклоном при наведении, созданная с помощью библиотеки Tilt.js.
https://codepen.io/pieter-biesemans/pen/QWKmXEE
@javascriptv
⭐️ Обзор 10 приемов JavaScript для эффективного программирования
1. Объект Intl
Объект Intl позволяет форматировать числа, даты и валюту с учетом разных локалей и параметров.
Он предоставляется с множеством свойств, которые обеспечивают быстрое и безупречное форматирование данных.
Рассмотрим пример форматирования валюты: let num = 100;₹
let RupeeFormatter = new Intl.NumberFormat("en-IN",
{style: "currency", currency: "INR"})
let RupeeFormatted = RupeeFormatter.format(num);
console.log(RupeeFormatted)
// 100
let USDFormatter = new Intl.NumberFormat("en-IN",
{style: "currency", currency: "USD"})
let USDFormatted = USDFormatter.format(num)
console.log(USDFormatted)
// $100
2. Оператор ??
Оператор ?? присваивает переменной значение по умолчанию, если она null или undefined.
Используйте данный оператор, если сомневаетесь в существовании у объекта того или иного свойства. Если свойство отсутствует, переменной присваивается значение по умолчанию.
Пример:let user = {}
let name = user.name ?? "Anonymous"
console.log(name)
// "Anonymous"
3. Object.fromEntries()
Метод Object.fromEntries() преобразует массив пар “ключ-значение” в объект.
Возьмем следующий массив и создадим из него объект, как показано ниже: let arr = [["name", "Alice"], ["age", 25]]
let obj = Object.fromEntries(arr);
console.log(obj)
// {name: "Alice", age: 25}
4. Array.flat()
Метод Array.flat() преобразует вложенный массив в один единственный.
Поскольку вложенными массивами сложно управлять, то данный метод помогает уменьшать их вложенность.
Пример:let arr = [1, [2, [3, [4]]]];
let flat = arr.flat(Infinity)
console.log(flat)
// [1, 2, 3, 4]
5. Оператор ?
Оператор ?. обеспечивает доступ к свойствам объекта без проверки, является ли он null или undefined.
Используйте его, когда не знаете, существует ли объект или нет.
Пример:let user = null
let age = user?.age
console.log(age)
// undefined
6. Array.reduce()
Метод Array.reduce() применяет функцию к каждому элементу массива и суммирует результат в одно значение.
Пример сложения всех чисел массива: let arr = [1, 2, 3, 4, 5]
let sum = arr.reduce((a, b) => a + b)
console.log(sum)
// 15
7. String.repeat()
Метод String.repeat() создает новую строку, повторяя заданную строку указанное количество раз.
Пример:let str = "js".repeat(10)
console.log(str)
// 'jsjsjsjsjsjsjsjsjsjs'
8. Array.from()
Метод Array.from() создает новый массив из массивоподобного или итерируемого объекта.
Пример:let str = "Hello"
let arr = Array.from(str)
console.log(arr)
// ["H", "e", "l", "l", "o"]
9. Math.hypot()
Метод Math.hypot() находит квадратный корень из суммы квадратов его аргументов.
Так, сумма квадратов 3 и 4 равна 25, а квадратный корень из 25 равен 5. Следовательно, Math.hypot(3, 4) возвращает 5.
Пример:let hyp = Math.hypot(3, 4);
console.log(hyp)
// 5
10. Object.assign()
Метод Object.assign() копирует значения всех перечисляемых собственных свойств из одного или нескольких исходных объектов в целевой объект.
Пример:let obj1 = {a: 1, b: 2};
let obj2 = {c: 3, d: 4};
let obj3 = Object.assign(obj1, obj2)
console.log(obj3)
// {a: 1, b: 2, c: 3, d: 4}
@javascriptv
Создайте крутой проект для портфолио
В рамках этого видео вы поработаете с вёрсткой и JavaScript, познакомитесь с различными библиотеками и научитесь динамически комбинировать различные элементы.
По итогу вы получите клон действующего сервиса по выбору цветов:
https://www.youtube.com/watch?v=OaNICHKM5KM
#javascript #туториал
@javascriptv
⭐️CSS Diner
Интерактивная игра для прокачки и закрепления знаний о селекторах CSS. В игре даётся анимированная полка блюд, HTML форма и определённый элемент или элементы, которые надо выбрать.
https://flukeout.github.io/
@javascriptv
Как сделать кастомный Semi Donut Chart с помощью SVG
Semi Donut Chart — это одна из форм представления отчётов в виде полукруглой диаграммы. Semi Donut Chart в том случае, когда важна не математическая точность, а наглядность.
Если вы хотите сделать интересный Semi Donut Chart без использования библиотек по типу Chart.js, то этот туториал для вас.
@javascriptv
🔥 CSS Dots wave - анимированная сцена, выполненная с помощью SCSS, без использования JavaScript
https://codepen.io/amit_sheen/pen/vYpZBwP
@javascriptv
⚡ Интересное исследование производительности анимации на основе скролла страницы
Анимация на основе скролла — это способ добавить интерактивности и визуального интереса вашему сайту или веб-приложению, который запускается в зависимости от положения прокрутки пользователя. Это отличный способ удержать пользователей и сделать сайт более привлекательным.
В этой статье новый подход сравнивается с классической техникой JavaScript, чтобы показать, насколько простой и плавной может быть анимация с помощью нового API.
#javascript #api #css #web
@javascriptv
✔️ Literally Linked Lists - крутые интерактивные связанные списки, написанные с помощью CSS и JavaScript
https://codepen.io/mattjuggins/pen/KKZRwVL/
@javascriptv
💡 Newton's Light Bulbs - изящная анимация лампочки Ньютона. Реализована с помощью CSS и Js.
https://codepen.io/jh3y/pen/abzeaWJ
@javascriptv
Hex/RGB Auto Color Converter in Vue - конвертор цветов из HEX в RGB, выполненный с помощью SCSS и библиотеки Vue.js.
https://codepen.io/collinsworth/pen/WNXxQVP
@javascriptv
49. parallax bird - красивый параллакс, сделанный с помощью Less и библиотеки Three.js
https://codepen.io/ycw/pen/OJpPmOq
@javascriptv
Microsoft Homepage Clone - Клон домашней страницы Microsoft. Реализована с помощью CSS и Js.
https://codepen.io/bradtraversy/pen/ZEGGNRb
@javascriptv
Коротко и по работному делу!
→ Море IT вакансий на удалёнку разработчикам джунам, миддлам и сеньорам
→ Каждый день
→ Прямые контакты эйчаров! Без ссылок на х—ха ツ
Подписаться на канал 🤘
Реклама. ООО «Цифровые решения», ИНН: 7707469618, erid: LatgC5pWZ
🔥 Дайджест полезных материалов из мира : Javascript за неделю
Почитать:
— react-query vs SWR и избавимся ли мы от Redux?
— Абстрактные типы данных. Изложение для начинающих
— Генерируем простой web интерфейс для просмотра таблиц PostgreSQL
— Паттерны реактивности в современном JavaScript
— Ликбез по распространенным Client-Side уязвимостям
— Подробная настройка Content Security Policy (CSP)
— RxJS: как операторы высшего порядка упрощают код
— Задачи про PEG-парсеры
— Просто о Deep #1
— Добавление server side Open Graph и прочего SEO в существующую SPA
— Why Use NodeJS Over Other Languages and Runtimes?
— Web End Projects
— Will JavaScript ever die? Can WebAssembly replace JS?
— JU Query: Web App for community based learning (Project)
— What Is NodeJS?
— JavaScript Functions and Events : A Comprehensive Guide
— React interactive Components | Tabs
— What Is A JavaScript Bundler?
— Event Loop - Javascript
— React Content Rendering
Посмотреть:
🌐 CSS Anchor Is The Best New CSS Feature Since Flexbox (⏱ 15:39)
🌐 New useFormStatus React Hook (⏱ 01:00)
Хорошего дня!
@javascriptv
Video Sharing Platform UI
Пользовательский интерфейс платформы обмена видео, реализован с помощью CSS и JS
#анимация #css
https://codepen.io/TurkAysenur/pen/abvrNgx
@javascriptv
🔥 Дайджест полезных материалов из мира : Javascript за неделю
Почитать:
— Под капотом анимаций в React Native. Часть 2/2: Reanimated and JSI
— Подборка VS Code-плагинов для Frontend-разработчиков и не только
— Рефлексия в JavaScript и TypeScript: обзор основных техник. Как сгенерировать CLI-интерфейс для класса
— Считаем «a=1; b=2; x=pi/3; abcos(x)»
— JavaScript повсюду или почему веб-технологии захватили мир
— DOM, DI и View: деревья в Angular
— Как уменьшали размер VS Code, используя name mangling — сокращение идентификаторов во время сборки
— Как показать миллион зданий на карте — и не сломать браузер
— Одно PWA, чтоб править всеми
— Как запретить разработчику делать не то что нужно?
— Introduction to Sets in JavaScript: A Comprehensive Guide
— Pune Escorts Services: Exploring a World of Connection and Luxury
— Cortexi Reviews 2023 - Ear Drops, Ingredients, Reviews, Benefits & Price?
— Latest Newsletter: Bingeing the Past and Building the Future (Issue #129)
— Web Application Debugging with Sentry Session Replay: Comprehensive Walkthrough 🚀🚀
— Elevate Your Buttons with CopyShareify-js: Copy, Share, and More!
— The Art of Earning with Amazon's Affiliate Program
— Introducing OTP Designer jQuery Plugin
— EasyCaptchaJS: Simplified reCAPTCHA Integration
— SysCorp Technology PVT LTD
Посмотреть:
🌐 NEW Way To Create Variables In JavaScript (⏱ 12:13)
🌐 Help Me Teach You TypeScript (⏱ 00:45)
Хорошего дня!
@javascriptv
☕️ Tiling SVG Animation - красивая анимация состава разных кофейных напитков. Реализована с помощью CSS и JS.
https://codepen.io/RominaMartin/pen/KKgQmEW
@javascriptv
🧑💻Техника каррирования в JavaScript: суть, преимущества, примеры
Каррирование — это техника, применяемая в функциональном программировании. Она позволяет преобразовать функцию с несколькими аргументами в последовательность функций, каждая из которых принимает один аргумент за раз.
Начнем с базового примера.
• Рассмотрим функцию add, принимающую 2 аргумента и возвращающую их сумму: function add(x, y) {
return x + y;
}
console.log(add(3, 4)); // Вывод: 7
• Функция add принимает 2 аргумента, x и y, и возвращает их сумму. Теперь выполним каррирование данной функции. Для этого воспользуемся техникой частичного применения: function add(x) {
return function(y) {
return x + y;
};
}
console.log(add(3)(4)); // Вывод: 7
• В варианте с каррированием функция add принимает один аргумент x и возвращает другую функцию, которая принимает второй аргумент y, после чего выполняет сложение. Это позволяет вызвать add(3) и получить новую функцию, которую можно вызвать с оставшимся аргументом 4.
Каррирование обеспечивает ряд преимуществ.
▪Во-первых, оно позволяет создавать специализированные функции из более общих. Создадим переиспользуемую функцию addOne путем частичного применения функции add:const addOne = add(1);
console.log(addOne(5)); // Вывод: 6
console.log(addOne(10)); // Вывод: 11
В примере addOne — это новая функция, производная от add, которая всегда прибавляет 1 к своему аргументу. Эту функцию можно повсеместно переиспользовать в базе кода без дублирования логики.
▪ Во-вторых, каррирование делает возможным создание функций высшего порядка, улучшающих компонуемость. Рассмотрим функцию multiply, принимающую 3 аргумента и возвращающую их произведение: function multiply(x, y, z) {
return x * y * z;
}
console.log(multiply(2, 3, 4)); // Вывод: 24
Выполняем каррирование функции multiply:function multiply(x) {
return function(y) {
return function(z) {
return x * y * z;
};
};
}
console.log(multiply(2)(3)(4)); // Вывод: 24
Вариант с каррированием позволяет связать вызовы функций в цепочку, передавая по одному аргументу за раз. Это прием улучшает читаемость кода и упрощает композицию функций: const multiplyByTwo = multiply(2);
const multiplyByThree = multiplyByTwo(3);
console.log(multiplyByThree(4)); // Вывод: 24
console.log(multiply(2)(3)(4)); // Вывод: 24
▪ В-третьих, каррирование способствует созданию более гибких функций. Создадим вариации функции, частично применив несколько аргументов и позднее предоставив другие:
▪ Продолжение
@javascriptv
Holiday Feature Folding Cards [Pure CSS] - красивая анимация карточек с дополнительной информацией.
https://codepen.io/Maza-designDev/pen/KKdmyGb
@javascriptv
About Us Pop-Out Effect - крутые виджеты для блока "О нас" с поп-ап жффектом.
https://codepen.io/ainalem/pen/QWGNzYm
@javascriptv
UptimeSystem — мониторинг доступности веб-сайтов и серверов
UptimeSystem позволяет с лёгкостью отслеживать доступность ваших веб-сайтов, серверов и портов, а также контролировать выполнение ваших Cron-заданий
При этом вы можете получить мгновенные email-уведомления при изменении состояния отслеживаемых сервисов
Стоимость: #бесплатно (но есть платные тарифы)
@javascriptv
Expanding Button - красивая анимированная кнопка с различными ссылками на медиа. Реализована с помощью SCSS, Pug и JavaScript.
https://codepen.io/abh1nash/pen/eYjQgEN
@javascriptv
⚡️Маст-хэв список программистов, каналы с последними книжными новинками, библиотеками, разбором кода и актуальной информацией, связанной с вашим языком программирования.
Лучший способ получать свежие обновлении и следить за трендами в разработке.
Python: t.me/pythonl
C#: t.me/csharp_ci
C/C++/ t.me/cpluspluc
Машинное обучение: t.me/ai_machinelearning_big_data
Data Science: t.me/data_analysis_ml
Devops: t.me/devOPSitsec
Go: t.me/Golang_google
Базы данных: t.me/sqlhub
Rust: t.me/rust_code
Javascript: t.me/javascriptv
React: t.me/react_tg
PHP: t.me/phpshka
Android: t.me/android_its
Мобильная разработка: t.me/mobdevelop
Linux: t.me/+A8jY79rcyKJlYWY6
Big Data: t.me/bigdatai
Хакинг: t.me/linuxkalii
Java: t.me/javatg
💼 Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
🎞 YouTube канал: uproger" rel="nofollow">https://www.youtube.com/@uproger
😆ИТ-Мемы: t.me/memes_prog
🇬🇧Английский: t.me/english_forprogrammers
👨💻Как работает JavaScript Proxy
• Первый шаг в работе с JavaScript Proxy — создание прокси-объекта с помощью синтаксиса new Proxy(). Этот синтаксис позволяет определить целевой объект и объект-обработчик, содержащий ловушки — специальные методы, которые перехватывают операции с прокси и позволяют настраивать их поведение.
Например, ловушка get перехватывает доступ к свойствам прокси-объекта. Определив эту ловушку, можно настроить реакцию прокси при обращение к свойству. Аналогично, ловушка set перехватывает присвоение свойства, позволяя валидировать или изменить присвоенное значение.
• В целом, ловушки в контексте JavaScript Proxy — это специальные методы, которые действуют как посредники, перехватывая и позволяя настраивать такие действия с прокси-объектом, как доступ к свойствам и присвоение. Они предоставляют разработчикам тонкий контроль над поведением прокси, позволяя настраивать и манипулировать им по мере необходимости.
Пример:const target = {
name: 'Hossein',
age: 26
};
const handler = {
get(target, property) {
console.log(`Getting property: ${property}`);
return target[property];
},
set(target, property, value) {
console.log(`Setting property: ${property} = ${value}`);
target[property] = value;
}
};
const proxy = new Proxy(target, handler);
console.log(proxy.name); // Вывод: Получение свойства: name, Hossein
proxy.age = 30; // Вывод: Установка свойства: age = 26
console.log(proxy.age); // Вывод: получение свойства: age, 30
▪️Здесь ловушка set перехватывает присвоение свойства прокси-объекту и регистрирует присвоенное свойство и значение, прежде чем изменить его в целевом объекте.
Используя эти и другие ловушки, можно эффективно настраивать и контролировать поведение прокси-объектов в соответствии с потребностями конкретной разработки.
Перехват операций с объектами с использованием прокси
• JavaScript Proxy позволяет перехватывать и настраивать различные операции с объектами. Рассмотрим несколько примеров.
Удаление свойства:const target = {
name: 'Hossein',
age: 26
};
const handler = {
deleteProperty(target, property) {
console.log(`Deleting property: ${property}`);
delete target[property];
}
};
const proxy = new Proxy(target, handler);
delete proxy.age; // Вывод: Удаление свойства: age
console.log(proxy); // Вывод: { name: 'Hossein' }
▪️В этом примере ловушка deleteProperty перехватывает удаление свойства прокси-объекта. Можно настроить поведение так, чтобы залоггировать удаляемое свойство и затем удалить его из целевого объекта.
• Вызов функции:const target = {
sum: (a, b) => a + b
};
const handler = {
apply(target, thisArg, argumentsList) {
console.log(`Calling function: ${target.name}`);
return target.apply(thisArg, argumentsList);
}
};
const proxy = new Proxy(target.sum, handler);
console.log(proxy(2, 3)); // Вывод: Вызов функции: sum, 5
▪️В этом случае ловушка apply перехватывает вызов функции прокси-объекта. Можно настроить поведение так, чтобы залоггировать имя функции перед ее вызовом с предоставленными аргументами.
📌Продолжение
@javascriptv
Подборка новых статей из Журнала Академии Яндекса. Они пишут для тех, кто выбрал путь в IT: про развитие, карьеру и будущее⚡
1. Три способа освоить программирование с нуля
/channel/journal_academy/636
2. Подборка полезных ресурсов для изучения асинхронности в JavaScript
/channel/journal_academy/77
3. Что такое генеративная графика
/channel/journal_academy/295
Вступайте в сообщество увлечённых айтишников:
Журнал Академии Яндекса
Реклама. ООО "ЯНДЕКС". ИНН 7736207543. erid: 2RanynAPSkY
Сбер открыл доступ к новым нейролингвистическим моделям
Сбер выпустил модель ruGPT-3.5 13B для генерации русского текста и модель mGPT 13B для генерации текста на 61 языке.
Модель ruGPT-3.5 13B оснащена 13 миллиардов параметров и может генерировать текст на русском, английском, а также неплохо разбирается в языках программирования. Модель mGPT 13B доступна по открытой лицензии MIT и может генерировать текст на 61 языке, в том числе на языках стран СНГ и малочисленных этнических групп в России.
«Сбер как ведущая технологическая компания выступает за открытость технологий и обмен опытом с профессиональным сообществом, ведь любые разработки и исследования имеют ограниченный потенциал в замкнутой среде. Поэтому, мы уверены, что публикация обученных моделей подстегнёт работу российских исследователей и разработчиков, нуждающихся в сверхмощных языковых моделях, создавать на их базе собственные технологические продукты и решения», —следует из заявления старшего вице-президента, CTO, руководитель блока «Технологии» Сбера Андрея Белевцева.
@javascriptv
📌 На что способен Selenium в паре с JavaScript?
Преимущества совместного использования Selenium и JavaScript
• Кросс-браузерность. Позволяет беспроблемно запускать скрипты автоматизации в разных браузерах.
• Интеграция с фреймворками для тестирования JavaScript. Обеспечивает легкую интеграцию с такими фреймворками, как Mocha и Jest, для эффективного управления тестированием.
• Мощная поддержка сообщества. Активно действующие сообщества Selenium и JavaScript предоставляют доступ к обширной документации, обучающим руководствам и ресурсам.
Установка Selenium WebDriver в JavaScript
🟢 Чтобы начать работу с Selenium WebDriver в JavaScript, устанавливаем пакет Selenium WebDriver с помощью npm. После этого импортируем необходимые компоненты и создаем экземпляр WebDriver для управления веб-браузерами. npm install selenium-webdriver
🟢 Импортируем необходимые компоненты: const { Builder, By, Key, until } = require('selenium-webdriver');
🟢 Создаем экземпляр WebDriver: const driver = new Builder().forBrowser('chrome').build();
Автоматизация браузера с помощью Selenium и примеры кода читать тут
@javascriptv