Pull to refresh
@resetmeread⁠-⁠only

Скромный пастух нулей и единиц…

Send message

Почему автотесты пропускают изменения в API и как это исправить с Pydantic

Level of difficultyMedium
Reading time8 min
Reach and readers9.6K

Приветствую, Хабр!

Меня зовут Владислав Тимашенков, я занимаюсь автоматизацией тестирования в ГК Infowatch.

Наша команда столкнулась с популярными болями автотестов для API:

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

И мы задались вопросом: какой инструмент для валидации контракта нам подойдёт?

В этой статье расскажем о нашем переосмыслении подхода к тестированию API с помощью внедрения Pydantic.

Читать далее

CSS для тех, кто спал и проснулся

Level of difficultyEasy
Reading time7 min
Reach and readers13K

За последние годы CSS сильно изменился: появились вложенность, новые селекторы, container queries и нормальная работа с темами. В этой статье - краткий разбор ключевых фич, которые позволяют писать меньше костылей и реже тянуть JS.

Проснуться

Работа в продуктовой команде — что это такое и зачем это нужно?

Level of difficultyEasy
Reading time8 min
Reach and readers6.5K

Привет, Хабр! Меня зовут Антон Батищев, я бэкенд-разработчик в продуктовой команде Циан. В этой статье поделюсь опытом: как устроена наша работа, какие плюсы мы видим в таком подходе и с какими проблемами сталкиваемся на практике.

Читать далее

Объяснение лямбда исчисления через Python

Level of difficultyHard
Reading time9 min
Reach and readers10K

Реализация ключевых конструкций лямбда‑исчисления на Python и объяснение их работы. Подойдёт даже тем, кто не очень знаком с Python.

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

Читать далее

Неочевидные нюансы миграции с Docker на Podman

Reading time7 min
Reach and readers16K

Миграция на Podman — вопрос достаточно интересный. И ответ на него достаточно простой — берете и мигрируете, там делов-то!

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

Читать далее

Все об устройстве WSPR с примерами на Python (часть 1)

Level of difficultyMedium
Reading time19 min
Reach and readers7.4K

WSPR — цифровой протокол, разработанный Джо Тейлором (K1JT) в 2008-2009 годах, с целью исследования распространения радиосигналов от коротковолновых передатчиков малой и сверхмалой мощности. В этой статье будут рассмотрены устройство и принципы работы протокола.

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

Читать далее

Практический расчет и изготовление преобразователя типа Joule Thief

Reading time8 min
Reach and readers28K

Практический расчет и изготовление повышающего преобразователя Joule Thief для питания светодиода от разряженной батарейки

В данной статье показано, как самостоятельно рассчитать и изготовить простой преобразователь Joule Thief, способный питать светодиод от одной батарейки AA или AAA.

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

Главная особенность этой схемы — возможность работы при очень низком напряжении питания. В некоторых случаях устройство продолжает работать даже тогда, когда напряжение батарейки падает до 0,3–0,6 В. 

Это позволяет эффективно использовать батарейки, которые уже считаются разряженными для большинства устройств

Читать далее

Apple хочет чтобы я купил Mac за 200к. У меня два приложения в App Store и ни одного макбука

Level of difficultyMedium
Reading time14 min
Reach and readers19K

У меня нет макбука. Но два моих приложения лежат в App Store. Рассказываю весь путь: регистрация Apple Developer из России, сертификаты без Xcode, автоматическая сборка через GitHub Actions. Три варианта: для вайбкодеров, программистов без мака и хардкорщиков.

Читать далее

10 веб-API, заменяющих многие библиотеки JavaScript

Level of difficultyEasy
Reading time18 min
Reach and readers14K

Современные браузеры тихо съедают экосистему JavaScript живьем.

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

Такой подход обходится дороже, чем кажется. Каждый дополнительный пакет увеличивает вес сборки, затраты на обслуживание, частоту обновления версий и риск отказа от проекта в долгосрочной перспективе. Нативные API-интерфейсы стоят пользователям 0 КБ данных, работают глубоко в движке (часто вне основного потока (main thread)) и используют оптимизации, недоступные библиотекам.

Читать далее

JavaScript: заметка о свойствах source ToggleEvent и closedBy HTMLDialogElement

Level of difficultyEasy
Reading time6 min
Reach and readers6.9K

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

В этой небольшой статье я расскажу вам о новом свойстве события toggle - source, а также о новом атрибуте HTML-элемента dialog - closedby.

Свойство source позволяет определять источник переключения видимости поповера (popover), а атрибут closedby позволяет декларативно управлять логикой закрытия dialog, но обо всем по порядку.

Читать далее

5 вопросов об английской грамматике, которые вы стеснялись задать

Reading time6 min
Reach and readers14K

Многим из нас не повезло с учителем английского. В итоге за годы изучения с нами остались не язык, а барьер, страх и ощущение, что «я не языковой человек».

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

1. Почему в английском фиксированный порядок слов?
2. Почему в английском обязательны артикли?
3. Куда исчезли падежи, и почему теперь так важны предлоги?
4. Почему после одних глаголов используется герундий, а после других — инфинитив?
5. Как возникли фразовые глаголы?

Если вас тоже волнуют эти вопросы, а ответы пока не ясны, обязательно загляните в статью.

Читать далее

Как перестать наступать на грабли в Go: набор рабочих рецептов

Level of difficultyMedium
Reading time10 min
Reach and readers15K

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

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

Читать далее

strace: отладка Linux-приложений через системные вызовы

Level of difficultyEasy
Reading time5 min
Reach and readers6.6K

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

Читать далее

Некоторые особенности VimL

Reading time13 min
Reach and readers8.2K

В этой статье я хочу рассказать о некоторых особенностях VimL, зачастую неочевидных, которые надо знать человеку, желающему написать хорошее дополнение для Vim. Для понимания статьи требуется знание vimscript и рекомендуется наличие как минимум одного написанного дополнения. Людям, не желающим написать своё собственное дополнение статья будет, по большей части, бесполезна.
Читать дальше →

Как написать постановку на разработку, чтобы ни у кого не было вопросов

Level of difficultyEasy
Reading time7 min
Reach and readers22K

Привет! Я лид системных аналитиков в департаменте корпоративных систем ЛАНИТ. В этой статье я расскажу, как писать качественные постановки на разработку информационной системы. 

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

Читать далее

Выбор статистического метода для A/B-теста: практическое руководство

Level of difficultyMedium
Reading time4 min
Reach and readers9.4K

Привет! Меня зовут Денис. Уже юолее 5 лет работаю Senior Product Analyst в крупнейших IT-компаниях России, включая Тинькофф. Разрабатывал системы аналитики с полного нуля, провёл огромное количество A/B тестов и знаю всю внутреннюю кухню больших корпораций изнутри.

Я совершил множество ошибок на своём пути – и теперь здесь, чтобы помочь именно тебе их избежать и пройти этот путь быстрее!

A/B-тесты давно стали стандартным инструментом в продуктовой и маркетинговой аналитике. Но на практике большинство ошибок происходит не на этапе запуска эксперимента, а при анализе результатов. Чаще всего причина в том, что статистический метод выбирается «по привычке», без учёта типа метрики и свойств данных.

В этой статье я собрал практическую логику выбора методов анализа A/B-тестов. Без углубления в теорию, но с пониманием, почему в одном случае работает χ², а в другом t-test может привести к неверным выводам.

Читать далее

Mem-векторы: как сохранить 1500 токенов в одном векторе и зачем это нужно

Level of difficultyMedium
Reading time20 min
Reach and readers7.1K

Каждый, кто работал с большими языковыми моделями (LLM), знает про ограничение длины контекста: модель не может напрямую обработать текст, превышающий определённое число токенов. Это накладывает ограничения на работу с длинными документами и обширным контекстом. Но что если бы мы могли упаковать длинный текст в один-единственный вектор и скормить его модели как обычный токен? Звучит фантастично, однако свежие исследования показывают, что это возможно – такие “mem-векторы” позволяют сохранить сотни и даже полторы тысячи токенов информации в одном эмбеддинге. Это принципиально иной подход, нежели классическое сжатие данных, и он сулит интересные применения.

Mem-вектор (от “memory vector”) – это специально обученный вектор, который хранит содержание целого текста. Идея в том, что если модель умеет предсказывать текст, то можно подобрать такой вектор на входе, при котором замороженная (неизменяемая) LLM сама декодирует исходный текст. Иначе говоря, mem-вектор играет роль «семени», из которого предобученная модель порождает заложенное в нём сообщение. В этой статье разберём, как это работает, почему вообще возможно “запихнуть” роман в один вектор и какие ограничения при этом появляются. Также сравним mem-подход с классическими алгоритмами сжатия (Huffman, арифметическое кодирование, zlib и др.), обсудим последние научные работы на эту тему и возможные применения: от Retrieval-Augmented Generation (RAG) до передачи новых знаний замороженным моделям. Центральная мысль: mem-векторы – это не просто компрессия текста, а способ напрямую скормить модели смысл и знания, минуя последовательное чтение токенов.

Разбираемся далее

CQRS на практике: как проектировать системы, которые не ломаются под нагрузкой

Level of difficultyMedium
Reading time7 min
Reach and readers11K

Привет, Хабр! Я сегодня хочу разобрать одну из самых мощных, но часто неправильно понимаемых архитектурных концепций — CQRS. Если вы уже переросли уровень «просто писать CRUD» и задумываетесь о том, как строить системы, которые будут масштабироваться и оставаться производительными — эта статья для вас.

Читать далее

От «обезьяньей» работы к Smart-анализу: как выполнить предобработку данных для моделей

Level of difficultyEasy
Reading time5 min
Reach and readers10K

От «обезьяньей» работы к Smart-анализу: как правильно готовить данные для моделей.

Что такое Exploratory Data Analysis и как избежать основных ошибок при его выполнении.

Читать далее

Изящные, ненормальные и удивительные алгоритмы на C

Level of difficultyMedium
Reading time10 min
Reach and readers18K

Доброго времени суток, господа и дамы! Иногда у некоторых людей возникает желание заняться откровенным непотребством в программировании — то, что не несет практической пользы напрямую, но помогает развлечься. И я — не исключение. В этой статье я хочу рассказать вам о лайфхаках, трюках (магических и не очень), алгоритмах на языке C!

Идея написать эту статью зародилась из моего поста, после него я написал статью «Математика, биты, магия и немного ненормального программирования на C», «Фокусы, хаки, магия и прочее ненормальное программирование на C» и «Тёмная сторона Си: трюки, хаки, магия и алгоритмы», которые раскрывали много интересных моментов.

Увидев, что многим понравилась, я решил продолжить, чтобы узнать насколько глубоко кроличья нора!

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

Всех, кто заинтересовался — прошу под кат.

Читать далее
1
23 ...

Information

Rating
Does not participate
Registered
Activity