Search
Write a publication
Pull to refresh
11
0

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

Send message

Пишем простой драйвер Linux для устройства, ничего не зная о драйверах и о USB

Level of difficultyEasy
Reading time12 min
Views14K

Пару месяцев назад я купил Nanoleaf Pegboard Desk Dock — последнее слово в технологиях USB-хабов с RGB-светодиодами и крючками для устройств. К сожалению, это чудо инженерной мысли поддерживает только гейминговые операционные системы — Windows и macOS, поэтому возникла необходимость в драйвере для Linux.

В своих постах я уже настраивал Windows VM с пробросом USB и пытался выполнить реверс-инжиниринг официальных драйверов. При этом я задумался, а нельзя ли написать производителю и попросить у него спецификации или документацию его протокола. К моему удивлению, техподдержка Nanoleaf ответила мне всего через четыре часа, предоставив полное описание протокола, используемого Desk Dock, а также полосами RGB-светодиодов. Документация по большей мере подтвердила то, что я обнаружил самостоятельно, но также я нашёл в ней пару других мелких подробностей (например, управление питанием и яркостью), которые были мне неизвестны.

Сегодня мы попробуем написать драйвер на основании протокола (который я изучил реверс-инжинирингом), параллельно сверяясь с официальной документацией. Однако здесь есть одна небольшая проблема: раньше я ни разу не писал драйверов для устройств под Linux, а с USB-устройствами взаимодействовал только как пользователь.

Читать далее

Отказаться от Postman, перейти на Bruno и жить счастливо

Level of difficultyEasy
Reading time14 min
Views26K

Если вы работаете с API и вам надоело вручную протыкивать запросы в Postman, сталкиваться с платными ограничениями и невозможностью нормально делиться коллекциями с командой — вы не одиноки. Хватит это терпеть!

Именно с этими проблемами я столкнулся как системный аналитик в банке. Postman оказался неудобным, закрытым и дорогим инструментом для командной работы. Это заставило меня искать альтернативу, и я нашёл её в бесплатном и открытом API-клиенте Bruno.

В этой статье расскажу, как с ним работать и какие сценарии он закрывает в реальной проектной работе.

Туториал с признаками обзора

Firebird Conf 2025

Level of difficultyMedium
Reading time17 min
Views1K
Добрый день. 29 мая в Москве прошла конференция Firebird Conf 2025. Она была организована компанией РЕД СОФТ. На ней были озвучены доклады как о планах развития Firebird и РЕД Базы Данных, так и об опыте использования и внедрения Firebird в различных организациях. Мы взяли интервью у организаторов и докладчиков, поговорили с ними о докладах и впечатлениях от конференции. Надеюсь, вам понравятся наши интервью.
Читать дальше →

Эти CSS-техники устарели

Level of difficultyMedium
Reading time6 min
Views20K


Привет, Хабр!


Общаясь с коллегами, я заметил, что они незнакомы с последними возможностями CSS. Как обычно, у всех свои причины. У кого-то много повседневной рутины. Кому-то в принципе неинтересно, что нового происходит в CSS. А кто-то по привычке использует подходы десятилетней давности и ему норм.


Как фанату CSS, мне грустно. Сколько же прикольных вещей проходит мимо них. Да и их код может быть меньше, надёжнее и проще для понимания. В общем, я собрал несколько фрагментов кода, которые были популярны давным-давно, и переписал их с помощью новых возможностей CSS.


Давайте посмотрим, что я вам подготовил.

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

Как устроены переменные в Python: глубокое погружение в память и типы данных

Level of difficultyMedium
Reading time9 min
Views13K

В мире Python существует много мифов о том, как работают переменные. Одни говорят, что "всё передаётся по ссылке", другие утверждают обратное. Правда, как обычно, лежит где-то посередине и гораздо интереснее простых объяснений. В этой статье мы детально разберём механизмы работы с памятью в Python 3.13, изучим различия между mutable и immutable объектами, и поймём, когда Python создаёт новые объекты, а когда переиспользует существующие. Дабы статье пожить подольше - рассмотрю только версию 3.13.

Жми, если не Гей

Блеск и нищета системы KPI

Reading time21 min
Views16K

Многие из вас — особенно, те, кто успели поработать в крупных компаниях или сменили много мест работы — наверняка, слышали аббревиатуру «KPI».

Эти три буквы обозначают то, что часто любят руководители и не менее часто ругают сотрудники. А именно, когда людей в компании хвалят или ругают, в зависимости от значений тех или иных показателей.

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

В этой статье рассказано:

— что такое система KPI
— как она теоретически должна работать
— как она работает на самом деле
— что это значит для нашего понимания, как устроен мир и как лучше всего с ним взаимодействовать

Читать далее

Поднимайте If вверх, опускайте For вниз

Level of difficultyEasy
Reading time3 min
Views32K

Эта статья — краткая заметка о двух связанных друг с другом эмпирических правилах.

Поднимайте If вверх

Если внутри функции есть условие if, то подумайте, нельзя ли его переместить в вызывающую сторону:

// ХОРОШО

fn frobnicate(walrus: Walrus) {

... }

// ПЛОХО

fn frobnicate(walrus: Option<Walrus>) {

let walrus = match walrus {

Some(it) => it,

None => return,

};

...

}

В подобных примерах часто существуют предварительные условия: функция может проверять предусловие внутри и «ничего не делать», если оно не выполняется, или же может передать задачу проверки предварительного условия вызывающей её стороне, а при помощи типов (или assert) принудительно удовлетворить этому условию. Подъём проверок вверх, особенно в случае предварительных условий, может иметь лавинообразный эффект и привести к уменьшению общего количества проверок. Именно поэтому и возникло это правило.

Читать далее

Почему я исправляю баги бесплатно и как это изменило мою карьеру

Level of difficultyEasy
Reading time6 min
Views15K

8 лет назад я исправил опечатку в чужом репозитории, а сейчас регулярно делаю коммиты в проекты, которые использую, и даже вошел в core team библиотеки с 27000 звёзд на GitHub

В этой статье покажу, что участие в Open Source проще, чем кажется. Расскажу, как регулярная работа с чужим кодом помогает быстрее разбираться в незнакомых кодовых базах, писать тесты и лучше документировать решения. А также объясню, почему публичная активность на GitHub выгодно отличает вас от других разработчиков, особенно в эпоху повсеместного использования ИИ.

Читать далее

Отменить ЕГЭ? А после — градусники?

Level of difficultyMedium
Reading time8 min
Views22K

В последнее время всё чаще звучит критика в адрес современной системы образования. Главным «виновником» называют ЕГЭ — якобы именно он породил так называемое «поколение ЕГЭ» — людей с худшим уровнем знаний по сравнению с «нормальными» выпускниками прошлого. Некоторые даже требуют отмены ЕГЭ, полагая, что это автоматически решит все проблемы.

Но так ли всё однозначно? Попробуем разобраться: как устроен ЕГЭ, в чём его настоящие достоинства, и почему претензии к нему чаще всего не по адресу.

Читать далее

Курсы по тестированию — развод, маркетинг и пустышки

Level of difficultyEasy
Reading time18 min
Views13K

В этой статье — без прикрас и маркетинговой мишуры. Жестко, честно и по фактам рассказываю, как устроены мошеннические курсы в тестировании (и не только), как вас обманывают, и на что стоит обращать внимание, чтобы не слить деньги впустую.

Читать далее

Важное обновление BatteryTest 2

Level of difficultyEasy
Reading time3 min
Views4.8K
Месяц назад я завершил создание прибора для измерения ёмкости батареек и аккумуляторов, который могут повторить все желающие из доступных недорогих модулей. Благодаря идеям читателей, в программу прибора были внесены важные изменения. Кроме того, удалось найти подходящий модуль MOSFET для отключения нагрузки.



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

Основные функции ETL-систем

Reading time7 min
Views354K
ETL – аббревиатура от Extract, Transform, Load. Это системы корпоративного класса, которые применяются, чтобы привести к одним справочникам и загрузить в DWH и EPM данные из нескольких разных учетных систем.

Вероятно, большинству интересующихся хорошо знакомы принципы работы ETL, но как таковой статьи, описывающей концепцию ETL без привязки к конкретному продукту, на я Хабре не нашел. Это и послужило поводом написать отдельный текст.
Читать дальше →

Scala/Chisel против SystemVerilog: генерируем сложные цифровые схемы

Level of difficultyMedium
Reading time16 min
Views7.4K

В наши дни общепризнанный стандарт для RTL-описаний — это язык SystemVerilog, но популярность сейчас набирает его альтернатива, Chisel. Далее я расскажу подробней об этом языке, его преимуществах, недостатках и рисках, связанных с переходом на Chisel со стандартного стека. Отдельно остановлюсь на функциональном программировании — возможности Chisel, которой нет в SystemVerilog, — и на дополнительных возможностях Chisel, улучшающих механизм переиспользования модулей. А также о том, почему код на Chisel менее подвержен ошибкам и всегда работает. Ну, почти всегда.

Читать далее

Почему заводить «Алису» в доме с детьми — плохая идея?

Level of difficultyEasy
Reading time6 min
Views90K

Здравствуйте, я мальчик Паша и я не умею пользоваться контрацептивами могу себе позволить много наследников. А ещё я люблю новые технологии.

И вот к чему это привело...

Случайный PCB-art, «сломавший головы» сотням студентов-электронщиков

Level of difficultyEasy
Reading time7 min
Views29K
image

Так случилось, что в 2017 году на «добровольных началах» я стал разработчиком задания демонстрационного экзамена по электронике для выпускников колледжей. Специфика самого экзамена заслуживает отдельного обсуждения, мы коснемся ее совсем кратко. В этой статье я хочу рассказать о проектировании электронной схемы, которая легла в основу экзамена.

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

Одна React-задача, демонстрирующая ключевые навыки на собеседовании

Level of difficultyEasy
Reading time7 min
Views31K

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

Читать далее

Как работает кнопка Mute на Яндекс Станции. Подробный разбор логики и схем

Level of difficultyMedium
Reading time7 min
Views46K

Привет! На связи Геннадий «Крэйл» Круглов из команды, которая разрабатывает аппаратную часть Яндекс Станций. С кем-то из читателей Хабра мы уже могли познакомиться в рамках мероприятий Я.Железа, где делимся опытом разработки устройств.  

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

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

Читать далее

Старики будут править IT

Level of difficultyEasy
Reading time6 min
Views111K

Периодически на просторах интернета натыкаюсь на различные мнения по-тому, что в "Нарнии для разработчиков" нельзя находиться людям, которые уже преодолели барьер в 30 лет. И вообще этим людям пора либо перейти в менеджмент или запускать процесс само-утилизации и просто исчезнуть, для того, чтобы "молодые, успешные" 20 летние сеньоры пришли и начали перфомить так, что 30 летнему деду и не снилось.

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

Читать далее

Доктора Кнут, Моррис и Пратт, или Как я перестал бояться и полюбил префикс-функцию

Level of difficultyMedium
Reading time9 min
Views16K

Если вы не знаете, что такое префикс-функция строки, не знаете, как она вычисляется, или, что самое главное, не до конца понимаете, почему алгоритм вычисления префикс-функции работает за линейное время, то эта статья для вас.

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

Читать далее

Obsidian — Notion свободного человека

Level of difficultyEasy
Reading time5 min
Views120K

Notion объявили, что уходят из России и 9 сентября блокируют аккаунты пользователей.

Пока не понятно до конца, касается ли это в том числе пользователей, которые используют бесплатный функционал.

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

Я сам долгое время пользовался Ноушеном. Первое знакомство было умопомрачительно, захватывающе. Чего только стоят мои конспекты с футбольными тактиками, где я ковертировал видео с матчей и тренировок в гифки, а потом добавлял к конспектам.

Год назад перевёл все свои заметки в Обсидиан. Причина простая: Обсидиан может гораздо больше вещей, чем Notion.

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

Читайте в статье
1
23 ...

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity