Search
Write a publication
Pull to refresh
397
217
Алексей Костенков @Erwinmal

Рептилоид

Send message

Углубленное знакомство с пространствами имен Linux. Часть 2

Reading time19 min
Views25K


В предыдущей части мы разобрали, чем являются пространства имен, и какую роль они играют в современных системах, после чего познакомились с двумя их видами: PID и NET. Во второй и заключительной части материала мы изучим пространства имен USER, MNT, UTS, IPC и CGROUP, а в завершении объединим полученные знания, создав полностью изолированную среду для процесса.
Читать дальше →

«Гандам» в гараже: Боевые человекоподобные роботы, самодельные и не только

Reading time8 min
Views4.8K

Иногда прогресс идёт слишком быстро и при этом одновременно слишком медленно. Насмотревшись на чудеса технологий и сравнив их с тем, что было десять лет назад, человек начинает представлять. Что уж ещё через десять лет-то будет вообще ого-го! Сбудутся все мечты, а жизнь станет похожа на ту, какой её показывают в фантастических фильмах. Но потом оказывается, что не всё так просто, и переселение в «Футураму» снова откладывается на неопределённый срок.
Читать дальше →

Рисование закрашенных кругов и треугольников на Raspberry Pi Pico с помощью MicroPython

Reading time5 min
Views4.8K
Библиотека framebuf — это то, что, при разработке на MicroPython, даёт нам возможности по работе с основными графическими элементами. Например — с текстовыми символами, с прямоугольниками, да и с отдельными пикселями. Это позволяет создать множество интересных изображений. Но весьма полезно оснастить MicroPython ещё и возможность рисования закрашенных треугольников, кругов и колец.

Закрашенные круги

В этом руководстве речь пойдёт о реализации этих полезных мелочей. Здесь же будут продемонстрированы возможности недорогого цветного дислея, состыкованного с Raspberry Pi Pico.
Читать дальше →

Абсолютный поворотный энкодер с однодорожечным кодом Грея

Reading time2 min
Views19K
В этом материале речь пойдёт о физической реализации абсолютного поворотного энкодера. Разрешение этого энкодера составляет 6 градусов, то есть — 60 шагов. Этого достаточно для того чтобы сделать на его основе часы. Здесь используется одношаговый код Грея.


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

Григорий Остер — Вредные советы для учителей программировать

Reading time15 min
Views29K

Есть у человека такой замечательный перк. Он может обучить другого человека чему-то полезному. Да, конечно, некоторые животные тоже так могут делать, но им далеко до того грандиозного масштаба, с которым мы обучаем друг друга. Мы это дело поставили на поток и проворачиваем в таких объёмах, что тут можно только позавидовать.

Доводилось ли Вам кого-нибудь учить?

Что? Вас уже корёжит и передёргивает от одного только упоминания этого мероприятия? Вы постоянно вспоминаете о том самом стажёре, который был настолько туп, что Вы просто не могли себя сдержать?

Кто-то обвалил собранную базу данных, потому что не увидел разницы между rm -rf ./old и rm -rf . /old?

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

Заходите, поговорим.
Читать дальше →

Gnuplot. Пакуем выходной svg — в один файл

Reading time12 min
Views5.3K

Старый мем на новый лад.

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

У меня появилась задача получать данные, а затем на удалённом сервере строить по ним графики и отправлять по почте. Причём графики должны иметь возможность отключать оси, приближать отдельные области графика, включать-выключать сетку. И вы знаете, gnuplot умеет выдавать подобные графики. Он даёт их в формате html или svg. Но вот незадача, вместе с этим файлом надо тащить ещё багаж данных в виде кучи javascript-файликов, картинок, css (в случае html), что сильно сужает применимость при отправке их по почте.

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

Делаем из смартфона websocket-пульт управления радиоуправляемой машинкой

Reading time8 min
Views19K

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

Страх и ненависть в RouterOS: что такое сетевое соединение в ядре Linux (часть 3 — NAT и сетевые соединения)

Reading time6 min
Views15K

В статье рассмотрено понятие «соединение» для TCP и UDP протоколов в ядре операционной системы Linux на примере работы оборудования MikroTik. Дополнительно рассматриваются особенности работы технологии NAT в указанном контексте. Материалы носят в основном теоретический характер и предназначены для людей, тонко настраивающих Firewall, Qos и маршрутизацию, где им придется непосредственно работать с рассматриваемыми connections.

Мы уже рассмотрели теоретическую части , где я подробно описал сущность сетевого соединения глазами ядра маршрутизатора. Далее была практическая части, где я закрепил информацию, в результате рассмотрения работы прикладного протокола DNS через подсистемы RouterOS.

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

Цикл статей не предназначен для новичков и может их только запутать. Полагаю, что читатель хорошо знаком с предметом разговора.
Читать дальше →

Углубленное знакомство с пространствами имен Linux. Часть 1

Reading time19 min
Views38K

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

Книга, статья или блог? Во что упаковать свои знания

Reading time10 min
Views7K

Знания, как и деньги, невозможно бесконечно копить: рано или поздно их приходится куда-то вкладывать. В случае с финансами это позволяет приумножить и сохранить капитал. Что же касается знаний, то упаковка их в удобную для восприятия форму повышает вашу экспертность, позволяет расширить круг общения, найти единомышленников, коллег, партнёров и даже заработать денег, ну и, конечно же, передать накопленный опыт. Да и вообще приятно, когда кто-то ссылается на тебя, как на авторитетный источник информации. И вот тут возникает вопрос: какую форму представления собственных знаний выбрать? Можно написать серию статей, организовать собственный блог или даже сочинить книгу, причём у каждого из этих вариантов есть как свои достоинства, так и недостатки. Давайте-ка их обсудим.
Читать дальше →

Страх и ненависть в RouterOS: что такое сетевое соединение в ядре Linux (часть 2 — практика)

Reading time9 min
Views18K

Ранее в первой (теоретической) части статьи была подробно описана сущность сетевого соединения глазами ядра маршрутизатора. В текущей части мы закрепим информацию в результате рассмотрения работы прикладного протокола DNS через подсистемы RouterOS.

В заключительной части речь пойдёт о диаграмме потока пакетов, при работе с которой важно понимать сущность рассматриваемого сетевого соединения, а также о не документированной в явном виде особенности работы NAT. Материала достаточно много, и чтобы читатель не потерял смысловую нить к концу статьи, она разделена на 3 части: теория, практика и особенность NAT.
Читать дальше →

Игры на советском калькуляторе МК-90

Reading time3 min
Views24K

В этой статье я хочу рассказать о своём опыте работы с микрокалькулятором «Электроника МК-90».

Будет рассмотрено несколько вариантов работы с модулем памяти калькулятора, а также несколько игр на нём.
Читать дальше →

Обзор и тестирование DC-DC модуля на чипе ME2188A

Reading time6 min
Views21K

В этом обзоре речь пойдёт об энергоэффективном повышающем DC-DC преобразователе на 3,3 В, выполненном в виде миниатюрного модуля размером всего 10х10 мм. Преобразователь сделан на специализированном чипе ME2188A и предназначен для питания различной автономной электроники, в том числе и популярных DIY решений на nRF24L01, LoRa модулях, ESP8266 и т. д.

Я дам общий обзор чипа ME2188A и проведу тестирование описываемого модуля в различных режимах, а затем проанализирую результаты и сделаю выводы о практической применимости данного модуля для питания энергоэффективных (батарейных) DIY устройств.
Читать дальше →

Апгрейд AMIGA 500 под современные реалии

Reading time9 min
Views6.8K

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

Страх и ненависть в RouterOS: что такое сетевое соединение в ядре Linux (часть 1 — теория)

Reading time6 min
Views37K

В статье рассмотрено понятие «соединение» для TCP и UDP протоколов в ядре операционной системы Linux на примере работы оборудования MikroTik. Дополнительно рассматриваются особенности работы технологии NAT в указанном контексте. Материалы носят в основном теоретический характер и предназначены для людей, тонко настраивающих Firewall, Qos и маршрутизацию, где им придётся непосредственно работать с рассматриваемыми connections.

В этой части статьи подробно описана сущность сетевого соединения глазами ядра маршрутизатора. В практической части закрепим информацию в результате рассмотрения работы прикладного протокола DNS через подсистемы RouterOS. В заключительной части речь пойдёт о диаграмме потока пакетов, при работе с которой важно понимать сущность рассматриваемого сетевого соединения, а также о не документированной в явном виде особенности работы NAT. Материала достаточно много, и чтобы читатель не потерял смысловую нить к концу статьи, она разделена на 3 части: теория, практика и особенность NAT.
Цикл статей не предназначен для новичков и может их только запутать. Полагаю, что читатель хорошо знаком с предметом разговора.
Читать дальше →

Поиск проблемных промисов в JavaScript

Reading time10 min
Views9.7K
JavaScript — это фантастический язык для серверного программирования, так как он поддерживает асинхронное выполнение кода. Но это ещё и усложняет его использование.

Асинхронность означает возможность написания кода, который не подвержен обычным проблемам, связанным с потокобезопасностью, и поддерживает выполнение множества задач в «параллельном» режиме. Например — ожидание считывания файла не блокирует другие вычисления.

Но небольшие ошибки в асинхронном коде могут приводить к появлению неразрешённых промисов. То есть — к участкам кода, выполнение которых, однажды начавшись, никогда не завершается.



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

Эти соединения что-то захватывало.

Речь идёт о кодовой базе в миллионы строк кода, которой в течение нескольких лет занимались десятки программистов. Может — проблема заключается в неразрешённых промисах? Я решил исследовать этот вопрос.
Читать дальше →

Экспонируй это

Reading time11 min
Views12K

Несколько лет назад я открыл для себя DigitalRev TV. В одном из выпусков в руки Кая и Лока попадает отечественный фотоаппарат «Любитель-166», но моё внимание привлёк совсем не он. Из кожаного футлярчика Кай достаёт маленькое устройство, которое включается в разъём гарнитуры телефона — экспонометр. С тех пор эта белая полусфера не даёт мне покоя. В статье хочу поделиться опытом создания подобного устройства своими руками.
Читать дальше →

Электрогитара для путешествий

Reading time8 min
Views14K

Некоторое время назад посетила меня мысль «хочу научиться играть на гитаре». Думал-думал и купил электрогитару. Примерно полгода я делал к ней подходы, но в итоге дело не пошло и гитара была продана.
Одной из причин «не пошло» стало то, что в тот момент жизни я активно перемещался и дома бывал недостаточно часто (либо время было позднее), чтобы постоянно тренироваться. Однако мысль о гитаре меня не отпускала. Прошло несколько лет, я поменял работу, появилась более-менее своя площадь и мысли снова начала крепнуть. Я снова купил электрогитару и начал заново учиться на ней играть. Но снова упёрся в то, что дома вечерами есть другие дела, а на даче время вроде и есть, да вот перспектива возить туда и обратно гитару на себе не радовала (машины нет).

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

Интересно? Тогда продолжим

Военные хитрости средних веков: диверсии с помощью «кошек-ракет»

Reading time3 min
Views17K
Кошка-ракета, XVII век (Источник: Wikimedia Commons/Folger Shakespeare Library, V.b.311, f. 129r)

«В войне все средства хороши… лишь бы вели к победе», — Так рассуждали когда-то и рассуждают до сих пор многие главнокомандующие. Хотя эта статья не будет поднимать вопрос оправданности или ошибочности подобной концепции, а лишь продемонстрирует частные случаи ее проявления в древности, в средние века и даже недалеком прошлом.
Читать дальше →

Information

Rating
28-th
Works in
Registered
Activity