All streams
Search
Write a publication
Pull to refresh
60
0

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

Send message

Запускаем Julia на Arduino

Reading time19 min
Views6.4K

У меня нет особого опыта работы с микроконтроллерами. Раньше я немного экспериментировал с Arduino, а главной точкой входа моей домашней сети является Raspberry Pi, но на этом мой недавний опыт заканчивается. Я прошёл один курс по микроконтроллерам несколько лет назад, и справлялся с ним ужасно, едва набрав проходной балл. Тем не менее они меня восхищают — это устройства с низким энергопотреблением, которые можно запрограммировать выполнять практически любые операции, если быть аккуратным с управлением ресурсами и не стрелять себе в ногу.

При обсуждении Julia всегда подразумевается обязательное наличие двух аспектов: среды исполнения и сборщика мусора. Чаще всего оптимизация Julia (да и любого другого кода) сводится к двум аспектам:

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

Требование 1 сводится к принципу «не обменивайтесь информацией со средой исполнения и GC, если это необязательно», а требование 2 — к принципу «убедитесь, что не выполняется ненужный код, например, интерпретатор», то есть статически компилируйте свой код и по возможности избегайте динамичности.
Читать дальше →

Российское ПО или каково пить сладкий чай без сахара

Reading time7 min
Views56K
Этот велосипед формально на ходу, на нём можно приноровиться ездить. С потерями и ранами, но можно. А нужно?

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

Я нашёл девять слагаемых этой формулы. И они меня, откровенно говоря, опечалили. Скажу сразу, я субъективен и не работал с ПО всех типов и не говорю, что все в чём-то нехороши — например, я видел удачные российские системы управления сервисом, ITSM, CRM, ERP, BPMS и т.д. Но и в эти добротные системы проникает особый дух отечественной разработки, отчасти связанный с пожеланиями пользователей. Впрочем, обо всём по порядку.
Читать дальше →

Создание демки специально для HABR — Часть 1

Reading time16 min
Views8.5K

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

Здесь я хочу поделиться «прохождением» этой «игры», под названием Демка для ПЭВМ «Микроша». В процессе чтения статьи может показаться, что всё просто и очевидно. Это всё так, когда есть документация и описание всех подводных камней. Когда каждый подводный камень ищешь сам, то это всё превращается в невероятно сложный квест.
Читать дальше →

Создание REST API с помощью Feathers.js и SQLite

Reading time8 min
Views3.9K

Вы ищете способ создать веб-приложение с такими функциями, как аутентификация, настройка базы данных и авторизация, без написания тонны кода и конфигураций? Когда-нибудь хотели создать готовое к выпуску в прод приложение за считаные дни?

Хотите — верьте, хотите — нет, но это возможно! Это руководство покажет вам, как использовать Feathers.js для создания REST API за считаные минуты. Мы изучим Feathers.js, реализуем пример API, а также поделимся некоторыми мыслями и соображениями.

Давайте узнаем, как создать REST API Feathers.js для быстрого прототипирования приложения.
Читать дальше →

RVO и NRVO в C++17

Reading time8 min
Views33K

Предположим, что в программе на C++ вы возвращаете из функции локальную переменную. Что происходит при вызове оператора return: копирование, перемещение или ни то, ни другое? От этого зависит длительность вызова функции и эффективность наших программ. Я постарался разобраться с этим вопросом и дам рекомендации по написанию функций так, чтобы повысить шансы на применение этой оптимизации компиляторами. Ну, а сокращения в названии статьи — это Return Value Optimization (RVO) и Named Return Value Optimization (NRVO).

Читать далее

Как я открыл компанию по созданию детских наборов электроники – Часть 1

Level of difficultyEasy
Reading time11 min
Views32K


В 2020 году я открыл своё дело. После наёмной работы это было похоже на рай, но скоро стало очевидно, что более необдуманного решения я в жизни ещё не принимал. За два года хождения по граблям, поиска решений, борьбы с самодисциплиной и режимом дня, я собрал достаточно историй об ошибках и удачах, и теперь хочу поделиться этим опытом с вами.
Читать дальше →

Гик != айтишник 

Reading time7 min
Views15K

Я старательно покупаю всё, о чём даже боялся грезить,
чувствуя злорадство, но не восторг.

Вера Полозкова


Небрежная одежда, неухоженный вид, взлохмаченные волосы, полная интроверсия и неумение общаться — если вы так себе представляете программиста, то как вас занесло на Хабр? Любой человек, хоть как-то знакомый с IT-сферой, знает, что программисты, девопсы, тестировщики, инженеры, разработчики, — айтишники, — это умные, продвинутые, практичные ребята с хватким умом и умением общаться ровно так, как того требуют условия. Прежде всего потому что IT — это бизнес. Они не ходят обвешанные гаджетами, не скупают последние модели техники, не бегут менять двенадцатый на тринадцатый и вообще относятся к носимым устройствам и электронике не фетишистски, а весьма утилитарно. У них может быть хобби, связанное или не связанное с технологиями, но они не посвящают ему жизнь и всю зарплату (за редким исключением). Получается, они не гики?
Читать дальше →

Руководство по обеспечению высокой доступности в Kubernetes

Reading time11 min
Views13K

Перед вами полноценный гайд по запуску приложений с высокой доступностью (HA) в Kubernetes. В его основу лёг мой многолетний опыт работы с этой системой, приправленный лучшими практиками из официальной документации OpenShift и Kubernetes.
Читать дальше →

Используем клиентский процессор по максимуму. Часть 2: SIMD + мультипоточность

Reading time25 min
Views11K

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

В предыдущей части мы нарисовали фрактал Ньютона с помощью WebAssembly на Rust. В этой части мы задействуем SIMD команды и параллельные вычисления, чтобы добиться ещё большей производительности.

Вживую увидеть прирост скорости можно на онлайн-демо. На моём компьютере она составляет ~900% по сравнению с обычной реализацией на wasm.
Читать дальше →

Z-Uno Shield 2. Вторая попытка сделать дома «умными»

Reading time7 min
Views7.1K


В своей работе часто делаю прототипы устройств для «умных» домов на базе Z-wave. Проект Z-Uno упрощает этот процесс до уровня работы с ардуино. Подключил совместимые датчики, установил готовую библиотеку для них и написал сотню строк кода. Получил сертифицированное устройство, которое совместимо с другими устройствами Z-Wave. Но главный недостаток – нестандартная печатная плата. И весь огромный парк плат расширений для ардуино можно использовать, только подключив его проводами. Поэтому появление устройства Z-Uno shield был вопросом времени. Проведя «тщательный анализ» работы за последние годы, выяснилось: практически для каждого устройства необходимо организовать питание, подключить датчик и исполняемое устройство, написать программу, в которой нужно настроить работу с подключённой периферией. Пусть эти типовые задачи решает Shield, а мне останется больше времени на творчество и радости жизни!
Читать дальше →

Как ускорить работу в командной оболочке Bash

Reading time4 min
Views26K

Любому начинающему разработчику необходимо научиться пользоваться командной строкой. При этом для выполнения в ней команд требуется оболочка. В статье речь пойдёт об оболочке Bash, которая популярна в UNIX-подобных системах и в большинстве дистрибутивов Linux используется штатно.
Читать дальше →

HDMI OLED-дисплей в стиле стимпанк

Reading time5 min
Views10K

Чёрт возьми! Я не мог оставить без внимания тот факт, что мой предыдущий дурацкий проект получил настолько живой отклик. Вряд ли мне когда-либо удастся превзойти такое соотношение приложенных усилий и полученных за них «интернет-очков». Дурацкий, глупый и бесцельный — похоже, это мои дежурные слова. А что станет наиглупейшим апгрейдом для глупейшего дисплея, как ни придание ему вида а-ля стимпанк? Но в моём представлении это никак не цепляние к шляпе покрашенных в золото шестерёнок. Если я говорю стимпанк, то подразумеваю фрезерованную латунь и накатку.
Читать дальше →

Культовые игры Dendy: три легенды девяностых

Reading time7 min
Views29K

Для подавляющего большинства рождённых в конце 70-х и начале 80-х эра компьютерных игр началась в 90-е годы с приставок Dendy. Такое имя получил созданный по инициативе компании Steepler и идее Виктора Савюка не совсем легальный и официальный клон приставки третьего поколения Nintendo NES / Famicom, предназначенный для рынка России и других стран постсоветского пространства.
Читать дальше →

Знакомство с ООП на примере JavaScript

Reading time17 min
Views107K

Всем привет! В этой статье мы рассмотрим основные характеристики объектно-ориентированного программирования (ООП) на практических примерах JS-кода. В ходе обсуждения мы осветим основные принципы ООП, а также ответим на вопросы, почему и когда этот стиль может быть полезен.
Читать дальше →

Команда awk – примеры использования в Linux и Unix

Reading time5 min
Views218K

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

Спин-оффы, что популярнее оригиналов

Reading time10 min
Views12K

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

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

Используем клиентский процессор по максимуму. Часть 1: Rust + WebAssembly

Reading time19 min
Views12K

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

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

Прирост производительности при использовании всех техник оптимизации по сравнению с реализацией на чистом JS может составлять ~1000%: от 8–9 до 100–110 фпс. Это можно проверить на интерактивном онлайн-демо, позволяющем также поиграться с числом потоков, способом вычислений и формой фрактала.
Читать дальше →

Mesh: 29 лет с появления первого общедоступного браузера

Reading time5 min
Views7.5K

30 апреля 1993 года интернет-браузер под названием WorldWideWeb стал общедоступным, а его код — открытым. Его «отцом» стал знаменитый британский программист и разработчик Тимоти Бёрнерс-Ли: создатель идеи всемирной сети.

За четыре года до того, в марте 1989 года, Тим Бёрнерс-Ли представил руководству CERN, расположенной в Швейцарии Европейской организации ядерных исследований, доклад о необходимости создания распределённой гипертекстовой системы для улучшения работы организации.

К тому времени компьютерные сети вообще, и прямые предки нашего Интернета в частности (ARPANet и NSFNet) в частности, существовали уже два десятка лет — но функционировали они совершенно не так, как привычно нам в XXI веке. Если изрядно упрощать, то Интернет в эпоху своей предыстории функционировал в основном как канал для пересылки сообщений электронной почты. В нём не было ни страниц, доступных с любого подключённого к сети компьютеру, ни их адресов, ни инструмента для их просмотра.
Читать дальше →

KeybJr – универсальное подключение клавиатуры к PCjr

Reading time6 min
Views4.4K

В качестве продолжения своей предыдущей статьи об IBM PC и его особенностях я решил реализовать KeybJr – небольшой открытый проект, позволяющий подключать к PCjr клавиатуру через проводное соединение или ИК-порт. Натолкнуло меня на это отсутствие в системе возможности для подключения нормальной клавиатуры за исключением редких и дорогостоящих сторонних решений.
Читать дальше →

Всемирный день пароля: как цифровая информация обзавелась защитой?

Reading time5 min
Views6.1K

Каждый первый четверг мая в IT-мире отмечается World Password Day: всемирный день паролей. Его предложил ввести в 2005 году Марк Бернетт как напоминание о важности паролей — и выразил пожелание, чтобы хотя бы в этот день пользователи вспоминали о необходимости их периодически обновлять. По предложению Intel Security, с 2013 года он получил своё место в календаре: в 2022 году он пришёлся на четверг 5-го мая.
Читать дальше →

Information

Rating
Does not participate
Location
Россия
Works in
Registered
Activity