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

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

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

CPU планировщики в Linux

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

В статье будет рассказано про основные алгоритмы, которые ядро Linux использует для планирования задач, готовых к выполнению. Как влияет приоритет задач и указанная для неё политика на то, как она будет получать процессорное время и сколько.

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

Разработка и применение систем разграничения доступа на базе атрибутов

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

Привет! Меня зовут Михаил, в Positive Technologies я руковожу бэкенд-разработкой метапродукта MaxPatrol O2. В этой статье я расскажу, зачем нам в компании понадобилось разграничение доступа на основе атрибутов. Его еще называют ABAC (attribute-based access control). Рассмотрим, чем ABAC отличается от других способов разграничения доступа, как это реализуется и что мы в итоге сделали у себя.

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

Логирование: понятие, механизмы и уровни

Уровень сложности Простой
Время на прочтение 5 мин
Количество просмотров 8.1K

Что такое логи?

Лог (log) - это хронологическая запись наиболее значимой информации о работе системы. Подобная фиксация событий дает представление и том, что происходило в системе, в какой именно момент, какой пользователь спровоцировал то или иное событие, какие ошибки возникли и т.д.

Читать далее
Всего голосов 6: ↑4 и ↓2 +2
Комментарии 7

Заблуждения программистов об именах

Время на прочтение 3 мин
Количество просмотров 86K
Две недели назад на Хабре публиковался перевод «Заблуждения программистов о времени», который по своей структуре и стилю основан на этом классическом тексте Патрика Макензи, опубликованном два года назад. Поскольку заметка о времени была крайне благоприятно воспринята аудиторией, то, очевидно, имеет смысл перевести и исходную статью об именах и фамилиях.

Джон Грэхем-Камминг (John Graham-Cumming) сегодня жаловался в своём блоге, что компьютерная система, с которой он работал, не приняла его фамилию из-за недопустимых символов. Конечно, там нет недопустимых символов, потому что любой способ, как человек представляет себя, — по определению — является подходящим идентификатором. Джон выразил сильную досаду насчёт данной ситуации, и он имеет полное право, потому что имя — суть нашей индивидуальности, практически по определению.
Читать дальше →
Всего голосов 94: ↑78 и ↓16 +62
Комментарии 223

Python Multiprocessing. Обмен данными между процессами. Передача объектов пользовательских классов

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

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

Модуль Multiprocessing позволяет использовать так называемый истинный параллелизм, то есть создавать процессы, которые выполняются полностью независимо друг от друга.

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

О том, как с этим обходиться, я и расскажу в этой статье.

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

Darcs и Pijul. Системы контроля версий для тех, кто любит математику и не любит деревья

Уровень сложности Простой
Время на прочтение 6 мин
Количество просмотров 5.7K

Небольшой обзор систем контроля версий, альтернативных git, и основанных на математической теории. Речь пойдёт о двух системах распределённого контроля версий: Darcs, написанной на Haskell, и Pijul, написанной на Rust. Обе они сейчас активно развиваются и предлагают свои сетевые репозитории. Оказалось, что про них на Хабре толком нет ничего, тогда как про git образовался целый хаб. Поскольку я люблю и использую Haskell, я остановил свой выбор на Darcs, и вот, спустя два месяца непрерывной работы над библиотекой геометрической алгебры для hackage, я готов поделиться впечатлениями от её использования.

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

Обратный маятник простым PID-регулятором

Уровень сложности Простой
Время на прочтение 2 мин
Количество просмотров 3.8K

Как-то давно для выставки делал небольшую инсталляцию. Привёрнутый маятник. Вот где пришлось настраивать ПИД-регуляторы. Маятник удерживается в верхнем положении двумя ПИД регуляторами, соединенными каскадом. Первый быстрый (настоящий ПИД, т.к. пришлось настраивать дифференциальную составляющую) реагирует на угол отклонения маятника от вертикали и подыгрывает положением точки подвеса. Но, поскольку ход точки подвеса ограничен, то второй медленный ПИ-регулятор стремит точку подвеса к центру рельсов. Выход ПИ – регулятора является уставкой угла для первого быстрого ПИД. Действительно, стандартных функциональных блоков - ПИД регуляторов часто бывает вполне достаточно для стабилизации даже очень неустойчивых систем. Но, например, в этом проекте есть больше математики: "Все, что вы хотели знать об обратном маятнике"

Читать далее
Всего голосов 8: ↑6 и ↓2 +4
Комментарии 12

Компилятор за выходные: синтаксические деревья

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

Вам когда-нибудь приходилось задаваться вопросом, как работает компилятор, но так руки и не дошли разобраться? Тогда этот текст для вас. Мне тоже не доводилось заглядывать под капот, но тут так случилось, что мне нужно прочитать курс лекций о компиляторах местным третьекурсникам. Кто встречался с некомпетентными преподавателями? Здравствуйте, это я :)

Итак, чтобы самому разобраться в теме, я собираюсь написать транслятор с эзотерического языка программирования wend (сокращение от week-end), который я только что сам придумал, в обычный ассемблер. Задача уложиться в несколько сотен строк питоновского кода. Основной репозиторий живёт на гитхабе (не забудьте заглянуть в мой профиль и посмотреть другие tiny* репозитории).

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

Эльфы и пингвины: что такое ELF и как он работает в Linux?

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

image


Всем привет! С вами как всегда я, Аргентум. Сегодня я расскажу и поведаю вам древние тайны, которые хранят горные старцы-сисадмины — тайны об эльфах, и как они взаимодействуют с древним народцем пингвинов. Дамы и господа, встречайте — статья о работе ELF и двоичных файлов в Linux!


Что такое ELF? Чем он отличается от PE в Windows? И многие другие ответы на ваши вопросы.


Перед тем как погрузиться в технические детали, будет нелишним объяснить, почему понимание формата ELF полезно. Это позволяет изучить внутреннюю работу операционной системы. Когда что-то пошло не так, эти знания помогут лучше понять, что именно случилось, и по какой причине. Также возможность изучения ELF-файлов может быть ценна для поиска дыр в безопасности и обнаружения подозрительных файлов. И наконец, для лучшего понимания процесса разработки. Даже если вы программируете на высокоуровневом языке типа Go или Rust, вы всё равно будет лучше знать, что происходит за сценой.


Итак, зачем изучать ELF?


  • Для общего понимания работы операционной системы
  • Для разработки ПО
  • Цифровая криминалистика и реагирование на инциденты (DFIR)
  • Исследование вредоносных программ (анализ бинарных файлов)
Читать дальше →
Всего голосов 58: ↑52 и ↓6 +46
Комментарии 22

Выполняем сторонние программы на микроконтроллерах с Гарвардской архитектурой: как загружать программы без знания ABI?

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


Зачастую в процессе разработки собственных устройств или моддинга уже существующих, встаёт задача выполнения стороннего кода: будь то ваши собственные программы с SD-флэшек, или программы, написанные другими пользователями с помощью SDK для вашего устройства. Тема компиляторов и кодогенерации достаточно сложная: чтобы просто загрузить ELF или EXE (PE) программу, вам нужно досконально разбираться в особенностях вашей архитектуры: что такое ABI, релокации, GOT, отличие -fPIE от -fPIC, как писать скрипты для ld и т. п. Недавно я копал SDK для первых версий Symbian и основываясь на решениях из этой ОС понял, каким образом можно сделать крайне «дешевую» загрузку любого нативного кода практически на любом микроконтроллере, совершенно не вникая в особенности кодогенерации под неё! Сегодня мы с вами: узнаем, что происходит в процессе загрузки программы ядром Linux, рассмотрим концепцию, предложенную Symbian Foundation и реализуем её на практике для относительно малоизвестной архитектуры — XTensa (хотя она используется в ESP32, детали её реализации «под капотом» для многих остаются загадкой). Интересно? Тогда добро пожаловать под кат!
Читать дальше →
Всего голосов 63: ↑62 и ↓1 +61
Комментарии 37

Пишем консольное приложение для работы с базой данных на Python

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

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

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

Вероятно, вы неправильно используете метод __init__ в Python

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

Автор статьи обращает внимание на проблему, которая заключается в использовании метода __init__ для сложной логики создания объектов, что приводит к разрастанию и усложнению кода. Статья предлагает использовать вспомогательные методы, чтобы разделить логику создания объектов на более мелкие и понятные части. Это упростит код и облегчит понимание того, как объекты создаются и инициализируются.

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

Python (+numba) быстрее Си — серьёзно?! Часть 1. Теория

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

Давно собирался написать статью о numba и о сравнении её быстродействия с си. Статья про хаскелл «Быстрее, чем C++; медленнее, чем PHP» подтолкнула к действию. В комментариях к этой статье упомянули о библиотеке numba и о том, что она магическим образом может приблизить скорость выполнения кода на питоне к скорости на си. В данной статье после небольшого обзора по numba (часть 1) чуть более подробный разбор этой ситуации (часть 2).


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

concurrent.futures в Python

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

Привет, Хабр! Сегодня мы взглянем на одну из самых интересных библиотек в Python для работы с параллельным выполнением задач - concurrent.futures.

Каждый разработчик сталкивается с ситуациями, когда необходимо выполнять задачи параллельно. Это может быть I/O-операции, которые блокируют основной поток, или вычисления, требующие большого объема процессорных ресурсов. Здесь на помощь приходит concurrent.futures - модуль, предоставляющий высокоуровневый интерфейс для асинхронного и параллельного выполнения задач.

Какие преимущества предоставляет этот модуль?

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

Почему вы не тренируетесь?

Уровень сложности Средний
Время на прочтение 29 мин
Количество просмотров 68K
Читать далее
Всего голосов 67: ↑46 и ↓21 +25
Комментарии 228

Создание библиотеки Python: полный гайд

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

Создайте свою библиотеку для Python и загрузите на PyPi, сейчас!

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

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

Шаг в астрофизику с помощью Python

Уровень сложности Простой
Время на прочтение 13 мин
Количество просмотров 9K
Давным-давно, человечество поднимало взоры к небесам и задавало себе вопросы о природе вселенной. Сегодня астрофизика стала ключом к пониманию космических явлений. Мы исследуем черные дыры, изучаем движение планет и звёзд, разгадываем секреты галактик.

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


Читать дальше →
Всего голосов 24: ↑20 и ↓4 +16
Комментарии 24

Теория типов

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

Мы так привыкли к типам, что редко задаёмся вопросом, что же они такое на самом деле? А главное - почему возникла необходимость в их использовании? Этот поверхностный обзор сделан для того, чтобы продемонстрировать, как типы и другие связанные абстракции являются следствием из обобщения условий различных задач.

Что можно узнать из этой статьи?
Всего голосов 75: ↑75 и ↓0 +75
Комментарии 70

Изобретение неодимового магнита: как Масато Сагава и Джон Кроат изменили современный мир

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

Неодимовые магниты сейчас с отрывом самый распространённый тип постоянных магнитов, занимая порядка 95% всего мирового рынка. Правда, они не просто неодимовые — это сплав редкоземельного металла неодима, бора и железа (полная формула Nd2Fe14B).

Появление этой технологии в 80-х годах буквально перевернуло промышленность: начиная от приводов CD-проигрывателей или HDD накопителей, заканчивая серводвигателями, шаговыми двигателями и МРТ аппаратами. В ближайшие несколько лет ожидается, что объём продаж неодимовых магнитов перевалит за 20 млрд долларов в год, во многом за счёт массового перехода на электромобили.

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

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

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

Прожарка java.lang.String

Уровень сложности Простой
Время на прочтение 5 мин
Количество просмотров 6.5K

Давайте абьюзить баг в java.lang.String, который позволит делать очень странные строки. Мы сделаем "Hello World", который не начинается с "Hello" и покажем, что не все пустые строки равны между собой. Научимся прожаривать строки в чужих классах.

Вкуснотища. Читать далее.
Всего голосов 30: ↑28 и ↓2 +26
Комментарии 14
1

Информация

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