Как стать автором
Поиск
Написать публикацию
Обновить
523.25

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

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

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

JavaScript. Как сделать невероятно быстрый многопоточный Data Grid на 1 000 000 строк. Часть 2/2: работа с потоками

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров7.2K

Demo | GitHub

Особенности Fast Data Grid:
— Невероятно быстрый
— Многопоточный
— Всего 523 строчки кода
— Нет зависимостей
— Vanilla JavaScript

Попробуйте скролл и поиск по 1 000 000 строк — Fast Data Grid.

В статье расскажу про работу с потоками.

Читать далее

HTML и CSS ошибки, влияющие на доступность. Мой опыт и моего незрячего знакомого Ильи. Часть 12

Время на прочтение6 мин
Количество просмотров3.3K


Хабр, я снова пришёл к вам с практическими советами про доступность вместе с Ильей. Мы показываем, как HTML и CSS могут улучшить или ухудшить её. Напоминаю, что Илья — мой незрячий знакомый, который помогает мне найти наши косяки в вёрстке.


Сегодня мы рассмотрим следующие аспекты:

  • что можно сделать лучше для пользователей с дислексией;
  • как незаметно улучшить интерфейс для пользователей с травмой кистей рук;
  • есть ли сложности с сокращениями для пользователей скринридера.

Давайте начнём!

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

Как аргументированно попросить повышение после испытательного срока джуниору?

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров2.2K

Во-первых постараюсь объяснить почему я хочу больше:)
По итогам собеседования меня взяли на позицию джуниор фронтенд разработчик в одну из московских айти компаний на удаленку. И вот какие были условия на момент принятия оффера
- Позиция джуниор фронтенд разработчик
- Будет ментор у которого всегда можно будет спросить
- Испытательный срок 3 месяца

В итоге узнается что ментор это такой

Читать далее

Для защиты своего сервера я использую zip-бомбы

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров86K

Основной объём трафика в вебе возникает из-за ботов. По большей части, эти боты используются для обнаружения нового контента. Это читалки RSS-фидов, поисковые движки, выполняющие краулинг вашего контента, а сегодня и боты ИИ, собирающие контент, чтобы скармливать его LLM. Но есть и зловредные боты. Их создают спамеры, скрейперы контента и хакеры. На моём прежнем месте работы бот обнаружил уязвимость Wordpress и встроил в наш сервер зловредный скрипт, а затем превратил машину в ботнет, используемый для DDOS. Один из моих первых веб-сайтов был полностью выдавлен из поиска Google из-за ботов, генерирующих спам. Мне нужно было найти способ защиты от этих ботов, поэтому я начал пользоваться zip-бомбами.

Читать далее

Cookie Store API

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров1.7K



До недавнего времени программный доступ к куки в браузере осуществлялся через API document.cookie — простой строковый геттер/сеттер. Для получения одного файла куки приходилось разбирать всю строку вручную и преобразовывать ее в удобный формат. А чтобы записать куки, нужно было сначала сформировать структурированные данные, затем сериализовать их в строку и только после этого присвоить значение document.cookie. Разработчики часто используют популярные библиотеки, например js-cookie, которые делают работу с куки гораздо удобнее.

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

Понимая реактивные системы: асинхронные вычисления

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров3.5K

Сегодня мы продолжим разбирать базовые концепции реактивности, изложенные Райаном Карниато (Ryan Carniato), автором SolidJS. Если ранее мы затрагивали производные и их планирование, то сегодня разберём более сложную тему — асинхронность в контексте реактивного программирования. Эта концепция добавляет новый уровень сложности, поскольку требует учёта динамических процессов, выходящих за рамки синхронных операций.

Читать далее

Реализация протокола SRP на эллиптических кривых

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров504

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

Статус документа: запрос на обсуждение сообществом (Request For Comments).

ВНИМАНИЕ: Это учебный криптопротокол, не рекомендуется его реализовать на продуктивных системах до тех пор, пока он не пройдет экспертизу специалистами.

Назначение статьи: привлечь к первичному аудиту специалистов по эллиптическим кривым (профильных математиков и криптоаналитиков)

Участники взаимодействия: Алиса - клиент веб-сервера, Боб - веб-сервер (или его владелец) с ограниченным доступом, Ева (Eve) - пассивный слушатель сообщений, Меллори - активный злоумышленник, пытающийся вмешаться во взаимодействие Алисы и Боба, проксировать соединение, выдавая себя за Боба для Алисы, и за Алису для Боба.  Будем рассматривать наихудший сценарий, когда Меллори обладает некоторой важной информацией, помогающей ему вмешиваться в канал (он обладает верификатором V Алисы, в результате взлома веб-сервера Боба).

 

Необходимые параметры взаимодействия:

i - идентификатор Алисы на сервере Боба. Это может быть логин, электронная почта или 128-битное  произвольно выбранное натуральное число .

x - секрет Алисы. Это может быть 128-битное случайно выбранное число или результат криптографического преобразования пароля Алисы: x = Scrypt(Password), где

Scrypt - адаптивная криптографическая функция формирования ключа на основе пароля, созданная офицером безопасности FreeBSD Колином Персивалем для противодействия атакам методом грубой силы.

Читать далее

Сигналы, роутинг, реактивность, Fusor приложение

Время на прочтение2 мин
Количество просмотров768

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

Читать далее

Небольшая утилитка WP-Seeders для Вордпресса

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров1.5K

Массовая генерация разделов для таксономии в WP через массив и команду wp-cli.

Прикольная штука вроде, удобная.

Открыть

Оценка задач в IT: делать или не делать — вот в чем вопрос?

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров2.7K

Оценивать ли время на выполнение задач в IT? А может быть просто пойти и начать делать? А может быть можно оценить объем задач, а не время? И что же вообще нужно и можно оценить? 

В этой статья я рассказываю про 4 метода оценивания задач в IT — от угадывания до хороших и честных расчётов.

Читать далее

Как правильно пофиксить INP и весь Performance: опыт команды ОК

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров1.1K

С 12 марта 2024 года метрика FID (First Input Delay) из семейства Core Web Vitals заменена метрикой INP (Interaction to Next Paint), которая оценивает скорость отклика сайтов. При этом, согласно оценке Google, по метрике FID было оптимизировано 93% сайтов, но лишь 65% — по INP. 

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

Меня зовут Кирилл Радыгин. Я руководитель фронтэнд направления в компании Одноклассники. В этой статье я расскажу, как команда ОК адаптировала соцсеть под изменившийся набор метрик оценки перформанса.

Читать далее

Не так страшен Битрикс24, как о нем говорят: практический опыт модульной доработки для бизнеса

Уровень сложностиПростой
Время на прочтение21 мин
Количество просмотров897

Всем привет, я Сергей — ведущий программист в e-commerce агентстве KISLOROD.

Чаще всего я решаю задачи разработки для сайтов на 1С-Битрикс, но также иногда работаю с Битрикс24. Сегодня хочу рассказать о модульной доработке Б24 в одном из кейсов.

Читать далее

Как я строю удобную инфраструктуру вокруг Python-проектов: линтеры, Poetry, CI/CD и Docker

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров13K

Poetry вместо pip, Ruff вместо flake8, FastAPI вместо ручной документации. Что реально упрощает жизнь Python-разработчику сегодня — на примерах и с реальными конфигами.

Читать далее

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

Как /etc/hosts поломал редактор сайта

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров6K

Когда я работал над техническим постом о ресолвинге DNS, то столкнулся с чем-то неожиданным. Каждый раз, когда я вводил пути к файлу hosts (/etc/h*sts — здесь я намеренно его обфусцировал, чтобы не вызвать ту самую ошибку), редактор Substack показывал «Network Error» и отказывался автоматически сохранять черновик.

Читать далее

Как мы автоматизировали учет в IT-команде и почему это не всегда было радужно

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров2.4K

Опыт автоматизации финучета в небольшой IT-команде — честно, с мемами и фейлами. Как ушли от Excel, почему сначала все пошло не по плану, что сэкономили, где накосячили и зачем все-таки это сделали. Без волшебных кнопок, но с выводами, которые помогут другим не наступить на те же грабли.

Читать далее

Эволюция архитектурных паттернов в бэкенд-разработке: от MVC к микросервисам

Время на прочтение10 мин
Количество просмотров6.6K

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

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

Читать далее

Зачем переписывать сайт с нуля?

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров3.6K

Расскажу о признаках неизбежности «перезапуска» проекта и разработки новой версии сайта с «чистого листа». Рассмотрим причины, по которым сайт оказывается в такой запущенной стадии. Найдем позитивные моменты в данной, казалось бы, наглухо негативной истории. Немного углубимся в технику процесса. В конце — чек‑лист для проверки своего проекта!

Читать далее

DevOps инфраструктура для стартапов ч.1

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров10K

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

Когда вы только начинаете делать стартап, инфраструктура кажется чем-то второстепенным. Важнее MVP, фичи, дизайн, пичдек. Но в какой-то момент всё внезапно перестаёт помещаться на одном сервере, руками деплоить становится больно, SSL не обновляется, а продакшн падает из-за перегрузки или забытого docker-compose up.

Kubernetes? Слишком сложно, долго и дорого. Монолит? Неудобно масштабировать. Мы искали третий путь — и нашли его.

Читать далее

Логирование действий пользователя в Joomla. Создание плагина Actionlog

Время на прочтение16 мин
Количество просмотров534

На вашем сайте, внутреннем портале, в интернет-магазине кто-то что-то сделал, а потом всё сломалось: сайт открывается криво (или не открывается вообще?), перестали работать фоновые задачи в планировщике, установились неправильные скидки всем пользователям на все товары... Предположим, что с безопасностью у вас всё хорошо: Joomla свежая, актуальная, расширения - тоже. Да и в логах сервера и логах Joomla тоже чисто... Тогда остаётся ещё один источник информации - Лог действий пользователей Joomla. Основная его задача - помочь быстро найти кому настучать по рогам причину и устранить её.

Всё, что связано с действиями в админке - может логироваться: от обновления системы и компонентов, изменения настроек до редактирования и сохранения конкретных элементов (статьи, товары, категории и т.д.) и загрузки файлов в медиа менеджере. Лично мне нередко этот функционал помогал найти тех контент-менеджеров, кто дублирует названия товаров, создавая дубли и тем самым негативно влияя на SEO. Или же вдруг обнаруживается недозаполненная, но опубликованная карточка товара, которой не должно было быть, но она появилась. И ладно если б это был единичный случай...

Читать далее

Как я создал клон Pinterest с использованием Vue 3 и FastAPI

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров4.6K

👋 Привет, Habr!

Вы когда-нибудь пытались найти качественный open-source клон Pinterest — с real-time функционалом, полноценной архитектурой, удобным UI и современной технологической основой? Я — да. И не нашёл. Поэтому решил создать свой.

Представляю вам Pinterest Clone — мой pet-проект, над которым я работал в одиночку 4 месяца, чтобы воссоздать не просто копию, а полнофункциональную платформу с реальным пользовательским опытом, максимально приближённым к оригиналу.

Читать далее

Вклад авторов