Обновить
512K+

Веб-разработка *

Делаем веб лучше

377,86
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Когда наступит WEB 3.0?

Время на прочтение10 мин
Охват и читатели6.5K

Всем привет, сегодня я хотел бы подискутировать на примере "очередной революции" в так называемом WEB 3.0 от команды TON, как развивается веб и в целом куда мы идем, статья не претендует на истину, все ниже изложенное является личным мнением автора.

Читать далее

Как сделать бесконечный круговой CSS-слайдер

Время на прочтение6 мин
Охват и читатели15K

Слайдеры изображений, также известные как карусели картинок, очень распространены. Есть множество вариантов обычного CSS-слайдера, в котором изображения смещаются слева направо (или наоборот). Можно использовать JavaScript-библиотеки для создания красивых слайдеров со сложной анимацией. Но здесь я подойду к созданию карусели иначе.


В серии статей я расскажу вам, как создать необычные и красивые слайдеры исключительно в CSS. Если вы устали от одинаковых слайдеров, вам это понравится! Продолжение — к старту нашего курса по Fullstack-разработке на Python.

Читать дальше →

Краткий обзор Bun — новой среды выполнения JavaScript

Время на прочтение8 мин
Охват и читатели28K


Привет, друзья!


В этой статья я немного расскажу вам о Bun — новой среде выполнения JavaScript-кода.


Обратите внимание: Bun — это экспериментальная штуковина, поэтому использовать ее для разработки производственных приложений пока не рекомендуется.


К слову, в рейтинге "Восходящие звезды JavaScript 2022" Bun стал победителем в номинации "Самые популярные проекты".


Интересно? Тогда прошу под кат.

Читать дальше →

Паттерн Мейоз: локальное состояние и сервисы

Время на прочтение9 мин
Охват и читатели1.8K

В прошлой заметке я представил общественности шаблон проектирования Мейоз, как способ управления состоянием одностраничного javascript приложения. Шаблон не связан с конкретной библиотекой рендеринга, и опирается исключительно на небольшую функцию stream и нативную реализацию объекта Array в javascript.

Идея шаблона заключается в использовании streams (потоков) для хранения состояния приложения, глобального или локального (например состояния html формы), связывания, свертки и комбинации потоков в функциональном стиле. Шаблон предлагает использовать определенные реактивные структуры данных, но не обязательно буквально так как это делает автор. В рамках шаблона можно реализовать любое удобное и понятное поведение приложения.

В этой заметке я перепишу небольшое приложение "Кубики", и вместо библиотеки mithril для рендеринга будем пользоваться reactjs. Будем использовать потоки для управления глобальным и локальным состоянием, а так же, сервисы — объекты, определяющие функции, которые выполняются всякий раз, когда изменяется состояние.

Читать далее

Мастер-контейнер для Docker сети

Время на прочтение3 мин
Охват и читатели9.8K

Упаковка веб-приложения в Docker - довольно простая задача, если разобраться с базовыми понятиями работы контейнеров. Готовим контейнер для бэкенда, для базы данных, для фронтенд-приложения - и вуаля, приложение полноценно функционирует. В большинстве случае стандартная настройка сети и конфигурация в Docker покрывает все нужды разработчиков.

Но в данной конкретной ситуации, несмотря на кажущуюся простоту структуры проекта, этой базовой конфигурации оказалось мало.

Читать далее

Почему форумы продолжают жить

Время на прочтение5 мин
Охват и читатели49K

Интернет — идеальная площадка для споров. Но есть большая разница, как спорить. Или это эмоциональная склока, где собеседники наскакивают друг на друга как петухи и стремятся побольнее клюнуть. Или размеренная дискуссия, которая продолжается неделями, где собеседники по большинству вопросов согласны друг с другом. Они спокойно и неторопливо доносят до собеседника информацию, которой у того не хватает.

Разгорячённые петухи и спокойные интеллектуалы — одни и те же люди, просто на разных сайтах. То есть сама платформа как бы вынуждает людей общаться тем или иным способом. В некоторых условиях неторопливое конструктивное общение практически невозможно, а в других — поощряется. Что это за условия?

Или спросим иначе: почему старые форумы продолжают существовать в 2023 году и там сохраняется своё коммьюнити (преимущественно, по специализированным темам)? Хотя, вы наверное уже догадались.
Читать дальше →

Управление состоянием в React приложениях

Время на прочтение3 мин
Охват и читатели8.4K

Всем привет!

Все мы прекрасно знаем что построить полноценный стор на react context достаточно тяжело, а оптимизировать его ещё тяжелее.

А что если я расскажу как это можно сделать быстро и просто?

Читать далее

Доступная отказоустойчивость для вашего сайта

Время на прочтение27 мин
Охват и читатели13K

Возможно, вы уже попадали в ситуацию, когда во время пика продаж сервер, на котором расположен ваш интернет-магазин или другой проект, приносящий прибыль, выходит из строя.

К сожалению, даже надежная техника может отказать в самый неподходящий момент. На сервере могут возникнуть проблемы с дисками, дисковыми и сетевыми контролерами, оперативной памятью, блоком питания и другим оборудованием. В дата-центре, где находится ваш сервер, могут отказать каналы передачи данных, электропитание или даже случиться пожар.

Конечно, можно отремонтировать сервер или установить новый в том же или в другом дата-центре. Но на ремонт или аренду нового сервера с последующей подготовкой его к работе, на восстановление данных из бекапа может уйти очень много времени.

А есть ли способы, защитить ваш интернет-магазин или другой сервис от таких проблем?

Да, конечно, есть, и не один, но также есть и множество нюансов.

К сожалению, обычно отказоустойчивое решение стоит очень и очень дорого. Даже в простых конфигурациях ежемесячные расходы могут достигать 100–200 тысяч рублей и больше. Немало средств придется потратить и на первоначальную настройку. Но есть и недорогие решения.

Эта статья поможет вам настроить доступный вариант отказоустойчивости, созданный на базе технологии VRRP (Virtual Router Redundancy Protocol) и сервиса keepalived.

Такой вариант подойдет, если у вас нет возможности использовать, например, весьма дорогостоящие в эксплуатации контейнеры, систему Kubernetes или отказоустойчивые облака, а весь проект размещается на одном сервере. Описанная в статье технология будет полезна, если многократное увеличение расходов на оборудование и сопровождение при внедрении отказоустойчивости крайне нежелательно.

Читать далее

Экстремально уменьшаем размер NPM пакета

Время на прочтение21 мин
Охват и читатели8.7K

Однажды я захотел создать небольшую NPM библиотеку по всем “best practices” - с покрытием тестами, написанием документации, ведением нормального версионирования и changelog'а и т.п. Даже написал пару статей, которые в деталях описали, какие вопросы решает библиотека и как её использовать. И одной из интересных для меня меня задач при создании библиотеки была задача по максимальному уменьшению размера выходного NPM пакета - того, что в конечном итоге в теории будет использовать другой программист. И в этой статье я бы хотел описать, к каким методам я прибегал для того, чтобы достигнуть желанной цели.

Читать далее

Взлет и падение Vuetify. Некролог

Время на прочтение8 мин
Охват и читатели25K

Vuetify - один из самых популярных Material Design фреймворков для Vue, которому недавно исполнилось 6 лет. И 6 января 2023 года его основатель заявил, что проект Vuetify перестал окупаться и он ищет работу. Отсюда - некролог в названии статьи.

Статья состоит из шести небольших частей, в которых мы пробежимся от первой версии до третьей, посередине разобрав, как фреймворк обновлялся до Vue 3, будем вместе смотреть за поведением основателя движка, а также тем, как можно справиться с переходом на Vue 3, пожалуй, хуже, чем кто-либо еще, включая команду Nuxt.

В этом, надеюсь, преждевременном некрологе я расскажу, где Vuetify был 6 лет назад, почему он был так популярен, где он сейчас и как вошел в кризисное состояние.

Погнали!

Это ужасно бесит — подборка косяков, постоянно встречающихся от сайта к сайту, от приложения к приложению

Время на прочтение5 мин
Охват и читатели38K

Каждый день мы пользуемся десятками различных мобильных приложений и посещаем десятки, если не сотни, всевозможных сайтов. Часто при этом мы сталкиваемся с какими-то их неприятными особенностями — что-то сделано недостаточно продуманно, где-то разработчик запилил фичу спустя рукава. И всё бы ничего, но некоторые из этих моментов по-настоящему вездесущи, встречаются ежедневно и неимоверно раздражают.

В этой статье я попытался перечислить некоторые из таких наиболее распространённых косяков. Если вы отвечаете за разработку/дизайн/менеджмент какого-либо сайта или приложения, пожалуйста, никогда так не делайте. Правда, ну сколько можно...

Читать далее

Популяризация JSON-RPC (часть 1)

Время на прочтение8 мин
Охват и читатели58K

Для передачи данных по сети есть хорошо зарекомендовавшие себя стандарты - например, SOAP, gRPC, AMQP, REST, GraphQL.

При создании вебсайтов малой, средней и большой сложности с потоками данных к бэкенду и обратно в JSON формате обычно используются последние два с их вариантами. Верней, только варианты, потому что REST и GraphQL - ресурсо-ориентированные стандарты. Это как бы просто перенос элементарной работы с базой данных на клиента (хотя под "ресурсом" может пониматься и абстракция). Обычно таких запросов не больше трети от всего бэкенд API.

Попытка сделать весь API максимально RESTful страшно раздувает код и грузит сеть. Потому что остальные две трети запросов - в форме команд на бэкенд проделать какие-то действия, слабо отображающиеся на CRUD над некими ресурсами. И вариантов послать такие запросы достаточно много. Даже, чересчур.

Читать далее

Изучаем Python за 6 месяцев. Подробный план обучения

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели436K

Простой и красивый синтаксис, множество библиотек под самые разные задачи и большое комьюнити делают Python одним из самых популярных языков программирования на сегодняшний день, который активно используется в data science и машинном обучении, веб-разработке и других областях программирования.

Когда я начал изучать питон, у меня возникло несколько вопросов.

Читать далее

Ближайшие события

Оптимизация графики для небольших сайтов: quetzli, webp, avif

Время на прочтение7 мин
Охват и читатели7.3K

Как мы оптимизировали показ изображений на сайте GrinDin.ru.

Всё началось примерно 10 лет назад, когда захотелось, чтобы вот этот вот контейнер выглядел прилично, не имел явно зазубренных граней, но при этом загружался за разумное время.

Читать далее

Удобный прогноз северного сияния: в цветах и графиках

Время на прочтение10 мин
Охват и читатели18K

В начале 2022 года я съездил в самостоятельное путешествие за северным сиянием. Это оказалось прекрасно, кроме этапа планирования. Все сайты с прогнозами «северных огней» выглядели странно и едва помогали собраться, но зато предлагали купить в пару кликов тур и ни о чем не переживать. Тур мне был не нужен, а вот хороший прогноз — да.

В конце лета я решил, что хочу написать свой небольшой опенсорс сайт, где будет просто и удобно узнать прогноз сияния самым обычным туристам вроде меня. Рассказываю, что из этого получилось.

Читать далее

Почему вам стоит использовать Styled Components

Время на прочтение7 мин
Охват и читатели21K

Привет Хабр! Недавно мне попался на рефакторинг один сайт написанный одним студентом. Он был реализован не лучшим образом и уже давно следовало бы его исправить. И вот наконец у меня выдалось свободное время на рефакторинг. Сайт был написан на Next.js, для написания стилей использовались SCSS Modules. А так как я на своих проектах уже давно использую Styled Components тут же в глаза бросился дискомфорт от использования обычного SCSS. И в этой статье я вам расскажу что же это за дискомфорт и как же Styled Components позволяет от него избавиться.

Читать далее

Как из браузера открыть папку в проводнике Windows

Время на прочтение2 мин
Охват и читатели38K
Представьте, что у вас возникла необходимость прямо с веб-страницы заказа в вашей CRM-системе открывать папку с файлами, которые к этому заказу относятся. Но не просто отображать содержимое папки, а прямо на компьютере открывать проводник с этой папкой.

К сожалению, сделать это «в лоб» не получится. Во-первых, браузеры умеют открывать только веб-страницы, а не программы на компьютере. Во-вторых, политика безопасности браузеров запрещает доступ ко всему, что явно не разрешено, тем более, доступ к файловой системе.

Вы можете резонно предположить, что есть протокол file:// (я позволю себе использовать здесь и далее слово протокол, хотя правильнее, конечно, схема URI), который позволяет браузерам открывать локальные файлы, но с ним также есть две проблемы:

1) он не может отобразить список файлов в папке;
2) такие ссылки нельзя открывать с внешних (не локальных) веб-страниц.

Чтобы решить данную проблему, мы будем использовать свой протокол с собственным обработчиком. Метод будет работать в Windows и потребует некоторых (очень простых) действий на компьютере.
Читать дальше →

История про Growth hacking на практике

Время на прочтение3 мин
Охват и читатели2K

Всем привет! Меня зовут Андрей Никишин, я бэкенд-разработчик hh.ru в команде “Карьерные сервисы”. Существует распространенное мнение, что hh — это просто сайт с вакансиями и резюме, но это совсем не так.  У нас есть множество сервисов: от досуга и развлечений до построения карьеры. И количество сервисов постоянно растет — и никогда не узнаешь заранее, какой из них выстрелит, а какой улетит в пустоту. Или узнаешь? В этой статье поделюсь кулстори, как мы нагроусхачили на новый сервис, и что из этого вышло. 

Читать далее

Субъективные итоги года в мире Python

Время на прочтение5 мин
Охват и читатели14K

Привет, я Михаил Корнеев, вместе с Григорием Петровым и другими ребятами из сообщества мы ведем подкаст о Python на русском. В прошлую пятницу мы собрались в онлайне обсудить, что запомнилось в уходящем году.  

Это — текстовая выжимка из выпуска. 

Читать далее

Изучение TypeScript — полное руководство для начинающих. Часть 4 — Литералы и дженерики

Время на прочтение5 мин
Охват и читатели23K

Привет! В новой части руководства будут рассмотрены такие важные понятия, как литералы и дженерики. Итак, приступим.

Предыдущие части:
Часть 1 - Введение и примитивы
Часть 2 - Ссылочные типы данных
Часть 3 - Классы и интерфейсы
Часть 5 - Строгий режим и сужение типов

Читать далее