Как стать автором
Обновить

Разработка

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

Скриншот-тестирование фронтенда: руководство по применению в 2025 году

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

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

Часто приходилось видеть тесты опосредовано проверяющие визуальное отображение html-элемента, что-то в стиле expect(elem.classList.contains("visible")).toBe(true). Говорить о надежности таких тестов конечно-же не приходится, так как изменив содержимое css-селектора стилизующий данный класс, данный тест все еще будет зелёным, несмотря на то что по факту элемент будет скрыт.

Результат от подобных тестов вполне ожидаемый. Обновили версию UI-библиотеки и на всем проекте поехала верстка? Тесты зелёные. Случайно переопределили CSS-переменную и теперь вместо приятной тщательно подобранной дизайнером гаммы цветов вы видите лишь кислотно-вырвиглазную солянку? “Бывает, надо было ручками протестировать” - скажет менеджер.

Решить данную проблему нам поможет добавление скриншот-тестирования на проект.

Используя данный вид тестирования вкупе с классическими юнит- и е2е-тестами мы практически полностью избавляемся от необходимости ручного тестирования наших фронтенд-приложений.

Читать далее

Как я почти продал ник за $9500 в Telegram

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

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

Читать далее

SOLID, DRY, KISS, YAGNI и др. принципы разработки, пугающие новичка в IT

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

Разработка — это не только про код, но и про подходы. В этой статье я постарался собрать и объяснить ключевые принципы проектирования, которые часто упоминают в собеседованиях, в статьях на Medium и в комментариях на GitHub, такие, как SOLID, DRY, KISS, YAGNI, APO, BDUF, бритва Оккама.

📌 Что внутри:

1. Понятные объяснения без перегрузки теорией

2. Примеры на Java (но подойдут и другим разработчикам)

3. Иллюстрации и метафоры, чтобы не уснуть

Будет полезно как новичкам, которые только слышали про SOLID и др. подходы в проектировании, так и разработчикам, которые хотят освежить знания или взглянуть на принципы под другим углом.

Читать далее

Всё про Qdrant. Обзор векторной базы данных

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

Представьте, что вы создаёте умный поиск, который понимает не просто слова, а смысл текста. Или рекомендательную систему, способную угадывать желания пользователя на основе его действий и предпочтений. Для таких задач недостаточно обычных баз данных — нужны инструменты, способные оперировать векторами — числовыми представлениями смысла, визуальных образов или поведения. Здесь и появляется Qdrant.

Читать далее

О мягких и жёстких ссылках в Linux

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

Ссылки в Linux — это мощный инструмент, позволяющий указывать путь к файлам и каталогам. Существует два основных типа ссылок: жёсткие ссылки и мягкие ссылки (вторые также известны как символические ссылки или симлинки). Понимание различий между этими двумя типами поможет вам эффективно управлять файловой системой.

Читать далее

Deepin 25: китайский дистрибутив Linux с ИИ и обновленным DDE

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


26 июня 2025 года вышел релиз дистрибутива Deepin 25, который продолжает развивать собственную графическую среду Deepin Desktop Environment (DDE) и предлагает около 40 пользовательских приложений. В новом выпуске появились продвинутый ИИ-ассистент с голосовыми командами, атомарные обновления с резервными снапшотами, поддержка управления жестами и интеграция со смартфонами. Рассказываем, чем примечателен Deepin 25 и почему он заслуживает внимания.
Читать дальше →

Лучшие нейросети для создания игр

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

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

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

Читать далее

Скрэмбл для тех, кто ненавидит SQL в Go коде

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

Обращения к базе — одно из самых популярных действий бэкенд приложений, и чаще всего оно происходит с помощью SQL запросов. И есть несколько способов хранить запросы в коде: строка или константа непосредственно в качестве аргумента функции, билдер запросов или отдельно лежащий файл с SQL запросом, который эмбедится в Go код в момент сборки. Этот последний способ чаще всего можно найти по запросу типа «Golang embed SQL» и он действительно довольно хорош.

Читать далее

Продолжение повести о трёх мушкетёрах: какие подвиги совершили Bash, Ansible и Astrawizard

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

В землях, где каждый байт имеет значение и где волшебство скриптов и команд оживляет машины, продолжаются славные деяния наших героев — Bash, Ansible и Astrawizard. После первых побед они не сложили свои «мечи», а продолжили путь, полный новых вызовов и открытий.

Сегодня мы расскажем о том, какие ещё подвиги совершили наши мушкетёры в мире Linux. Их умения и опыт помогут нам разобраться в самых сложных задачах и сделать управление системами ещё более эффективным.

Будь как дома путник, Я ни в чём не откажу

Законы простоты

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

В книге «Законы простоты » Джон Маэда (из MIT) предлагает десять законов для баланса простоты и сложности в бизнесе, технологиях и дизайне — руководящие принципы для того, чтобы нуждаться в меньшем и на самом деле получать больше.

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

Читать далее

Практическое использование Kafka в микросервисных приложениях на примере Open Source платформы Ensi

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

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

Решать выше перечисленные проблемы можно разными способами. В своей работе в компании Greensight в качестве senior backend developer при разработке заказных проектов на базе Open Source платформы Ensi, я с коллегами перепробовал множество решений.

Данная статья описывает практическое использование Kafka в микросервисных приложениях для решения этих проблем.

Читать далее

gRPC, HTTP, Websocket — и все это один сервер

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

Однажды передо мной встала довольно интересная задача: обеспечить взаимодействие стороннего веб-приложения - и набора сервисов, имеющих gRPC интерфейс.
Нужно было проводить обработку данных от веб-приложения через конвейеры AI-агентов, собирать конечный результат, и отдавать его приложению. А также, что немаловажно, обеспечить наглядность мониторинга и управления всем хозяйством.
Мне потребовалось разработать собственный сервер на PHP, в котором поддержать три типа интерфейсов. Во-первых, RestAPI для веб-приложения. Во-вторых, gRPC-сервис для взаимодействия с AI-агентами. В-третьих, HTTP + Websocket для интерактивного мониторинга и управления.
Для этого пришлось создать новый продукт - который, возможно, кажется полезен и вам.

Читать далее

Разработка языков программирования в эру больших языковых моделей: ренессанс посредственности?

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

В исследовании языков программирования меня всегда наиболее привлекала их разработка.

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

Читать далее

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

Spinlock vs. Mutex vs. Semaphore: Разбираемся в синхронизации с Zephyr OS

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

Всем привет! Сегодня хочу углубиться в одну из самых важных тем в мире Zephyr OS — синхронизацию потоков и задач. Если вы хоть раз работали с k_thread_create, гоняли потоки туда-сюда и ловили bus fault, вы меня понимаете.

Когда задача одна — всё просто. Но как только вырастает многопоточность, задачи начинают драться за общий ресурс — и тут без надёжной синхронизации не обойтись. У Zephyr OS есть три главных инструмента для этого: spinlock, mutex и semaphore. Каждый со своим характером и подводными камнями.

Читать далее

Оптимизация индексов базы данных: проблемы, решения, практические рекомендации

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

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

Индекс — это как указатель в толстенном справочнике. Без него, чтобы найти нужный термин, вы обречены листать страницу за страницей. С ним — вы мгновенно открываете нужный раздел. Но что, если указатель сам размером с полкниги? Или ведет не туда? Такой помощник только вредит. С индексами в БД всё то же самое. Грамотная стратегия индексирования — это полет. Ошибочная — это бег в мешках по болоту.

Читать далее

Как CAPTCHA используются для установки стиллеров и троянов

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

Волна поддельных страниц CAPTCHA, которые обманывают пользователей, заставляя их вставлять вредоносные команды в диалоговое окно «Выполнить» (Windows Run). Используются файлы (например, MP3, PDF) с внедрённым запутанным JavaScript, распространяемым через фишинговые письма, вредоносную рекламу (malvertising) или SEO-отравление. Загрузки исполняются в памяти с использованием mshta.exe или PowerShell, что позволяет часто обходить традиционную файловую детекцию. Эти атаки обеспечивают эксфильтрацию данных, кражу учётных данных, удалённый доступ, развертывание загрузчиков через такие вредоносные программы, как Lumma Stealer, Rhadamanthys, AsyncRAT, Emmenthal и XWorm.

Читать далее

Трехканальный вольтамперметр на базе ESP32-S3 с записью данных в лог и передачей данных по WI-FI (YCHEV003)

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

Привет друзья, сегодня с Вами мы соберём трёхканальный вольтамперметр на базе ESP32-S3. Многие из Вас, уже долгое время ждали этот проект, поэтому при его сборке я учёл все Ваши замечания в комментариях под видео к вольтамперметру на Arduino, вольтамперметру на ESP8266 и сделал проект максимально простым, я избавился от большого количества пайки, новый вольтамперметр буквально можно спаять навесным монтажом, так как он состоит всего из 5 модулей. Так же избавился от ненужных компонентов, навроде датчика температуры, блока управления вентиляторами, так как модули, на основе которых мы будем с Вами собирать лабораторный блок питания уже имеют и датчики температуры, и могут управлять скоростями вентилятора, поэтому данные компоненты в новом вольтамперметре я упразднил.

Читать далее

29% взрослых не умеют надёжно уничтожать данные на ПК, ноутбуках и смартфонах

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


В 2024 году Управление комиссара по информации Великобритании (ICO) привело такие данные: 29% взрослых не знают, как надёжно удалить персональные данные со старых устройств.

Согласно опросу, 84% взрослых граждан обязательно удалят личные данные с устройства, прежде чем избавиться от него. Молодёжь меньше беспокоится об этом: 14% людей в возрасте 18−34 лет признались, что не станут стирать информацию с устройства, в то время как среди людей старше 55 лет таких всего 4%. Молодёжь зачастую не заботится об удалении личных данных (21%) и не волнуется о том, как эти данные могут использоваться (23%).
Читать дальше →

Когда 42 — это цифра: шумеро-вавилонская система счисления с глиняных табличек

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

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

Читать далее

Четвёртый (и предпоследний) шаг к повышению производительности Firebird

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

Данная статья является четвёртой частью перевода руководства по повышению производительности Firebird за авторством А.Ковязина и Э.Грегорио от 23.05.2024 (и потому продолжается сквозная нумерация пунктов), а так же текстовой расшифровкой соответствующего видео.

Читать далее