Обновить
6
0
Иван GiB$ON@gibson_dev

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

Отправить сообщение

Расстаемся с облаками на примере Sonoff

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели38K


Привет всем!

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

Но почти всё так или иначе привязано к облаку. Этот пост о том, как отвязать устройства Sonoff от облаков.

Да, я знаю, что таких постов очень много и уже все рассказали, как прошить Sonoff. Но я хочу показать как можно отвязать от облака Sonoff DW2, не прошивая его. Прошить его в любом случае не получится, ведь там не ESP8266, а другая микросхема.

Что понадобится для освобождения от облаков:
  • Sonoff Basic, Sonoff 4CH — понадобится паяльник и USB-TTL преобразователь;
  • Sonoff DW2 — собственный сервер.

В посте я использую ESPHome + Home Assistant + Docker + PHP, вы можете использовать любое другое ПО, тут главное принцип работы.
Читать дальше →

Исследуем саундбар Yamaha YAS-109, часть 2

Уровень сложностиСложный
Время на прочтение12 мин
Охват и читатели14K

Приветствую!

В конце первой части статьи по исследованию саундбара Yamaha я упомянул о плачевном состоянии его безопасности. Но вот то, насколько оно плачевное, я тогда представлял не до конца.

И что, сифонит таки?

Самый быстрый поиск пути на Go без аллокаций и СМС

Время на прочтение10 мин
Охват и читатели12K

Алгоритмы важны. Но реализовать их можно очень по-разному.


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


Любите оптимизации, специализированные структуры данных и трюки с битами? Тогда скорее под кат!


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

Настройка производительности диска и памяти в Linux

Уровень сложностиСредний
Время на прочтение15 мин
Охват и читатели23K

В отличие от таких операционных систем как HPUX (dbc_min_pct, dbc_max_pct) или AIX (minperm%, maxperm%), в Linux нет возможности настраивать размер кэша страниц, читаемых с диска (страничный кэш, page cache). Под страничный кэш Linux использует всю доступную память. Размер страничного кэша можно увидеть в /proc/meminfo в параметре "Cached". В /proc/meminfo есть также значение "Buffers", которое часто путают с размером страничного кэша. "Buffers" — это память, содержащая сырые дисковые данные (raw disk data) и выступающая в роли промежуточного буфера между процессами, ядром и диском.

В этой статье рассмотрим, как Linux работает с памятью, и, в частности, со страничным кэшем, а также исследуем, как доступный объем памяти влияет на производительность буферизованного ввода-вывода (buffered IO).

Читать далее

Практика Go — Основы

Уровень сложностиПростой
Время на прочтение17 мин
Охват и читатели19K

Сборник реальных советов по написанию сопровождаемых программ на языке Go. Автор - Dave Cheney, опытный разработчик на Go и один из его ведущих пропагандистов.

Читать далее

Практика Go — Concurrency

Уровень сложностиПростой
Время на прочтение12 мин
Охват и читатели19K

Сборник реальных советов по написанию сопровождаемых программ на языке Go. Автор - Dave Cheney, опытный разработчик на Go и один из его ведущих пропагандистов.

Читать далее

Спасаем мебельную фабрику от банкротства: достигли ежемесячного оборота продаж диванов без шоурума в 12 млн рублей

Уровень сложностиПростой
Время на прочтение14 мин
Охват и читатели4.1K

Нестандартные механики контекстной рекламы и прокачка воронки продаж — в 1,5 раза подняли средний чек, снизили стоимость заказа вдвое и в 14 раз увеличили продажи, сохранив ДРР на уровне 15%.

Читать далее

Создаем свой Managed K8S за 5 минут на старом железе

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели17K
image

Привет! Все больше облачных провайдеров по всему миру предлагают свои услуги по управляемому Kubernetes кластеру в их облаках. Стоимость таких сервисов практически всегда является ключевым фактором при выборе вендора, а молодые компании с отрицательной прибылью но очень большими амбициями вовсе вынуждены отдавать последние деньги за кластер, который мог бы заменить обычный Shared-хостинг за 150 рублей в месяц. Давайте разберемся.
Читать дальше →

Дифференциальная диагностика неисправных шарниров равных угловых скоростей по спектру вибраций

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели8K

 

Описание проблемы

Последние год три меня доставала неприятная вибрация при разгоне автомобиля, поначалу немного, но со временем все больше и больше. Езжу я мало, в лучшие-то годы набегало около 12 ткм в год, сейчас же использование авто свелось к практически только летней эксплуатации, поэтому у меня было сравнительно много времени от слабо беспокоящих начальных симптомов до сильного устранить неудобства. Авто, герой этой статьи это C max (2007 года, 2л, автомат), пробег 164 ткм, первая замена ШРУСов на 20 ткм (порванный пыльник) на подделку, вторая через год на родные. Т.е. комплект родных проходил где-то 130 ткм.

Симптомы:

После 60 км\ч начинается вибрация, особенно при нагрузке в горку. При езде накатом вибрация отсутствует. При увеличении загрузки авто (например, не 2, а 4 человека в салоне) вибрации растут до неприемлемых.

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

Балансировка, смена колёс летние\зимние перед\зад не влияет

При езде в крутую горку с низкой скоростью вибраций нет.

В поворотах вибрация не меняется никак.

Очень похоже на внутренние ШРУС(ы), но со стандартным набором симптомов не совпадает скорость начала тряски. Считается, что износ ШРУСов дает вибрации начиная от 40 км\ч, а в моем случае заметные вибрации начинались от 70-75 км\ч и органолептически очень похожи на дисбаланс колес.

Год назад специалист сервисного центра прокатился на машине и уверенно сказал – это не ШРУСы. Возможно, в тот момент износ дорожек был еще достаточно мал, что и привело к неверному суждению. Прошел еще год и вибрации стали беспокоить уже сильно.

Читать далее

Разработка сервопривода с BLDC мотором

Уровень сложностиСредний
Время на прочтение16 мин
Охват и читатели24K

Открытый проект серво‑контроллера MC50 продолжает развиваться. На этот раз поговорим о создании сервопривода.

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

Читать далее

Пишем и отлаживаем код для ARM64 на голом железе

Уровень сложностиСложный
Время на прочтение7 мин
Охват и читатели8.7K
Я немного изучил arm64 (aarch64) и решил: попробую написать для него код на голом железе.
Я хотел понять, проанализировать и тщательно рассмотреть машинный код, который выдают на моём MacBook Air M1 такие среды исполнения WebAssembly, как v8 или wasmtime. Для этого я (немного) изучил ассемблер arm64. Коллега Саул Кабрера порекомендовал мне почитать книгу Стивена Смита «Programming with 64-Bit ARM Assembly Language», и я могу только поддержать эту рекомендацию.

image

«Programming with 64-Bit ARM Assembly Language» by Stephen Smith, APress 2020

В книге отлично объясняется набор инструкций, приёмы оптимизации, а также действующие соглашения и интерфейсы ABI. Но с ней вы научитесь писать программы только под операционную систему. Я же люблю загружать с нуля мой собственный BBC Microbit или Rasperry Pi. В этом посте я набросал пару шагов, которые успел сделать в этом направлении.
Читать дальше →

Неизвестный UART: микросхемы

Уровень сложностиСредний
Время на прочтение23 мин
Охват и читатели26K

Как было сказано в предыдущей статье, UART не является формализованным стандартом и, следовательно, при его использовании имеет смысл опираться на практику реализаций данного протокола в различных микросхемах. В данной статье будут рассмотрены микросхемы мостов USB‑UART различных производителей как с точки зрения особенностей поддержки протокола, так и с точки зрения временных/электрических характеристик, а также иных, в том числе не‑электронных соображений.

Запаять SSOP-20

Индикатор добротности. Тестер катушек индуктивности

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели12K

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

Читать далее

Обзор платы Tang Primer 20K на Gowin GW2A-LV18

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели19K
После получения большого количества отзывов и комментариев на обзор платы на Cyclone IV из части из них четко прослеживались мысль: “А почему Cyclone IV, это же старый хлам!”. В ответ на это я решил сделать обзор на что-нибудь современное, функциональное и очень недорогое. И такой вариант нашелся — это отладочная плата Tang Primer 20K на ПЛИС от небезызвестной компании Gowin. На неё я и сделаю обзор в этой статье и расскажу про примеры проектов, доступных для этой платы.

Кого заинтересовала тема — добро пожаловать под кат! =)

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

Оптимизация памяти и управление сборщиком мусора в Go: GOGC и GOMEMLIMIT

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели34K

Всем привет, меня зовут Нина Пакшина, я работаю Golang разработчиком в Лента Онлайн в команде операций.

В данной статье я расскажу о том, как управлять сборщиком мусора в Go, как оптимизировать потребление памяти приложением и защититься от ошибки out-of-memory.

Читать далее

Мой терминал: alacritty, zsh, tmux, nvim

Время на прочтение7 мин
Охват и читатели81K

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

Читать далее

Эффективная работа с битами при помощи Go

Уровень сложностиСложный
Время на прочтение12 мин
Охват и читатели25K

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

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

Уровень сложностиПростой
Время на прочтение12 мин
Охват и читатели16K

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

▍ Что мы на самом деле сравниваем, сравнивая языки программирования?


Придя в гости к другу, я увидел, что на нём надета футболка Golang. Он сказал, что любит Golang, я ответил, что мне нравится футболка, а сам язык чуть меньше. Ему понравилась мысль «обсудить это позже», и после ужина мы уселись на диванах и приступили к разговору. Я хотел поговорить о сборщике мусора (1, 2), о том, что горутины/каналы — это удобная абстракция, но я предпочитаю абстракции BEAM, потому что они позволяют использовать супервайзоры, обсудить очень свободное отношение Golang к корректности, но… он не горел желанием говорить обо всём этом. Мой друг с восторгом рассказывал о том, что ему нравится, что «разработчики на Go знают, что достаточно одного цикла for. Кто-то притащил в мою компанию Scala, и мне очень не нравится смена образа мышления».

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

Как упростить импорт JavaScript модулей с помощью Node.js Subpath Imports

Уровень сложностиПростой
Время на прочтение14 мин
Охват и читатели21K

Существует множество библиотек для настройки алиасов в Node.js, таких как alias-hq и tsconfig-paths. Однако однажды, изучая документацию Node.js, я обнаружил возможность настройки алиасов без использования сторонних библиотек. Более того, данный подход позволяет использовать алиасы без сборки кода. Знакомо ли вам поле imports в package.json? В этой статье мы рассмотрим, что такое Node.js Subpath Imports, узнаем о тонкостях настройки и разберемся с поддержкой в актуальных инструментах разработки.

Читать далее

Алгоритмы поиска подстроки на JavaScript

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели14K

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

Как говорит Википедия «Поиск подстроки в строке — одна из простейших задач поиска информации», но это не совсем так, ниже я расскажу про разные алгоритмы решения и покажу примеры их реализации. Начнем!

Читать далее

Информация

В рейтинге
Не участвует
Откуда
Россия
Дата рождения
Зарегистрирован
Активность