Pull to refresh
0
0
Send message

Основные принципы хорошего нейминга

Level of difficultyEasy
Reading time5 min
Views2.6K

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

Читать далее
Total votes 23: ↑17 and ↓6+16
Comments14

Книги, которые стоит почитать ИТ-архитекторам. Часть 2

Reading time4 min
Views4.4K

Привет, Хабр! Это Саша Бардаш, главный архитектор интеграционных платформ в МТС Диджитал. В прошлый раз я рассказывал о пяти книгах, которые стоит почитать начинающему ИТ-архитектору. Большое спасибо всем, кто читал. Были интересные комментарии на тему, какие еще книги почитать — кое-что из этого я добавил в свою новую подборку. Итак, под катом пять книг, которые будут интересны уже более опытным ИТ-архитекторам. Что ж, поехали!

Читать далее
Total votes 8: ↑6 and ↓2+9
Comments0

BPMN 2.0 универсальный подход при построении диаграмм

Level of difficultyEasy
Reading time6 min
Views7.1K

Я написал этот гайд для использования аналитиками в компании (мы интегратор решений 1С в медицине), как настольная шпаргалка и некий базовый «стандарт унификации» формируемых диаграмм данного типа.

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

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

Читать далее
Total votes 15: ↑13 and ↓2+13
Comments16

Что почитать по машинному обучению: подборка из 6 книг

Reading time4 min
Views8.4K

Привет, Хабр! Это Миша Степнов, руководитель центра R&D Big Data в МТС Диджитал. Машинное обучение и технологии искусственного интеллекта постоянно развиваются — так что специалистам этой сферы приходится за ними поспевать. Держать руку на пульсе помогают в том числе книги. Сегодня поделюсь подборкой из шести книг по машинному обучению, которые будут интересны начинающим (и не только) специалистам.

Читать далее
Total votes 15: ↑14 and ↓1+22
Comments1

Как начать читать на английском и не бросить на 3-й странице

Level of difficultyEasy
Reading time3 min
Views15K

У меня есть приятель. Он венгр, по профессиональной надобности учит русский. Когда мы познакомились, он гордо предъявил мне 1-ю книгу, которую начал читать на русском. Там была…  (барабанная дробь!) сказка про лисичку.

Сюжет я не помню, но слова, которые он перевел и выписал, навсегда остались в моей памяти – печка, колодец, метла, ведро и глаголы типа «затопить». Очень полезная лексика, не так ли?

Я не знаю, кто придумал, что взрослым людям, которые только начали учить язык, надо читать детские книги. Ну типа язык простой (царевич, лягушка, терем), и сюжет увлекательный – вам же очень хочется перечитать «Приключения Тома Сойера» в 30 лет, правда?

На самом деле, с детскими книжками придется изрядно помучиться – обычно довольно сложная грамматика, и куча слов, которые обычно учат на высоких уровнях. А польза от всех этих белочек и лягушек – сомнительная.

Некоторые отчаянные головы берутся сразу за Чарльза нашего Диккенса и Джейн Остин. Как будто с конца 19-го века американские, британские, австралийские авторы ничего достойного не написали. Сами носители языка считают Диккенса сложным автором, и понятно, таким языком уже никто не говорит.

ДИСКЛЕЙМЕР: все, что я скажу дальше, написано для тех, кто однажды начал читать в оригинале, перевел 1-ю страницу и бесславно дезертировал. Если вы получаете удовольствие от английской классики, ничего полезного из этого поста вы не узнаете.

А что читать, если

...вы только начали учить язык

Прогулите Graded Readers, и вам откроется новый увлекательный мир. Graded Readers – это такие тоненькие книжки, специально для тех, кто только начинает учить язык. Они называются graded, потому что поделены на уровни.

Читать далее
Total votes 15: ↑13 and ↓2+13
Comments62

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

Reading time53 min
Views153K


Я провел в изучении 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

KeyDB как [потенциальная] замена Redis

Reading time6 min
Views37K
На хабре не нашлось обзоров «более быстрой альтернативы Redis» — KeyDB. Получив достаточно свежий опыт его использования, хочется восполнить этот пробел.



Предыстория достаточно банальна: однажды с большим наплывом трафика была зафиксирована значительная деградация производительности приложения (а именно — времени ответа). На тот момент, к сожалению, не удалось провести нормальную диагностику происходящего, поэтому впоследствии запланировали ряд нагрузочных тестирований. После их проведения удалось обнаружить узкое место, коим стал кэш базы данных в Redis. Как это часто бывает, проблему нельзя было решить сию секунду и правильным путём — силами разработчиков (изменением логики работы). Поэтому включилось любопытство и желание побороть ситуацию обходным путём. Так и появилась эта статья.
Читать дальше →
Total votes 64: ↑62 and ↓2+76
Comments41

Свой S3-server: что делать, если ваши десятки петабайт уже не лезут в коробочные объектные хранилища

Level of difficultyMedium
Reading time24 min
Views27K

В 2024 году уже незачем рассказывать об S3-интерфейсе и сравнивать его с другими вариантами организации объектного хранилища. Вот и мы в Ozon, конечно, предоставляем такое платформенное решение широкому спектру внутренних потребителей. От сервисов, которые хранят картинки товаров для каталога, до бэкапов баз данных. От собственных внутренних разработок, до open-source-решений, таких как Gitlab и Thanos.

Пока у вас десятки терабайт и сотни RPS, вас устраивают такие решения, как MinIO. Но по мере роста объёмов и запросов приходится смотреть в сторону таких решений, как Ceph с RGW (RADOS Gateway / Object Gateway). Ну, а когда у вас 3 дата-центра, десятки петабайт данных, миллиарды объектов и десятки тысяч запросов в секунду — в таких условиях и у RGW начинаются проблемы.

Эта история началась с того, что и мы с проблемами масштабирования столкнулись. Под хабракатом вы узнаете, как мы прошли через отрицание проблемы, гнев на Ceph, торг с CTO и разработку собственного решения. Как выбирали технологии, на какие грабли наступили, и что в итоге получилось.

Читать далее
Total votes 130: ↑130 and ↓0+146
Comments28

CSI и S3 в Kubernetes. Каждому свое: Ceph, Minio, TopоLVM

Reading time5 min
Views9.3K

Без хранилища данных не заработает ни одно stateful-приложение, это известно всем. А вот как и какое хранилище развернуть - это вопрос к специалистам. Сегодня расскажем, как мы “готовим” Ceph и в каких случаях используем TopоLVM и Minio.

Ceph, Minio, TopоLVM
Total votes 4: ↑4 and ↓0+4
Comments1

Зачем и как хранить объекты на примере MinIO

Reading time13 min
Views65K

Наша биг дата проанализировала Telegram-чаты, форумы и разговоры в кулуарах IT-мероприятий и пометила объектные хранилища как инструмент, который ещё не все осмеливаются использовать в своих проектах. Хочу поделиться с вами своим опытом в формате статьи-воркшопа. Если вы пока не знакомы с этой технологией и паттернами её применения, надеюсь, эта статья поможет вам начать использовать её в своих проектах. 

Начать хранить файлы
Total votes 18: ↑16 and ↓2+24
Comments8

REDIS: такой простой и такой сложный

Level of difficultyMedium
Reading time10 min
Views20K

Меня зовут Андрей Комягин, я СТО компании STM Labs. Мы занимаемся разработкой очень больших распределённых высоконагруженных систем для различных отраслей и в своей работе широко используем open-source решения, в том числе СУБД Redis. Недавно я подробно рассказывал об этой системе на конференции Saint HighLoad++, а теперь с удовольствием поделюсь основной информацией с читателями Хабра. Итак, поехали.

Читать далее
Total votes 48: ↑47 and ↓1+57
Comments28

Книжная полка DevOps-инженера

Level of difficultyEasy
Reading time9 min
Views17K

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

Я Сергей Задорожный, руководитель отдела платформенных решений банка «Центр-инвест» и один из авторов курса «DevOps для эксплуатации и разработки» от Яндекс Практикума. Раньше занимался написанием бэкендов на Java и Kotlin, потом занялся архитектурой, выстраиванием процессов, а сейчас заношу DevOps-практики в финтех-энтерпрайз.

Читать далее
Total votes 22: ↑22 and ↓0+26
Comments4

Как не потерять пространство в Notion после блокировки в России 9 сентября

Reading time2 min
Views18K

9 сентября Notion ограничит доступ к приложению из России: они обязаны это сделать, чтобы соблюсти новые законы США. Я почитал документацию и ответы техподдержки пользователям — рассказываю, что понял.

Если верить Notion, пользователей банить не будут. Приложение не будет открываться из России, но вы восстановите доступ, как только окажетесь в другой стране. Это значит, что, скорее всего, Notion можно будет использовать из России через VPN.

Читать далее
Total votes 6: ↑6 and ↓0+9
Comments10

Искусство ETL. Пишем собственный движок SQL на Spark [часть 7]

Level of difficultyMedium
Reading time10 min
Views2.2K
В предыдущих сериях (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 кода, наработанного за время эксплуатации инструмента в продакшене, и становится заметно, что значительная часть скриптов на разных проектах совпадает, и из раза в раз повторяется. Логично было бы вынести все эти совпадающие куски в библиотеку, чтобы держать в одном месте, да и вызывать с какими надо параметрами, когда надо. Вот прям как на примере выше.

Читать дальше →
Total votes 2: ↑2 and ↓0+6
Comments1

Руководитель проектов: как говорить заказчику «нет», когда заказчик хочет слышать только «да»?

Level of difficultyMedium
Reading time9 min
Views15K

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

Однако есть один маленький нюанс: Руководитель проектов должен соблюдать границы проекта, он не волшебник. У него нет бесконечного бюджета и сроков, а значит, иногда придется спорить и отстаивать границы. А значит, говорить «НЕТ». Как это делать так, чтобы не разрушать отношения на проекте, в команде, на аккаунте, а, наоборот, их укреплять? Вот об этом и предлагаю поговорить.

Читать далее
Total votes 24: ↑22 and ↓2+21
Comments21

Деградация кода — это результат неправильной организации процессов

Reading time7 min
Views21K

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

На своей должности руководителя разработки я стал непосредственным свидетелем разницы между командой, которой предоставили мощь и… какой антоним у мощи? Они были не слабыми, а, скорее, немощными.

Силу команды постоянно нужно подстёгивать и стимулировать, сама по себе она не развивается.

Что я под этим подразумеваю? Давайте поговорим о том, как немощные организации влияют на техническую работу.

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

Я руководитель разработки, поэтому смотрю на это с точки зрения технаря. Немногие книги о совершенствовании процессов рассматривают углублённо рассматривают улучшение процессов разработки.

Давайте изучим это на примере деградации кода.
Читать дальше →
Total votes 31: ↑28 and ↓3+36
Comments31

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

Level of difficultyEasy
Reading time10 min
Views46K

Недавно в комментариях к тексту про построение личной базы знаний на Хабре читатель отметил, что в таких статьях не хватает примеров работы с техническими данными. Давайте это исправим. Мы спросили у инженеров YADRO и технарей из сообщества «Цеттелькастен и Персональные базы знаний», как и для чего они ведут свои заметки.  Герои статьи используют Obsidian и Emacs, а также личные Telegram-каналы, чтобы изучать новые языки программирования, проходить технические собеседования и вести рабочие записи.

Для тех, кто пока не знаком с методом социолога Никласа Лумана, в начале статьи рассказали об истории Цеттелькастена и показали, как выглядело хранилище данных полвека назад. Короб с ящиками и карточками стал прототипом современных систем для ведения заметок, которыми пользуются инженеры. 

Читать далее
Total votes 45: ↑42 and ↓3+55
Comments37

Раскочегариваем YouTube без установки софта на конечные устройства

Level of difficultyMedium
Reading time3 min
Views200K

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

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

Для этого есть несколько путей:

Читать далее
Total votes 60: ↑50 and ↓10+53
Comments291

Задачи для начинающих Java программистов

Reading time4 min
Views393K
В продолжение моего поста "Начинающим Java программистам" публикую очередную свою шпаргалку, а именно список задач, которые я обычно даю новичкам. Опытным разработчикам они покажутся тривиальными, а только начинающим изучать Java, причём самостоятельно, надеюсь будут в самый раз. Так же если Вы используете какие-то ещё задачи для обучения, то поделитесь ими, пожалуйста.:) Так как мне, иногда, как-то не по себе в ...-цатый раз рассказывать стажёрам одну и ту же задачу — пусть даже они её слышат впервые:)
Читать дальше →
Total votes 44: ↑39 and ↓5+34
Comments50

Spring MVC vs Spring WebFlux. Что лучше? Объясняем на пингвинах

Reading time8 min
Views35K

Существует множество способов реализации REST-API. Большой популярностью пользуется Spring MVC на основе блокирующих вызовов, но все чаще попадаются проекты, использующие WebFlux на неблокирующих вызовах. В этой статье разберемся, какой из этих двух фреймворков работает лучше. 

Читать далее
Total votes 10: ↑10 and ↓0+10
Comments8
1
23 ...

Information

Rating
Does not participate
Registered
Activity