Pull to refresh
33
Karma
0
Rating
Илья Сазонов @poxvuibr

Software developer

Используем аннотацию @Transactional like a pro

Росбанк corporate blog High performance *Java *Apache *Microservices *

Привет, Хабр! Меня зовут Никита Летов, я тимлид бэкенд-разработки мобильного приложения Росбанка для физических лиц. Этот пост входит в серию постов по разработке бэкенд-микросервисов на Java и Spring и является адаптацией моего доклада с JPoint 2022

Также хочу предупредить, что данный пост не cookbook и не предоставляет идеально приготовленное решение какой-либо бизнес-проблемы. Это разбор одной технологии, которая при правильном использовании может помочь вам в решении реальной проблемы. А может и не помочь — всё зависит от ее природы.

Читать далее
Total votes 17: ↑16 and ↓1 +15
Views 9.8K
Comments 10

Домашняя приточная вентиляция малыми средствами

Smart House

Последнюю пару лет я живу с приточной вентиляцией в городской квартире — и очень рад этому факту.

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

Коротко о главном:
• наружное расположение компонентов ради минимального уровня шума;
• минимум ручного труда в изготовлении и монтаже;
• общий ценник существенно ниже 50 тысяч рублей (ниже 30 тысяч — на момент изготовления два года назад).

И важное. Если вы — адепт систем рекуперации, долгих инженерных расчётов и полугода проектирования, эта статья не для вас. Я — адепт золотой середины между «я сделяль» и «я задолбался».

Читать далее
Total votes 152: ↑150 and ↓2 +148
Views 35K
Comments 152

Перенос данных с Oracle на PostgreSQL: основные этапы, несовпадающие типы и форматы данных

Postgres Professional corporate blog PostgreSQL *SQL *

В настоящее время тема миграции с СУБД Oracle на СУБД PostgreSQL (и разработанную на её основе СУБД Postgres Pro) является очень актуальной. В этой области у команды Postgres Professional накоплен многолетний опыт, которым мы решили поделиться. На основе наших материалов для внутреннего обучения мы подготовили серию статей для Хабра о миграции данных в PostgreSQL из «оракловой» базы.

Также на близкие темы можно посмотреть следующие доклады и мастер-классы.

Читать далее
Total votes 25: ↑25 and ↓0 +25
Views 13K
Comments 0

Облегчаем жизнь PostgreSQL таблице под нагрузкой

Karuna corporate blog PostgreSQL *Database Administration *
Tutorial

У любого современного продукта — если он успешен — есть тот момент жизни, когда он из гадкого стартапа вдруг становится вполне себе прекрасным “энтерпрайз монолит платформ систем легаси”. Без тестов, без мониторинга, с highload и, конечно же, уймой родовых травм, вызванных быстрым развитием.

На критическую бизнес логику тесты будут написаны сами, без них никуда. Мониторинг и хайлоад — это курица и яйцо. После того, как у вас появится кто-то один из этой пары, на горизонте появится и второй. А вот все те, казалось бы, “удачные” и “быстрые” решения, заложенные при рождении, придётся исправлять. И если кодовую базу можно спокойно переписать (ну или хотя бы закидать костылями), то вот база данных — это одна сплошная горячая точка. Запросы и миграции, которые легко проходили на момент становления вашего продукта, легко могут сейчас положить прод, потому что ваша база теперь под постоянной нагрузкой, а ещё она неприлично раздулась. 

Привет! Меня зовут Константин, и в Каруне я работаю backend-разработчиком. Данная статья — компиляция ряда сложностей, с которыми мы столкнулись, и методик для их решения. Вся проблема громоздких таблиц в том, что они, как визит к стоматологу — неожиданно, дорого, больно и ужасно вариативно. 

Читать далее
Total votes 25: ↑22 and ↓3 +19
Views 7.7K
Comments 6

4k @ 144Hz: DP, HDMI, USB-C Alt-Mode & cables…

Configuring Linux *Video cards Monitors and TV Desktop PC's Laptops

Я недавно сделал себе небольшой апгрейд и у меня появился монитор 4k@144Hz. Разумеется, на 144Hz он не заработал. Потому что нюансы. Мне пришлось в это нырнуть глубже, чем хотелось бы...

Спойлеры: DP, USB-C Alt-mode, Thunderbolt, USB4 3x2, 40Gbps, HDMI.
Оглавление: кабели, протоколы, режимы.

Лыдыбр: Моя старая видеокарта на компьютере сумела завести его на 4k @ 60Hz с помощью Display Port. (Либо 2k @ 144Hz). Это её техническое ограничение, больше она не может. Дальше я попытался воткнуть в монитор ноутбук (все 5 шт, какие нашлись у меня и знакомых) и обнаружил, что всё настолько сложно, что мне потребовалось несколько заходов чтения спецификации, пока я "это завёл". Выписываю свои наблюдения и эксперименты. Актуальность - первая половина 2022 года. Монитор under study - Gigabyte M32U, хотя, в принципе, это не существенно для обсуждаемого вопроса. У монитора разъёмы HDMI, DP, USB-C.

Разбирать проблему я буду слоями. Начём с физики.

Читать далее
Total votes 143: ↑143 and ↓0 +143
Views 39K
Comments 131

3 простые вещи, которые сделают вашу жизнь лучше

Social networks and communities Lifehacks for geeks Health Biology

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

Три простых вещи, о которых пойдёт речь это:

· Сон — как/сколько/почему нужно спать и какие есть лайфхаки для повышения качества сна. (этому посвящена большая часть публикации)

· Активность — какой её формат является необходимым и какие плюсы можно из неё можно извлечь.

· Перевод смартфона в ЧБ-режим — какую проблему это решает и что это дало мне.

Читать далее
Total votes 78: ↑70 and ↓8 +62
Views 42K
Comments 102

Как живет IT-шник на фрилансе с БАР без таблеток

Reading room Brain Health Biology
Sandbox

БАР была со мной долгие годы, но в 22 года появилась ясность.

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

Биполярное аффективное расстройство (БАР) — психическое расстройство с поломкой работы тела. Если у человека БАР, то «взять себя в руки» не получится. Болезнь остается на всю жизнь и прогрессирует со временем.

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

У меня расстройство второго типа, так что риск не спать сутками, решить продать все имущество и резко помчаться за билетами на Бали — не мой случай.

Первые симптомы биполярного расстройства

Когда одноклассники покоряли Doom и Dota, в моей жизни произошло много перемен. Мать выгнала из дома. В попытках выживать самостоятельно я разносил листовки и мыл авто, когда хватало времени - сидел за партой и читал книги. Через полгода “поверхностной учебы”, учителя забили тревогу, о ситуации узнал отец. Чтобы разобраться в вопросе, повел в Психоневрологический диспансер (коротко ПНД). Так я впервые оказался на приеме у психиатра.

Читать далее
Total votes 49: ↑45 and ↓4 +41
Views 20K
Comments 28

Псс, парень… индекс нужен?

Тензор corporate blog High performance *PostgreSQL *SQL *Database Administration *

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

Мы научили наш сервис визуализации планов PostgreSQL отвечать на эти вопросы, и под катом расскажем, чем именно он руководствуется в своих рекомендациях.

Читать далее
Total votes 22: ↑22 and ↓0 +22
Views 15K
Comments 24

Архитектура Архитектуры. Шаг 9: Успех на каждый день

System Analysis and Design *Designing and refactoring *Development Management *Project management *

Хотели когда-нибудь примерить на себя костюмчик успешного архитектора из мира больших бизнесов? Ну тех, кто зарабатывает на лекциях и подкастах больше, чем на основной работе. Рецепт то не особенно сложный: пара успешных проектов и кул стори в интернетах. Впахивай и впаривай! Иногда в комплекте к костюму идут одноцветные тапочки…

Шагаем дальше
Total votes 14: ↑11 and ↓3 +8
Views 4.8K
Comments 7

Как мы ускорили выполнение запросов PostgreSQL в 100 раз

CloudMTS corporate blog High performance *Open source *PostgreSQL *Database Administration *
Translation

Существует великое множество статей об оптимизации PostgreSQL — эта «кроличья нора» весьма глубока. Когда несколько лет назад я начал разрабатывать бэкэнд аналитического сервиса, у меня уже был опыт работы с другими СУБД, такими как MySQL и SQL Server. Тем не менее, раньше мне не приходилось так фокусироваться на производительности. В прошлых проектах, над которыми я работал, либо не было жестких требований к времени обработки (DS/ML), либо не требовалось обрабатывать много строк одновременно (обыкновенные веб-приложения). Однако в этот раз мои запросы:

состояли из 3-10 JOIN-ов по коррелирующим запросам;

уielded от 10 до 1,000,000 строк;

должны были выполняться в течение времени, определенного UX-ом;

не могли быть hinted — пока Cloud SQL, управляемый PostgreSQL в Google Cloud, не стал поддерживать pg_hint_plan в конце 2021 года;

запрещали прямой доступ к серверному процессу, чтобы, например, хакнуть некоторые perf — потому что PostgreSQL был managed.

Получение целого миллиона строк в одном API endpoint сигнализирует о проблеме в алгоритме или архитектуре. Конечно, все можно переписать и перепроектировать, но за это нужно платить.

У нас не нашлось «заклинания», которое решило бы все проблемы с производительностью SQL. Тем не менее, я упомяну здесь несколько дельных предложений, которые помогли нам и, надеюсь, смогут помочь читателю. Разумеется, это не какие-то сакральные знания. Но когда мы начинали оптимизацию, я был бы рад их прочитать или услышать.

Читать далее
Total votes 30: ↑27 and ↓3 +24
Views 27K
Comments 2

Повышение/сохранение эффективности в трудные времена

IT career Lifehacks for geeks Brain Health

От ИТшника для ИТшников, и не только.

Вместо предисловия

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

Привет. В 14 лет я начал подрабатывать сборкой компов, сейчас мне 40 и я пишу на Java. Большую часть жизни проработал в ИТ на разных позициях, и за это время убедился, что я умный. Но не самый умный. И самым умным, видимо, никогда не стану. Печалька. Более того, постоянно встречаю людей умнее, профессиональнее и сосредоточеннее меня. Также должен признаться, что мне нравится моя работа, но нравится и многое другое.

Читать далее
Total votes 42: ↑41 and ↓1 +40
Views 16K
Comments 20

Интеграционное тестирование микросервисов Spring Boot в монорепозитории

Домклик corporate blog Java *Kotlin *Microservices *

Привет, Хабр! С ростом количества микросервисов и их взаимосвязей может возникнуть потребность комплексной проверки работоспособности системы. Со временем API сервисов и их поведение может дорабатываться и изменяться, при этом хочется иметь уверенность, что система микросервисов в совокупности ведёт себя согласно ожиданиям. Мы разберём простой пример написания интеграционных тестов, которые в дальнейшем можно встроить в CI/CD-процесс для решения подобной проблемы.

Читать далее
Total votes 19: ↑19 and ↓0 +19
Views 5.2K
Comments 5

Импорт и экспорт данных в PostgreSQL, гайд для начинающих

PostgreSQL *SQL *
Sandbox

В процессе обучения аналитике данных у человека неизбежно возникает вопрос о миграции данных из одной среды в другую. Поскольку одним из необходимых навыков для аналитика данных является знание SQL, а одной из наиболее популярных СУБД является PostgreSQL, предлагаю рассмотреть импорт и экспорт данных на примере этой СУБД.

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

В данной статье приведены примеры импорта в PostgreSQL непосредственно самой базы данных в формате sql, а также импорта и экспорта данных в наиболее простом и распространенном формате .csv, в котором в настоящее время хранятся множество существующих датасетов. Формат .json хоть и является также очень распространенным, рассмотрен не будет, поскольку, по моему скромному мнению, с ним все-таки лучше работать на Python, чем в SQL.

Читать далее
Total votes 6: ↑4 and ↓2 +2
Views 40K
Comments 7

Распределённые транзакции Kafka + PostgreSQL средствами Spring

ГК ЛАНИТ corporate blog IT Infrastructure *

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

Особенно интересной эта задача становится, когда для интеграции используется Kafka, так как она имеет свои ограничения, касающиеся реализации транзакционности. Вообще, сейчас Kafka достаточно широко применяется именно  в качестве платформы для асинхронной интеграции, это справедливо и для проектов, которые мы в ЛАНИТ — Би Пи Эм реализуем, например, в Альфа-Банке и ВТБ. Поэтому, надеемся, данная тема будет интересна многим.

В этой статье рассмотрим подход к реализации распределённых транзакций (в рамках одного Java-приложения), которые охватывают Kafka и реляционную СУБД. Для этого воспользуемся средствами управления транзакциями, имеющимися в Spring.

Варианты с организацией eventual consistency с помощью типовых паттернов (Saga, Transactional Outbox и др.) и/или использования дополнительных платформ (Debezium, Kafka Connect и пр.) - тема для отдельной статьи (так что ждите продолжения). В этой статье тему затрагивать не будем. 

Читать далее
Total votes 46: ↑46 and ↓0 +46
Views 11K
Comments 15

Иностранные хостеры с возможностью оплаты из России

Hosting Payment systems *Finance in IT

Всем привет! Меня зовут Леонид, я владелец сервиса Поиск VPS. В последнее время мне в обратную связь начало поступать очень много вопросов, каким образом можно оплачивать зарубежный хостинг, так как Visa и MasterCard Российских банков перестали работать не в России.

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

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

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

Читать далее
Total votes 52: ↑52 and ↓0 +52
Views 53K
Comments 75

Как получить пароль WPA2 WiFi с помощью Aircrack-ng?

Information Security *IT systems testing *Wireless technologies *
Tutorial
Sandbox
Translation

Друзья, всех приветствую!

В этой статье я покажу вам как использовать airmon-ng (скрипты из пакета aircrack-ng) для обнаружения беспроводных сетей вокруг нас. Затем мы деаутентифицируем клиентов определенной беспроводной сети, чтобы перехватить handshake, а затем расшифруем его, чтобы найти пароль WiFi.

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

Прежде чем приступить к работе, давайте посмотрим, что нам понадобится.

Читать далее
Total votes 45: ↑27 and ↓18 +9
Views 28K
Comments 31

Насколько быстрее Java 17?

Дата-центр «Миран» corporate blog High performance *IT systems testing *Java *Client optimization *
Translation

Решение задачи по составлению расписания турнира с разъездами (TTP) — один из вычислительных тестов в нашем наборе

Позавчера вышла Java 17 с кучей новых функций и усовершенствований. Большинство из них требуют изменения кода. Кроме производительности. Просто заменяете JDK — и получаете бесплатную прибавку производительности. Но насколько большую? Стоит ли она того? Для этого мы провели бенчмарки JDK 17, JDK 16 и JDK 11.
Читать дальше →
Total votes 16: ↑13 and ↓3 +10
Views 10K
Comments 2

TDD есть опиум для народа. Так ли хороша технология, как ее описывают адепты?

Quadcode corporate blog IT systems testing *TDD *

Привет, Хабр! Меня зовут Владимир, я работаю программистом в компании Quadcode. Вот уже почти полтора десятилетия я при помощи доброго десятка языков программирования разрабатываю приложения - от простых, вроде маленького плагина для Emacs, до сложных распределенных систем. Последние 4 года своей жизни я посвятил компании Quadcode, где занимаюсь разработкой транспортной подсистемы. Лет пять назад я вплотную столкнулся с адептами TDD (test-driven development) и это произвело на меня настолько сильное впечатление и оставило так много эмоций, что я написал “для своих” критический разбор наиболее часто встречаемых мною тезисов об этой технике (я бы даже сказал - учении). До сих пор мое мнение о TDD не изменилось, так что хотел бы описать его под катом и предлагаю обсудить вместе спорные моменты в комментариях.

Читать далее
Total votes 57: ↑44 and ↓13 +31
Views 13K
Comments 243

Россия 2022: как хранить криптовалюту в условиях санкций?

Reading room Finance in IT Cryptocurrencies


Peace, Хабр!


Последние дни много разговоров, что криптовалюта — способ: a) сберечь свои рублевые сбережения от обесценивания, b) вывести из под риска национализации валютные сбережения.


И действительно (хорошая новость): на текущий момент ограничений по покупке и хранению криптовалют для резидентов РФ нет. Ну почти нет. По сравнению с фиатными биржами — нет.


Но (плохие новости):


  • Американские сенаторы уже обсуждают меры по ограничению использованию криптовалют для обхода санкций со стороны России [1],
  • Евросоюз занят тем же самым [2],
  • ФБР появилось подразделение по контролю за оборотом криптовалюты ([3], анонс от 17 февраля 2022, хотя межгосударственные финансовые дела вряд ли в их юрисдикции).

Еще хорошая новость (последняя):
Хрустальный шар/магический кристалл Гарри Поттер еще не подвез, поэтому сценарий с обходом санкций через криптовалютные переводы и с противостоянием этому обходу — это потенциальное будущее.


Снова плохая новость (не последняя):
Если Вам кажется, что риски в этом потенциальном будущем для Вас, как для частного инвестора, высокие, то Вам не кажется.


И что с этим делать?
Правильно — разобраться что, где, как (и надо ли) хранить условиях санкций.

Читать дальше →
Total votes 35: ↑31 and ↓4 +27
Views 67K
Comments 67

Почему я против enum

VK corporate blog System Analysis and Design *Development for iOS *Designing and refactoring *Swift *

Меня зовут Саша Терентьев, я из команды ленты ВКонтакте. В этой статье поделюсь мыслями о проблемах кода, где используются enum и сопоставления типов. Часто встречаю такой код в проектах, ресурсах, примерах. Мы обсуждали это с коллегами на внутреннем событии, и из моего доклада выросла эта статья.

Букв будет много. Но, думаю, материал пригодится широкому кругу разработчиков — и не только iOS. Примеры основаны на псевдо-Swift и написаны по мотивам использования UIKit. Но могут пригодиться для работы с разными платформами и в любой области, где возникают сопоставления с образцом, приведения типов, переборы множеств типов.

Читать далее
Total votes 55: ↑38 and ↓17 +21
Views 42K
Comments 77

Information

Rating
Does not participate
Date of birth
Registered
Activity