Обновить
-16
0
Василий@Soupbreak

погромист

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

Как сделать быстрый дашборд по таблице из 150 млн строк с помощью Yandex DataLens и ClickHouse

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

Привет! Меня зовут Роман Бунин, я BI-евангелист Yandex DataLens. При росте объёма данных, что неизбежно для любой компании, загрузка дашбордов может замедляться до десятков секунд. И чем больше появляется данных, тем медленнее становятся дашборды, особенно если вы хотите строить их по детализированным таблицам.Связка базы данных ClickHouse и BI-системы Yandex DataLens — популярное решение для анализа данных: эти инструменты нативно интегрируются и быстро работают вместе. В этой статье вместе с моим коллегой, архитектором Yandex Cloud Игорем Путятиным, покажем, как на основе таблицы из 150 миллионов строк построить максимально быстрый дашборд, и расскажем о технических ограничениях.

Читать далее

Проектирование алгоритма под рекомендательную систему

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

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

Читать далее

Выбор структур данных для самописного текстового редактора

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели12K

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

Ресурсы


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

  • Build Your Own Text Editor — наверно, самый фундаментальный пост о создании текстового редактора с нуля, который я видел. Это превосходный туториал на случай, если вы хотите начать писать собственный текстовый редактор. Стоит заметить, что в редакторе из этого туториала в качестве внутренней структуры для текста используется, по сути, вектор строк.
  • Text Editor: Data Structures — отличный обзор множества структур данных, которые можно использовать при реализации текстового редактора. (Спойлер: как минимум одна из них будет рассмотрена в моём посте)
  • Плейлист Ded (Text Editor) на YouTube — это потрясающая серия, в которой @tscoding фиксирует процесс создания с нуля текстового редактора. Эти видео стали для меня источником вдохновения.

Зачем?


Если в сети есть так много хороших ресурсов о создании собственного текстового редактора (не говоря уже о том, что уже существует множество феноменальных текстовых редакторов), то зачем я это пишу? На то есть несколько причин:

  1. Я хотел заняться проектом, непохожим ни на один свой прошлый.
  2. Я хотел создать инструмент, которым смогу пользоваться.
  3. Мне всегда хотелось глубже разобраться с созданием собственных структур данных.
Читать дальше →

Разделение контейнера зависимостей в ASP.NET Core

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

Разработчики AspNet Core (здесь и далее речь идёт об AspNet актуальных версий: 6 и 7, но может быть применимо и к более ранним версиям) хорошо знают, что механизм Dependency Injection встроен в этот фреймворк изначально и пронизывает его насквозь. И это здорово упрощает работу с зависимостями и сразу вводит разработку в идеологически правильное русло. Более того, в состав самого AspNet входит вполне приличный дефолтный DI-контейнер разработки Microsoft, что позволяет отказаться от использования сторонних решений. Во всяком случае, при отсутствии совсем уж специфичных требований.

Но иногда такие требования существуют...

React и Typescript: Создание динамического компонента на примере кнопки

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

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

Читать далее

ClickHouse: полезные лайфхаки

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели53K

Я начала пользоваться ClickHouse до того, как это стало мэйнстримом: первый раз я столкнулась c этой базой данных лет 8 назад. C тех пор я уверена, что это лучшая DB для аналитики. Большинство аналитиков, которых я знаю, в восторге от ClickHouse (иногда чтобы проникнуться, требуется немного времени: разобраться и привыкнуть к синтаксису).

В этой статье я расскажу что такое ClickHouse и почему я считаю его идеально подходящим мощным инструментом для аналитики. А также поделюсь tips & tricks из моего опыта. Поехали.

Поехали

Оптимизация производительности запросов в ClickHouse: как ускорить неускоряемое

Время на прочтение16 мин
Охват и читатели18K

Привет, Хабр! Меня зовут Максим Кита, я разработчик баз данных, специализируюсь на анализе, планировании и выполнении запросов, а также на оптимизации производительности.

Я расскажу о высокоуровневой архитектуре ClickHouse, CI/CD, тестировании производительности, интроспекции, абстракциях и алгоритмах и выборе библиотек для высокопроизводительных приложений. Поделюсь ниндзя-техниками, которые помогут ускорить ваши системы. Вы сможете попробовать эти советы и практики на своем проекте и оценить насколько они полезны.

Читать далее

Трейсим .NET микросервисы через OpenTelemetry

Уровень сложностиПростой
Время на прочтение16 мин
Охват и читатели31K

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

У Uber - тысячи микросервисов. А у Netflix - несколько тысяч

В каком сервисе возникла ошибка? Сервис упал или просто ошибка сети? Что за ошибка возникла?

Стоп!
Рим не за один день был построен

Поэтому начнем с малого и подключим трейсинг к обычной микросервисной системе на ASP.NET Core.

Поможет нам в этом OpenTelemetry

Читать далее

Система для менеджера V 1.0. Собираем стек и структуру

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели5.6K

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

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

несколько сервисов для планирования и мониторинга задач;

сервисы для построения схем (процессы, пользовательские пути, структура миграции данных и тд);

трекеры времени;

сервисы по аналитике;

инструменты для составления списков.

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

Поэтому я загорелся идеей сделать систему, которая облегчит работу.

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

Как я подошел к идее?

Cмарт-контракт. Solidity + Ganache

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

В данной статье мы познакомимся с тем, как задеплоить очень простой смарт-контракт на локальный блокчейн Ganache. После развёртывания смарт-контракта, мы научимся взаимодействовать с ним путём отправки транзакций в его адрес. Для простоты я буду использовать фреймворк Truffle, так как он облегчает деплой и взаимодействие со смарт-контрактом.

Читать далее

BaaS (Business as а Service) — новый виток в развитии IT-систем

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели21K

Привет, Хабр! Меня зовут Филипп Сенцов, я преподаю на курсе «Аналитик данных» в Яндекс Практикуме и работаю в «Альфа-Банке». Я техлид по аналитике в команде, отвечающей за инфраструктурную часть BaaS-платформы в банке. До этого я был техническим продактом в «СберТехе», развивал KeyCloak Sber Edition. А ещё раньше занимался интеграциями с системой ЕГАИС в «Магните».

В этой статье я расскажу, что значит понятие BaaS в нашем банке, как сложилась современная индустрия поставки IT-решений в виде сервиса, что её ждёт в будущем и как всё это связано с Open API.

Читать далее

Хватит решать проблемы, которых не существует

Уровень сложностиСредний
Время на прочтение3 мин
Охват и читатели12K

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

Читать далее

Тренды венчурной индустрии на примере стартапов Y Combinator и ФРИИ

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

Руководитель интернет-проектов Константин Берлинский написал колонку с анализом проектов, проинвестированных Y Combinator и ФРИИ. По результатам он сделал выводы о трендах, перспективах выхода российских компаний на внешние рынки, преимуществах и недостатках экосистемы стартапов.

Читать далее

Создание фоновых задач в .NET с запросом состояния запущенного таска

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели9.6K

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

Читать далее

Tinder ушёл… да здравствует $hyoo_match

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

Здравствуйте, меня зовут Дмитрий Карловский и недавно у меня случился тиндергейт. Но вот беда, Match Group уходит из России, забирая с собой Tinder. С чего же нам теперь кринжевать? Но, как известно, свято место пусто не бывает, так что я запилил свой дейтинг без геймификации и монетизации:

? Tinder ушёл... встречай  match.hyoo.ru - сервис знакомств, которому выгодно, чтобы ты нашёл себе пару и свалил в закат.
Никаких фейков, мёртвых душ, рекламы и вымогательства денег. Поделись с друзьями - пусть тоже найдут свою половинку ?

Далее будет небольшой обзор индустрии дейтинга и рассказ о том, чем $hyoo_match принципиально отличается от всего этого дерьма.

Найти, наконец, свою половинку

Масштабирование БД в высоконагруженных системах

Время на прочтение9 мин
Охват и читатели42K
На прошлом внутреннем митапе Pyrus мы говорили о современных распределенных хранилищах, а Максим Нальский, CEO и основатель Pyrus, поделился первым впечатлением от FoundationDB. В этой статье рассказываем о технических нюансах, с которыми сталкиваешься при выборе технологии для масштабирования хранения структурированных данных.

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

Оптимизация сборки мусора в высоконагруженном .NET сервисе

Время на прочтение16 мин
Охват и читатели36K
Ежедневно в сервисе Pyrus работают десятки тысяч сотрудников из нескольких тысяч организаций по всему миру. Отзывчивость сервиса (скорость обработки запросов) мы считаем важным конкурентным преимуществом, так как она напрямую влияет на впечатление пользователей. Ключевой метрикой для нас является «процент медленных запросов». Изучая ее поведение, мы заметили, что раз в минуту на серверах приложений возникают паузы длиной около 1000 мс. В эти промежутки сервер не отвечает и возникает очередь из нескольких десятков запросов. О поиске причин и устранении узких мест, вызванных сборкой мусора в приложении, пойдет речь в этой статье.


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

Своя СУБД за 3 недели. Нужно всего лишь каждый день немного времени…

Время на прочтение13 мин
Охват и читатели35K
Своя СУБД за 3 недели. Нужно всего-лишь каждый день немного времени уделять архитектуре; и всё остальное время вкалывать на результат, печатая и перепечатывая сотни строк кода.

По закону Мерфи, если есть более одного проекта на выбор — я возьмусь за самый сложный из предложенных. Так случилось и с последним заданием курса о системах управления базами данных (СУБД).

обложка /dropSQL

Дропнуть студентов

Как создать свою СУБД с нуля и не сойти с ума. Практическое пособие начинающему некроманту. Часть первая

Время на прочтение43 мин
Охват и читатели45K

Наступил Апокалипсис.

Нет, не стоит бежать запасаться банками с консервами и крышками отечественной бай-колы! Апокалипсис произошёл только в нашей фантазии и с определённой целью — чтобы проверить, а может ли человек, обладающий только книгами по теме и стандартной библиотекой языка, воссоздать инструмент, который будет служить ему верой и правдой?

Так родился учебный проект SicQL, реляционная СУБД, чей символ — сова — это олицетворение силы знаний и мудрости. Олицетворение тех знаний и той мудрости, которые мы получим, создав с нуля то, чем мы пользуемся каждый день, может, не осознавая всей сложности таких инструментов.

Приглашаю присоединиться к увлекательному путешествию!

Принять приглашение на борт

Динамические методы в .NET (часть 2)

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

В предыдущей статье я начал свой рассказ динамические методы.

Мы узнали, как создать простейший динамический метод, в общих чертах обсудили, как работает стековая машина и рассмотрели некоторые простейшие операции Common Intermediate Language, которые можно использовать при генерации методов в runtime, такие как работу с константами, математические и битовые операции, а также работу с аргументами методов и локальными переменными.

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

Кроме этого поговорим про динамические методы, привязанные к объектам, и рассмотрим возможность вызова одних динамических методов из других.

Читать далее

Информация

В рейтинге
Не участвует
Откуда
Белград, Белград, Сербия
Зарегистрирован
Активность

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

Бэкенд разработчик, Архитектор программного обеспечения
Ведущий
От 8 000 $
C#
.NET Core