Pull to refresh
3
0
Дмитрий Бабанин @lord_detson

Java Software Developer

Send message

Что означает RISC и CISC?

Reading time21 min
Views158K

Многие говорят, что разница между RISC и CISC стала несущественной. Так ли это? И если нет, то в чем разница между современными RISC и CISC процессорами?

Компания Apple выпустила процессор Apple Silicon M1, который произвел фурор. Теперь вы можете задаться вопросом, чем он отличается от процессоров Intel и AMD? Вероятно, вы слышали, что M1 — процессор с архитектурой ARM, а ARM — это RISC, в отличие от Intel и AMD.

Если вы читали про разницу между микропроцессорами RISC и CISC, то вы знаете, что множество людей утверждают об отсутствии практической разницы между ними в современном мире. Но так ли это на самом деле?
Читать дальше →
Total votes 61: ↑57 and ↓4+68
Comments89

Интеграционное тестирование в SpringBoot с TestContainers-стартером

Reading time3 min
Views17K
Перевод статьи подготовлен в преддверии старта курса «Разработчик на Spring Framework».




Одна из причин популярности Spring и Spring Boot — это хорошая поддержка тестирования. Можно писать как юнит-тесты с Mockito без использования функциональности Spring’а, так и интеграционные с инициализацией Spring-контекста.

Для интеграционных тестов может потребоваться взаимодействие с внешними сервисами, такими как реляционные базы данных, NoSQL-базы данных, Kafka и другими. При тестировании удобно разворачивать эти сервисы в Docker-контейнерах.
Читать дальше →
Total votes 6: ↑4 and ↓2+2
Comments2

Упорядочивание аудиотеки. Практические советы

Reading time9 min
Views215K

Введение


Вообще, я во многих вопросах перфекционист. Если есть — нужно, чтобы было безупречно (иногда это сказывается отрицательно, но сейчас не об этом). Свою аудиоколлекцию я тоже привык держать в чистоте. Но со временем, при пополнении стало накапливаться много мелких неприятностей. Вот некоторые из них:
  • Разные шаблоны для имен файлов: 4 — Звезда | 04 — Звезда | 04. Звезда
  • Разные имена исполнителей в тегах: Чиж & Co | Чиж и Ко. | Mylene Farmer | Mylène Farmer
  • Не указаны исполнители альбома (что приводит к полному бардаку в альбомах-компиляциях)
  • Не совсем корректная информация об альбомах, состоящих из нескольких дисков
  • Путаница в годах изданий и переизданий (ремастеринг, и т.д.)
Ну и прочие мелочи.
Часто у пользователей коллекции составляют несколько тысяч, а иногда — несколько десятков тысяч записей. Так что, перелопачивать все вручную — долго и неэффективно.

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

Итак, начнем...
Total votes 80: ↑76 and ↓4+72
Comments78

Что такое гексагональная архитектура. Разделение бизнес-логики и инфраструктуры с помощью портов и адаптеров

Level of difficultyMedium
Reading time13 min
Views36K
image

Гексагональная архитектура — это архитектурный паттерн, представленный Алистером Кокберном и описанный у него в блоге в 2005 году. Основная идея заключается в том, чтобы структурировать приложение таким образом, чтобы это приложение можно было разрабатывать и тестировать в изоляции, не завися от внешних инструментов и технологий.

Вот как сам Кокберн описывает эту архитектуру одним тезисом:

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

В этой статье мы рассмотрим некоторые задачи, как правило, решаемые в типичных программных проектах. Затем мы поговорим о гексагональной архитектуре и о том, как она призвана решить эти задачи. Мы также рассмотрим некоторые детали реализации такой архитектуры и варианты тестирования.
Читать дальше →
Total votes 26: ↑24 and ↓2+37
Comments45

Тест самых выгодных батареек AA и AAA

Level of difficultyEasy
Reading time3 min
Views72K
Цена батареек AA/AAA на кассах супермаркетов уже достигла 300 рублей за 4 штуки, но конечно же покупать их там не стоит. Гораздо выгоднее покупать батарейки на маркетплейсах, причём если брать упаковки по 40 штук, цена будет гораздо ниже.

Чтобы провести этот эксперимент, мне пришлось купить 400 батареек: я купил и протестировал по пять видов щелочных (alkaline) батареек AA и AAA в такой упаковке, при этом цена за штуку составила от 11 до 16 рублей. Оказалось, что батарейки с близкой ценой очень сильно отличаются.



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

Gitlab-ci модульные pipelines для вашего enterprise

Level of difficultyHard
Reading time7 min
Views12K

Привет, меня зовут Панов Михаил, я DevOps‑инженер МТС Digital. Хочу поделиться с вами опытом построения «модульных» pipelines на основе gitlab-ci. В этой статье я расскажу, что такое модульный CI/CD, из чего он состоит, для чего нужен и как поможет командам, поддерживающим большой список нетиповых репозиториев.

Читать далее
Total votes 13: ↑12 and ↓1+18
Comments5

Автоматическое тестирование Java Swing приложений

Reading time4 min
Views17K


Добрый день! Полтора года назад моей команде пришлось протестировать Java Swing приложение, которое могло иметь разные визуализации, натянутые на общий процесс. Статей тогда по этой теме было немного, конкретные решения отсутствовали вообще. TestComplete и прочие скриптовые технологии (да простят меня сторонники TestComplete) использовать не хотелось, так как приложение должно иметь гибкую архитектуру, расширяемую и изменяемую в рамках Agile процесса.

Сутки поиска в Google, анализ десятков примеров и технологий привели меня к двум возможным вариантам:
  • Fest
  • Jemmy

Не погружаясь в глубины глубин сравнения, я выбрал Fest библиотеку. С её помощью и, конечно, Junit, Mockito мы начали тестировать наше приложение. Об этом и расскажу ниже.
Читать дальше →
Total votes 23: ↑23 and ↓0+23
Comments5

MacOS Monterey на Linux — быстро и просто?

Level of difficultyEasy
Reading time3 min
Views48K
Что делать, если у вас возникло желание или необходимость заняться разработкой под MacOS или iOS, но под рукой нет макбука, а покупать его только чтобы открыть Xcode кажется делом сомнительным? Недавно я столкнулся с такой проблемой в одном из своих пет-проектов и решил ее достаточно просто и быстро. После выполнения нескольких достаточно примитивных шагов, мне удалось запустить MacOS Monterey как на скриншоте ниже.

image

Никакого Virtualbox, никакого Virtual Machine Manager. Из требований — только 100 Гб свободного места на диске и хотя бы 16 Гб оперативной памяти. В рунете я встречал описание похожих путей установки, вроде Docker-OSX или Sosumi. Но я бы хотел поделиться способом, который позволяет использовать актуальную версию MacOS (Sosumi — сразу минус) и не потратить уйму свободного времени на возню с конфигами и терминалом. Поехали.
Читать дальше →
Total votes 68: ↑64 and ↓4+75
Comments67

Полезные и неизвестные возможности Java

Reading time7 min
Views24K

В этой статье вы узнаете о некоторых полезных функциях Java, о которых вы, вероятно, не слышали. 

Это мой личный список функций, использованных мной недавно или с которыми я столкнулся при чтении статей о Java. 

Я сосредоточусь не на языковых аспектах, а на API. Я уже опубликовал все примеры, относящиеся к этой статье, в Твиттере в форме, показанной ниже. Вы также можете найти их в моей учетной записи Twitter или просто под #javaхэштегом.

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

Эргономично, дёшево, сердито

Level of difficultyEasy
Reading time11 min
Views16K

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

Главным образом, эта статья ‒ про то, как я уменьшил своё рабочее место с 5 м² до 3 м², избавился от мозоли на запястье, боли в спине и шее, трудностей с набором текстов на русском, английском и немецком; и потратил на это 4 дня и ≈150 €! Но также мне хочется выразить мысль, что эргономика ‒ это не идеальный стол, кресло или клавиатура. Это, скорее, организация пространства так, чтобы в нём было комфортно во всех сценариях его использования.

Что он поменял?
Total votes 41: ↑40 and ↓1+52
Comments45

Строка на 1,5 гигабайта

Level of difficultyMedium
Reading time4 min
Views38K

На своей предыдущей работе я занимался поддержкой Java-сервиса, обеспечивавшего удалённую функциональность UI подобно RDP или Citrix. Этот сервис был устроен на основе сессий, состоявших из взаимосвязанных объектов Java, которые должны были очищаться или после выхода пользователя, или после истечения заданного таймаута.

На этапе планирования нагрузок мы обнаружили существенные траты памяти, о причинах которых я бы хотел рассказать в этой статье.
Читать дальше →
Total votes 39: ↑34 and ↓5+41
Comments67

Модульность с большой буквы «М»: возможности и характеристики 16-дюймового ноутбука Framework. И кое-что еще

Reading time5 min
Views8.7K


Модульных устройств, по-настоящему модульных, не так много, но они все же есть. Мода на модульность, вероятно, началась с гугловского проекта смартфона Ara. Идея была просто отличной — все модули крепятся при помощи магнитов, и замена одного из модулей должна была занимать всего пару секунд. Ну, может, чуть дольше, но процесс замены был в любом случае быстрее, чем в случае обычных устройств, разбираемых при помощи отверток, пинцетов и «доброго слова» мастера или владельца. Но, к сожалению, идея не получила коммерческого воплощения, так что проект закрыли.

Но идея осталась, и уже другие компании стали реализовывать собственные варианты устройств — от смартфонов до ноутбуков. Некоторые проекты закрывались еще быстрее, чем Ara. Другие же добирались но MVP и даже отгрузок клиентам. Одним из таких проектов стал модульный ноутбук Framework, о котором мы писали, и не раз. В скором времени появятся в продаже новые модели, о которых стоит рассказать подробнее — там много всего интересного.
Читать дальше →
Total votes 53: ↑51 and ↓2+62
Comments30

Мутационное тестирование: опыт внедрения на 1500 сервисов

Reading time13 min
Views11K

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

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

Читать далее
Total votes 17: ↑16 and ↓1+17
Comments10

Интеграционные тесты для Java с помощью TestContainers. Меньше безумия, больше порядка, и всё это автоматически

Reading time9 min
Views56K

На Хабре совсем нет информации про TestContainers. На момент написания этой статьи, в поисковой выдаче есть анонсы наших же конференций, и всё. Между тем, в проекте на GitHub у них уже более 700 коммитов, 54 контрибьютора и 5 лет истории. Похоже, все эти пять лет проект тщательно скрывался спецслужбами и НЛО. Настало время выйти из тени на свет.



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


Итак, здесь мы поделимся парой слов о наимоднейшей Java-библиотеке для интеграционного тестирования — TestContainers. Кроме этого, будет немного о том, почему интеграционное тестирование настолько важно для ZeroTurnaround и их требования к интеграционным тестам. И конечно, будет полнофункциональный пример интеграционного теста для Java-агента. Если кто-то никогда в глаза не видел код Java-агента, то сейчас самое время. Добро пожаловать под кат!

Total votes 27: ↑25 and ↓2+23
Comments18

Название имеет значение: как получить оптимизацию, переименовав браузер

Reading time4 min
Views37K

Всем привет! Меня зовут Максим Смирнов, я руковожу командой, которая работает над производительностью Яндекс Браузера и отвечает за его графическую подсистему. В этой статье я расскажу об одном неочевидном улучшении, которое наша команда внедрила в Браузер для Windows. Если описать его в двух словах, то нам удалось улучшить стабильность и производительность браузера, убедив драйверы видеокарт, что наше приложение — это Google Chrome.

Читать далее
Total votes 137: ↑136 and ↓1+172
Comments78

Java для сисадминов

Reading time17 min
Views14K

Эта статья написана в основном для системных администраторов Java-приложений (DevOps-инженеров, SRE и других производных специализаций). Вероятнее всего, Java-разработчики уже все это прекрасно знают. Хотя Junior Java-разработчикам эта информация может помочь систематизировать знания.

Статья не претендует на полноту или полную непогрешимость. Во-первых, нельзя объять необъятное. Во-вторых, все меняется и проверенные истины могут перестать быть истинами в новых версиях. В сети существует множество статей об  устройствах Java, однако в этой статье в блоге ЛАНИТ я стремился сделать выжимку основных моментов, необходимых для администраторов Java-приложений. Для более глубокого погружения в тот или иной вопрос потребуется обратиться к другим источникам.

Читать далее
Total votes 99: ↑98 and ↓1+120
Comments10

Как я учил английский язык на всякий случай и вдруг переехал в Берлин

Reading time4 min
Views5.7K

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

Для начала дам немного контекста, чтобы вы поняли  мой предыдущий бэкграунд. Я работаю в IT на позициях QA Lead / SDET в зарубежных компаниях уже более 7 лет. Как и большинство из нас изучал язык еще в школе, но делал это крайне неохотно, давалось через силу. Скажу кое-что страшное  для лингвистов: транскрипцию я так и не запомнил. Но в целом на 4 из 5 баллов в обычной ГОУ СОШ вытягивал. Все шло гладко и после поступления в технический институт. Первые два года английский был насыщенный, но спрашивали не строго. Была возможность изучать язык в растяжку для зачета, опять же  без сильного рвения. Начиная с третьего курса мир перевернулся. 

Наш вуз подписал партнерское соглашение с IELTS, и тогда мы в обязательном порядке должны были его сдать к концу четвертого курса хотя бы на 4.5 балла (из 9). Для тех кто не в курсе: IELTS – это один из двух самых популярных экзаменов для поступления в зарубежные вузы наравне с  TOEFL. Кажется, что 4.5 балла из 9 это не так уж и много, но когда я впервые погрузился в секции reading и listening, то понял, что дела плохи, ведь IELTS прежде всего заточен, прежде всего, на академический английский, где приходится читать тексты и писать эссе не про “курочку Рябу”, а про  глобализацию, сельское хозяйство, астрономию и прочее. Тогда было довольно страшно, а сейчас я благодарен своему вузу (привет, МИСиС) за такую инициативу. Ведь хочешь не хочешь, а надо было получить зачет. Пришлось основательно погрузиться в язык, качественно делать домашнюю работу, регулярно учить новые слова на незнакомые темы. Помимо трех занятий в неделю в вузе, я еще посещал курсы английского в школе BKC. 

Читать далее
Total votes 24: ↑8 and ↓16-5
Comments10

CI/CD и еще один CD. Разбираемся в терминологии pipelines в контексте автоматизации тестирования

Reading time4 min
Views33K

В IT индустрии используется большое разнообразие инженерных культур и практик, таких как Agile, бережливое производство (lean software development), DevOps. Все они так или иначе нацелены на бесперебойную доставку ценности за счет повторяемых коротких итераций. Неотъемлемой частью такого подхода является конвейерный подход или по-английски – pipelines. Подразумевается, что в идеальном мире разработчик заливает код на сервер и дальше происходит магия, состоящая из автоматизированных этапов сборки проекта, контроля качества кода, запуска тестов и сбора метрики. На рынке существует большое количество платных и бесплатных инструментов для настройки такого процесса, который мы называем “процессом непрерывной интеграции” или CI/CD (Jenkins, GitLab CI, Teamcity и д.р.). Однако для построения действительно зрелого процесса недостаточно просто установить инструмент. За каждым этапом конвейера стоит сложная логика того, что должно быть запущено, на каких вычислительных ресурсах и как эти ресурсы используются.


На собеседовании кандидаты очень часто гордо говорят, что знают CI/CD. Но знать можно по-разному. Одно дело нажимать кнопку запуска и смотреть, какой цвет получился: красный или зеленый. И совсем другое дело настраивать весь флоу от и до самостоятельно, чем обычно и занимаются DevOps инженеры. Для проверки глубины знаний я задаю базовый вопрос, на который очень редко получаю ответ: “А в чем разница между CI и CD ?”. Далее я хочу поделиться своим пониманием отличий CI от CD и от еще одного CD на примере запуска автотестов. Заранее предупрежу, что мое видение может частично отличаться от вашего. Ведь у всех нас немного разный опыт, разные проекты и источники для изучения, которые могут расходиться. Главное, что какое-то видение у вас есть!

Читать далее
Total votes 17: ↑14 and ↓3+13
Comments5

Как поместить весь мир в обычный ноутбук: PostgreSQL и OpenStreetMap

Reading time29 min
Views26K

Когда человек раньше говорил что он контролирует весь мир, то его обычно помещали в соседнюю палату с Бонапартом Наполеоном. Надеюсь, что эти времена остались в прошлом и каждый желающий может анализировать геоданные всей земли и получать ответы на свои глобальные вопросы за минуты и секунды. Я опубликовал Openstreetmap_h3 — свой проект, который позволяет производить геоаналитику над данными из OpenStreetMap в PostGIS или в движке запросов, способном работать с Apache Arrow/Parquet.

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

Первый пост не претендует на монографию, начну с краткого обзора...

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

Information

Rating
Does not participate
Location
Минск, Минская обл., Беларусь
Date of birth
Registered
Activity

Specialization

Software Developer, Backend Developer
Senior
From 8,000 $
Java
Java Spring Framework
Spring Boot
Swing
JavaFX
Apache Maven
Intellij IDEA
Git
Docker
Jenkins