Как при помощи JavaScript определить, включен ли Caps Lock
Кто угодно может нажать Caps Lock в любой момент времени и не заметить этого. Вводя обычный текст, пользователи легко обнаруживают, что Caps Lock включен. Но когда вводится пароль, проблема не столь очевидна. В результате пароль не принимается, и это раздражает пользователя. В идеале разработчики могли бы предупреждать пользователя о том, что у него включен Caps Lock.
Чтобы отслеживать, включен ли Caps Lock, мы используем метод
Я прежде никогда не встречал
Источник - https://davidwalsh.name/detect-caps-lock
Кто угодно может нажать Caps Lock в любой момент времени и не заметить этого. Вводя обычный текст, пользователи легко обнаруживают, что Caps Lock включен. Но когда вводится пароль, проблема не столь очевидна. В результате пароль не принимается, и это раздражает пользователя. В идеале разработчики могли бы предупреждать пользователя о том, что у него включен Caps Lock.
Чтобы отслеживать, включен ли Caps Lock, мы используем метод
getModifierState
:document.querySelector('input[type=password]').addEventListener('keyup', function (keyboardEvent) {
const capsLockOn = keyboardEvent.getModifierState('CapsLock');
if (capsLockOn) {
// Предупредить пользователя, что caps lock включен?
}
});
Я прежде никогда не встречал
getModifierState
, так что заглянул в документацию W3C, чтобы познакомиться с его значениями:dictionary EventModifierInit : UIEventInit {
boolean ctrlKey = false;
boolean shiftKey = false;
boolean altKey = false;
boolean metaKey = false;
boolean modifierAltGraph = false;
boolean modifierCapsLock = false;
boolean modifierFn = false;
boolean modifierFnLock = false;
boolean modifierHyper = false;
boolean modifierNumLock = false;
boolean modifierScrollLock = false;
boolean modifierSuper = false;
boolean modifierSymbol = false;
boolean modifierSymbolLock = false;
};
getModifierState
позволяет получить множество сведений о клавиатуре пользователя во время событий, ориентированных на нажатие клавиш. Жаль, что я не знал о getModifier в начале своей карьеры!Источник - https://davidwalsh.name/detect-caps-lock
🔻Напишите онлайн-чат на Golang с нуля за пару часов и добавьте его в портфолио!
На бесплатном практическом уроке от OTUS, где вы вместе с опытным экспертом:
☑️ на примере разработки онлайн-чата разберете преимущества и особенности языка Go;
☑️ поговорите о клиент-серверной архитектуре интернета;
☑️ попрактикуетесь в написании веб-приложения на чистом Go;
☑️ проведете небольшое нагрузочное тестирование полученной реализации.
🗓 Встречаемся 12 марта в 20:00 мск в рамках курса «Go (Golang) Developer Basic». Доступна рассрочка на обучение!
👉 Регистрируйтесь прямо сейчас, чтобы посетить бесплатный урок и получить запись: https://otus.pw/x6b4/
На бесплатном практическом уроке от OTUS, где вы вместе с опытным экспертом:
☑️ на примере разработки онлайн-чата разберете преимущества и особенности языка Go;
☑️ поговорите о клиент-серверной архитектуре интернета;
☑️ попрактикуетесь в написании веб-приложения на чистом Go;
☑️ проведете небольшое нагрузочное тестирование полученной реализации.
🗓 Встречаемся 12 марта в 20:00 мск в рамках курса «Go (Golang) Developer Basic». Доступна рассрочка на обучение!
👉 Регистрируйтесь прямо сейчас, чтобы посетить бесплатный урок и получить запись: https://otus.pw/x6b4/
Как использовать селектор :has() в CSS
#webdev
Селектор :has() предлагает новый уровень гибкости и возможностей в CSS, позволяя писать более чистые и эффективные таблицы стилей.
Читать статью
#webdev
Селектор :has() предлагает новый уровень гибкости и возможностей в CSS, позволяя писать более чистые и эффективные таблицы стилей.
Читать статью
🫵 Соберите свой первый проект на С++ и добавьте его в портфолио
👉 На бесплатном практическом уроке от OTUS и Карины Дорожкиной — ведущего разработчика в Kaspersky.
На вебинаре:
- разберем понятие единицы трансляции;
- проследим за ошибками компиляции и линковки, разберёмся в их причинах;
- создадим статическую библиотеку и подключим её при помощи CMake;
- обсудим разницу между статической библиотекой и динамической.
⏰ Занятие пройдёт 5 марта в 20:00 мск и будет приурочено к старту курса «Специализация C++ Developer». Доступна рассрочка на обучение!
👉 Зарегистрируйтесь прямо сейчас, чтобы занять место: https://otus.pw/97YH/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
👉 На бесплатном практическом уроке от OTUS и Карины Дорожкиной — ведущего разработчика в Kaspersky.
На вебинаре:
- разберем понятие единицы трансляции;
- проследим за ошибками компиляции и линковки, разберёмся в их причинах;
- создадим статическую библиотеку и подключим её при помощи CMake;
- обсудим разницу между статической библиотекой и динамической.
⏰ Занятие пройдёт 5 марта в 20:00 мск и будет приурочено к старту курса «Специализация C++ Developer». Доступна рассрочка на обучение!
👉 Зарегистрируйтесь прямо сейчас, чтобы занять место: https://otus.pw/97YH/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Сортировка веток Git
Запустив
Но это можно изменить!
Выполните в вашем репозитории следующую команду:
Это отсортирует все ваши ветки по дате их последнего коммита!
Для сортировки доступны следующие опции:
- authordate
- committerdate
- creatordate
- objectsize
- taggerdate
Кроме того, если хотите всегда сортировать по одному из этих параметров, можно установить это в настройках:
Также можно задать псевдоним:
Успешных коммитов!
Источник - «Sorting Git branches».
Запустив
git branch
в репозитории, вы обычно получаете список веток в алфавитном порядке. Это может раздражать, когда у вас много веток (если только у вас нет очень жесткой системы именования по номеру тикета или чего-то подобного).Но это можно изменить!
Выполните в вашем репозитории следующую команду:
git branch --sort=-committerdate
Это отсортирует все ваши ветки по дате их последнего коммита!
Для сортировки доступны следующие опции:
- authordate
- committerdate
- creatordate
- objectsize
- taggerdate
Кроме того, если хотите всегда сортировать по одному из этих параметров, можно установить это в настройках:
git config --global branch.sort -committerdate
Также можно задать псевдоним:
git config --global alias.brcd "branch --sort=-committerdate".
Успешных коммитов!
Источник - «Sorting Git branches».
Как объявить массив в bash
#bash
Bash-скрипты полезны для автоматизации консольных команд. А массивы — отличный инструмент для хранения набора данных. Объявлять массив в bash не сложно, однако синтаксис отличается от синтаксиса массивов в языках программирования.
Читать статью
#bash
Bash-скрипты полезны для автоматизации консольных команд. А массивы — отличный инструмент для хранения набора данных. Объявлять массив в bash не сложно, однако синтаксис отличается от синтаксиса массивов в языках программирования.
Читать статью
Уменьшаем время загрузки сайта
#webdev
Если сайту не удается предоставить хороший UX, то скорее всего - из-за плохо оптимизированного фронтенда. Чаще всего дело бывает в загрузке данных и изображений. Давайте разберемся, что и как можно улучшить.
Читать статью
#webdev
Если сайту не удается предоставить хороший UX, то скорее всего - из-за плохо оптимизированного фронтенда. Чаще всего дело бывает в загрузке данных и изображений. Давайте разберемся, что и как можно улучшить.
Читать статью
Как архитектору эффективно работать с принципом инверсии зависимостей?
Узнайте на бесплатном практическом уроке от OTUS, где вы вместе с опытным экспертом разберете:
▫️определение и обоснование принципа инверсии зависимостей;
▫️примеры использования принципа в различных паттернах проектирования;
▫️связь принципа инверсии зависимостей с остальными принципами SOLID;
▫️связь паттерна Адаптер, луковичной архитектуры и принципа инверсии зависимостей.
Занятие пройдёт 13 марта в 20:00 мск в рамках курса «Архитектура и шаблоны проектирования». После урока у вас будет возможность стать студентом программы по специальной цене и даже в рассрочку!
👉🏻 Пройдите короткий тест прямо сейчас, чтобы посетить бесплатный урок и получить запись: пройти тест
Узнайте на бесплатном практическом уроке от OTUS, где вы вместе с опытным экспертом разберете:
▫️определение и обоснование принципа инверсии зависимостей;
▫️примеры использования принципа в различных паттернах проектирования;
▫️связь принципа инверсии зависимостей с остальными принципами SOLID;
▫️связь паттерна Адаптер, луковичной архитектуры и принципа инверсии зависимостей.
Занятие пройдёт 13 марта в 20:00 мск в рамках курса «Архитектура и шаблоны проектирования». После урока у вас будет возможность стать студентом программы по специальной цене и даже в рассрочку!
👉🏻 Пройдите короткий тест прямо сейчас, чтобы посетить бесплатный урок и получить запись: пройти тест
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Как перемещаться между скобками в Vim
#tools
В файлах программ обычно множество скобок. Поэтому эффективная навигации между ними имеет большое значение для продуктивности работы программиста. Эта статья познакомит вас с тремя командами, которые позволят вам молниеносно перемещаться между скобками.
Читать статью
#tools
В файлах программ обычно множество скобок. Поэтому эффективная навигации между ними имеет большое значение для продуктивности работы программиста. Эта статья познакомит вас с тремя командами, которые позволят вам молниеносно перемещаться между скобками.
Читать статью
SQL JOIN: руководство по объединению таблиц
#sql
В этой статье:
- LEFT JOIN / RIGHT JOIN
- Фильтрация с использованием LEFT JOIN
- Множественные объединения
- Операции объединения с дополнительными условиями
- Правда жизни о написании запросов с объединениями.
Читать статью
#sql
В этой статье:
- LEFT JOIN / RIGHT JOIN
- Фильтрация с использованием LEFT JOIN
- Множественные объединения
- Операции объединения с дополнительными условиями
- Правда жизни о написании запросов с объединениями.
Читать статью
🔥 Для новичков в IT: как тестировать API с помощью POSTMAN?
⚙️Узнайте на бесплатном практическом уроке от OTUS, где вы вместе с опытным экспертом разберете:
- что такое API и как его использовать;
- как тестировать back-end, если нет интерфейса;
- что можно тестировать в API;
- составление простой автопроверки для нашего API.
🦾Занятие пройдёт 14 марта в 20:00 мск и будет приурочено к старту курса «Специализация QA Automation Engineer». Доступна рассрочка на обучение!
Регистрируйтесь прямо сейчас, чтобы занять место на открытом уроке и получить запись: https://vk.cc/cvn4lX
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
⚙️Узнайте на бесплатном практическом уроке от OTUS, где вы вместе с опытным экспертом разберете:
- что такое API и как его использовать;
- как тестировать back-end, если нет интерфейса;
- что можно тестировать в API;
- составление простой автопроверки для нашего API.
🦾Занятие пройдёт 14 марта в 20:00 мск и будет приурочено к старту курса «Специализация QA Automation Engineer». Доступна рассрочка на обучение!
Регистрируйтесь прямо сейчас, чтобы занять место на открытом уроке и получить запись: https://vk.cc/cvn4lX
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
HTTPS для разработчиков
#webdev
Если вы хотите узнать достаточно технических подробностей о работе и использовании HTTPS в ваших приложениях, при этом не ныряя в глубины криптографии и веб-стандартов, эта статья как раз для вас!
Читать статью
#webdev
Если вы хотите узнать достаточно технических подробностей о работе и использовании HTTPS в ваших приложениях, при этом не ныряя в глубины криптографии и веб-стандартов, эта статья как раз для вас!
Читать статью
Date.now()
Спросите любого разработчика, и он согласится, что прописывание логики дат может быть настоящим кошмаром. Разработчикам нужно учитывать часовые пояса, странные дефолтные даты и платформоспецифичные форматы дат.
Самый простой способ работать с датами - свести дату к максимально простому формату, обычно к временной метке. Чтобы получить текущее время в формате целого числа, вы можете использовать
Я частенько использую
Источник - "Date.now()".
Спросите любого разработчика, и он согласится, что прописывание логики дат может быть настоящим кошмаром. Разработчикам нужно учитывать часовые пояса, странные дефолтные даты и платформоспецифичные форматы дат.
Самый простой способ работать с датами - свести дату к максимально простому формату, обычно к временной метке. Чтобы получить текущее время в формате целого числа, вы можете использовать
Date.now
:const now = Date.now(); // 1705190738870
Я частенько использую
Date.now()
в своих console.log
, чтобы отличать результаты console.log
друг от друга. Вы также можете использовать такую дату в качестве уникального идентификатора для события в не слишком загруженной событиями среде.Источник - "Date.now()".
❓Чем перемещение отличается от копирования в C++?
Узнайте на бесплатном практическом уроке от OTUS, где вы вместе с опытным экспертом разберете:
- синтаксис и подводные камни move-семантики;
- отличие копирования от перемещения;
- когда компилятор может сам, а когда ему нужно подсказать;
- как отличить rvalue от lvalue;
- как избегать лишнего копирования объектов.
⏰ Занятие пройдёт 21 марта в 20:00 мск и будет приурочено к старту курса «Специализация C++ Developer». Доступна рассрочка на обучение!
👉 Зарегистрируйтесь прямо сейчас: https://otus.pw/3WT1/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Узнайте на бесплатном практическом уроке от OTUS, где вы вместе с опытным экспертом разберете:
- синтаксис и подводные камни move-семантики;
- отличие копирования от перемещения;
- когда компилятор может сам, а когда ему нужно подсказать;
- как отличить rvalue от lvalue;
- как избегать лишнего копирования объектов.
⏰ Занятие пройдёт 21 марта в 20:00 мск и будет приурочено к старту курса «Специализация C++ Developer». Доступна рассрочка на обучение!
👉 Зарегистрируйтесь прямо сейчас: https://otus.pw/3WT1/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Извлечение числа из строки при помощи JavaScript
Пользовательский ввод из полей HTML-форм обычно передается в JavaScript как строка. Мы десятилетиями живем с этим, но порой разработчикам приходится извлекать из этих строк числа. Есть несколько способов это сделать, но давайте обратимся к регулярным выражениям!
Чтобы при помощи регулярного выражения вычленить число в строке, мы можем использовать
Регулярки в JS способны на очень многое, этот пример - одна из простейших операций. Конвертация числа при помощи обертки
Источник - «Extract a Number from a String with JavaScript».
Пользовательский ввод из полей HTML-форм обычно передается в JavaScript как строка. Мы десятилетиями живем с этим, но порой разработчикам приходится извлекать из этих строк числа. Есть несколько способов это сделать, но давайте обратимся к регулярным выражениям!
Чтобы при помощи регулярного выражения вычленить число в строке, мы можем использовать
\d+
:const string = "x12345david";
const [match] = string.match(/(\d+)/);
match; // 12345
Регулярки в JS способны на очень многое, этот пример - одна из простейших операций. Конвертация числа при помощи обертки
Number()
даст вам число типа Number
.Источник - «Extract a Number from a String with JavaScript».
Как понять, какая IT-профессия вам подойдёт?
Начните с пробного доступа к IT-курсам OTUS за 500 рублей!
✅ Вы получите доступ видеозаписи трех курсов: «РНР для начинающих программистов», «JavaScript для начинающих программистов», «С++ для начинающих программистов»
Вы познакомитесь с платформой, оцените качество видеоматериалов и получите азы профессии, познакомитесь с языками программирования.
👉 Получить пробный доступ
https://otus.pw/vxHO/?erid=LjN8KNYba
Начните с пробного доступа к IT-курсам OTUS за 500 рублей!
✅ Вы получите доступ видеозаписи трех курсов: «РНР для начинающих программистов», «JavaScript для начинающих программистов», «С++ для начинающих программистов»
Вы познакомитесь с платформой, оцените качество видеоматериалов и получите азы профессии, познакомитесь с языками программирования.
👉 Получить пробный доступ
https://otus.pw/vxHO/?erid=LjN8KNYba
Проверка типов в Python
#python
Python — строго типизированный динамический язык программирования. Типы определяются динамически, поэтому вы можете задавать значения переменных напрямую, не определяя их тип, как в статически типизированных языках, таких как Java.
Хотя динамическая типизация обеспечивает гибкость, она не всегда желательна, поэтому в последнее время было предпринято множество попыток привнести в динамические языки статическое определение типов.
В этой статье мы рассмотрим, что такое подсказки типов и чем они могут быть полезны. Мы также рассмотрим, как можно использовать систему типов Python для статической проверки типов с помощью mypy и проверки типов во время выполнения с помощью pydantic, marshmallow и typeguard.
Читать статью
#python
Python — строго типизированный динамический язык программирования. Типы определяются динамически, поэтому вы можете задавать значения переменных напрямую, не определяя их тип, как в статически типизированных языках, таких как Java.
Хотя динамическая типизация обеспечивает гибкость, она не всегда желательна, поэтому в последнее время было предпринято множество попыток привнести в динамические языки статическое определение типов.
В этой статье мы рассмотрим, что такое подсказки типов и чем они могут быть полезны. Мы также рассмотрим, как можно использовать систему типов Python для статической проверки типов с помощью mypy и проверки типов во время выполнения с помощью pydantic, marshmallow и typeguard.
Читать статью
TDD, BDD, ATDD. Быстрый гайд
Test-Driven Development (TDD), Behavior-Driven Development (BDD) и Acceptance Test-Driven Development (ATDD) стали популярными методиками, значительно повысившими качество и надежность программных продуктов. Это не умозрительные идеальные концепции, а вполне практические гибкие методики, и их применение в повседневном рабочем процессе доказало их эффективность. Будучи QA-лидом, я на собственном опыте убедился, что интеграция TDD, BDD и ATDD способна улучшить процессы разработки не только в теории.
Читать статью
Test-Driven Development (TDD), Behavior-Driven Development (BDD) и Acceptance Test-Driven Development (ATDD) стали популярными методиками, значительно повысившими качество и надежность программных продуктов. Это не умозрительные идеальные концепции, а вполне практические гибкие методики, и их применение в повседневном рабочем процессе доказало их эффективность. Будучи QA-лидом, я на собственном опыте убедился, что интеграция TDD, BDD и ATDD способна улучшить процессы разработки не только в теории.
Читать статью
Что такое requirements.txt и как с ним работать?
#python
Многие проекты зависят от библиотек и других зависимостей, и установка каждой из них может быть утомительной и отнимать много времени.
Именно здесь на помощь приходит файл requirements.txt. Это файл, содержащий список пакетов или библиотек, необходимых для работы над проектом, которые желательно установить перед запуском. Это обеспечивает согласованность среды и облегчает совместную работу.
Читать статью
#python
Многие проекты зависят от библиотек и других зависимостей, и установка каждой из них может быть утомительной и отнимать много времени.
Именно здесь на помощь приходит файл requirements.txt. Это файл, содержащий список пакетов или библиотек, необходимых для работы над проектом, которые желательно установить перед запуском. Это обеспечивает согласованность среды и облегчает совместную работу.
Читать статью
Введение в современную квантизацию от ML-разработчика Яндекса
В этой статье:
- Что такое квантизация и как она работает
- Что квантизовать, чтобы улучшить эффективность модели
- В какой момент лучше квантизовать модель
- Типы данных в квантизованных моделях
- Что такое выбросы, как они портят жизнь ML-инженерам и как с ними бороться.
Читать статью
В этой статье:
- Что такое квантизация и как она работает
- Что квантизовать, чтобы улучшить эффективность модели
- В какой момент лучше квантизовать модель
- Типы данных в квантизованных моделях
- Что такое выбросы, как они портят жизнь ML-инженерам и как с ними бороться.
Читать статью