System Architect
Как Discord каждый день изменяет размер 150 млн картинок с помощью Go и C++
Хотя Discord — это приложение для голосового и текстового чата, каждый день через него проходит более ста миллионов изображений. Конечно, мы бы хотели, чтобы задача была простой: просто перенаправить картинки вашим друзьям по всем каналам. Но в реальности доставка этих изображений создаёт довольно большие технические проблемы. Прямая ссылка на картинки выдаст хосту с картинкой IP-адреса пользователей, а большие изображения расходуют много трафика. Чтобы избежать этих проблем, требуется промежуточный сервис, который будет получать изображения для пользователей и изменять их размер для экономии трафика.
Встречайте Image Proxy
Для выполнения этой работы мы создали сервис Python и креативно назвали его Image Proxy. Он загружает картинки с удалённых URL, а затем выполняет ресурсоёмкую задачу по ресайзингу с помощью пакета pillow-simd. Этот пакет работает удивительно быстро, используя где только возможно для ускорения ресайзинга инструкции x86 SSE. Image Proxy будет получать HTTP-запрос, содержащий URL, чтобы загрузить, изменить размер и, наконец, выдать окончательное изображение.
Введение в нейронные сети на Golang
Немного предисловия
Начав изучать язык программирования Golang, мне стало интересно, что может этот язык в сфере машинного обучения. Тогда я начал искать примеры кода какой-либо НС на этом языке. К сожалению, ничего толкового найти не получилось. И вот тогда я решил переписать НС из этой статьи под GO.
Настройка Sublime Text 3, SW4 и STM32CubeMX для разработки STM32 под Linux
Подобных статей достаточно много на просторах интернета, но хотелось бы написать актуальную вариацию. Лично я долгое время мучался в связке: Ubuntu — основная система, разработка под STM32 в виртуальной машине Windows 7. Но однажды меня это очень утомило и я таки решил потратить несколько дней на поиск решения и вылизывание полноценной среды под Linux Ubuntu. Забегу вперёд и скажу, что идеала я так и не добился, не удалось сделать realtime debug, как в Keil. В остальном всё очень пристойно.
Внимание, очень много текста и картинок!
Типы struct, union и enum в Modern C++
Язык C++ сильно изменился за последние 10 лет. Изменились даже базовые типы: struct, union и enum. Сегодня мы кратко пройдёмся по всем изменениям от C++11 до C++17, заглянем в C++20 и в конце составим список правил хорошего стиля.
Укрощаем мультимедиа с помощью ffmpeg
Внезапно ваш диск под завязку забит фотографиями и видео, а впереди новые поездки. Что делать, покупать новый, арендовать дисковое пространство на облаке, или может лучше сжать видео файлы через ffmpeg?
Впрочем зачем себя ограничивать экономией дискового пространства? Предлагаю узнать удивительные возможности обработки фотографий, аудио и видео данных, утилитами командной строки.
DARPA заказало разработку мозговых имплантатов высокого разрешения для интерфейса «мозг-компьютер»
Иллюстрация: Paradromics
Управление перспективных исследовательских проектов Министерства обороны США (DARPA) заключило шесть контрактов на разработку нейроинтерфейсов по программе Neural Engineering System Design (NESD). Эта программа ставит целью «значительно улучшить возможности для исследований нейротехнологий и обеспечить основу для новых методов лечения».
На практике DARPA стремится разработать имплантируемый нейроинтерфейс, который обеспечит «беспрецедентные разрешение сигнала и скорость передачи данных между человеческим мозгом и цифровым миром». В техзадании указано, что интерфейс должен работать как конвертор-переводчик, преобразуя электрохимические сигналы мозга в цифровой код (нули и единицы), который используется в информатике. И выполнять обратное преобразование для записи данных в мозг. Цель — коммуникационное устройство для интерфейса «мозг-компьютер» объёмом не более 1 см3.
Стабильность нейтрона в атомном ядре
Ответ на этот вопрос оказывается очень простым после того, как вы поймёте, как работает энергия: это чистая бухгалтерия. Но понять энергию вовсе не просто. Для начала нужно прочесть статью о видах энергии. А до этого необходимо ознакомиться со статьёй об энергии, импульсе и массе. Эти концепции нужно представлять перед тем, как понять ответ на заданный вопрос.
Если вы прочли статью об энергии взаимодействия, вы знаете, что атом водорода состоит из протона и электрона, которые, из-за отрицательной энергии связи, неспособны убежать друг от друга – они заперты внутри атома. Отрицательная энергия связи происходит из отрицательной энергии взаимодействия, частично сбалансированной положительной энергией движения электрона (и немного – протона). Энергия взаимодействия происходит из воздействия электрона на электрическое поле близ протона (и наоборот).
Как проинвертировать три сигнала двумя инверторами или их роль в истории ЭВМ
Как я боролся с комарами. Личный опыт и тесты на себе
Пусть и наступило это лето позже ожидаемого, но с собой оно уже принесло сонмы комаров. А это такая напасть, которая может испортить любой долгожданный праздник на природе. И так как не привык я верить рекламе, то не пожадничал и накупил разных средств от комаров. Решил испробовать на себе, использую любимый системный подход: разрабатываю методику испытаний, провожу испытания, подвожу итоги. Итак, закупаемся и идем поближе к воде, где комаров больше всего.
Переписываем домашний проект на микросервисы (Java, Spring Boot, Gradle)
Введение
Последние годы стала очень популярна тема микросервисов. Я не попадал на проекты с микросервисами, поэтому мне, естественно, захотелось ближе познакомиться с такой концепцией архитектуры.
Ранее у меня был домашний проект (хотя скорее даже его прототип), который было решено переписать на микросервисы. Проект представлял собой попытку сделать обучающую Java игру. То есть у игрока есть поле, на этом поле он может управлять каким-то юнитом с помощью кода. Пишет код, отправляет на сервер, там он выполняется и возвращает результат, который отображается пользователю.
Всё это было реализовано в виде прототипа — были пользователи, один урок и одна задача для него, возможность отправить код, который компилировался и исполнялся. Кое-какой фронтенд, но в статье о нём речи не будет. Технологии — Spring Boot, Spring Data, Gradle.
В статье будет реализован такой же прототип, но уже на микросервисах. Реализация будет наиболее простым путём (точнее наиболее простым, из известных мне). Реализация будет доступна любому, кто знаком со Spring.
Обзор 98 одноплатных компьютеров. Часть 3
Часть 1
Часть 2
Часть 3
Часть 4
NanoPC-T3
Компания/проект — FriendlyElec (FriendlyARM)
Обзор LinuxGizmos
Страница продукта
CPU — Samsung S5P6818 (8x Cortex-A53 @ 400MHz to 1.4GHz); Mali-400 MP GPU
Память — 1GB или 2GB DDR3 RAM; 8GB eMMC
Цена — $60
Компания FriendlyElec (также известная как FriendlyARM) предлагает сейчас как минимум дюжину одноплатников, что превышает наш порог в 10 устройств на компанию, и это заставило нас исключить некоторые из них из нашего первого списка. Несколько сходных продуктов мы объединили в один пункт, модель NanoPi. Размер платы NanoPC-T3 100 x 60mm. Это одна из наиболее развитых плат от FriendlyElec. Она оснащена восьмиядерным Samsung S5P6818. Плата NanoPC-T3 SBC практически идентична более ранним, четырёхядерным NanoPC-T2. В дополнение к более быстрому процессору, плата T3 добавляет опцию 2GB RAM. Также обе платы NanoPC имеют слот SD, GbE, WiFi, и Bluetooth 4.0. На платах установлены четыре USB host, micro-USB client, и медиапорты, включая HDMI, LVDS, LCD, MIPI-DSI, MIPI-CSI, и аудио. Вместо обычного разъёма 40-pin RPi, NanoPC-T3 имеет 30-pin разъём GPIO.
Обзор 98 одноплатных компьютеров. Часть 2
Часть 1
Часть 2
Часть 3
Часть 4
DE0-Nano-SoC Development Kit / Atlas-SoC Kit
Компания/проект — Terasic; RocketBoards.org
Страница продукта
CPU — Intel (Altera) Cyclone V SE (Cyclone V FPGA + 2x Cortex-A9 @ 952MHz)
Память — 1GB DDR3 RAM
Цена — $99
Плата DE0-Nano-SoC Development Kit выгладит как коммерческая отладочная плата, но имеет открытые спецификации и стоит всего $99, что выглядит разумной ценой для платы на основе Cyclone V. Плата DE0-Nano-SoC использует более low-end разновидность SE, которая примерно эквивалентна Xilinx Zynq-7020. Эта SoC объединяет FPGA и два ядра Cortex-A9 под управлением Angstrom v2014.12 Yocto 1.7 с ядром Linux 4.0. На плате есть GbE, USB OTG, порты micro-USB, и слот microSD катрочкой на 4GB. Также есть акселерометр, разъем расширения, подсоединённый к ARM, и различные интерфейсы, подсоединённые к FPGA, включая 40-pin разъём, совместимый с шилдами Ардуино. Есть идентичная версия Atlas-SoC, имеющая программное обеспечения, рассчитанное больше на программистов, чем на разработчиков железа. Есть сообщество на RocketBoards.org.
Обзор 98 одноплатных компьютеров. Часть 1
Часть 1
Часть 2
Часть 3
Часть 4
От переводчика: Предлагаю вашему вниманию перевод отчёта по одноплатным компьютерам, который был опубликован на сайте LinuxGizmos.com. В отчёт включены краткие описания 98 плат стоимостью до 200 долларов. В отчёте такие платы называют «хакерскими», чтобы подчеркнуть их пригодность для различного творчества.
Так как объем информации весьма велик, я разбил перевод на несколько частей.
Также хочу предупредить, что под катом очень много картинок!
Итак, часть 1.
КДПВ
В течение последнего года, LinuxGizmos сообщал о дюжинах новых одноплатных компьютерах с открытыми спецификациями, дружественных к разработчикам и «хакерам», на которых можно запустить Linux и Android. Мы добавили их в наш каталог вместе со старыми платами. Платы, попавшие в наш обзор, стоят меньше 200 долларов без учёта пересылки, доступны для доставки в июле этого года, и удовлетворяют нашим (весьма гибким) критериям открытости.
Используем template + constexpr для создания масок регистров периферии микроконтроллера на этапе компиляции (C++14)
Введение
Эта небольшая заметка содержит не очевидное решение поставленной ниже задачи, до которого мне пришлось доходить несколько бессонных ночей.
Задача: на основе заданных пользователем данных о том, как должен работать периферийный блок микроконтроллера, получить на этапе компиляции массив масок конфигурации его регистров, которые можно было бы использовать в реальном времени. При этом требуется на этапе компиляции проверить, что все параметры заданные верно (периферия микроконтроллера будет сконфигурирована верна).
Заинтересовавшихся в том, как это можно сделать, прошу под кат.
Солнечная батарея на балконе: тестирование батареи ионисторов
В предыдущей части рассказывалось о тестировании литиевых батарей для хранения электроэнергии. В одном из комментариев был вопрос об использовании ионисторов для хранения запасенной энергии. Стало интересно проверить, как это работает.
Конечно, параметры ионисторов можно найти в даташите и посчитать все что надо. Но так не интересно, куда интереснее померять самостоятельно. Для этого на ebay была заказана плата с длинным названием 6Pcs Farad Capacitor 2.7V 500F with Protection Board.
Как это работает, подробности под катом.
Одна модель для обучения всему. Google открыла библиотеку Tensor2Tensor
Оказалось, что можем. Google сделала это — и открыла Tensor2Tensor для всеобщего пользования, код опубликован на GitHub.
Расширение, изменение и создание элементов управления на платформе UWP. Часть 1
В 2006 году вместе с .NET 3.0 разработчикам были предоставлены программные платформы WPF и Silverlight. На протяжении следующих десяти лет Microsoft выпускала новые версии своей операционной системы и соответствующие им платформы. И вот, в 2016 году вместе с Windows 10 была выпущена Universal Windows Platform.
Все платформы отличались в той или степени возможностями API, но общий для них всех язык разметки XAML оставался практически неизменным. Поэтому все разработчики, вне зависимости от того, на какой платформе они работают, сталкиваются с одними и теми же задачами: расширение или изменение существующих, а также разработка новых элементов управления. Это очень важные навыки, необходимые для разработки приложений, удовлетворяющих требованиям дизайна и функциональности.
Эти задачи обусловлены тем, что на любой платформе разработчик располагает ограниченным набором элементов управления необходимых для разработки приложений. Его инструментарий составляют элементы из поставки Microsoft (в случае с UWP — Windows Universal Platform SDK) и от сторонних поставщиков или разработчиков. Даже все вместе они не могут покрыть всех требований, которые появляются при разработке приложений. Имеющиеся элементы управления могут не устраивать по ряду причин: внешний вид, поведение или функционирование. К сожалению, по сей день нет единого источника информации, который подробно и доступно освещал бы решения данных задач. Все, что остается разработчикам на протяжении длительного времени — собирать информацию в интернете крупица за крупицей.
Целью данной серии из трех статей является систематизация способов изменения, расширения и создания новых элементов управления.
GSM-сигнализация для автомобиля на базе Arduino Uno
Предисловие
Кражи автомобилей на протяжении последнего десятилетия занимают одно из значимых мест в структуре совершаемых в мире преступлений. Это обусловлено не столько удельным весом данной категории хищений относительно общего количества преступлений, сколько существенностью причиняемого ущерба ввиду большой стоимости автомобилей. Слабая эффективность принимаемых мер в области борьбы с кражами автотранспорта к концу 90-х годов привела к созданию устойчивых групп, специализирующихся на совершении данных преступлений и обладающих отличительными чертами организованной преступности; вы наверняка слышали термин «черный автобизнес». Автомобильный парк европейских государств ежегодно не досчитывается ≈ 2 % машин, которые становятся предметом преступных посягательств. Поэтому мне пришла идея сделать gsm-сигнализацию для своего автомобиля на базе Arduino Uno.
Начнём!
Подборка полезных материалов по Azure
Информация
- В рейтинге
- Не участвует
- Откуда
- Киев, Киевская обл., Украина
- Дата рождения
- Зарегистрирован
- Активность