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

Компания Программный Продукт временно не ведёт блог на Хабре

Сначала показывать

Vouch Proxy для OAuth2 при авторизации пользователей в нагруженных системах

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

Vouch Proxy (VP) представляет собой мощный инструмент для обеспечения безопасности и удобства использования веб-приложений, особенно в условиях высокой нагрузки. VP позволяет использовать различные Identity Provider (IdP) для аутентификации пользователей и предоставления им доступа к защищенным ресурсам. В этой статье мы рассмотрим, как Vouch Proxy может быть использован для реализации OAuth2 в нагруженных системах.

Читать далее

Приоритизация тест-кейсов или как пройти регресс, не потеряв рассудок

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

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

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

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

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

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

Читать далее

Как нейросеть мне приложение писала

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

Данная статья содержит описание личного опыта взаимодействия автора и нейросетей DeepSeek и GigaChat на уровне <рядовой пользователь – машина>. Автор не является профессиональным программистом и профессиональным промпт-инженером, поэтому воздерживается от комментариев относительно качества кода и обоснованности того или иного решения, предлагаемого ИИ.

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

Читать далее

Bloom-фильтры в Postgres: скрытый инструмент для оптимизации запросов

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

В мире разработки и работы с базами данных Bloom-фильтры – это мощный, но малоизвестный инструмент, который может значительно ускорить выполнение запросов и снизить нагрузку на систему. Однако, несмотря на их потенциал, многие разработчики даже не знают, что Postgres поддерживает Bloom-фильтры "из коробки" (функциональность Bloom-фильтров доступна сразу после установки Postgres, при включении соответствующего расширения) через расширение bloom.

Bloom-фильтры особенно полезны в ситуациях, когда нужно быстро проверить, принадлежит ли элемент к множеству, или когда требуется оптимизировать запросы с несколькими условиями. Например, они могут ускорить JOIN-запросы, поиск по нескольким столбцам или агрегатные функции.

В этой статье мы разберем, что такое Bloom-фильтры, как они работают в Postgres, и в каких случаях их использование может быть полезным. Мы также рассмотрим практические примеры и покажем, как Bloom-фильтры могут помочь в оптимизации запросов.

Читать далее

Проблемы Nginx в организации микросервисной архитектуры IT-проекта. Способы их решения

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

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

Читать далее

Автоматизированное документирование баз данных на Markdown

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

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

Для решения данной задачи разработаны два PHP-скрипта, предназначенные для работы с PostgreSQL. Эти скрипты выполняют две основные функции:

1.  Сравнение старой и новой структуры базы данных с выявлением добавленных, удалённых и изменённых таблиц.

2.  Создание Markdown-документации, которая содержит подробное описание назначения таблиц и характеристик их полей, что делает изменения в структуре базы данных прозрачными для разработчиков.

Читать далее

Внедрение электронной цифровой подписи в мобильное приложение на Android

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

Привет, Хабр!

Сегодня мы хотим поделиться решением интересной и новой для нас задачи: нужно встроить поддержу ЭЦП в мобильное приложение заказчика. Бизнес-процесс подразумевает формирование неких документов в мобильном приложении с дальнейшей их отправкой на сервер и последующей обработкой. Поскольку документы без подписи не имеют юридической силы, пользователям заказчика приходилось распечатывать созданные документы для их подписания вручную. Вот этот процесс и было решено автоматизировать с целью экономии времени и ресурсов.

Читать далее

Создаем алгоритм определения скорости объектов по видео

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

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

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

Читать далее

Перспективы роботизации: андроиды в космосе и на кухне

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

Привет, Хабр!

Дискуссионный тезис о том, что советская плановая система экономики была не так уж и плоха и ее надо бы вернуть, перестал быть предметом дискуссий. Теперь это реальность. Глава государства и правительство РФ ставят задачи, а ведомства разрабатывают соответствующие планы по отраслям. Стратегическое планирование коснулось и области высоких технологий. В частности, на недавнем ПМЭФ-2024 Владимир Путин заявил о нетривиальной цели: «Россия за короткий срок должна войти в топ-5 стран мира по плотности роботизации». Глава государства отметил, что производство роботов следует развивать на собственной технологической базе.

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

Читать далее

Как современные технологии втягивают в алкоголизм

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

Привет, Хабр!

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

Но бывает так, что какие-то "плюшки" очень плохо воздействуют на психику и образ жизни людей. Например, чрезмерное увлечение онлайн-играми часто приводит к лудомании. Постоянное “зависание” в соцсетях может вызвать депрессию. А такая, казалось бы ерунда, как фильтры, способна спровоцировать дисморфофобию, когда человек не принимает собственное тело, зацикливается на внешности и стремится постоянно исправлять надуманные недостатки.

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

Но каким образом современные технологии втягивают своих адептов в алкоголизм? И кто подвержен наибольшему риску?

Читать далее

Мир глазами ИИ

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

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

Читать далее

Генерация картинок на любом железе без Midjourney

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

Для генерации изображений сегодня существует множество сервисов. Некоторые из них платные, другие нет. И даже в большинстве бесплатных сервисов вы можете столкнуться с ограничениями, например, на количество бесплатных картинок за единицу времени, разрешение изображений и прочее. Это обстоятельство объясняется просто. Несмотря на доступность технологии, железо, которое требуется для генерации, остается дорогим. И бесплатно отдавать ресурсы GPU мало кому хочется. Однако, тягу к бесплатному трудно победить. Поэтому в этой статье мы узнаем, как, всё же, генерировать изображения только при помощи браузера и нескольких строк кода.

Читать далее

Уведомления через Telegram-бота при помощи почтового триггера Yandex Cloud Functions

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

Привет, Хабр!

Возможно, многие сталкивались с задачей: есть сервер с некими cronjob-ами, результат выполнения которых хотелось бы мониторить определенному числу лиц, но при этом сервер находится в каком-нибудь intranet и не имеет доступа к сети интернет. Вот и у нас однажды возникла подобная проблема. Единственным доступным средством коммуникации с внешним миром у сервера был почтовый шлюз, через который можно было отправить электронную почту. До некоторого времени задача решалась отправкой нескольких копий письма, но со временем стало понятно, что гораздо  удобнее читать уведомления в Telegram. Такую настройку мы произвели с помощью Yandex Cloud Functions.

Читать далее

App Router и Pages Router: что изменилось в Next.js

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

Привет, Хабр!

Как могут заметить разработчики, фреймворк Next очень активно развивается. Так, некоторое время назад в 13 версии появилась новая парадигма (модель) для создания приложений — app router, которая должна прийти на смену старой pages router.

В этой статье мы постараемся наглядно продемонстрировать и рассказать, что же поменялось в работе приложения с появлением app router, какие изменения произошли в сравнении с pages router, что нового успели добавить разработчики, а от чего они отказались.

Читать далее

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

Векторизация изображений. Как создать алгоритм поиска похожих изображений на Python

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

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

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

В мире есть много вещей, которые интуитивно понятны и очевидны для нас. Например, если перед нами два похожих цветка, мы можем определить их принадлежность одному виду, даже не зная названий этих растений. Этот навык позволяет нам распознавать объекты и определять их в группы. Разумеется, подобные алгоритмы уже давно существуют в современных поисковиках Google, Яндекс и прочих. Но что, если вы проектируете обособленную систему с собственной базой изображений одной или нескольких конкретных тематик и вам необходим функционал поиска похожих изображений?

В этой статье мы сосредоточим ваше внимание на том, как построить подобный алгоритм на Python, а также расскажем о компьютерном зрении и эмбеддинге изображения.

Читать далее

Композиционное тестирование: новый подход к качеству IT-продуктов

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

Привет, Хабр!

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

Читать далее

Статический анализатор Ktlint для Kotlin в Android

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

Kotlin — это статически типизированный язык программирования на основе JVM, разработанный компанией JetBrains. Он был представлен Google в первую очередь для создания мобильных приложений на платформе Android. Используя Kotlin, разработчики могут писать код быстрее и более качественно. Тем не менее, как и в случае с любым другим языком программирования, важно соблюдать набор правил, чтобы обеспечить высокую производительность и читаемость кода.

Читать далее

Как создать интерактивные виджеты на iOS 17

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

5-9 июня 2023 года состоялась ежегодная презентация Apple WWDC23, на которой было представлено много интересных новшеств для iOS-разработчиков. Одну из таких фич — интерактивные виджеты, мы рассмотрим в этом руководстве.

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

В iOS 17 реализован функционал для создания интерактивных виджетов. Теперь у них появились элементы управления и анимации, виджет может сам выполнять некоторую работу без запуска основного приложения. Грубо говоря, обновленные виджеты представляют собой небольшие отдельные приложения, как AppClip.

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

Читать далее

Алгоритм поиска ключевых словосочетаний «на пальцах». Анализируем новости

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

В современном мире объем данных в интернете постоянно растет с огромной скоростью. Возникает логичный вопрос: как ориентироваться в этом информационном потоке? 

Чтобы упростить себе задачу поиска и обобщения информации IT-энтузиасты применяют технологии генеративно обученных чат-ботов. Наиболее широкое распространение получил  ChatGPT. Яндекс, в свою очередь, добавил в браузер YandexGPT, который позволяет тезисно ознакомиться с содержанием страницы. Всё чаще вакансия Prompt-инженера начинает встречаться на hh и Хабр Карьере. Специалисты и чат-боты помогают конечному пользователю экономить время для поиска необходимой информации. 

Но что делать, если возможности обратиться за помощью к подобным технологиям нет? Указанные выше языковые модели нельзя интегрировать в собственные проекты, сценариев их использования много, но они всё равно ограничены. 

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

Читать далее

Миграция конфигурации сборки с Groovy на Kotlin

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

DSL (Domain-Specific Language) — это язык программирования, который спроектирован и оптимизирован для решения задач в конкретной области или для определенного класса задач. DSL build.gradle предоставляет разработчикам удобный способ определения настроек проекта и управления ими, используя специфический синтаксис, который Gradle понимает и обрабатывает. Этот DSL позволяет создавать мощные и гибкие сценарии сборки, которые могут быть легко настраиваемы для разных проектов и задач.

С Android Studio Giraffe Kotlin DSL становится новым стандартом для Gradle-скриптов в разработке Android. Когда вы создаете новые проекты, используя встроенные шаблоны IDE, вам будут предоставлены файлы Kotlin DSL вместо файлов Gradle на основе Groovy.

Это предстоящее изменение обеспечило возможность  переноса конфигураций Gradle на основе Groovy DSL на Kotlin DSL. Перевод файлов Gradle с Groovy на Kotlin DSL может значительно улучшить рабочий процесс разработки для Android. Особенно, если вы уже знакомы с Kotlin. Такой переход на единый знакомый язык не только повышает вашу производительность, но и устраняет необходимость переключаться между двумя языками для выполнения задач разработки и настройки. Надежность и интуитивность Kotlin DSL дает уверенность в создании пользовательских задач Gradle без необходимости прибегать к зачастую нечеткому синтаксису Groovy.

Статья задумана, как руководство, которое поможет вам на этапе перехода на Kotlin DSL. Материал написан с акцентом на проекты Android, но обсуждаемые моменты могут быть применимы и к другим проектам на основе Gradle, таким как приложение Spring Boot.

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