Habr.com

Syndicate content Хабр
Все публикации подряд на Хабре
Updated: 41 min 17 sec ago

Mock-объект в рабочем коде, или как тестовый двойник помог решить проблему излишне связанного кода

Tue, 04/22/2025 - 22:06

На работе была поставлена задача: в главное веб-приложение нашей фирмы добавить метод формирования бланка в формате PDF «как вот в том микросервисе».

Форма бланка регулярно изменяется, и копировать её в веб-приложение означало нарушить принцип DRY («Не повторяйся») и обречь себя на постоянную двойную работу. Поэтому я решил оставить генерацию бланка в «том микросервисе».

«Тот микросервис» написан на PHP с использованием фреймворка Laravel, содержит большое число доменных объектов, экземпляры которых хранятся в БД MySQL, и имеет развитую систему API для обращения к своему функционалу.

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

Проблема возникла из-за «неприлично» высокой связанности объектов в «том микросервисе». Так, в шаблоне, на основе которого строился бланк, использовались не просто примитивные типы данных, а объект-форма. И шаблон обращался к методам-геттерам этого объекта. А объект, в свою очередь, использовал другой доменный объект в своём конструкторе для заполнения полей.

Читать далее

Ценообразование крипты в DEX-пулах. Заглянем под капот Raydium, Meteora, Orca

Tue, 04/22/2025 - 21:57

В прошлой статье я писал хайлевелно о том, как пришёл к разработке своего арбитражного бота на Solana.

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

Доступная вёрстка: как сделать сайт удобным для всех пользователей

Tue, 04/22/2025 - 21:57

Всем привет! В этой статье мы разберем одну из важнейших тем при разработке любого веб‑сайта — доступность.

Она позволяет сделать наш сайт или веб‑приложение доступным максимальному количеству пользователей. И под максимальным количеством имеются ввиду не только пользователи со слабыми устройствами или интернетом, для которых мы должны предоставить максимально оптимизированное решение, но и пользователи с ограниченными (постоянными или временными) возможностями: люди без слуха, зрения, без возможности использовать мышь или клавиатуру для взаимодействия с контентом веб‑сайта.

Для чего же нам нужно работать над доступностью? Ответ напрашивается сам собой – расширение аудитории и привлечение новых клиентов (если вы оказываете услуги). По данным AccessiCart, при улучшенной доступности мы увеличиваем потенциальную аудиторию до 25%. (Ссылка на статью)

Помимо расширения аудитории, улучшение доступности положительно влияет на органический трафик (переходы на сайт из поисковых систем). Исследование, проведенное Semrush, показало, что 73,4% сайтов, внедривших решения по доступности, зафиксировали рост органического трафика, при этом 66,1% из них отметили увеличение трафика от 1% до 50%. (Ссылка на статью)

Здесь мы рассмотрим как улучшить доступность с двух сторон: оптимизации и взаимодействия с контентом. Добиться этого можно с помощью самых базовых технологий разработки: HTML & CSS & JS.

Читать далее

Рептилоиды победили… но это не точно

Tue, 04/22/2025 - 21:25

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

Читать далее

Прошло одно из интересных событий отечественной индустрии разработки игр в ВШБ

Tue, 04/22/2025 - 21:00

12 апреля 2025 года в конференц-зале Высшей Школы Бизнеса НИУ ВШЭ собрались игровые разработчики и инвесторы для обмена опытом и новыми идеями.

В статье рассказали, о чём говорили спикеры и поделились записями выступлений!

Читать далее

Брокер сообщений своими руками

Tue, 04/22/2025 - 20:28

В эрланге (и эликсире) мне всегда недоставало способа организовать «потоковый» обмен сообщениями, наподобие того, который обеспечивает какой-нибудь Message Broker. Нормальные разработчики смиряются с ограничениями, которые им задают их фреймворки: в Финиксе есть PubSub, в OTP — :gen_event, в эликсире — депрекейтнутый еще до рождения GenEvent.

Так родилась библиотека Antenna, которая предоставляет все те возможности, которые обычно обеспечиваются посредством вкрячивания дополнительной зависимости от брокера сообщений. Требования, которые я к ней предъявлял, были следующими:

узнать, какими именно

[Перевод] Секунды с начала эпохи Unix

Tue, 04/22/2025 - 20:05

Это не новость, но вопрос всплывает достаточно часто, поэтому я считаю, что проблему нужно объяснить кратко. Люди, и я в том числе, обычно говорят, что время POSIX, также известное как время Unix — это количество of секундпрошедших с эпохи Unix, то есть с 00:00:00 1970-01-01.

Но это не так. Точнее, не так в смысле, подразумеваемом большинством. Например, сейчас у меня на часах 2024-12-25, 18:51:26 UTC. Время POSIX равно 1735152686. Прошло 1735152713 секунд с эпохи POSIX. Число времени POSIX на двадцать семь секунд меньше.

Причина в том, что время POSIX вычисляется в IEEE 1003.1 из Coordinated Universal Time. Стандарт предполагает, что каждый день — это ровно 86400 секунд. Цитата:

Читать далее

Исповедь. Опыт. Инди‑геймдев в UE5: практический гид для новичков

Tue, 04/22/2025 - 19:44

В 2024 году я заработал первый миллион, продавая ассеты на UE Marketplace, а в 2025 проверяю их актуальность в эпоху ИИ. Зовут Меня Хамзат, в UE с 2019 года.

ДЛЯ ДЕЕСПОСОБНЫХ

Технологии на службе мира: Почему когнитариат должен объединиться против милитаризации

Tue, 04/22/2025 - 19:39

Чтение книги The Technological Republic за авторством генерального директора компании Palantir Technologies Алекса Карпа сподвигло меня на следующие размышления.

Читать далее

Как получить дистрибутив «Альт СП»?

Tue, 04/22/2025 - 19:18

«Альт СП» - сертифицированная ФСТЭК России операционная система. Приобрести лицензию могут только юридические лица, государственные и муниципальные органы.

Если вам нужна актуальная версия «Альт СП» для тестирования, отправьте запрос на официальном бланке организации с указанием ИНН в электронном виде (PDF) на почту sales@basealt.ru на имя генерального директора «Базальт СПО».

Что указать в запросе:

Читать далее

Как довести нейросеть до экзистенциального кризиса

Tue, 04/22/2025 - 18:43

Я живу в киберпанке: у меня виртуальная работа, за которую я получаю виртуальные деньги, моя личность рассыпана по интернету, я разговариваю с роботами про жизнь, а они веселят меня своими анекдотами.

Читать далее

Звуки музыки Super Nintendo

Tue, 04/22/2025 - 18:01


В прошлый раз мы заглядывали под капот 16-битной игровой консоли Sega Mega Drive и смотрели на бобину устройство звуковой системы. Сегодня повернёмся к Сеге задом, к SNES’у передом, и проделаем то же самое: рассмотрим устройство звуковой системы в изделии конкурирующей организации, Super Nintendo.

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

Отлаживаем приложение вместе со SwiftUI Instruments

Tue, 04/22/2025 - 17:56

Apple по доброте душевной поделилась с разработчиками инструментом отладки SwiftUI. Удобный он или не очень — разберёмся вместе с Surf iOS Team. 

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

Как мы выводили FinTech на рынок и тестировали первые гипотезы

Tue, 04/22/2025 - 17:47

Сегодня хочу рассказать про интересный кейс из FinTech - SaaS-решение для экспресс-анализа финансовой отчётности. Этот кейс можно рассматривать как идеальный пример подхода фаундеров к процессу создания продукта.

Читать далее

Путеводитель по сетевым терминам: Часть 1

Tue, 04/22/2025 - 17:35

Мы в RDP знаем о сетевых технологиях всё и даже больше. А потому решили поделиться с читателями Хабра небольшим путеводителем по сетевым терминам. Уверены, что он пригодится тем, кто хочет узнать больше о тонкостях этой сферы.

Итак, часть первая...

AI Networking – ИИ-ускорение сети. Совокупность алгоритмов и методик машинного обучения для анализа данных, обнаружения сценариев и принятия решений для усовершенствования производительности, безопасности и эффективности.

Частная сеть 5G – выделенная мобильная сеть, развёрнутая внутри частной среды и управляемая внутри неё: это может быть университетский кампус, отель или стадион. В отличие от общественных сетей 5G, которыми могут пользоваться все, частные сети 5G ограничены для использования в рамках конкретной компании или организации. Несмотря на значительные преимущества технологии, Частная сеть 5G требует значительных инвестиций в развитие и поддержку.

Network slicing – технология, которая помогает эффективно использовать беспроводную сеть, чтобы настроить виртуальную сеть 5G под пользовательские нужды.

Open RAN (ORan) – инициатива по разработке и построению радиосетей 5G с помощью программно-определяемых технологий и универсальных, независимых от поставщика программных средств.

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

Далее

1С УПП vs 1С ERP: переходить или модернизировать? Можем ли продолжать работу без смены платформы?

Tue, 04/22/2025 - 17:11

Можно ли продолжать работать на 1С УПП в 2025 году, или переход на 1С ERP неизбежен? В статье разберём ключевые аргументы обеих сторон, оценим технические и организационные риски, реальные затраты на миграцию и сценарии, при которых модернизация окажется разумной альтернативой полной замене платформы. Без эмоций — только факты, цифры и практика.

Читать далее

Cypress + axe-core: быстрый старт тестов на доступность

Tue, 04/22/2025 - 17:08

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

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

Эта статья - своеобразный мини-гайд для быстрого старта вместе с Cypress и axe-core. 

Почему такое сочетание технологий? 

Axe-core - это надежный движок, соответствует стандартам WCAG. Он проверяет действительно реальные проблемы: контраст, aria-label, роли, альтернативный текст. Его легко интегрировать.

Cypress - удобный фреймворк, с огромным количеством функций “из коробки”. Легкая установка, большое количество примеров. Сохраняет скриншоты, делает запись видео, идеален для пользовательских тестов.

Typescript - мой любимый инструмент. Требует чуть больше времени при настройке проекта, но зато в дальнейшем помогает выявлять явные ошибки.

Читать далее

[Перевод] Астрономы следят за пробуждением чёрной дыры в прямом эфире

Tue, 04/22/2025 - 17:04

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

Сверхмассивная чёрная дыра в центре галактики SDSS1335+0728 тихо спала на протяжении десятилетий. Но в 2019 году она внезапно засветилась, и астрономы зафиксировали вспышку как в оптическом, так и в рентгеновском свете. Галактика, расположенная на расстоянии около 300 миллионов световых лет от нас, переживала пробуждение своей центральной чёрной дыры. Астрономы назвали это новое активное галактическое ядро «Ански».

Читать далее

Качество требований в IT-проектах

Tue, 04/22/2025 - 17:04

Качество требований в IT-проектах — тема, которая редко обходится без болезненных вопросов и неочевидных ответов. Эта статья — не о критериях идеальных требований (их мы касаться не будем), а о том, как можно выстроить работу команды, чтобы этих критериев достигнуть. В основе статьи реальный кейс: я расскажу о конкретных сложностях, с которыми мы столкнулись на одном из проектов, о причинах этих проблем и методах, которые помогли не только исправить положение, но и применить данный подход на других командах.  

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

Когда мы начали проект и приступили к работе, неожиданно столкнулись и с проблемами в подготовке качественных артефактов — тех самых User Story, которые нужно было передать разработчикам. На груминге (у нас в команде «Story Refinement») постоянно возникали вопросы: истории одна за другой отправлялись на доработку по разным причинам. Позже, уже на этапе разработки, часть требований вновь возвращалась с замечаниями: требовались дополнительные уточнения. 

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

Читать далее

Как сделать централизованное логирование и крепко спать по ночам

Tue, 04/22/2025 - 17:00

Мы начинали с обычного ELK-стека, логи приходили на logstash, записывались в Elasticsearch, а пользователи смотрели их в Kibana. Потом в эту схему добавилась Kafka, так как мы понимали, что на пиках нагрузок не успеваем записать все логи в Elasticsearch. Всё это располагалось в одном ЦОДе, а в Kafka была единая очередь. В результате горизонтального масштабирования Elasticsearch разросся до 30+ нод. Данная схема справлялась с нагрузкой в 100 тысяч документов в секунду.

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

Привет, Хабр! На связи Филипп Бочаров, руководитель платформы наблюдаемости и мониторинга для более 400 продуктов экосистемы МТС, и Юлия Тальцкова, ведущий инженер сервиса логирования и кластеров Open Search с более 400 терабайтами логов клиентов. Этот материал написан на основе нашего доклада для конференции Highload++

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

Читать далее

Who's online

There are currently 0 users and 2 guests online.