Search
Write a publication
Pull to refresh
170
4

java / open source

Send message

Самый плохой программист, которого я знаю

Level of difficultyEasy
Reading time3 min
Views66K

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

Несколько лет назад я написал в Twitter/X заметку о лучшем программисте, которого я знаю, её стоит переписать в виде поста в блоге. Мне кажется справедливым, чтобы я рассказал и о самом плохом. Его зовут Тим Маккиннон. Я хочу, чтобы мир знал, насколько он измеряемо непродуктивен.

Читать далее

CodeLama в вашей клавиатуре | Локальный Copilot для любого поля ввода

Level of difficultyEasy
Reading time9 min
Views19K

Стою я значит утром (около 2 часов дня) возле кофеварки и листаю ленту хабра, а там CodeLama вышла. Copilot для бедных это или панацея в мире локальных текстовых моделей? Попытаюсь не отвечать на этот вопрос, ведь ваши соседи снизу утонут в воде, которая сейчас льётся из экрана.
Читать далее - на свой страх и риск. Статья писалась спинным мозгом и глубокой ночью, как следствие я получил натянутую на глобус сущность, которую можно инкапсулировать в технотекст, что бы она вызывала меньше подозрений у случайного читателя. Ну вы поняли уровень, верно?
Предлагаю обойтись кратким вступлением и перейти сразу к делу.

Сразу к делу

Почему DevOps и Agile не работают в России, часть первая, Enterprise

Reading time5 min
Views35K

Пару лет назад, человек из Wrike написал серию статей про красную корпоративную культуру, причём во второй части буквально в 3 абзацах был весь смысл 4 статей. Было написано очень завуалировано и мягко, я же сегодня распишу, по сути, этот абзац в целую статью на примере крупных игроков российского рынка, в которых я поработал, сравню с малым бизнесом, в котором я работал ранее, а также с гос. структурами (спойлер, отличии с последними – минимальное).  

Я не буду таким добрым как автор там, и напишу про многие вещи прямо.

Читать далее

Делим неделимое в Kubernetes: шеринг GPU с помощью MIG и TimeSlicing

Level of difficultyHard
Reading time21 min
Views11K

Привет, Хабр! На связи снова Антон, DevOps-инженер в отделе Data- и ML-продуктов Selectel. В предыдущей статье я рассказал о шеринге GPU и показал, как запустить несколько инстансов на одной видеокарте с помощью MIG. А в конце затронул тему с автомасштабированием инференс-серверов. Она оказалась актуальной, и я решил написать продолжение.

В этот раз посмотрим, как применять технологии шеринга в Kubernetes, а также разработаем прототип автомасштабируемой инференс-платформы за один вечер. Интересно? Тогда добро пожаловать под кат!
Читать дальше →

Путь 11 страданий: это не ДЗЕН и не ДАО — это выбор российского BI

Level of difficultyMedium
Reading time8 min
Views7.2K

Привет, Хабр! Мне, наконец, есть чем поделиться с вами. И это результаты практически годового процесса выбора BI-системы из числа российских разработок на замену одной из западных платформ. За это время мне стало очевидно, что примерно 50% действий, которые мы сделали, можно было и не делать, а 20% не стоило делать вовсе. В итоге получилась практически инструкция “как не надо” выбирать себе BI-систему, если вы хотите, чтобы она действительно начала приносить вам пользу ASAP. Под катом — также мои мысли о том, как надо было бы. Желающих обсудить, прошу присоединяться.

Хочу научиться на чужих ошибках...

CAN и GPS адаптер для RaceChrono

Level of difficultyEasy
Reading time5 min
Views4.5K

В любительском и не очень профессиональном сегменте авто-мото спорта многие используют приложение RaceChrono для записи телеметрии и хронометража. Если кратко, то RaceChrono позволяет решить 2 задачи:

1. Хронометраж. Отсечка времени по кругам или по линии старта и финиша. Приложение позволяет в "онлайне", прямо во время движения, видеть опережение или отставание от лучшего времени. Прямо как в компьютерной игре.

2. Запись телеметрии (траектории движения, параметров работы автомобиля) и последующий их просмотр для анализа. Так же можно наложить отображение нужных параметров на видео.

Как правило, для решения этих задач используют 2 отдельных устройства: внешний GPS приемник и CAN-адаптер. И то и другое выпускается промышленно и доступно для покупки.

Я сделал небольшое устройство, которое сочетает в себе сразу всё необходимое: GPS на 25 Гц и CAN интерфейс.

Читать далее

Архетипы программных архитекторов. Часть 2

Level of difficultyEasy
Reading time9 min
Views5K

Привет Хабр! Сегодня публикуем вторую часть материала об архетипах программных архитекторов. Если пропустили, то вот первая часть.

Читать далее

Архетипы программных архитекторов. Часть 1

Level of difficultyEasy
Reading time13 min
Views11K

Что такое архетип? Это — образец набора вариантов поведения или поведенческих сценариев, типичных для определённой роли. Уилл Ларсон, который сейчас занимает должность главного технического директора в Carta, определил четыре архетипа для должности «ведущий инженер‑программист» (Staff Engineer). Это — «техлид» (Tech Lead), «архитектор» (Architect), «решатель задач» (Solver) и «незаменимый помощник» (Right Hand).

Я работаю над новой книгой, которую планируется опубликовать этой осенью. Она называется «The Software Engineerʼs Guidebook». Когда я писал в ней об архитектуре ПО, меня зацепила идея существования «архетипов» программных архитекторов, которые могут сочетаться друг с другом либо хорошо, либо плохо. Речь идёт о людях, работающих бок о бок друг с другом, вклад каждого из которых в общее дело отличается чем-то особенным. Разбираться с тем, какие архетипы лучше всего описывают коллег — это интересное занятие, которое может привести к ценным открытиям. И вполне возможно, что вы, задумываясь об этом, поймёте, какой из архетипов лучше всего описывает вас самих.

Читать далее

Девочка, балансирующая на NVME-over-TCP 2.0

Reading time10 min
Views17K

Привет всем! Рад вас снова видеть, и я счастлив, что вам так понравилась моя предыдущая статья под названием «А все ли врут? Продолжаем издеваться над NVME».

Напомню, что в этой статье я объяснил, как правильно подключить ваш NVME диск удалённо по сети. Не «как расшарить папку на диске?» и не «какой стороной впихивать NVME в компьютер?» а именно «Как подключить ваш NVME диск по сети».

Что вам это даёт? Вы можете подключить NVME диск на одном компьютере в другой компьютер прямо по сети. По самому обыкновенному медному кабелю. И вам не нужно будет устанавливать какие-то левые программы и настраивать что-то сомнительное. Вся система — часть стандартного набора драйверов Linux.

Более того, при наличии сети на 10Gbps вы сможете в полной мере насладиться полной скоростью NVME устройства. Вам будет казаться, что устройство работает как будто на вашем компьютере и с максимальной скоростью. Главное, чтобы сеть позволяла.

Всё это кажется магией, но на самом деле это возможно. И, конечно, у многих из вас это вызвало массу вопросов. Что же, у меня есть ответы. Всё, что вы хотели узнать об NVME-over-TCP, но боялись спросить.

Давайте под кат.
Читать дальше →

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

Level of difficultyEasy
Reading time5 min
Views3.6K

Не буду вдаваться в подробности о том, откуда берутся миллионы временных серий и почему они умудряются изменяться еженедельно. Просто возникла задача еженедельно сделать прогноз на 2-8 недель по паре миллионов временных серий. Причем не просто прогноз, а с кроссвалидацией и выбором наиболее оптимальной модели (ARIMA, нейронная сеть, и т.п.).

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

Читать далее

Как легко перейти с Java на Rust: Особенности и советы

Level of difficultyMedium
Reading time6 min
Views12K

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

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

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

Читать далее

Такое тимлидство нам не нужно

Level of difficultyEasy
Reading time7 min
Views34K

Привет, Хабр. Я тимлид уже 4 года. По истечению этого времени накопилась некоторая усталость и отчасти негодование от этой роли(должности). Поэтому хочу накинуть говна на вентилятор и поразмышлять с вами о руководстве в IT, каким оно бывает, какое оно должно быть. Надеюсь у вас тоже на этот счет есть свои мысли и вы мне про них расскажете.

Узнать все про тимлида

XPath — примеры запросов в html для парсинга сайта

Reading time9 min
Views98K

Парсим данные с сайтов при помощи XPath и Screaming Frog без помощи программистов. Синтаксис XPath для выбора, ссылка на удобное расширение для извлечения пути, примеры для парсинга любых данных + запись моего мастер-класса в гостях у Михаила Шакина.

Читать далее

Создание масштабируемой и высокодоступной системы Postgres с помощью Patroni 3.0 и Citus

Reading time16 min
Views19K

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

Читать далее

Архитектура как бремя

Reading time10 min
Views7.8K

За время своей карьеры я поработал с разными legacy-проектами, каждый из которых страдал от тех или иных изъянов.


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


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


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


Читать дальше →

Бредовые проекты в разработке

Reading time10 min
Views4.7K
Впервые я попал в неприятности в «Тиме Хортоне», когда жарил пару дюжин хрустящих пончиков с грецким орехом. «Тим Хортон» — это кафе, которое торгует кофе и пончиками, я работал там году эдак в 2002-м, когда учился в университете.

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

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

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

Я терпеть не мог ИБД и ужасно рад, что окончил университет и пришел в разработку, где мне не приходится делать вид, что я постоянно чем-то занят. Пока идет сборка, я могу почитать Hacker News и ни от кого еще не слышал, что лучше бы мне за это время навести лоск на скобки.
Читать дальше →

Быстрый двоичный поиск без ветвления

Level of difficultyMedium
Reading time15 min
Views17K

Мои читатели — занятые люди, поэтому сразу перейду к делу. Вот она, самая быстрая обобщённая (и простая) реализация двоичного поиска на C++:

template <class ForwardIt, class T, class Compare>
constexpr ForwardIt sb_lower_bound(
      ForwardIt first, ForwardIt last, const T& value, Compare comp) {
   auto length = last - first;
   while (length > 0) {
      auto rem = length % 2;
      length /= 2;
      if (comp(first[length], value)) {
         first += length + rem;
      }
   }
   return first;
}

Тот же интерфейс функции, что и у std::lower_bound, но вдвое быстрее и короче. «Без ветвления», потому что if компилируется в команду условной передачи, а не в ветвление/условный переход. Ближе к концу статьи мы изучим опции компилятора и даже более быстрые версии полностью без ветвления. Для понимания этой статьи не нужны особые знания в C++. Достаточно понимать, что итераторы (first и last) по сути являются указателями на элементы массива, хотя могут указывать на один элемент дальше, чем последний элемент массива. Можете не обращать внимания на template, class, constexpr и &. Вот если бы существовал быстрый и чистый язык, работающий на уровне железа...1 2
Читать дальше →

Что происходит с рождаемостью в России и мире. И как это может отразиться на каждом из нас

Level of difficultyEasy
Reading time11 min
Views152K

У меня есть хобби. Больше 15-ти лет я изучаю большие группы людей. Племена, этносы, народы, нации, как они между собой взаимодействуют. Почему одни существуют долго, как китайцы, а другие достаточно быстро уходят в историю. Но больше всего меня занимала демография, а точнее события связанные с переходом к современному типу воспроизводства. Человечество впервые за свою историю столкнулось с такой массовой естественной депопуляцией.

С первого взгляда кажется, что эта тема очень узкая и уж точно не имеет отношения к IT. Но уменьшение населения, а что ещё более важно, изменение его возрастной и национальной структуры затрагивает все стороны жизни. Экономику - как пример длительная рецессия в Японии или поднятие пенсионного возраста в разных странах, общество - беспорядки на национальной почве как во Франции, право - обсуждение запретов абортов в России. Представьте, ваша девушка (или вы сами, если вы девушка) беременна, в стране аборты запрещены, а улететь можно только сдав кровь на ХГЧ, и если тест положительный за границу не пускают. Сейчас выглядит как бред, но в 2019 году наша реальность тоже показалась бы бредом.

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

Читать далее

Повербанк для ноутбука на стероидах или DIY выходного дня

Level of difficultyEasy
Reading time3 min
Views29K

Многие летом работают с дачи, а некоторые даже находят уединенные уголки в лесу с доступом к 4G. И все бы хорошо, но на даче иногда «пропадает свет», а в лесу его и вовсе нет. Я расскажу, как сделать на скорую руку power bank для ноутбука, который обеспечит дни, а при желании и недели свободы от розетки.

Читать далее

S3 не сразу строилось

Reading time18 min
Views9.1K

Привет, Хабр. Вашему вниманию предлагается сокращённый перевод эпичного поста под авторством Энди Уорфилда, вице-президента и заслуженного инженера в компании Amazon, занятого разработкой S3. Пост основан на его пленарном выступлении с конференции USENIX FAST ‘23 и затрагивает три различных аспекта, касающихся выстраивания и эксплуатации такого огромного хранилища данных как S3. Если пост окажется интересным - рассмотрим вариант перевести и вторую часть

Читать далее

Information

Rating
473-rd
Location
Россия
Registered
Activity