Как стать автором
Обновить
58
30
Вадим Румянцев @vadimr

Разработчик аппаратно-программных комплексов

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

Задача о банкомате

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

Рассмотрим одну задачу, которая на leetcode маркирована как "medium", хотя на самом деле это невероятно сложная задача. Примечательна она тем, что допускает в разной степени оптимальные решения, самые упрощённые из которых действительно весьма просты, а самые оптимальные ещё не найдены современной наукой. В этой задаче ценно то, что на её примере можно изучать целый ряд техник программирования.

Читать далее

Магнитная лента и SSD: Huawei разработала гибридный накопитель на 72 Тб для «теплого» и «холодного» хранения данных

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

Привет, жители Хабра! Это Даша Волкова из МТС Диджитал. Huawei продолжает искать альтернативные пути для развития собственных технологий. Для компании под санкциями это крайне актуально, ведь речь идет о выживании отдельных направлений бизнеса, включая мобильные телефоны, чипы, накопители. Насколько можно судить, у китайцев все в порядке с поиском новых путей развития.

Недавно они представили технологию хранения на основе магнитно-электрического диска (magneto-electric disk, MED). В ней удалось объединить высокую производительность SSD с большой емкостью традиционных ленточных накопителей. Новинка предназначена для использования в ЦОД, для «теплого» (nearline или warm, об этом ниже) и «холодного» (архивного) хранения данных. MED призван заменить классические жесткие диски (HDD) и снизить зависимость от американских технологий.

Читать далее

Процессор и память ЭВМ ЕС-1030. Общие сведения, элементная база, электропитание

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

Новый цикл статей, посвящённый процессору и памяти хронологически второй и, вероятно, самой неудачной машины Единой системы — ЕС-1030.

Читать далее

Зачем я написал ещё одну утилиту мониторинга CPU для Мака

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

Привет, чат. Хочу во-первых рассказать вам историю разочарования в довольно известной утилите мониторинга потребления энергии и загрузки CPU для macOS — MX Power Gadget. А во-вторых, поделиться очень простой заменой, которую я собрал за пару вечеров — pgauge.

Читать далее

Почему Scheme?

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

Введение

Язык Scheme (произносится "ским"), которому в следующем году исполняется 50 лет, является языком программирования, занимающим необычное место среди прочих. Это язык, который гораздо больше изучают, чем потом на нём пишут. Скорее это язык для развития ума программиста, чем для написания коммерческого кода, хотя и примеры использования Scheme в коммерческой разработке тоже встречаются. На мой личный взгляд, Scheme идеален в качестве первого языка программирования в старшем школьном и институтском возрасте, а также идеально продолжает изучение Scratch в младших классах школы и Logo в средних классах.

Читать далее

Переезд программирования микроконтроллеров ATMEL на MAC OS с чипами ARM

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

Поскольку нативная ATMEL (MICROCHIP) студия 7.0 (и все предыдущие) не работает под маками, то приходится пользовать виртуальную машину с виндой собранной под ARM. Причем эта виртуальная машина своим эмулятором запускает приложение от Intel. И конечно никаких сходу драйверы не работают.

Что делать чтобы заработало.

Читать далее

Немного про UEFI и GRUB

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

В данной статье пойдёт речь об особенностях UEFI на примере переноса Debian Stretch с MBR на UEFI. Опишу так же разницу между MBR и UEFI, так как я её воспринимаю.

Кроме общей части, ключевая часть статьи про формирование GRUB EFI файла grubx64.efi во время grub-install и про то, что этот файл не так прост, как кажется на первый взгляд.

Читать далее

Мини-ПК ноября 2024 года: на какие модели стоит обратить внимание

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

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

GIMP Script-Fu Первый Дан. Шаг первый

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

Здравствуй Читатель! Если ты хочешь научиться программировать расширения для GIMP с помощью Script-fu тебе сюда. Я планирую опубликовать серию статей по данной теме. И эта статья только первый шаг в увлекательный мир лайф-кодинга. Что это значит? Расширение GIMP Script-fu представляет собой обёртку над интерпретатором языка scheme, который позволяет не только загружать и интерпретировать скрипты пользователя, но и работать с ними в интерактивном режиме, давая команды интерпретатору в режиме REPL, когда интерпретатор читает код(Read), оценивает(или ещё говорят вычисляет) то что прочитал(Eval), печатает результат(Print) и повторят всё это заново(Loop), короче REPL.

Предисловие

Однажды изучая книгу, Структура и интерпретация компьютерных программ(SICP), я наткнулся на задание по созданию языка функциональной геометрии придуманного Питером Хендерсоном funcgeo2.pdf. И я решил повторить эту реализация в качестве задания, закрепляющего тему процедурной композиции. Обычно задания я делал используя реализацию языка scheme - racket. Отличный язык для обучения основам программирования. Более простой курс этого обучения, пригодный для школьников описан в книге HtDP — "Как разрабатывать программы", перевод которой недавно вышел в печатном виде в России, есть также моя неофициальная попытка перевода, в виде html страниц: htdp-rus . Более продвинутый курс изучения компьютерных наук на языке Scheme описан в уже упомянутой книге SICP, обычно изучаемой уже студентами ВУЗов. Но в языке racket уже реализованы элементы этого языка манипулирования изображениями, поэтому я решил обратить своё внимание на язык script-fu в GIMP, про который мне на тот момент было практически ничего не известно, кроме того что он также является одной из разновидностью реализаций scheme. Результаты попытки реализации этого задания из SCIP и представлены в настоящей работе.

Читать далее

Сколькими способами можно записать факториал на Scheme?

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

Злые языки утверждают, что функциональные языки программирования — «языки для написания факториалов». Чаще всего так определяют язык Haskell, мы же начнем с того функционального языка, который сильно повлиял и на Haskell, и на подмножество средств для функционального программирования многих других языков — язык Scheme. По-крайней мере, map и for-each, filter и reduce, а так же apply и eval пришли в наши любимые языки программирования если не именно из Scheme, то в том числе и оттуда.


Рассмотрим некоторые возможные способы записи вычисления факториала. Заодно получится своеобразная ода языку программирования Scheme. Думаю, этот замечательный язык того вполне заслуживает.


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

Читать дальше →

Погружаемся в initrd

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

Приветствую! Меня зовут Валерий, я инженер операционных систем в секторе клиентской и мобильной ОС.

Сегодня хочу затронуть фундаментальные вопросы:
- процесс загрузки операционной системы в автоматизированное рабочее место (АРМ),
- распаковку начального образа оперативной памяти,
- подробный разбор initrd, что это такое и с чем его едят.

Этот материал поможет понять как природу загрузки ОС Astra Linux Special Edition в частности, так и загрузку GNU/Linux в целом.

Читать далее

Геймдев на Lisp. Часть 1: ECS и металингвистическая абстракция

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

В данной серии практических руководств мы подробно рассмотрим создание несложных 2D-игр на Common Lisp. Результатом первой части станет настроенная среда разработки и простая симуляция, отображающая двумерную сцену с большим количеством физических объектов. Предполагается, что читатель владеет некоторым языком программирования высокого уровня, в общих чертах представляет, как на экране компьютера отображается графика, и заинтересован в расширении своего кругозора.

Common Lisp — язык программирования с богатой историей, предоставляющий эффективные инструменты для разработки комплексных интерактивных приложений, каковыми являются видеоигры. Данная серия руководств ставит перед собой задачу наглядно продемонстрировать ряд возможностей CL, отлично вписывающихся в контекст разработки игровых приложений. Общий обзор таковых возможностей и особенностей Common Lisp приводится в статье Юкари Хафнер "Использование высокодинамичного языка для разработки".

Многие возможности, впервые появившиеся в Lisp, такие, как условный оператор if/then/else, функции как объекты первого класса, сборка мусора и другие давно перекочевали в мейнстримные языки программирования, однако есть одна уникальная возможность, которую мы рассмотрим сегодня, и это — металингвистическая абстракция.

Читать далее

Геймдев на Lisp. Часть 2: подземелья и интерфейсы

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

В первой части мы познакомились с архитектурным паттерном Entity-Component-System, часто используемым в разработке игр, и металингвистической парадигмой программирования, заключающейся в построении и использовании собственных языков, наиболее полно и точно описывающих предметную область создаваемой программы. На сей раз мы используем эти приёмы для создания небольшой, но полноценной игры на Common Lisp в жанре dungeon crawler (рус. надмозг. "подземное ползание") с пользовательским интерфейсом и рассмотрим на её примере системный дизайн реального игрового приложения с использованием ECS.

TL;DR: готовую к запуску демонстрацию (бинарники под все распространённые ОС) и её исходный код можно найти на github.

Читать далее

События и сенсоры в Scratch: как создать первую программу

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

В этом уроке мы познакомимся с базовыми командами в Скретч: событиями и сенсорами. И покажем, как новичкам создать простую программу. Инструкция предназначена для детей 7-8 лет и старше.

Scratch — визуальная среда, с которой многие дети начинают освоение программирования. Здесь можно познакомиться с логикой составления программы, изучить такие понятия, как переменная, цикл, условная конструкция и многое другое.

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

Читать далее

Некоторые малоизвестные фичи, фокусы и причуды языка C

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

В этом посте разобраны некоторые фокусы, причуды и фичи языка C (некоторые из них – весьма фундаментальные!), которые, казалось бы, могут сбить с толку даже опытного разработчика. Поэтому я потрудился сделать за вас грязную работу и (в произвольном порядке) собрал некоторые из них в этом посте. Примеры сопровождаются ещё более вольными краткими пояснениями и/или листингами (некоторые из них цитируются).

Конечно же, здесь я не берусь перечислять абсолютно всё, так как факты из разряда «функция nan() не может устанавливать errno, поскольку в определённых ситуациях поведёт себя как strtod()» не слишком интересны.

ВНИМАНИЕ: сам факт попадания тех или иных вещей в эту подборку  не означает автоматически, что я рекомендую или, наоборот, не рекомендую ими пользоваться! Некоторые из приведённых примеров никогда не должны просачиваться за пределы списков наподобие этого, тогда как другие примеры невероятно полезны! Уверен, что могу положиться на ваш здравый смысл, дорогие читатели.

Читать далее

Как генерируются UUID

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

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

Современную реализацию UUID можно проследить до RFC 4122, в котором описано пять разных подходов к генерированию этих идентификаторов. Мы рассмотрим каждый из них и пройдёмся по реализации версии 1 и версии 4.
Читать дальше →

Что должен знать каждый разработчик о вычислениях на GPU

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

Большинство программистов отлично разбираются в работе процессоров и последовательном программировании, поскольку с самого начала пишут код для CPU. Однако многие из них меньше знают о том, как устроены графические процессоры (GPU) и в чем заключается их уникальность. За последнее десятилетие GPU стали чрезвычайно важны благодаря широкому применению в глубоком обучении, и сегодня каждому разработчику необходимо обладать базовыми знаниями о том, как они работают. Цель этой статьи — дать вам это понимание. 

Читать далее

Зачем в iPhone чип, который убивает FaceID

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

Разбирался я в низкоуровневой работе камер iPhone, и дошёл до FaceID — системы распознавания лиц, используемой Apple для разблокировки смартфона. И наткнулся внутри на интересную вещь: чип, единственное предназначение которого в том, чтобы вывести из строя FaceID. Навсегда.

О том, как в iPhone вообще работает FaceID, где там этот чип стоит, что именно он делает, зачем его сделали таким злым, и как в ремонте справляются с этой напастью — под катом!

Читать далее

Как в разы увеличить дальность приема WiFi / BT при помощи паяльника

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

Ну или точнее при помощи двух паяльников. Несколько простых и эффективных решений, подходящих для компактных модулей с чип антенной.

Читать далее

Astra Linux и HAproxy

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

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

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

Читать далее

Информация

В рейтинге
225-й
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Специалист
Lead