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

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

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

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

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

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

Читать далее
Всего голосов 6: ↑5 и ↓1+7
Комментарии0

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

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

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

Читать далее
Всего голосов 17: ↑16 и ↓1+20
Комментарии16

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

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

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

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

Читать далее
Всего голосов 6: ↑5 и ↓1+4
Комментарии4

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

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

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

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

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

Читать далее
Всего голосов 3: ↑2 и ↓1+3
Комментарии0

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

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

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

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

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

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

Читать далее
Всего голосов 10: ↑10 и ↓0+10
Комментарии5

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

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

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

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

Читать далее
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

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

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

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

Читать далее
Всего голосов 3: ↑3 и ↓0+3
Комментарии1

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

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

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

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

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

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

Читать далее
Всего голосов 2: ↑2 и ↓0+2
Комментарии4

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

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

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

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

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

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

Читать далее
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

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

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

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.

Читать далее
Всего голосов 7: ↑7 и ↓0+7
Комментарии2

Как автоматизировать тестирование сложных API форм и не потратить время впустую

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

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

Читать далее
Рейтинг0
Комментарии3

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

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

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

Данная статья и родилась вследствие того, что на текущем проекте в нашей команде разработки есть боль: когда на беке вливают МР в ветку develop, то стенд падает на время деплоя. Основные участники, испытывающие эту боль — фронтенд разработчики и аналитики, которым чаще всего приходится взаимодействовать с бекендом. И во время недоступности стенда непонятно, деплой идёт или стенд упал из-за ошибки.

Нет, конечно, можно зайти в Gitlab, проверить, идёт ли сейчас деплой или посмотреть логи контейнера. Но для этого нужно быть в курсе, из-за деплоя каких конкретно микросервисов (естественно мы говорим о микросервисной архитектуре) стенд может быть временно недоступен. Ну и плох тот программист, который не хотел бы упростить жизнь себе и коллегам, автоматизировав при этом чаво-нибудь! :)

Читать далее
Всего голосов 2: ↑2 и ↓0+2
Комментарии4

Методология генерации случайных строк посредством регулярных выражений

Время на прочтение5 мин
Количество просмотров3K

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

Если ваш проект вырос, в нем  бэкенд с фронтендом, различные точки входа API, интеграции с внешними системами, сложные алгоритмы, проверки введенных данных пользователем на валидность, диаграммы бизнес-процессов имеют тысячи ветвей, то скорее всего регрессионное тестирование занимает кучу времени, и проводить его вручную уже не выгодно. Проще эту работу поручить машине и тестировать продукт автоматически.  Первый вопрос, который возникает — «Как генерировать данные?», а конкретнее, как генерировать то, что может ввести пользователь. Этот вопрос мы и разберем в данной статье.

Читать далее
Всего голосов 3: ↑3 и ↓0+3
Комментарии8

Шифровальщики-вымогатели: только бизнес и ничего личного?

Время на прочтение8 мин
Количество просмотров3.4K

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

Несмотря на вроде бы прошедший пик громких историй, связанный с криптолокерами (ransomware), сам этот сектор «теневой экономики» продолжает генерировать различные неприятные сюжеты.

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

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

Или же какую-то роль на себя возьмет само сообщество хакеров?

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

И все это играет на руку создателям локеров, поскольку в этом хаосе единственный выход для тех, кто стал их целью — это платить.

Читать далее
Рейтинг0
Комментарии1

Уличное видеонаблюдение: тысячеглазый Паноптикон или помощь обществу?

Время на прочтение7 мин
Количество просмотров5.4K

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

 Сегодня хотим поговорить на одну непростую тему, в той или иной степени всех нас затрагивающую, - про уличное видеонаблюдение. Тем более, что буквально вчера она вновь получила развитие со стороны государства: в России хотят создать «Национальную платформу видеонаблюдения», которая через пять лет должна объединить данные с городских камер всей страны.

Сразу оговоримся: всё сказанное - предмет для дискуссий и для попыток взглянуть на положение вещей "на холодную голову" и в перспективе.

Читать далее
Всего голосов 3: ↑2 и ↓1+4
Комментарии40

Вредоносный ИИ: реальность угрозы

Время на прочтение13 мин
Количество просмотров5.7K

Привет, Хабр! Сегодня мы бы хотели обсудить такую щекотливую тему как вредоносный ИИ.

Читать далее
Всего голосов 2: ↑1 и ↓1+2
Комментарии1

Как трассировка запросов сломала API

Время на прочтение3 мин
Количество просмотров5.4K

TL;DR;

История провала со счастливым концом о том, как команда узнала о трассировке запросов, AOP, а потом сломала API.

ВВедение Благие намерения Невинное начало

Каждый проект содержит логирование. Наш проект использовал Lombok и его @Slf4j аннотацию. Мы логировали выполнение бизнес операций, но нам не хватало контекста.

Логи содержали что-то типа такого:

Читать далее
Всего голосов 14: ↑7 и ↓7+6
Комментарии18

Как мы пытались с NoSQL работать как с SQL с помощью Hibernate и Apache Phoenix

Время на прочтение2 мин
Количество просмотров2.5K

Мы хотели реализовать пагинацию и для этого нам пришлось форкнуть диалект для Hibernate.

Читать далее
Всего голосов 3: ↑1 и ↓2-1
Комментарии1

Получение идентификатора CVE

Время на прочтение2 мин
Количество просмотров3K
После публикации нашей статьи «CSRF в Umbraco CMS», мы получили несколько сообщений с вопросами, которые касались процесса получения CVE. В данной статье рассматривается, как правильно поступить в том случае, когда вендор отказывается присваивать индекс CVE найденной в его продукте уязвимости.

Работа с обнаруженными уязвимостями производится в три основных этапа:

  1. Уведомление вендора
  2. Подтверждение и исправление найденной уязвимости
  3. Публичное раскрытие информации
Читать дальше →
Всего голосов 5: ↑4 и ↓1+5
Комментарии0

UML для разработчиков

Время на прочтение5 мин
Количество просмотров75K
Интернет полон статей про UML, вы найдете сотни примеров для каждого вида диаграмм, и без проблем создадите свои, нотация не сложная. Но так ли уж необходимо тратить на это время? Наш богатый опыт говорит «Да». Если у вас в команде более 2 человек и проект от 3 месяцев, то уже имеет смысл отрисовать 2-3 вида диаграмм. В одной нашей команде более 30 человек, проект длительностью более 3 лет, и мы используем...2-3 вида диаграмм.

Нотация UML избыточна. С другой стороны она недостаточна для проектирования распределенных систем, и здесь нам помогает Archimate. В этой статье мы расскажем, что действительно полезно из всего этого многообразия, и рассмотрим на примере полный цикл создания диаграмм для проекта.
Читать дальше →
Всего голосов 17: ↑16 и ↓1+20
Комментарии76
1