Всем привет! Меня зовут Никита Рыженков, и я хочу поделиться опытом разработки библиотеки FastOpenAPI. Это инструмент, который приносит удобный стиль маршрутизации FastAPI и автоматическую документацию OpenAPI в целый ряд Python-фреймворков. Идея родилась из личной боли: в одном проекте приходилось поддерживать OpenAPI-документацию сразу в нескольких фреймворках, и я устал дублировать решения под каждый из них. Вдохновившись лаконичностью FastAPI, я решил создать унифицированный подход для Flask, AioHttp, Sanic, Falcon, Starlette, Quart, Tornado – назвал его FastOpenAPI. В этой статье расскажу, какие проблемы решает FastOpenAPI, как он устроен внутри и как им пользоваться с примерами кода под каждый поддерживаемый фреймворк.
Читать далееПривет, Хабр! В этом материале мы не расскажем о рабочих кейсах, технических решениях и привычных темах для нашего блога. Лучше — мы покажем немного всего этого и поделимся впечатлениями о первом Demo Day облачной команды Рег.ру. Внутри: краткое ревью докладов, анонсы новых облачных релизов, которые мы планируем к запуску, и немного фото. Полетели!
Читать далееСовременные LLM давно уже вышли за предел «галлюционнирующей генерации» и дают устойчивую точную генерацию практически на всех популярных языках, фреймворках и библиотеках... При наличии правильного контекста. В большинстве случаев контекст, который вы скармливаете LLM имеет высокую избыточность и низкую концентрацию полезной информации. При нехватке контекстного окна вы практически гарантированно получите низкокачественную галлюцинацию. Что можно сделать в таком случае: обрезается весь ненужный контекст, добавляется весь необходимый. Как это выглядит: вы подготавливаете свой проект в IDE, убирая всё лишнее, и оставляете только самое необходимое, что бы LLM получила весь необходимый контекст и не байтом больше, то есть контекст должен на 100% состоять из полезной информационной нагрузки.
Если есть объёмная база данных — оставьте в ней всего несколько значений для примера. Неиспользуемые в данной конкретной ситуации зависимости так же удаляете из контекста. Если речь о текстовой работе с LLM — то делаете тоже самое в форме промпта или загружаемого текстового файла‑инструкции, подготавливая всё необходимое, т. е., в промпте должно быть описание кодовой базы и окружения, файловая структура, используемый стек, назначение кодовой базы, весь необходимый код всех задействованных файлов, выдаваемые ошибки и прочее. То есть вы должны своими руками построить 100% удобный для работы LLM контекст. Фактически, при данном подходе, вероятность генерации неправильно ответа — околонулевая. Простыми словами — воспринимайте контекстное окно как бутылочное горлышко, через которое необходимо достать информацию из бутылки, то есть из модели.
Читать далееИ вот это заветное слово «Fundraising» случается в нашей жизни, и мы готовимся поднять много денег. Но прежде, чем это случится, а мы начнем инвестировать в все наши «хотелки» и улучшать продукт, будет Due Diligence. То, на чем можно посыпаться и попасть на демпинг цены, бремя post‑M&A/Fundraising рисков и в целом лишиться проекта.
Читать далееuv — это новый инструмент управления Python-проектами, разработанный командой Astral. За год активного использования автор протестировал его в разных условиях: от учебных задач до сложных production-проектов. В статье — честный разбор сильных и слабых сторон uv, его отличий от других менеджеров окружений, реальных ограничений и сценариев, где он работает особенно хорошо.
Читать далееВ корпоративных средах развертывание Active Directory (AD) — де-факто стандарт для администрирования ИТ-инфраструктуры на Windows. Да, в России есть тренд импортозамещения и сопутствующее ему «переползание» на отечественные решения типа Astra Linux-ALD Pro и так далее. Но пока еще Windows стоит много где, и оборона домена AD — это стратегическая задача для большинства организаций.
Кроме того, в процессе импортозамещения AD в вашей организации вполне может оказаться, что полный отказ от Windows+AD невозможен по ряду причин. Причем, как часто бывает, это может проявиться на этапе после того, как вы составили и согласовали техническое решение со всеми нужными инстанциями и регуляторами. Например, внезапно выясняется, что существует некий критический софт, который применяется только на винде и нормально работает только в условиях AD-домена. В итоге часть инфраструктуры продолжит функционировать по «неимпортозамещенной» схеме, при этом ежедневные задачи по администрированию и защите этого сегмента никуда не денутся.
Даже если ваша организация избежит таких «подводных камней» при миграции на отечественные решения, согласитесь, что подобный переезд — продолжительный процесс, который в крупных инфраструктурах с большим количеством legacy вполне может занять годы. Атаки на Active Directory, по моему опыту, происходят каждый день, и тот факт, что организация в это самое время мигрирует на другое решение, не поможет оправдаться, если вас взламывают прямо сейчас.
Короче говоря, если Active Directory используется в организации здесь и сейчас, не стоит пренебрегать мероприятиями по защите, несмотря ни на что.
Читать далееВ 19 веке английские девушки и юноши, претендующие на возвышенность чувств, носили с собой небольшое продолговатое зеркальце, через которое смотрели на мир. Зеркальце было затемненное, что придавало отражению палитру модного художника Клода Лоррена. Увлечение, естественно, многие высмеивали: чтобы увидеть такой «отраженный» пейзаж, нужно было встать к нему спиной. Но ценителям прекрасного было все равно, ведь так они познавали мир через эмоциональный и индивидуальный опыт. Ничего не напоминает?
Сегодня мы продолжим исследовать Англию 18–19 веков, которая подарила миру множество прототипов современных социальных сетей. Складывается ощущение, что Британия была акселератором стартапов задолго до того, как это термин вообще появился. В прошлый раз я рассказывала про эдвардианские открытки, ставшие MVP мессенджеров. А сегодня поговорим о прототипе фильтров в соцсетях.
Читать далееНа титульном листе руководства по эксплуатации источника питания Lambda ALE 802 указано название компании производителя данного прибора и есть ссылка на официальный сайт производителя https://www.us.lambda.tdk.com
Перейдя по этой ссылке отображаются устройства, производимые компанией
Читать далееKPI — это не только инструмент измерения, но и своеобразный стресс-тест для организации. Когда руководство устанавливает амбициозные показатели, команды демонстрируют одну из трех реакций: мобилизуются и находят нестандартные решения, идут на компромиссы и срезают углы, или впадают в ступор.
Эта реакция на давление говорит о компании больше, чем сами цифры достижений, выявляя скрытые проблемы в процессах, культуре и лидерстве. В статье я разобрал, как превратить KPI из инструмента давления в диагностический инструмент и какие сигналы стоит отслеживать.
Читать далееПривет! Я Саша, продакт системы управления проектами YouGile. Хочу рассказать, как мы сделали голосовые сообщения в нашем внутреннем мессенджере удобными даже для тех, кто их ненавидит. Причем быстро, дешево и с помощью доступных всем инструментов — если захотите, сможете повторить (наверное).
В первой части напишу, зачем мы вообще внедрили функцию, которую так хейтят. А во второй — поделюсь лайфхаками технической реализации.
Читать дальшеВ этой статье мы пройдем путь от самых наивных и опасных способов реализации ретраев в Go до построения гибкого и надежного механизма, который можно использовать каждый день. Мы рассмотрим ключевые паттерны, антипаттерны и готовые решения.
Читать далееПредставим себе картину из идеального мира данных, в котором всё стабильно, изменений нет и на горизонте не предвидятся. Аналитик полностью согласовал с заказчиком требования к витрине, спроектировал решение и передал в разработку. Разработчики внедрили витрину в продуктивный контур, пользователи счастливы, всё работает корректно — сопровождение разработчиков и аналитиков не требуется. Представили?
Но, как мы знаем, «IT» и «изменения» — синонимы, поэтому в идеальном мире, как гром среди ясного неба, появляются новые требования: разработать инструмент для регулярного добавления в витрину данных новых атрибутов, на текущий момент в неизвестном количестве.
Сразу отмечу, что решения и оценки, о которых пойдёт речь, подбирались для работы с большими данными на стеке технологий Apache Hadoop, где для обработки данных использовали фреймворк Apache Spark, СУБД — Apache Hive для анализа данных, оркестратор — Airflow, данные хранятся в колоночном формате Parquet.
Читать далееЕсли вы хоть раз тестировали SDK для Android, то знаете, сколько времени и нервов может уйти на подготовку окружения и сборку тестового приложения. Особенно если это делает не разработчик, а, например, тестировщик или менеджер — сначала нужно настроить окружение, скачать и обновить ветку до актуального состояния, открыть Android Studio, найти нужные параметры в build.gradle, внести правки вручную, запустить сборку. И каждый раз надеяться, что ничего не отвалится.
Читать далееПривет, Хабр! Меня зовут Дмитрий, я старший инженер-программист в департаменте разработки мобильных приложений YADRO. В этой статье я расскажу о нашем опыте работы со стандартным AOSP-приложением «Контакты». Это базовая версия телефонной книги, разработанная в рамках Android Open Source Project (AOSP). На этапе ревью дизайна мы решили, что можно улучшить UI, не трогая бизнес-логику. Это дало начало увлекательной истории...
Читать далееСобственная облачная платформа помогает контролировать технологические процессы, обеспечивает безопасность и повышает эффективность продуктовых команд. Но спроектировать её — задача со звёздочкой.
Привет, Хабр! Меня зовут Алексей Чуркин, я работаю в компании Wildberries, где строю приватное облако. В этой статье по мотивам моего доклада для Highload++ расскажу о том, как мы внутри компании построили облачную платформу, с какими сложностями столкнулись и как собираемся её развивать.
Читать далееНо это не простые разработчики, а те, кто будет выступать завтра с докладами на нашем ежегодном бесплатном митапе Frontend Mix.
g11n, i18n, l10n... или один из множества вариантов локализации приложения. Привет, меня зовут Константин Комков и я надеюсь данный пример и последовательность шагов сэкономят Вам время при разработке!
Есть два способа хранить локализованные данные — внутри приложения или запрашивать их с сервера. Второй подход сложнее и трудозатратнее, но дает следующее преимущество — возможность заменить ресурс или исправить ошибку в переводе без новой сборки приложения. В этой статье я опишу логику работы приложения если данные приходят с сервера.
Читать далее