Как стать автором
Обновить
17
0
Игорь Алимов @igoral

Разработчик

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

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

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



Введение


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


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


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


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

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

Как ускорить Python с помощью C-расширений. Часть 1

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

Привет, Хабр! Я – Игорь Алимов, ведущий разработчик группы Python в МТС Digital, работаю над продуктами Smart Rollout, B2B портал. В этой статье я расскажу о том, как писать быстрый код на Python с использованием C-расширений и способах победы над GIL.

Интересно? Добро пожаловать под кат!

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

Запустилась Дока — опенсорсный справочник по веб-разработке

Время на прочтение4 мин
Количество просмотров22K
Дока — это опенсорсный справочник с документацией, который веб-разработчики пишут для веб-разработчиков. Цель Доки — сделать документацию по веб-разработке практичной, понятной и не скучной.

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

Яндекс.Практикум поддерживает работу редакции Доки.


Читать дальше →
Всего голосов 38: ↑34 и ↓4+30
Комментарии86

Матрица-Перематрица

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

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

Для этого сделаем следующие шаги:

рассмотрим манипуляции с матрицами : транспонирование, умножение, градиент;

построим игрушечную нейронную сеть;

познакомимся с методом обратного распространения ошибки с использованием метода градиентного спуска.

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

Red pill
Всего голосов 9: ↑8 и ↓1+7
Комментарии0

Как получить давление в 100 000 атмосфер?

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

Многим любителям доступен достаточно простой способ получения поистине потрясающих давлений. Зачем это нужно и как это можно использовать — в этой статье.

Электрогидравлический эффект с первых дней его открытия был и остается постоянным источником рождения множества прогрессивных технологических процессов, которые сейчас уже широко применяются во всем мире. Этим обусловливаются его непреходящее значение и все возрастающий интерес, проявляемый к нему в самых различных отраслях науки, техники и экономики.
Читать дальше →
Всего голосов 106: ↑103 и ↓3+100
Комментарии55

Что означает RISC и CISC?

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

Многие говорят, что разница между RISC и CISC стала несущественной. Так ли это? И если нет, то в чем разница между современными RISC и CISC процессорами?

Компания Apple выпустила процессор Apple Silicon M1, который произвел фурор. Теперь вы можете задаться вопросом, чем он отличается от процессоров Intel и AMD? Вероятно, вы слышали, что M1 — процессор с архитектурой ARM, а ARM — это RISC, в отличие от Intel и AMD.

Если вы читали про разницу между микропроцессорами RISC и CISC, то вы знаете, что множество людей утверждают об отсутствии практической разницы между ними в современном мире. Но так ли это на самом деле?
Читать дальше →
Всего голосов 76: ↑72 и ↓4+68
Комментарии89

Пишем и тестируем миграции БД с Alembic. Доклад Яндекса

Время на прочтение20 мин
Количество просмотров75K
Приложения на бэкенде могут работать с самыми разными базами данных: PostgreSQL, SQLite, MariaDB и другими. Перед разработчиками встает задача реализовать возможность легко и безопасно изменять состояние БД. Менять нужно как структуру базы, так и сами данные от одной версии приложения к другой.


В докладе я поделился опытом использования Alembic — хорошо себя зарекомендовавшего инструмента для управления миграциями. Почему стоит выбрать именно Alembic, как с его помощью подготовить миграции, как их запускать (автоматически или вручную), как решить проблемы необратимых изменений, зачем тестировать миграции, какие проблемы могут выявить тесты и как их реализовать — на все эти вопросы я постарался ответить. Заодно поделился несколькими лайфхаками, которые сделают работу с миграциями в Alembic легкой и приятной.
Читать дальше →
Всего голосов 13: ↑10 и ↓3+7
Комментарии14

Главный секрет блока else в циклах пайтона

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

Это короткая статья для новичков. Наверняка вы знаете, что в пайтоне для циклов for и while предусмотрен блок else. И с этим блоком возникает много путаницы, потому что его действие на первый взгляд неинтуитивно. Приходится тратить немного времени или заглядывать в документацию каждый раз, когда он встречается:


for f in files:
    if f.uuid == match_uuid:
        break
else:
    raise FileNotFound()

Когда будет исключение: когда файл не найден? Когда найден? Когда список пуст? На этот вопрос сложно ответить, потому что блок else находится на одном уровне с блоком for и кажется, что это какое-то условие, относящиеся к самому списку; например, когда for не нашел ни одной записи. Но достаточно знать главный секрет блока else для циклов, чтобы больше никогда не терять на это время:

Читать дальше →
Всего голосов 90: ↑83 и ↓7+76
Комментарии161

Информация

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