Как стать автором
Обновить
6
0
Иван GiB$ON @gibson_dev

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

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

CG Charger BQ: как TP4056, только на стероидах (BQ25895)

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


Сегодня на нашем операционном столе очередное гениальное изобретение компании ClimateGuard — девайс под не менее гениальным названием CG Charger BQ. Расшифровке того, что же всё-таки скрывается под этими загадочными буквами BQ (что означают буквы CG постоянные читатели моего блога уже знают) и посвящена эта статья.

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

Правда для осмысленной работы с BQ25895 вам понадобятся пара высших образований в Computer Science (смайл) и… эта статья…
Читать дальше →
Всего голосов 42: ↑41 и ↓1+55
Комментарии41

Сравнение методов лечения паховой грыжи

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров4.2K

Так получилось, что я перенес две операции выполненные разными способами по поводу паховой грыжи. Хочу поделится с вами этим опытом , чтобы сберечь ваше время и нервы. Если очень коротко, то старайтесь выбрать TEP или TAPP пластику для операции. Если запомнили и этого вам достаточно, чтобы поверить мне - можете закрывать. Далее обо всём подробнее.

Читать далее
Всего голосов 31: ↑21 и ↓10+16
Комментарии13

Тайны пингвина: как работают исключения и прерывания в Linux?

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

image


Привет, хабр! Моя прошлая статья о работе памяти в Linux вам понравилась. Сегодня мы разберем работу исключений и прерываний.


Что это, как они работают в ОС и Linux? Давайте разберемся вместе!

Читать дальше →
Всего голосов 31: ↑25 и ↓6+29
Комментарии8

Корутины для Go

Уровень сложностиСредний
Время на прочтение21 мин
Количество просмотров9K

Эта заметка о том, зачем нам нужен пакет coroutine для Go и как он будет выглядеть. Но прежде всего, что такое корутины?

Сегодня каждый программист знаком с вызовами функций (подпрограмм): F вызывает G, которая останавливает F и запускает G. G выполняет свою работу, потенциально вызывая и ожидая другие функции, и в конце концов возвращается. Когда G возвращается, G уже нет, а F продолжает работать. В этой схеме одновременно выполняется только одна функция, а ее вызывающие ожидают, поднимаясь вверх по стеку вызовов.

В отличие от подпрограмм, корутины выполняются конкурентно на разных стеках, но все равно верно, что одновременно выполняется только одна функция, а ее вызывающая сторона ждет. F запускает G, но G не выполняется немедленно. Вместо этого F должен явно возобновить (resume) выполнение G, который затем начинает выполняться. В любой момент G может развернуться и вернуться (yield) назад к F. Это приостановит G и продолжит F операцию возобновления. В конце концов F снова вызывает resume, который приостанавливает F и продолжает G после выхода. И так далее, туда-сюда, пока G не вернется, что приведет к очистке G и продолжению F с последней операции возобновления, с некоторым сигналом для F, что G закончена и F больше не должна пытаться возобновить G. В этом паттерне одновременно выполняется только одна корутина, а ее вызывающая сторона ждет на другом стеке. Они выполняются по очереди в четко определенном, скоординированном порядке.

Это несколько абстрактно. Давайте посмотрим на реальные программы.

Читать далее
Всего голосов 13: ↑11 и ↓2+9
Комментарии5

Потрошим golang: как устроена память

Время на прочтение18 мин
Количество просмотров26K


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

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

Единственным надежным решением таких проблем является глубокое погружение в теорию и исследования инструмента, которым решаются поставленные проблемы. В нашем случае таким инструментом является язык Go. И как же замечательно, что исследование его внутренностей — совсем легкое дело. В том числе когда дело касается использования памяти.
Читать дальше →
Всего голосов 50: ↑48 и ↓2+55
Комментарии17

Улучшаем возможности PM2 с помощью дополнительных модулей автоскейлинга и мониторинга

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров3.5K

Всем привет. Сегодня я бы хотел рассказать о том, с какими трудностями пришлось столкнуться при работе с менеджером node.js процессов PM2, и как нам пришлось расширить его возможности для того, чтобы его было можно использовать эффективнее.

Читать далее
Всего голосов 11: ↑11 и ↓0+11
Комментарии2

Здоровая конкуренция в GO. Главное не перехитрить самого себя

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

Несколько лет назад я прочитал статью о параллелизации в GO и ничего не понял – я тогда только начинал программировать на этом языке. Но размышления автора мне очень понравились – они подкреплялись бэнчмарками, что было довольно убедительно. Автор игрался c параметром GOMAXPROCS и показал, что увеличение этого параметра не всегда приводит к увеличению производительности. Под конец статьи он подобрал такое значение, которое будет максимально эффективным для его функции, на мое удивление, это значение оказалось равно единице! Т.е. его код работал максимально эффективно, если работал всего на одном ядре процессора! Однако, в одном из комментариев под той статьей я прочел, что все эти изыскания нелепы, поскольку та же самая функция из статьи запущенная всего в один поток оказывается эффективнее любой ее параллельной реализации.


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



Читать дальше →
Всего голосов 33: ↑31 и ↓2+39
Комментарии21

Реализация Graceful Shutdown в Go

Время на прочтение17 мин
Количество просмотров16K

Изящное завершение работы (Graceful Shutdown) важно для любого длительного процесса, особенно для того, который обрабатывает состояние. Например, что если вы хотите завершить работу базы данных, поддерживающей ваше приложение, а процесс db не сбрасывает текущее состояние на диск, или что если вы хотите завершить работу веб-сервера с тысячами соединений, но не дожидаетесь окончания запросов. Изящное завершение работы не только положительно сказывается на пользовательском опыте, но и облегчает внутренние операции, что приводит к более счастливым инженерам и менее напряженным SRE.

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

Читать далее
Всего голосов 14: ↑11 и ↓3+9
Комментарии2

Переизобретаем файловую систему: (Open)ZFS

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


Хранение данных — это всегда боль, у которой может быть больше 50 оттенков: железо, кэш, гарантии, производительность, скорость восстановления при проблемах, удобство и прочее. Как решить большинство из них, при этом получив что-то легко обслуживаемое, да ещё бесплатно? Сегодня поговорим про файловые системы на примере не совсем дефолтной OpenZFS.
Читать дальше →
Всего голосов 50: ↑49 и ↓1+60
Комментарии80

Архитектура MMO: источник истины, потоки данных, узкие места I/O и их устранение

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров8.1K

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

Несмотря на то что это приложение идеально вписывается в концепцию «распределённых архитектур», конкретные детали (как большие, так и малые) превращают, казалось бы, простой для любого грамотного инженера процесс проектирования в невероятную головную боль.
Читать дальше →
Всего голосов 37: ↑35 и ↓2+51
Комментарии3

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

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


Привет всем!

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

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

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

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

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

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

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

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

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

И что, сифонит таки?
Всего голосов 51: ↑51 и ↓0+51
Комментарии22

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

Время на прочтение10 мин
Количество просмотров9.7K

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


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


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


Читать дальше →
Всего голосов 31: ↑30 и ↓1+37
Комментарии41

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

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

В отличие от таких операционных систем как 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).

Читать далее
Всего голосов 22: ↑21 и ↓1+25
Комментарии4

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

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

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

Читать далее
Всего голосов 8: ↑8 и ↓0+8
Комментарии6

Практика Go — Concurrency

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

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

Читать далее
Всего голосов 7: ↑4 и ↓3+1
Комментарии4

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

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

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

Читать далее
Всего голосов 10: ↑7 и ↓3+7
Комментарии8

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

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

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

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

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

 

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

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

Симптомы:

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

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

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

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

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

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

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

Читать далее
Всего голосов 31: ↑30 и ↓1+34
Комментарии63

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

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

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

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

Читать далее
Всего голосов 48: ↑47 и ↓1+62
Комментарии43

Информация

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