Как стать автором
Обновить
142
0
Ярослав Сергиенко @pallada92

Визуализация данных и frontend в ИСИЭЗ НИУ ВШЭ

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

Как работает компьютер: глубокое погружение (на примере Linux)

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



Введение


Я делала много вещей с компьютерами, но в моих знаниях всегда был пробел: что конкретно происходит при запуске программы на компьютере? Я думала об этом пробеле — у меня было много низкоуровневых знаний, но не было цельной картины. Программы действительно выполняются прямо в центральном процессоре (central processing unit, CPU)? Я использовала системные вызовы (syscalls), но как они работают? Чем они являются на самом деле? Как несколько программ выполняются одновременно?


Наконец, я сломалась и начала это выяснять. Мне пришлось перелопатить тонны ресурсов разного качества и иногда противоречащих друг другу. Несколько недель исследований и почти 40 страниц заметок спустя я решила, что гораздо лучше понимаю, как работают компьютеры от запуска до выполнения программы. Я бы убила за статью, в которой объясняется все, что я узнала, поэтому я решила написать эту статью.


И, как говорится, ты по-настоящему знаешь что-то, только если можешь объяснить это другому.


Более удобный формат статьи.

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

Исследуем внутренности Linux версии 0.01

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

Ядро Linux часто упоминают как ужасно масштабное опенсорсное ПО. На момент написания этой статьи последняя версия 6.5-rc5 состоит из 36 миллионов строк кода. Не нужно говорить, что Linux — это плод упорного многолетнего труда множества участников проекта.

Однако первая версия Linux, v0.01, была довольно маленькой. Она состояла всего из 10239 строк кода. Если исключить комментарии и пустые строки, то остаётся всего 8670 строк. Это достаточно малый объём для анализа и хорошее начало для изучения внутренностей ядер UNIX-подобных операционных систем.

Я получил удовольствие от чтения кода v0.01. Это походило на посещение Музея компьютерной истории в Маунтин-Вью — я наконец-то убедился, что легенды верны! Я написал эту статью, чтобы поделиться с вами этим восхитительным опытом.

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

Эти прекрасные древовидные карты (альтернатива pprint)

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

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

Что происходит, когда запускаешь «Hello World» в Linux

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

Сегодня я задумалась о том, что происходит, когда запускаешь в Linux простую программу «Hello World» на Python.

print("hello world")

Вот как это выглядит в командной строке:

$ python3 hello.py
hello world

Но внутри происходит гораздо больше. Я объясню, что там творится, и, что гораздо важнее, расскажу об инструментах, при помощи которых вы сами сможете исследовать происходящее. Мы воспользуемся readelf, strace, ldd, debugfs, /proc, ltrace, dd и stat. Я не буду рассматривать относящиеся к Python части, только объясню, что происходит при выполнении динамически компонуемых исполняемых файлов.
Читать дальше →
Всего голосов 98: ↑98 и ↓0+98
Комментарии10

Действующий процессор на 13 микросхемах стандартной логики

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


Привет, Хабр! Для меня было просто невозможно пройти мимо этого схемотехнического чуда. Горстка деталей на небольшой двусторонней плате выполняет команды машинного языка и выводит результат в виде двоичного кода!

Действующая модель называется "TD4 CPU", является проектом с открытыми исходниками, реально работает и позволяет понять устройство и принцип работы процессора.
Читать дальше →
Всего голосов 85: ↑84 и ↓1+109
Комментарии54

Что сейчас происходит с климатом: 3 больших WTF

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

По состоянию на 10 июня 2023 года мировые данные показали удивительное совпадение ряда драматических климатических явлений: сочетание многолетнего нагревания океана, вызванного энергетическим дисбалансом Земли, нагревание Антарктиды из-за увеличения площади непокрытого льдом океана, сдвигов ветров и нагревания поверхности из-за Эль-Ниньо, отсутствия пыли в Сахаре и ограничения на содержание серы в судовом топливе 2020 года в совокупности вызвали беспрецедентный нагрев поверхности океана.

Читать далее
Всего голосов 88: ↑70 и ↓18+80
Комментарии1042

SectorC: компилятор Си в пределах 512 байт

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

SectorC (github) – это компилятор Си, написанный на ассемблере x86-16 и умещающийся в загрузочный сектор 512 байт машины x86. Он поддерживает достаточно обширную функциональность Си для создания реальных и интересных программ, являясь при этом, пожалуй, самым миниатюрным компилятором Си из когда-либо написанных.
Читать дальше →
Всего голосов 107: ↑105 и ↓2+148
Комментарии45

Ломаем хаскелем Brainfuck

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

Немного о bfc


Brainfuck — очень глупый язык. Там есть лента из 30к ячеек, по байту каждая. Команды bfc это:


  • Передвижение по ленте влево и вправо (символы < и >)
  • Увеличение и уменьшение значения в ячейке (символы + и -)
  • Ввод и вывод текущей ячейки (символы . и ,)
  • И цикл while, который продолжается пока значение в текущей ячейке не ноль. [ и ] это начало и конец цикла соответственно

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

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

Как мыслит GPT? Визуализируем скрытые слои

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

В стремлении прояснить языковые модели Transformer с помощью пакета Ecco авторы показывают механизм генерации предложений внутри предварительно обученной языковой модели. После генерации предложения возможно визуализировать представление о том, как модель пришла к каждому слову — речь идёт о столбце на рисунке выше. Строки — это слои модели. Чем темнее элемент строки, тем выше ранг токена в слое. Слой 0 расположен на самом верху. Слой 47 — в самом низу. К старту курса о машинном и глубоком обучении показываем и рассказываем о том, как мыслит GPT.

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

My4TH — домашний компьютер без процессора

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

Этот обзор посвящен открытому проекту компьютера My4TH по информации от разработчика: Авторский сайт проекта:

My4TH (произносится как "мой четвертый") - это четвертый домашний компьютер без процессора после MyCPU, MyNOR и TraNOR. Автор хотел и построил максимально простой компьютер с дискретным процессором, использующим как можно меньше элементов и компонентов, под управлением операционной системы Forth.

Смотреть обзор
Всего голосов 53: ↑52 и ↓1+66
Комментарии21

Поговорим об оптимизирующих компиляторах. Сказ первый: SSA-форма

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

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

Коротко обо мне. Меня зовут Макс, и так получилось, что я вот уже 10 лет, почти с самого начала своей карьеры, занимаюсь оптимизирующими компиляторами. Я начинал в Intel, потом перешёл в Azul Systems, год провёл в Cadence и вернулся обратно, всё это время занимаясь компиляторными оптимизациями для Java, C++ и нейросетевых моделей. На момент написания статьи у меня чуть за 900 патчей в LLVM, большинство из них посвящено цикловым оптимизациям.

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

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

Погрузиться
Всего голосов 93: ↑91 и ↓2+117
Комментарии58

SEO Выводы из утечки кода поисковика Яндекс

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

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

Читать далее
Всего голосов 166: ↑151 и ↓15+182
Комментарии130

Яндекс выпускает DivKit — фреймворк для server-driven UI с открытым кодом

Время на прочтение12 мин
Количество просмотров51K
Привет! Сегодня Яндекс выкладывает в опенсорс DivKit — фреймворк для отрисовки интерфейсов из ответа сервера. Серверная вёрстка поможет ускорить разработку: наладить отправку апдейтов от сервера разным версиям приложения, создать прототип или просто написать интерфейс один раз для нескольких платформ.


Фреймворк включает в себя несколько библиотек: клиентскую часть по отрисовке интерфейсов для Android, iOS и веба, а также DSL для формирования ответа сервера на Kotlin, TypeScript и Python. Исходный код опубликован на Гитхабе под лицензией Apache 2.0.

Сейчас DivKit используется в приложении Яндекс, Алисе, Едадиле, Маркете, ТВ и других приложениях. В этом посте я постараюсь вспомнить историю фреймворка, затем мы напишем с его помощью небольшой просмотрщик ленты Хабра, а в конце я покажу ещё несколько простых примеров интеграции.
Читать дальше →
Всего голосов 102: ↑95 и ↓7+110
Комментарии49

NocoDB, open-source аналог Airtable

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


Airtable — классный инструмент, заслуживший признание у бизнеса по всему миру. Возможность работать с базами данных в удобном no-code интерфейсе с разными представлениями и типами данных не нова, но если в Spreadsheets (где таблица даже не является базой) данные приходилось конвертировать плагинами и костылями, то в Airtable рабочий процесс такой же плавный и удобный, как в Notion при работе с текстом. Но есть один нюанс: Airtable работает по модели сервиса с ограниченным бесплатным функционалом, а код, конечно, закрыт. К счастью, опенсорс-сообщество равно или поздно создаёт открытые альтернативы всем популярным сервисам, и благодаря совместной работе двух десятков разработчиков появился NocoDB.
Читать дальше →
Всего голосов 25: ↑25 и ↓0+25
Комментарии1

Однобитный компьютер

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

Картинка для привлечения внимания:

Внимание! Под катом много картинок!

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

Читать далее
Всего голосов 82: ↑81 и ↓1+111
Комментарии54

Сайт сына маминой подруги

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

Бывает, когда меня нанимают починить или взять на поддержку сайт, то я открываю его исходники и хочу воскликнуть: "А у кого вы его украли?" Потому что качество исполнения и сложность технологий значительно превосходят обыденные для такого класса сайтов. После того как я озвучиваю цену за поддержку подобного сайта и получаю в ответ недоумение, мне хочется уже кричать: "Что происходит?!"

Читать далее
Всего голосов 220: ↑206 и ↓14+255
Комментарии366

Как американские военные думают и видят мир: визуальный и концепуальный язык

Время на прочтение4 мин
Количество просмотров9.4K
Вооруженные силы Соединенных Штатов действуют на концептуальном уровне, выходящем за рамки любой другой школы мысли, за исключением, возможно, академической философии, потому что у них гораздо больший бюджет.

image

Иногда по вечерам мне нравится уложить детей спать, налить себе что-нибудь и поискать в Интернете PDF-файлы, созданные военными, чтобы посмотреть на удивительную графику внутри них. Я думал, что я единственный человек с этим хобби, но несколько недель назад мой друг Финн Смит сказал мне, что ему тоже нравится военная графика в формате PDF. Интернет прекрасно объединяет людей.

Вскоре мы с Финном согласились, что «осведомленность о боевом пространстве» (“battlespace awareness”) — это особенно хороший термин для поиска. Лучший способ начать такой поиск — попросить Google выполнять поиск только в PDF-файлах в военной сфере. Как этот, например:

“battlespace awareness” filetype:pdf site:*.mil


Что такое «осведомленность о боевом пространстве»? Что ж, если посмотреть на очень-очень высоком уровне, различные части вооруженных сил США пытаются создать операционную систему для использования в ситуациях военного времени. Эти усилия привели к возникновению всевозможных проблем и возможностей финансирования. Как должен выглядеть интерфейс? Как следует идентифицировать врага на экране? Какую роль должны играть дроны?
Читать дальше →
Всего голосов 16: ↑14 и ↓2+15
Комментарии15

Простой, но умный ход, применяемый в zsh и fish для решения проблемы пропущенного символа перевода строки

Время на прочтение5 мин
Количество просмотров7.1K
Сегодня я хочу рассказать о том, как командные оболочки zsh и fish обнаруживают пропущенные символы перевода строки и выделяют соответствующие места в выводе программ, делая это в условиях, когда модель программирования Unix не даёт им возможности исследовать то, что выводят программы.

Большинство командных оболочек, включая bash, ksh, dash и ash, выводят приглашение командной строки в той позиции, в которой остался курсор после завершения работы предыдущей команды.



То, что приглашение (почти) всегда выводится в известном всем месте, в самой левой колонке следующей строки, объясняется тем фактом, что Unix-программы единодушно сотрудничают в деле размещения курсора именно в этой позиции после завершения их работы.
Читать дальше →
Всего голосов 54: ↑52 и ↓2+73
Комментарии5

Молекулярная биология. Houdini. NVIDIA 3080. Коронавирус vs иммуноглобулины

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

Ссылка на наш ролик

Это мой второй текст на Хабре. Он плавно вырос из первой статьи «Молекулярная биология и Houdini летом двадцатого».

Мы закончили наш новый (второй) ролик 12 апреля 2021 года, в День космонавтики. Дата получилась случайной — я очень хотел закончить работу в понедельник. Но это оказалось идеальное совпадение.  

Поехали!

Вот приблизительный диалог, который состоялся у нас с Валерией (молекулярный биолог) на старте проекта:

— А давайте сделаем английскую озвучку к нашему ролику про иммуноглобулин?

— А давайте.

— И заменим ротавирус на коронавирус. Они же очень похожи. 

— Да.

— Часть сцен нам даже не нужно будет переделывать. 

— Да.

— И перейдём с CPU-рендера на GPU. Откажемся от Blender в пользу DaVinchi Resolve. Тайминг у нас останется тот же — одна минута. Звук и вирус. Думаю, за пару месяцев мы всё закончим.

— Ага, наверное.

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

Как в одном атоме умещается вся физика

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


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

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

Удивительно, но всё, что мы знаем о Вселенной, можно так или иначе привязать к самой скромной из всех известных нам сущностей: к атому. Атом – это мельчайшая единица материи, всё ещё сохраняющая уникальные характеристики макроскопического мира, такие, как физические и химические свойства. И при этом это фундаментально квантовая сущность, со своими уровнями энергии, свойствами и законами сохранения. Более того, этот непримечательный атом связан со всеми четырьмя известными фундаментальными взаимодействиями. В единственном атоме на самом деле можно увидеть всю физику. И вот, что она может рассказать нам о Вселенной.
Читать дальше →
Всего голосов 23: ↑19 и ↓4+23
Комментарии11

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность