Pull to refresh
@resetmeread⁠-⁠only

Скромный пастух нулей и единиц…

Send message

Как фронтендеру сделать интерфейс дружелюбнее к пользователю. Коллекция HTML/CSS лайфхаков

Level of difficultyMedium
Reading time6 min
Views16K
image

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


Мне всегда нравились красивые и удобные интерфейсы. Желая сделать лучше для пользователя, я потратил не один день. Так я начал коллекционировать HTML и CSS лайфхаки, которые улучшают впечатление пользователя от интерфейса. В итоге у меня получился внушительный список.


Сегодня хочу поделиться с вами некоторыми практиками из него. Я постарался собрать наиболее простые, чтобы вы могли быстро и безболезненно внедрить их.


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

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

Kubernetes как PaaS: максимум возможностей без разработки. Часть 2

Reading time12 min
Views2.5K

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

Читать далее

Обработка аудио на ESP32

Level of difficultyMedium
Reading time15 min
Views12K

В этой статье я хочу поделиться своим опытом портирования проекта распознавания музыкальных жанров аудиозаписей на ESP32-C3. Исходный проект взят из репозитория книги TinyML-Cookbook_2E.
При анализе речи или других звуков важно выделить такие характеристики, которые отражают строение сигнала, но при этом не зависят от конкретных слов, громкости и других мешающих факторов. Для этого используют cepstrum, mel-cepstrum и MFCC - это шаги преобразования, которые переводят звук в удобную для анализа форму.

Читать далее

HamPi: универсальный дистрибутив радиолюбителя

Reading time8 min
Views13K

В мире радиолюбителей постоянно появляются новые инструменты, упрощающие жизнь как новичкам, так и опытным энтузиастам. Один из них — дистрибутив HamPi для Raspberry Pi. Эта специализированная система объединяет в себе все необходимые программы для цифровых видов связи, работы с SDR-приемниками, APRS и многого другого.

Чтобы начать экспериментировать с радио, достаточно просто установить HamPi на компактный одноплатный компьютер — все готово к работе с первых минут. Есть, конечно, нюансы, и их немало. Ниже расскажу о дистрибутиве, его установке, настройке и использовании. Поехали!

Читать далее

Golang Top 15 ошибок

Level of difficultyEasy
Reading time9 min
Views6.4K

Golang Top 15 ошибок

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

Читать далее

Системные вызовы Linux, которые должен знать каждый разработчик

Level of difficultyMedium
Reading time7 min
Views16K

Многие разработчики работают в Linux-среде, но не всегда глубоко понимают, как взаимодействие с ОС происходит на низком уровне. На собеседованиях всё чаще спрашивают про системные вызовы Linux. В этой статье мы рассмотрим, какие вызовы встречаются чаще всего и как они работают.

Читать далее

Как принимать метеорологические спутники, не привлекая внимание санитаров

Level of difficultyEasy
Reading time13 min
Views15K

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

Читать далее

Пример проектирования, ориентированного на домен: От хаоса к чистой архитектуре

Level of difficultyMedium
Reading time14 min
Views7K

Исследование принципов Domain-driven Design (DDD) на примере кейса "Аутсорсинг"

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

Читать далее

Язык мироздания — теория групп и теория категорий

Level of difficultyMedium
Reading time11 min
Views16K

Около полутора лет назад я опубликовал на Хабре статью под названием "Слово Божие — функциональное программирование как основа Вселенной", в которой я рассказывал про лямбда-исчисление и про то, как программу любой сложности можно свести к алгоритму на базе всего трёх SKI-комбинаторов или же одного единственного йота-комбинатора. В ней мы разобрались с алфавитом божественного языка, на котором написана книга мироздания. Теперь же пришло время разобраться с его грамматикой.

Читать далее

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

Level of difficultyMedium
Reading time5 min
Views5.2K

В современной силовой электронике полумостовые преобразователи (half-bridge converters) занимают особое место как одна из самых универсальных и широко применяемых топологий для преобразования DC-DC и DC-AC. Сочетая простоту конструкции с высокой эффективностью, эти преобразователи позволяют преобразовывать входное напряжение в более высокое или низкое выходное напряжение. Так же данный тип преобразователя обеспечивает гальваническую развязку выхода от входа, что значительно расширяет области применения данной топологии. Так же следует добавить что транзисторы в данной топологии работают с более низкими напряжения, в отличии от пуш-пульной схемы где на каждый транзистор приходится удвоенное входное напряжение.

Читать далее

F(), Func() и никаких циклов: как Django думает в SQL

Level of difficultyEasy
Reading time4 min
Views4.2K

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

Сегодня рассмотрим, как использовать F()-экспрессии и Func()-обёртки в Django для того, чтобы выполнять арифметику, условия и преобразования не в Python, а на стороне базы данных. Один SQL-запрос может заменить десятки строк кода не теряя в качестве кода.

Читать далее

Визуальное представление структуры btree индекса PostgreSQL

Level of difficultyMedium
Reading time17 min
Views9.6K

В статье визуализируется структура индекса и показывается, как меняется структура индекса типа btree в PostgreSQL. Это полезно для понимания, как выглядят индексы btree. Также рассматривается FILLFACTOR и пример исследования структуры индекса в целях определения, как перераспределяются индексные записи при включении в структуру индекса новых блоков (страниц). Создадим простую таблицу, индекс, вставим три строки:

Читать далее

Поиск ликвидных облигаций с использованием Python

Level of difficultyEasy
Reading time5 min
Views14K

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

Пять лет назад написал Node.js-скрипт, затем адаптировал его для Google Таблиц, а теперь разрабатываю Python версию. При помощи сообщества на GitHub эта Python версия идёт к созданию полноценной библиотеки с расширенными возможностями: автоматический поиск ликвидных облигаций, расчет денежных потоков, сбор новостей по эмитентам и вычисление оптимального объема покупки. Все это направлено на помощь простым инвесторам, вроде нас с вами, чтобы оперативно находить выгодные инвестиционные инструменты и принимать решения на основе актуальной информации.

Проект полностью open source.

Автоматизация работы с облигациями

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

Reading time4 min
Views37K
Любая система, работающая с платежами, должна быть надежной и отказоустойчивой.

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

Сейчас покажу, как это сделать.
Читать дальше →

Rust: объясняем Владение и Субструктурные типы на пальцах

Reading time14 min
Views5.5K

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

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

Читать далее

Планировщик Go — самый подробный гайд простым языком

Level of difficultyMedium
Reading time27 min
Views47K

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

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

Приступить к проектированию

Machine learning на ESP32

Level of difficultyMedium
Reading time34 min
Views13K

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

В этом примере используются измерения акселерометра MPU 6050 и машинное обучение (ML) для распознавания трех жестов рукой с помощью ESP32. Данные из сенсора распознаются на микроконтроллере и результат выводится в консоль в виде названия жеста и вероятности результата. Модель ML использует TensorFlow и Keras и обучается на выборке данных, представляющей три различных жеста: "circle" (окружность), "cross" (пересечение) и "pad" (поступательное движение).

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

В следующей части рассмотрим как настроить Bluetooth LE (BLE) на ESP32 и Android устройстве. Передадим квантированный набор ускорений сенсора по BLE. Настроим Модель ML для распознания жестов на Android.

Читать далее

Гиббсовское сэмплирование на Python

Level of difficultyEasy
Reading time5 min
Views1.5K

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

Сегодня разбираем реализацию Gibbs Sampling на Python. Это один из методов Монте‑Карло по цепям Маркова (MCMC), который решает такую задачу:

«У нас есть сложное многомерное распределение, но мы не можем из него напрямую сэмплировать. Однако, если у нас есть условные распределения, то мы можем брать новые точки, обновляя поочередно каждую координату.»

Читать далее

Магия CSS на практике: советы по вёрстке от гика. Часть 6

Level of difficultyMedium
Reading time6 min
Views6K


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


Сегодня мы рассмотрим:

  • мой подход к написанию стилей для динамической сетки без использования БЭМ-модификаторов;
  • как я перестал писать свойство text-decoration со значением none для элемента <button>;
  • способ для вычисления значения свойства width в зависимости от контента элемента;
  • почему вам стоит удалить все стили с использованием псевдо-класса :focus.

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

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

Information

Rating
Does not participate
Registered
Activity