Это вторая часть моих копаний во внутренностях MySQL. В первой части [habr] были затронуты запись страниц данных на диск (с промежуточной записью в DoubleWrite buffer) и запись бинлогов (с батчингом в виде group commit). В этой части я расскажу про redo log и как все части MySQL координируются для достижения надежной работы.
Пользователь технологий
Разбираемся что MySQL пишет на диск и зачем [часть 1]
Разработчики предъявляют высокие требования к базам данных: максимальная надежность (ничего из того, что было записано не должно быть утеряно ни при каких обстоятельствах), и, одновременно, максимальная производительность при различных видах нагрузки (Запись/Чтение или OLTP/OLAP). Достичь этих требований может быть не просто. Давайте попробуем разобраться, как это делает MySQL.
Размышляя о базе данных, легко представить таблицу базы данных как HashMap/BinaryTree, отображающие первичный ключ (primary key) в структурированные записи с данными. Такое хранилище может работать in memory. Но, как только мы захотим записать данные на диск, придется использовать какие-то алгоритмы во внешней памяти. Просто положить наш HashMap на диск не получится, потому что память и диски слишком разные: чтение/запись диска производится блоками, latency диска больше чем у RAM, а еще нельзя будет воспользоваться обычными указателями и аллокаторами памяти - все это придется заменить самостоятельно.
Разработка стековой виртуальной машины и компилятора под неё (итог)
Для завершения реализации компилятора потребовалось около месяца времени (вечерами), чтобы на практике познакомиться с такими темами как BNF (Backus Naur Form), Abstract Syntax Tree (AST), Symbol Table, способами генерации кода, разработки самого компилятора (front-end, back-end), а также модификации виртуальной машины CVM. Ранее с этими темами был не знаком, но благодаря комментаторам погрузился. Хоть затрагиваемых тем много, постараюсь рассказать очень лаконично. Но обо всём по порядку.
Boson — разработка СУБД «с нуля» (часть I)
После разработки виртуальной машины и компилятора в рамках хобби прошел год и захотелось попробовать реализовать ёмкий по алгоритмам проект по системному программированию.
Каждый разработчик "кровавого" enterprise в своей работе использует СУБД (SQL/NoSQL) и меня всегда искренне интересовало как они устроены в самом сердце, на самом низком уровне. Почитав документацию и исходный код SQLite и MongoDB, про используемые в индексах и интерпретаторах запросов алгоритмы, осознал, что несмотря на широкую распространенность и некую привычность, системы управления базами данных (СУБД) - это сложные программные продукты, реализация которых не всем под силу. Отлично - как раз то, что мне надо. С мотивацией разобрались, перейдем к делу.
Итак, для начала хорошо бы сформулировать высокоуровневую спецификацию требований. Boson - это легкая, встраиваемая документоориентированная база данных на С/С++
Раскрываем секреты загрузочных ISO-образов
В этой статье я хочу поговорить об ISO-файлах, на которых, как известно, распространяются дистрибутивы операционных систем. Начиная писать статью, я немного сомневался в её актуальности, так как я ассоциировал ISO-образы с оптическими дисками, которые, ввиду ряда причин, уходят в прошлое. У меня было стойкое понимание, что ISO-файлы в основном нужны только для хранения образов оптических дисков, которые содержат установщик операционной системы. Но, как оказалось, всё гораздо сложнее и интереснее, особенно применительно к современному железу.
Как самому за один вечер собрать минимальную ОС Linux из исходного кода
В современном мире нас окружает огромное количество электронных устройств различной степени сложности. Если устройство более или менее сложное, например, телевизор, маршрутизатор, смартфон, то с большой долей вероятности оно работает под управлением операционной системы Linuх, и эта мысль не даёт мне покоя.
Ещё больше не даёт покоя мне тот факт, что все ядра операционной системы Linux, которые работают на различных устройствах и серверах, собраны из исходного кода, находящегося в репозитории на сайте kernel.org.
Такие разные устройства, а операционная система, работающая на них, собрана из одного и того же исходного кода! Это утверждение, конечно, верно лишь отчасти, так как фактически ядро обычно расширено и модифицировано разработчиками конкретных дистрибутивов Linux, а также разработчиками конкретных устройств, но общего исходного кода достаточно много.
Мне всегда хотелось собрать операционную систему Linux самому из исходного кода, но процесс этот всегда казался сложным и запутанным, да и многого я не понимал. Но всё-таки в определённый момент времени я накопил достаточное количество знаний, чтобы осуществить свою мечту. В этой статье я хочу рассказать вам, как собрать минимальную Linux из исходного кода и запустить её у себя на компьютере.
Как оценивать свою работу на фрилансе
Это глава из «Книги нормального фрилансера», в которой я делюсь опытом успешного проектировщика интерфейсов, работающего на себя.
Нужно брать с клиента столько, чтобы он не отвалился.
Где потом найдёшь другого? Лучше зря не рисковать!
Совершай скорее сделку, не продумывай деталей,
Время — деньги, пусть другие тратят время на расчёт.
Одним из самых трудных вопросов, с которыми я столкнулся на фрилансе, стал «Сколько денег взять за эту работу?» Первым клиентом волей случая оказалась компания Telphin, оператор VoIP-телефонии, довольно крупный на 2008 год. От меня требовалось спроектировать новую версию интерфейса кабинета пользователя.
Тогда в оценке я руководствовался такими понятиями, как «сколько бы мне попросить, чтобы клиент не отвалился?», «сколько вообще люди берут за подобную работу?», «за какую сумму я сам готов работать?» Тогда я назвал что-то порядка 30 000 рублей. Для студента невероятно большая сумма…
Практика радиосвязи, как она есть
Так же, наверняка, практически всем хабравчанам в школах, на уроках физики, рассказывали о колебательных контурах, распространении и длине волн, и прочих процессах, лежащих в основах любой технологии радио- и беспроводной связи.
Однако, поискав по хабру, я так и не нашел ни одной статьи, в которой рассказывалось бы о радиосвязи, с бытовой и любительской точки зрения. А ведь если подойти к радиосвязи именно с таким, бытовым взглядом – для одних она может стать удобным, а порой и незаменимым помощником во многих делах, а для других – перерасти в интересное увлечение или хобби. Именно с такими намерениями я хочу сегодня попытаться просто и доступно рассказать о радиосвязи, о том, как она есть в жизни, о том, с чем сам имел место столкнуться и познать.
Инновации по-русски
И я должен сказать о причине, по которой не стоит заниматься инновациями в России. Здесь можно порассуждать о плохом инвестиционном климате, неэффективности государственных программ, размере внутреннего рынка, смещенных мотивациях участников. Но кроме этого есть и плохо контролируемый риск, который заключается в возможности оказаться за решеткой. И об этом не принято говорить вслух, а нужно. Под катом топ-5 инновационных компаний по версии следственного комитета, известных мне, а их злоключения не были ранее упомянуты на хабре.
Способ снижения зрительного напряжения. Часть 1
Проводимая нами с весны 2021 г. работа по созданию бытового светильника поставила вопрос о существовании зрительных процессов, игнорируемых стандартами освещённости. Уже много лет происходит изучение глаз человека, но до сих пор мало известно о влиянии UVA на биохимические процессы и обработку зрительной информации в сетчатке. Наша цель состояла в том, чтобы обнаружить влияние невидимого диапазона на зрительное напряжение, не связанное с визуальным восприятием света этого диапазона или люминесценцией поверхностей от источника UVA излучения.
Операционная система FreeBSD на ноутбуке Lenovo
В этой статье я хочу поделиться с общественностью некоторыми аспектами настройки и эксплуатации операционной системы FreeBSD при установке на современный ноутбук с целью использования его как основного рабочего места инженера (программиста, электронщика или конструктора). В своих предыдущих статьях я упоминал, что являюсь тонким ценителем этой ОС и с некоторых пор организовал своё рабочее место под управлением FreeBSD, о чем ни сколько не пожалел, и даже наоборот — мои волосы теперь по-настоящему мягкие и шелковистые.
Моя статья посвященная настройке САПР КОМПАС-3D под FreeBSD получила ряд одобрительных комментариев, поэтому мне захотелось продолжить тему «FreeBSD на десктопе». К тому же, есть добрые предпосылки — недавно я приобрел новый современный ноутбук Lenovo Ideapad 3 Gaming взамен окончательно рассыпавшегося на несколько частей Asus VX7, а с ним и массу приятного и затейливого опыта установки и настройки ОС FreeBSD для работы на новом «железе». В этой статье я не будут касаться установки и настройки специализированного ПО и прочих САПР, будет рассмотрен только системный вопрос: установка операционной системы, драйверов, патчей, библиотек, настройка и борьба с железом. Будет много выдержек из системного руководства (мануала - man) — уж сильно я к нему пристрастился за последние 130 лет.
N+1 полезных книг о бизнесе
Отобраны лучшие 10% из примерно 200 прочитанных книг о маркетинге, продажах и всем связанном — самые «пробивные» вещи, которые помогут вам не тратить время на всякий шлак, а сразу начать с главного.
В конце — суммация книг, которые хабровчане рекомендуют в комментариях помимо основного списка.
Разработка драйвера сетевого адаптера для Linux. Часть 1
В этой статье мы рассмотрим как устроен драйвер сетевого адаптера для Linux.
Cтатью разделим на две части.
В первой части рассмотрим общую структуру сетевого адаптера, узнаем какие компоненты входят в его состав, что такое MAC и PHY, разберемся как подготовить адаптер к работе, сконфигурировать, и как в итоге получать сетевые пакеты.
Хотя при разработке драйверов необходимо использовать стандартные ядерные фреймворки, такие как clock, reset, libphy и пр., поначалу мы будем работать с адаптером напрямую через регистры состояния и управления. Это позволит нам детально разобраться с аппаратной частью.
Во второй части статьи приведем драйвер к нормальному виду, с использованием стандартных фреймворков и описанием того, что надо указать в Device Tree, и рассмотрим как передавать сетевые пакеты.
Нам нужна макетная плата с сетевым адаптером, на которую можно поставить Linux. Возьмем Orange Pi Zero на платформе Allwinner H2+. В состав платформы входят четыре процессорных ядра Cortex-A7, поддерживается ОЗУ стандартов LPDDR2, LPDDR3, DDR3, широкий спектр соединений и интерфейсов, в том числе сетевой адаптер, для которого мы будем разрабатывать драйвер. Подробное описание платформы тут, документация на платформу Allwinner H3 Datasheet.
Простые программы для расчёта радиотракта
Данная статья рассчитана на начинающего радиоинженера, который ещё не составил для себя список любимых программ.
Рано или поздно разработчик СВЧ получает задачу на построение целого радиотракта, состоящего из нескольких элементов: усилителей, фильтров, смесителей и пр. Этот радиотракт нужно рассчитать целиком, определив его основные параметры: динамический диапазон, коэффициент передачи и шума, точку компрессии и т.д. Для примера возьмем такой приёмный тракт их 3х элементов:
Логика сознания. Вступление
Перед началом хотелось бы сделать несколько замечаний, которые будет полезно помнить во время чтения всех последующих статей.
Ситуация, связанная с изучением мозга, особенная для науки. Во всех остальных областях естествознания есть базовые теории. Они составляют фундамент на котором строятся все последующие рассуждения. И только в нейронауке до сих пор нет ни одной теории, которая хоть как-то объясняла, как в нейронных структурах мозга протекают информационные процессы. При этом накоплен огромный объем знаний о физиологии мозга. Получены очень обнадеживающие результаты с помощью искусственных нейронных сетей. Но перекинуть мостик от одного к другому, пока, не удается. То, что известно о биологических нейронных сетях очень плохо соотносится с созданными на сегодня архитектурами искусственных нейронных сетей.
Не должна вводить в заблуждение распространенная фраза о том, что многие идеи искусственных нейронных сетей позаимствованы из исследований реального мозга. Заимствование носит слишком общий характер. По большому счету, оно заканчивается на том, что и там и там есть нейроны и между этими нейронами есть связи.
В поисках эргономичного рабочего места
Наверняка каждый, кто долго работает за компьютером, однажды почувствовал боль где-нибудь, многие начали искать пути уменьшения вредного воздействия, кто-то серьёзно начал вникать в связанные с этим вопросы. К сожалению, часто ограничиваются поиском и покупкой дорогого кресла «с наворотами», и этим дело заканчивается. Я решил идти дальше.
Так как работаю программистом и значительную часть работы выполняю дома — для себя создал два рабочих места, на втором их которых работаю до сих пор. Далее опишу их с подробностями и сделанными выводами. Полагаю, интересно будет людям, которые работают удалённо или фрилансерам.
Серверные мощности в домашнем ПК
В один прекрасный день мой коллега сказал, что на досках объявлений появились недорогие списанные мощные двухпроцессорные серверные материнские платы
Supermicro X8DTL-i
. В этом лоте на плате уже установлены процессоры, память и радиаторы, включай и работай. При этом формат платы E-ATX позволяет без особых проблем уместить её в обычный компьютерный корпус. Единственное, о чём стоит задуматься — это об охлаждении этих серверных мощностей.Ценник на такой комплект на досках объявлений начинается от трёх тысяч рублей, что по карману даже школьнику. Это весьма интересное предложение для того, чтобы повозиться с серверным железом, да ещё и в домашнем компьютере. Я загорелся, и мне казалось, что никаких проблем возникнуть не должно, но как обычно, дьявол кроется в мелочах. Как и бывает в таких случаях, проблем посыпался ворох: охлаждение, расположение нестандартной матери, драйвера управления вентиляторов, организация электропитания.
В результате это всё вылилось в настоящий кастомный проект, который существует в единственном экземпляре. 3D-печать, ковыряние драйверов, разработка и пайка своих приспособлений. В общем, путь настоящего технаря.
Использование утилиты tar по сети через SSH
GNU-версию утилиты архивирования
tar
, равно как и её старые версии, можно использовать через сетевое подключение по протоколу ssh
. От telnet
/nc
стоит отказаться, так как они не гарантируют безопасность соединения. Создавать архивы можно с помощью каналов (pipe) Unix/Linux, и ниже я продемонстрирую ряд примеров использования tar
по ssh
для архивирования в Linux, BSD/macOS или Unix-подобных системах.Малышка на миллион. Сковиллей
Или, на что годятся монстрики Meklon'а?
Пишу эту заметку по мотивам инженерного мануала Гидропоника. Выращиваем сверхострый чили и заставляем всех его есть. Так получилось, что я один из тех, кого Meklon счел своим долгом «накормить и посмотреть что с ними станет». Я же, в свою очередь, считаю своим долгом рассказать об этом бесчеловечном эксперименте, на мой взгляд, в статье уделяется слишком мало внимания самому перцу. А он заслуживает большего!
Ко всему прочему, я совершенно в этом уверен, после его статьи должно появиться множество гидропонщиков-неофитов, ибо тема не менее интересная, чем профитроли, а это значит — что через несколько месяцев, в разных уголках земного шара, где читают Хабр, вырастет энное количество экстремально острого перца, с которым надо будет что-то делать. Проблема в том, что одна средняя семья не в состоянии самостоятельно употребить весь урожай Scorpion Trinidad. А это значит, что перцами будут интенсивно делиться, но не все будут понимать — для чего может пригодиться такой экзотический фрукт и что с ним делать.
Об этом — и будет мой рассказ, как приготовить из адских перчиков что-то съедобное и не сильно пострадать в процессе.
Как происходит генерация мира Minecraft
Задумывались ли вы когда-нибудь, сколько на нашей планете песчинок? По грубым оценкам, более 7 квинтиллионов! Это 7 с 18 нулями. И всё-таки это даже меньше половины количества уникальных миров в Minecraft. Как же Minecraft и другим похожим играм удаётся создавать такие сложные, красивые, однако полностью процедурные миры? В этой статье я расскажу, как игра генерирует свои миры, от самой высокой горы до самой глубокой пещеры.
Часть 1: процедурная генерация
Для многих из вас Minecraft может быть первой (а может быть, и единственной) игрой, в которой миры не творятся вручную дизайнером уровней, а создаются процедурно.
Однако первой игрой с процедурно сгенерированным миром является «Elite», первая версия которой вышла для компьютера BBC Micro в 1984 году. Это прапрадед относительно новой «Elite: Dangerous», выпущенной в 2014 году.
Автоматическая генерация новых миров может казаться привлекательным способом ленивого создания бесконечного контента для игры. Однако на самом деле всё наоборот! Чтобы научить машину тому, как выглядит хороший уровень… нужно быть очень хорошим программистом и дизайнером уровней.
Контент должен быть достаточно разнообразным, чтобы выглядеть свежим, но не настолько разнообразным, чтобы казаться атипичным. И необходимо создавать миры, на которые не просто интересно смотреть, но которые обеспечивают справедливую с точки зрения игрока сложность.
Информация
- В рейтинге
- Не участвует
- Зарегистрирован
- Активность