Pull to refresh
-2
0
Send message

Настройка конвейерной сборки Java-проектов в GitLab

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

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

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

Предполагается, что у вас уже установлены Docker и ssh-сервер и вы немного умеете со всем этим обращаться. 

Читать далее

Распознавание, хранение и поиск лиц в базе данных

Level of difficultyMedium
Reading time3 min
Reach and readers18K

В этой статье я максимально коротко и просто объясню принцип распознавания, хранения и поиска лиц в базе данных. В качестве примера будет использована библиотека Insightface и база данных PostgreSQL.

Читать далее

Pet-проект на Rust нуждается в конструктивной критике

Level of difficultyMedium
Reading time1 min
Reach and readers6.7K

Примерно 8 месяцев назад я написал на Rust pet-проект, который пытается быть подобием Hibernate в экосистеме Java. Я даже опубликовал его в качестве Open Source, но получил негативный отзыв и удалил его с GitHub.

Сейчас я решил вернуться к этому проекту, но подойти к нему с другой стороны. Я бы хотел услышать идеи по проекту от опытных разработчиков на Rust. Что в моем проекте сделано не в идиоматическом стиле Rust и т.д. и т.п. В общем, хочется получить чек-лист того, что в проекте не так и как это исправить.

Читать далее

Временное хранилище данных на Apache Druid: почему это эффективно сработало для загрузки табличных файлов

Level of difficultyEasy
Reading time7 min
Reach and readers5.9K

Всем привет! Меня зовут Амир, я Data Engineer в компании «ДЮК Технологии». Расскажу, как мы спроектировали и реализовали на Apache Druid хранилище разрозненных табличных данных.

В статье опишу, почему для реализации проекта мы выбрали именно Apache Druid, с какими особенностями реализации столкнулись, как сравнивали методы реализации датасорсов.

Читать далее

Создаем свой диалект змеиного, или DSL на Python

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

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

Как один из вариантов решения предлагаю посмотреть создание своего диалекта Python-скриптов, предназначенного для конкретной предметной области. Этакий DSL «для бедных», с синтаксисом Python, но со средой выполнения, заточенной под выполняемые задачи.

Читать далее

ГАЙД по python стеку для Data Science инженеров

Level of difficultyEasy
Reading time7 min
Reach and readers31K

Data science - это область, которая занимается изучением и анализом больших объемов данных, чтобы находить в них полезные закономерности, делать прогнозы или принимать решения на основе фактов. Самым популярным языком программирования для data science является Python. Библиотеки pyhton, о которых пойдет речь: NumPy, SciPy, Pandas, Matplotlib. Статья написана для новичков, которые хотят узнать о python стеке для data science.

Подробнее

Как быстро собрать кубик для простых задач: играемся с TinyOLAP

Level of difficultyMedium
Reading time7 min
Reach and readers5.2K

Привет, Хабр. Сегодняшняя статья будет интересна тем, кто хочет собрать простой OLAP‑куб для анализа данных, чтобы понять, как он устроен и работает. Экспериментировать будем с помощью TinyOLAP, одного из немногих OpenSource движков на Python.

Читать далее

Pandas: от хаоса к красоте кода

Level of difficultyEasy
Reading time9 min
Reach and readers19K

Работа с pandas.DataFrame может превратиться в неловкую кучу старого (не очень) доброго спагетти-кода. Я и мои коллеги часто используем эту библиотеку, и хотя мы стараемся придерживаться хороших практик программирования, иногда мы все равно мешаем друг другу, создавая запутанный код.

Я собрала несколько советов и подводных камней, которых следует избегать, чтобы сделать код на pandas чистым. Надеюсь, вам они тоже будут полезны. Также я буду ссылаться на классическую книгу Роберта Мартина «Чистый код: создание, анализ и рефакторинг».

Погнали!

Мега-Учебник Flask Глава 1: Привет, мир! (издание 2024)

Level of difficultyMedium
Reading time18 min
Reach and readers109K

Добро пожаловать! Вы собираетесь отправиться в путешествие, чтобы научиться создавать веб‑приложения с помощью Python и фреймворка Flask. В этой первой главе вы узнаете, как настроить проект Flask. К концу этой главы на вашем компьютере будет запущено простое веб‑приложение Flask!

Начать изучение

Трудовой договор, ГПХ или самозанятый: что выбирают айтишники

Reading time16 min
Reach and readers45K

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

Работодатели часто предлагают не оформиться в штат, а заключить договор как с ИП или самозанятым, обещая при этом платить больше. Айтишники отказываются от трудового договора и оформляют самозанятость или заключают договоры ГПХ из-за возможности самим выбирать себе заказчиков и проекты, определять график работы, а также устанавливать собственную цену за услуги и быстро менять её при необходимости. Круто жить в отдалённом регионе и брать заказы у компаний, находящихся в совершенно разных точках страны, а может быть — даже мира.

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

Читать дальше →

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

Level of difficultyHard
Reading time13 min
Reach and readers8.6K

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

Читать далее

Типичные задачи аналитика. Часть 2. А есть ли тренд?

Level of difficultyMedium
Reading time18 min
Reach and readers16K

В первой части статьи на Habr мы рассмотрели классические подходы к оценке изменений метрики при условии ее стационарности. В этом контексте статистические критерии, применяемые в A/B тестировании, оказались весьма эффективными.

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

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

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

Читать далее

Python Multiprocessing. Обмен данными между процессами. Передача объектов пользовательских классов

Level of difficultyHard
Reading time15 min
Reach and readers53K

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

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

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

О том, как с этим обходиться, я и расскажу в этой статье.

Читать далее

TMS на замену TestRail: писали для себя, а выложили в open source

Level of difficultyEasy
Reading time9 min
Reach and readers25K

В прошлом году TestRail прекратил предоставлять и продлевать лицензии компаниям из России, поэтому мы в YADRO решили разработать собственную тест-менеджмент систему TestY. Опирались на опыт работы с другими сервисами, чтобы добавить тот функционал, которого не хватало нашим командам тестирования. За несколько месяцев написали core-часть системы и выложили ее в open source, чтобы другие компании и разработчики, для которых актуален вопрос лицензионной чистоты используемого софтай, пользовались решением и развивали его.

В этой статье рассказываем об отличиях TestY от других TMS и преимуществах нашей системы для команд любого размера. Спойлер: в TestY могут одновременно работать 300 тестировщиков — система справляется. Для тех, кто хочет опробовать TestY в своей команде, в конце статьи есть короткая инструкция, как ее развернуть.

Читать далее

Разносим по полочкам этапы тестирования http запросов в Spring

Level of difficultyEasy
Reading time7 min
Reach and readers9.3K

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

Речь пойдет об использовании методологии Arrange-Act-Assert применительно к интеграционным тестам на Spring Framework с использованием мокирования (mock) HTTP-запросов к внешним ресурсам, к которым идет обращение по ходу выполнения тестируемого кода в рамках поведения системы. Предлагаемые к рассмотрению тесты написаны с использованием Spock Framework на языке Groovy (см. недавнюю статью по этой теме: Тестируем Spring Boot приложения через Spock Framework). В качестве механизма мокирования будет использоваться MockRestServiceServer. Будет пару слов и о WireMock.

Читать далее

Как написать проект по автоматизации на Python, Pytest и Playwright и настроить запуск автотестов в CI с нуля

Reading time16 min
Reach and readers39K

Привет, Хабр! Меня зовут Александр Бехтерев, я работаю QA-инженером в Учи.ру. Не так давно перед нами встала задача перехода с библиотеки Selenium на новую и мощную библиотеку Playwright. Этот переход был вызван желанием улучшить процессы тестирования и попробовать что-то новое. 

В этой статье я постараюсь подробно рассмотреть процесс создания проекта на Python, Pytest и Playwright с применением паттерна Page Object, а также оставлю шаблон yml, который позволит запускать автотесты в CI. 

Читать далее

1000 человек на место или как новичку стать синьором

Level of difficultyEasy
Reading time13 min
Reach and readers15K

Привет! Меня зовут Сергей, я немножко ведущий фронтенд-разработчик и немножко продуктовый менеджер, а еще друг, поэт и музыкант. Как так получилось — история для другой статьи, а здесь я расскажу о другом. 

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

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

Читать далее

Практический пример использования модели детекции изображений

Level of difficultyMedium
Reading time7 min
Reach and readers9.5K

Всем доброго дня. Совсем недавно я закончила продвинутый курс от Deep Lerning. Курс объемный, много свежей информации. Мне, как закончившей прикладную математику и часто по работе соприкасающейся с искусственным интеллектом (нейросетки, генетика, fuzzy logics) было не сильно сложно, но мега-увлекательно за счет того, что ребята очень заинтересованные и рассказывали про свежие интересные модели, еще и на русском языке. Приятно видеть, что ИИ-сфера в нашей стране тоже не стоит на месте.

Хотелось сделать своими руками что-нибудь эдакое полезное и одновременно мега-современное и вот что я придумала. У нас есть частный дом, там есть дворовые коты, которых надо кормить и в мое отсутствие. А так же есть еще птицы, кроты, чужие вездесущие собаки и другая живность, которых не стоит кормить, если не хотим, чтобы они у нас все поселились. Так вот, а что, если прикрутить модель детекции изображений к умной кормушке? Далее было бы здорово научиться использовать голосовые команды, например, на закрытие кормушки. И чтобы не писать никаких специальных программ, воспользуемся телеграмм-ботами, телеграмм стоит почти в каждом телефоне.

В данной статье я сделала акцент именно на том, как пользоваться моделями детекции изображений на практике.

Читать далее

Использование Insightface для быстрого поиска и сравнения лиц на изображениях

Level of difficultyMedium
Reading time9 min
Reach and readers17K

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

С вами Вадим Дарморезов, участник профессионального сообщества NTA.

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

В проектах, связанных с распознаванием лиц своеобразными «флагманами» являются библиотеки dlib/face‑recognition и свёрточные нейронные сети. При этом на просторах русскоязычного интернета довольно мало статей о библиотеке insightface. Именно о ее использовании хотелось бы поговорить более подробно. Всем, кому это интересно, добро пожаловать по кат.

Искать "близнецов"

JUnit 5 Extensions — практическое руководство (часть 1)

Level of difficultyEasy
Reading time10 min
Reach and readers8.9K

Привет. В Рунете материала по JUnit 5 Extensions сегодня немного, и довольно часто он ограничивается переводом документации (в редких случаях - постов с зарубежный ресурсов). Поэтому было решено исправить сей недостаток.

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

В качестве языка программирования я выберу Kotlin...

Читать далее

Information

Rating
5,122-nd
Registered
Activity