Как стать автором
Обновить
15
-0.2

Уже не безработный ;)

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

MyBatis как более быстрая альтернатива Hibernate

Время на прочтение11 мин
Количество просмотров102K
В Java сообществе Hibernate framework де-факто считается стандартом для удобной работы с базой данных. Разработчику трудно выбрать другой фреймфорк, потому что порой он не знает о существовании альтернатив. В этой статье я проведу курс молодого бойца по работе с MyBatis framework. Полностью охватить весь framework не получится, но информации будет достаточно, что бы увидеть преимущества и слабые стороны данного framework'а и начать работать с MyBatis.
Читать дальше →
Всего голосов 25: ↑20 и ↓5+15
Комментарии39

Паттерн Circuit Breaker

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

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

Каждая секунда простоя может стоить компании целое состояние, важно иметь надежные механизмы защиты от сбоев. Здесь и приходит на помощь паттерн Circuit Breaker.

Представьте себе обычный автоматический выключатель в вашем доме. Когда происходит перегрузка, он "выбивается", предотвращая возможные повреждения. Точно так же работает и Circuit Breaker в микросервисах. Он мониторит вызовы к внешнему сервису и при обнаружении слишком большого количества неудачных попыток временно "отключает" вызов, предотвращая тем самым падение всей системы.

Этот паттерн основывается на трех основных состояниях: закрытое, открытое и полуоткрытое.

Читать далее
Всего голосов 15: ↑12 и ↓3+14
Комментарии0

Gopher, вы слышали это слово?

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

Gopher


«To Gopher, the world is just one big file system»

Gopher — один из протоколов интернета, был популярен в начале 1990-х, впоследствии его роль уменьшилась. В основном с повсеместным развитием WWW. Ошибочно считается (а именно так написано в русской и английской википедии), что протоколы Gopher и HTTP были своего рода конкурентами, это и привело к уменьшению доли одного и увеличению другого. Нет, изначально Gopher был разработан для своеобразной замены FTP, протокола, который был разрабтан еще в 1960-х годах.
Читать дальше →
Всего голосов 79: ↑76 и ↓3+73
Комментарии63

Telegram-bot для поиска укрытий (публикую после событий в Белгороде 30.12.23)

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

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

Читать далее
Всего голосов 261: ↑229 и ↓32+237
Комментарии2

Как проходят архитектурные секции собеседования в Яндексе: практика дизайна распределённых систем

Время на прочтение25 мин
Количество просмотров127K
Привет, меня зовут Костя Кардаманов, я работаю в отделе технологий разработки Яндекса. Обычно такой же фразой я приветствую и кандидатов на собеседовании. А сегодня я хотел бы рассказать вам, как и зачем мы проводим интервью по дизайну систем с бэкенд-разработчиками. Сразу скажу: для фронтендеров, мобильных разработчиков и ML-инженеров подобный тип собеседований применим слабо, так что эти специальности мы здесь обсуждать не будем.

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

Что такое дизайн информационных систем


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

Опытный читатель может сказать — в мире полно платных и бесплатных решений, из которых я могу собрать систему как из деталей конструктора, зачем мне понимать устройство этих деталей?
Читать дальше →
Всего голосов 67: ↑65 и ↓2+90
Комментарии37

System Design 101

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



О сложных системах простыми словами.


В шпаргалке на высоком уровне рассматриваются такие вещи, как протоколы коммуникации, DevOps, CI/CD, архитектурные паттерны, базы данных, кэширование, микросервисы (и монолиты), платежные системы, Git, облачные сервисы etc. Особую ценность представляют диаграммы — рекомендую уделить им пристальное внимание. Полагаю, шпаргалка будет интересна всем, кто хоть как-то связан с разработкой программного обеспечения и, прежде всего, веб-приложений. Буду признателен за помощь в уточнении/исправлении понятий, терминологии, логики/алгоритмов работы систем (в рамках того, что по этому поводу содержится в оригинале), а также в обнаружении очепяток.


Выражаю благодарность Анне Неустроевой за помощь в редактировании материала.


Возможно, немного другой формат шпаргалки покажется вам более удобным.


System Design (сборник на английском языке).

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

Быстрее быстрого в СУБД

Уровень сложностиСложный
Время на прочтение14 мин
Количество просмотров8.8K

Привет! Меня зовут Сергей, я технический эксперт в компании Bercut. Когда-то увлекался Delphi и J2ME, издал несколько книг на эти темы, и профессионально уже около 20 лет создаю высоконагруженные приложения баз данных, используя для этого PL/SQL и SQL.

В Bercut мы занимаемся разработкой и развитием IT-продуктов и решений для операторов цифровых услуг и мобильных сервисов. Наши системы работают на различном железе, разных СУБД и обслуживают 24x7x365 в режиме онлайн сотни миллионов абонентов по всему миру. И это только кажется, что абонент один раз в день куда-то позвонил и все, больше никакой нагрузки от него нет и никто с ним не работает. На самом деле каждый смартфон каждого абонента непрерывно обменивается данными с сетью, а это все работа инфраструктуры операторов сотовой связи, а значит, нашего ПО. Как же система справляется с таким огромным объемом нагрузки?

Сегодня расскажу, что нужно делать и чего избегать, чтобы построить максимально производительную систему на примере СУБД Оракл.

Читать далее
Всего голосов 24: ↑22 и ↓2+31
Комментарии18

Как за 60$ создать систему распознавания лиц с помощью Python и Nvidia Jetson Nano 2GB

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

Новый набор инструментов для разработчиков Nvidia Jetson Nano 2GB представляет собой одноплатный компьютер с графическим ускорителем стоимостью 59$, работающий под управлением программного обеспечения с искусственным интеллектом.

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

Приятного чтения!
Всего голосов 17: ↑15 и ↓2+19
Комментарии30

Реактивное программирование со Spring

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

Эта серия заметок служит введением в разработку реактивных веб-приложений с использованием Spring Boot, Project Reactor, WebFlux и R2DBC. Это руководство по реактивному миру для новичков, но предполагается, что читатель уже знаком с Java и Spring Boot.

В первой части представлен обзор различных концепций реактивного программирования и их истории. Вторая часть представляет собой введение в Project Reactor с большим количеством коротких примеров кода. В третьей части рассматривается WebFlux - реактивный веб-фреймворк Spring. И, наконец, четвертая часть посвящена R2DBC - Reactive Relational Database Connectivity.

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

Как тестировать не-REST-бэкенд. Часть вторая, WebSocket

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

Привет! Продолжаем цикл статей про тестирование не-REST-бэкенда, в прошлый раз мы говорили о GraphQL, теперь пришло время WebSocket.

Итак, что такое WebSocket?

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

Что тут важно — что это протокол (со всеми вытекающими последствиями для протокола), который использует постоянное соединение.

Работу по WebSocket в обычной жизни можно представить примерно так.

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

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

ОК, что вам делать в такой ситуации?

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

Вышла Java 21

Уровень сложностиСредний
Время на прочтение18 мин
Количество просмотров57K
Вышла общедоступная версия Java 21. В этот релиз попало около 2500 закрытых задач и 15 JEP'ов. Release Notes можно посмотреть здесь. Изменения API – здесь.

Java 21 является LTS-релизом, а значит у него будут выходить обновления как минимум 5 лет с момента выхода.
Читать дальше →
Всего голосов 74: ↑74 и ↓0+74
Комментарии49

Скажи «нет» Electron! Пишем быстрое десктопное приложение на JavaFX

Время на прочтение13 мин
Количество просмотров83K
В последнее время на программистских форумах развернулись неслабые дискуссии (для примера см. здесь, здесь и здесь, и эта сегодняшняя) об Electron и его влиянии на сферу разработки десктопных приложений.

Если вы не знаете Electron, то это по сути веб-браузер (Chromium) в котором работает только ваше веб-приложение… словно настоящая десктопная программа (нет, это не шутка)… это даёт возможность использовать веб-стек и разрабатывать кросс-платформенные десктопные приложения.

Самые новые, хипстерские десктопные приложения в наше время сделаны на Electron, в том числе Slack, VS Code, Atom и GitHub Desktop. Необычайный успех.

Мы писали десктопные программы десятилетиями. С другой стороны, веб только начал развиваться менее 20 лет назад, и на протяжении почти всего этого времени он служил только для доставки документов и анимированных «гифок». Никто не использовал его для создания полноценных приложений, даже самых простых!
Читать дальше →
Всего голосов 70: ↑61 и ↓9+52
Комментарии185

Создаем нативное Kotlin приложение на Spring Boot Native, Gradle и GraalVM без докера под MacOS и Windows

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

В этой статье я хочу рассказать о практическом опыте нативной компиляции production приложения, написанного на Kotlin со Spring Boot, Gradle с использованием GraalVM . Начну сразу с минусов и плюсов самой возможности нативной компиляции и где она может быть полезна, и дальше перейду уже непосредственно к процессу сборки под MacOS и Windows.

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

Read more →
Всего голосов 12: ↑12 и ↓0+12
Комментарии13

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

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

C 2010 года вместе с тем, как свет увидел новый язык программирования Rust от Mozilla я начал его изучение и применение. Время шло, но он стабильно показывал отличное соотношение тех, кто хочет использовать его, кто уже использует и кто планирует делать это дальше. 

С появлением стабильной версии 1.0 в 2015 году было решено «с головой» погружаться в изучение и пилить курс, который бы в «экспресс» режиме позволил познакомиться с основами и понять, как использовать Rust на практике. 

В кейсе поговорим о создании курса, разочаровании в российском рынке, выходе материала в мир и увеличении доходов с его продажи почти в 10 раз. 

Читать далее
Всего голосов 61: ↑32 и ↓29+12
Комментарии39

Производство корпусов «в силикон» на пальцах: поэтапно и с анимацией

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

Это вам не 3D-принтер гонять, тут все по-взрослому. Покажем производство корпусов по очень популярной технологии литья полиуретана в силиконовые формы — как это делается; и расскажем о рисках и ошибках. Зачем? Чтобы цена разработки и производства корпуса неожиданно не стала в несколько раз выше, чем вы планировали. 

Открываем дверь на производство с ноги
Всего голосов 73: ↑73 и ↓0+73
Комментарии26

Railway и Render, как замена бесплатного тарифа Heroku

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

Как многим известно Heroku с 28.11.2022 прекращает поддержку бесплатных аккаунтов. И у меня,  как и у других пользователей бесплатного аккаунта, возник вопрос: «Куда же теперь переезжать?» Я нашёл два подходящих сервиса, которые, на мой взгляд, могли бы  заменить Heroku. Так как я не увидел статей на Habr на тему, куда можно мигрировать с Heroku, то решил написать небольшую инструкцию по переезду. Надеюсь кому-то она будет полезной.

Читать далее
Всего голосов 10: ↑8 и ↓2+6
Комментарии15

Будущее живой музыки или причуда миллиардера? Как устроена самая крупная сферическая конструкция в мире

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

Первый стадионный концерт состоялся в 1965-м году, когда The Beatles выступили на нью-йоркском Shea Stadium перед 55 000 кричащих фанатов. Этот концерт, на котором «Битлз» заработали более 160 000 долларов за 28 минут работы, стал атрибутом статусности и коммерческой мощи музыкантов. В 1970-е годы стадионы стали основной площадкой для концертных исполнений популярной музыки. От звёзд кантри и рок-музыки до более традиционных певцов, таких как Фрэнк Синатра и Барбра Стрейзанд, популярные исполнители стали привлекать аудиторию от 20 000 до 100 000 человек за один раз.

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

С тех пор такие концерты стали прерогативой самых популярных и успешных музыкантов мира: The Queen, U2, Мадонны, Эминема, Metallica, Майкла Джексона и других. Но концерт на стадионе часто означает плохую видимость и плохой звук для большинства зрителей. Но развитие технологий не могло не коснуться и этой отрасли развлечений. Новая эра живых развлечений начнётся в конце сентября 2023-го года, когда U2 выступят в «Сфере». Геометрическая фигура высотой 112 м и шириной 157 м в Лас-Вегасе попробует полностью переосмыслить стадионные концерты.
Читать дальше →
Всего голосов 27: ↑24 и ↓3+28
Комментарии14

Вам достался проект. Но есть один нюанс…

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

Привет Хабровчане!

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

В рамках одного проекта в компании ОТР 2000 были трудности с самим техническим заданием, но благодаря команде проекта (всех помню, вы лучшие с кем я когда-либо работал) удалось нивелировать отставание по проекту, и вывести команду из состояния перманентного цейтнота.

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

Был проект, где до срока сдачи оставалось два месяца, а прогноз по работам был на пять месяцев:))) Но получилось. Основная сложность была не в техническом задании или непонятных целях, а в постоянно растущих объемах и небольшом административном хаосе.

Как удавалось решить данные вопросы и хотелось рассказать.

Читать далее
Всего голосов 10: ↑3 и ↓7-4
Комментарии0

«Входить в IT неспеша» или как стать Middle Java Backend разработчиком минуя ступень Junior

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

Статья о том, как шаг за шагом при дефиците свободного времени обучиться и устроиться на работу сразу Middle Java разработчиком перескочив через Junior ступеньку, основанная на личном опыте, и о том, как мне это помогло, когда сразу после трудоустройства пришлось тянуть проект практически в solo.

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

Давай-ка разберёмся с этим
Всего голосов 22: ↑17 и ↓5+12
Комментарии80

Разработка блока управления боковыми зеркалами автомобиля

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

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

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

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность

Специализация

Бэкенд разработчик
От 360 000 ₽
Java
Java Spring Framework
SQL
Angular
React