В данной статье я рассмотрю основные принципы нейминга и структуру названий переменных и функций. Для опытных разработчиков эта статья вряд ли откроет что-то новое, но для новичков она может оказаться полезной.
Книги, которые стоит почитать ИТ-архитекторам. Часть 2
Привет, Хабр! Это Саша Бардаш, главный архитектор интеграционных платформ в МТС Диджитал. В прошлый раз я рассказывал о пяти книгах, которые стоит почитать начинающему ИТ-архитектору. Большое спасибо всем, кто читал. Были интересные комментарии на тему, какие еще книги почитать — кое-что из этого я добавил в свою новую подборку. Итак, под катом пять книг, которые будут интересны уже более опытным ИТ-архитекторам. Что ж, поехали!
BPMN 2.0 универсальный подход при построении диаграмм
Я написал этот гайд для использования аналитиками в компании (мы интегратор решений 1С в медицине), как настольная шпаргалка и некий базовый «стандарт унификации» формируемых диаграмм данного типа.
Полезно будет как тем, кто только делает первые шаги к стандартизации своего подхода при описании логики бизнес-процессов так и тем, кто уже имеет опыт применения данной нотации.
Многие пользователи диаграмм, создаваемых аналитиком зачастую не готовы читать схемы, содержащие большое кол-во элементов, виды которых нужно знать и понимать. Для описания бизнес-процессов из опыта в большинстве случаев достаточно элементов нотации, описанных здесь.
Что почитать по машинному обучению: подборка из 6 книг
Привет, Хабр! Это Миша Степнов, руководитель центра R&D Big Data в МТС Диджитал. Машинное обучение и технологии искусственного интеллекта постоянно развиваются — так что специалистам этой сферы приходится за ними поспевать. Держать руку на пульсе помогают в том числе книги. Сегодня поделюсь подборкой из шести книг по машинному обучению, которые будут интересны начинающим (и не только) специалистам.
Как начать читать на английском и не бросить на 3-й странице
У меня есть приятель. Он венгр, по профессиональной надобности учит русский. Когда мы познакомились, он гордо предъявил мне 1-ю книгу, которую начал читать на русском. Там была… (барабанная дробь!) сказка про лисичку.
Сюжет я не помню, но слова, которые он перевел и выписал, навсегда остались в моей памяти – печка, колодец, метла, ведро и глаголы типа «затопить». Очень полезная лексика, не так ли?
Я не знаю, кто придумал, что взрослым людям, которые только начали учить язык, надо читать детские книги. Ну типа язык простой (царевич, лягушка, терем), и сюжет увлекательный – вам же очень хочется перечитать «Приключения Тома Сойера» в 30 лет, правда?
На самом деле, с детскими книжками придется изрядно помучиться – обычно довольно сложная грамматика, и куча слов, которые обычно учат на высоких уровнях. А польза от всех этих белочек и лягушек – сомнительная.
Некоторые отчаянные головы берутся сразу за Чарльза нашего Диккенса и Джейн Остин. Как будто с конца 19-го века американские, британские, австралийские авторы ничего достойного не написали. Сами носители языка считают Диккенса сложным автором, и понятно, таким языком уже никто не говорит.
ДИСКЛЕЙМЕР: все, что я скажу дальше, написано для тех, кто однажды начал читать в оригинале, перевел 1-ю страницу и бесславно дезертировал. Если вы получаете удовольствие от английской классики, ничего полезного из этого поста вы не узнаете.
А что читать, если
...вы только начали учить язык
Прогулите Graded Readers, и вам откроется новый увлекательный мир. Graded Readers – это такие тоненькие книжки, специально для тех, кто только начинает учить язык. Они называются graded, потому что поделены на уровни.
Глубокое погружение в Java Memory Model
Я провел в изучении JMM много часов и теперь делюсь с вами знаниями в простой и понятной форме.
В этой статье мы подробно разберем Java Memory Model (JMM) и применим полученные знания на практике. Да, в интернете накопилось достаточно много информации про JMM/happens-before, и, кажется, что очередную статью про такую заезженную тему можно пропускать мимо. Однако я постараюсь дать вам намного большее и глубокое понимание JMM, чем большинство информации в интернете. После прочтения этой статьи вы будете уверенно рассуждать о таких вещах как memory ordering, data race и happens-before. JMM — сложная тема и не стоит верить мне на слово, поэтому большинство моих утверждений подтверждается цитатами из спеки, дизассемблером и jcstress тестами.
KeyDB как [потенциальная] замена Redis
Предыстория достаточно банальна: однажды с большим наплывом трафика была зафиксирована значительная деградация производительности приложения (а именно — времени ответа). На тот момент, к сожалению, не удалось провести нормальную диагностику происходящего, поэтому впоследствии запланировали ряд нагрузочных тестирований. После их проведения удалось обнаружить узкое место, коим стал кэш базы данных в Redis. Как это часто бывает, проблему нельзя было решить сию секунду и правильным путём — силами разработчиков (изменением логики работы). Поэтому включилось любопытство и желание побороть ситуацию обходным путём. Так и появилась эта статья.
Свой S3-server: что делать, если ваши десятки петабайт уже не лезут в коробочные объектные хранилища
В 2024 году уже незачем рассказывать об S3-интерфейсе и сравнивать его с другими вариантами организации объектного хранилища. Вот и мы в Ozon, конечно, предоставляем такое платформенное решение широкому спектру внутренних потребителей. От сервисов, которые хранят картинки товаров для каталога, до бэкапов баз данных. От собственных внутренних разработок, до open-source-решений, таких как Gitlab и Thanos.
Пока у вас десятки терабайт и сотни RPS, вас устраивают такие решения, как MinIO. Но по мере роста объёмов и запросов приходится смотреть в сторону таких решений, как Ceph с RGW (RADOS Gateway / Object Gateway). Ну, а когда у вас 3 дата-центра, десятки петабайт данных, миллиарды объектов и десятки тысяч запросов в секунду — в таких условиях и у RGW начинаются проблемы.
Эта история началась с того, что и мы с проблемами масштабирования столкнулись. Под хабракатом вы узнаете, как мы прошли через отрицание проблемы, гнев на Ceph, торг с CTO и разработку собственного решения. Как выбирали технологии, на какие грабли наступили, и что в итоге получилось.
CSI и S3 в Kubernetes. Каждому свое: Ceph, Minio, TopоLVM
Без хранилища данных не заработает ни одно stateful-приложение, это известно всем. А вот как и какое хранилище развернуть - это вопрос к специалистам. Сегодня расскажем, как мы “готовим” Ceph и в каких случаях используем TopоLVM и Minio.
Зачем и как хранить объекты на примере MinIO
Наша биг дата проанализировала Telegram-чаты, форумы и разговоры в кулуарах IT-мероприятий и пометила объектные хранилища как инструмент, который ещё не все осмеливаются использовать в своих проектах. Хочу поделиться с вами своим опытом в формате статьи-воркшопа. Если вы пока не знакомы с этой технологией и паттернами её применения, надеюсь, эта статья поможет вам начать использовать её в своих проектах.
REDIS: такой простой и такой сложный
Меня зовут Андрей Комягин, я СТО компании STM Labs. Мы занимаемся разработкой очень больших распределённых высоконагруженных систем для различных отраслей и в своей работе широко используем open-source решения, в том числе СУБД Redis. Недавно я подробно рассказывал об этой системе на конференции Saint HighLoad++, а теперь с удовольствием поделюсь основной информацией с читателями Хабра. Итак, поехали.
Книжная полка DevOps-инженера
Всем привет! Решил накидать книжных полезняшек для тех, кто любит DevOps или движется в этом направлении. Книги поделил по темам: сначала базовый уровень, потом архитектура, методологии, ну и всё остальное. В общем, от и до.
Я Сергей Задорожный, руководитель отдела платформенных решений банка «Центр-инвест» и один из авторов курса «DevOps для эксплуатации и разработки» от Яндекс Практикума. Раньше занимался написанием бэкендов на Java и Kotlin, потом занялся архитектурой, выстраиванием процессов, а сейчас заношу DevOps-практики в финтех-энтерпрайз.
Как не потерять пространство в Notion после блокировки в России 9 сентября
9 сентября Notion ограничит доступ к приложению из России: они обязаны это сделать, чтобы соблюсти новые законы США. Я почитал документацию и ответы техподдержки пользователям — рассказываю, что понял.
Если верить Notion, пользователей банить не будут. Приложение не будет открываться из России, но вы восстановите доступ, как только окажетесь в другой стране. Это значит, что, скорее всего, Notion можно будет использовать из России через VPN.
Искусство ETL. Пишем собственный движок SQL на Spark [часть 7]
В предыдущих сериях (FAQ • 1 • 2 • 3 • 4 • 5 • 6 ) мы весьма подробно рассмотрели, как написать на Java собственный интерпретатор объектно-ориентированного диалекта SQL поверх Spark RDD API, заточенный на задачи подготовки и трансформации наборов данных.
В данной части поговорим о том, как добавить в собственный диалект SQL поддержку процедур. Например,
-- library.tdl
CREATE PROCEDURE dwellTimeByMode(@signals, @target, @outPrefix,
@modes = ['pedestrian', 'non_pedestrian', 'car', 'bike'],
@groupid='cell10') AS BEGIN
LOOP $mode IN $modes BEGIN
SELECT * FROM $signals INTO "{$signals}/{$mode}" WHERE mode=$mode;
CALL dwellTime(@signals_userid_attr=userid,
@target_userid_attr=userid,
@target_grouping_attr=$groupid
) INPUT signals FROM "{$signals}/{$mode}", target FROM $target
OUTPUT INTO "{$outPrefix}/{$mode}";
ANALYZE "{$signals}/{$mode}";
ANALYZE "{$outPrefix}/{$mode}";
END;
END;
--- ... --- ... --- ... ---
-- script.tdl
CALL dwellTimeByMode(@signals=$this_month, @target=$population, @outPrefix=$this_month);
Нафига это надо?
Ну, допустим, у нас уже есть некоторое количество SQL ETL кода, наработанного за время эксплуатации инструмента в продакшене, и становится заметно, что значительная часть скриптов на разных проектах совпадает, и из раза в раз повторяется. Логично было бы вынести все эти совпадающие куски в библиотеку, чтобы держать в одном месте, да и вызывать с какими надо параметрами, когда надо. Вот прям как на примере выше.
Руководитель проектов: как говорить заказчику «нет», когда заказчик хочет слышать только «да»?
Сейчас в моде слово «клиентоцентричность», которое заменило привычное мне, бумеру, «клиентоориентированность». И для меня это выглядит так: если раньше важно было делать свой продукт или сервис, ориентируясь на клиента, то сейчас надо просто пойти и сделать, как тебе приказали. И неважно, что ты думаешь, ты же должен быть клиентоцентричным. Для гос. проектов это весьма актуально, кто работал, тот знает.
Однако есть один маленький нюанс: Руководитель проектов должен соблюдать границы проекта, он не волшебник. У него нет бесконечного бюджета и сроков, а значит, иногда придется спорить и отстаивать границы. А значит, говорить «НЕТ». Как это делать так, чтобы не разрушать отношения на проекте, в команде, на аккаунте, а, наоборот, их укреплять? Вот об этом и предлагаю поговорить.
Деградация кода — это результат неправильной организации процессов
Мне сильно повезло работать в организации, предпринимающей добросовестные усилия по обеспечению мощи своих команд. Но я работал и в других местах, где этого не происходило.
На своей должности руководителя разработки я стал непосредственным свидетелем разницы между командой, которой предоставили мощь и… какой антоним у мощи? Они были не слабыми, а, скорее, немощными.
Силу команды постоянно нужно подстёгивать и стимулировать, сама по себе она не развивается.
Что я под этим подразумеваю? Давайте поговорим о том, как немощные организации влияют на техническую работу.
Здесь есть большой выбор тем, от неэффективного использования ресурсов и плохой документации до отсутствия возможностей улучшения процессов «снизу».
Я руководитель разработки, поэтому смотрю на это с точки зрения технаря. Немногие книги о совершенствовании процессов рассматривают углублённо рассматривают улучшение процессов разработки.
Давайте изучим это на примере деградации кода.
Как учить языки программирования и создавать базу знаний с помощью метода из прошлого века: опыт четырех инженеров
Недавно в комментариях к тексту про построение личной базы знаний на Хабре читатель отметил, что в таких статьях не хватает примеров работы с техническими данными. Давайте это исправим. Мы спросили у инженеров YADRO и технарей из сообщества «Цеттелькастен и Персональные базы знаний», как и для чего они ведут свои заметки. Герои статьи используют Obsidian и Emacs, а также личные Telegram-каналы, чтобы изучать новые языки программирования, проходить технические собеседования и вести рабочие записи.
Для тех, кто пока не знаком с методом социолога Никласа Лумана, в начале статьи рассказали об истории Цеттелькастена и показали, как выглядело хранилище данных полвека назад. Короб с ящиками и карточками стал прототипом современных систем для ведения заметок, которыми пользуются инженеры.
Раскочегариваем YouTube без установки софта на конечные устройства
В последнее время для потребителей контента YouTube настали тяжелые времена. Даже самые мелкие местечковые провайдеры уже внедрили то самое замедление видео. В некоторых случаях (как у меня) - это даже не замедление, а просто ограничение функционала. Видео попросту не грузятся.
Оставим в стороне сам факт блокировки - он небезоснователен. Но количество полезной информации, которой было накоплено на сайте за годы его, по сути, монопольного владения данной нишей - колоссальное. Поэтому, как бы там не было, приходится данную блокировку обходить.
Для этого есть несколько путей:
Задачи для начинающих Java программистов
Spring MVC vs Spring WebFlux. Что лучше? Объясняем на пингвинах
Существует множество способов реализации REST-API. Большой популярностью пользуется Spring MVC на основе блокирующих вызовов, но все чаще попадаются проекты, использующие WebFlux на неблокирующих вызовах. В этой статье разберемся, какой из этих двух фреймворков работает лучше.
Information
- Rating
- Does not participate
- Registered
- Activity