Раскрашиваем таможенную статистику. Или сколько и каких микросхем ввозят в Россию? (2)

Продолжим анализировать какие иностранные микросхемы используются в России на основании таможенной статистики. Как мы это делаем ? Из данных ФТС выбираем записи в которых указан номинал ввезенной микросхемы, и используя внутреннюю базу данных дополняем эту запись основными параметрами микросхемы, начиная от производителя, разрядностями, диапазонами питания и заканчивая типом корпуса, упаковки и так далее. В данной части посмотрим АЦП/ЦАП и микроконтроллеры.

АЦП/ЦАП

Все типы аналого-цифровых и цифро-аналоговых преобразователей согласно нашей базе разбит на группы:
— АЦП — преобразователи аналогового сигнала в цифру;
— ЦАП — преобразователи цифры в аналоговый сигнал;
— совмещенные АЦП/ЦАП (обычно это разные аудио АЦП/ЦАП, но без кодеков, которые идут другой группой);
— Analog Front End (AFE) — схемы цифро-аналогового и аналого-цифрового преобразования (обычно используются для радиосвязи);
— цифровые потенциометры — схемы совмещающие датчик и АЦП/ЦАП используемые как датчики температуры.

Распределение микросхем по типам.
Распределение микросхем по типам.

Больше всего ввозится микросхем AFE — радиоприемопередатчики, но не имеющие в своем составе процесорных ядер — более 182К штук. Самым популярным АЦП является ADS1000A0IDBV. Самым популярным ЦАП — DAC6311IDCK. Самым популярным аудио АЦП/ЦАП — PCM5102APWR. Самый популярный RF приемопередатчик — CC1020RSSR. А самый популярный цифровой датчик — DS18B20+. Практически все от Texas Instruments.

Маржинальность типов микросхем
Маржинальность типов микросхем

Самыми маржинальными оказались Аудио АЦП/ЦАП — наверное любители звука готовы переплачивать не только за безкислородный медный кабель. Какие же фирмы лидируют на данном рынке?

Лидеры среди производителей микросхем АЦП/ЦАП
Лидеры среди производителей микросхем АЦП/ЦАП

Texas Instruments выпускает самые популярные микросхемы и поставляет больше всего аналого-цифровых микросхем.

АЦП

Самая популярная разрядность чистых АЦП — 12 бит

Распределение разрядности микросхем АЦП
Распределение разрядности микросхем АЦП

16 и более — это в основной сигма-дельта АЦП, которые точные, но обычно не очень быстрые. Какая же самая популярная частота выборки? По частоте преобразования для АЦП распределение выглядит следующим образом

Распределение скорости преобразования микросхем АЦП
Распределение скорости преобразования микросхем АЦП

Самый крутой АЦП, который официально ввезли в Россию — AD9208BBPZ-3000 (14 бит @ 3GSPS).

ЦАП

Распределение ЦАП по разрядности

Распределение разрядности ЦАП
Распределение разрядности ЦАП

Распределение скорости преобразования ЦАП

Распределение скорости преобразования ЦАП
Распределение скорости преобразования ЦАП

Микроконтроллеры

Из проанализированных примерно 1 млн микроконтроллеров — самые популярные в России микроконтроллеры от Микрочип (479К), STM(305К) и NXP (126К).

Лидеры среди производителей микроконтроллеров
Лидеры среди производителей микроконтроллеров

Самым популярным при этом является микроконтроллер STM8S003F3P6TR. Как это ни странно, но до сих пор 8-ми битные МК самые популярные. Но это скорее всего опять таки из за того, что таможня не видит все ввозимые микроконтроллеры.

Соотношение 8, 16, 32 битных микроконтроллеров (скорее всего неверное)
Соотношение 8, 16, 32 битных микроконтроллеров (скорее всего неверное)

Сколько памяти нужно для решения микроконтроллерных задач ?

По тактовым частотам работы микроконтроллеров следующее распределение

Распределение тактовой частоты микроконтроллеров
Распределение тактовой частоты микроконтроллеров

По числу выводов корпуса распределение следующее (к сожалению не для всех номиналов у нас были данные)

Распределение числа выводов микроконтроллеров
Распределение числа выводов микроконтроллеров

Итого

В результате среднестатистические АЦП и ЦАП на нашем рынке имеют разрядность 12 бит. Скорость преобразования АЦП на уровне 1 MSPS, а время преобразования ЦАП на уровне от 1KSPS до 100KSPS. Обе микросхемы будут от Texas Insruments. Среднестатистический микроконтроллер будет 8-ми битным, с 16 выводами и 8 Кбайтами Flash, работать с тактовой частотой до 16-20 МГц и выпущенный Микрочипом.

В третьей части статьи будут рассмотрены микросхемы памяти.

ссылка на оригинал статьи https://habr.com/ru/company/milandr/blog/556290/

Возможность для FinTech-стартапов: открыт приём заявок на питч-сессию в рамках DIGITAL SUPERHERO 2021

С мая по сентябрь 2021 годв пройдет DIGITAL SUPERHERO — ежегодный марафон для IT-специалистов России, который организует группа компаний Innostage при поддержке правительства Республики Татарстан. Цель марафона — создать среду для развития и пилотирования цифровых разработок в бизнес-сегменте и госсекторе.

Первое мероприятие в рамках марафона — питч-сессия Fintech-проектов, которая пройдёт 27 мая. Приглашаются стартапы по трём направлениям: устойчивое развитие (ESG), Research Tools и RiskTech.

Заявки принимаются до 23 мая на сайте мероприятия.

Что получат победители:

— Компенсацию расходов на проведение пилотного внедрения (до 500 000 рублей)

— Экспертную и менторскую поддержку

— Возможность масштабирования решения после успешного пилотного внедрения

— Возможность пройти отбор для участия в Demo Day на Kazan Digital Week и выиграть 300 000 рублей

— Фирменный мерч Ак Барс Банка

— Дополнительные возможности (обсуждаются индивидуально): доступ к инфраструктуре банка и его каналам продаж.

_______

Впервые марафон хакатонов DIGITAL SUPERHERO проходил с мая по сентябрь 2020 года, вот главные цифры о нём:

• 1 120 человек подали заявку на участие в проекте

• 177 команд приняли участие в проекте

• 42 команды стали финалистами

• 2,4 млн. рублей — общий призовой фонд онлайн-хакатона

• 70 городов — масштаб хакатона

ссылка на оригинал статьи https://habr.com/ru/post/556826/

Разбираем AirTag

Самый миниатюрный продукт Apple, о котором долгое время ходили слухи (но это не электронный ключ), наконец-то добрался до Саманты Голдхарт — автора статьи, переводом которой мы делимся в преддверии нового старта курса по iOS-разработке.

Добро пожаловать, AirTag! Интересно будет посмотреть, как AirTag со сменным аккумулятором (Да! Это первый сменный аккумулятор в продуктах Apple за последние годы!) будет выглядеть в сравнении с проверенными продуктами.


Устройства Apple и не-Apple

Сегодня в обзоре: Tile Mate, Galaxy SmartTag, Apple AirTag и 25-центовик для оценки размеров
Сегодня в обзоре: Tile Mate, Galaxy SmartTag, Apple AirTag и 25-центовик для оценки размеров

Для сравнения AirTag с конкурентами я взял ветерана рынка Tile Mate, а также Galaxy SmartTag производства Samsung. Из этих трёх устройств похожая на Mentos таблетка AirTag — самая миниатюрная. Размером с монету в 50 центов, само устройство немногим больше своего аккумулятора. Tile — самое тонкое из всех устройств, AirTag толще примерно в полтора раза, а если смотреть сбоку на SmartTag, то может показаться, что в нём могут уместиться целых два Tile. Apple, вероятно, желая сделать устройство максимально компактным, приняла нестандартное решение — убрала из AirTag отверстие для брелока (эту проблему мы попробуем решить). Нечего и говорить, что ничто не сравнится с Apple в части превращения базовых функций в функции премиум в виде дополнительных приспособлений

Но статья эта посвящена не только сравнению трекеров — сегодня я подвергну разборке сразу три устройства! Сначала посмотрим на внутренности устройств с помощью рентгеновского аппарата Creative Electron.

Рентгеновские снимки Tile Mate, Galaxy SmartTag, Apple AirTag, и... да, четверть доллара (но как-то не тянет на законное платёжное средство, не находите?), сделанные с помощью аппарата Creative Electron (на правый крайний не смотрите)
Рентгеновские снимки Tile Mate, Galaxy SmartTag, Apple AirTag, и… да, четверть доллара (но как-то не тянет на законное платёжное средство, не находите?), сделанные с помощью аппарата Creative Electron (на правый крайний не смотрите)

Как всегда, по рентгеновским снимкам можно много чего понять. Судя по плотности размещения элементов, уменьшать AirTag уже некуда. К слову о плотности элементов: относительно тёмный снимок AirTag объясняется наличием большого магнита в центральном динамике и стальной крышки аккумуляторного отсека —  рентгеновские лучи через них проникают слабо. (Более подробные изображения можно посмотреть на превосходной панорамной анимации.) По сравнению с AirTag другие трекеры кажутся просто великанами — а в них даже нет магнитов. (Хотите узнать, почему? Читайте дальше!)

Панорама AirTag в рентгеновских лучах 360°:

Несмотря на впечатляющую компактность AirTag, в этом устройстве удалось реализовать сверхширокополосные (СШП) функции. Кстати, сама по себе технология СШП  — довольно интересная вещь. Samsung только что выпустила СШП-версию трекера, получившего название SmartTag+, но прошло уже две недели после официального релиза, а аппарат до США пока ещё не добралась. Я пыталась раздобыть один экземпляр для разборки, но безуспешно.

Начинаем разборку

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

Свершилось! В продукте Apple можно самому заменить аккумулятор! По этому поводу даже составлена письменная инструкция
Свершилось! В продукте Apple можно самому заменить аккумулятор! По этому поводу даже составлена письменная инструкция

Во всех конкурирующих устройствах есть сменные батареи, поэтому Apple, по всей видимости, решила не отставать и продемонстрировать соответствие рыночному стандарту. Тем не менее воздадим Apple должное за это, сам AirTag будет работать дольше своего аккумулятора, у Tile на это ушло 6 лет и 15 миллионов проданных ранее устройств. 

Apple могла бы снабдить устройство раздражающим всех портом Lightning или встроенной (бесполезной и малоэффективной) функцией беспроводной зарядки, чтобы AirTag мог заряжаться от зарядного устройства Apple Watch, но Apple  этого не сделала, и спасибо ей за это. Однако в ранних патентных заявках AirTag должен был заряжаться с помощью индуктивного зарядного устройства. Предвестник грядущих технологий? Или ещё одно доказательство существования продукта Apple, которого никогда не было?

А что с питанием? Разбираем аккумулятор

AirTag получил весьма оригинальный номер модели: A2187 (ну-ка, из какого это фильма?), а в регламентирующей документации имеется указание на тип аккумулятора — CR2032. Логично! В AirTag и SmartTag используются трёхвольтовые аккумуляторы CR2032, а в Tile — более компактные CR1632. Если судить по стандартной номенклатуре кнопочных элементов, во всех аккумуляторах используются литиевые батареи, но 20-мм элементы имеют ёмкость 0,66 Вт ч, в то время как ёмкость 16-мм элементов Tile составляет всего около 0,39 Вт/ч. На первый взгляд, эти аккумуляторы весьма схожи с аккумуляторами наушников earbuds, но отличаются от них тем, что предназначены для длительной подпитки устройства малым током, что и позволяет им выполнять свои функции.

Вскрытые Tile Mate, Galaxy SmartTag и Apple AirTag
Вскрытые Tile Mate, Galaxy SmartTag и Apple AirTag

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

Tile и SmartTag легко разбираются с помощью монтажной лопатки и нагрева, но с AirTag всё не так просто. Вместе с тем герметизация AirTag, как ни странно, оказалась не такой уж и качественной. Не буду отрицать: без инструментов у меня ничего бы не вышло, ведь всё-таки три зажима да на клею — недурно. Чтобы швы разошлись, AirTag нужно аккуратно сжать тисками и потыкать монтажной лопаткой. Если вы точно решили разобрать AirTag, будьте осторожны! Клеевые зажимы легче сломать, чем отклеить. 

SmartTag производства Samsung — единственный трекер, которому не присвоен класс защиты от проникновения загрязнений, и это довольно удивительно, учитывая, что этот трекер имеет самый толстый клеевой слой, защищающий печатную плату. Так что же, это худший из всех трекеров? Или Samsung просто старается не обещать слишком многого, как в случае с iPhone 6S?

Со звуком у Apple всегда сюрпризы

Вся конструкция AirTag — это сплошные круговые части. Заметили «кнопку» на нижней стороне крышки? Это кнопка не нажимается, как у Mate и SmartTag. Это магнит, который ранее мы видели на рентгеновском снимке. Он размещается внутри логической платы в форме пончика, вложенной в катушку из меди. И это у нас динамик. Вы правильно прочитали — корпус AirTag, в сущности, представляет собой один сплошной динамик. Питание подаётся на звуковую катушку, управляющую магнитом, установленным на диафрагме (в данном случае это пластиковая крышка, в которой размещается аккумуляторная батарея), и именно она издаёт звуки, на которые вы идёте, разыскивая потерянную сумку. 

Но зачем вообще ставить сюда реальные приводные механизмы? Магниты не только увеличивают вес, но и занимают довольно много места. Миниатюрные пьезоэлектрические динамики в Mate и SmartTag во время тестирования издавали такой же и даже более громкий звук, поэтому дело тут не в громкости. Похоже, что от одного удовольствия Apple здесь не могла отказаться — ей хотелось качественного звука. Пьезодинамики миниатюрны, дёшевы, но звучат под стать цене, например как динамики в игрушках из набора Happy Meal в ресторанах Макдональдс. Зная Apple и зная, с какой серьёзностью компания подходит к проектированию звуковых источников, можно заключить, что на звуке она здесь — даже здесь! — не сэкономила.

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

Нет отверстия для брелока? Спокойно, я нашла его

На некоторое время прервём разборку. В отличие от конкурентов с отверстием для брелока, на идеально круглой внешней поверхности AirTag вообще нет места, чтобы продеть брелок — по крайней мере найти его не так просто. Официальный способ крепления устройства к ключам предполагает закупку различных аксессуаров, то есть придётся заказывать и ждать. Но, если вы можете уверенно держать дрель и готовы рискнуть 29 долларами… то специально для вас я создала собственную методику DIY.

Я внимательно изучила внутренности первого AirTag. Затем взяла сверло 1/16″ и аккуратно проделала отверстие во втором трекере из нашей упаковки в четыре штуки (разумеется, сначала я вынула из него аккумулятор). Каким-то чудом мне удалось не задеть микросхемы, платы и антенну, и я просверлила только клееный пластик. Что самое приятное было в этой операции? А то, что AirTag стойко её пережил и продолжил работать как ни в чём не бывало. 

Понравилось? Тогда можете надеть на него ключ или кольцо. Только сначала не забудьте вынуть из устройства аккумулятор. И, кстати, не надейтесь, что устройство сохранит свои возможности IP67
Понравилось? Тогда можете надеть на него ключ или кольцо. Только сначала не забудьте вынуть из устройства аккумулятор. И, кстати, не надейтесь, что устройство сохранит свои возможности IP67

Удивительно, но звуковой профиль практически не изменился: уровень децибел на расстоянии одного iPhone Mini от AirTag находился в пределах погрешности +/- 1 дБ от непросверленного AirTag (около 78–80 дБ). С учётом того, что в качестве мембраны динамика Apple использует сам пластиковый купол, это стало приятным сюрпризом.

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

Чтобы безопасно продырявить AirTag, нужно просверлить одну из выемок в печатной плате / экране антенны (подробнее об этом расскажу чуть позже) в том месте, в которое заходят зажимы, скрепляющие части трекера. На видео я выделила три таких выемки. Можно увидеть, что их положение примерно соответствуют положению зажимов металлической крышки аккумуляторного отсека, то есть эти зажимы можно использовать в качестве ориентира. В идеальном случае нужно не попасть сверлом в сам зажим (у меня это получилось), а просверлить только клеевую часть, но, если всё-таки случится так, что вы заденете зажим — это не будет смертельно ни для вас, ни для AirTag.

Кстати, Apple за 13 долларов продаёт держатели для AirTag, не говоря уже о сторонних производителях, продукция которых уже заполонила интернет-магазины. Но мой доморощенный способ сверления отверстия позволяет разместить AirTag на брелоке или кольце с минимальным количеством дополнительных деталей, увеличивающих вес и объём конструкции. Взломать можно даже самое мелкое устройство, и мы будем бороться за это наше право.

Заскучали? Напрасно, ведь мы ещё не вскрывали платы

Снять платы с Tile (слева) и Samsung (справа) — пара пустяков, чего не скажешь об AirTag
Снять платы с Tile (слева) и Samsung (справа) — пара пустяков, чего не скажешь об AirTag

Мы поговорили об аккумуляторах, поразвлекались немного с дрелью, теперь перейдём к мозговому центру — платам. Материнская плата Mate (слева) красивого чёрного цвета помещена в литую пластиковую рамку и вынимается простым движением вверх. SmartTag от Samsung (справа) — единственный из трёх трекеров, в котором используются винты: два из них крепят плату. Это довольно удивительно, учитывая любовь Samsung к клеевым соединениям.

AirTag — самый стойкий из трёх трекеров. Он скорее умрёт, но, где спрятано золото, не выдаст. Его плата приклеена намертво, и монтажной лопатке развернуться совсем негде. Плата размещена в изящно спаянном корпусе антенны, а в центре «пончика» располагается крайне хрупкая звуковая катушка. Плата сидит как влитая, и вряд ли её можно снять, не повредив. Если вы решили повторить мой путь и добрались до этого места, смиритесь с тем, что восстановить работоспособность устройства, скорее всего, не удастся.

Как и во многих продуктах Apple, плата AirTag многослойная прямо как огр. Слева показана вся сборка (вид сверху) с медной звуковой катушкой в центре, которая всё ещё скреплена двумя паяными соединениями. Плата размещается внутри позолоченной пластиковой антенной рамки, которую, чтобы лучше рассмотреть, мы перевернули (в центре, звуковая катушка снята); а справа показана нижняя часть платы, на которой размещается «тяжелая артиллерия».

Первая сторона логической платы AirTag, на которой размещается трёхосевой акселерометр Bosch Sensortec BMA28x, также встречается в других продуктах Apple.
Первая сторона логической платы AirTag, на которой размещается трёхосевой акселерометр Bosch Sensortec BMA28x, также встречается в других продуктах Apple.

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

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

Их перечисление
  • U1 СШП-приёмопередатчик Apple.

  • Bluetooth SoC с низким энергопотреблением и NFC-контроллером Nordic Semiconductor nRF52832

  • Флеш-память 32 МБ NOR flash GigaDevice GD25LE32D

  • Цифровой усилитель звука Maxim Integrated MAX98357B, класс AB. 

  • Операционный усилитель ввода/вывода 1 МГц, rail-to-rail Texas Instruments TLV9001

  • Коммутатор нагрузки, реле защиты от максимального напряжения ON Semiconductor FPF2487

  • Понижающий преобразователь 300 мА DC-DC Texas Instruments TPS62746

  • Что-то похожее на преобразователь DC-DC ON Semiconductor.

  • Что-то похожее на преобразователь DC-DC ON Texas Instruments.

В своём анонсе AirTag Apple только и говорила, сколько усилий она приложила, чтобы её трекер соответствовал стандартам конфиденциальности Apple. Предотвращая злоумышленное использование, iPhone предупредит хозяина, если AirTag, не зарегистрированный в его учётной записи iCloud, следит за ним. Кроме того, AirTag, который хозяин не использовал длительное время, начнёт издавать звуки, если его взять в руки, и тем самым привлечёт к себе внимание. 

Но вернёмся к звуку. Что, если злоумышленник отключит динамик AirTag, а потом заставит его за кем-то следить? Мы провели небольшое исследование и считаем нужным сообщить: есть несколько относительно простых способов отключения динамика и сохранения при этом работоспособности AirTag. По понятным причинам мы не будем рассказывать, как это сделать. Просто знайте об этом — особенно если учесть, что не у всех есть iPhone, который может получать уведомление о «выключенном» AirTag. Для сравнения: пьезоэлектрические динамики в Tile Mate и Galaxy SmartTag отключаются так же легко, но они, похоже, не могут похвастаться такими же мощными функциями безопасности.

Итак, мы разобрали устройство

Мы не можем объяснить, почему AirTag так долго добирался до рынка, но можем с уверенностью сказать, что компания постаралась на славу. Это устройство не похоже на продукт первого поколения. Можно ли в него внести улучшения? Можно, но, по сравнению с рыночным стандартом Tile AirTag представляется устройством, продуманным до мелочей. По сравнению с предложением Samsung AirTag — это элегантная футуристическая ЕВА, а SmartTag — неуклюжий работящий ВАЛЛ-И.

Кстати, об улучшениях: хотя Apple любит продукты, которые «просто работают», иногда таким продуктам требуется небольшая помощь, чтобы ими могли пользоваться простые люди. Оказалось, что методы DIY вполне работоспособны и не лишают вас возможностей (кроме потери класса защиты от проникновения загрязнений, но эту проблему побороть легко — нужна всего пара нашлёпок Sugru). С другой стороны, одна из главных функций безопасности AirTag довольно элементарно отключается без всяких хитростей — мрачное напоминание, что в наши дни цифровая конфиденциальность и безопасность остаются и ещё долго будут оставаться головной болью разработчиков.

Так какой же трекер взял главный приз? С точки зрения аппаратного обеспечения, его продвинутость большой роли не играет, но если у вас iPhone 11 или выше (кроме iPhone SE 2020), то добавленная к AirTag СШП-функциональность указателя будет приятным плюсом. С точки зрения ремонтопригодности, все устройства имеют сменные батареи, и на этом практически всё. Но могло быть и хуже! AirTag, естественно, выглядит наиболее впечатляюще, у него изящный динамик. Кому как, но мы считаем, что Apple идёт верной дорогой.

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

Если вам интересны устройства Apple изнутри во всех смыслах и вы хотели бы попробовать себя в роли мобильного разработчика, обратите внимание на наш курс по iOS-разработке, где вы научитесь кодить на Swift, работать с анимациями, познакомитесь с Human Interface Guidelines (руководством по созданию интерфейсов по стандартам Apple) и опубликуете своё приложение в AppStore.

Узнайте, как прокачаться и в других специальностях или освоить их с нуля:

Другие профессии и курсы

ссылка на оригинал статьи https://habr.com/ru/company/skillfactory/blog/554452/

Nix: воспроизводимая сборка

Привет, Хаброюзеры!

Сегодня мы продолжим наш цикл статей о Nix и как мы в Typeable его используем.

Первый пост из серии, рассказывающий об основах языка Nix, можно прочитать здесь.

Так как мы очень любим и много используем Haskell для разработки, пример приложения будет на этом языке, но знание Haskell здесь никак не требуется. С лёгким допиливанием, код из примеров можно использовать и для сборки проектов на других языках.

Весь код для этой статьи можно найти в репозитарии на Github.

Проблема

Сборка и CI — одни из самых больших проблем в разработке софта. На поддержку сборочной инфраструктуры очень часто уходит невообразимое количество ресурсов. С помощью Nix мы попытаемся если не исправить ситуацию, то сделать её немного более приемлемой. Nix позволяет нам обеспечить воспроизводимость сборки наших проектов, переносимость между разными ОС, унифицировать сборку компонентов на различных языках и так далее.

Наше приложение

Итак, начнём с приложения, которое мы хотим собрать. В нашем случае, это будет простая программа на языке Haskell, выводящая сообщение Hello world.

Наш Main.hs:

module Main where  main :: IO () main = putStrLn "Hello, World!"

Для сборки проекта без Nix мы используем утилиту stack (подробнее с ней можно ознакомиться здесь). В качестве описания проекта для stack требуется файл stack.yaml, содержащий список наших пакетов и resolver. Последнее — это стабильный срез Hackage, базы пакетов для языка Haskell, в котором гарантируется, что все пакеты собираются и дружат друг с другом (NB подобных срезов крайне не хватает в других языках ): ).

stack.yaml:

resolver: lts-17.11  packages: - hello-world

Рецепт сборки конкретного пакета находится в hello-world.cabal:

cabal-version:      2.4 name:               hello-world version:            1.0 synopsis:           Hello World license:            MIT license-file:       LICENSE author:             Nick  executable hello-world     main-is:          Main.hs     build-depends:    base >= 4 && < 5     hs-source-dirs:   src     default-language: Haskell2010     ghc-options:      -Wall -O2

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

$ stack run hello-world Hello, World!

Come to the dar^Wnix side, we have cookies!

Сам по себе stack — отличное средство для сборки проектов на Haskell, но в нём не хватает многих возможностей. Для сборки программ на Haskell для Nix есть библиотека haskell.nix, разработанная компанией IOHK. Её-то мы и будем здесь использовать. Для начала, сделаем так, чтобы наш проект собирался с помощью Nix.

Haskell.nix позволяет нам в несколько строчек преобразовать всю информацию о сборке нашего проекта из .cabal-файлов и stack.yaml в derivation для Nix.

nix/stackyaml.nix:

{   # Импортируем последнюю версию haskell.nix с GitHub и инициализируем Nixpkgs с её использованием.   haskellNix ? import (builtins.fetchTarball "https://github.com/input-output-hk/haskell.nix/archive/b0d03596f974131ab64d718b98e16f0be052d852.tar.gz") {}   # Здесь мы используем последнюю стабильную версию Nixpkgs. Версия 21.05 скоро выйдет :) , nixpkgsSrc ? haskellNix.sources.nixpkgs-2009 , nixpkgsArgs ? haskellNix.nixpkgsArgs , pkgs ? import nixpkgsSrc nixpkgsArgs }:  let   # Создаём проект на базе stack. Для проектов Cabal есть функция cabalProject.   project = pkgs.haskell-nix.stackProject {     name = "hello-world";      # Derivation с исходным кодом проекта.     # Функция cleanGit копирует для сборки проекта только файлы, присутствующие в нашем git-репозитарии.     src = pkgs.haskell-nix.haskellLib.cleanGit {       name = "hello-world";        # Параметр src должен указывать на корневую директорию, содержащую stack.yaml.       src = ../.;        # keepGitDir оставляет директорию .git при сборке.       # Это может быть полезно, например, чтобы вставить хэш коммита в код.       keepGitDir = true;     };      # В параметре modules можно указать параметры сборки как для всех модулей сразу, так и для каждого в отдельности.     modules = [{       # doCheck отвечает за запуск юнит-тестов при сборке проекта, в том числе содержащихся во всех зависимостях.       # Здесь мы этого хотим избежать, поэтому этот параметр лучше всего ставить false и включить только для нужных       # пакетов.       doCheck = false;        # Добавим для нашего Hello World флаг -Werror.       packages.hello-world.components.exes.hello-world.ghcOptions = [ "-Werror" ];     }];   };  # Наружу из этого файла мы выставляем project -- наш проект, а также pkgs -- срез nixpkgs, который мы будем использовать дальше. in { inherit project; inherit pkgs; }

Давайте проверим, что наш проект теперь можно собрать через Nix. Для этого достаточно команды nix build. Как и всегда, в текущей директории будет создана символическая ссылка result, содержащая результаты сборки.

$ nix build project.hello-world.components.exes $ ./result/bin/hello-world Hello, World!

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

Dockerfile? Какой Dockerfile?

Сейчас 2021 год, и очень многие компании используют Docker для деплоя и запуска сервисов. Typeable здесь не будет исключением. В составе nixpkgs есть весьма удобный инструментарий для сборки контейнеров под названием dockerTools. Более подробно с его возможностями можно ознакомиться по ссылке, я лишь покажу, как мы с его помощью упаковываем наш код в контейнеры. Полностью код можно посмотреть в файле nix/docker.nix.

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

sourceImage = dockerTools.pullImage {   imageName = "centos";   imageDigest = "sha256:e4ca2ed0202e76be184e75fb26d14bf974193579039d5573fb2348664deef76e";   sha256 = "1j6nplfs6999qmbhjkaxwjgdij7yf31y991sna7x4cxzf77k74v3";   finalImageTag = "7";   finalImageName = "centos"; };

Здесь всё очевидно для всех, кто когда-либо работал с Docker. Мы говорим Nix, какой образ из публичного Docker Registry мы хотим использовать и что дальше мы будем на него ссылаться как на sourceImage.

Для сборки самого образа в dockerTools есть функция buildImage. У неё довольно много параметров, и часто проще написать свою обёртку над ней, что мы и сделаем:

makeDockerImage = name: revision: packages: entryPoint:   dockerTools.buildImage {     name = name;     tag = revision;     fromImage = sourceImage;     contents = (with pkgs; [ bashInteractive coreutils htop strace vim ]) ++ packages;     config.Cmd = entryPoint;   };

Наша функция makeDockerImage принимает четыре параметра: имя контейнера, его версия (в Typeable мы обычно используем хэш коммита из git в качестве тега), пакеты, которые мы хотим включить, и точку входа при запуске контейнера. Внутри же мы ссылаемся на образ с CentOS как основу (fromImage), плюс добавляем всякие утилиты, крайне полезные при экстренных случаях.

И, наконец, создадим образ с нашим великолепным приложением.

hello-world = project.hello-world.components.exes.hello-world; helloImage = makeDockerImage "hello"    (if imageTag == null then "undefined" else imageTag)   [ hello-world ]   [ "${hello-world}/bin/hello-world"   ];

Для начала мы создадим алиас для нужного нам пакета, чтобы не писать project.hello-world... повсюду. Дальше, вызвав написанную ранее функцию makeDockerImage, мы создаём образ контейнера с пакетом hello-world. В качестве тэга будет указан параметр imageTag, передаваемый снаружи, либо "undefined" если ничего не передано.

Проверим сборку:

$ nix build --argstr imageTag 1.0 helloImage [4 built, 0.0 MiB DL]   $ ls -l result lrwxrwxrwx 1 user users 69 May 11 13:12 result -> /nix/store/56qqhiwahyi46g6mf355fjr1g6mcab0b-docker-image-hello.tar.gz

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

$ docker load < result  76241b8b0c76: Loading layer [==================================================>]  285.9MB/285.9MB Loaded image: hello:1.0 $ docker run hello:1.0 Hello, World!

Заключение

В итоге, с помощью сравнительно небольшого количества кода, у нас получилось сделать воспроизводимую сборку нашего проекта на Haskell. Точно так же, заменив haskell.nix на что-то другое, можно поступить с проектами на других языках: в nixpkgs есть встроенные средства для C/C++, Python, Node и других популярных языков.

В следующей статье цикла я расскажу о частых проблемах, которые возникают при работе с Nix. Stay tuned!

ссылка на оригинал статьи https://habr.com/ru/company/typeable/blog/556828/

ИТ-системы в современном здравоохранении

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

Цифровая трансформация все изменила

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

Здравоохранение и пандемия

Когда к обычному потоку пациентов добавились больные коронавирусом, нагрузка на системы здравоохранения выросла. Согласно отчету ONS из-за ограниченной доступности лечения или его отсутствия лечения пострадало 42% пациентов.

Речь теперь не идет о планах долгосрочного развития или преобразованиям к 2030 или 2040 гг. — все нужно здесь и сейчас. Устаревшее оборудование, в том числе ИТ-системы, мешают медицинским специалистам сосредоточиться на основных задачах. Многие системы поддерживают ключевые процессы от клинических исследований до сопровождения терапии. Поэтому сбои сети в учреждениях здравоохранения недопустимы.

Анатомия современной медицинской инфраструктуры

В основе всех ИТ-систем здравоохранения, как и любых других, лежит хранение и передача данных. Большинство, если не все, медицинские устройства Интернета вещей используют данные и информацию, доступные через различные точки в больничной сети. Например, радиологу обычно требуется доступ к результатам рентгенологических обследований пациента, чтобы просматривать снимки, которые были автоматически загружены в систему аппаратом МРТ.

Для обеспечения такой степени интеграции в большинстве больниц есть так называемый центр интеграции. Это центральный коммуникационный центр, который надежно хранит информацию и данные и предоставляет их по требованию. Этот центр можно сравнить с центральной нервной системой больницы, обеспечивающей все коммуникации по сети. В более крупных больницах центр интеграции работает с несколькими другими независимыми системами данных, такими как система для передачи и архивации изображений (PACS), радиологическая информационная система (RIS) и лабораторная информационная система (LIS). Интеграция с этими системами обеспечивает хранение информации в правильных сегментах сети.

Что такое PACS

По сути PACS — это платформа для хранения изображений и обмена ими. Устройства для визуализации (англоязычные специалисты по медицинской технике называют их modality) позволяют делать все виды визуальных исследований: рентгеновские снимки, ультразвук, компьютерная томография и т.д. Эти изображения долгосрочно хранятся в центральном репозитории, откуда их можно получать, передавать их на другие рабочие станции и устройства. Этот центральный репозиторий и называется PACS.

Изображения важны для диагностики и лечения всех видов болезней и травм, поэтому PACS является критически важным инструментом современного врача. Подробнее об этом – в нашем докладе по мониторингу ИТ в здравоохранении.

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

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

1. Оборудование

Поскольку PACS, в первую очередь, система хранения, она требует дискового пространства. За этим нужно следить: установить пороговые значения, генерировать предупреждения, если места на хранилище мало. Необходимо контролировать параметры работы серверов и СХД: отслеживать признаки аппаратных сбоев (перегрев, дефицит оперативной памяти и т.д.)

2. Задержка операций чтения/записи для PACS и хранилища

PACS постоянно сохраняет изображения в хранилище и загружает их. Сюда входят такие задачи, как подготовка к загрузке, краткосрочная передача, долгосрочная передача и многое другое. Задержки обращений PACS к системе хранения на чтение и запись должны быть минимальны, чтобы не замедлять работу всей системы. Рекомендуется отслеживать эту задержку и устанавливать пороговые значения.

3. API и файлы журналов PACS

Многие PACS предоставляют API для доступа к информации о работоспособности и состоянии компонентов, и почти все такие системы создают файлы журналов. Обычно API PACS может предоставить данные по текущей производительности приложений и метрики, такие как количество полученных запросов DICOM, количество ошибок и статус обработки внутренних запросов. Получать эти показатели через соответствующий API можно в системе мониторинга сети (например, с помощью запросов REST, если API предоставляет интерфейс RESTful), можно генерировать предупреждение при выходе значений за пределы допустимых диапазонов.

Журналы содержат сведения о таких сбоях, как неудачные попытки аутентификации или внутренние сбои PACS. Рекомендуется регулярно проверять журналы с помощью системы мониторинга на предмет потенциальных проблем.

4. Интерфейсы

PACS занимает центральное место в ИТ-инфраструктуре типичной больницы и имеет интерфейсы для взаимодействия с множеством систем и устройств, таких как радиологическая информационная система, устройства визуализации и многое другое. Нужно внимательно следить за этими интерфейсами.

Существует два основных протокола для связи между медицинскими системами, которые можно использовать для мониторинга интерфейсов.

·         DICOM (Digital Imaging and Communications in Medicine): используется для хранения, извлечения и передачи цифровых медицинских изображений, например между PACS и устройствами визуализации, рабочими станциями. Чтобы проверить состояние интерфейсов DICOM, можно использовать функцию C-STORE для проверки возможности сохранения изображения и запросы C-MOVE и C-FIND для проверки передачи изображений.

·         HL7 (Health Level 7): обмен другими данными между системами, такими как данные пациентов, результаты тестов и т.д., в основном осуществляется с помощью HL7. Если сообщения HL7 передаются неправильно или не полностью, это может вызвать задержки или проблемы в других системах. Рекомендуется отправлять тестовые сообщения HL7 и проверять успешность их передачи и полноту информации. Это можно сделать с помощью программного обеспечения для мониторинга, поддерживающего HL7.

·         Пользовательский интерфейс: для запроса данных из PACS на рабочей станции часто используются веб-интерфейсы. Чтобы обеспечить удобство работы пользователей, администраторы должны контролировать скорость отклика и доступность этих интерфейсов.

Как ИТ-администраторы разбираются во всем этом?

Когда речь идет о работе больницы и уходе за пациентами, правильное устранение неисправностей очень важно. Однако это не значит, что контролировать нужно абсолютно все. Правильнее утверждать, что ИТ-администраторы должны сосредоточить внимание на четырех ключевых компонентах инфраструктуры больницы.

1. Цифровое медицинское оборудование

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

2. Центр интеграции

Центр интеграции — это коммуникационный узел для всей сети. Поэтому надо обязательно следить за ним внимательно. К счастью, большинство серверов центра интеграции предлагают API-интерфейсы, которые удобно использовать для получения данных о производительности сервера и его мониторинга.

3. Взаимодействие между медицинскими системами

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

В больничной ИТ-инфраструктуре для этого требуется инструмент мониторинга, который способен понимать медицинские протоколы, такие как протоколы DICOM (Digital Imaging and Communications in Medicine) и HL7.

4. Традиционные ИТ-системы

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

Максимальная надежность в любое время

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

К счастью, обладая необходимыми инструментами, опытом и оборудованием, ИТ-персонал больницы может справиться со всеми вызовами. Позвольте врачам и медсестрам сосредоточиться на самом важном. Сохранении нашего здоровья.

——-

PRTG Network Monitor от Paessler AG: https://paessler.softline.ru/

ссылка на оригинал статьи https://habr.com/ru/company/softline/blog/556836/