Привет, Хабр! Меня зовут Николай, я разработчик С++ в SimbirSoft. В предыдущей статье мы с вами рассмотрели применение стандартных алгоритмов в повседневном коде и их преимущества над обычными циклами. В продолжение этой темы мне хотелось бы рассказать о недостатках стандартных алгоритмов и способах их решения с помощью библиотеки Ranges. Практические примеры я разбил на три части: в первой показаны обычные циклы, во второй — вариант написания с помощью алгоритмов (но не всегда можно это сделать), в третьей – с использованием Ranges. Этот материал будет полезен тем разработчикам, которые хотят применять новые стандарты и подходы у себя на проектах.
Создавай и упрощай: оптимизируем Android-приложение с видеоконтентом
Современные мобильные приложения с пользовательским контентом играют огромную роль в нашей повседневной жизни. Сейчас почти не встретишь людей, особенно подростков, кто не пользовался бы такими сервисами, как TikTok, YouTube, ВКонтакте и соцсетью с картинками. На волне хайпа вертикальных коротких многие платформы и соцсети разработали собственные аналоги TikTok и YouTube, где стал популярен такой формат.
Поскольку просмотр видео является основной функцией подобных приложений, следует учитывать, чтобы именно эта часть была более надежной. Рассмотрим поближе формат вертикальных коротких видеороликов. Здесь важно, чтобы процесс перехода между другими видео и их загрузкой занимал минимальное количество времени, и пользователь меньше отвлекался в процессе просмотра контента. И, таким образом, пользователь наверняка проведет больше времени в приложении, что в свою очередь позволит показать ему больше контента или рекламы, вместо ожидания загрузки.
Меня зовут Рустам и я Android‑разработчик в компании SimbirSoft. Рекомендую свою статью тем, кто сталкивается с видеоконтентом на проектах, и кому хотелось бы оптимизировать свою работу с ним. Я рассказал о таких методах на примере стандартных инструментов из библиотеки ExoPlayer, поэтому у middle‑разработчиков и выше не должно возникнуть трудностей.
Глубокое погружение в CancellationToken: эффективное управление отменой в .NET
Привет, Хабр! Меня зовут Давид, я C#-разработчик в SimbirSoft. В современном программировании эффективное управление ресурсами и контроль за выполнением задач становятся ключевыми аспектами для создания надежных и масштабируемых приложений. В C# одним из важнейших инструментов в для достижения этих целей является механизм Cancellation Token. Эта концепция позволяет разработчикам изящно и безопасно управлять долгосрочными или ресурсоемкими операциями, обеспечивая возможность их отмены по требованию.
В этой статье мы погрузимся в мир Cancellation Token в C#, исследуя его роль, принципы работы и практическое применение. Мы обсудим, как эта технология позволяет разработчикам улучшить производительность и надежность их приложений, а также — как избежать распространенных ошибок при работе с асинхронными операциями. Подробно рассмотрим примеры кода, демонстрирующие использование Cancellation Token в различных сценариях, что сделает наше обсуждение не только теоретически насыщенным, но и довольно практичным для программистов любого уровня.
Квест на Node.js — борьба с утечкой памяти. От диагностики до решения
Всем привет! Меня зовут Артём и я backend-разработчик компании SimbirSoft. На протяжении восьми лет я работаю на Node.js. Сегодня хочу поделиться опытом поиска утечек памяти при gRPC-вызовах в Node.js + Nest.js. В частности, речь пойдет об отладке утечки памяти при взаимодействии между микросервисами. Статья будет полезна backend-разработчикам, которые работают с Node.js и gRPC.
Несмотря на то, что в интернете много материалов про поиск утечек памяти, все реальные примеры сводятся к устранению искусственного глобального массива. Поэтому я решил рассказать о своем опыте.
Одной из задач, которую ставил перед нами клиент, был поиск и устранение утечки памяти при работе микросервисов. Задача была открыта уже давно, но не было четкого понимания, как ее решать. Судя по описанию, было несколько API, при вызове которых отделы DevOps и QA наблюдали сильный рост памяти при мониторинге системы и тестировании соответственно. В дополнении к REST API присутствовали gRPC-методы.
NLP, Catboost и тематическое моделирование: создаем модель для прогнозирования цен с использованием новостей
Привет, Хабр! Меня зовут Иван, я Data Science специалист SimbirSoft. Я расскажу, как на одном из проектов мы занимались прогнозированием на месяц вперед с помощью методов NLP, Catboost и тематического моделирования на новостном потоке.
Один из способов достижения экономического превосходства над конкурентами — это получение инструмента, оценивающего ситуацию на рынке сейчас и позволяющего делать точные достоверные прогнозы на будущее. И с помощью искусственного интеллекта, анализа данных, работы с временными рядами можно создать достаточно точный инструмент прогнозирования цен.
К нам обратился заказчик, который занимается продажами удобрений. Ему необходимо было протестировать различные подходы к прогнозированию цен на удобрения. Нашей задачей стало построить бейзлайн-модель и оценить, насколько перспективен подход с использованием новостей. Заказчик хотел, чтобы мы оценили предсказательную силу именно новостей, поэтому мы не использовали признаки из самого временного ряда цен (лаги/сезонность/тренд) и признаки, связанные с рынком.
Prompt-engineering: чем полезен SDET-специалистам, или Как оставаться востребованным на рынке в эпоху ИИ
Нейросети и искусственный интеллект (далее ИИ) развиваются стремительными темпами, и у многих SDET-специалистов появляются опасения о потере работы. И действительно, список задач, которые уже сегодня может выполнить чат-бот, впечатляет.
Подготовка тестовых данных занимает много времени? ИИ сгенерирует для ваших тестов данные любой сложности и в любых форматах.
Не успеваете писать нужное количество тестовой документации? Нейросеть составит чек-листы и тест-кейсы на основе любых входных данных: по текстовому запросу, по скриншоту страницы вашего веб-приложения и даже по блок-схеме бизнес-процесса.
Возникли трудности при коммуникации с коллегами? ИИ переведет текстом или озвучит вашу речь на любой язык и при необходимости даже переформулирует сообщения, сделав их более конструктивными!
Учитывая перечисленное, может ли ИИ заменить человека в профессии или снизить востребованность SDET-специалистов на рынке?
Привет! Меня зовут Дария, я SDET-специалист в компании SimbirSoft и недавно задалась этим вопросом. Как известно, лучший способ познакомиться с новыми технологиями и инструментами — «потрогать их руками», чем я и занялась.
В этой статье хочу поделиться результатом своего исследования.
Оптимизация Go: как повысить скорость и эффективность кода
Привет, Хабр! Меня зовут Макс, я Go-разработчик в компании SimbirSoft. Язык Go (Golang) стремительно набирает популярность, он всё чаще внедряется в существующие программные решения, а также встречается в стеке новых проектов. Высокая производительность и скорость работы – его главные преимущества, поэтому для реализации бизнес-задач он подходит как нельзя кстати. Go легко поддерживается и отлично годится для создания MVP, из-за чего востребованность в нём растёт.
Но чтобы этот язык программирования был действительно производительным, разработчикам необходимо учитывать некоторые тонкости работы с ним. Иначе ваше приложение станет таким же медленным, как айтишник без чашки кофе :) В этой статье мы с вами на примерах разберём часто возникающие ситуации при работе с Go, а также рассмотрим приёмы, которые позволят повысить производительность кода. Надеюсь, разработчики уровня джуниор и мидл смогут почерпнуть для себя что-то полезное.
Мы начинаем!
Почему JOOQ — идеальный инструмент для работы с БД при интеграционном тестировании API
Привет! Меня зовут Евгений, я SDET-специалист в SimbirSoft. Хочу поделиться примером того, как я автоматизировал тестирование API, заменив встроенные JDBC-средства на JOOQ. И расскажу, почему считаю это лучшим решением.
Все началось с того, что передо мной поставили задачу автоматизировать тестирование API с проверкой данных в БД. Так как проект только начинался, а я один отвечал за эту часть работы, то надо было сделать всё с нуля. Мне хотелось сделать все идеально (удобно, понятно, масштабируемо, с удобной поддержкой кода). Получилось все, кроме одного — масштабирование сверки данных из БД. Об этом и пойдет речь. А в конце вы найдете ссылку на исходный код.
Как работать с MassTransit и RabbitMQ: реализуем RPC с Saga и без
Привет, Хабр! Меня зовут Евгений, я backend-разработчик SimbirSoft. В этой статье я разберу два варианта решения нетривиальной задачи создания RPC через брокер сообщений RabbitMQ и библиотеку MassTransit. Подробно разберём подключение MassTransit и работу с Saga. Тема будет полезна как для начинающих, так и опытных backend-разработчиков .NET.
Мастерим многопоточность: техники и инструменты для Java-разработчиков. Часть 1
Привет, Хабр! Это первая часть обзора по изучению существенных тем Java стека и туториала по их применению. В этой статье вы найдете важные аспекты многопоточности в Java, а также полезные шпаргалки с практическими примерами.
Меня зовут Влад, я Java-разработчик в компании SimbirSoft. Надеюсь, что моя статья будет полезна как начинающим, так и продвинутым Java-специалистам, которые заинтересованы в прокачке своих знаний для успешной подготовки к собеседованиям на боевые проекты.
Какие бывают аналитики: 10 ролей и еще 3
Привет, Хабр! Меня зовут Николай, я аналитик компании Simbirsoft. Мне довелось участвовать во многих проектах, и на каждом из них заказчики понимали задачи и роль аналитика по-своему. Поэтому вопрос ролей аналитика на проекте — мои личные кровь и пот боли: часто в одном лице хотят видеть и разработчика, и продвинутого тестировщика с пониманием процессов автотестирования, и многое-многое другое. Тем не менее, многие требования находят отражение в навыках и интересах аналитика, но эти требования ещё нужно правильно сформулировать при поиске.
В этой статье я расскажу, какие роли выполняют разные специалисты, как меняются их задачи, с кем могут путать разных аналитиков в IT, как их отличить, и чем каждая роль полезна для разных типов проектов. Потому что правильно выбранный аналитик может заменить 2-3 специалистов разного профиля, а неправильно — не сделать ничего.
Этот гайд поможет и заказчикам, и исполнителям. Первым — четко сформулировать желания и потребности. Вторым — разобраться в требованиях первых и лучше понять себя как специалиста.
Иными словами, типология ролей аналитиков призвана предотвратить расхождение интересов специалиста и клиента. Я нередко наблюдал ситуации, когда запросы клиентов не отражали полный список требований, ожидаемых от специалиста на самом деле. Например, при обсуждении выяснялось, что вместо системного аналитика для разработки ТЗ требовался аналитик 1С. Или от аналитика-джуниора по умолчанию ожидались навыки по разработке взаимодействия конкретных систем, довольно редких в отрасли. При этом я не беру в расчет обычные проблемы обычного системного аналитика, когда приходится погружаться в незнакомую предметную область или принимать дела в самом разгаре проекта.
Как я написал свой первый классификатор эмоций
Всем привет! Немного о себе. Меня зовут Максим, я работаю специалистом по Machine Learning в компании SimbirSoft. Последние два года я углубленно изучал область машинного обучения и компьютерного зрения и сегодня с удовольствием поделюсь с вами опытом разработки личного пет-проекта.
В этой статье я расскажу о своем пути от идеи до реализации своего первого классификатора эмоций. Мы обсудим с вами методы, инструменты и техники, которые я применял в процессе создания своего проекта. Анализ данных, выбор модели, обучение и оценка результатов – каждый этап разработки имеет свои особенности и трудности, о чем я с удовольствием поделюсь с вами.
Почему меня привлекла именно эта тема? Во-первых, я уже решал аналогичную задачу на коммерческом проекте, которая включала распознавание и идентификацию лиц. Кроме того, меня заинтересовала эта задача тем, что она состоит из двух этапов: сначала детекция лица на изображении, а затем классификация эмоций, которые испытывает человек.
Статья будет полезна начинающим разработчикам в области Computer Vision, а также всем, кому интересна тема машинного обучения. Вы узнаете, с какой стороны подходить к решению задач с распознаванием лиц и что можно для этого использовать (подходы, инструменты и технологии).
«Ревизорро» в IT: тестируем суммаризацию текста в GigaChat и YandexGPT
После появления на рынке API для беседы с ChatGPT 3.5 каждый второй заказчик решения на основе машинного обучения (ML) хочет внедрить у себя ИИ, который может красиво и содержательно общаться на русском языке.
Меня зовут Екатерина, я IT-архитектор команды SimbirSoft, специалист по ML и поклонница всего, что связано с обработкой текстов на естественном языке (NLP). Сегодня будем разбираться в тонкостях решения одной из популярных на рынке задач – автоматического составления аннотаций. Для эксперимента мы использовали две GPT-подобных модели, «заточенных» на русский язык: GigaChat и YandexGPT. Заявленный потенциал систем тестировали на текстах трёх жанров: научном, научно-популярном и художественном. Что из этого получилось, расскажем в статье.
Материал будет полезен тем, кто следит за тенденциями развития машинного обучения на рынке и в целом интересуется внедрением больших языковых моделей (LLM) в ML-проектах – для оценки их возможностей «из коробки».
Привычка быть SOLIDным разработчиком
Привет, Хабр! Меня зовут Грант, я уже 5 лет занимаюсь backend-разработкой в SimbirSoft, а с 2021 года возглавляю Backend-отдел компании в Краснодаре. В последние несколько лет неоднократно замечаю, что на входном интервью соискатели часто путают принципы разработки. Поэтому в этой статье решил разобрать, как проще их понимать, какие связи между ними прослеживаются, стоит ли учить все или что-то можно пропустить. А еще попробую раскрыть некоторые особенности, какие секреты скрывают популярные принципы разработки.
Применяем стандартные алгоритмы в C++. Семь примеров
Привет, Хабр! Меня зовут Николай, я разработчик С++ в SimbirSoft. В этой статье я хочу поделиться своим опытом применения алгоритмов.
Каждый из нас знает, что существуют алгоритмы стандартной библиотеки, и что они делают. Но не все и не всегда используют их. Я тоже их не использовал до той поры, пока не узнал, когда их применять.
Все примеры взяты из реального проекта. Чтобы не загромождать примеры, код этих функций был упрощён для лучшего восприятия.
Прежде чем перейти к примерам, необходимо отметить основное преимущество алгоритмов: они позволяют упростить код и повысить читаемость (или самодокументирование, которое позволяет на основании названия алгоритма понять, что делается), обобщить код. Начиная с C++17, алгоритмы могут выполняться параллельно, реализация алгоритма может быть жестко с оптимизирована компилятором по сравнением с обычным кодом.
Быстрый старт, или Как ускорить запуск iOS-приложений
Всем привет! Меня зовут Фируза, я iOS-разработчик в компании SimbirSoft. В этой статье мы попробуем разобраться, как ускорить запуск приложения, а именно:
• что происходит от момента нажатия на иконку приложения до представления возможности пользователю взаимодействовать с UI;
• как собрать актуальные метрики скорости запуска и отзывчивости приложения;
• какие тактики применить, чтобы ускорить старт и отзывчивость запуска.
Статья будет полезна для iOS-разработчиков любого уровня, желающих улучшить производительность своих приложений.
Как использовать ChatGPT для разработки и учебы. Четыре сценария
Привет, Хабр! В 2023 году искусственный интеллект (далее ИИ) вышел на тот уровень популярности, когда о нем не говорил только ленивый. Все больше компаний активно начали обсуждать свои разработки в этой области, а такие модели как Midjourney, ChatGPT, Gemini (ex-Bard), Bixby и другие стали общедоступными.
В этой статье мы поделимся опытом, как можно эффективно использовать такие модели на примере бесплатной версии ChatGPT. Если вы много слышали о нем, но не знали, как внедрить в свою жизнь, или хотите попробовать новые сценарии использования, этот обзор для вас.
Хватит маппить все руками, используй Mapster
Привет, Хабр! Меня зовут Георгий, я С#-разработчик в SimbirSoft. Хочу рассказать об опыте использования библиотеки Mapster: как он может упростить разработку, сэкономить силы и частично избавиться от рутины маппинга.
Данная статья подойдет и тем, кто только собирается открыть для себя мир автомаппинга, и тем, кто хочет найти для себя альтернативу используемой библиотеки. Для полного понимания, что тут будет происходить желательно обладать базовым пониманием C#, знать о существовании DI и подозревать, что рефлексия не так проста, как кажется. Ну и LINQ с EF.Core, куда же без них (хотя про них достаточно просто когда-то слышать и примерно представлять, зачем они нужны).
Автоматизируем проверку содержимого PDF-файлов с помощью pdf-test
Многие сервисы в различных отраслях генерируют печатные формы счетов, отчётов и прочего в формате PDF. И, конечно, перед специалистами тестирования встаёт вопрос о проверке этих документов.
Обычно получается так, что сам факт генерации документа достаточно несложно покрыть автотестами, а вот проверку содержимого оставляют для ручного тестирования. Однако в подобных документах может быть много незаметных мест, различий и неточностей, которые человек может просто не заметить. Поэтому появляется необходимость проверку этих документов автоматизировать.
В этой статье мы познакомим вас с инструментом, который достаточно просто может закрыть потребность в проверке содержания PDF-файлов. Это инструмент с открытым исходным кодом — pdf-test. Он по сути является обёрткой pdfbox и позволяет из коробки использовать основные мэтчеры, не задумываясь о том, чтобы писать свои или о том, как именно парсить документ. Рассмотрим далее его применение на языке Java.
Спутник как IT-проект. Что нужно разработчику для создания и запуска своего кубсата
Привет, Хабр! Меня зовут Людмила, я SDET-специалист в компании SimbirSoft. Свои школьные и студенческие годы я провела в студенческом аэрокосмическом конструкторском бюро, занимаясь проектированием малых космических аппаратов и разработкой софта и алгоритмов для них.
Именно интерес к космосу постепенно привел меня к работе в IT. И хотя сейчас большую часть своего времени я уделяю автоматизации тестирования, тема проектирования спутников до сих пор остается для меня интересной, тем более что эти сферы пересекаются. А как именно — я опишу в статье, показав процесс создания спутника с точки зрения типичного программиста. Проведем параллели между космосом и IT, затронув и программирование, и тестирование.
Информация
- Дата регистрации
- Дата основания
- Численность
- 1 001–5 000 человек
- Местоположение
- Россия