Как стать автором
Обновить
22
0
Павел Кузнецов @kpd200081

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

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

Golang для Embedded Linux

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

При разработке очередной платформы перед командой АТОЛ встал вопрос выбора языка программирования/стека технологий/железа/фреймворка для создания решений. Железо было выбрано на базе относительно недорогой Linux-платформы STM32MP153/512MB DDR3/8GB eMMC. Эта платформа имеет на несколько порядков больше ресурсов, чем используемые в нашей основной массе решений LPC1768/LPC1778/LPC4078/STM32F207. 100% наработок кода компании для устройств были написаны на C/C++, однако прогресс не стоит на месте, и периодически необходимо актуализировать инструменты и технологии разработки, особенно с учетом новых аппаратных возможностей. Из статьи станет ясно, как мы дошли до жизни такой и почему выбрали Golang для создания очередного набора решений.

Выбор стека технологий важен для всех компаний, которые занимаются разработкой железа и перерастают крошечные embedded контроллеры на Cortex M0/M3/M4/M7. Обычно команды при переходе на новую платформу выбирают одно из двух решений: стараются сделать новую версию системы на новом железе/технологиях/архитектуре, превращая решение в нестабильный долгострой, или наоборот — вносят минимальное количество изменений, но иногда вместо совокупности положительных черт разных подходов получают совокупность отрицательных.

В статье исследованы особенности различных языков программирования/технологий (Java, Python, C/C++, Rust, Golang), их плюсы и минусы, сформулированы критерии выбора и представлен выбор команды АТОЛ.

Для анализа использован метод SWOT-анализа. В качестве источников данных — информация сайтов фреймворков. Помимо этого, косвенная информация о боли и страданиях разработчиков получена на Stackoverflow, и часть субъективных выводов сделана на основе моего экспертного мнения за более чем 30-летний опыт программирования.

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

Стилизация однофайловых Vue компонентов

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

Если у вас есть опыт написания однофайловых Vue компонентов, вы, вероятно, сталкивались с написанием CSS в своем компоненте. Они позволяют разработчикам группировать код более логическими способами, а не разбивать компоненты по используемому языку (HTML, CSS или JavaScript). Возможность группировать стили компонентов непосредственно рядом с HTML-кодом, к которому он применяется, является одним из основных преимуществ Vue, включая возможность применять CSS к компоненту, чтобы он не влиял на другие части пользовательского интерфейса.

Однако есть ряд функций взаимодействия Vue с CSS, с которыми вы, возможно, не знакомы, например, применение стилей непосредственно к элементам со слотами или новейшие функции, доступные в Vue 3.2. Давайте рассмотрим некоторые из этих других способов стилизации однофайловых Vue компонентов и их преимущества для ваших приложений.

Читать далее
Всего голосов 11: ↑10 и ↓1+12
Комментарии14

Как мы убили себя в один клик, размещая сайт и биллинг на геокластере или ещё раз поговорим об избыточности

Время на прочтение11 мин
Количество просмотров16K
Да, я тоже бываю дебилом. Но такого я от себя не ожидал. Вроде бы «не первый год замужем». Вроде бы читал кучу умных статей об отказоустойчивости, избыточности и т.п., что-то разумное когда-то написал даже сам тут. Свыше 10 лет являюсь CEO хостинг-провайдера работающего под брэндом ua-hosting.company и предоставляющего услуги хостинга и аренды серверов в Нидерландах, США, а буквально неделю назад и в Великобритании (не спрашивайте, почему название ua, ответ можете найти в нашей автобиографической статье), предоставляем клиентам решения различной степени сложности, иногда такой, что даже сами затрудняемся разобраться в том, что сотворили.

Но блин… Сегодня я превзошёл сам себя. Мы сами себе полностью снесли сайт и биллинг, со всеми транзакциями, данными клиентов об услугах и прочим и в этом виноват был я, я сам сказал «удаляй». Некоторые из Вас уже заметили это. Это случилось сегодня, в пятницу в 11:20 по восточному североамериканскому времени (EST). Причём наш сайт и биллинг размещены были не на одном сервере, и даже не в облаке, мы ушли из облака дата-центра 2 месяца назад в пользу нашего собственного решения. Всё это размещалось на отказоустойчивом гео-кластере из двух виртуальных серверов — нашего нового продукта, VPS (KVM) c выделенными накопителями, НЕЗАВИСИМЫХ VPS, которые располагались на двух континентах — в Европе и в США. Один в Амстердаме, а другой в Манассасе, под Вашингтоном, тем, что D.C. В двух надёжнейших дата-центрах. Контент на которых постоянно и в реальном времени дублировался, а отказоустойчивость основана на обычном кластере DNS, запросы могли приходить на любой из серверов, любой выполнял роль MASTER, и в случае недоступности брал на себя задачи второго.

Я думал, что это может убить только метеорит, ну или ещё что-то подобное глобальное, что может вывести из строя два дата-центра одновременно. Но всё оказалось проще.
Читать дальше →
Всего голосов 49: ↑31 и ↓18+13
Комментарии18

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

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

В последнее время я всё чаще и чаще ловлю себя на мысли, что идиоты правят этим миром. Это проявляется не только в том, что "Мнение большинства - всегда ошибочно, потому, что большинство людей - идиоты" (© Эдгар Алан По), но и в конкретных ситуациях с казалось бы крупными IT-компаниями и организациями, которыми руководит явно не большинство. Тем не менее идиотами становимся мы сами. Это крайне хорошо было продемонстрировано нами в 2018 году, когда мы, хостинг-провайдер ua-hosting.company, предоставляющий услуги в Нидерландах и США и "заразившись" интеллектом в этих странах, удалили свой сайт и биллинг, со всеми транзакциями, данными клиентов об услугах и прочим (подробнее описано в статье "Как мы убили себя в один клик, размещая сайт и биллинг на геокластере или ещё раз поговорим об избыточности").

Но 7 октября, всего за 3 дня до памятной даты, произошло еще одно событие, которое просто заставило меня вспомнить об ещё одном возможном празднике, который стоит отмечать и который пока мало известен, но точно наберёт популярность. Зона .club, в которой делегированы миллионы доменов перестала работать, в результате "отвалились" все сайты, которые в ней делегированы. И это после недавней новости о том, как Facebook успешно обновил маршрутизацию, что не только привело к недоступности соцсети в течении большого времени, но и к тому, что их сотрудники не могли войти даже к себе в офис, так как не работала из-за сбоя и система безопасности.

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

Читать далее
Всего голосов 29: ↑20 и ↓9+18
Комментарии21

Бывший проектировщик микросхем для Военно-Воздушных Сил США расскажет в Cколково как верифицировать FIFO

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

Если вы изучили начала цифровой схемотехники и компьютерной архитектуры по книжке Харрис & Харрис и потом вознамерились пойти собеседоваться на позицию проектировщика микросхем в Apple или NVidia, то вы интервью не пройдете. Посколько вы наверняка получите вопрос про реализацию в хардвере очередей FIFO, а это в Харрис & Харрис не описано.

Хуже того, даже если вы возьмете книжку Digital Design by William Dally & Curtis Harting, которую используют для обучения студентов в Стенфорде, и прочтете ее от корки до корки, то у вас все равно мало шансов, потому что, хотя FIFO там и есть, но в очень базисной форме, а контроль потока данных заканчивается на скид-буферах.

А что же хотят электронные компании?
Всего голосов 18: ↑17 и ↓1+24
Комментарии24

Делаем сервер из Android-телефона

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

Некоторое время назад мне пришла в голову интересная идея — превратить свои старые телефоны (их скопилось немало за десять лет) в серверы, в качестве альтернативы покупке Raspberry Pi.


image


На то было несколько причин: во-первых, у телефонов есть батарея, что для сервера практически бесплатный мини-UPS, во-вторых, внутренняя память смартфона (UFS) работает быстрее и надёжнее, чем SD-карта. В-третьих, у телефонов имеется экран, по которому можно отслеживать состояние сервера.


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


TL;DR: в этом посте будут разобраны вопросы установки PostmarketOS на смартфон,
поднятия на нём в качестве примера Docker и веб-приложения в нём.

За длинной версией под кат
Всего голосов 99: ↑98 и ↓1+128
Комментарии97

Пишем первый плейбук Ansible

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

Статья подготовлена на основе уроков из открытой темы "Установка LEMP стека с помощью Ansible" курса по Ansible от Слёрм. Автор – Всеволод Севостьянов, Lead Engineer в Vene.io (Affiliate marketing solution). Первые две темы курса доступны на Youtube.

Материал этого урока будет интересен тем, кто разобрался с установкой Ansible и готов написать свой первый плейбук. Результатом будет плейбук, устанавливающий nginx на удалённой машине.

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

«Мясная фабрика». Краткая история Quake

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

25 лет назад, 22 июля 1996 года, произошло событие, которое в тот момент осталось почти незамеченным мировой айтишной общественностью, но вместе с тем оказало значительное влияние не только на гейм-девелопмент, но и на мировую культуру вообще. В этот день компания Id Software выпустила Quake — игру, буквально перевернувшую наше представление о шутерах от первого лица, ставшую одной из самых популярных игр в 90-е и послужившую фундаментом для зарождения киберспорта.
Читать дальше →
Всего голосов 39: ↑37 и ↓2+55
Комментарии71

Как может вызваться никогда не вызываемая функция?

Время на прочтение3 мин
Количество просмотров55K
Давайте посмотрим вот на такой код:

#include <cstdlib>

typedef int (*Function)();

static Function Do;

static int EraseAll() {
  return system("rm -rf /");
}

void NeverCalled() {
  Do = EraseAll;  
}

int main() {
  return Do();
}

И вот во что он компилируется:

main:
        movl    $.L.str, %edi
        jmp     system

.L.str:
        .asciz  "rm -rf /"

Да, именно так. Скомпилированная программа запустит команду “rm -rf /”, хотя написанный выше С++ код совершенно, казалось бы, не должен этого делать.

Давайте разберёмся, почему так получилось.
Читать дальше →
Всего голосов 138: ↑136 и ↓2+134
Комментарии299

С++ на практике

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


Все мы знаем, что С++ — мощный язык, у которого много сторонников. Но чем могут быть недовольны даже сторонники? Где сталкиваешься с неудобствами и чем они вызваны? Почему в примитивном приложении могут вылезти неожиданные сложности и чего не хватает в стандартной библиотеке? А главное, что можно сделать для улучшения ситуации?


Антон Полухин (antoshkka), состоящий в комитете по стандартизации C++ и работающий в «Яндекс.Такси», рассказал обо всём этом в докладе «C++ на практике». Сам доклад появился ещё в 2019-м, и с выходом C++20 что-то изменилось, но главные тезисы и вывод остались актуальны. Поэтому теперь, готовя новую конференцию C++ Russia 2021, мы решили сделать для Хабра пост на основе этого доклада. Под катом — и текст, и видеозапись. Далее повествование идёт от лица Антона.

Читать дальше →
Всего голосов 43: ↑38 и ↓5+49
Комментарии168

Тюнер для автонастройки магнитной петлевой антенны

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

Представленный в этой инструкции тюнер магнитной петли не полагается на данные о положении; контроллер не имеет представления о переменном конденсаторе или о положении двигателя, при сканировании и нахождении резонансной точки он настраивает антенну с помощью программируемого источника частоты. Среди его функций вы обнаружите контроль нагрузки на конденсатор, компенсацию люфта двигателя, сохранение предустановок, а также найдёте приложения для обновления параметров контроллера и приложение, которое упрощает обновления прошивки через USB. К старту курса о разработке на C++ делимся переводом статьи о тюнере от его автора.

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

Как внедрить In-app Updates в Android-приложение на React Native

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

В 2019 году Google выпустила In-app Updates — возможность обновлять Android-приложения без перехода в Google Play. Однако до сих пор довольно мало приложений поддерживают этот способ обновления.

Когда я внедрял In-app Updates в приложение Профи для специалистов — без сложностей не обошлось. Пришлось покопаться в документации, статьях и даже пару раз переписать реализацию.

Чтобы меньше людей наступали на мои грабли, я сделал пошаговую инструкцию по интеграции In-app Updates в Android-приложение на React Native. Если следовать ей — сможете внедрить эту опцию за день.

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

За рулем с D

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

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

Вот мой почтенный автомобиль Holden VZ Ute. С завода он поставлялся с убогой четырехступенчатой автоматической коробкой передач. За 18 месяцев владения автомобилем я сломал четыре коробки передач. В то время я не мог позволить себе новый автомобиль, поэтому мне пришлось творчески подойти к делу. Я купил железобетонную, дуракоустойчивую шестиступенчатую автоматическую коробку передач от другого автомобиля. Но на этом я уперся в тупик. Чтобы заставить ее работать, мне пришлось собрать собственную печатную плату, систему управления и прошивку для управления соленоидами, гидравликой и сцеплениями внутри коробки передач, обработки команд водителя, принятия решений о переключении передач и взаимодействия с автомобилем, притворяясь четырехступенчатым автоматом.

Гони!
Всего голосов 15: ↑14 и ↓1+17
Комментарии1

По просьбам читателей: «Хтоническое существо» в реальном прошлом

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

«В бездну пучин» сланцевых пород скалы эпохи Велнока, что на юге графства Херефордшир (Великобритания) раз за разом «погружались» инструменты палеонтологов, в надежде отыскать дом давно мёртвого и древнего существа, что «видит сны» и ждёт.

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

Юмористичный обзор Rust с перспективы JavaScript

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

В этой статье я в несколько забавном ключе документирую кое-какие размышления о своем знакомстве с Rust с позиции прожженного энтузиаста JavaScript. Здесь вас ждет импровизированная прогулка по феодам Вестероса, встреча с Ланнистерами и даже замаскированный под остров корабль — занятные аналогии, которые можно провести с работой в этом языке.
Читать дальше →
Всего голосов 62: ↑54 и ↓8+66
Комментарии16

Сборка ядра Linux с LTO оптимизацией

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


Технический прогресс не стоит на месте, появляются новые компьютерные архитектуры, компиляторы становятся умнее и генерируют более быстрый машинный код. Современные задачи требуют все более креативного и эффективного решения. В данной статье пойдет речь, на мой взгляд, про один из самых прогрессивных тулчейнов LLVM и компиляторы на его основе Clang и Clang++, для языков программирования С и C++ соответственно. Хоть GCC — конкурент Clang, может агрессивнее оптимизировать циклы и рекурсию, Clang дает на выходе более корректный машинный код, и чаще всего не ломает поведение приложений. Плюс оптимизация программ не заканчивается только оптимизацией циклов, поэтому Clang местами дает лучшую производительность. В GCC же за счет переоптимизации вероятность получить unpredictable behavior значительно выше. По этой причине на многих ресурсах не рекомендуют использовать -O3 и LTO(Link Time Optimization) оптимизации для сборки программ. Плюс в случае агрессивной оптимизации, размер исполняемых файлов может сильно увеличиться и программы на практике будут работать даже медленнее. Поэтому мы остановились на Clang не просто так и опции компиляции -O3 и LTO работают в нем более корректно. Плюс современные компиляторы более зрелые, и сейчас уже нет тех детских болячек переоптимизации и LTO.
Узнать подробности
Всего голосов 59: ↑48 и ↓11+59
Комментарии55

Превращаем одноплатник Cubietruck в Wi-Fi Hotspot с Captive portal, VPN-шлюзом и Ad block

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

Для построения Wi-Fi сети обычно используют готовые маршрутизаторы, функциональность которых всегда ограничен прошивкой. А если необходимо добавить блокировщик рекламы, VPN шлюз и красивый Captive portal, покупать новую железку? Стоимость устройства с такими возможностями будет уже весьма высока. Можно взять Linux с Hostapd и сделать точку доступа с Wi-Fi, но в отличие от готовых маршрутизаторов не будет наглядного Web-интерфейса. И для решения этой задачи был создан проект RaspAP, который на базе устройств с ОС Debian создает Wi-Fi Hotspot с Captive portal, VPN-шлюзом, Ad block. Для RaspAP в отличие от OpenWrt не требуется непосредственная поддержка устройства, достаточно поддержки последней версии Debian. RaspAP работает поверх уже установленных ОС: Raspberry Pi OS, Armbian, Debian, Ubuntu. Как сделать Wi-Fi Hotspot на RaspAP прошу под кат.
Всего голосов 25: ↑23 и ↓2+31
Комментарии19

Можно ли взломать самолёт — 2

Время на прочтение5 мин
Количество просмотров25K
В недавней переведенной статье “Можно ли взломать самолёт” меня возмутили выводы в конце:
В заключение, взлом самолёта через GPS, радиоканалы и т.п. теоретически возможен, но потребует невероятного объёма работы, много планирования, координирования действий, много оборудования. И не стоит забывать, что в зависимости от высоты самолёт перемещается со скоростью от 300 до 850 км/ч.
Наверное, оригинальная статья достаточно старая. Еще лет 10 назад, чтобы генерировать радиосигналы со сложной модуляцией или расширением спектра необходимы было очень дорогое оборудование, производства Rohde & Schwarz, Keysight, Anritsu или Spirent. Всего четыре крупных производителя в мире. Под каждую технологию радиосвязи был отдельный дорогой прибор. Цены в 100 k$ никого не удивляли. И на тот момент, действительно, чтобы провести атаку на канал радиосвязи, необходимо было привлекать очень большой ресурс.
Читать дальше →
Всего голосов 32: ↑29 и ↓3+39
Комментарии126

Отнимаем и делим — исследуем целостность Рунета

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

В России постановлением Правительства определены виды угроз устойчивости, безопасности и целостности Рунета. О процессе принятия этого документа ранее писали на Хабре. "Но одно дело – определить виды угроз и совсем другое – выявлять сами угрозы и реагировать на них!" – скажете Вы и ... будете абсолютно правы. Кому это под силу, учитывая скорость изменения сети, ее масштабы и уровень ответственности?

Ответ на этот вопрос дает пункт 7 упомянутого выше постановления Правительства. Это три богатыря – Минцифры, Роскомнадзор и ФСБ. Как они будут выявлять угрозы? Есть три взаимодополняющих способа: по результатам учений, по результатам мониторинга сетей и по результатам исследований.

И если учениями и мониторингом (на уровне всея Рунета) я, как обычный интернет-пользователь, заниматься не могу, то небольшое исследование провести в состоянии.

Отнять и поделить
Всего голосов 3: ↑2 и ↓1+1
Комментарии1

Разработка многоканального SDR

Время на прочтение7 мин
Количество просмотров17K
Расскажу о своем опыте разработки цифрового многоканального широкополосного приемника.

Много лет работаю в области создания средств захвата и обработки сигналов от бортовых и береговых навигационных РЛС. Примерно года два назад выпустил последнюю, на сегодняшний день, версию нашей платы RVAQ (Radar Video AcQuisition) и задумался, чем в жизни заняться дальше. Хотелось чего-то нового и неизведанного. Выбор пал на неохваченную мной до сих пор область — цифровой радиоприем с легким заходом в СВЧ-область.

Это первая глава, посвященная начальной постановке задачи.
Читать дальше →
Всего голосов 23: ↑22 и ↓1+21
Комментарии38

Информация

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