Pull to refresh
-28
0
Send message

TCP — плохой вариант для дата-центров. Встречайте новый протокол Homa

Reading time10 min
Views25K
Несмотря на свою феноменальную успешность на протяжении всей истории интернета, TCP — плохой транспортный протокол для современного дата-центра. Джон Остерхаут из Стэнфордского университета в научной статье «Пришло время заменить TCP в дата-центре» (опубликована 3 октября 2022 года, doi:
10.48550/arXiv.2210.00714) аргументированно объясняет, почему все ключевые особенности этого протокола не подходят для ЦОД, начиная с ориентации на «потоки», и заканчивая очередью пакетов. Этот протокол был создан для другой цели. Ничего не поделаешь.

Самое печальное, что проблемы TCP слишком фундаментальны и взаимосвязаны. Все их невозможно исправить. Единственный способ использовать оптоволокно на максимальной скорости — внедрить в дата-центрах новый транспортный протокол.

И такой протокол разработан в 2018 году под названием Homa (на основе докторской диссертации Бенама Монтецери, который раньше работал в Стэнфорде, но потом ушёл в Google). Этот протокол не совместим с TCP по API, но его можно широко использовать на практике, интегрировав в фреймворки RPC.

В предыдущие годы Остерхаут опубликовал несколько научных работ с описанием архитектуры Homa, а также его реализации в ядре Linux. Ниже — основные тезисы из последней статьи автора. Просим прощения за излишнюю техническую сложность, но тема показалась нам очень важной.
Читать дальше →
Total votes 13: ↑11 and ↓2+13
Comments33

Программисты-экстремисты

Reading time5 min
Views22K

Да, это не ошибка: сегодня мы поговорим о самых что ни на есть экстремистских подходах к программированию.

«Если вы не практикуете Test Driven Development (TDD), то не можете считать себя профессиональным разработчиком».

«Парное программирование —  обязательное условие для серьезных разработчиков: это намного быстрее, чем одиночная разработка и асинхронная проверка кода»

«Моб-программирование — единственный способ добиться высокой скорости разработки и эффективного обмена знаниями внутри команды»

«TDD обеспечивает надежность кодовой базы и возможность релиза на прод в любое время»

Слышали ли вы когда-нибудь подобные заявления?

Читать далее
Total votes 44: ↑41 and ↓3+45
Comments39

Выкуси, Telegram Premium — бот-конвертер голосовых сообщений для обхода ограничений (Java, Spring, вебхуки, ffmpeg)

Reading time17 min
Views13K

Это третья статья в моей серии "для самых маленьких" - первая была посвящена "классическому" Telegram-боту, наследуемому от TelegramLongPollingBot, вторая - боту на вебхуках на Spring с блекджеком и ш БД Redis и клавиатурами.

Для кого написано

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

Я пытаюсь писать как для себя, а не сразу для умных — надеюсь, кому-нибудь это поможет быстрее въехать в тему.

Предыстория

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

Большинство преимуществ Telegram Premium не вызывают никаких вопросов, но запрет на отправку себе голосовых сообщений - это низко, Telegram.

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

На дно!
Total votes 15: ↑15 and ↓0+15
Comments21

Наблюдения программиста в возрасте

Reading time3 min
Views70K
В колледже люди говорили мне, что я начну карьеру с написания кода, но в конечном счете приду к тому, что буду просить других писать код под свои идеи. В честь того, что это предсказание оказалось полностью неверным, вот некоторые произвольные соображения от сорокалетнего программиста, который размышляет над ходом своей карьеры.
Читать дальше →
Total votes 129: ↑119 and ↓10+137
Comments161

Рейтинг лучших настольных 3D-принтеров 2021 года

Reading time34 min
Views136K

Весной прошлого года мы выпустили свой первый рейтинг лучших 3D-принтеров, основанный на данных ведущих американских порталов All3DP и 3DSourced. Он был размещен у нас, а также на сайтах партнеров, и имел огромный успех у читателей. Учитывая неослабевающий интерес к теме, мы решили сделать это традицией, и наш первый в этом году рейтинг составили на основе нашего экспертного мнения и реалий российского рынка, который имеют ряд отличий от американского по популярности и представленности оборудования. К примеру, российские производители неизвестны американским изданиям и, соответственно, не попадают в их рейтинги, так же как и в наши, аналогичным образом, не попадают некоторые американские и европейские. Тем не менее, мы будем использовать текущие рейтинги американских изданий как отправную точку и приведем ряд их оценок по моделям, которые являются одинаково популярными во всех странах.

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

Читать далее
Total votes 16: ↑11 and ↓5+12
Comments39

Обязан ли разработчик развиваться?

Reading time5 min
Views59K

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

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

Но действительно ли всё это надо? Разработчик в самом деле обязан проводить всё своё свободное время за написанием кода? А обязан ли разработчик постоянно развиваться?

Читать далее
Total votes 163: ↑147 and ↓16+158
Comments188

Невыжившие в IT

Reading time7 min
Views202K

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

Есть такое понятие – ошибка выжившего. Грубо говоря, о явлении, тенденции или событии судят по людям, которые прошли его успешно – выжили. Совершенно игнорируя информацию о тех, кто успеха не достиг. В результате случайная удача интерпретируется как устойчивая вероятность. Если интересна мат.часть – почитайте Нассима Талеба или Даниэля Канемана. Их книги существенно дешевле курсов по ИТ.

Я опишу типичные ошибки тех, кто не выжил. И, соответственно, не вошёл в ИТ. Всё из опыта личных наблюдений.

Да, если «тут всё неправда», «а вот мой друг Коля успешно…» или «а у меня получилось» - прекрасно, текст не про вас и не для вас. Вы и ваш друг Коля – выжившие.

Читать далее
Total votes 303: ↑290 and ↓13+336
Comments447

Сезон Java всё: итоги и самые полезные статьи

Reading time6 min
Views26K

С 1 июля по 15 августа наш любимый ресурс временно захватили джависты. Развлекались они, а разгребать 46 хардкорных технических текстов нам, читателям Хабра.

Или нет: я (@apoltavcev) попросил участников сезона Java выбрать лучшие статьи. Под катом вас ждут краткие итоги конкурса и посты, которые настоятельно рекомендуются к прочтению.

А если вы пишете не про Java, а на Java — посмотрите вакансии Сбера. Они проспонсировали нашу Java-вечеринку, за что им большое спасибо.

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

Глубокое погружение в Java Memory Model

Reading time53 min
Views156K


Я провел в изучении JMM много часов и теперь делюсь с вами знаниями в простой и понятной форме.


В этой статье мы подробно разберем Java Memory Model (JMM) и применим полученные знания на практике. Да, в интернете накопилось достаточно много информации про JMM/happens-before, и, кажется, что очередную статью про такую заезженную тему можно пропускать мимо. Однако я постараюсь дать вам намного большее и глубокое понимание JMM, чем большинство информации в интернете. После прочтения этой статьи вы будете уверенно рассуждать о таких вещах как memory ordering, data race и happens-before. JMM — сложная тема и не стоит верить мне на слово, поэтому большинство моих утверждений подтверждается цитатами из спеки, дизассемблером и jcstress тестами.

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

Патчим байт-код для просмотра логов в Android. Подробная инструкция и примеры кода

Reading time8 min
Views3.2K

Привет, Хабр! Меня зовут Саша Лепехин, я разрабатываю мобильное приложение СберИнвестор под Android. Во время разработки и тестирования мобильного приложения мне часто нужно  просматривать логи внутри приложения, причем без подключения по adb.

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

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

Как я нахожу парковочное место за 5 секунд

Reading time5 min
Views113K

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

Читать далее
Total votes 214: ↑213 and ↓1+271
Comments339

Практические примеры использования Stream API

Reading time9 min
Views17K

Всем привет! Решил написать статью с практическими примерами использования Stream API. В данной статье не будет теории - только хардкор и практические примеры. Поехали!

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

Для тестирования буду использовать Postman.

В проекте есть три сущности с которыми мы будем работать: Client, Product и Booking. Связи между ними можно посмотреть на следующей картинке.

Читать далее
Total votes 11: ↑6 and ↓5+4
Comments16

JSON Web Token (JWT) — пример Java реализации на Spring Boot OAuth2 Resource Server 6.0

Reading time3 min
Views13K

Доброе время!

Часть 2-я по открытому занятию нового учебного курса: реализация простого JWT через новый Spring Boot OAuth2 Resource Server (первая часть: Spring Boot 3.0 — готовимся заранее). Что такое JWT и зачем, писать здесь не буду - в сети материалов много, начинать знакомство обычно рекомендую с Википедии. А вот хорошая ссылка по реализации JWT+OAuth2. Здесь я привожу Java код, основанный на официальном примере spring-projects - простейшей реализации JWT Login Sample (без refresh token и отдельного авторизационного сервера), "творчески доработанный" и с моими пояснениями. Еще раз - без теории, для тех, кому интересен код актуальной Java реализации. Если это Вы - прошу.

к прочтению.
Total votes 8: ↑3 and ↓5-2
Comments0

Когда хуже отсутствия коммьюнити — только его наличие

Reading time4 min
Views20K

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

Современное коммьюнити больного человека - это когда голддиггеры из Индии, вайтишники из СНГ, карьеристы-неудачники из стран золотого миллиарда, а также просто любители потусоваться собираются в одном месте. Что из этого получается? Да вы не хуже меня знаете. Но давайте повторим перед школой.

Классическое коммьюнити как правило не интересно карьеристам, менеджерам, пиарщикам, фрилансерам с горящими сроками, школьникам с горящими сраками, лицам неопределенного пола ищущих себе проты^Wмужа-программиста. За счет этого оно интересно обычным программистам, чем и ценно для других программистов.

Больные коммьюнити возникают именно благодаря всем перечисленных выше. Я не знаю всех сценариев формирования больных коммьюнити, но готов поделиться своими фантазиями.

Читать далее
Total votes 119: ↑78 and ↓41+59
Comments46

5 советов, чтобы успешно притворяться разработчиком

Reading time3 min
Views98K

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

Читать далее
Total votes 124: ↑110 and ↓14+113
Comments110

Spring Boot 3.0 — готовимся заранее

Reading time2 min
Views19K

Здравствуй, читатель Хабра!
До выхода Spring Boot 3 осталось совсем немного - 3 месяца. Уже появляются статьи -
What’s New, It's time to get ready. Недавно JetBrains выпустила IDEA с поддержка Spring 6 и Spring Boot 3. Самое время потренироваться заранее в миграции. В разработке нового учебного курса я попробовал перевести свой открытый учебный проект Spring Boot 2.x + HATEOAS на Spring Boot 3, шаги и код проекта ниже.

Читать далее
Total votes 19: ↑6 and ↓13-4
Comments5

Парсим строки с SMT-решателем

Reading time11 min
Views4.6K

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

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

Как оценивать эффективность продуктовых команд. Часть 1: процессные метрики

Reading time5 min
Views12K

Хабр, привет! Я Денис Теплов, Директор по продукту в Лиге Ставок.

В нашей компании продуктовая структура представляет из себя 9 продуктовых end-to-end команд общей численностью ~130 человек, работающих над развитием одного продукта. Каждая из команд укомплектована всеми необходимыми компетенциями. Все живут в одном релизном процессе, делают задачи из одного бэклога (и проекта в Jira), и следят за одними метриками в Amplitude.

В условиях такого тесного взаимодействия естественным образом возникает вопрос: А как оценивать их эффективность?

Об этом мы и поговорим.

Читать далее
Total votes 6: ↑3 and ↓3+1
Comments9

Как я хакнул свой автомобиль

Reading time10 min
Views60K
image

Машина


Прошлым летом я купил Hyundai Ioniq SEL 2021 года. Это хороший экономящий топливо гибрид с приличным набором функций: беспроводные Android Auto/Apple CarPlay, беспроводная зарядка для телефона, сиденья с подогревом и люк в крыше.

Особенно мне понравилась в этой машине система In-Vehicle Infotainment (IVI). Как я говорил ранее, у машины есть беспроводное Android Auto, что довольно редко для такого ценового диапазона. Приложение имеет красивые плавные анимации меню, поэтому я понял, что ЦП/GPU не такие уж и слабые; или, по крайней мере, ПО ест не слишком много ресурсов.

Как и со всеми остальными моими гаджетами, я решил немного поэкспериментировать и посмотреть, что можно сделать с этой системой.
Читать дальше →
Total votes 284: ↑283 and ↓1+339
Comments71

Information

Rating
Does not participate
Location
Беларусь
Date of birth
Registered
Activity