Pull to refresh
1
0
Send message

Kotlin Coroutines. Часть 2

Reading time10 min
Views2.3K

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

Итак, начинаем. Сначала кратко расскажу о материале в этой статье. Для разогрева поговорим о скоупе и о том, для чего он вообще нужен, далее перейдем к контексту, там я попробую объяснить сложное на пальцах, и, наконец, затронем к Continuation.

Читать далее
Total votes 6: ↑6 and ↓0+6
Comments2

Хранилища данных. Обзор технологий и подходов к проектированию

Level of difficultyEasy
Reading time26 min
Views6.1K

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

В этой статье будут рассмотрены основные подходы к проектированию архитектуры хранилищ данных (DWH), эволюция архитектур, взаимосвязь Data Lake, Data Factory, Data Lakehouse, Data Mesh c DWH, преимущества и недостатки подходов к моделированию данных. Материал будет полезен тем, кто работает с корпоративными данными: аналитики, инженеры и архитекторы данных.

Читать далее
Total votes 14: ↑11 and ↓3+12
Comments3

SOLID в Go и щепотка паттернов

Level of difficultyMedium
Reading time23 min
Views5.6K

SOLID-ная статья о принципах SOLID, которую вы можете предложить тем, кто хочет понять эти принципы в контексте языка Go. Или прочитать самостоятельно, если это интересно и вам.

И да, как сказал бы волк из небезызвестного мультика: «SOLID? Шо, опять?»

Читать далее
Total votes 22: ↑19 and ↓3+16
Comments8

Полное руководство по Suricata: основы и важные команды

Level of difficultyEasy
Reading time10 min
Views3.5K

Введение

Suricata — это многофункциональная и мощная система обнаружения вторжений в сеть (IDS), система предотвращения вторжений (IPS) и инструмент мониторинга сетевой безопасности (NSM). Разработанная Фондом открытой информации безопасности (OISF), Suricata известна своей высокой производительностью и масштабируемостью, что делает её популярной среди специалистов по безопасности для мониторинга и защиты сетевых инфраструктур. Это полное руководство охватывает основы Suricata, её ключевые функции, процесс установки, детали конфигурации и важные команды, чтобы помочь вам максимально использовать её потенциал.

Читать далее
Total votes 5: ↑4 and ↓1+4
Comments4

Volatile, Lock-free, Immutable, Atomic в Java. Как понять и начать использовать

Level of difficultyMedium
Reading time6 min
Views7.6K

Привет, меня зовут Денис Агапитов, я руководитель группы Platform Core компании Bercut.

Сегодня хочу поговорить об одном из lock-free алгоритмов в Java. Разберём как с ним связано ключевое слово volatile и паттерн immutable.

Читать далее
Total votes 9: ↑9 and ↓0+11
Comments13

Отказоустойчивый деплой приложений в Kubernetes. Принципы, паттерны и приемы

Level of difficultyEasy
Reading time18 min
Views6.6K

Привет, Хабр! Я  исполнительный директор по разработке департамента ML и BD Газпромбанка. Сегодня хочу поговорить с вами о деплое.

По данным, приведенным в Google SRE book, до 70% проблем происходит вследствие изменений в уже работающих системах. По моим личным ощущениям, это близко к правде: если у вас хорошо спроектированное и написанное приложение и стабильная, отлаженная инфраструктура, именно деплой — узкое место (которое можно улучшить). Для минимизации рисков Google SRE BOOK рекомендует использовать постепенные выкаты, быстро и точно анализировать проблемы, а в случае необходимости легко откатываться обратно. 

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

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

Те, кто больше любит слушать, чем читать, могут посмотреть мой доклад про это на HighLoad++. Остальным — добро пожаловать под кат.

Читать далее
Total votes 20: ↑20 and ↓0+22
Comments0

Пакетная обработка в PostgreSQL

Level of difficultyEasy
Reading time3 min
Views5K

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

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

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

В этой статье рассмотрим, как реализовать пакетную обработку в PostgreSQL.

Читать далее
Total votes 16: ↑9 and ↓7+6
Comments18

Эффективность Spring-приложений в рантайме. Текущее состояние дел и планы на будущее

Level of difficultyMedium
Reading time12 min
Views6.9K

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

Себастьян Делойзе, контрибьютор Spring Framework, делится обзором усилий команды Spring по оптимизации эффективности приложений во время выполнения. Он рассматривает Virtual Threads, GraalVM Native Image, Project CRaC, Project Leyden и всё это в контексте Spring!

Читать далее
Total votes 19: ↑18 and ↓1+18
Comments0

Go и pgx. Пагинация в запросах к БД Postgres

Level of difficultyEasy
Reading time3 min
Views3.5K

Доброго дня! Хочу поделиться лайфхаком по реализации универсального способа пагинации в произвольных запроса к БД для получания списков.

Имеем изначально задачу по реализации HTTP REST CRUD сервера на Go. База данных - PostgreSQL. Используемый драйвер - pgx - PostgreSQL Driver and Toolkit.

Задача в общем тривиальная - сделать так, чтоб запросы получали на вход параметры пагинации (номер страницы, количество записей на страницу) и отдавали на выход поля таблицы и общее доступное количество страниц.

Общее количество страниц в таблице БД получить несложно:

Читать далее
Total votes 9: ↑5 and ↓4+3
Comments57

Запускаем Stable Diffusion на GPU AMD Radeon в Docker

Level of difficultyMedium
Reading time3 min
Views5.7K

Для запуска нам понадобится Ubuntu с установленными: git, make, docker и ROCm.

Инструкция по запуску короткая и простая, поэтому дополнительно разберём пример генерации изображения для этой статьи и продеманстрируем работу Stable Diffusion на AMD Radeon. Всё нижеизложенное протестировано на AMD Radeon RX 7900 XTX.

Читать далее
Total votes 10: ↑9 and ↓1+11
Comments13

JSON словарь в качестве постоянной памяти для GPT-ботов (версия 3.0)

Level of difficultyEasy
Reading time4 min
Views5K

Как заставить любого GPT-бота на базе любой LLM (например на ChatGPT) незаметно для пользователя запоминать в его постоянную память нужные нам сведения из диалога?

Пробуем применить подход к постоянной памяти используя JSON структуру.

Читать далее
Total votes 8: ↑4 and ↓4+2
Comments9

Как загрузить, установить Office 2024 LTSC с сайта Microsoft и активировать навсегда?

Level of difficultyMedium
Reading time8 min
Views193K

Десять лет назад я писал пару статей - Как загрузить последний Office с сайта Microsoft без всякого App-V / Хабр (habr.com) и Как загрузить Microsoft Office 16 с сайта Microsoft / Хабр (habr.com), при помощи на тот момент еще мало кому известным Office Deployment Tool.

Время бежит стремительно, за Office 2016 выходит Office 2019, Office 2021, и вот сейчас подошло время для Office 2024. Что ж, посмотрим, что поменялось в плане загрузки, установки и активации продукта за десять лет.

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

Microsoft давно перешел на систему распространения продуктов семейства Office по разным, так называемым, "каналам" (channels), в зависимости от того как часто вы хотите получать нововведения и обновления.

Ключевым отличием в текущей загрузке и установке Office от того, что было актуально во времена Office 2016, является то, что вы должны определить, каким каналом распространения вы собираетесь пользоваться, - то есть с какого канала собираетесь устанвливать сам продукт. Тем, кто хотел бы подробно изучить разные каналы распространения я предложу почитать первоисточник - Обновления Office - Office release notes | Microsoft Learn. Остальным кратко резюмирую - Microsoft сейчас предпочитает всем продать подписку на Microsoft 365 (то, что ранее называлось Office 365), с регулярно обновляемыми возможностями в течении так называемой Современной политики жизненного цикла. По этой же современной политике распространяется пользовательские (коробочные, ретейл) версии Office 2021. Office 2021, например, поддерживается лишь до 13 октября 2026. А более старые версии следуют, так называемой политике фиксированного жизненного цикла, в рамках которой Office 2016 и Office 2019 поддерживаются лишь до 14 октября 2025. В целом, они не перестанут работать после, однако, перестанут обновляться. И у тех из вас, кто пользуется почтовыми сервисами на базе Microsoft Outlook.com или Office365, а возможно и пользователям Microsoft Exchange, с обновлениями выпущенными после 14 октября 2025 уже пора призадуматься об обновлении.

Читать далее об установке Office 2024
Total votes 166: ↑157 and ↓9+173
Comments244

Lazy Loading в Java

Level of difficultyEasy
Reading time5 min
Views5.8K

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

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

Как и наши хвостатые друзья, существует такой паттерн как Lazy Loading, который позволяет экономить ресурсы, инициализируя объекты только тогда, когда они действительно нужны.

Рассмотрим, как мы можем применить этот котиковый подход в Java. Будем как котики — умными, экономными и эффективными!

Читать далее
Total votes 16: ↑11 and ↓5+8
Comments6

Что такое free tier и какие облачные ресурсы вы можете бесплатно использовать прямо сейчас

Reading time7 min
Views10K

Привет, Хабр! Меня зовут Никита Бутримов, я лидер продуктового направления в Cloud.ru, отвечаю за эксплуатацию, стабильную работу и поддержку платформы Cloud.ru Evolution. Недавно мы запустили Evolution free tier, чтобы инженерам и разработчикам было комфортно попробовать возможности платформы. Спустя некоторое время мы поняли, что далеко не все понимают, что это такое и как работает. Поэтому в сегодняшней статье я хочу развеять все мифы — рассказать, что вообще такое free tier, сделать краткий обзор зарубежных и отечественных предложений, а также помочь разобраться, какие именно ресурсы вы реально сможете подключить у нас и использовать бесплатно. 

Обзор будет полезен как тем, кто еще не пользовался облаками, так и тем, кто уже многое попробовал и в курсе всех новинок рынка. Поехали!

Читать дальше
Total votes 15: ↑8 and ↓7+1
Comments50

Блеск и нищета нового Scrolling API в Spring Data

Level of difficultyEasy
Reading time9 min
Views7.4K

В Spring Data 3.1 появилось новое API для итерирования по большому объему данных: Scrolling API. Давайте изучим его, посмотрим на практические применения с примерами кода и преимущества по сравнению со всем известным Pageable. А также разберём, чего Scrolling API пока не хватает, и можно ли его вообще брать в свои проекты. Если хотите выяснить, как с новым API в теории ускорить пагинацию больших данных, — заходите под кат.

Читать далее
Total votes 22: ↑22 and ↓0+28
Comments5

Как и зачем активно проверять работоспособность узлов при проксировании запросов с помощью Nginx

Level of difficultyMedium
Reading time7 min
Views3.5K

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

Меня зовут Ринат Фатхуллин, я владелец продукта Platform V SynGX. В СберТехе мы с 2017 года развиваем собственную сборку Nginx для внутренних заказчиков, а в 2022 вышли на рынок под брендом Platform V SynGX.

Читать далее
Total votes 16: ↑13 and ↓3+15
Comments0

Кратко про класс CompletableFuture в Java

Level of difficultyEasy
Reading time5 min
Views6.8K

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

Асинхронное программирование уже давно является полноценной частью Java. С появлением Java 8 и введением класса CompletableFuture, асинхронное программирование стало более доступным.

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

Читать далее
Total votes 18: ↑15 and ↓3+15
Comments2

Go + Minio: как написать простой сервер для взаимодействия с файлами

Level of difficultyMedium
Reading time26 min
Views5.6K

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

Если вы только изучаете go, начинаете писать сервера, то обязательно посмотрите эту статью - для бекендера уметь работать с s3 хранилищем так же важно, как и уметь работать с реляционной / нереляционной базой данных и с key-value базой - это основа основ.

Читать далее
Total votes 11: ↑1 and ↓10-9
Comments10

Создание дистрибутивов для разных операционных систем в Java 21 и 22

Reading time6 min
Views4.2K


Статья рассказывает о построении дистрибутивов приложений для операционных систем Windows, macOS и Linux в случае использования Java 21 и 22.

Продолжает ранее опубликованную статью о создании дистрибутивов в предыдущих версиях Java, подробно описывая кардинальные изменения, произошедшие с того времени.
Читать дальше →
Total votes 6: ↑6 and ↓0+7
Comments0
1
23 ...

Information

Rating
Does not participate
Registered
Activity