Как стать автором
Обновить
3
0

Пользователь технологий

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

Разбираемся что MySQL пишет на диск и зачем [часть 2]

Уровень сложностиСложный
Время на прочтение9 мин
Количество просмотров5.5K

Это вторая часть моих копаний во внутренностях MySQL. В первой части [habr] были затронуты запись страниц данных на диск (с промежуточной записью в DoubleWrite buffer) и запись бинлогов (с батчингом в виде group commit). В этой части я расскажу про redo log и как все части MySQL координируются для достижения надежной работы.

Читать далее
Всего голосов 13: ↑13 и ↓0+13
Комментарии0

Разбираемся что MySQL пишет на диск и зачем [часть 1]

Уровень сложностиСложный
Время на прочтение8 мин
Количество просмотров19K

Разработчики предъявляют высокие требования к базам данных: максимальная надежность (ничего из того, что было записано не должно быть утеряно ни при каких обстоятельствах), и, одновременно, максимальная производительность при различных видах нагрузки (Запись/Чтение или OLTP/OLAP). Достичь этих требований может быть не просто. Давайте попробуем разобраться, как это делает MySQL.

Размышляя о базе данных, легко представить таблицу базы данных как HashMap/BinaryTree, отображающие первичный ключ (primary key) в структурированные записи с данными. Такое хранилище может работать in memory. Но, как только мы захотим записать данные на диск, придется использовать какие-то алгоритмы во внешней памяти. Просто положить наш HashMap на диск не получится, потому что память и диски слишком разные: чтение/запись диска производится блоками, latency диска больше чем у RAM, а еще нельзя будет воспользоваться обычными указателями и аллокаторами памяти - все это придется заменить самостоятельно.

Читать далее
Всего голосов 13: ↑13 и ↓0+13
Комментарии8

Разработка стековой виртуальной машины и компилятора под неё (итог)

Время на прочтение16 мин
Количество просмотров11K

Для завершения реализации компилятора потребовалось около месяца времени (вечерами), чтобы на практике познакомиться с такими темами как BNF (Backus Naur Form), Abstract Syntax Tree (AST), Symbol Table, способами генерации кода, разработки самого компилятора (front-end, back-end), а также модификации виртуальной машины CVM. Ранее с этими темами был не знаком, но благодаря комментаторам погрузился. Хоть затрагиваемых тем много, постараюсь рассказать очень лаконично. Но обо всём по порядку.

Читать далее
Всего голосов 19: ↑17 и ↓2+19
Комментарии9

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

Время на прочтение9 мин
Количество просмотров19K

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

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

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

Читать далее
Всего голосов 71: ↑68 и ↓3+82
Комментарии60

Раскрываем секреты загрузочных ISO-образов

Время на прочтение20 мин
Количество просмотров100K


В этой статье я хочу поговорить об ISO-файлах, на которых, как известно, распространяются дистрибутивы операционных систем. Начиная писать статью, я немного сомневался в её актуальности, так как я ассоциировал ISO-образы с оптическими дисками, которые, ввиду ряда причин, уходят в прошлое. У меня было стойкое понимание, что ISO-файлы в основном нужны только для хранения образов оптических дисков, которые содержат установщик операционной системы. Но, как оказалось, всё гораздо сложнее и интереснее, особенно применительно к современному железу.
Читать дальше →
Всего голосов 193: ↑193 и ↓0+193
Комментарии73

Как самому за один вечер собрать минимальную ОС Linux из исходного кода

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров88K
image

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

Ещё больше не даёт покоя мне тот факт, что все ядра операционной системы Linux, которые работают на различных устройствах и серверах, собраны из исходного кода, находящегося в репозитории на сайте kernel.org.

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

Мне всегда хотелось собрать операционную систему Linux самому из исходного кода, но процесс этот всегда казался сложным и запутанным, да и многого я не понимал. Но всё-таки в определённый момент времени я накопил достаточное количество знаний, чтобы осуществить свою мечту. В этой статье я хочу рассказать вам, как собрать минимальную Linux из исходного кода и запустить её у себя на компьютере.
Читать дальше →
Всего голосов 83: ↑82 и ↓1+108
Комментарии83

Как оценивать свою работу на фрилансе

Время на прочтение19 мин
Количество просмотров6.2K

Это глава из «Книги нормального фрилансера», в которой я делюсь опытом успешного проектировщика интерфейсов, работающего на себя.

Нужно брать с клиента столько, чтобы он не отвалился.
Где потом найдёшь другого? Лучше зря не рисковать!
Совершай скорее сделку, не продумывай деталей,
Время — деньги, пусть другие тратят время на расчёт.

Одним из самых трудных вопросов, с которыми я столкнулся на фрилансе, стал «Сколько денег взять за эту работу?» Первым клиентом волей случая оказалась компания Telphin, оператор VoIP-телефонии, довольно крупный на 2008 год. От меня требовалось спроектировать новую версию интерфейса кабинета пользователя.

Тогда в оценке я руководствовался такими понятиями, как «сколько бы мне попросить, чтобы клиент не отвалился?», «сколько вообще люди берут за подобную работу?», «за какую сумму я сам готов работать?» Тогда я назвал что-то порядка 30 000 рублей. Для студента невероятно большая сумма…

Читать далее
Всего голосов 17: ↑17 и ↓0+17
Комментарии9

Практика радиосвязи, как она есть

Время на прочтение7 мин
Количество просмотров183K
Все мы ежедневно сталкиваемся с разными видами радиосвязи и беспроводной передачи данных. Да что там сталкиваемся: мы практически пронизаны радиоволнами разной частоты, модуляции и напряженности (за исключением, разве что, случая, если не находимся внутри «клетки Фарадея»). Здесь, на хабре, в силу ИТ-направленности, очень много статей о видах связи и передачи данных, о разнообразных телекомах, о магистралях и «последних милях», да и еще много о чем, что имеет прямое или косвенное отношение к связи, как к проводной, так и к беспроводной.

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

Однако, поискав по хабру, я так и не нашел ни одной статьи, в которой рассказывалось бы о радиосвязи, с бытовой и любительской точки зрения. А ведь если подойти к радиосвязи именно с таким, бытовым взглядом – для одних она может стать удобным, а порой и незаменимым помощником во многих делах, а для других – перерасти в интересное увлечение или хобби. Именно с такими намерениями я хочу сегодня попытаться просто и доступно рассказать о радиосвязи, о том, как она есть в жизни, о том, с чем сам имел место столкнуться и познать.
Читать дальше →
Всего голосов 82: ↑81 и ↓1+80
Комментарии122

Инновации по-русски

Время на прочтение9 мин
Количество просмотров171K
Я — профессиональный участник инновационной индустрии. Вместе с коллегами последние 10 лет мы участвуем в создании новых технологий.

И я должен сказать о причине, по которой не стоит заниматься инновациями в России. Здесь можно порассуждать о плохом инвестиционном климате, неэффективности государственных программ, размере внутреннего рынка, смещенных мотивациях участников. Но кроме этого есть и плохо контролируемый риск, который заключается в возможности оказаться за решеткой. И об этом не принято говорить вслух, а нужно. Под катом топ-5 инновационных компаний по версии следственного комитета, известных мне, а их злоключения не были ранее упомянуты на хабре.
Читать дальше →
Всего голосов 513: ↑480 и ↓33+447
Комментарии249

Способ снижения зрительного напряжения. Часть 1

Время на прочтение9 мин
Количество просмотров16K

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

UVA излучение >
Всего голосов 21: ↑19 и ↓2+22
Комментарии97

Операционная система FreeBSD на ноутбуке Lenovo

Время на прочтение117 мин
Количество просмотров46K

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

Моя статья посвященная настройке САПР КОМПАС-3D под FreeBSD получила ряд одобрительных комментариев, поэтому мне захотелось продолжить тему «FreeBSD на десктопе». К тому же, есть добрые предпосылки — недавно я приобрел новый современный ноутбук Lenovo Ideapad 3 Gaming взамен окончательно рассыпавшегося на несколько частей Asus VX7, а с ним и массу приятного и затейливого опыта установки и настройки ОС FreeBSD для работы на новом «железе». В этой статье я не будут касаться установки и настройки специализированного ПО и прочих САПР, будет рассмотрен только системный вопрос: установка операционной системы, драйверов, патчей, библиотек, настройка и борьба с железом. Будет много выдержек из системного руководства (мануала - man) — уж сильно я к нему пристрастился за последние 130 лет.

Ссылка на статью в формате PDF для "офф-лайн" прочтения

Продолжить читать журнал
Всего голосов 90: ↑90 и ↓0+90
Комментарии92

N+1 полезных книг о бизнесе

Время на прочтение9 мин
Количество просмотров229K
В топике блиц-обзор книг, которые будут полезны IT-специалистам, бизнесменам и тем, кто собирается открыть своё дело. Рядом с каждой — короткие пояснения, почему и зачем стоит прочесть.

Отобраны лучшие 10% из примерно 200 прочитанных книг о маркетинге, продажах и всем связанном — самые «пробивные» вещи, которые помогут вам не тратить время на всякий шлак, а сразу начать с главного.

В конце — суммация книг, которые хабровчане рекомендуют в комментариях помимо основного списка.

Читать дальше →
Всего голосов 148: ↑137 и ↓11+126
Комментарии131

Разработка драйвера сетевого адаптера для Linux. Часть 1

Время на прочтение25 мин
Количество просмотров27K

В этой статье мы рассмотрим как устроен драйвер сетевого адаптера для Linux.

Cтатью разделим на две части.

В первой части рассмотрим общую структуру сетевого адаптера, узнаем какие компоненты входят в его состав, что такое MAC и PHY, разберемся как подготовить адаптер к работе, сконфигурировать, и как в итоге получать сетевые пакеты.

Хотя при разработке драйверов необходимо использовать стандартные ядерные фреймворки, такие как clock, reset, libphy и пр., поначалу мы будем работать с адаптером напрямую через регистры состояния и управления. Это позволит нам детально разобраться с аппаратной частью.

Во второй части статьи приведем драйвер к нормальному виду, с использованием стандартных фреймворков и описанием того, что надо указать в Device Tree, и рассмотрим как передавать сетевые пакеты.

Нам нужна макетная плата с сетевым адаптером, на которую можно поставить Linux. Возьмем Orange Pi Zero на платформе Allwinner H2+. В состав платформы входят четыре процессорных ядра Cortex-A7, поддерживается ОЗУ стандартов LPDDR2, LPDDR3, DDR3, широкий спектр соединений и интерфейсов, в том числе сетевой адаптер, для которого мы будем разрабатывать драйвер. Подробное описание платформы тут, документация на платформу Allwinner H3 Datasheet.

Читать далее
Всего голосов 71: ↑71 и ↓0+71
Комментарии19

Простые программы для расчёта радиотракта

Время на прочтение3 мин
Количество просмотров5.9K

Данная статья рассчитана на начинающего радиоинженера, который ещё не составил для себя список любимых программ.

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

Читать далее
Всего голосов 17: ↑17 и ↓0+17
Комментарии3

Логика сознания. Вступление

Время на прочтение8 мин
Количество просмотров112K
image В свое время на Хабре был опубликован цикл статей «Логика мышления». С тех пор прошло два года. За это время удалось сильно продвинуться вперед в понимании того, как работает мозг и получить интересные результаты моделирования. В новом цикле «Логика сознания» я опишу текущее состоянии наших исследований, ну а попутно попытаюсь рассказать о теориях и моделях интересных для тех, кто хочет разобраться в биологии естественного мозга и понять принципы построения искусственного интеллекта.

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

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

Не должна вводить в заблуждение распространенная фраза о том, что многие идеи искусственных нейронных сетей позаимствованы из исследований реального мозга. Заимствование носит слишком общий характер. По большому счету, оно заканчивается на том, что и там и там есть нейроны и между этими нейронами есть связи.
Читать дальше →
Всего голосов 49: ↑46 и ↓3+43
Комментарии179

В поисках эргономичного рабочего места

Время на прочтение7 мин
Количество просмотров163K
Для любого человека, работающего за компьютером, рано или поздно встаёт вопрос воздействия рабочей обстановки на здоровье. Выработаны рекомендации по осанке, организации рабочего пространства, отдыха. Разработаны упражнения для туловища, шеи, конечностей и, конечно, глаз.

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

Так как работаю программистом и значительную часть работы выполняю дома — для себя создал два рабочих места, на втором их которых работаю до сих пор. Далее опишу их с подробностями и сделанными выводами. Полагаю, интересно будет людям, которые работают удалённо или фрилансерам.
Читать дальше →
Всего голосов 102: ↑98 и ↓4+94
Комментарии34

Серверные мощности в домашнем ПК

Время на прочтение12 мин
Количество просмотров52K
Сказ о том, как собрать себе мощный комп с минимальным бюджетом.

В один прекрасный день мой коллега сказал, что на досках объявлений появились недорогие списанные мощные двухпроцессорные серверные материнские платы Supermicro X8DTL-i. В этом лоте на плате уже установлены процессоры, память и радиаторы, включай и работай. При этом формат платы E-ATX позволяет без особых проблем уместить её в обычный компьютерный корпус. Единственное, о чём стоит задуматься — это об охлаждении этих серверных мощностей.

Ценник на такой комплект на досках объявлений начинается от трёх тысяч рублей, что по карману даже школьнику. Это весьма интересное предложение для того, чтобы повозиться с серверным железом, да ещё и в домашнем компьютере. Я загорелся, и мне казалось, что никаких проблем возникнуть не должно, но как обычно, дьявол кроется в мелочах. Как и бывает в таких случаях, проблем посыпался ворох: охлаждение, расположение нестандартной матери, драйвера управления вентиляторов, организация электропитания.

В результате это всё вылилось в настоящий кастомный проект, который существует в единственном экземпляре. 3D-печать, ковыряние драйверов, разработка и пайка своих приспособлений. В общем, путь настоящего технаря.
Читать дальше →
Всего голосов 85: ↑82 и ↓3+115
Комментарии349

Использование утилиты tar по сети через SSH

Время на прочтение4 мин
Количество просмотров17K

GNU-версию утилиты архивирования tar, равно как и её старые версии, можно использовать через сетевое подключение по протоколу ssh. От telnet/nc стоит отказаться, так как они не гарантируют безопасность соединения. Создавать архивы можно с помощью каналов (pipe) Unix/Linux, и ниже я продемонстрирую ряд примеров использования tar по ssh для архивирования в Linux, BSD/macOS или Unix-подобных системах.
Читать дальше →
Всего голосов 33: ↑28 и ↓5+35
Комментарии24

Малышка на миллион. Сковиллей

Время на прочтение13 мин
Количество просмотров36K

Или, на что годятся монстрики Meklon'а?




Пишу эту заметку по мотивам инженерного мануала Гидропоника. Выращиваем сверхострый чили и заставляем всех его есть. Так получилось, что я один из тех, кого Meklon счел своим долгом «накормить и посмотреть что с ними станет». Я же, в свою очередь, считаю своим долгом рассказать об этом бесчеловечном эксперименте, на мой взгляд, в статье уделяется слишком мало внимания самому перцу. А он заслуживает большего!

Ко всему прочему, я совершенно в этом уверен, после его статьи должно появиться множество гидропонщиков-неофитов, ибо тема не менее интересная, чем профитроли, а это значит — что через несколько месяцев, в разных уголках земного шара, где читают Хабр, вырастет энное количество экстремально острого перца, с которым надо будет что-то делать. Проблема в том, что одна средняя семья не в состоянии самостоятельно употребить весь урожай Scorpion Trinidad. А это значит, что перцами будут интенсивно делиться, но не все будут понимать — для чего может пригодиться такой экзотический фрукт и что с ним делать.

Об этом — и будет мой рассказ, как приготовить из адских перчиков что-то съедобное и не сильно пострадать в процессе.
Всего голосов 104: ↑99 и ↓5+133
Комментарии220

Как происходит генерация мира Minecraft

Время на прочтение21 мин
Количество просмотров59K
image

Задумывались ли вы когда-нибудь, сколько на нашей планете песчинок? По грубым оценкам, более 7 квинтиллионов! Это 7 с 18 нулями. И всё-таки это даже меньше половины количества уникальных миров в Minecraft. Как же Minecraft и другим похожим играм удаётся создавать такие сложные, красивые, однако полностью процедурные миры? В этой статье я расскажу, как игра генерирует свои миры, от самой высокой горы до самой глубокой пещеры.

Часть 1: процедурная генерация


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

Однако первой игрой с процедурно сгенерированным миром является «Elite», первая версия которой вышла для компьютера BBC Micro в 1984 году. Это прапрадед относительно новой «Elite: Dangerous», выпущенной в 2014 году.


Автоматическая генерация новых миров может казаться привлекательным способом ленивого создания бесконечного контента для игры. Однако на самом деле всё наоборот! Чтобы научить машину тому, как выглядит хороший уровень… нужно быть очень хорошим программистом и дизайнером уровней.

Контент должен быть достаточно разнообразным, чтобы выглядеть свежим, но не настолько разнообразным, чтобы казаться атипичным. И необходимо создавать миры, на которые не просто интересно смотреть, но которые обеспечивают справедливую с точки зрения игрока сложность.
Читать дальше →
Всего голосов 67: ↑67 и ↓0+67
Комментарии17

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность