Лекции по разработке СУБД от ШАД
Лекции рассчитаны на тех, кто уже знаком с разработкой СУБД и хочет глубже разобраться в том как работают транзакции, хранение данных, выполнение запросов и, конечно же, оптимизатор SQL. В нескольких последних лекциях разработчики из команд YDB и YTsaurus рассказывают интересные факты из своей практики.
Плейлист на YouTube: https://www.youtube.com/playlist?list=PL6Wui14DvQPwuUE1tijVmiBSl2LCLH3ru
Плейлист на ВК: https://vkvideo.ru/playlist/-84793390_11
Лекции рассчитаны на тех, кто уже знаком с разработкой СУБД и хочет глубже разобраться в том как работают транзакции, хранение данных, выполнение запросов и, конечно же, оптимизатор SQL. В нескольких последних лекциях разработчики из команд YDB и YTsaurus рассказывают интересные факты из своей практики.
Плейлист на YouTube: https://www.youtube.com/playlist?list=PL6Wui14DvQPwuUE1tijVmiBSl2LCLH3ru
Плейлист на ВК: https://vkvideo.ru/playlist/-84793390_11
❤4👍3🔥3👎1
MIT OCW - 6.828: Operating System Engineering
Легендарный и поистине величайший курс. В этом курсе вы сами напишите ядро операционной системы с нуля, на основе заготовки xv6 (учебная UNIX-подобная ОС) и начнете добавлять туда свои системные вызовы, планировщики, драйверы. Курс старый, 2012 года, но информация там не сильно устарела, если вообще устарела. Ядра ОС меняются медленно, а принципы — почти никогда. Вся работа идет на C и небольшом количестве ассемблера. Домашние задания там занимают недели. Но если вы доходите до конца — вы становитесь тем человеком, который может сказать: «Я написал свое ядро» (а затем подать заказ клиенту).
Лабораторные работы выложены полностью. Вам понадобится эмулятор QEMU и много-много времени.
Также есть 6.1810: Operating System Engineering (современная версия).
Обновленный курс посвященный разработке своего ядра ОС. Также ОС xv6, но добавляется RISC-V. Отдельные лабораторные задания включают расширение операционной системы xv6, например, для поддержки сложных функций виртуальной памяти и сетевого взаимодействия.
Она дружелюбнее к новичкам. Но «дружелюбнее» в контексте MIT означает, что вы будете рыдать в подушку только раз в неделю, а не каждый день.
Легендарный и поистине величайший курс. В этом курсе вы сами напишите ядро операционной системы с нуля, на основе заготовки xv6 (учебная UNIX-подобная ОС) и начнете добавлять туда свои системные вызовы, планировщики, драйверы. Курс старый, 2012 года, но информация там не сильно устарела, если вообще устарела. Ядра ОС меняются медленно, а принципы — почти никогда. Вся работа идет на C и небольшом количестве ассемблера. Домашние задания там занимают недели. Но если вы доходите до конца — вы становитесь тем человеком, который может сказать: «Я написал свое ядро» (а затем подать заказ клиенту).
Лабораторные работы выложены полностью. Вам понадобится эмулятор QEMU и много-много времени.
Также есть 6.1810: Operating System Engineering (современная версия).
Обновленный курс посвященный разработке своего ядра ОС. Также ОС xv6, но добавляется RISC-V. Отдельные лабораторные задания включают расширение операционной системы xv6, например, для поддержки сложных функций виртуальной памяти и сетевого взаимодействия.
Она дружелюбнее к новичкам. Но «дружелюбнее» в контексте MIT означает, что вы будете рыдать в подушку только раз в неделю, а не каждый день.
MIT OpenCourseWare
Operating System Engineering | Electrical Engineering and Computer Science | MIT OpenCourseWare
This course studies fundamental design and implementation ideas in the engineering of operating systems. Lectures are based on a study of UNIX and research papers. Topics include virtual memory, threads, context switches, kernels, interrupts, system calls…
❤5🔥4🤯3
https://github.com/Hexlet/ru-test-assignments
Список тестовых заданий от компаний для прокачки.
Если вам нужно подготовиться к тестовым или собеседованию, вы можете воспользоваться этими заданиями. Ну или просто прокачать hard skills.
Также, по моему мнению, можно попытаться развить навыки кодирования без ИИ, сделав всё самостоятельно. Это действительно полезно для выработки инженерного мышления.
Список тестовых заданий от компаний для прокачки.
Если вам нужно подготовиться к тестовым или собеседованию, вы можете воспользоваться этими заданиями. Ну или просто прокачать hard skills.
Также, по моему мнению, можно попытаться развить навыки кодирования без ИИ, сделав всё самостоятельно. Это действительно полезно для выработки инженерного мышления.
1👍4❤2👎1🔥1
Всем привет! Хочу поделиться своим опенсорс проектом - nadzoring.
Этот проект спроектирован так, что его можно использовать и как утилиту, и как библиотеку. Проект полностью типизирован (весь код проходит проверку mypy/ruff без варнингов) и документирован.
Суть проекта - анализ сети. Базовый анализ сети, ARP, DNS, секурити.
nadzoring спроектирован с учетом ai-friendly, так что использование AI-агентов для использования библиотеки будет удобным.
установка:
Ссылка на гитхаб - https://github.com/alexeev-prog/nadzoring
Документация - https://alexeev-prog.github.io/nadzoring/ (есть ИИ-чат)
Буду рад звездам на гитхабе!
Этот проект спроектирован так, что его можно использовать и как утилиту, и как библиотеку. Проект полностью типизирован (весь код проходит проверку mypy/ruff без варнингов) и документирован.
Суть проекта - анализ сети. Базовый анализ сети, ARP, DNS, секурити.
nadzoring спроектирован с учетом ai-friendly, так что использование AI-агентов для использования библиотеки будет удобным.
установка:
pip install nadzoring
Ссылка на гитхаб - https://github.com/alexeev-prog/nadzoring
Документация - https://alexeev-prog.github.io/nadzoring/ (есть ИИ-чат)
Буду рад звездам на гитхабе!
GitHub
GitHub - alexeev-prog/nadzoring: An open source tool for detecting website blocks, downdetecting, and network analysis
An open source tool for detecting website blocks, downdetecting, and network analysis - alexeev-prog/nadzoring
1❤6👍2👎1🔥1
https://github.com/chrislgarry/Apollo-11
Оцифрованный исходный код бортового управляющего компьютера Аполлон 11 (AGC) для командного модуля (Comanche055) и лунного модуля (Luminary099)!
Основано на сканах http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/ и http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/
Оцифрованный исходный код бортового управляющего компьютера Аполлон 11 (AGC) для командного модуля (Comanche055) и лунного модуля (Luminary099)!
Основано на сканах http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/ и http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/
GitHub
GitHub - chrislgarry/Apollo-11: Original Apollo 11 Guidance Computer (AGC) source code for the command and lunar modules.
Original Apollo 11 Guidance Computer (AGC) source code for the command and lunar modules. - chrislgarry/Apollo-11
🔥6👍3❤1👎1 1
TelegramEx – это Elixir-библиотека для создания Telegram-ботов с декларативным macro-based API, которая позволяет описывать логику бота через pipeline-паттерн, используя иммутабельные цепочки вызовов, pattern matching и привычные идиомы Elixir для обработки сообщений, отправки медиа и управления состоянием диалога.
Библиотека создана моим другом.
Библиотека создана моим другом.
#HEX • IT
TelegramEx – это Elixir-библиотека для создания Telegram-ботов с декларативным macro-based API, которая позволяет описывать логику бота через pipeline-паттерн, используя иммутабельные цепочки вызовов, pattern matching и привычные идиомы Elixir для обработки…
(мой друг будет рад плюсикам на гитхабе, так как проект интересный, еще и Elixir)
❤🔥3❤2👍1🔥1 1
Последние полгода стало модно создавать новые и переводить старые проекты на рельсы AI-First (или AI-Friendly) стандарта. Уже появляются проекты, которые декларируются как «designed for AI to write». Например, AIR — AI-First веб-фреймворк на Python.
В этой статье я хочу рассказать о том, как сделать свой проект дружелюбным для ИИ и тем самым повысить его юзабилити и помочь пользователям быстрее начать им пользоваться. ИИ-агенты стали новыми потребителями вашего кода. У них своя экономика токенов, свои требования к проекту и его документации. Хорошая новость в том, что настроить все можно за несколько часов — будь то забытый корпоративный микросервис или новый opensource-проект.
Это может пригодиться как создателям открытых проектов, так и разработчикам внутренних корпоративных проектов. Итак, начнем с матчасти.
*уворачиваюсь от помидора из за слова ИИ в статье*
https://habr.com/ru/companies/ru_mts/articles/1027642/
В этой статье я хочу рассказать о том, как сделать свой проект дружелюбным для ИИ и тем самым повысить его юзабилити и помочь пользователям быстрее начать им пользоваться. ИИ-агенты стали новыми потребителями вашего кода. У них своя экономика токенов, свои требования к проекту и его документации. Хорошая новость в том, что настроить все можно за несколько часов — будь то забытый корпоративный микросервис или новый opensource-проект.
Это может пригодиться как создателям открытых проектов, так и разработчикам внутренних корпоративных проектов. Итак, начнем с матчасти.
https://habr.com/ru/companies/ru_mts/articles/1027642/
Хабр
AI-friendly и AI-first: как адаптировать ИТ-проекты под эру LLM
Привет, Хабр! Последние полгода стало модно создавать новые и переводить старые проекты на рельсы AI-First (или AI-Friendly) стандарта. Уже появляются проекты, которые декларируются как «designed for...
👍4👎3😁1🤣1
Как работает HEX-редактор?
Как вы знаете, он позволяет открывать бинарные (двоичные) файлы. hex-редактор отображает данные в виде матрицы.
Первая часть - это адрес, offset, смещение в байтах от начала файла. Первая строчка с нуля, каждая следующая прибавляет ширину дампа - количество байт в одной строке. Байт - это два hex-числа. Десятичный адрес вроде 00000016 ничего не говорит о границах, а hex-адрес 00000010 сразу показывает, что мы пересекли границу 16 байт — аккурат строка дампа.
Вторая часть это сами байты. Байты в основном строятся по 16 (но может быть и другое число степени двойки) в колонку. Байты группируются по четыре для читаемости.
И третья часть - ASCII-панель, те же байты, но интерпретированные как символы (диапазон ASCII от 0x20 до 0x7E, от пробела до тильды). Если символ непечатаемый - пишется обычно точка.
По факту все это - один и тот же набор байтов в трех разных представлениях.
Как вы знаете, он позволяет открывать бинарные (двоичные) файлы. hex-редактор отображает данные в виде матрицы.
Первая часть - это адрес, offset, смещение в байтах от начала файла. Первая строчка с нуля, каждая следующая прибавляет ширину дампа - количество байт в одной строке. Байт - это два hex-числа. Десятичный адрес вроде 00000016 ничего не говорит о границах, а hex-адрес 00000010 сразу показывает, что мы пересекли границу 16 байт — аккурат строка дампа.
Вторая часть это сами байты. Байты в основном строятся по 16 (но может быть и другое число степени двойки) в колонку. Байты группируются по четыре для читаемости.
И третья часть - ASCII-панель, те же байты, но интерпретированные как символы (диапазон ASCII от 0x20 до 0x7E, от пробела до тильды). Если символ непечатаемый - пишется обычно точка.
По факту все это - один и тот же набор байтов в трех разных представлениях.
❤7👍3🥱2🔥1
Если твой ответ начинается с "Вот что мне сказал Claude:" или 800 слов неотредактированной простыни от ChatGPT - поздравляю: ты только что доказал, что твой мозг - просто прокладка. Дарвин бы гордился. Пожалуйста, не размножайся.
https://habr.com/ru/articles/1038534/
https://habr.com/ru/articles/1038534/
❤6👍3🌭1
В жизни каждого разработчика иногда приходится рассматривать бинарные файлы через специальные HEX-редакторы.
Мы открываем его, видим три колонки цифр и букв, и кажется что все предельно ясно-понятно. Но почему адреса считаются шестнадцатеричными, что такое ниббл и зачем он вообще нужен? В этой статье мы не просто напишем свой hex-редактор на Python — мы разберем, как он устроен, от битового представления до цветовой подсветки. Выясним, чем подсветка по нибблам отличается от подсветки по категориям байтов, и почему градиенты в hex-дампе — это не просто украшение, а рабочий инструмент.
Также мы изучим, какие практики и паттерны используются при написании редактора — от mmap для чтения файла до интерпретации байтов.
Будет и код, и архитектура, и результат, и практика.
https://habr.com/ru/companies/timeweb/articles/1034646/
https://habr.com/ru/companies/timeweb/articles/1034646/
https://habr.com/ru/companies/timeweb/articles/1034646/
Мы открываем его, видим три колонки цифр и букв, и кажется что все предельно ясно-понятно. Но почему адреса считаются шестнадцатеричными, что такое ниббл и зачем он вообще нужен? В этой статье мы не просто напишем свой hex-редактор на Python — мы разберем, как он устроен, от битового представления до цветовой подсветки. Выясним, чем подсветка по нибблам отличается от подсветки по категориям байтов, и почему градиенты в hex-дампе — это не просто украшение, а рабочий инструмент.
Также мы изучим, какие практики и паттерны используются при написании редактора — от mmap для чтения файла до интерпретации байтов.
Будет и код, и архитектура, и результат, и практика.
https://habr.com/ru/companies/timeweb/articles/1034646/
https://habr.com/ru/companies/timeweb/articles/1034646/
https://habr.com/ru/companies/timeweb/articles/1034646/
❤5🔥2✍1👍1👎1
Обычно я пишу о опенсорсе и разработке софта, но сегодня хочу рассказать о своем товарище, с которым познакомился на экскурсии по дата-центру Selectel. Даня работает там инженером, но речь пойдет о том, что делает после работы — конечно, продолжает инженерить (но уже, как говорят таксисты, для души).
На статью его сподвигнуть не смог, все еще думаю, что нужно — хотя бы просто с технической документацией. Но всю заработанную карму с этой обзорной статьи перечислю ему в виде проставки пива — расспросил о ключнице на микроте, увлажнителе с необычными кулерами и холодильнике в циске. Кому интересно — добро пожаловать под кат!
https://habr.com/ru/articles/1041370/
На статью его сподвигнуть не смог, все еще думаю, что нужно — хотя бы просто с технической документацией. Но всю заработанную карму с этой обзорной статьи перечислю ему в виде проставки пива — расспросил о ключнице на микроте, увлажнителе с необычными кулерами и холодильнике в циске. Кому интересно — добро пожаловать под кат!
https://habr.com/ru/articles/1041370/
👍4❤3👎1🔥1
#HEX • IT
В жизни каждого разработчика иногда приходится рассматривать бинарные файлы через специальные HEX-редакторы. Мы открываем его, видим три колонки цифр и букв, и кажется что все предельно ясно-понятно. Но почему адреса считаются шестнадцатеричными, что такое…
Буду рад фидбеку и плюсикам, старался сделать объемной и затронуть много тем.
Следующая статья будет про один очень интересный алгоритм - hyperloglog, с реализацией на си и разбором
Следующая статья будет про один очень интересный алгоритм - hyperloglog, с реализацией на си и разбором
❤🔥7❤1
Я начал изучать Elixir, и вчера вышел релиз 1.20.0: https://elixir-lang.org/blog/2026/06/03/elixir-v1-20-0-released/
Меня весьма позабавило это заявление
Сделать систему типов одновременно sound, gradual и developer-friendly - это Святой Грааль, который в теории почти невозможен.
Sound (надёжная, корректная, если тайпчекер не выдал ошибок, значит не будет ошибок в рантайме), Gradual (постепенная типизация, можно не сразу типизировать весь код) и Developer-friendly (удобная для разработчика)
Вроде бы и скептически можно относиться, но с другой стороны, создатели Elixir - реальные образованные инженеры.
Интересно, что может получиться. Судя по всему, готовы резать фичи, или достичь Soundness + Gradualness ценой частичной Developer-friendly
Меня весьма позабавило это заявление
Сделать систему типов одновременно sound, gradual и developer-friendly - это Святой Грааль, который в теории почти невозможен.
Sound (надёжная, корректная, если тайпчекер не выдал ошибок, значит не будет ошибок в рантайме), Gradual (постепенная типизация, можно не сразу типизировать весь код) и Developer-friendly (удобная для разработчика)
Вроде бы и скептически можно относиться, но с другой стороны, создатели Elixir - реальные образованные инженеры.
Интересно, что может получиться. Судя по всему, готовы резать фичи, или достичь Soundness + Gradualness ценой частичной Developer-friendly
🔥4❤3👍1
Вы можете победить бинарный поиск
В этой статье речь пойдёт не просто об очередном алгоритме, а о том, как можно обойти классический бинарный поиск. Казалось бы, что может быть эффективнее старого доброго деления массива пополам для нахождения значения в отсортированных данных? Однако можно пойти дальше. В этой статье будет рассказываться о самодельном алгоритме «SIMD Quad» - квадратичном поиске.
Идея возникла из необходимости быстро искать 16-битные целые числа в массивах размером до 4096 элементов — именно такие структуры лежат в основе популярного формата Roaring Bitmap. Вместо того чтобы на каждом шаге сравнивать искомый элемент только с одной серединой интервала, авторский алгоритм использует две ключевые аппаратные особенности современных процессоров. Во-первых, это SIMD-инструкции, позволяющие за раз сравнить до 16 элементов. Во-вторых, это распараллеливание работы с памятью, которое даёт возможность безболезненно делить массив не на две, а сразу на четыре части. Так родился гибрид, который сначала выполняет учетверённый поиск по блокам, а затем находит нужный элемент с помощью векторных инструкций. Давайте разберёмся, как это работает и почему такой подход действительно позволяет превзойти бинарный поиск.
https://habr.com/ru/companies/timeweb/articles/1036538/
В этой статье речь пойдёт не просто об очередном алгоритме, а о том, как можно обойти классический бинарный поиск. Казалось бы, что может быть эффективнее старого доброго деления массива пополам для нахождения значения в отсортированных данных? Однако можно пойти дальше. В этой статье будет рассказываться о самодельном алгоритме «SIMD Quad» - квадратичном поиске.
Идея возникла из необходимости быстро искать 16-битные целые числа в массивах размером до 4096 элементов — именно такие структуры лежат в основе популярного формата Roaring Bitmap. Вместо того чтобы на каждом шаге сравнивать искомый элемент только с одной серединой интервала, авторский алгоритм использует две ключевые аппаратные особенности современных процессоров. Во-первых, это SIMD-инструкции, позволяющие за раз сравнить до 16 элементов. Во-вторых, это распараллеливание работы с памятью, которое даёт возможность безболезненно делить массив не на две, а сразу на четыре части. Так родился гибрид, который сначала выполняет учетверённый поиск по блокам, а затем находит нужный элемент с помощью векторных инструкций. Давайте разберёмся, как это работает и почему такой подход действительно позволяет превзойти бинарный поиск.
https://habr.com/ru/companies/timeweb/articles/1036538/
❤4👍4🔥3
HyperLogLog: как найти уникальные значения в терабайте данных, не храня их
Представим задачу: хайлоад-сервис гонит поток данных — логи, IP-адреса, ID пользователей, миллиарды записей в сутки. Ваша задача — посчитать количество уникальных посетителей за неделю.
Первым решением может показаться завести HashSet и кидать туда ключи, а в конце посмотреть размер. Решение неплохое, но когда речь заходит о миллиардах записей — память будет слабым местом. Один IP-адрес (4 байта) как ключ в HashSet потянет за собой накладные расходы на ноды, указатели и хеши. На практике один элемент сжирает не меньше 50–100 байт. Поток в миллиард уникальных записей потребует под сотню гигабайт оперативной памяти. Это дорого, а если инстансов десять — то просто нереально.
Но существует алгоритм, который способен решить эту задачу примерно в 1.5 килобайта памяти с погрешностью около 2%? Без хранения самих данных и гигантских кластеров. Достаточно одного прохода по потоку и пары битовых трюков — именно так и работает HyperLogLog, алгоритм родом из математической статистики, который перевернул подход к подсчёту уникальности в Big Data.
HyperLogLog используют в Redis, BigQuery, ClickHouse, Presto. В этой статье мы разберем и реализуем этот алгоритм на C, а также узнаем его предысторию.
https://habr.com/ru/companies/timeweb/articles/1046345/
https://habr.com/ru/companies/timeweb/articles/1046345/
https://habr.com/ru/companies/timeweb/articles/1046345/
Представим задачу: хайлоад-сервис гонит поток данных — логи, IP-адреса, ID пользователей, миллиарды записей в сутки. Ваша задача — посчитать количество уникальных посетителей за неделю.
Первым решением может показаться завести HashSet и кидать туда ключи, а в конце посмотреть размер. Решение неплохое, но когда речь заходит о миллиардах записей — память будет слабым местом. Один IP-адрес (4 байта) как ключ в HashSet потянет за собой накладные расходы на ноды, указатели и хеши. На практике один элемент сжирает не меньше 50–100 байт. Поток в миллиард уникальных записей потребует под сотню гигабайт оперативной памяти. Это дорого, а если инстансов десять — то просто нереально.
Но существует алгоритм, который способен решить эту задачу примерно в 1.5 килобайта памяти с погрешностью около 2%? Без хранения самих данных и гигантских кластеров. Достаточно одного прохода по потоку и пары битовых трюков — именно так и работает HyperLogLog, алгоритм родом из математической статистики, который перевернул подход к подсчёту уникальности в Big Data.
HyperLogLog используют в Redis, BigQuery, ClickHouse, Presto. В этой статье мы разберем и реализуем этот алгоритм на C, а также узнаем его предысторию.
https://habr.com/ru/companies/timeweb/articles/1046345/
https://habr.com/ru/companies/timeweb/articles/1046345/
https://habr.com/ru/companies/timeweb/articles/1046345/
Хабр
HyperLogLog: как найти уникальные значения в терабайте данных, не храня их
Представим задачу: хайлоад-сервис гонит поток данных — логи, IP-адреса, ID пользователей, миллиарды записей в сутки. Ваша задача — посчитать количество уникальных посетителей за неделю. Первым...
❤5👍3🔥2
#HEX • IT
HyperLogLog: как найти уникальные значения в терабайте данных, не храня их Представим задачу: хайлоад-сервис гонит поток данных — логи, IP-адреса, ID пользователей, миллиарды записей в сутки. Ваша задача — посчитать количество уникальных посетителей за неделю.…
Планирую изучать дальше тему вероятностных алгоритмов.
Следующая тема - фильтр блума!
Следующая тема - фильтр блума!
🔥7❤3👍1
#HEX • IT
HyperLogLog: как найти уникальные значения в терабайте данных, не храня их Представим задачу: хайлоад-сервис гонит поток данных — логи, IP-адреса, ID пользователей, миллиарды записей в сутки. Ваша задача — посчитать количество уникальных посетителей за неделю.…
Ставьте плюсики, буду рад)
⚡5❤2🔥2