javascript
Интерактивная визуализация спортивных коэффициентов: что удалось, а что нет

Потянул live-данные с mygameodds co, собрал real-time графики на D3.js, столкнулся с диким хаосом в структуре данных, решил через нормализацию, но провалился с адаптивом.ЦельПостроить интерактивный дашборд, визуализирующий изменение спортивных коэффициентов в реальном времени. Аналог систем мониторинга, только вместо метрик — лайв-кэфы с букмекерского API.АрхитектураИсточник данных: mygameodds.coСтек:D3.js (визуализация)WebSocket (стриминг)TypeScript (вся логика)Vite + React (обвязка, рендер)Р…

  • вторник, 5 августа 2025 г. в 00:00:02
javascript
Почему стоит использовать Tagged Unions при разработке на TypeScript

👋 Привет! Меня зовут Александр, я работаю фронтенд-разработчиком в компании «МегаФон». Сегодня я хочу поговорить на тему Tagged Unions (размеченных объединений) и объяснить, почему они — ваш секретный инструмент для написания надежного TypeScript-кода.Улучшение типизации в TypeScriptВ динамично развивающемся мире веб-разработки создание надежного, масштабируемого и легко поддерживаемого программного обеспечения является ключевой задачей. TypeScript, будучи статически типизированным суперсетом J…

  • вторник, 5 августа 2025 г. в 00:00:02
habrahabr
Как я от нечего делать замедлил Postgres в 42 000 раз

Всех постоянно интересует, как сделать Postgres быстрее, эффективнее и всё такое, но никто не задумывался, как её замедлить. Да, большинству этих людей платят за то, чтобы они повышали скорость, но ко мне это не относится. Недавно я писал более полезное руководство, и мне вдруг пришла мысль, что кто-то должен попробовать создать такую конфигурацию Postgres, которая будет настроена на максимально медленную обработку запросов. Зачем? Сложно сказать, но вот такая возникла мысль.ПараметрыСделать эт…

  • понедельник, 4 августа 2025 г. в 00:00:11
habrahabr
Физика ошибок не прощает. Она догонит тебя на крыше и заставит платить (дважды)

Дисклеймер: я сознательно упростил описание, чтобы статья была интересна широкой аудитории. Написал я ее для блога ТЕХНОНИКОЛЬТелефон зазвонил в тот момент, когда я разбирал техническое задание на крупный объект. — Максим, у нас беда, — голос в трубке звучал обеспокоенно. — Крыша течет. Мы ее чинили год назад, а она все равно протекает. Можете приехать посмотреть?Я взглянул на календарь. Завал с проектами, команда занята подготовкой к сезону. Но в голосе клиента слышалось отчаяние — проблема яв…

  • понедельник, 4 августа 2025 г. в 00:00:10
habrahabr
Нерешённые вопросы о происхождении жизни

Наша родная планета просто переполнена жизнью. За более чем 4 миллиарда лет непрерывной биологической активности на нашей планете жизнь укоренилась практически в каждой нише — от глубочайших океанских впадин до внутренностей вулканических кратеров, от почти кипящих кислотных геотермальных источников до самых высоких заснеженных горных вершин. Живые организмы есть буквально повсюду, они хорошо приспособлены к своим экологическим нишам и способны извлекать энергию и/или питательные вещества из ок…

  • понедельник, 4 августа 2025 г. в 00:00:08
habrahabr
Флюсы и иллюзия чистоты: почему платы умирают молча

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

  • понедельник, 4 августа 2025 г. в 00:00:07
habrahabr
История о том, как я вытащил себя из бесконечной ленты и стал успевать все

«Минутка в инсте» - пятьдесят страниц спустяПросыпаюсь, тянусь к телефону, «на минуточку» захожу в Instagram* (*запрещённая соцсеть, ну вы поняли), сморкаюсь в мемы, новости, рилсы, комментарии. Спустя сорок минут уже нужно собираться, кофе не успел сварить, голова гудит — а я ни одной строки в документе не написал.Такое утро повторялось чаще, чем хотелось бы признавать вслух. В какой‑то момент стало очевидно: если я сразу кормлю мозг быстрым «сахаром» из ленты, он потом воротит нос от любой «б…

  • понедельник, 4 августа 2025 г. в 00:00:07
golang
Потоки, горутины, синхронизация и мьютексы в Go

Потому что 42...Go (Golang) создан для эффективной параллельной и конкурентной работы. Его killer feature — легковесные потоки выполнения, называемые горутины (goroutines), и мощные средства синхронизации. Приглашаю разобраться подробно.1. Что такое горутины и как они соотносятся с потоками?Обычные потоки (threads):В большинстве языков потоки создаются ОС, они "тяжёлые" (создание/переключение = дорого).Горутины (goroutines), это такой костыль go: Это "зелёные" потоки Go — намног…

  • понедельник, 4 августа 2025 г. в 00:00:05
javascript
Альтернативный способ хранения скриншотов в Playwright и способ их обновления

ВступлениеПривет! Меня зовут Вячеслав, я инженер по автоматизации тестирования в компании ROWI.Tech.В ходе автоматизации тестирования пользовательских интерфейсов зачастую используется такой подход как визуальное тестирование. Он позволяет поддерживать стабильность и отсутствие ошибок в отображении страниц.  Одним из инструментов, предоставляющих возможность автоматизации данного вида тестирования, является Playwright. В этой статье я расскажу о работе с визуальным тестированием в рамках упомян…

  • понедельник, 4 августа 2025 г. в 00:00:04