В первой части статьи на примере “Умного чайника” я описал процесс разработки приложения, интегрированного в экосистему SmartThings. В этой части я усложняю пример: добавляю датчик температуры и делаю плавную индикацию RGB-светодиода. Я опишу, чем отличаются ESP8266 и ESP32, и почему в этом примере нам больше подходит именно ESP32. Также будет описана передача сообщений между потоками/тасками на примере очередей в FreeRTOS. Таким образом, данная статья предназначена для всех, кто хочет перейти от самых простых умных устройств с минимумом функционала, к устройствам чуть более сложным как с программной, так и с железной точки зрения.
Все потоки
- Новые
- Лучшие
- Все
- ≥0
- ≥10
- ≥25
- ≥50
- ≥100
Закорпоративь удаленщика. Вредные советы
Ничто не предвещало беды, но тут в вашей удаленной компании пошел слух об очном корпоративе… Мы прошли через это. Было здорово. Но проанализировав на этапе подготовки стереотипы площадок и подрядчиков, а заодно отзывы самих ИТ-шников о том, что происходит “в среднем по рынку”, мы ужаснулись. С этим багажом знаний мы теперь можем раздавать “вредные советы” относительно того, как все сделать “правильно”. Поверьте, перетягивание каната и пьяные коллеги - далеко не самое страшное, что может быть у тех, кто не продумывает каждую мелочь!
TA505 нацелилась на розничную торговлю в США с помощью персонализированных вложений
Обзор
С 15 ноября 2018 года компания Proofpoint начала наблюдать за рассылками электронных писем от определенного агента, направленных на крупные розничные сети, сети ресторанов и продуктовых магазинов, а также другие организации, работающие в сфере производства продуктов питания и напитков. Эти почтовые сообщения пытались доставлять различные виды вредоносных программ, включая Remote Manipulator System (RMS), FlawedAmmyy и другие.
Как прикрутить SQL к чему угодно при помощи Apache Calcite
Сделать свою собственную SQL-базу данных или запускать SQL-запросы в NoSQL-базе данных — кажется, это очень непростая задача. А если мы говорим о распределенной БД, то сложность возрастает многократно. Но, к счастью, Apache Calcite — фреймворк с открытым кодом — поможет сделать это довольно легко.
Роман Кондаков, Software Engineer в Querify Labs, на конференции HighLoad++ Весна 2021 рассказал об опыте интеграции Apache Calcite в распределенную in-memory-платформу Apache Ignite. Если ваша система распределена, и вы хотите завести в ней SQL, читайте про то, как устроен Apache Calcite и какие есть нюансы его использования для распределенных систем. Видео его выступления можно посмотреть здесь.
Проверь себя в Go
Golang (Go), известный чуть менее 15 лет, входит в пятерку популярных языков на Stack Overflow. Порог входа относительно невысок, при этом язык хорошо показывает себя при реализации высоконагруженных проектов, хотя и имеет свои подводные камни.
О работе с Go мы уже рассказывали ранее. Теперь же приготовили тест – для тех, кто хочет проверить силы, взглянуть на Go новым взглядом или просто развлечься и узнать немного любопытных фактов.
Практического повышения продуктивности пост
Хочу поделиться своим подходом к существенному повышению продуктивности в работе/учебе. Начну с базовых вещей для тех, кто с ними не знаком и закончу полезными инструментами, о которых далеко не все слышали из тех, кто знает базу. Сам я имел опыт выгорания, успешного восстановления и даже повышения продуктивности, по сравнению, с предшествующим выгоранию, периодом.
Сложить и расправить. Искусство оригами в робототехнике
Не так давно на Хабре вышла новость о разработке червеобразных мягких роботов, которые легко меняют форму и длину для проникновения в труднодоступные места. Подобный робот – не только миниатюрное, но и высокотехнологичное устройство, оснащенное датчиками и серьезно адаптирующее свои функции к меняющимся условиям окружающей среды. Такое бионическое направление развития робототехники логично и ожидаемо, но, в то же время, оно перекликается с не менее интересным феноменом модульной робототехники. Модульный робот автоматически собирается из относительно простых единиц, которые могут сами добираться до точки стыковки, ориентируясь на разметку в помещении, например, на складе.
Интересующимся модульной робототехникой я рекомендую посмотреть диссертацию и научные работы Никиты Павлюка, познакомившего меня с этой темой. Здесь я затрону тему модульных роботов лишь в качестве контекста, подчеркнув их важнейшую черту – способность к реконфигурации. Шагом вперед от реконфигурации мне видится реализация приемов оригами в робототехнике, о чем я и расскажу далее.
Создаём инфраструктуру для интеграционных тестов: делаем образы и подводим итоги
Это вторая статья из короткого цикла про создание инфраструктуры для автотестов. Первая доступна здесь.
3 года назад команда Fiji решила переизобрести инфраструктуру для интеграционных тестов. Мы перенесли тестовые БД в docker-контейнеры и научились поднимать в Kubernetes контур для автотестирования.
В этот раз поговорим про то, как создавать и актуализировать образы БД для интеграционных тестов. Также я расскажу, как благодаря автотестам изменились процессы в нашей команде. Затем подведу итоги и поделюсь планами на будущее.
Охота на орбитальные спутники: лазеры, роботизированные охотники и другие способы утилизации аппаратов
На Хабре уже не раз писали о том, что вокруг Земли за последние несколько десятков лет образовалась целая груда мусора. То есть не груда, а более-менее распределенные по орбитам с разной высотой космические аппараты и их элементы. Но их очень много — тысячи.
Больше всего, конечно, спутников — их количество превышает 5000, а скоро и вовсе увеличится до нескольких десятков тысяч. Аппараты запускают Starlink, OneWeb, вскоре, скорее всего, тем же займутся китайские компании и Amazon. В ближайшем обозримом будущем количество спутников будет лишь расти. Это хорошо, даже отлично, но что делать, когда спутник выходит из строя или срок его эксплуатации приближается к завершению?
Подробное описание операторов RxJS — Часть 1
Первое, что нужно понять об операторах, - это почему они существуют. Они существуют, потому что observables как тип позволяют нам обрабатывать события (или значения во времени) как множества или набор вещей.
Говоря более просто, любое четко определенное множество будет иметь операции, которые могут быть выполнены с ним, которые могут преобразовать его в новое множество того же типа. Например, предположим, что у нас есть грузовик с яблоками. Мы могли бы превратить его в грузовик с нарезанными яблоками с помощью машины для нарезки яблок. Та же самая машина для нарезки яблок затем может быть использована на любом грузовике с яблоками, чтобы превратить их в грузовик, загруженный нарезанными яблоками. В этом случае машина для нарезки яблок будет считаться «оператором», который сопоставляет яблоки с ломтиками яблок. Точно так же мы могли бы иметь грузовик с сахаром, мукой, яйцами и т. д. И объединить их с грузовиком с ломтиками яблока, чтобы сделать грузовик с яблочными пирогами, используя какую-то машину для производства пирогов. Итак, в этом примере грузовик - это тип множества, машина для нарезки яблок или машина для изготовления пирогов будут «операторами», а сахар, яблоки, ломтики яблок, яйца и т. д. Будут просто значениями, переносимыми нашим типом множества.
Загружаемые изображения для Jetpack Compose с использованием Glide, Coil и Fresco
Новый современный набор инструментов пользовательского интерфейса Jetpack Compose был анонсирован компанией Google более года назад, и, наконец, в июле была выпущена стабильная версия 1.0. Также многие компании, такие как Twitter, lyft, Square, уже адаптировали Jetpack Compose на своих производственных уровнях, потому что он очень интуитивный, мощный и упрощает всю структуру пользовательского интерфейса, если правильно его использовать. Эта новая парадигма структуры пользовательского интерфейса поменяет в дальнейшем очень многое, также нам придется приложить еще немало усилий для миграции предыдущих вещей, связанных с пользовательским интерфейсом, таких как загрузка изображений из Url.
Как я снял спутники Юпитера на ТЕЛЕФОН
Перед вами первая (в истории?) фотография Юпитера и его спутников, сделанная на ТЕЛЕФОН без использования дополнительных оптических средств, таких как телескоп или внешние объективы. Только штатив, только хардкор.
Дизайнер-перфекционист: когда слишком хорошо — это плохо
Наверняка в вашем окружении есть люди, которые с гордостью говорят про себя: «Я — перфекционист!» Возможно, вы и сами относитесь к таковым. Ведь что плохого в том, чтобы стремиться выдать совершенный продукт? На первый взгляд — ничего. Вы гордитесь своей работой, проект-менеджер восторгается вашим талантом, клиенты рыдают от счастья, потому что у них самые лучшие сайты на свете.
Но есть и обратная сторона медали. Вы можете сколько угодно доводить макеты до совершенства, лишать себя сна и отдыха и отодвигать дедлайны. А вас всё равно попросят сделать кнопочку красненькой, а не синенькой. Или поиграть шрифтами. Ну и так далее. В итоге времени и сил затрачено очень много, но результат не удовлетворяет. Вы в эмоциональном раздрае, жизнь — тлен.
Возможности функций, возвращающих другие функции в JavaScript
JavaScript широко известен тем, что по своей природе является чрезвычайно гибким. В этом посте мы покажем несколько примеров использования этого преимущества при работе с функциями.
Поскольку функции можно передавать куда угодно, мы можем поместить их в аргументы функций.
Вся правда о когнитивных искажениях
MultiItem адаптер для RecyclerView в 40 строк кода с BRVAH
Это третья часть цикла статей про разработку адаптеров для RecyclerView c BRVAH.
Прошлые части:
Обход блокировки РКН с помощью магии Service Worker'ов
Приветствую, Хабр!
Я не претендую на срывание покров или какой-то революционный способ, но мой метод позволит как минимум сохранить ту часть трафика, так преданного вашему проекту/сайту/блогу, и немного вернуть справедливость со всеми этими перипетиями с массовыми блокировками.
Как мы обновляли мобильное приложение для официантов: выбор стека и тест трех версий. Кто победил?
Привет! Меня зовут Сергей Арсёнов, я руковожу мобильной разработкой в компании r_keeper. Хочу рассказать, как мы обновляли мобильное b2b-приложение для официантов и почему выбрали для него не совсем классический стек — Kotlin Multiplatform Mobile + UI на Flutter.
Советский СПОРТ
А посмотреть есть на что. Ведь это фактически родстер, не первый, конечно, — первым по праву можно считать «ЗИС Спорт», но о нем я расскажу в другой раз.
Вот, кстати, ЗИС-101 А Спорт
Пусть вас не смущает частое мелькание ЗИС/ЗИЛ. Дело в том, что в 1957 году завод сменил название. Был имени Сталина, стал имени Лихачёва.
А сегодня встречайте — чудо инженерной мысли, автомобиль, участвовавший в гонках «Формулы-5» и побивший три всесоюзных рекорда скорости, автомобиль со скромным названием ЗИЛ-112с.
Российская конференция для разработчиков от Microsoft: Day of the DEVs
Вы давно ждали и мы сделали крупное российское онлайн-мероприятие для разработчиков от Microsoft в России: Day of the DEVs.
12 октября систематизируем знания в 5 основных направлениях: Hybrid/Multi cloud, Security, OSS, Data&AI для приложений, Продуктивность разработчиков. Ниже подробное описание и ссылка на регистрацию. Выберите интересующий вас трек, зовите коллег и регистрируйтесь!