Pull to refresh
-17
0
Send message

Строим стенд производительности на примере сервера Set Retail 10

Reading time6 min
Views6.2K


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

Для тестирования мы построили стенд производительности, и теперь на несколько дней запускаем на нём нагрузочные тесты. На этапе проработки тестового стенда мы сломали много копий о щиты ожесточённых споров. Но нам удалось найти ответы на самые главные вопросы — что и как делать, и в какой последовательности. Буду рад, если наш опыт станет полезен и вам.
Читать дальше →
Total votes 10: ↑8 and ↓2+6
Comments2

Как Rust меняет мышление разработчика

Level of difficultyEasy
Reading time9 min
Views49K
Я страшно ненавижу C++. Обычно я люблю программирование, но каждый проект, с которым я имел дело на C++, ощущался как монотонная рутина. В январе 2023 года я пошёл по пути изучения Rust, поэтому теперь могу сказать, что знаю язык системного программирования, который действительно люблю использовать.

Первый стабильный релиз Rust появился в 2015 году, и каждый год, начиная с 2016, он признаётся в Stack Overflow’s Annual Developer Survey самым любимым языком (в 2023 году эта категория называется «обожаемый»). Почему же разработчики, ощутившие вкус Rust, не могут отказаться от его использования? Похоже, в мире прогремевших наследников C/C++ репутация растёт только у Rust. Как же этот язык, появившийся на сцене меньше десятка лет назад, стал настолько популярным?

Ржавый красный краб Феррис по версии Midjourney

Кривая обучения оказалась крутой. Я нашёл многое, что мне нравится в Rust, но постоянно попадал в его ловушки. Однако в конечном счёте именно препятствия и проблемы, с которыми столкнулся, я научился любить больше всего.

Я начну историю с разговора о том, что легко полюбить — со среды Rust, управления пакетами и документации. Затем я расскажу о системе типов и типажах (trait). Далее я поведаю о тех возможностях тестирования и test driven development, которые становятся возможными благодаря Rust. Наконец, мы обсудим самую запутанную и сбивающую с толку часть — одержимость Rust тем, кто какой переменной владеет.
Читать дальше →
Total votes 87: ↑75 and ↓12+89
Comments147

Разбираемся с Redis

Reading time19 min
Views264K

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

Читать далее
Total votes 46: ↑45 and ↓1+62
Comments7

Разработка децентрализованных приложений на Spring Boot: инструменты Web3 Tech

Level of difficultyHard
Reading time11 min
Views3.1K

Привет! Меня зовут Даниил, я разработчик в Web3 Tech. Недавно в JVM-инструментарии для нашей основной платформы «Конфидент» состоялся новый релиз, в который вошли библиотеки клиента для взаимодействия с нодой и Spring Boot стартеры. Далее в посте я расскажу об этих библиотеках, которые помогут вам комфортно и эффективно создавать на JVM-языках программирования полноценные приложения, взаимодействующие со смарт-контрактами нашей платформы.

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

Как упростить себе жизнь: удобные юнит-тесты с JUnit и AssertJ

Level of difficultyEasy
Reading time10 min
Views13K

Для тестирования Java-приложений создано столько полезных инструментов, что в них немудрено запутаться. Вместе с тем с помощью каждого из них можно решить строго определенный круг прикладных задач. Меня зовут Константин Шибков, я старший Java-разработчик CDEK и программный директор курсов по Java в Skillbox. Сегодня расскажу о практике использования фреймворка для модульного тестирования JUnit 5, а также покажу на конкретных примерах, как проводятся стандартные юнит-тесты и параметризованные тесты. Вы сможете самостоятельно повторить их, воспользовавшись подготовленным репозиторием с готовыми примерами тестов на Java. 

Читать далее
Total votes 17: ↑15 and ↓2+19
Comments4

Создание и тестирование gRPC сервиса (Spring Boot приложение)

Level of difficultyMedium
Reading time9 min
Views10K

Привет, Хабр! Сегодня я поделюсь опытом работы с gRPC и расскажу, как создать и протестировать gRPC-сервис в приложении на Spring Boot. Основная проблема — это отсутствие структурированной информации по корректному тестированию gRPC сервиса. Эта статья будет полезна для тех, кто только начинает знакомиться с gRPC и ищет руководство по написанию и тестированию сервисов.

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

Учимся бесплатно деплоить Java (и не только) приложения (Docker, CircleCI, Google Cloud)

Level of difficultyMedium
Reading time9 min
Views12K

Всех приветствую. В последнее время все чаще задумывался о том какую бы еще полезную статью написать. Параллельно этому постоянно видел в интернетах рекламу о "крутых" курсах в IT, обещают сделать из вас Java, Python и какого угодно разработчика за полгода/год, и ладно с ним, допустим за год они чему-то вас обучат и, возможно, где-то вы попадете на бесплатную стажировку (что еще тоже под воросом, учитывая нынешний рынок). Но когда рекламируют "крутые курсы DevOps'ов", я уже начинаю задаваться вопросом, как можно стать ДевОпсом, не имея опыта программирования, не опробовав самому весь цикл разработки на хоть каком-то языке, не опробовав различные настройки сборки приложений, не опробовав Линукс, со всеми его утилитами, докер, кубер, git и т.д. в работе, а просто "обучиться" этому в обособленности от всего и ожидать, что тебя куда-то возьмут, а если и возьмут, то к чему-то серьезному подпустят? Ответа на этот вопрос я так и не нашел у себя в голове.

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

Задеплоить
Total votes 9: ↑4 and ↓5-1
Comments19

Понимание LDAP-протокола, иерархии данных и компонентов записей

Reading time13 min
Views190K

Введение


LDAP, или Lightweight Directory Access Protocol, является открытым протоколом, используемым для хранения и получения данных из каталога с иерархической структурой. Обычно используемый для хранения информации об организации, ее активах и пользователях, LDAP является гибким решением для определения любого типа сущностей и их свойств.


Big Tree

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

Читать дальше →
Total votes 12: ↑11 and ↓1+15
Comments8

Актуальный гайд по написанию простого Windows-драйвера

Level of difficultyMedium
Reading time10 min
Views37K

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

Читать далее
Total votes 60: ↑60 and ↓0+58
Comments40

Любой достаточно продвинутый деинсталлятор неотличим от зловреда

Level of difficultyMedium
Reading time6 min
Views4.1K

У нас возник резкий рост количества вылетов Explorer из-за того, что указатель команд оказывался в пустоте.

0:000> r eax=00000001 ebx=008bf8aa ecx=77231cf3 edx=00000000 esi=008bf680 edi=008bf8a8 eip=7077c100 esp=008bf664 ebp=008bf678 iopl=0 nv up ei pl zr na pe nc cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00010246 7077c100 ?? ???

Возможно, нам о чём-то скажет адрес возврата.

0:000> u poi esp 008bf6d4 test eax,eax 008bf6d6 je 008bf6b9 008bf6d8 xor edi,edi 008bf6da cmp dword ptr [esi+430h],edi

Странно, что мы исполняем код из какого-то места, не имеющего имени. Если приглядеться, то можно увидеть, что мы исполняем код из стекаesp — это  008bf664, то есть вызывающий проблемы код находится в стеке.

Кто исполняет код из стека?

Конечно, зловреды.

Давайте посмотрим, что пытается сделать это зловредное ПО.

Читать далее
Total votes 12: ↑11 and ↓1+17
Comments22

Искусство ETL. Пишем собственный движок SQL на Spark [часть 2 из 5]

Level of difficultyHard
Reading time13 min
Views1.8K

image


В данной серии статей я подробно расскажу о том, как написать на Java собственный интерпретатор объектно-ориентированного диалекта SQL с использованием Spark RDD API, заточенный на задачи подготовки и трансформации наборов данных.

Краткое содержание предыдущей серии:
Вступление
Постановка задачи
Проектирование языка. Операторы жизненного цикла наборов данных
Проектирование системы типов


Предупреждение о рейтинге «M for Mature»

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

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

Логика и принципы построения BI-дашборда

Level of difficultyEasy
Reading time9 min
Views12K

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

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

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

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

Перестаём бояться генерировать байт-код

Level of difficultyMedium
Reading time15 min
Views15K

Многие, возможно, думают, что работа с байт-кодом Java (будь то чтение или, тем более, генерация) — это какая-то особенная магия, доступная только продвинутым разработчикам с особенно крутым опытом. На самом деле, я считаю такую точку зрения ошибочной. JVM устроена гораздо проще, чем CPU; она оперирует такими высокоуровневыми понятиями как классы, интерфейсы, методы, а не просто лопатит байты в памяти. В отличие от CPU, который легко уронить криво сгенерированным машинным кодом, JVM заботливо отверифицирует любой байт-код и в общем не даст выстрелить в ногу.

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

Весь приведённый код доступен в моём репозитории.

Читать далее
Total votes 26: ↑25 and ↓1+32
Comments18

Капибара, Новый Старый Пикабу

Reading time8 min
Views72K

Пикабу долгое время было уютным уголком для обмена историями, опытом, творчеством, мнениями и эмоциями. Однако ряд нововведений, таких как отмена баянометра, изменение алгоритмов и скрытие отрицательных оценок, привели к потере духа оригинального портала. Многие из нас, пришедшие туда в молодости и теперь ставшие взрослыми, почувствовали, что наши ценности и мнения игнорируются. В ответ на это, мы, группа энтузиастов, создали "Капибару" – проект, который стремится сохранить лучшие стороны Пикабу, предоставляя пространство где пользователи сами решают какой контент "годный" и какой контент хотят видеть в своей ленте.

Читать далее
Total votes 146: ↑139 and ↓7+166
Comments225

Поиск по регулярным выражениям может быть простым и быстрым

Level of difficultyMedium
Reading time28 min
Views9.5K

Данный пост является переводом первой статьи 2007 года про устройство регулярных выражений от автора библиотеки RE2. Для понимания требуется немного терпения и свободного времени, чтобы осилить прочтение статьи до конца. Будет плюсом знакомство с теорией автоматов и языком программирования Си (но это необязательное требование).

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

Как оказалось, с тех пор мало что поменялось, так что статья не потеряла своей актуальности.

Обо всех ошибках и опечатках большая просьба сообщать, чтобы я мог их поправить.

Заблудиться в тёмном лесу
Total votes 25: ↑24 and ↓1+32
Comments6

Последствия кризиса депопуляции в России и мире

Level of difficultyEasy
Reading time16 min
Views38K

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

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

Кризис депопуляции миф, население планеты растёт. В демографии имеет значение не столько рост или убывание на данный момент времени, сколько долгосрочный тренд. Так как у демографических процессов большая инерционность. На данный момент население планеты растёт, но, по различным прогнозам, через 50-80 лет начнётся сокращение. Государства в мире находятся на разном уровне общественного развития, в каких-то странах демографический переход уже завершился, в каких-то ещё не начался. Но общее направление уже видно. Все страны не зависимо от культурных особенностей приходят к низкой рождаемости и соответственно к сокращению населения (Израиль исключение, подробности будут ниже).

Читать далее
Total votes 107: ↑86 and ↓21+87
Comments410

Простая нейронная сеть без библиотек и матриц. Обучение с учителем

Level of difficultyEasy
Reading time9 min
Views16K

Руководство? Гайд? В общем ремейк описания моего опыта создания простой, а главное понятной любому новичку нейросети :)

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

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

Теперь наш синтез на 22 языках с кириллицей и ещё в 4 раза быстрее

Level of difficultyMedium
Reading time4 min
Views5.9K


Источник карты — Проект «Языки России» Институт языкознания РАН, 2021 год

Давненько мы не выпускали новых статей про наш синтез речи! В прошлый раз мы добавили синтез на 9 языках народов Индии, существенно улучшили автоматическую простановку ударений, добавили 1 русский голос и "наследовали" SSML для всех моделей.


В этот раз мы сделали следующее:


  • Ускорили все v4 модели в 3-4 раза;
  • Существенно повысили качество синтеза в 8 kHz;
  • Обновили и пересобрали нашу модель для русского языка;
  • Обновили модель для 9 языков народов Индии с 17 голосами;
  • Добавили единую модель для 22 языков с кириллическим алфавитом с 31 голосом;
  • Прекратили поддержку моделей романо-германских языков (старые модели будут доступны для скачивания без изменений);
  • Обновили модели для языков народов СНГ: узбекского и украинского (татарский и калмыцкий были "поглощены" единой моделью);
Читать дальше →
Total votes 32: ↑32 and ↓0+32
Comments15

Путь запроса по внутренностям Spring Security

Reading time15 min
Views90K
Большинство разработчиков имеет только примерное представление о том что происходит внутри Spring Security, что опасно и может привести к появлению уязвимостей.

В этой статье шаг за шагом пройдемся по пути http запроса, что поможет с пониманием настраивать и решать проблемы Spring Security.

image

Читать дальше →
Total votes 22: ↑22 and ↓0+22
Comments7

Spring security: без фильтров по умолчанию, как и что из этого получится

Reading time8 min
Views16K

Статья - краткое напоминание о:
- какие фильтры по-умолчанию уже встроены, и как их убрать или донастроить
- список прочих доступных уже готовых к использованию фильтров и полный их список с порядком
- даже слишком краткий обзор методов HttpSecurity
- пример, как писать фильры безопасности после Spring 5.7, когда класс настрое устареет,
- подчеркнул откда стоит начинать отладку, чтобы понять суть происходящего.

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

Читать далее
Total votes 6: ↑1 and ↓5-4
Comments3

Information

Rating
Does not participate
Registered
Activity

Specialization

Software Developer, Backend Developer
Senior