Pull to refresh
17
Karma
0.2
Rating

Пользователь

Boson — разработка СУБД «с нуля» (часть II)

C++ *System Programming *Algorithms *Data storage *

В первой части статьи мы обсуждали разработку самого нижнего слоя СУБД Boson - CachedFileIO. Как упоминалось, статистика такого явления как Locality of Reference говорит о том, что в реальных приложениях ~95% запросов к данным локализованы в 10-15% базы данных. При этом среднее соотношение чтения/записи - 70%/30%. Это делает эффективным использование кэша (cache) работающего на основе алгоритма Least Recently Used (LRU). Реализовав его, мы получили 260%-600% прироста скорости чтения при 87%-97% cache hits.

Следующим после кэша слоем СУБД Boson является хранилище записей RecordFileIO. Это уже первый прообраз базы данных, который начинает приносить прикладную пользу. Сформулируем верхнеуровневую спецификацию требований:

Читать далее
Total votes 29: ↑28 and ↓1 +27
Views 3.2K
Comments 30

Путь и цель. Решение проблемы выбора

Brain

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

Читать далее
Total votes 14: ↑7 and ↓7 0
Views 2.3K
Comments 6

Интернет-цензура и обход блокировок: не время расслабляться

Information Security *Network technologies *Research and forecasts in IT *
Analytics

Disclaimer: практически всё описанное в статье, не является чем-то принципиально новым или инновационным - оно давно известно и придумано, используется в разных странах мира, реализовано в коде и описано в научных и технических публикациях, поэтому никакого ящика Пандоры я не открываю.

Нередко на Хабре в темах, посвященных блокировкам ресурсов встречаются забавные заявления, вида "Я настроил TLS-VPN, теперь будут смотреть что хочу и цензоры мой VPN не заблокируют", "Я использую SSH туннель, значит все ок, не забанят же они SSH целиком", и подобное. Что ж, давайте проанализируем опыт других стран и подумаем, как же оно может быть на самом деле.

Читать далее
Total votes 323: ↑318 and ↓5 +313
Views 59K
Comments 467

Интерфейсы и протоколы в IoT. Лекция первая

Wireless technologies *Manufacture and development of electronics *Smart House Electronics for beginners
Tutorial

В этом году меня в очередной раз позвали в Московский институт электроники и математики (МИЭМ) НИУ ВШЭ читать студентам магистратуры (четвёртый курс на наши деньги) департамента электронной инженерии курс «Обеспечение взаимодействия элементов системы IoT, интерфейсы и протоколы».

Когда-то давно я уже читал вводный курс по программированию микроконтроллеров в МИРЭА, от лекций которого остались любезно сделанные вузом видеозаписи (от семинаров не осталось ничего, увы), потом — курс по Интрнету вещей (там было сочетание микроконтроллеров, их программирования и введения в специфику IoT-систем) уже в МИЭМ НИУ ВШЭ, от которого, увы, тоже не осталось никаких публично доступных материалов.

В этот раз хочу исправиться — и выложить, не отходя от кассы, конспекты всех лекций. Объём курса заложен очень приличный — 60 академических часов, собранных в 14 групп занятий, с начала января и по середину июня.

Надеюсь, разные рассказываемые вещи будут полезны не только моим студентам (ребята, но вы же понимаете, что в тексте будет просто в силу формата сказано меньше, чем голосом на лекциях?), которым не надо писать конспекты лекций, но и всем желающим. Например, не далее как сегодня вступал на Хабре в статье про протоколы питания в USB-C в дискуссию «зачем они так сделали» — а в прошлый вторник рассказывал студентам, какие на самом деле соображения могут лежать в основе выбора того или иного решения, и как раз на примере эволюции питания в USB.

Итак, поехали.

Читать далее
Total votes 30: ↑29 and ↓1 +28
Views 4.6K
Comments 16

English Tenses — моё представление времён в английском языке

Learning languages
Tutorial

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

Сразу хочу отметить, что я не являюсь педагогом и у меня вообще нет никакого ни лингвистического, ни педагогического образования. Данной статьей я просто хочу поделиться своей диаграммой по изучению времен, возможно кому-то она будет полезной и поможет в понимании времен и того, как и когда использовать, то или иное время. Данная диаграмма будет поверхностной и не будет углубляться во все подробности языка (и так она получилась огромной), она не охватывает все многообразие времен и конструкций в английском. Уровень данной диаграммы А2-В1.

И сразу начну с диаграммы:

Читать далее
Total votes 19: ↑17 and ↓2 +15
Views 6.6K
Comments 32

Происхождение и эволюция аллокатора памяти в С

System Analysis and Design *C++ *Algorithms *C *
Tutorial

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

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

Читать далее
Total votes 104: ↑103 and ↓1 +102
Views 15K
Comments 31

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

Reading room Finance in IT

В июле 2021 года в моей жизни произошло два важных события: я переехал на Кипр и начал писать книгу про личные финансы и инвестиции. Естественно, в моей голове она представлялась будущей лучшей в мире книгой по теме (ну а иначе – зачем вообще садиться ее писать?).

Читать далее
Total votes 53: ↑36 and ↓17 +19
Views 8.2K
Comments 23

Boson — разработка СУБД «с нуля» (часть I)

C++ *System Programming *Algorithms *Data storage *

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

Каждый разработчик "кровавого" enterprise в своей работе использует СУБД (SQL/NoSQL) и меня всегда искренне интересовало как они устроены в самом сердце, на самом низком уровне. Почитав документацию и исходный код SQLite и MongoDB, про используемые в индексах и интерпретаторах запросов алгоритмы, осознал, что несмотря на широкую распространенность и некую привычность, системы управления базами данных (СУБД) - это сложные программные продукты, реализация которых не всем под силу. Отлично - как раз то, что мне надо. С мотивацией разобрались, перейдем к делу.

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

Читать далее
Total votes 88: ↑85 and ↓3 +82
Views 14K
Comments 60

Алгоритмы диапазонов C++20 — сортировка, множества, обновления C++23 и прочее

SkillFactory corporate blog Programming *C++ *Algorithms *
Review
Translation


Эта статья — третья и последняя в мини-серии об алгоритмах диапазонов. Мы рассмотрим некоторые алгоритмы сортировки, поиска и другие, а также познакомимся с готовящимися крутыми улучшениями этих алгоритмов в версии C++23. Поехали! Подробности — к старту курса по разработке на С++.

Читать дальше →
Total votes 5: ↑4 and ↓1 +3
Views 2.5K
Comments 8

Пройти LeetCode за год: экскурсия по сайту и roadmap

Programming *Algorithms *Studying in IT IT career Reading room
✏️ Technotext 2022

С наступающим наступившим, Хабр.

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

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

С сайтом несколько больно знакомиться, он отпугивает вездесущими приписками "premium", пользуясь славой ресурса для техсобесов продвигает функционал вроде списков компаний, где встречался вопрос n и симуляции интервью в компанию m, да и сам не особо стремится рассказать о себе, потому в нём зачастую и видно голый задачник с одной страницей "problems".

За всем этим теряется важный пункт – а можно ли использовать сайт не для механического зазубривания популярных вопрос-ответов, а для изучения/закрепления алгоритмов и структур данных? Можно. Но подход к этому нужно формировать самостоятельно.

Читать далее
Total votes 46: ↑45 and ↓1 +44
Views 32K
Comments 29

Алгоритмы диапазонов C++20 — 11 модифицирующих операций

SkillFactory corporate blog Programming *C++ *Algorithms *
Review
Translation


В предыдущей статье серии «Диапазоны» я рассмотрел основы и некоторые немодифицирующие операции. Сегодня пришло время таких алгоритмов, как transform, copy, generate, shuffle и многих других… даже rotate. Подробности — к старту курса по разработке на С++.


Прежде чем мы начнём


Ключевые наблюдения об алгоритмах std::ranges:

Читать дальше →
Total votes 7: ↑5 and ↓2 +3
Views 2.7K
Comments 1

Антирейтинг 2022

Reading room
Review


Эта статья написана по аналогии со статьей «Как не надо писать на Хабр: Антирейтинг 2017». Статьи взяты за 2022 год. Кроме отрицательных значений рейтинга, есть список по абсолютному количеству минусов (видимо, самые обсуждаемые темы).
«Вот найдется же нехороший, которому обязательно надо написать статью на Хабре, про то, что не следовало писать.» Один из комментариев

Читать дальше →
Total votes 26: ↑21 and ↓5 +16
Views 7.7K
Comments 3

Стрёмное собеседование в Яндекс

Programming *
Case
Recovery mode
Находит меня хеадхантерша из другой страны и предлагает попробовать пройти собеседование в Яндекс. Работы почти нет, зарплаты, судя по рассылкам, там большие. Немножко не тот профиль вообще, но в частности в требуемой теме полгода опыта есть. Сказала, что там задачи решать.

Интервьюер почти ничего не спросил, выдал ссылку на общий вебовский редактор, где первым заданием было написать структуру односвязного списка с данными. А затем было предложено написать функцию, где на входе два таких списка, а на выходе один, отсортированный по данным из первых двух и без всякого копирования.
Читать дальше →
Total votes 154: ↑68 and ↓86 -18
Views 84K
Comments 235

Коллекционирую лучшие C++ практики

PVS-Studio corporate blog C++ *

Коллекционирую лучшие C++ практики


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

Читать дальше →
Total votes 38: ↑37 and ↓1 +36
Views 13K
Comments 8

Фуршет декабря

Habr corporate blog Habr Community management *

Сегодня в 9:30 выйдет (уже вышла) публикация с итогами года, где упоминаются фуршеты — я подумал и решил, что было бы неплохо там сослаться на новый выпуск, а не на предыдущий. Ну и по понедельникам мы ещё не пробовали, так что решено — декабрьский фуршет объявляется открытым!

Читать далее
Total votes 24: ↑24 and ↓0 +24
Views 2.7K
Comments 131

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

Rust *Programming microcontrollers *Circuit design *Manufacture and development of electronics *DIY

Что делать, если ваш микроконтроллер не умеет работать с сетью, а бота для телеграма написать хочется? Конечно же, сделать свой сетевой адаптер на логических микросхемах!

Читать далее
Total votes 147: ↑146 and ↓1 +145
Views 16K
Comments 23

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

Learning languages

Из этого гайда вы узнаете из каких шагов состоит изучение английского языка и в каком порядке ими заниматься. Я разберу, какие навыки необходимы для владения языком и как их эффективнее всего качать. Понимая принципы изучения языков вы сможете организовать своё обучение и подстроить процесс под свой текущей уровень.

Читать далее
Total votes 33: ↑31 and ↓2 +29
Views 32K
Comments 31

Просмотр статистики по новым вкладкам

Habr

В ответ на Причины минусов в карму и история голосов.

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

Ссылка на гит-хаб

Скачать релиз

Нужно распаковать, перейти в chrome://extensions/ перейти в Режим разработчика и выбрать "Load unpacked/Загрузить распакованное расширение".

Дальше в профиле перейти во вкладку "Голосование за меня"

Читать далее
Total votes 17: ↑16 and ↓1 +15
Views 1.1K
Comments 2

Неблокирующая обработка тактовой кнопки для Arduino. Как использовать прерывание таймера «в два клика» в стиле ардуино

Timeweb Cloud corporate blog Programming microcontrollers *Developing for Arduino *Electronics for beginners


В своей прошлой статье я писал про блокирующие способы обработки кнопки. Реакция была, наверное, больше положительная, чем отрицательная. Хотя минусов мне поднасовали… Но, тем не менее, я решил продолжить. И в этой статье я хочу поделиться с вами своим опытом по неблокирующей обработке кнопок на Arduino. Напишем несложную библиотеку в стиле Си. Но, боюсь, что закрыть свой гештальт этой статьей тоже не получится…

Чтобы сохранить общую концепцию, пришлось разобраться с обработкой прерываний таймеров-счетчиков в стиле Arduino. Если вы не сталкивались с этим, и работаете напрямую с регистрами, рекомендую посмотреть, как это выглядит. HAL-драйвер для STM32 в этом плане нервно курит в сторонке.

Заранее предупреждаю, что материал рассчитан для начинающих. Но комментарии от бывалых программистов микроконтроллеров только приветствуются.
Читать дальше →
Total votes 29: ↑29 and ↓0 +29
Views 4.8K
Comments 43

Information

Rating
1,930-th
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity