Pull to refresh
48
0.1
Send message

Не гугли — собери ИИ-агента, который сам ищет, пишет и помогает с кодом

Level of difficultyEasy
Reading time17 min
Views23K

Заметил, что трачу часы на поиск, баги и рутину — собрал ИИ-агента, который делает это за меня. Протестировал 3 подхода — от no-code до кастомного LangChain. В статье — инструкция и инсайты.

Читать далее

Распределённые транзакции в микросервисах: от SAGA до Two‑Phase Commit

Reading time29 min
Views14K

Переход от монолита к микросервисной архитектуре приносит гибкость и масштабируемость, но и создает новые сложности. Одна из ключевых проблем –согласованность данных и транзакции. В монолите обычно можно обернуть несколько операций одной ACID-транзакцией: либо все операции выполняются успешно, либо при ошибке происходит полный откат. В мире микросервисов такой прямолинейный подход не работает. Каждый сервис автономен, у каждого своя база данных, и общаются они через сеть. Как результат, гарантировать атомарность и целостность процессов, охватывающих несколько сервисов, непросто. Возникает риск частичных обновлений: одна часть системы изменилась, а другая – нет, что приводит к неконсистентным (несогласованным) состояниям данных.

Чтобы решить эту проблему, разработаны специальные паттерны и протоколы управления распределёнными транзакциями. В этой статье детально рассмотрим ограничения классических ACID-транзакций в распределённой архитектуре, а также два подхода к распределённым транзакциям – сага (SAGA) и двухфазный коммит (2PC). Разберём мотивацию, принципы работы, преимущества и недостатки каждого, сравним их по критериям. Кроме того, обсудим альтернативные подходы, такие как TCC (Try-Confirm-Cancel), паттерн Outbox, а также кратко упомянем eventual consistency, транзакционные сообщения, инструменты вроде Atomikos и др. В завершение – практические рекомендации, как выбрать подходящий способ обеспечения согласованности в ваших микросервисах.

Читать далее

Тяжёлая артиллерия в оценке сроков задач

Level of difficultyMedium
Reading time12 min
Views5.3K

Ваш планинг — фикция? Перестаньте гадать на кофейной гуще: как декомпозировать сложную задачу и оценить сроки, нырнув прямо в код. Инструмент и методика внутри.

Пли!

C# Как работает async/await? Асинхронное программирование

Level of difficultyMedium
Reading time13 min
Views11K

Разбираемся с async/await без магии и скуки. Зачем вообще нужна асинхронность? Как устроена асинхронность в .NET внутри? Как работают await, Task, ValueTask, и многое другое?

Читать далее

Микросервисы на C#. Часть 3

Level of difficultyMedium
Reading time4 min
Views4.6K

Вас не удивило, что проблема 1970-х — высокая сцепленность кода — дожила до 2010-го и способствовала изобретению микросервисов? Если так, то вы не удивитесь и узнав, что микросервисы тоже её не решили. Сегодня индустрия относится к ним скептически. За последние десять лет мы поняли, что они не стали панацеей. Архитекторы в мире IT — это не учёные, и даже не художники. Это шаманы. Удачно разбить систему на несцепленные части было сложно в 1970-е, сложно и сейчас.

При этом микросервисы привносят проблемы, которых не было в монолитных приложениях.

Первая часть

Вторая часть

Читать далее

Docker для начинающих: простое развертывание приложения за несколько шагов

Level of difficultyMedium
Reading time7 min
Views25K

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

Начну, пожалуй, с самого сервиса. Я написал достаточно простое веб-приложение на стеке - Java, Spring, Maven, REST, HTTP, Hibernate, Postgresql, JSP/JSTL. Пока приложение представлено достаточно в сыром виде, но для понимания, как оно упаковывается в контейнер, вполне подойдет. Если вкратце, то это сервис для голосования за лучший ресторан, где можно зарегистрироваться, добавить ресторан, его описание, оставить отзыв и проставить рейтинг. Также, в зависимости от роли, можно посмотреть информацию о пользователях и редактировать ее. 

Читать далее

Топ-11 бесплатных нейросетей для генерации изображений: лучшие AI генераторы 2025 года

Level of difficultyEasy
Reading time8 min
Views476K

Признайтесь, сколько раз вы хотели быстро накидать картинку для поста или презентации, но вместо этого застревали в редакторе или бесконечных поисках подходящего изображения в Google? А ведь как было бы здорово, если бы картинка, которая у вас в голове, внезапно просто появилась! Время — деньги, вдохновение — на паузе, и тут на помощь приходит AI. Нейросети могут генерировать всё, что угодно, включая самые безумные идеи. Больше не нужно тратить часы на поиски, когда за пару кликов можно увидеть то, что секунду назад было в мыслях.  

Кстати, заметили обложку с динозавром? Давайте будем звать его Рекс. Рекс –сам плод работы нейросети. Сегодня он станет главной звездой наших экспериментов. Но что будем делать? Помните я говорил о безумных идеях? Так вот, чтобы понять все возможности генерации, давайте дадим AI сложное задание. Отправим Рекси куда-нибудь в космос, например на Луну, пусть наденет скафандр и готовит барбекю на фоне Земли. Интересно? Тогда пристегивайтесь, мы отправляемся в мир генерации изображений.

Читать далее

Xray на Keenetic / Xkeen

Level of difficultyEasy
Reading time9 min
Views204K

Утилиту для поддержки Xray на роутерах Keenetic — Xkeen.
Весь код написан на чистом shell и открыт на GitHub.

Собирает Xray под Ваш Keenetic на Entware.
Доступны GeoIP и GeoSite от AntiFilter, AntiZapret и v2fly.

Автоматически обновляет в указанное время Xray, GeoIP и GeoSite.

Ознакомиться с Xkeen

Как сделать локальное развертывание DeepSeek. Пошаговое руководство для разработчиков

Level of difficultyMedium
Reading time2 min
Views23K

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

Читать далее

Горизонтальное масштабирование базы данных. Репликация. Партицирование. Шардирование

Level of difficultyEasy
Reading time11 min
Views20K

В современном мире данных нагрузка на базы данных стремительно растёт. Когда один сервер перестаёт справляться с объёмом запросов, встаёт вопрос о масштабировании: как эффективно распределить нагрузку, сохранив высокую производительность и доступность?

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

Читать далее

Ищем работу в 2025 году: что происходит с рынком IT и как к нему адаптироваться

Level of difficultyEasy
Reading time10 min
Views82K

Ну что, 2025 год уже наступил и многие из нас,  в новом году,  задумались о смене работы. В том числе и я. В этот раз, я решил собрать всю доступную мне информацию по поиску работы в РФ/СНГ и за рубежом.

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

Читать далее

Пулы объектов в C#: примеры, устройство и производительность

Level of difficultyMedium
Reading time6 min
Views9.4K

Пул объектов (Object Pool) — это паттерн, который позволяет повторно использовать объекты вместо создания новых. Это может быть полезно в ситуациях, когда инициализация объектов затратна. Паттерн широко применяется в разработке игр и приложениях, где важно минимизировать использование памяти. В этой статье мы рассмотрим, как этот шаблон реализован в C#, и как он может улучшить производительность.

Читать далее

Domain-Driven Design: чистая архитектура снизу доверху

Level of difficultyMedium
Reading time18 min
Views42K

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

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

Да, мы уже знаем самые популярные практики: KISS, DRY, YAGNI, SOLID, что там ещё... Мы умеем их применять. Но нас не покидает чувство, что все эти практики объединяет общая научная основа. Знаете, это как с Менделеевым, который на основе закономерностей практически по наитию составил периодическую систему, а потом открыли электроны и всё встало на свои места.

У меня для вас хорошие новости: научная основа есть. Это предметно-ориентированное проектирование.

Но есть и плохая новость: тема настолько новая и непростая в изучении, что какая-никакая популярность к ней пришла лет 5 назад, и до сих пор совсем небольшое число разработчиков достаточно хорошо в ней разбирается.

Но есть ещё одна хорошая новость: в статье ниже я постараюсь дать максимально понятный ответ, что же такое предметно-ориентированное проектирование.

Начнём.

Читать далее

Почему СУБД такие медленные

Level of difficultyMedium
Reading time11 min
Views39K


Недавно на Хабре публиковался перевод статьи «Просто выберите Postgres» (оригинал, англ. яз) с аргументами, что Postgres — оптимальная БД для десктопных и мобильных приложений. Аналогичное мнение высказывают в других популярных статьях вроде «До свидания MongoDB, здравствуй PostgreSQL». Главным недостатком SQLite называют то, что данные хранятся в одном файле, а MongoDB (а также DynamoDB и Cassandra) — низкую производительность:

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

…Если паттерны доступа существенно изменятся, то может потребоваться полная повторная обработка всех данных».

Более производительные резидентные БД хранят данные в памяти (Redis, Valkey), но их использование ограничено объёмом ОЗУ.

После такого заявления интересно посмотреть на независимые тесты производительности разных СУБД.
Читать дальше →

Реализуем паттерн Unit of Work в ASP.NET Core

Level of difficultyEasy
Reading time4 min
Views6.7K

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

Сегодня разберём, как реализовать паттерн Unit of Work в ASP.NET Core. Вместо долгих теоретических рассуждений, посмотрим, зачем он вообще нужен, и как правильно его применить на практике.

Читать далее

Альтернативный список заблокированных в РФ ресурсов Re:filter

Reading time5 min
Views65K

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

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

Читать далее

15 бесплатных видеоуроков по созданию игр для школьников

Level of difficultyEasy
Reading time7 min
Views4.8K

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

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

Для начала необходимо скачать Unity на компьютер, для этого есть подробная инструкция

Читать далее

Пишем приложение на C#-стеке

Level of difficultyMedium
Reading time10 min
Views13K

Всем привет! Меня зовут Дмитрий Бахтенков, и я .NET-разработчик. Сегодня мы проведем эксперимент — напишем полноценное веб-приложение с использованием решений, которые написаны на C# и платформе .NET. Больше моих статей можно прочитать в медиа вАЙТИ.

Что я имею в виду?

Как мы знаем, в общем случае веб-приложение состоит из бэкенда, фронтенда, базы данных и иногда из кеша. С бэкендом и фронтендом всё понятно: у нас есть замечательный фреймворк ASP.NET Core для сервера и blazor или razor pages для клиента. Однако инфраструктурные части приложения — БД, кеши — чаще всего пишутся на других, более низкоуровневых языках, таких как C и C++.

К счастью, недавно Microsoft выпустила решение для кеширования — аналог Redis, который называется Garnet. В качестве основной базы данных можно использовать документную БД RavenDB, которая как раз написана на C#.

Читать далее

Обход блокировок с помощью Double…

Reading time9 min
Views62K

В статье будут рассмотрены четыре независимых варианта прохождения трафика транзитом с помощью:

1) Double openVPN

2) openVPN + vtun

3) openVPN + tun2proxy через socks5 прокси

4) GOST + openVPN

Читать далее

Уровни изоляции транзакций в БД

Level of difficultyMedium
Reading time9 min
Views47K

В этой статье обсудим, что из себя представляет изолированность транзакций в БД, какие есть уровни изоляции транзакций, как их установить, какие бывают аномалии на разных уровнях, и что такое MVCC. Естественно, всё на простых примерах.

Читать далее

Information

Rating
5,442-nd
Registered
Activity