В материале, перевод которого мы публикуем сегодня, речь пойдёт о том, как подключить датчик качества воздуха Sensirion Particulate Matter Sensor SPS30 к Raspberry Pi 4, и о том, как, пользуясь возможностями Microsoft Azure, представить сведения о качестве воздуха в удобном для восприятия виде.
Рубрика «разработка» - 30
Мониторинг качества воздуха с использованием Raspberry Pi 4, датчика Sensirion SPS30 и Microsoft Azure
2020-11-13 в 13:10, admin, рубрики: diy или сделай сам, Microsoft Azure, Raspberry Pi, Sensirion SPS30, Блог компании RUVDS.com, здоровье, разработка, Разработка на Raspberry PiЧто нового в C# 9.0
2020-11-13 в 12:15, admin, рубрики: C#, skillfactory, Блог компании SkillFactory, ооп, Программирование, разработка, сишарпВ преддверии старта нового потока курса «C#-разработчик» представляем вашему вниманию обзор нововведений. Среди них — новый метод доступа к свойству — init, не позволяющий изменять свойства после инициализации, with-выражения для изменения свойств объекта прямо здесь и сейчас, записи и новые возможности сопоставления шаблонов. Подробности, конечно же, под катом.

Реализация epoll, часть 4
2020-11-09 в 15:48, admin, рубрики: epoll, linux, ruvds_перевод, Блог компании RUVDS.com, Программирование, разработка, Разработка под Linux, системное программирование, системные вызовыЭто — последний материал из серии четырёх статей (часть 1, часть 2, часть 3), посвящённой реализации epoll
. Тут речь пойдёт о том, как epoll
передаёт события из пространства ядра в пользовательское пространство, и о том, как реализованы режимы срабатывания по фронту и по уровню.
Эта статья написана позже остальных. Когда я начинал работу над первым материалом, самой свежей стабильной версией ядра Linux была 3.16.1. А во время написания данной статьи это уже версия 4.1. Именно на коде этой версии ядра и основана данная статья. Код, правда, изменился не особенно сильно, поэтому читатели предыдущих статей могут не беспокоиться о том, что что-то в реализации epoll
очень сильно изменилось.
Читать полностью »
Реализация epoll, часть 3
2020-11-08 в 13:15, admin, рубрики: epoll, linux, ruvds_перевод, Блог компании RUVDS.com, Программирование, разработка, Разработка под Linux, системное программирование, системные вызовыВ предыдущих двух материалах (часть 1, часть 2) этой серии речь шла об общих вопросах работы epoll
, и о том, как epoll
получает уведомления о новых событиях от файловых дескрипторов, за которыми наблюдает. Здесь я расскажу о том, как epoll
хранит уведомления о событиях, и о том, как эти уведомления получают приложения, работающие в пользовательском режиме.
Python-пакеты для Data Science
2020-11-04 в 15:51, admin, рубрики: big data, data science, python, Блог компании RUVDS.com, Программирование, разработкаPython — это один из самых распространённых языков программирования. Хотя стандартные возможности Python достаточно скромны, существует огромное количество пакетов, которые позволяют решать с помощью этого языка самые разные задачи. Пожалуй, именно поэтому Python и пользуется такой популярностью среди программистов. Можно наугад назвать какую-нибудь сферу деятельности и в экосистеме Python, почти гарантированно, найдутся отличные инструменты для решения специфических задач из этой сферы. В наше время весьма востребованы наука о данных (Data Science, DS) и машинное обучение (Machine Learning, ML). И там и там Python показывает себя наилучшим образом.
Помимо Python в DS-проектах часто используют язык программирования R. R быстрее Python и имеет больше статистических и вычислительных библиотек. Но в этом материале мы будем говорить исключительно о библиотеках (пакетах) для Python, о которых стоит знать каждому, кто хочет добраться до профессиональных вершин Data Science.
Прежде чем переходить к обзору библиотек, остановимся на том, что это такое — «наука о данных», и на том, почему в этой сфере стоит пользоваться языком Python.
Читать полностью »
Нажималка для YubiKey
2020-11-04 в 9:15, admin, рубрики: 3D-печать, esp8266, Yubikey, Блог компании RUVDS.com, разработкаЕсли вы работаете в сфере информационных технологий, то у вас, возможно, есть аппаратный ключ безопасности YubiKey. У меня такой имеется. Это — YubiKey 5C Nano, показанный на следующем снимке.

Если вы работаете в области, не связанной с компьютерами, но при этом, в основном, пользуетесь ноутбуком, то вам, возможно, стоило бы обзавестись YubiKey. А если вы участвуете в политической кампании, или работаете журналистом, то вам, определённо, нужен YubiKey (или нечто подобное). Обсудите это с вашим отделом безопасности. Правда, этот материал будет кое о чём таком, о чём специалистам вашего отдела безопасности лучше не знать. Поэтому не говорите им об этой статье.
Читать полностью »
Дайджест интересных материалов для мобильного разработчика #368 (26 октября — 1 ноября)
2020-11-01 в 10:39, admin, рубрики: uix, Аналитика мобильных приложений, Блог компании Цифровые Экосистемы, маркетинг приложений, разработка, разработка мобильных приложений, Разработка под android, разработка под iOSВ новом дайджесте проверка иконки сплеша, история одного рефакторинга и одного “однорукого” интерфейса, стандарты code review и обновление Firebase, сетевое мышление, Kotlin Developer Nanodegree, работа с Unity Asset Store и многое другое!
О сложностях мониторинга работающих процессов в Linux
2020-10-30 в 14:00, admin, рубрики: linux, Блог компании RUVDS.com, Настройка Linux, разработка, Разработка под Linux, системное администрированиеВсе знают о том, как наблюдать за работающими процессами в Linux-системе. Но почти никто не добивается в подобных наблюдениях высокой точности. На самом деле, всем методам мониторинга процессов, о которых пойдёт речь в этом материале, чего-то не хватает.
Давайте, прежде чем приступить к экспериментам, определим требования к системе наблюдения за процессами:
- Логироваться должны сведения обо всех процессах, даже о короткоживущих.
- У нас должны быть сведения о полном пути к исполняемому файлу для всех запущенных процессов.
- У нас, в пределах разумного, не должно возникать необходимости в модификации или перекомпиляции нашего кода для разных версий ядра.
- Дополнительное требование: если хост-система является узлом Kubernetes или использует Docker, то у нас должна быть возможность определить то, к какому именно поду/контейнеру принадлежит процесс. Для этого обычно достаточно знать
cgroup ID
процесса. Дело в том, что с точки зрения ядра нет такого понятия, как «контейнер» или «идентификатор контейнера». Ядро оперирует лишь такими понятиями, как «контрольные группы», «сетевые пространства имён», «пространства имён процессов», оно работает с различными независимыми API, с помощью которых средства контейнеризации вроде Docker реализуют механизмы контейнеризации. Если попытаться идентифицировать контейнеры посредством ID уровня ядра, нужен уникальный идентификатор контейнера. В случае с Docker данному требованию удовлетворяют идентификаторы контрольных групп.
Поговорим об обычных API Linux, которые могут помочь в решении этой задачи. Мы, чтобы не усложнять повествование, уделим особое внимание процессам, создаваемым с помощью системных вызовов execve
. Если же говорить о более полном решении задачи, то при его реализации нужно, кроме того, мониторить процессы, созданные с помощью системных вызовов fork/clone
и их вариантов, а так же — результаты работы вызовов execveat
.
Читать полностью »
Неожиданное влияние текстов среднего размера на производительность PostgreSQL
2020-10-29 в 9:15, admin, рубрики: postgresql, Администрирование баз данных, Блог компании RUVDS.com, разработкаВ схеме любой базы данных, наверняка, будет множество текстовых полей. Я, для целей этой статьи, разделил текстовые поля на три категории:
- Маленькие тексты. Имена и фамилии людей, заголовки страниц, имена пользователей, адреса электронной почты и прочее подобное. Обычно на размер таких полей накладываются определённые ограничения, довольно сильные. Возможно, это даже не поля типа
text
, а поля типаvarchar(n)
. - Большие тексты. Это, например, содержимое публикаций в блогах, тексты статей, HTML-код. Такие данные представляют собой большие фрагменты текста неограниченной длины, хранящиеся в базе данных.
- Тексты среднего размера. Это — описания, комментарии, отзывы о товарах, данные о трассировке стека и так далее. В сущности это — любые текстовые поля, размер которых находится между размерами «маленьких» и «больших» текстов. Обычно размер таких полей не ограничен, но их содержимое, по естественным причинам, меньше, чем содержимое полей категории «большие тексты».
В этом материале я хочу рассказать о неожиданном влиянии текстов среднего размера на производительность запросов в PostgreSQL. В частности, мы поговорим о TOAST (The Oversized-Attribute Storage Technique, Техника хранения больших атрибутов)
Читать полностью »
Отзывчивый веб-дизайн и учёт высоты окна браузера
2020-10-28 в 13:15, admin, рубрики: css, html, Блог компании RUVDS.com, браузеры, дизайн, разработка, Разработка веб-сайтовЗнаю, что у многих появится вопрос о том, почему у этой статьи такой необычный заголовок. Как связаны «отзывчивый веб-дизайн» и «высота окна браузера»? Пожалуй, этот заголовок кажется необычным из-за того, что под «отзывчивым дизайном», как правило, понимают проектирование страниц таким образом, чтобы они подстраивались бы под ширину области просмотра, чтобы они хорошо бы выглядели на разных устройствах. Сайты всегда тестируют, уменьшая ширину браузера и наблюдая за происходящим. Но я практически никогда не сталкивался с некими указаниями по тестированию какого-то проекта, в которых сказано, что страницы исследуют путём уменьшения высоты окна браузера. Возможно, вы когда-нибудь ловили себя на такой мысли: «Надо ли проверять страницы в окнах браузера разной высоты?». Я полагаю, что делать это надо, и собираюсь убедить в этом всех, кто прочитает эту статью.
При работе над веб-сайтом не очень правильно делать некие предположения, не опираясь на реальные данные. Поэтому очень важно брать на себя ответственность по проверке сайтов в окнах браузеров разной ширины и разной высоты.
Читать полностью »