Pull to refresh
25
0

кодер-самоучка, пробую себя в переводе

Send message

“Сигма дельта” или как сделать хорошую звуковую карту из STM32F401

Reading time 5 min
Views 16K

Жене мешают смотреть последние новости из телефона и телевизора, приходящие поесть (первично ?) и поиграть на компьютере (вторично?) внуки. Она их конечно любит , но звуки их взаимодействия с компьютером ее сильно раздражают. Пришлось надеть на внуков наушники. А звуковой выход у компа в неудобном месте и каждый хочет со своей громкостью. Ну пришлось разработать внешнюю USB звуковую карточку. Хочется и красиво и качественно. Впрочем, внуки скорее , только повод для поностальгировать по своей старой специальности радиоконструктора и вообще, так как последние двадцать с лишним лет я далеко от нее и пишу заклинания программы реконструкции изображений для медицинских томографов в больших и не очень фирмах , то есть энжинер-погромист по специальности. Хотел написать статью на эту очень интересную и важную тему (компьютерная томография), но выяснилось что мне нельзя по условиям контракта ...

Итак вернемся к нашим баранам внукам и звуковым карточкам, у нас есть в нескольких экземплярах(овер дофига,купил пока были дешевые) модули из Китая:

1. Stm32f401ccu6 black pill – сейчас $3 за штучку

2. I2S DAC Decoder GY-PCM5102 ->$3.5 за штучку

3 .SPI display ips 1.3 inch 240x240 (controller st7789) ->$7 за два

Сначала построим максимальную конфигурацию из двух экранов и I2S GY-PCM5102.

Конфигурируем куб, разбавляем его говно код своим г. кодом, добавляем ФАПЧ ( фазовой автоматической подстройки частоты или PLL на ихнем ) , для согласования скоростей приходящих от компьютера данных и выдачи на i2s внешний ЦАП (DAC). Хмм , звучит очень неплохо, явно лучше большинства встроенных звуковушек. PCM5102 – весьма и весьма качественный ЦАП за свою цену в пару- тройку долларов за модуль с чипом. Добавляем отображение индикаторов уровня на паре неплохих дисплеев st7789 ...

Итак вернемся
Total votes 42: ↑41 and ↓1 +40
Comments 62

Использование библиотеки LLVM для генерации кода регулярных выражений

Reading time 20 min
Views 4.5K

Введение


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


Возникает вопрос — как можно ускорить построение конечных автоматов по регулярным выражениям? У меня как-то раз возникла идея, как это можно сделать — для этого можно применить настоящий компилятор, который может генерировать максимально эффективный машинный код. Эту идею я решил опробовать на практике, используя библиотеку LLVM как компилятор/оптимизатор для регулярных выражений. Что из этого вышло, будет изложено ниже в данной статье.

Читать дальше →
Total votes 19: ↑19 and ↓0 +19
Comments 12

Необычный дуалбут: ноутбук с «двойным дном»

Reading time 15 min
Views 80K

Не так давно на Habr Q&A я наткнулся на интересный вопрос — как сделать, чтобы два жестких диска не видели друг друга? Чтобы вирус, попав на одну систему, никоим образом не мог заразить другую. В ответах предлагали достаточно стандартные способы — использовать полнодисковое шифрование, отключить диск в диспетчере устройств и даже поставить переключатель на питание. Но что если взглянуть на задачу совершенно с другого угла и сделать всё средствами самого HDD? Да-да, сегодня мы снова погружаемся в пучины модификации прошивок и реверс-инжиниринга!
Узнать подробности
Total votes 361: ↑357 and ↓4 +353
Comments 122

Чем поживиться айтишнику на барахолке?

Reading time 4 min
Views 63K


Приезжая в Питер, нужно обязательно посетить Эрмитаж, Русский музей и блошиный рынок на Уделке. Я бываю там не менее пары раз в год и хожу в это уникальное место, как в музей. Там можно найти не просто всё, а вообще всё, даже то, чего искать не собирался. Антикварную посуду и копаные старинные монеты, советские документы и виниловые пластинки, самовары и пионерские горны, а еще — кучу всевозможного барахла, которое слегка помятые граждане продают прямо с разложенных на земле клеёнок.

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

Читать дальше →
Total votes 112: ↑104 and ↓8 +96
Comments 120

Люди не меняют свою жизнь, потому что в глубине души знают — они фиговые специалисты

Reading time 4 min
Views 44K

Сколько людей в стране не любят свою работу и вообще ненавидят свою жизнь? Три года назад мне в руки попало одно очень занятное исследование Google: Barriers, motives & triggers of entrepreneurship. Три тысячи респондентов, очищенная выборка, больше ста российских городов, интервью дольше 20 минут. Там были несколько чисел, которые меня, мягко говоря, ошеломили.

Читать далее
Total votes 127: ↑84 and ↓43 +41
Comments 250

Структурированное сопоставление с шаблонами в Python 3.10

Reading time 12 min
Views 5.9K

Версия Python 3.10, работа над которой началась 25 мая 2020 года, запланирована к выпуску  4 октября 2021 года и будет содержать ряд интересных нововведений. Одним из многообещающих нововведений будет структурированное сопоставление с шаблонами (structured pattern matching). Для этого будет введена специальная инструкция сопоставления с шаблонами match. Функциональность сопоставления с шаблонами несомненно вызовет интерес, в особенности у программистов ФП, где она играет важную роль. Остальные новинки новой версии языка описаны здесь.

Читать далее
Total votes 14: ↑14 and ↓0 +14
Comments 15

Руководство по работе с фреймворком Kotlin Exposed

Reading time 16 min
Views 18K

В этой статье мы рассмотрим, как направлять запросы к реляционной базе данных с помощью Exposed.

Exposed — это открытая библиотека, разработанная компанией JetBrains. Она распространяется по лицензии Apache и позволяет использовать идиоматический API Kotlin для реализации некоторых реляционных баз данных от различных поставщиков.

Exposed можно использовать как в качестве высокоуровневого языка DSL в SQL, так и в качестве облегченной технологии ORM (объектно-реляционного отображения). В этом руководстве мы рассмотрим оба варианта использования.

Читать далее
Total votes 6: ↑5 and ↓1 +4
Comments 4

Какие CSS-генераторы можно использовать в 2021 году

Reading time 2 min
Views 36K
image

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

Схема работы таких генераторов проста: достаточно ввести через простой визуальный интерфейс нужные вам параметры и на выходе получить готовые CSS-стили. Далее полученный код нужно скопировать и добавить в свой проект.

Известный full-stack разработчик Марко Денич предлагает свою подборку лучших CSS-генераторов. Возможно, о каких-то из них вы не знали, и, познакомившись с ними сейчас, начнёте использовать в работе.
Читать дальше →
Total votes 39: ↑39 and ↓0 +39
Comments 9

Вы можете создавать эти элементы, не используя JavaScript

Reading time 4 min
Views 16K

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

Читать далее
Total votes 24: ↑19 and ↓5 +14
Comments 23

Задача о свободно висящей цепочке

Reading time 3 min
Views 16K
Когда-то очень давно, когда я был еще студентом, сидя на одной скучной лекции я задумался над тем, с какой частотой может колебаться в одной плоскости свободно висящая веревка или цепочка заданной длины и какова будет при этом ее форма, если колебания будут небольшими. Я помню, что решил эту задачу, но сейчас, по прошествии многих лет, уже забыл подробности того, как я это сделал. Однако, мне стало интересно восстановить это решение максимально подробно и поделиться им со всеми, кому это было бы интересно. Что из этого получилось, читайте под катом.
Читать дальше →
Total votes 39: ↑38 and ↓1 +37
Comments 22

Численный FORTH

Reading time 10 min
Views 6.5K

Форт и сейчас известен, главным образом, среди разработки встроенных систем, как что-то вроде необычайного высокоуровневого ассемблера, например, для микроконтроллеров - AmForth и Mecrisp. Однако, когда-то давным давно был известен в другой ипостаси - как язык программирования научных приложений.

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

Таунсенд К., Фохт Д. ПРОЕКТИРОВАНИЕ И ПРОГРАММНАЯ РЕАЛИЗАЦИЯ ЭКСПЕРТНЫХ СИСТЕМ НА ПЕРСОНАЛЬНЫХ ЭВМ. М.: Финансы и статистика, 1990.

Читать далее
Total votes 19: ↑18 and ↓1 +17
Comments 8

Легенда на ладони: создаём крошечный компьютер PDP11

Reading time 13 min
Views 22K
image

Введение


2020 год был странным для всех в мире. Конкретно в моём случае мне пришлось находиться далеко от своего дома в Шанхае, потому что, когда COVID нанёс удар, мы были в Европе, и Китай усложнил процедуру пересечения границ примерно до конца года.

Отсутствие доступа к моей лаборатории и лишь ограниченный доступ к электронному оборудованию сильно сдерживал мои возможности, однако создание новых проектов не исключалось полностью [перевод на Хабре]. После завершения этого проекта я снова попал в проектный вакуум: всё, что у меня было с собой — это куча комплектов разработки ESP32 и желание что-нибудь создать.

Поэтому я подумал: почему бы не создать ещё один эмулятор? У меня был подобный опыт, поэтому это не будет слишком сложно, и как только я доберусь до своей лаборатории, то, вероятно, смогу превратить его в ещё одну миниатюрную работающую модель компьютера, похожую на то, что я сделал с крошечным Macintosh Plus [перевод на Хабре]. Но какой компьютер выбрать на сей раз? Меня всегда интересовал PDP11. Хоть у меня никогда его не было (и я даже на нём не работал), в своё время он находился в авангарде компьютерных технологий. Его архитектура набора команд (ISA) повлияла на довольно значительное количество архитектур, появившихся позже, а солидная доля ПО, которое мы используем по сей день, основывается на идеях, впервые реализованных на PDP11.
Total votes 61: ↑61 and ↓0 +61
Comments 11

Установка Linux на калькулятор. Часть II

Reading time 11 min
Views 17K


Как вы помните, в прошлой статье мне удалось стартануть linux на калькуляторе. Однако, работать на нём было невозможно, и я считаю это незачётом. Тогда я понял, что кроличья нора достаточно глубока и придётся полностью пересобирать всю систему, разбираясь с кодом. В итоге, я кратко прошёлся по всем этапам, которые описывал автор проекта. И результат полностью того стоит. Итак, поехали!
Total votes 95: ↑94 and ↓1 +93
Comments 31

Пиксели, Excel, Kotlin и немного ностальгии…

Reading time 7 min
Views 9.2K

Всем привет! Идея для этой статьи пришла еще месяц назад, но в силу занятости на работе времени катастрофически не хватало. Однажды вечером в YouTube я наткнулся на ролик о создании игры-платформера в стиле пиксельной графики. И тут мне вспомнились мои первые уроки информатики в школе, где мы "рисовали на Бейсике" и играли в "ворона ест буквы".

Читать далее
Total votes 25: ↑25 and ↓0 +25
Comments 25

Маленькие задачи, а доверия ещё меньше

Reading time 6 min
Views 8.5K


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


Доверие — высочайшая форма мотивации. Оно выявляет в людях самое лучшее.

Стивен Р. Кови, «Семь навыков высокоэффективных людей»

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

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

«Наконец-то, у нас появился Винсент, я могу поручить ему заняться A и B; Тед будет делать C, D
и E, Джен займётся F, G и H, а я смогу добраться до I, J, K, L и M».

Самое важное здесь то, что A и B были крупными задачами, например, целыми продуктами или большими системными библиотеками. На их создание и поддержку уходило всё твоё время. Они были делегированной ответственностью, а не просто задачами. Было просто при этом и управлять людьми. Если ты не справляешься, то начальник тебе об этом скажет.
Читать дальше →
Total votes 51: ↑47 and ↓4 +43
Comments 8

57 отборных репозиториев для всех разработчиков Python

Reading time 8 min
Views 26K
Специально к старту нового потока курса «Python для веб-разработки» представляем подборку из 57 репозиториев, которые будут полезны как начинающему, так и опытному разработчику: это репозитории с ответами на вопросы собеседований, репозитории с книгами, небольшие, но полезные консольные инструменты и проекты, которые вдохновят вас написать красивый, работающий и полезный код.


Приятного чтения!
Total votes 22: ↑19 and ↓3 +16
Comments 15

Тренируемся дома: отжимания по программе Пола Уэйда

Reading time 21 min
Views 244K

image


Представляю программу Тюремных Тренировок Пола Уэйда. Начнём с серии классических упражнений со своим весом для верхней части тела — отжиманиям.


Тюремные Тренировки представляют собой самые лучшие и эффективные методы обучения работе со своим весом, из когда-либо существовавших. Многие из этих забытых, но действенных техник находятся на грани исчезновения. Современный бодибилдинг меняет наше мышление, навязывая свои убеждения. И даже заключённые сейчас получили доступ к тренажёрным залам.


Серия сосредоточена на цепочке из 10 последовательных упражнений. Когда освоите одно упражнение, то перейдёте к следующему и так далее…
Мы называем базовые упражнения как «10 уровней», и достигнув 10 уровня, вы станете сильнейшим настолько, насколько это возможно для человека в этих движениях. По этой причине, последняя ступень именуется «уровнем мастера». Вам станет понятнее, как это работает, если дополнительно ознакомитесь с книгой Тренировочная Зона (Издательство Питер).

Читать дальше →
Total votes 157: ↑137 and ↓20 +117
Comments 198

Автотесты на базе playwright и jest

Reading time 4 min
Views 16K

Долгое время основным инструментом для автоматизации тестирования был Selenium. Однако в настоящее время на рынке представлено несколько достойных альтернатив, таких как Cypress, Puppeteer и Playwright. Playwright мы и рассмотрим в данной статье.


Playwright — это node js библиотека для автоматизации тестирования с единым API для различных браузеров (Chromium, Firefox and WebKit). Разработанная компанией Microsoft. По моему мнению основным преимуществом Playwright является его тесная интерграция с браузерами и возможность взаимодействовать с браузерами на недоступном для Selenium уровне.

Читать дальше →
Total votes 3: ↑1 and ↓2 -1
Comments 3

Как читать файлы конфигурации в тестах с Selenium на Python

Reading time 10 min
Views 6.8K
Привет, хабр. В преддверии старта курса «Python QA Engineer» подготовили для вас еще один интересный перевод.





Руководство, описанное в этой статье, поможет вам в тестировании веб-интерфейсов. Мы создадим простое надежное решение для тестирования веб-интерфейса с помощью Python, pytest и Selenium WebDriver. Мы рассмотрим стратегии построения хороших тестов и паттерны написания правильных автоматизированных тестов. Конечно же, разработанный проект по тестированию сможет послужить хорошей основой для создания собственных тест-кейсов.
Читать дальше →
Total votes 11: ↑7 and ↓4 +3
Comments 2

Отчаянный поиск квадрокруга

Reading time 19 min
Views 30K

Поиск таинственной математики, на которой основана фигура в iOS




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



В знаменитом интервью 1972 года Чарльз Имз кратко ответил на несколько фундаментальных вопросов о природе дизайна. Отвечая на первый вопрос, он определил дизайн как «план компоновки элементов для достижения определённой цели».

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

Хотя я не дизайнер по профессии — я разработчик Figma, веб-инструмента совместного проектирования — несложно заметить, что замечания Имза относятся и к моей работе. Вместо элементов UI я компоную выраженные в коде математические концепции для создания инструментов и функций. И ограничения времени, простоты, поддержки и даже эстетики играют похожую доминирующую роль в моей работе.
Читать дальше →
Total votes 28: ↑27 and ↓1 +26
Comments 16

Information

Rating
Does not participate
Location
Украина, Украина
Date of birth
Registered
Activity

Specialization

Software Developer, Fullstack Developer