Pull to refresh
27
0
Send message

Как я пять раз переделывал умный дом — и выкинул половину ненужного

Level of difficultyEasy
Reading time13 min
Views21K

Я начал проектировать умный дом еще до ремонта. Сразу проложил витую пару, разбил нагрузки по группам, подобрал оборудование, поставил контроллер. Все проектировал сам, под себя. А потом понял: умный дом не строится один раз. Он изменяется вместе с тем, как ты живешь. И за три года я переделал его пять раз (ну, потому что могу).

В этой статье я расскажу, как все устроено у меня сейчас — и почему многое из задуманного я в итоге выкинул. Что работает стабильно, а что мешает. Какие сценарии прижились, а какие пришлось отключить. Почему я установил Sprut.Hub, но все равно держу Home Assistant. И зачем в квартире больше кабелей, чем светильников.

Эта статья не про то, «как надо» или «как не надо». Она про то, как получилось у меня — и почему я этим доволен. 

Читать далее

Что не пишут в документации Kotlin Contracts: тёмные закоулки и пасхалки

Level of difficultyHard
Reading time9 min
Views642

Контракты в Kotlin — это «тёмная лошадка» языка — они загадочные и чуть-чуть магические. И под капотом у них спрятано гораздо больше, чем можно найти в официальной документации.

Привет! Меня зовут Виталий. Я работаю Android‑разработчиком в Альфа‑Банке. В этой статье я делюсь пасхалками и неожиданными фичами Kotlin компилятора, связанными с Kotlin Contracts: как парсится список эффектов, как работает новый Contracts API изнутри, и почему, чёрт возьми, на уровне компилятора можно использовать контракты не только на уровне функций.

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

Читать далее

Как не облажаться с типами данных в PostgreSQL

Level of difficultyMedium
Reading time19 min
Views7.6K

Недавно вышла отличная книга PostgreSQL Mistakes and How to Avoid Them от Jimmy Angelakos — системного архитектора, практика и давнего участника сообщества PostgreSQL. Книга подробно разбирает распространённые ошибки, с которыми сталкиваются разработчики и администраторы при работе с PostgreSQL, и предлагает практичные решения: от тонкостей конфигурации и миграции до антипаттернов в SQL и выбора типов данных.

Я перевёл одну из ключевых глав этой книги — про неправильное использование типов данных. В ней подробно объясняется, почему, например:

timestamp without time zone может ломать логику расчёта интервалов;

money — это не то, чем кажется (и почему он опасен);

char(n) и varchar(n) не дают ожидаемой экономии и даже вредны;

serial — это прошлый век, а identity — настоящее.

Глава будет полезна всем, кто работает с PostgreSQL в проде — особенно backend-разработчикам, независимо от языка и фреймворка. Если вы проектируете схемы БД, пишете SQL-запросы или просто хотите избежать неприятных грабель — стоит прочитать.

Читать далее

ORM на три звена. В 120 раз быстрее SQL?

Level of difficultyMedium
Reading time45 min
Views12K

Нет, речь не про кэш в памяти. Так было бы слишком просто. У нас сегодня будет препарирован ORM, который честно запрашивает данные у реляционной СУБД, маппит в объекты, подключает связи и отдаёт в логику приложения в виде объектов. И всё на порядки быстрее, чем прямой запрос из кода приложения.

Да, здесь есть нюанс. Об этом нюансе, а также о том, зачем я написал в пятый раз кастомный ORM и будет эта статья. Эта разработка тесно переплетена с моей личной историей, когда я переходил с одной работы на другую, а затем был уволен. Я не хочу оставлять сухой технический текст, поэтому эта статья будет скорее рассказом моей работе в этой компании.

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

Читать далее

Как мы внедрили векторный поиск в Postgres Pro

Level of difficultyEasy
Reading time7 min
Views3.8K

В статье разберемся, что такое векторный поиск, какие проблемы он решает, и как расширение pgpro_vector для Postgres Pro позволяет реализовать эти мощные возможности прямо в реляционной базе данных, без необходимости развертывать отдельные специализированные системы.

Читать далее

Азы контейнеризации: namespaces и cgroups

Level of difficultyMedium
Reading time4 min
Views5K

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

Читать далее

Почему мы все еще храним код в текстовых файлах?

Reading time5 min
Views34K

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

Читать далее

Новые векторные СУБД и другие инструменты для эмбеддингов и RAG

Reading time6 min
Views3.8K

Ранее в блоге beeline cloud мы рассказывали об открытых СУБД для систем ИИ. Продолжим тему и рассмотрим еще несколько находок в этой области — разносторонние инструменты, упрощающие работу с эмбеддингами, семантическим поиском и RAG.

Читать далее

Проект умного дома IoT LikNode

Reading time3 min
Views8.1K

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

Данное устройство разрабатывалось на основе микроконтроллера esp32 (ap), esp8266 (node) и смартфона os Android. 

Программа для микроконтроллеров написана на языке Си для андроид на языке Котлин (скачать возможно по ссылке download). 

Каждый из микроконтроллеров подключенный в данном проекте имеет одинаковые функции. Максимальное количество node можно подключить 20 штук.

Читать далее

DIY: Делаем тупой кондиционер умным и управляем им через телеграм бот

Level of difficultyMedium
Reading time7 min
Views12K

Наступило лето, а вместе с ним и жара. И вот тут-то и приходит на помощь кондиционер. Но что делать, если у вас нет умного кондиционера, а обычный кондиционер не позволяет управлять им удаленно? Ответ прост: сделать его умным своими руками!

Устали вставать ночью, чтобы выключить кондиционер? Или хотите управлять им из другой комнаты? Тогда это руководство для вас!

Читать далее

Огромный гайд по настройке рабочего окружения: Linux, VScode, Python

Level of difficultyEasy
Reading time29 min
Views53K

Привет всем!

Как обычно это и бывает, я накопил критическую массу мыслей, и пора их как-то систематизировать, чтобы вы, мои замечательные читатели Хабра, могли что-то извлечь из моего опыта или поделиться своим :)

Я люблю и одновременно ненавижу статьи-обзоры в стиле «10 программ для {whatever}». Ненавижу — потому что их очень легко делать, вбил в гугл «программа для X», взял первые 10 ссылок, статья готова. Я называю такие статьи «лёгкий рейтинг». А люблю я их за то, что даже если 9 пунктов — чушь полная, то десятый, как правило, годный, я узнаю что-то новое, это что-то облегчает мне жизнь и позволяет мне быть более продуктивным.

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

Статья получилась ОГРОМНАЯ, и у меня был большой соблазн разбить её на сотню статей поменьше, чтобы в каждой ставить ссылки на свой телеграм-канал и получать гонорар за каждую по отдельности. Но я не буду. Пусть знания будут сгруппированы вместе. Welcome!

Читать далее

Умное зеркало + Home Assistant и все ради того, чтобы выводить слова песни с Алисы от Яндекса

Level of difficultyEasy
Reading time6 min
Views11K

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

Читать далее

Что такое PPEM и как он освободит DBA от рутинной работы?

Level of difficultyEasy
Reading time7 min
Views1.6K

Если вы, как DBA устали тратить время на изучение статистики производительности, анализ логов и настройку разрозненных инструментов мониторинга при администрировании большого количества баз данных, то у нас есть решение — PPEM (Postgres Pro Enterprise Manager). Он объединяет возможности визуализации метрик, управления экземплярами и резервным копированием, анализ производительности в единую графическую консоль, позволяя локализовать проблему и быстро принять меры. Расскажем, как мы решали «головные боли» DBA по мониторингу и аналитике БД.

Читать далее

Трассировка запросов в Postgres с расширением pg_trace

Level of difficultyMedium
Reading time11 min
Views3.1K

В рамках статьи расскажем о расширении pg_trace, предназначенном для сбора трассировок запросов в PostgreSQL, соберем трассировку на реальном примере работы приложения, оценим влияние сбора трассировки на производительность и агрегируем данные трассировки.

Читать далее

Как провести нагрузочное тестирование БД PostgreSQL и ничего не забыть

Level of difficultyEasy
Reading time14 min
Views3.9K

При нагрузочном тестировании баз данных Tantor Postgres или других на базе PostgreSQL с использованием стандартного инструмента pgbench отсутствие фиксации деталей окружения (таких как конфигурация СУБД, характеристики сервера, версии ПО) часто приводит к нерепрезентативным результатам и необходимости повторных тестов. В статье рассматривается разработанный автором инструмент pg_perfbench, который призван решить эту проблему.

Читать далее

Умный дом на вырост

Level of difficultyMedium
Reading time4 min
Views7.2K

🧱 Умный дом как часть готового ремонта для перепродажи? Почему бы и нет. Рассказываю, как мы подошли к проекту: провели электрику с запасом, поставили базовые контроллеры и реле, заложили кабели под климат, протечки, мультимедиа. Получилась универсальная, но расширяемая система. Хорошо продаётся — и не мешает развиваться.

Читать далее

Все, что нужно PostgreSQL: быстрые диски, дорогой процессор и терабайты RAM

Level of difficultyMedium
Reading time13 min
Views17K

В облачном мире PostgreSQL возникает много вопросов. Какую конфигурацию выбрать для старта кластера? Сколько оперативной памяти и ядер CPU нужно под мою базу данных? Нужны ли под такой профиль нагрузки высокочастотные процессоры? Какое должно быть соотношение RAM к Storage в кластере? Хватает ли ресурсов и на системные службы, и на кэширование запросов? Не переплачиваю ли я?

Всем привет! Меня зовут Гришин Александр, я руководитель по развитию продуктов хранения данных в Selectel, отвечаю за объектное S3-хранилище и облачные базы данных. В этой статье я поделюсь своими практическими рекомендациями и ориентирами по планированию использования ресурсов кластера в PostgreSQL — в зависимости от типа и профиля нагрузки, размера данных и характера доступа к ним. Погнали!
Читать дальше →

Форма на сайте = штраф от 100 тысяч. Многие даже не подозревают

Level of difficultyEasy
Reading time3 min
Views77K

Я часто общаюсь с предпринимателями и вижу: даже те, кто давно в бизнесе, не знают, что если на сайте есть форма с запросом имени или телефона — они уже считаются оператором ПД и обязаны соблюдать требования закона.

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

Читать далее

Что нового в Hibernate 7.0

Level of difficultyEasy
Reading time8 min
Views5.4K

Команда Spring АйО перевела статью про новые функции и возможности, добавленные в Hibernate ORM версии 7.0 : новая лицензия Apache 2.0, переход на Jakarta Persistence 3.2 и Java 17, замена HCANN на Hibernate Models, а также множество улучшений для работы с JSON, XML, enum, soft-delete и запросами.

Добавлено экспериментальное API для batch-операций, Set-returning functions и удобный доступ к кэшу первого уровня.

Читать далее

KStorage — единый подход к key-value хранилищам на Kotlin Multiplatform

Level of difficultyEasy
Reading time5 min
Views1.5K

Типобезопасное Key-Value хранилище для Kotlin Multiplatform. Единый API без боли, бойлерплейта и потери рассудка

Прочитать и убрать бойлерплейт из проекта
1
23 ...

Information

Rating
Does not participate
Works in
Registered
Activity