Впечатления от знакомства с микрофреймворком AlpineJS
Так получилось, что недавно мне пришлось для определенных задач искать минималистичную замену Vue, которая бы имела минимум зависимостей и требований. Так я и познакомился с AlpineJS, который после короткого изучения и испытания, был успешно опробован на коммерческом проекте. Поэтому в статье я хотел бы поделиться с вами своими впечатлениями от этого микрофреймворка.
Читать дальше →Некоторые проблемы безопасности при установке модулей с помощью NPM
Каждый веб-разработчик так или иначе знаком с NPM. Но как вы думаете, многие ли из этих разработчиков задумываются, насколько безопасно ставить модули с NPM? В статье я уделил внимание некоторым моментам, которые на мой взгляд иногда приводят к проблемам безопасности, при установке модулей с NPM.
Читать дальше →Почему я стараюсь вести разработку в Docker-контейнерах
Нередко на профильных сайтах, связанных с IT-тематикой (всякие Хабры и Stackoverflow), я вижу как некоторые программисты искренне непонимают назначение и пользу контейнеризаций и считают это излишним усложнением в разработке. Т.к. у меня часто стоят задачи, связанные с Web-разработкой, я решил привести пример безопасности разработки, в качестве причины по которой я использую контейнеры (в моем случае — Docker).
Читать дальше →При веб-разработке не забывайте фиксировать библиотеки, подгружаемые с публичных CDN
Недавно на одном из проектов, который я когда-то делал раньше, я обнаружил неприятный баг вследствие того, что не зафиксировал версию библиотеки, погружаемой с публичного CDN. На примере данного казуса я хочу рассказать почему в проекте всегда нужно фиксировать версии зависимостей.
Читать дальше →Первые впечатления от использования Swiper Element на проекте
При разработке одного из проектов, для реализации различных слайдеров, я решил попробовал достаточно новую библиотеку Swiper Element, которая работает с использованием нативных веб-компонентов. По итогу этого эксперимента, я хочу немного рассказать о самой библиотеке, а также поделиться с вами своими выводами, касательно использования её на продакшене.
Читать дальше →Проблемы больших (по количеству ячеек) таблиц в HTML
Таблицы в HTML являются популярным и простым инструментом отображения структурированных данных. Но одно дело, когда в таблице мало элементов, а другое, когда вам требуется отобразить сотни тысяч ячеек. В статье я решил описать свое мнение, почему стоит избегать таких случаев и с какими проблемами вы можете столкнуться при попытке формирования таких гигантских таблиц.
Читать дальше →Принципы Graceful Degradation и Progressive Enhancement в веб-разработке
Не секрет, что в веб-разработке полная поддержка старых браузеров зачастую является нетривиальной и достаточно трудоемкой задачей. Для решения пообных проблем в свое время и были продуманы принципы Graceful Degradation и Progressive Enhancement, о которых и пойдет речь в статье.
Читать дальше →Мое первое впечатление от использования Vite в коммерческой web-разработке
Наконец-то мне удалось более плотно поработать с таким замечательным инструментом веб-разработки как Vite но уже на полноценном рабочем проекте, где он использовался и как сервер разработки и как инструмент сборки веб-проекта. Вот и решил поделиться с вами своим первым впечатлением.
Читать дальше →ES Modules — единственная модульная система которая должна остаться в современной JavaScript разработке
В данной статье я хочу упомянуть тему различных модульных систем, которые до сих пор можно встретить в JS-коде и поделиться своим мнением касательно того, почему на мой взгляд нужно использовать только ES Modules.
Читать дальше →Опубликовал свою версию полифила для поддержки псевдокласса :has() в методах DOM Selectors API
Успел под конец месяца опубликовать первый релиз своего полифила для реализации мощного псевдокласса :has() в методах DOM Selectors API .querySelector(), .querySelectorAll() и пр. В статье я просто хочу рассказать о некоторых деталях разработки и о том, с какими сложностями мне пришлось столкнуться.
Читать дальше →Применимость нового CSS псевдокласса :has() в проектах
Недавно в стандарт CSS был внесен и уже реализован в части браузеров новый псевдокласс :has(), который существенно расширяет возможности CSS. Т.к. я предпочитаю использовать самые современные стандартизированные решения, я поспешил поэкспериментировать на деле с этим новым псевдоклассом и в итоге решил поделиться своими мыслями касательно его применимости.
Читать дальше →JavaScript: Особенность работы Object.freeze() с объектами имеющими приватные поля
Иногда развитие языка программирования приносит не только новые возможности, но и новые подводные камни. В случае с JavaScript в статье я решил уделить внимание Object.freeze(), благодаря которому раньше можно было создавать полностью иммутабельные объекты, но с появлением нового синтаксиса приватных полей, это уже не совсем так.
Читать дальше →Почему при написании кода не стоит смешивать воедино браузерный и серверный JS на примере Puppeteer
Работая с одной популярной JS библиотекой (Puppeteer), я обратил внимание в примерах на частое смешивание воедино браузерного и серверного JavaScript кода. что с одной стороны объяснялось удобством, а с другой стороны нередко приводило разработчиков в замешательство. Т.к. подобное мне и ранее попадалось в других программных решениях, я решил поделиться своим мнением касательно того, почему я считаю такое написание кода нежелательным.
Читать дальше →Удаленная разработка с использованием VSCode и расширения Remote Development
Не секрет, что в настоящее время VSCode является одним из популярнейших редакторов кода, который имеет обширную базу плагинов, которые существенно расширяют его функционал. В данной статье я решил кратко описать активно применяемый мною в работе официальный набор плагинов от Microsoft — "Remote Development", благодаря которому VSCode получает возможность вести полноценную разработку на удаленной системе.
Читать дальше →Мое мнение касательно TailwindCSS после использования его на коммерческом проекте
Давно уже хотелось поближе познакомиться с CSS фреймворком Tailwind и как раз подвернулась возможность использовать его в коммерческом проекте. В статье я хотел кратко резюмировать мое мнение об этом чудесном фреймворке.
Читать дальше →Одна из причин, почему на body элементе не стоит отключать скролл
Работая с одним из проектов, я обнаружил проблему конфликта нового скролла с "рукояткой" у мобильной Оперы и отключением скролла на body элементе (для фиксирования высоты body по высоте экрана). Т.к. пользователей мобильной Оперы достаточно много, да и подобная фишка может оказаться в других браузерах или плагинах, я решил описать проблему отдельной статьей. Возможно это кому-то заранее сбережет время и нервы.
Читать дальше →Отличия в применении знаковых нолей +0 и -0 в JavaScript и не только
Возможно это может показаться удивительным, но в JavaScript вполне есть случаи, когда наличие в выражении +0 или -0 может менять итоговый результат. Пример как раз одного такого момента представлен в статье.
Читать дальше →Работа с Github в текущих реалиях при наличии OpenSSH версии младше 7.2
В этом месяце столкнулся с обновлением требований к ключам авторизации при работе с GitHub, повлекшую обновление требований к версии OpenSSH. Т.к. не всегда есть возможность обновлять стабильные версии ПО, пришлось разбираться, как можно настроить в текущих ситуациях работу git с Github при наличии только старой версии OpenSSH.
Читать дальше →Обычные и асинхронные методы-генераторы в JavaScript и TypeScript
Обратил внимание, что в интернете обычные и асинхронные генераторы обычно упоминаются в виде простых функций (через function*) и не так часто упоминаются в контексте методов класса, что соответственно может запутать новичков, только знакомящихся с этим функционалом. В этой статье я представил небольшое пояснение с примерами реализации различных методов-генераторов (для классов в стиле ES6+) .
Читать дальше →Что происходит с проектом Bootstrap-Vue? Стоит ли рассчитывать на эту библиотеку?
В этом году практически отсутствует какая-либо серьезная активность от разработчиков популярной библиотеки Bootstrap-Vue и вполне возможно что этот проект будет в итоге заброшен. Для нового проекта возможно вам стоит быть осторожным в выборе этой библиотеки.
Читать дальше →Принципы KISS, DRY и YAGNI в разработке ПО
Три удивительно простых принципа: KISS, DRY, YAGNI, понимание которых помогает в разработке ПО (и не только!). В статье я кратко охарактеризую их и поясню, в чем их важность.
Читать дальше →Декодирование SVG в WebWorker в JavaScript
В статье описал немного нетривиальный способ управления декодированием и растеризацией SVG внутри выделенного WebWorker (да-да, опять JavaScript....).
Читать дальше →Основные недостатки JSON
JSON формат сейчас очень популярен и применяется где только можно: как файлы конфигурации, как формат передачи и пр. Но нередко этот формат используют там, где он неуместен, в силу своих недостатков, о которых я и упомянул в статье.
Читать дальше →Проблемы больших чисел в JavaScript или зачем нужен тип BigInt
Как думаете, какой результат будет, если в JS посчитать 9007199254740991 + 2 ? Если вы думаете что 9007199254740993, то вы можете серьезно ошибаться. В статье описаны проблема точности больших чисел в JavaScript, а также назначение типа BigInt при решении таких проблем.
Читать дальше →Почему для начала изучения PHP нет необходимости ставить веб-сервер и базу данных ?
Зачастую в различных туториалах при изучении PHP требуют ставить LAMP, WAMP, OpenServer, Denver и пр. Рассмотрим, почему для изучения достаточно просто скачать PHP.
Читать дальше →