Pull to refresh
3
0
Send message

Spring Data JPA и Hibernate: ориентируемся на производительность. Часть 1

Level of difficultyEasy
Reading time14 min
Views6.5K

Команда Spring АйО перевела и адаптировала доклад Мацея Валковяка «Performance oriented Spring Data JPA & Hibernate», в котором на наглядных примерах рассказывается, как существенно улучшить производительность приложения, оптимизировав его взаимодействие с БД. 

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

Читать далее

Все, что нужно PostgreSQL: быстрые диски, дорогой процессор и терабайты RAM

Level of difficultyMedium
Reading time13 min
Views17K

В облачном мире PostgreSQL возникает много вопросов. Какую конфигурацию выбрать для старта кластера? Сколько оперативной памяти и ядер CPU нужно под мою базу данных? Нужны ли под такой профиль нагрузки высокочастотные процессоры? Какое должно быть соотношение RAM к Storage в кластере? Хватает ли ресурсов и на системные службы, и на кэширование запросов? Не переплачиваю ли я?

Всем привет! Меня зовут Гришин Александр, я руководитель по развитию продуктов хранения данных в Selectel, отвечаю за объектное S3-хранилище и облачные базы данных. В этой статье я поделюсь своими практическими рекомендациями и ориентирами по планированию использования ресурсов кластера в PostgreSQL — в зависимости от типа и профиля нагрузки, размера данных и характера доступа к ним. Погнали!
Читать дальше →

Решаем проблему «деградации» YouTube с помощью NoDPI

Level of difficultyEasy
Reading time5 min
Views104K

Салют, Хабр! Я думаю, каждый из вас знаком или, по крайней мере, слышал о такой прекрасной утилите как GoodbyeDPI (большое спасибо @ValdikSS!). Сегодня я хочу представить вам (почти) свою разработку - аналог GoodbyeDPI.

Около полугода назад в своей статье Обвиваем YouTube змеем, или как смотреть и скачивать видео с YouTube без VPN на чистом Python-е. Часть 1 (заблокирована по требованию РКН) я рассказывал о том, как скачивать видео с YouTube на Python, а так как YouTube у нас "деградировал", я поделился инструментом, с помощью которого можно исправить этот вопиющий недостаток. Инструмент тогда выглядел достаточно сыро, и несмотря на то, что он выполнял свою задачу, требовал серьезных улучшений. Увидев интерес общественности, я решил допилить его, и вот, спустя полгода, после немалой работы, я рад представить вам NoDPI - проект, который явно не понравится РКН (и он опять меня заблокирует).

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

Читать далее

Управление транзакциями в Spring: подробно о @Transactional

Level of difficultyMedium
Reading time17 min
Views11K

Команда Spring АйО перевела статью об использовании аннотации @Transactional для управления транзакциями в Spring и в различных фреймворках экосистемы Spring, а также о ее интеграции с Hibernate. После прочтения данной статьи вы будете гораздо лучше понимать основы работы с этой аннотацией, а также механизмы, которые работают под капотом при ее использовании.

Читать далее

Как освоить Linux за 64 часа, и почему я инвестировал в этот проект 1.5 года своей жизни

Level of difficultyMedium
Reading time17 min
Views63K

Привет, Хабр! Меня зовут Павел, и я расскажу вам о том, как можно быстро выйти из Матрицы освоить Linux. Мне повезло принять участие в крутом проекте по разработке учебного курса для службы каталога ALD Pro, которую Астра создала на замену MS Active Directory, и об этой истории мне хотелось бы вам поведать.

Увидеть, насколько глубока кроличья нора

Postman скрипт для обновления токена авторизации

Level of difficultyEasy
Reading time4 min
Views5.1K

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

В какой-то момент мне это надоело, и я задумался как это дело автоматизировать. Узнал, что можно написать Pre-request скрипт для коллекции в постмане, который будет выполняться перед каждым запросом, а уже в этом скрипте делать запрос токена авторизации.

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

Мне неожиданно помогла локально запущенная лама, которая мощно сходу дала мне хорошую подсказку, как сделать в скрипте постмана запрос с телом urlencoded и сохранить из него ответ в переменные. Чем я собственно и хотел поделиться.

Итак исходное положение. Имеем некую коллекцию запросов в постмане и все креды для авторизации сохранённые в переменных.

У нас есть запрос Auth, который получает токен авторизации.

Читать далее

Топ парсеров и API-сервисов сбора данных: сравнение скорости, масштабируемости и обхода защит — парсеры на максималках

Level of difficultyEasy
Reading time23 min
Views13K

Автоматический сбор данных (парсинг, или web scraping) стал неотъемлемой практикой для разработчиков, аналитиков и автоматизаторов. С его помощью получают массовую информацию с сайтов – от цен конкурентов и отзывов до контента соцсетей​. Для этого разработано множество “парсеров” – библиотек, фреймворков и облачных сервисов, которые позволяют извлекать веб-данные программно. Одни решения требуются для быстрого парсинга статичных страниц, другие – для обхода сложной JavaScript-навигации, третьи – для получения данных через API. 

В этой статье я рассмотрю топ инструментов для парсинга – как открытых (Open Source) библиотек, так и коммерческих SaaS/API-сервисов – и сравню их по ключевым метрикам.

Читать далее

Функциональное программирование в Java

Reading time25 min
Views11K

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

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

Читать далее

Глава 7: Взаимодействие с API в режиме реального времени. API-интерфейсы для самых маленьких

Level of difficultyEasy
Reading time9 min
Views4.6K

В Главе 6 мы узнали о проектировании API, создавая свои собственные. На данный момент у нас есть много с трудом заработанных знаний, и пришло время, чтобы они начали приносить пользу. Мы готовы увидеть, как мы можем заставить API работать на нас. В этой главе мы узнаем четыре способа достижения коммуникации в реальном времени через API.

Читать далее

Стримы в Java: Как перестать бояться и полюбить filter-map-reduce

Level of difficultyEasy
Reading time9 min
Views9K

Когда-то я считал, что священный грааль итераций — это старый добрый цикл for. Да, тот самый, с индексами, который шагал по массивам как бравый солдат по полю. Я обожал мои циклы и охотно избегал всего, что могло их заменить. Но потом появился он — Stream API. Новомодный, загадочный, пугающий, словно неведомый зверь из функционального леса. И вот я, стоя по колено в коде, задумался: "Как перестать бояться и полюбить filter-map-reduce?"

Читать далее

Ревизор приехал: pg_anon проверяет, всё ли скрыто

Level of difficultyEasy
Reading time21 min
Views2.6K

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

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

Читать далее

Управление резервным копированием PostgreSQL через веб-интерфейс: обзор утилиты PG Back Web

Level of difficultyEasy
Reading time7 min
Views8.5K

В обзоре узнаете, как графический интерфейс PG Back Web значительно облегчает управление резервными копиями PostgreSQL. Мы покажем, как настраивать резервные копии всего за несколько кликов.

Читать далее

Simple Spring (полный фарш)

Level of difficultyMedium
Reading time55 min
Views9.2K

У нас был spring и hibernate
Мы твёрдо знали, что OAuth2.0 это хорошо, а принцип "Api first" ещё лучше.
И нам дали ровно 48-ь часов чтобы создать работающую инфраструктуру с возможностями авторизации, отслеживания метрик, динамической маршрутизацией запросов и раздачей конфигураций сервисам "на лету". Кроме того от нас хотели получить "best practics" по работе с БД в коде и лёгкой поддержке ролевой модели.

Читать далее

Выбираем подарок юному электронщику

Level of difficultyEasy
Reading time9 min
Views17K

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

Читать далее

MacBook Pro. Или как я стал жертвой маркетинга

Level of difficultyEasy
Reading time8 min
Views91K

И вот на дворе 2024 год, у меня обустроенное рабочее место с большим монитором и комфортным креслом, а отложенная премия шепчет на ушко «А давай купим новый мак, производительный, тихий, сможешь работать откуда угодно». После таких размышлений мы с ней расстались. И вот у меня появился новый макбук, да еще какой – про версия, на новейшем M3 Pro процессоре, почти 4к HDR экран с частой 120Гц. В общем, ожидалось, что радости моей не будет конца и края, что я снова буду использовать мак как основное устройство для рабочих сценариев и сведу на нет работу за своим старым ПК.

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

Читать далее

Как я оплатил сервер на год вперед и остался еще должен FirstVDS – правдивый отзыв

Level of difficultyEasy
Reading time5 min
Views41K

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

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

Я надеялся, что мне никогда не понадобится писать подобную статью про FirstVDS — уж очень все складно с ними получалось.... Не сказать бы что это был прямо образцовый хостинг для аренды VPS, но скажем так, достаточно предсказуемый, понятный и честный... Был....

Читать далее

«Магическая константа» 0x5f3759df

Reading time9 min
Views126K
В этой статье мы поговорим о «магической» константе 0x5f3759df, лежащей в основе элегантного алгоритмического трюка для быстрого вычисления обратного квадратного корня.

Вот полная реализация этого алгоритма:

float FastInvSqrt(float x) {
  float xhalf = 0.5f * x;
  int i = *(int*)&x;  // представим биты float в виде целого числа
  i = 0x5f3759df - (i >> 1);  // какого черта здесь происходит ?
  x = *(float*)&i;
  x = x*(1.5f-(xhalf*x*x));
  return x;
}

Этот код вычисляет некоторое (достаточно неплохое) приближение для формулы

image

Сегодня данная реализация уже хорошо известна, и стала она такой после появления в коде игры Quake III Arena в 2005 году. Её создание когда-то приписывали Джону Кармаку, но выяснилось, что корни уходят намного дальше – к Ardent Computer, где в середине 80-ых её написал Грег Уолш. Конкретно та версия кода, которая показана выше (с забавными комментариями), действительно из кода Quake.
В этой статье мы попробуем разобраться с данным хаком, математически вывести эту самую константу и попробовать обобщить данный метод для вычисления произвольных степеней от -1 до 1.

Да, понадобится немного математики, но школьного курса будет более, чем достаточно.
Читать дальше →

GOST: швейцарский нож для туннелирования и обхода блокировок

Level of difficultyMedium
Reading time13 min
Views123K

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

Сегодня я расскажу о замечательном инструменте под названием GOST. Не пугайтесь, он не имеет никакого отношения к ГОСТ-шифрованию или чему-то подобному, на самом деле это Go Simple Tunnel. Он действительно simple (простой) в использовании и настройке, но при этом невероятно мощный, поскольку поддерживает огромное количество протоколов и транспортов, из которых вы при желании сможете построить самые упоротые и бронебойные комбинации, а именно...

Читать далее

Не дразните программиста

Reading time4 min
Views168K
Подходит к концу очередная рабочая неделя. Не знаю, как у вас, а у меня эта неделя, что называется, — не задалась. Потрачена куча энергии и нервных клеток, и никакого движения вперед. Переносить стрессовое состояние на выходные мне очень не хочется, поэтому я решил взять короткую паузу и немного развеяться.

Вы устали? Хотите выпустить пар? Вам требуется передышка? Предлагаю вам присоединится ко мне, тем более, что на дворе пятница.
Читать дальше →

200 миллисекунд свободы

Reading time3 min
Views199K
В 1979 году американский психолог Бенджамин Либет провел свой знаменитый эксперимент, который взбудоражил научное сообщество, но как-то прошел мимо широкой массы. А очень зря, ведь он показывает всю чудовищную правду о нашей «свободной воле».
Читать дальше →
1

Information

Rating
Does not participate
Registered
Activity