Как стать автором
Обновить
5
0
Павел Стрекалов @spv32

Пользователь

Отправить сообщение

Настройка HTTPS для контейнеризированных Java-сервисов

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров3.1K

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

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

Для создания приложения мы будем использовать фреймворк Jmix, который основан на Spring Boot и Vaadin, поэтому описанные подходы будут работать также для широкого класса веб-приложений на Spring Boot. 

Мы предполагаем, что вы установили Docker актуальной версии для своей ОС, используя brew, chocolately или deb/rpm.

Читать далее
Всего голосов 7: ↑5 и ↓2+3
Комментарии2

Системное мышление: как упростить его развитие?

Время на прочтение9 мин
Количество просмотров14K


Научиться эффективно применять системное мышление довольно непросто. Многие умные люди слишком долго борются с парадигмой системного мышления, процессом мышления и методологией.

За последние 15 лет моей работы с профессионалами в сфере бизнеса и образования я пришёл к выводу, что эта дисциплина требует овладения целым набором навыков мышления.

Подобно опытному баскетболисту, который на автомате применяет множество отдельных навыков, необходимых для выполнения броска в игре — таких как ведение мяча на бегу и не смотря на мяч, выбор времени и точное координирование броска, продвижение мяча к корзине одной рукой, избегая при этом блокировки со стороны защитников, — «ветераны» системного мышления не осознают, что на самом деле применяют целый набор мыслительных навыков. Выделив эти отдельные компетенции, можно практиковать каждый навык в отдельности. Такой подход поможет овладеть всеми необходимыми навыками до того, как вы попытаетесь соединить их воедино в реальной ситуации.
Читать далее
Всего голосов 24: ↑21 и ↓3+18
Комментарии14

Объясняя необъяснимое

Время на прочтение11 мин
Количество просмотров60K
Друзья, мы с радостью продолжаем публикацию интересных материалов, посвященных самым разнообразным аспектам работы с PostgreSQL. Сегодняшний перевод открывает целую серию статей за авторством Hubert Lubaczewski, которые наверняка заинтересуют широкий круг читателей.



Одна из первых вещей, которую слышит новоиспеченный администратор баз данных – «используй EXPLAIN». И при первой же попытке он сталкивается c непостижимым:

                                                        QUERY PLAN
---------------------------------------------------------------------------------------------------------------------------
 Sort  (cost=146.63..148.65 rows=808 width=138) (actual time=55.009..55.012 rows=71 loops=1)
   Sort Key: n.nspname, p.proname, (pg_get_function_arguments(p.oid))
   Sort Method: quicksort  Memory: 43kB
   ->  Hash Join  (cost=1.14..107.61 rows=808 width=138) (actual time=42.495..54.854 rows=71 loops=1)
         Hash Cond: (p.pronamespace = n.oid)
         ->  Seq Scan on pg_proc p  (cost=0.00..89.30 rows=808 width=78) (actual time=0.052..53.465 rows=2402 loops=1)
               Filter: pg_function_is_visible(oid)
         ->  Hash  (cost=1.09..1.09 rows=4 width=68) (actual time=0.011..0.011 rows=4 loops=1)
               Buckets: 1024  Batches: 1  Memory Usage: 1kB
               ->  Seq Scan on pg_namespace n  (cost=0.00..1.09 rows=4 width=68) (actual time=0.005..0.007 rows=4 loops=1)
                     Filter: ((nspname <> 'pg_catalog'::name) AND (nspname <> 'information_schema'::name))

Что бы это могло значить?
Читать дальше →
Всего голосов 33: ↑31 и ↓2+29
Комментарии23

Java Digest # 10

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров4.7K

Всем привет! 👋 👋 👋

Мы — Java-разработчики Тинькофф: Андрей Орлов, Арсений ЗайцевКонстантин Максимов, и Константин Польщиков. Собираем интересные новости, статьи, туториалы и другие материалы из мира Java-разработки и решили делиться этим не только с коллегами, но и со всем сообществом.

🌼В этот весенний период, наполненный свежестью и обновлениями, ждите обзоров состояния jextract и новых функций терминала в JetBrains IDEs, включая его бета-версию. Готовьтесь к версии 0.8.0 Spring AI, где есть новые функции и улучшения. Вдохните аромат цветущей весны, пока мы погружаемся в обзор различных Java Enhancement Proposals (JEP), включая поддержку Markdown в JavaDoc, новые возможности для компиляции и выполнения Java-кода, а также превью функций Java 22. Вдохновляйтесь, ведь весна в мире Java приносит с собой обновления и новые возможности для всех нас. Stay tuned! 🌼

Читать десятый выпуск
Всего голосов 19: ↑18 и ↓1+17
Комментарии0

Разделение задач резервного копирования и удаления устаревших копий в PostgreSQL при помощи pgBackRest

Время на прочтение11 мин
Количество просмотров3.5K

Управление резервными копиями является одним из ключевых моментов в любой стратегии администрирования баз данных. Это гарантирует, что в случае сбоя или потери данных вы можете быстро восстановить всю информацию. pgBackRest — популярное решение для резервного копирования и восстановления PostgreSQL, которое предоставляет множество функций для управления резервными копиями. Тем не менее, по умолчанию стандартная конфигурация pgBackRest часто объединяет операции резервного копирования и удаления устаревших копий в одном процессе. 

Читать далее
Всего голосов 11: ↑9 и ↓2+7
Комментарии0

Всё ещё используете If/else валидацию в Spring 6.0+ / SpringBoot 3.0+?

Время на прочтение12 мин
Количество просмотров12K

Чтобы избежать влияния несанкционированных параметров на ваш бизнес, в ваших веб-сервисах должна быть реализована проверка параметров на уровне контроллера! В большинстве случаев параметры запроса можно разделить на два следующих вида:

— POST и PUT-запросы, использующие requestBody для передачи параметров.
— GET-запросы, использующие requestParam/PathVariable для передачи параметров.

Читать далее
Всего голосов 19: ↑14 и ↓5+9
Комментарии11

SQL инъекции для продолжающих: ломаем настоящий сайт

Время на прочтение5 мин
Количество просмотров17K

Про SQL-инъекции написано огромное количество статей. Все знаю про пресловутые ‘ OR 1 = 1 и аналогичные конструкции, но далеко не все реализовывали их на практике. В этой статье мы разберем на практике некоторые способы реализации SQL-инъекций на примере уязвимого сайта.

Статья предназначена для тех, кто хочет на практике разобраться с тем, что такое SQL-инъекции.

Читать далее
Всего голосов 22: ↑18 и ↓4+14
Комментарии7

Микросервисы прагматика: как построить большую систему с помощью пачки монолитов

Уровень сложностиСредний
Время на прочтение22 мин
Количество просмотров6.8K

...

Попробую, попытаюсь объяснить. Наверное, для кого-то это будет оправданием, но я просто объясняю.

Как быстро зафейлить новый проект Java? Просто взять и применить все, что ты услышал на последней Java конференции;) Как быстро сделать энтерпрайзный проект минимальной командой в короткие сроки? Верно — подобрать оптимальную архитектуру и правильные инструменты. Senior Developer из команды Jmix Дмитрий Черкасов рассказывает о компромиссном варианте между хайповыми (все еще) микросервисами и монолитами, который называется Self-Contained Systems. Кажется, он выпьет меньше крови и сохранит ваши нервы. Дальше — рассказ от первого лица.

Читать далее
Всего голосов 11: ↑11 и ↓0+11
Комментарии10

Когда ни туда, ни сюда, или в поисках оптимальной границы Domain слоя

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров8K

Слой Application - это не только про оркестрацию, но еще немного про бизнес-логику. Следует это простить и принять внутри себя. А иначе попытки продвинуться дальше в написании кода съедят программиста-перфекциониста живьем.

Можно долго искать решения, читать различные комментарии и книги про разделение бизнес-логики от приложения. И все равно ваша конкретная ситуация будет казаться вам уникальной, как будто ничего нельзя сделать либо надо снова переписывать Domain слой, дабы ни одно зернышко бизнес-логики не выпало за его пределы. А можно просто закрыть глаза на некоторые моменты, забыть об идеале и спать спокойно, рассчитывая, что все чудесным образом само разрулится.

Читать далее
Всего голосов 14: ↑13 и ↓1+12
Комментарии95

Scala Digest. Выпуск 14

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров1.2K

Привет, Хабр! Мы — Рома, Настя и Карина — бэкенд-разработчики Тинькофф, пишем код на Scala и горим желанием его популяризировать.


Мы собираем и агрегируем новости из разных источников, включая Scala Times, блог Petr Zapletal и канал Scala Nishtyaki, добавляем новости и собственные комментарии. Свою мотивацию черпаем из желания развиваться и делиться полученными знаниями. 

Приветствуем любую обратную связь! (づ ◕‿◕ )づ

Читать четырнадцатый выпуск
Всего голосов 12: ↑12 и ↓0+12
Комментарии8

Бардак в GNOME — это не случайность

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров51K

GNOME удалось добиться, казалось бы, невозможного: это самая ограниченная по возможностям и раздутая десктопная среда для Linux. Но это не просто случайность. Это результат высокомерия и дилетантства основных разработчиков, превративших архитектурные решения GNOME в шедевр хаоса. Чтобы лучше понять, что происходит, давайте проанализируем некоторые из примеров. Даже если ни один из них не затрагивает непосредственно вас, стоит понять modus operandi ведения проектов GNOME и то, как они вредят сообществу Linux.
Читать дальше →
Всего голосов 165: ↑157 и ↓8+149
Комментарии271

Где изучать Python в 2024. Бесплатные курсы, книги и ресурсы

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров36K


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

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

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

Читать
Всего голосов 42: ↑39 и ↓3+36
Комментарии13

Прокачиваем навыки в сфере ML — что изучать в 2024-м

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров15K

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

Ритейл, банки, технологические предприятия, компании-разработчики и все те, кто собирает большие массивы неструктурированных данных, для запуска сложных моделей могут использовать вычислительные ресурсы облака. Например, строить нейросети с помощью ML-платформы или использовать объектное хранилище для обработки Big Data.

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

Читать далее
Всего голосов 23: ↑20 и ↓3+17
Комментарии0

Немного об архитектурах программного обеспечения

Время на прочтение7 мин
Количество просмотров63K


Никаких сомнений, что за последнее время мир только укрепил свою зависимость от программного обеспечения. Приложения должны обладать высокой доступностью, качественно выполнять требуемые функции и иметь адекватную стоимость. Эти характеристики, в той или иной степени, определяет архитектура ПО.
Читать дальше →
Всего голосов 21: ↑18 и ↓3+15
Комментарии2

Раскрыта причина, по которой насекомые кружат вокруг огней по ночам

Время на прочтение5 мин
Количество просмотров9.7K

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

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

Читать далее
Всего голосов 32: ↑31 и ↓1+30
Комментарии17

Домашняя революция в 3D-печати металлами: использование SLM и оптоволоконных граверов

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров51K

Вступление В последнее время мир 3D-печати переживает настоящую революцию благодаря появлению доступных технологий печати металлом. Одно из самых примечательных нововведений - использование технологии Selective Laser Melting (SLM) в сочетании с обычными оптоволоконными настольными граверами, что позволяет осуществлять печать металлом прямо дома.

Читать далее
Всего голосов 48: ↑47 и ↓1+46
Комментарии45

Люди не понимают ООП

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров113K

«ООП для меня означает лишь обмен сообщениями, локальные ограничения и защиту, сокрытие состояния процесса и крайне позднее привязывание», — Алан Кэй (человек, придумавший термин «объектно-ориентированное программирование»)1

Похоже, многим не нравится объектно-ориентированное программирование. Первое, что приходит в голову, когда слышишь эту трёхбуквенную аббревиатуру — это пример с автомобилем, наследование, геттеры, сеттеры и ObjectFactoryFactorySingleton.

Мне это всегда казалось довольно странным. Мне не только нравится ООП, я ещё и считаю, что часто это лучший/наиболее очевидный способ моделирования задачи. И ниже я расскажу, почему.
Читать дальше →
Всего голосов 154: ↑147 и ↓7+140
Комментарии457

Прощайте, базы данных, да здравствуют векторные базы данных

Уровень сложностиПростой
Время на прочтение11 мин
Количество просмотров66K

Революция в области искусственного интеллекта переформатирует все отрасли нашей жизни, с одной стороны обещая невероятные инновации, а с другой ー сталкивая нас с новыми вызовами. В безумном потоке изменений эффективная обработка данных становится приоритетом для приложений, на основе больших языковых моделей, генеративного ИИ и семантического поиска. В основе этих технологий лежат векторные представления (embeddings, дальше будем называть их Эмбеддинги), сложные представления данных, пронизанные критической семантической информацией.

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

Читать далее
Всего голосов 53: ↑51 и ↓2+49
Комментарии55

Hello, World! Глубокое погружение в Терминалы

Время на прочтение24 мин
Количество просмотров87K


На написание данной статьи меня вдохновила статья об анализе Сишного printf. Однако, там был пропущен момент о том, какой путь проходят данные после того, как они попадают в терминальное устройство. В данной статье я хочу исправить этот недочет и проанализировать путь данных в терминале. Также мы разберемся, чем отличается Terminal от Shell, что такое Pseudoterminal, как работают эмуляторы терминалов и многое другое.

Читать дальше →
Всего голосов 110: ↑110 и ↓0+110
Комментарии44

Учимся понимать события подсистемы аудита Linux

Уровень сложностиСредний
Время на прочтение35 мин
Количество просмотров13K

Приветствую всех любителей изучать новое. Меня зовут Рома, и я занимаюсь исследованием безопасности ОС Linux в экспертной лаборатории PT Expert Security Center.

В рамках инициативы нашей компании по обмену экспертными знаниями с сообществом я расскажу вам об известной многим администраторам системе журналирования в Linux-подобных ОС — подсистеме аудита Linux (auditd). При должной настройке она позволяет получать полную информацию о действиях, выполняемых в операционной системе.

Специалистам по информационной безопасности полезно уметь расшифровывать и обрабатывать события auditd для отслеживания потенциально вредоносной активности. В связи с этим нам потребовалось организовать для них экспертную поддержку в системе мониторинга событий ИБ и управления инцидентами MaxPatrol SIEM.

Подробнее
Всего голосов 5: ↑5 и ↓0+5
Комментарии1
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Россия
Работает в
Зарегистрирован
Активность