Как благодаря WebAssembly получилось ускорить приложение в 20 раз


Оглавление (нажмите, чтобы открыть):

Кто-нибудь пишет на WebAssembly?

Читал как-то статью на хабре «WebAssembly: начало новой эры» https://habrahabr.ru/post/261205/

Прошёл год. Кто-нибудь пишет на нём?

  • Вопрос задан более трёх лет назад
  • 2750 просмотров

Мы только начинаем пробовать все эти новые штуки.

В основном прицел идёт на кроссплатформенность приложений, смотрим в сторону таких фреймворков как:

  • crosswalk-project (пробовал пока что только на уровне hello world, но как раз тут и хочу применять WebAssembly, WebCL, WebGL, и надо бы ещё портировать сюда всякие такие штуки вроде TensorFlow Light и т.п.)
  • cordova (написал уже пару тормознутых приложений с использовать этой технологии)
  • electronjs (пока что пробовал только на уровне создания hello world)

Занимаюсь веб разработкой уже более 13 лет.

[Перевод] Как мы при помощи WebAssembly в 20 раз веб-приложение ускорили

В этой статье рассматривается кейс по ускорению браузерного приложения через замену вычислений JavaScript на WebAssembly.

WebAssembly — что это такое?

Если коротко, то это это бинарный формат инструкций для стековой виртуальной машины. Часто Wasm (сокращенное название) называют языком программирования, но это не так. Формат инструкций исполняется в браузере наряду с JavaScript.

Здесь применяется статистическая типизация и так называемая плоская модель памяти. Важно, что WebAssembly можно получить при компиляции исходников на таких языках, как C/C++, Rust, Go. Эти возможности и привели к росту популярности WebAssembly. Код, как сказано выше, хранится в компактном бинарном формате, благодаря чему выполняется почти так же быстро, как если бы приложение было запущено с помощью командной строки.

Напоминаем: для всех читателей «Хабра» — скидка 10 000 рублей при записи на любой курс Skillbox по промокоду «Хабр».

Skillbox рекомендует: Практический курс «Мобильный разработчик PRO».

На данный момент Wasm используется во многих приложениях, от игр вроде Doom 3 до портированных в веб приложений типа Autocad и Figma. Wasm применяется и в такой сфере, как serverless вычисления.

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

Трансформация приложения

В примере будет использоваться браузерный сервис fastq.bio, который предназначен для генетиков. Инструмент позволяет оценить качество секвенирования (расшифровки) ДНК.

Вот пример приложения в работе:

Подробности процесса не стоит приводить, поскольку они довольно сложны для неспециалистов, но если вкратце, то ученые по указанной выше инфографике могут понять, прошел ли процесс секвенирования ДНК гладко и какие возникли проблемы.

Но fastq.bio позволяет ускорить работу, визуализируя данные. У этого сервиса есть альтернативы, десктопные программы. В большинстве других случаев нужно уметь работать с командной строкой, но не у всех генетиков есть нужный опыт.

На входе — данные, представляемые в виде текстового файла. Работает все просто. В файле размещается список последовательностей ДНК и оценка качества для каждого нуклеотида. Этот файл генерируется специализированными инструментами для секвенирования. Формат файла .fastq, поэтому сервис и получил такое название.

Реализация на JavaScript

Первый шаг пользователя при работе с fastq.bio — выбор соответствующего файла. Используя объект File, приложение считывает случайную выборку данных из файла и обрабатывает этот пакет. Задача JavaScript здесь — выполнение несложных строковых операций и подсчет показателей. Один из них — количество нуклеотидов A, C, G и T на разных фрагментах ДНК.

Разделение на фрагменты сделано для повышения качества UX. После просчета нужных показателей они визуализируются при помощи Plotly.js, а сервис начинает работать с новой выборкой данных. Сервис же берет участки данных размером от 0,5 до 1 Мб и работает с ними шаг за шагом, выстраивая графические данные. Если работать со всеми данными сразу, процесс зависнет на какое-то время, поскольку файлы с результатами секвенирования занимают сотни гигабайтов файлового пространства.

Вот как это работает:

Это наиболее нагруженная с точки зрения вычислений часть сервиса. В красном прямоугольнике размещается алгоритм строковых преобразований для получения визуализации. Стоит попробовать заменить ее на Wasm.

Тестируем WebAssembly

Для оценки возможности использования Wasm команда проекта занялась поиском готовых решений для создания QC-метрики (QC — quality control) на основе файлов fastq. Поиск велся среди инструментов, написанных на С, С++ или Rust, чтобы была возможность портировать код на WebAssembly. Кроме того, инструмент не должен быть «сырым», требовался сервис, уже проверенный учеными.

Приложение довольно популярно, оно open-source, исходный язык — С. В результате выбор был сделан в пользу seqtk.

Согласно Makefile, вот то, что нужно: Перед преобразованием в Wasm стоит посмотреть принцип компиляции seqtk для десктопа.

# Compile to binary
$ gcc seqtk.c \ -o seqtk \ -O2 \ -lm \ -lz

В принципе, скомпилировать seqtk можно при помощи Emscripten. Если его нет, обходимся образом Docker.

$ docker pull robertaboukhalil/emsdk:1.38.26
$ docker run -dt —name wasm-seqtk robertaboukhalil/emsdk:1.38.26

При желании собрать его можно и самостоятельно, но на это нужно время.

Внутри контейнера без проблем можно взять emcc в качестве альтернативы gcc:

# Compile to WebAssembly
$ emcc seqtk.c \ -o seqtk.js \ -O2 \ -lm \ -s USE_ZLIB=1 \ -s FORCE_FILESYSTEM=1

Вместо вывода в бинарный файл Emscripten для генерации файлов используется .wasm и .js, который применяется для запуска модуля WebAssemby.

Библиотека распространена и портирована на WebAssembly, а Emscripten включает ее в проект. Для поддержки библиотеки zlib используется флаг USE_ZLIB.

Это POSIX-подобная ФС, работающая в оперативной памяти внутри браузера. Активируется виртуальная файловая система Emscrippten. Когда страница обновляется, память очищается.

Чтобы понять, зачем нужна виртуальная файловая система, стоит сравнить способ запуска seqtk из командной строки со способом запуска скомпилированного модуля WebAssembly.

# On the command line
$ ./seqtk fqchk data.fastq # In the browser console
> Module.callMain([«fqchk», «data.fastq»])

Получение доступа к виртуальной файловой системе нужно, чтобы не переписывать seqtk под строковый, а не файловый ввод. В этом случае фрагмент данных отображается как файл data.fastq в виртуальной ФС с вызовом на нем main() seqtk.

Вот новая архитектура:

Этот способ дает возможность выполнять вычисления в фоновом потоке, не ухудшая отзывчивость браузера. Рисунок демонстрирует, что вместо вычислений в основном потоке браузера используется WebWorkers. Ну а контроллер WebWorker запускает Worker, управляя его взаимодействием с основным потоком.

После завершения выполнения Worker выдает результат в виде Promise. Команда seqtk запускается при помощи Worker на примонтированном файле. И так в несколько итераций. Когда сообщение получено главным потоком, результат используется для обновления графиков.

Что насчет производительности WebAssembly?

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

При использовании решения «из коробки» прирост производительности составил девять раз.

Дело в том, что большое количество результатов QC-анализа не используется seqtk, поэтому их можно удалить. Это отличный результат, но, как оказалось, есть возможность оптимизировать и его. Если это сделать, результат по сравнению с JS улучшается в 13 раз.

Достичь его удалось простым комментированием команд printf().

Дело в том, что на этом этапе fastq.bio получает результаты анализа с вызовом разных функций С. Но и это не все. Любая из них вычисляет свой набор характеристик, так что каждый фрагмент файла читался по два раза.

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

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

В качестве вывода можно сказать, что Wasm действительно дает возможность улучшить производительность приложения, но использовать его нужно с умом.

[Перевод] Как мы при помощи WebAssembly в 20 раз веб-приложение ускорили

В этой статье рассматривается кейс по ускорению браузерного приложения через замену вычислений JavaScript на WebAssembly. Читать дальше →

Подробности на сайте: habr.com

[Из песочницы] Ускоряем сборку веб-приложения с webpack По мере того как ваше приложение развивается и растёт, увеличивается и время его сборки — от нескольких минут при пересборке в development-режиме до десятков минут при «холодной» production-сборке. Это совершенно неприемлемо. Мы, разработчики, не любим переключать контекст в.

Web scraping на R, часть 2. Ускорение процесса с помощью параллельных вычислений и использование пакета Rcrawler В прошлой статье я с помощью скрэпинга-парсинга собрал с сайтов IMDB и Кинопоиск оценки фильмов и сравнил их. Репозиторий на Github. Код неплохо справился со своей задачей, однако скрэпинг часто используют для «соскабливания» не пары-тройки страниц, а пары-тройки тысяч и д.

In-App Updates: ускоряем процесс обновления приложения на Android Среди многообразия инструментов, анонсированных на Android Dev Summit, особое внимание хочется уделить механизму обновления приложения In-App Updates (IAUs), который помогает разработчикам ускорить добавление новых фич, баг-фиксов и улучшений производительности. Поскольку .

[Из песочницы] Full-stack TypeScript Apps Привет, Хабр! Представляю вашему вниманию перевод статьи «Full-Stack TypeScript Apps — Part 1: Developing Backend APIs with Nest.js» автора Ana Ribeiro. Часть 1: Разработка серверного API с помощью Nest.JS TL;DR: это серия статей о том, как создать веб-приложение TypeScript .

Подключение Micrometer для веб-приложения на Java Micrometer используется для сбора метрик приложения JVM и позволяет экспортировать данные в различные системы мониторинга. В этой статье я расскажу, как подключить Micrometer для spring web приложения и экспортировать данные в Prometheus (хороший пост о нем). Так как мое при.

Как ускорить шифрование по ГОСТ 28147-89 на процессоре Байкал-Т1 за счет SIMD-блока В статье на примере описания реализации алгоритма шифрования по ГОСТ 28147–89, построенного на сети Фейстеля, показаны возможности двухъядерного процессора BE-T1000 (aka Байкал-Т1) и проведены сравнительные испытания реализации алгоритма с помощью векторных вычислений с сопр.

Ускорение запуска Julia при помощи PackageCompiler.jl Зайдя на официальный сайт языка программирования Julia, можно увидеть утверждение: «Julia is fast!». Однако, новые пользователи на практике сталкиваются с проблемой медленной загрузки модулей, в особенности графических [1,2]. Диалектически, причиной медленного запуска являет.

[Перевод] Создание вашего первого ARCore-приложения В предыдущей статье я уже объяснил, что такое ARCore и как он помогает разработчикам создавать удивительные приложения дополненной реальности без необходимости понимания математики и OpenGL. Если вы ещё не читали её, я настоятельно рекомендую это сделать, прежде чем перейти.

Meeting Room L̶i̶t̶t̶l̶e̶ Helper v 2 Данная статья подробно описывает этапы разработки мобильного приложения Meeting Room Helper: от зарождения идеи до релиза. Приложение написано на Kotlin и построено по упрощённой MVVM архитектуре, без использования data binding. Обновление UI-части происходит с помощью LiveD.

[Из песочницы] Пишем «Hello, world!» приложение для web на Haskell (Spock) Мне стало скучно писать на Python, захотелось чего-нибудь необычного. Решил попробовать Haskell. Языка я не знаю, однако просто писать консольные учебные программы, типа вычисления факториала, не хотелось. После изучения довольно большого числа постов про Haskell и его приме.

[Перевод] Разработка приложения для потокового вещания с помощью Node.js и React Автор материала, перевод которого мы сегодня публикуем, говорит, что работает над приложением, которое позволяет организовывать потоковое вещание (стриминг) того, что происходит на рабочем столе пользователя. Приложение принимает от стримера поток в формате RTMP и преобра.

Выбираем мобильного разработчика за 5 шагов: взгляд IT-компании Всем привет! Мобильные приложения сегодня приобретают все большее значение для бизнеса, но найти надежного подрядчика – непростая задача. Мы в mobile.SimbirSoft пообщались с нашими заказчиками и выяснили, что при выборе исполнителя их всегда волнует следующий вопрос: на что .

[Из песочницы] Google Camera — хайп или замена зеркалки? Все мы знаем про популярное приложение Google Camera (дальше GCam). О нем говорят везде: 4PDA, XDA, на всех официальных форумах о телефонах. Практически каждый владелец устройства пытается найти на свой девайс GCam, потому что их телефоны уже не имеют поддержку производителя.

Анализ механизмов локализации интерфейса приложений в Splunk В данной статье мы рассмотрим основной механизм локализации интерфейса приложений Splunk (в т.ч. стандартных элементов приложения Search) — gettext internationalization and localization (i18n). Читать дальше →

CI/CD с помощью AWS и Bamboo Наша команда состоит из одного разработчика и одного DevOps инженера. Я отвечаю за разворачивание приложения в кластере Amazon ECS. В качестве CI/CD сервера я использую Bamboo. В этой статье я подробно расскажу, как я осуществляю разворачивание приложения в dev-среде. Чита.

Криптомайнеры проникли в Microsoft Store Оказывается, даже в каталоге Microsoft Store можно опубликовать вредоносную программу, и никто этого не заметит. Это очень удобно для злоумышленников, потому что большинство пользователей представляют себе каталоги вроде Microsoft Store, App Store и Google Play как некую б.


Пишем Android приложение для киноманов — Часть 1 (Прототипирование) Доброго времени суток, Хабр! Не секрет, что недавно компания Google утвердила в качестве приоритетного языка программирования ОС Android — Kotlin. В этой и последующих статьях будет рассказываться о создании приложения на этом языке. Читать дальше →

[Из песочницы] Разработка Chrome Extension вместе с Angular CLI Разработкой расширений к Chrome я занимаюсь давно и за это время я прошел целый путь от Greasemonkey юзер-скриптов до полноценного Angular-приложения в оболочке chrome-extension. Моя задача в том, что я патчу некоторые уже работающие сайты, чтобы изменить их функционал и авт.

[Из песочницы] Разработка приложений на Elixir/Phoenix с помощью Docker Под катом небольшое и простое руководство, в котором показано, как использовать Docker Compose для настройки и запуска приложения Elixir/Phoenix + PostgreSQL. Читать дальше →

Автоматизация тестирования платных сервисов на iOS Для тех, кто интересуется темой автоматизации на iOS, у меня две новости — хорошая и плохая. Хорошая: в iOS-приложении для платных сервисов используется только одна точка интеграции — in-app purchases (встроенные в приложение покупки). Плохая: Apple не предоставляет никаких .

Red Hat упростила создание приложений с помощью контейнеров Компания представила браузерную среду разработки, ориентированную на платформу Kubernetes.

Ускорение рутинных HR-процессов с помощью RPA и BluePrism В IT-компаниях и банках множество разных процессов. И если разработку софта и создание дизайна еще можно успешно оптимизировать с помощью гибких методологий (если их правильно внедрить и использовать), то некоторые вещи Agile так же быстро ускорить не может. Например, HR-про.

Браузерные мобильные игры бросают тебе вызов Вы когда-нибудь слышали о браузерных онлайн играх? Теперь представьте такие же, но для бюджетных телефонов – без графики и анимации. Да, такие игры тоже существуют, и имеют большую популярность в определенных кругах. Читать дальше →

Разрабатываем приложение, которое отсылает данные другим приложениям (экосистемное приложение) Привет, хаброжители! Это моя вторая статья про разработку своего проекта. Тем, кто не читал предыдущая статейку: она про то, как из одного места (гугл таблицы) автоматически экспортировать данные в другое (ноушн). Сегодня я расскажу, как я писал (и проектировал) библиотеку.

Facebook подал в суд на двух украинских разработчиков за незаконный сбор данных Facebook подал иск в суд на двух украинских разработчиков за создание приложений и браузерных расширений, с помощью которых осуществлялся сбор данных и внедрялась реклама в ленты пользователей. Ответчики – Глеб Случевский и Андрей Горбачов – проживают в Киеве и работают в ко.

Алиса приобретает навык В этой статье речь пойдёт о голосовых интерфейсах (Voice User Interface — VUI), а также будет показано, как на Node.js можно создать приложение (навык — в терминологии платформы Яндекс.Диалоги) для голосового помощника Алисы. С помощью стороннего API наше приложение будет .

[Перевод] История четырёхкратного ускорения React-приложения Почти 60% посетителей сайта покидают его в том случае, если его загрузка занимает более 3 секунд. 80% таких посетителей на сайт уже не возвращается. Это говорит о том, что успех веб-проекта не в последнюю очередь зависит от его скорости. Автор материала, перевод которого мы .

[Из песочницы] Как работают веб-приложения Это статья для начинающих разработчиков и тех, кто хочет немного ориентироваться в терминах и технологиях современных веб-приложений. В статье написано о том, чем веб-приложения отличаются от сайтов, какие бывают веб-приложения, из чего они состоят и как работают. Читать да.

Визуализация сортировок обменами В данной статье рассматриваются различные варианты сортировки обменами, а также даётся описание простого графического приложения (processing.js) с примерами сортировок. Перед прочтением рекомендую ознакомиться со статьями: → Сортировка обменами → Пузырьковая сортировка .

Как мы разогнали САПР КОМПАС-3D → Часть 3 Это заключительная часть статьи об ускорении КОМПАС-3D v18 (Часть 1, Часть 2). Она посвящена доработкам в расчетах массо-центровочных характеристик и тому, что сделано для ускорения КОМПАСа на стороне нашего геометрического ядра C3D. И еще немного расскажем о том, какое желе.

Делаем современное веб-приложение с нуля Итак, вы решили сделать новый проект. И проект этот — веб-приложение. Сколько времени уйдёт на создание базового прототипа? Насколько это сложно? Что должен уже со старта уметь современный веб-сайт? В этой статье мы попробуем набросать boilerplate простейшего веб-приложения.

Чтобы услышать, нужно увидеть: кейс Rocket10 и “Звуки слов” Кто покупает литературу в век дигитализации? Давайте не так, а кто ее сейчас продает? Уход от бумажных книг в пользу цифровых — логичное поведение пользователей в эпоху смартфонов и планшетов. Вопрос в том, как не потерять эту аудиторию и перевести на новый формат чтения. О .

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

Приложения для электронных книг на операционной системе Android (часть 3) В этой (третьей) части статьи о приложениях для электронных книг на операционной системе Android будут рассмотрены следующие две группы приложений: 1. Альтернативные словари 2. Заметки, дневники, планировщики Краткое содержание предыдущих двух частей статьи: В 1-ой част.

SmartCard I2C Protocol. Обмен APDU командами через I2C интерфейс Введение Некоторое время назад я принимал участие в разработке устройства, в котором было необходимо реализовать российскую криптографию. Так как в дальнейшем предполагалось это решение сертифицировать, то к реализации криптографии выдвигались определенные требования. И как .

Стохастический градиентный спуск(SGD) для логарифмической функции потерь(LogLoss) в задаче бинарной классификации Предыдущая часть (про линейную регрессию, градиентный спуск и про то, как оно всё работает) — habr.com/ru/post/471458 В этой статье я покажу решение задачи классификации сначала, что называется, «ручками», без сторонних библиотек для SGD, LogLoss’а и вычисления градиентов, .

JMeter — швейцарский нож тестировщика (Часть 2) Сегодня расскажу, как мы с помощью JMeter’а наладили процесс кэширования продуктовых страниц, проверили работу мобильного приложения без самого приложения и создали 2000 юзеров в системе без доступа к базе данных. Кто не в курсе, что здесь происходит, читайте первую часть .

TDD приложений на Spring Boot: тонкая настройка тестов и работа с контекстом Третья статья в цикле и небольшое ответвление от основной серии — в этот раз я покажу как устроена и как работает библиотека интеграционного тестирования Spring, что происходит при запуске теста и как можно тонко настраивать приложение и его окружения для теста. Читать дальш.

[Из песочницы] Phoenix LiveView: когда вам больше не нужен JavaScript* * для создания динамической страницы Не так давно 12.12.2020 был анонсирован выход новой библиотеки для фанатов phoenix framework под названием Phoenix LiveView. Я бы хотел поделиться с вами впечатлениями от ее использования и phoenix в целом, а в следующей статье попробова.

Дайджест интересных материалов для мобильного разработчика #285 (4 — 10 февраля) В новом выпуске мы рассказываем про серверные анимации, «плохой» Google, ускорение изображений и инструменты локализации, феерическое приложение для знакомств для холодильника и культуру роста в компаниях. Подключайтесь! Читать дальше →

[Из песочницы] Покупки в Android приложении — Play Billing Library И как это до сих пор на Хабре нет статьи об этом? Не дело, надо исправлять. Есть 2 способа добавить In-App покупки в Android-приложение — старый и новый. До 2020 года все пользовались библиотекой от anjlab, но с июня 2020 года ситуация изменилась, Google выпустила собстве.

5 браузерных расширений для работы с текстом на английском языке Всем привет! Я продолжаю делиться своими профессиональными наработками в теме работы с англоязычными текстами. Сегодня речь пойдет о том, какие браузерные расширения можно использовать, чтобы облегчить создание качественных материалов и научиться писать на английском лучше.

Реализация словаря в Python Всем привет, 30 апреля в ОТУС стартует курс «Алгоритмы для разработчиков», именно к этому приурочена публикация сегодняшнего материала. Начнём. В этой статье вы узнаете, как в Python реализованы словари. Словари индексируются с помощью ключей, и они могут рассматриваться .

[Из песочницы] ClusterJ — работаем с MySQL NDB Cluster из Java Привет, Хабр! В этой статье я хочу рассмотреть такую библиотеку для Java, как ClusterJ, которая позволяет очень просто работать с движком MySQL NDBCLUSTER из Java кода, которая представляет собой высокоуровневое API, схожее по концепции с JPA и Hibernate. В рамках статьи со.

Регулярная Авалония Иногда мы не понимаем как работает регулярное выражение, которое мы составили, и хотим проверить. Есть множество восхитительных приложений встроенных в различные среды или онлайн. Мне захотелось добавить еще одно к этому списку. В данной статье мы посмотрим, как можно оберну.

Тестирование Flutter-приложений. Начало Про Flutter вспоминают тогда, когда нужно быстро сделать красивое и отзывчивое приложение сразу для нескольких платформ, но как гарантировать качество «быстрого» кода? Вы удивитесь, но во Flutter есть средства для того, чтобы не только обеспечить качество кода, но и гарантир.

[Перевод] Интервью — 10 вопросов про Swift. Часть 3 Профессиональная программа «iOS Разработчик» — 5 месяцев Best Practice по разработке мобильных приложений с помощью Swift 5. Лучших выпускников ждут на собеседованиях 12 компаний-партнёров OTUS, поэтому публикуем перевод заключительной статьи из серии «iOS Interview Question.

[Перевод] Делаем приложение доступным, используя библиотеку тестирования доступности aXe Представляем вам перевод статьи Indrek Lasn, опубликованной на Medium.com. Под катом вы узнаете, как сделать приложение или сайт более доступными при помощи aXe — средства тестирования доступности веб-сайтов и других пользовательских интерфейсов. react-axe показывает резул.

[Перевод] Кеширование в Laravel: основы плюс tips&tricks Техника кеширования позволяет создавать более масштабируемые приложения, запоминания результаты некоторых запросов в быстрое in-memory хранилище. Однако, некорректно реализованное кеширование может сильно ухудшить впечатление пользователя о вашем приложении. Эта статья содер.

Разработка сайта на WebAssembly с помощью NetCore 3 и Blazor Мое мнение, что WebAssembly будущее интернета. Данная технология на текущий момент уже интегрирована в большинство современных браузерах (а точнее в их движках) на ПК и мобильных устройствах. В таких браузерах как Chrome, Edge, Firefox, и WebKit. В данной статье я опишу как .

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

[Из песочницы] Архитектура SPA-приложения биржи в 2020 году Приветствую, хабровчане! Читаю данный ресурс со времени основания, но время на написание статьи появились только сейчас, а значит пора поделиться своим опытом с сообществом. Начинающим разработчикам, рассчитываю, статья поможет улучшить качество проектирования, а опытным выс.

Масштабирование приложения в Kubernetes на основе метрик из Prometheus Распространённая ситуация: у вас есть несколько приложений, у одного из них пиковая нагрузка приходится на дневное время, а в другие часы к нему никто не обращается (либо обращаются, но редко); при этом другим приложениям мощности кластера могут пригодиться и в ночное врем.

9 августа AppMetrica проведет митап по мобильной аналитике 9 августа, в пятницу, AppMetrica cовместно с AGIMA проводит большой митап, посвященный развитию приложений для электронной коммерции, банков и телеком-провайдеров. Участники на примере реальных бизнес-кейсов разберут, как мобильное приложение влияет на доход, и уз.

[Из песочницы] Настройка NextCloud + ONLYOFFICE на одном сервере с помощью Docker Привет, Хабр! представляю вашему вниманию перевод статьи «Setting up NextCloud and ONLYOFFICE on a single server with Docker». Сложно недооценивать пользу онлайновых пакетов офисных приложений наподобие Google Docs и облачных хранилищ в жизни технически ориентированных люде.

Расчет странового коэффициента УЕФА В футболе есть два популярных турнира: Лига Чемпионов и Лига Европы. На основании их результатов рассчитывается так называемый Рейтинг футбольных ассоциаций. На базе этого рейтинга в дальнейшем определяется, какое количество команд от каждой страны будет участвовать в посл.

Как подключить галерею PhotoSwipe в WebView android Я не профессиональный разработчик, хотя и учился на программиста. Сейчас работаю системным администратором и планирую переходить в разработчики. Пишу для себя приложение, которое парсит один из популярных сайтов тематики IT и показывает статьи в нативном приложении android. .

[Перевод] Vivaldi: Как мы подсчитываем количество пользователей? Совсем скоро компания Vivaldi изменит технологию, с помощью которой ведётся подсчёт числа пользователей своего браузера. Идентификация пользователей, которая многим так не нравилась, постепенно уйдёт в прошлое. Но что придёт ей на замену и как теперь компания будет считать.

Несколько соображений по поводу параллельных вычислений в R применительно к «enterprise» задачам Параллельные или распределенные вычисления — вещь сама по себе весьма нетривиальная. И среда разработки должна поддерживать, и DS специалист должен обладать навыками проведения параллельных вычислений, да и задача должна быть приведена к разделяемому на части виду, если тако.

Разработка гибридных PHP/Go приложений с использованием RoadRunner Классическое PHP-приложение — однопоточность, тяжелая загрузка (если вы конечно не пишите на микрофреймворках) и неизбежная смерть процесса после каждого запроса… Такое приложение тяжелое и медленное, но мы можем дать ему вторую жизнь гибридизацией. Чтобы ускорить — демонизи.

Как ускорить работу с API на языке R с помощью параллельных вычислений, на примере API Яндекс.Директ (Часть 2) В прошлой статье я рассказал о том, что такое многопоточность, и привёл примеры её реализации на языке R при работе с API Яндекс.Директ с помощью пакетов doSNOW, doParallel и конструкции foreach. Данная статья является продолжением, но может быть рассмотрена как автономное р.

15 советов, как пробиться в App Store приложению с подписками В этой статье я расскажу, как увеличить шансы пройти проверку в App Store приложению с подписками. Если вы когда-либо испытывали проблему с аппрувом приложений с подписками или вот-вот планируете релиз, тогда это будет вам полезно. Всем привет, меня зовут Денис, я основатель.

Не Spring Boot’ом единым: обзор альтернатив В настоящее время нет недостатка во фреймворках для создания микросервисов на Java и Kotlin. В статье рассматриваются следующие: Название Версия Год первого релиза Разработчик Helidon SE 1.1.1 2020 Oracle Ktor 1.2.1 2020 JetBrains Micronaut 1.1.3 2020 Object Compu.

Технология Smart IDReader ускорила регистрацию пассажиров компании Croatia Airlines Croatia Airlines автоматизировала и ускорила процесс регистрации пассажиров в мобильном приложении с помощью российской технологии компьютерного зрения Smart IDReader, разработанной специалистами Smart Engines. Интегратором технологии .

Настройка сервера для развертывания Rails приложения при помощи Ansible Не так давно мне было необходимо написать несколько ansible playbooks для подготовки сервера к деплою rails приложения. И, на удивление, я не нашел простого пошагового мануала. Копировать чужой плейбук без понимая происходящего я не хотел и в итоге пришлось читать документац.

[Из песочницы] Общее представление об архитектуре Clean Swift Привет, читатель! В этой статье я расскажу об архитектуре iOS приложений — Clean Swift. Мы рассмотрим основные теоретические моменты и разберем пример на практике. Читать дальше →

[Перевод] Создание игры «Крестики-нолики» при помощи TypeScript, React и Mocha Представляем вам перевод статьи Josh Kuttler, опубликованной на blog.bitsrc.io. Узнайте, как создать приложение «Крестики-нолики», используя React и TypeScript. Простая игра в крестики-нолики создана по модульному принципу и загружена на сайт Bit. Вы можете изменять компо.

Apple запустила браузерную версию Apple Music iTunes или отдельное приложение Apple Music больше не требуется.

[Из песочницы] Как выбрать широкополосный модем для беспилотного летательного аппарата (БЛА) или робототехники Задача передачи большого объема данных с борта беспилотного летательного аппарата (БЛА) или наземной робототехники не редкость в современных приложениях. В данной статье рассматриваются критерии выбора широкополосных модемов и сопутствующие проблемы. Статья написана для разр.

Chrome Audit на 500: Часть 1. Лендинг В инструментах разработчика браузера хром есть вкладка «Audit». На ней расположился инструмент который называется Lighthouse, служит он для анализа насколько хорошо сделано веб приложение. Недавно я решил протестировать одно приложение и ужаснулся результатам. Сразу по нес.

[Перевод] Как я создал более 100 приложений с открытым кодом, используя инструменты автоматизации Представляем вам перевод статьи Sm0ke, опубликованной на сайте dev.to. Автор рассказывает о своем опыте генерации веб-приложений и способе автоматизации процесса их создания. Привет, кодеры! Я — разработчик-фрилансер, и я сгенерировал более 100 приложений на различных язык.

Экономия на мобильной кросс-платформенной разработке: кейс Skyeng Привет, я Андрей Кучеренко, тимлид мобильной разработки Skyeng. Мы делаем мобильные приложения под iOS и Android. У них одинаковая функциональность и одинаковый с точностью до стилистики интерфейс. Но из-за разных платформ разработка вроде бы одного приложения получается до.

Как перенести данные с Android на iPhone Есть много способов перенести данные с Android на iPhone, и в этой статье мы расскажем о самых, на наш взгляд, простых. С помощью приложения “Move to iOS”. Сначала скачайте бесплатное приложение “Move to iOS” на свой андроид. Затем откройте эту программу и следуйте инструкци.

Импортозамещение на практике. Часть 2. Начало. Гипервизор В предыдущей статье были рассмотрены варианты, на что можно заменить существующие системы в рамках выполнения приказа об импортозамещении. Далее в статьях речь пойдет о выборе конкретных продуктов для замены развернутых в настоящее время. Начнем с точки отсчета — системы вир.

Лучшее из опыта создания чистых и быстрых Angular приложений На написание этой статьи сподвигли поиски JavaScript front-end разработчиков в свою компанию в Ставрополе. Т.к. длительное время не удавалось найти толкового программиста и тогда мы решили запустить программу стажировки с большим количеством обучающего материала по Angular &.

Интересные материалы для разработчика мобильных приложений #245 (3-10 февраля) В новом выпуске — про серверные анимации, «плохой» Google, ускорение изображений и инструменты локализации, феерическое приложение для знакомств для холодильника и культуру роста в компаниях.

[Перевод] Создание калькулятора чаевых на Kotlin: как это работает? Рассказываем, как создать простое приложение для расчета чаевых на языке Kotlin. Если точнее, то Kotlin 1.3.21, Android 4, Android Studio 3. Статья будет интересной, в первую очередь, для тех, кто начинает свой путь в разработке Android-приложений. Она позволяет понять, ч.

Расчёт каннибализации на основе классического A/B-теста и метод bootstrap’а В данной статье рассмотрен метод расчёта каннибализации для мобильного приложения на основе классического A/B-теста. В данном случае рассматриваются и оцениваются целевые действия в рамках процесса реаттрибуции с рекламного источника (Direct, Criteo, AdWords UAC и прочих) по.

Смотрю и слушаю где хочу. Интегрируем Chromecast в Android-приложение На улице я часто слушаю аудиокниги и подкасты со смартфона. Когда прихожу домой, мне хочется продолжить слушать их на Android TV или Google Home. Но далеко не все приложения поддерживают Chromecast. А было бы удобно. По статистике Google за последние 3 года, количество дева.

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

Hyperledger Fabric для Чайников A Blockchain Platform for the Enterprise Добрый день, дорогие читатели, меня зовут Николай Нефедов, я технический специалист компании IBM, в этой статье я хотел бы познакомить вас с блокчейн платформой – Hyperledger Fabric. Платформа предназначена для построения бизнес прил.

[Из песочницы] JavaScript: Создание простого MEVN-приложения О чем статья Цель этой статьи — показать, как можно создать базовое MEVN-приложение. Акроним MEVN означает — MongoDB + Express.js + Vue.js + Node.js. В качестве примера будет написано одностраничное приложение, которое содержит форму, состоящую из нескольких текстовых полей.

Дискретная математика для WMS: алгоритм сжатия товаров в ячейках (часть 1) В статье мы расскажем, как решали проблему нехватки свободных ячеек на складе и о разработке алгоритма дискретной оптимизации для решения такой задачи. Расскажем о том, как мы «строили» математическую модель задачи оптимизации, и о том с какими трудностями мы неожиданно ст.

[Перевод] Используем Firebase в качестве хранилища изображений для Android-приложения В этой статье вы узнаете, как извлечь изображение из хранилища Firebase для Android-приложения. Читать дальше →

Huawei: Защита плоскости управления В статье рассматриваются аспекты защиты плоскости управления маршрутизаторов Huawei NE Series. Примеры приведены для NE40e, с программным обеспечением: VRP V800R008. На других типах маршрутизаторов (например NE5k) и с другой версией ПО, конфигурация может несколько отличатьс.

Опыт использования flatten-maven-plugin для упрощения версионирования в maven-проектах О нас В 1С мы разрабатываем не только платформу 1С: Предприятие на С++ и JavaScript, но и приложения на Java – в частности новую среду разработки Enterprise Development Tools на базе Eclipse и сервер глубоко интегрированного с платформой мессенджера – Системы Взаимодействия.

[Из песочницы] Neutralinojs — альтернатива Electron, потребляющая меньше памяти Neutralinojs — фреймворк с открытым исходным кодом для создания кроссплатформенных приложений на HTML/CSS/JS. Отличие от Electron в том, что для запуска приложения на Neutralinojs не нужно устанавливать nodejs и сотни зависимостей, тянущихся из package.json. Давайте сравним .

iOS для творчества: рисование Привет! В прошлой статье я делал обзор возможностей iOS для написания музыки, а тема сегодняшней — рисование. Я расскажу вам про Apple Pencil и другие приложения для работы с растровой и векторной графикой, пиксель-артом и другими видами рисования. Читать дальше →

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

[Из песочницы] Делаем простой Circuit Breaker на базе кеша в Spring Эта статья для тех, кто использует в своем приложении эффективный кеш и хочет простым добавлением 1 класса в проект добавить стабильности не только приложению, но и всему окружению. Если вы узнали себя, читайте дальше. Что такое Circuit Breaker Читать дальше →

Kafka и микросервисы: обзор Всем привет. В этой статье я расскажу, почему мы в Авито девять месяцев назад выбрали Kafka, и что она из себя представляет. Поделюсь одним из кейсов использования — брокер сообщений. И напоследок поговорим о том, какие плюсы мы получили от применения подхода Kafka as a Ser.

В каких приложениях ждать неизвестный вредоносный код? Сегодня просматривал статистику Wildfire и стало интересно по каким приложениям ходит неизвестный вредоносный код (zero-day) и как часто. На картинке приведена статистика по приложениям и частоте атак через это приложение. В первом столбце имя приложения. Во втором столбце у.

[Перевод] Знакомство с HealthKit В этой статье про HealthKit вы узнаете, как запрашивать разрешение на доступ к данным HealthKit, а также считывать и записывать данные в центральный репозиторий HealthKit. В статье используется Swift 4, iOS 11, Xcode 9 версии. HealthKit — это API, которое было представлено.


Что в Smart TV тебе моем? Или что можно запихнуть в телевизор? Вместо предисловия Добрый день, коллеги! Меня зовут Алексей и я занимаюсь телевизорами, а именно, разработкой Smart TV приложений («давайте похлопаем Алексею»). Но что такое Smart TV? Какое оно, сферическое Smart TV приложение в вакууме? Не буду томить вас ожиданием: в осн.

«Индуктивный» CPI кейс Zorka.Mobi и inDriver Стратегии продвижения для мобильных приложений разнятся в зависимости от многих факторов: вертикали продукта, географии продвижения, степени конкуренции и т.д. В данном кейсе речь пойдет о том, как с учетом всех этих факторов выбрать правильную стратегию, и почему готовность.

Cloud Firestore + Android это просто Не так давно Google зарелизил Cloud Firestore. Cloud Firestore — это облачная NoSQL база данных, которую Google позиционирует как замену Realtime Database. В этой статье я хочу рассказать как начать ей пользоваться. Читать дальше →

Еще один способ оптимизации docker-образов для Java приложений История по оптимизации образов для java приложений началась с выхода статьи в блоге спринга — Spring Boot in a Container. В ней обсуждались различные аспекты по созданию docker образов для spring boot приложений, в том числе и такой интересный вопрос, как уменьшение размеров.

[Из песочницы] Особенности настройки DPI В данной статье не рассматривается полная настройка DPI и все вместе связанное, а научная ценность текста минимальна. Но в ней описывается простейший способ обхода DPI, который не учли многие компании. Читать дальше →

Мультиязычные приложения в Angular В этой статье рассмотрим как можно быстро перевести ваш Angular проект на мультиязычный режим работы и какие есть для этого утилиты. Читать дальше →

Какой могла бы быть официальная веб-версия Apple Music Сервис Apple Music присутствует на всех популярных платформах — Mac, iOS, Android и Windows. Но по какой-то причине музыкальный сервис так и не обзавелся веб-версией. Радует только то, что компания предоставляет разработчикам официальный доступ к API, что позволяет эн.

Автоматизация замены дисков с помощью Ansible Всем привет. Я работаю ведущим системным администратором в ОК и отвечаю за стабильную работу портала. Хочу рассказать о том, как мы выстроили процесс автоматической замены дисков, а затем, как исключили из этого процесса администратора и заменили его ботом. Эта статья явл.

Apple готовит замену приложениям «Найти iPhone» и «Найти друзей» Сегодня ресурс 9to5mac со ссылкой на анонимные источники рассказал о планах Apple заменить приложения «Найти iPhone» и «Найти друзей» новой утилитой. Пока она носит название GreenTorch.Читать дальше. ProstoMAC.com.| Постоянная ссылка | No comment Вы также можете ознакоми.

Кейс Pushapp: увеличение конверсии с помощью видео и рост органики для игры Rocket X Как за короткий срок привести в приложение 1000 органических пользователей, расширить его семантику до 300 запросов и вывести 10 среднечастотных запросов в топ?

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

Пишем на Rust + CUDA C Всем привет! В данном руководстве хочу рассказать как подружить CUDA C/С++ и Rust. И в качестве примера напишем небольшую программу на Rust для вычисления скалярного произведения векторов, вычисление скалярного произведения будет производиться на GPU с использованием CUDA .

Как реализуется Retentioneering в App in the Air Удержать пользователя в мобильном приложении – это целая наука. Ее основы в нашей статье на VC.ru описал автор курса Growth Hacking: аналитика мобильного приложения Максим Годзи, руководитель подразделения Машинного обучения в App in the Air. Максим рассказывает о разработ.

Apache, ViewState&Deserialisation В данной статье рассмотрим уязвимость на основе подмены сериализованного Java-объекта ViewState и метод её эксплуатации на примере web-приложения виртуальной машины с HackTheBox, использующей технологию Apache MyFaces. Читать дальше →

[Из песочницы] Изменяем содержимое нотификации приложения iOS Привет! В этой статье я хочу поделиться своим опытом использования одного не очевидного (по крайней мере для меня) варианта изменения текста уведомления приложения, отправкой дополнительных данных через UNUserNotificationCenter. Я надеюсь эта статья будет полезна для нович.

Используем статические ссылки на свойства объектов при помощи лямбд Так уж исторически сложилось, что в Java для свойств объектов (properties) не предусмотрено никакой физической сущности. Свойства в Java — это некоторые соглашения в именовании полей и методов доступа к ним (аксессоров). И, хотя наличие физических свойств в языке упростило б.

Apache Ignite Zero Deployment: точно Zero? Мы — отдел развития технологий розничной сети. Однажды руководство поставило задачу ускорить объемные вычисления за счет использования Apache Ignite в связке с MSSQL, показало сайт с прекрасными иллюстрациями и примерами Java-кода. На сайте сразу понравился Zero Deployment.

[Перевод] Пишем API на Python (с Flask и RapidAPI) Если вы читаете эту статью, вероятно, вы уже знакомы с возможностями, которые открываются при использовании API (Application Programming Interface). Добавив в свое приложение один из многих открытых API, вы можете расширить функциональность этого приложения либо же допол.

[Перевод] Вся правда об ОСРВ. Статья #26. Каналы: вспомогательные службы и структуры данных В данной статье мы продолжим рассматривать каналы передачи данных. Вспомогательные службы каналов Nucleus RTOS имеет четыре вызова API, которые предоставляют вспомогательные функции, связанные с каналами: сброс канала, получение информации о канале, получение количества к.

Использование Liquibase для управления структурой БД в Spring Boot приложении. Часть 1 В этой статье я разберу использование утилиты Liquibase в Spring Boot приложениях для версионирования структуры реляционной БД и миграции этой структуры с одной версии на другую. В первой части разберем базовый пример, а во второй поговорим об использовании liquibase-mave-pl.

[Перевод] Ускоряем WebGL/Three.js с помощью OffscreenCanvas и веб-воркеров В этом руководстве я расскажу как с помощью OffscreenCanvas мне удалось вынести весь код работы с WebGL и Three.js в отдельный поток веб-воркера. Это ускорило работу сайта и на слабых устройствах исчезли фризы во время загрузки страницы. Статья основана на личном опыте, к.

[Из песочницы] Подводные камни разработки Google Play Instant Привет, Хабр! Меня зовут Камо Сперцян, я занимаюсь Android-разработкой в PROFI.RU. Недавно я написал приложение с мгновенным запуском для наших клиентов. Если вы ещё не знакомы с технологией, приглашаю вас сначала посетить Android Developers. С презентации Instant Apps (G.

«Облака»: в чем преимущество перед корпоративным сервером Несмотря на большое распространение облачных сервисов, которыми уже редко кого удивишь, многие до сих пор задаются вопросом: «Чем это лучше сервера, находящегося в моем офисе»? Национальный институт стандартов и технологий США описывает облачные вычисления следующим образо.

[Перевод] Разработка веб-серверов на Golang — от простого к сложному Пять лет назад я начал разрабатывать Gophish, это дало возможность изучить Golang. Я понял, что Go — мощный язык, возможности которого дополняются множеством библиотек. Go универсален: в частности, с его помощью можно без проблем разрабатывать серверные приложения. Эта .

[Перевод] Переход на Next.js и ускорение загрузки домашней страницы manifold.co в 7.5 раз Сегодня мы публикуем перевод рассказа о том, как переход с React Boilerplate на Next.js, фреймворк для разработки прогрессивных веб-приложений, основанный на React, позволил ускорить загрузку домашней страницы проекта manifold.co в 7.5 раз. Другие изменения в проект не вноси.

Отладка Angular CLI приложения в VSCode с помощью Browser Preview Привет, Хабр! В Iponweb мы не только творим магию с помощью Kubernetes, но и создаем сложные пользовательские интерфейсы. Основной фреймворк, который мы используем, — Angular (а также AngularJs для legacy частей), поэтому удобство разработки для нас — не пустой звук. Мы реши.

[Из песочницы] Рендеринг 3D графики с помощью OpenGL Введение Рендеринг 3D графики — непростое занятие, но крайне интересное и захватывающее. Эта статья для тех, кто только начинает знакомство с OpenGL или для тех кому интересно, как работают графические конвейеры, и что они из себя представляют. В этой статье не будет точных .

Как ускорить интернет на смартфоне или планшете с помощью приложения от Cloudfare Cloudfare — сервис, который защищает сайты и пользователей от спама и хакерских атак, но у него также есть очень полезное мобильное приложение.

Xamarin.Forms — простой пример Host-based Card Emulation В этой статье будем реализовывать так называемую Host-based Card Emulation (HCE, Эмуляция банковской карты на телефоне). В сети много подробных описаний этой технологии, здесь я сделал акцент именно на получении работающих приложений эмулятора и ридера и решении ряда практич.

[Из песочницы] Анализ «Эффекта пикабу» После запуска приложения всегда встает вопрос, откуда брать пользователей. В этой статье хотел бы поделиться своим опытом, как на старте проекта без денежных вложений я получил неплохой стартовый трафик. Читать дальше →

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

10 бесплатных программ для ускорения ПК на Windows: выбор ZOOM Мы собрали программы, которые помогут повысить производительность компьютера, удалить ненужные файлы, проверить систему на вирусы и очистить реестр. Ускорение операционной системы, программ и даже игр возможно без дополнительных затрат – большинство приложений для этих целей.

Основы работы с Neo4j в браузере В статье рассматривается как начать работать с графовой СУБД Neo4j, используя Neo4j Browser. Это руководство может быть полезным как дополнение к книге Редмонда и Уилсона «Семь баз данных за семь недель», так как рассматриваемый веб-интерфейс был полностью переработан, а так.

Приложения для электронных книг на операционной системе Android. Часть 5. Облачные хранилища и плееры В этой, последней, части статьи о приложениях для электронных книг на операционной системе Android будут рассмотрены две темы: Облачные хранилища и Аудиоплееры. Бонус: список бесплатных библиотек с каталогами OPDS. Краткое содержание предыдущих четырёх частей статьиВ 1-ой ч.

Новое VoIP-приложение 3CX для Android и CFD v16 И снова хорошие новости от 3CX! На прошлой неделе выпущены два важных обновления: новое VoIP-приложение 3CX для Android и новая версия среды разработки голосовых приложений 3CX Call Flow Designer (CFD) для 3CX v16. Новое VoIP-приложение 3CX для Android Новая версия приложен.

Правила выбора JS-фреймворка TL;DR В статье не рассматриваются JS-фреймвёрки из списка TOP-3 При разработке на JS-фреймвёрке не из списка TOP-3 приходится решать на порядок больше технических вопросов, чем это ожидается в начале разработки История основана на реальных событиях Читать дальше →

Huawei представила ИИ-процессор Ascend 910 c производительностью до 512 TFLOPS и фреймворк для разработки ИИ-приложений Mindspore Huawei сегодня сообщила о запуске двух новых взаимосвязанных продуктов, относящихся к области ИИ-технологий и машинного обучения. Первый продукт «железный»— это специализированный серверный процессор Ascend 910 для облачных вычислений в приложениях искусственного и.

Help Desk за 3 часа. Автоматизация несложных бизнес-процессов в PowerApps, Flow и Teams Всем привет! Мой коллега написал статью по опыту использования различных инструментов О365 для автоматизации небольших бизнес-процессов. Мы взяли за основу кейс по автоматизации HelpDesk на технологиях PowerApps, MS Flow и MS Teams. Подробности под катом. Надеюсь, статья бу.

Работаем с USB Custom HID на Android В современных Android — приложениях для взаимодействия с другими устройствами чаще всего используются беспроводные протоколы передачи данных, как например Bluetooth. В годы, когда часть устройств имеют беспроводную зарядку, сложно представить себе связку Android устройства .

Публикация приложения в Microsoft Store: некоторые изменения за год Вот уже год прошел с момента выхода статьи об особенностях публикации в MS Store. За прошедший год произошло много событий – GDPR, выход VS 2020 и прочие изменения. В сегодняшней небольшой статье мне бы хотелось немного рассказать о том, какие изменения произошли в особенно.

Apple запустила браузерную версию Apple Music Компания Apple неожиданно обновила свой музыкальный сервис, позволив пользователям Apple Music слушать музыку в браузере. Теперь использовать iTunes или отдельное приложение Apple Music совершенно не обязательно.Читать дальше. ProstoMAC.com.| Постоянная ссылка | No commen.

[Перевод] Почему в основе каждого нового веб-приложения в PayPal лежит TypeScript? Недавно мы опубликовали материал, в котором Эрик Эллиот критиковал TypeScript. Сегодня мы представляем вашему вниманию перевод статьи Кента Доддса. Тут он рассказывает о том, почему в PayPal перешли с Flow на TypeScript. Читать дальше →

ProtonMail вместо Gmail. Huawei, возможно, уже нашла замену почтовому клиенту поискового гиганта Последние слухи указывают на то, что смартфоны Huawei Mate 30 и Mate 30 Pro не получат сервисы Google. Пока никаких комментариев по этому поводу производитель не делал, но до анонса осталось немного, так что вскоре мы всё узнаем. А пока в Сети появилась информация о воз.

Мастер Йода рекомендует:  Знакомство с Liquid – языком шаблонов Shopify

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

Фракталы в иррациональных числах Статья является продолжением моей первой статьи «Фракталы в простых числах». В предыдущей статье мы научились рисовать самоподобные паттерны с помощью взаимно простых чисел. В этой статье покажу фрактальную природу числа . Без предисловия. Под кат. Читать дальше →

[Из песочницы] Преобразование черно-белых изображений в ASCII-графику при помощи неотрицательного матричного разложения В общем случае преобразование изображения в ASCII-графику представляет собой довольно трудоемкую задачу, однако существуют алгоритмы, позволяющие автоматизировать данный процесс. В данной статье рассматривается подход, предложенный исследователями Paul D. O’Grady и Scott T.

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

Сборка и деплой однотипных микросервисов с werf и GitLab CI Два года назад мы публиковали статью «Сборка проектов с GitLab CI: один .gitlab-ci.yml для сотни приложений», а теперь расскажем о решении схожей задачи сегодня. Новый материал — о том, как можно построить CI/CD-процессы для большого количества однотипных приложений с появ.

[Из песочницы] Видеозвонок в браузере на PeerJS. Быстрый старт Приветствую всех читателей Хабра. В этом году довелось писать модуль видеосвязи для одного учебного портала для созвона по видеосвязи прямо на сайте учителя с учеником. Раннее такую задачу решать не приходилось. После недолгих поисков обнаружил, что есть 2 пути: Flash и WebR.

WISE-PaaS — облачная платформа для промышленного интернета вещей WISE-PaaS — (Platform as a Service) облачная платформа Advantech для промышленного интернета вещей, объединяющая в себе различные инструменты для сбора, обработки, и визуализации данных, автоматизации, управления устройствами и системами искусственного интеллекта и машинно.

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

[Перевод] Ускоряем работу нейросетей с помощью хеширования Индустрия сконцентрировалась на ускорении перемножений матриц, однако улучшение алгоритма поиска может привести к более серьёзному повышению быстродействия В последние годы компьютерная индустрия была занята, пытаясь ускорить вычисления, требуемые для искусственных нейросе.

Optane Memory и накопители разных типов: пытаемся ускорить один SSD при помощи другого Ускорять твердотельные накопители внешним кэшированием — значит, ремонтировать то, что и не ломалось. В части сценариев у них с производительностью все и без того неплохо, а где не слишком хорошо — там и кэш не поможет (собственно, «не хорошо» зачастую как раз потому, что не.

Блокчейн: что нам стоит PoC построить? Глаза боятся, а руки чешутся! В прошлых статьях мы разобрались с технологиями, на которых строятся блокчейны (Что нам стоит блокчейн построить?) и кейсами, которые можно с их помощью реализовать (Что нам стоит кейс построить?). Настало время поработать руками! Для реализаци.

Как реализовать контекстные меню (Context Menu) в iOS 13 Всем привет, меня зовут Денис, мы разрабатываем сервис по аналитике подписок iOS-приложений – Apphud. На WWDC 2020 Apple представила новый способ взаимодействия с интерфейсом вашего приложения: контекстные меню. Они выглядят так: В этой статье мы рассмотрим некоторые тонкос.

Делаем облачное видеонаблюдение своими руками: новые возможности Web SDK Ivideon У нас есть несколько интеграционных компонентов, позволяющих любому партнеру создавать собственные продукты: Open API для разработки любой альтернативы личного кабинета пользователя Ivideon, Mobile SDK, с помощью которого можно разработать полноценное решение, эквивалентно.

[Из песочницы] Процедура нотаризации Electron приложения для macOS 10.14.5 С выходом macOS 10.14.5, Apple добавила обязательную процедуру нотаризации (Notarization process) приложений перед их распространением. Что это и какие сложности возникли с этим обновлением при разработке на Electron.js я и хотел бы рассказать. Читать дальше →

[Перевод] Ускорение instagram.com. Часть 3 Сегодня публикуем перевод третьей части серии материалов об ускорении instagram.com. В первой части мы говорили о предварительной загрузке данных, во второй — об отправке данных клиенту по инициативе сервера. Здесь речь пойдёт о кэшировании. Читать дальше →

Mozilla обновила браузер Firefox специально для iPad Mozilla обновила браузерное приложение Firefox, которое теперь оптимизировано для iPad. Чтобы использовать больший экран iPad, приложение Firefox теперь поддерживает разделенный экран, которое может запускать два приложения рядом. Несколько вкладок теперь отображаются в виде.

No-code на практике: кейс в Project HOME Благодаря применению методологии разработки приложений без программирования (no-code), некоммерческая организация Project H.O.M.E., которая предоставляет жилье и другую помощь бездомным, на треть сократила затраты времени на управление .

[Перевод] Подготовка приложения к Android Q. Часть 2 Перевод статьи подготовлен специально для студентов курса «Android-разработчик. Базовый курс». Также напоминаем о том, что мы продолжаем набор на расширенный курс «Специализация Android-разработчик» О конфиденциальности и безопасности можно прочитать в первой части статьи.

Retentioneering: как мы open-source инструменты для продуктовой аналитики на Python и Pandas написали Привет, Хабр. Эта статья посвящена итогам четырехлетней разработки набора методов и инструментов обработки траекторий движения пользователей в приложении или на сайте. Автор разработки — Максим Годзи, который стоит во главе команды создателей продукта, он же — автор статьи. .

[Перевод] Зачем приложению пульта Д/У знать моё местоположение? Вот интересный шаблон недружественного поведения приложения, которого можно было бы легко избежать, если бы программисты и бизнесмены рассуждали как обычные люди. У меня есть звуковая система Pioneer/Onkyo. Это неплохая техника, которая поставляется с (не слишком дерьмовым).

[Перевод] Современное окружение для React Native приложений В этой статье мы рассмотрим настройку React Native окружения с использованием expo-cli, Typescript, и Jest. Typescript поможет нам избежать ошибок при разработке и написать более эффективное мобильное приложение. Современные разработки позволяют интегрировать Typescript в .

[Из песочницы] От идеи мобильного приложения до MVP, в который вложатся инвесторы Введение Как создать MVP приложения, в который вложатся инвесторы Шаг 1. Составить требования Шаг 2. Выбрать компанию-разработчика Шаг 3. Создать ТЗ и собрать прототип для фокус-групп Шаг 4. Разработать и протестировать приложение Шаг 5. Опубликовать приложение Как найти.

Запускаем приложение в Openshift и сравниваем существующий инструментарий Я хочу рассказать история, как запускали приложение в Openshift. Так же по ходу пьесы рассмотрим утилиты для управления приложением внутри Openshift. Это расшифровка выступления на kubernetes SPB meetup #3.. Читать дальше →

Навигация для Android с использованием Navigation Architecture Component: пошаговое руководство Попробуем, пользуясь официальным руководством и примерами кода, построить работающую систему навигации для будущего многоэкранного приложения в соответствии со стандартами Navigation Architecture Component. Статья включает следующие разделы: Часть 1. Подготовительные работ.

Сравнительное тестирование PostgreSQL на FreeBSD, CentOS, Ubuntu Debian и openSUSE Привет, Хабр! Представляю вашему вниманию перевод оригинальной статьи «PostgreSQL benchmark on FreeBSD, CentOS, Ubuntu Debian and openSUSE» автора Martin Kováčik. В ней рассматриваются тесты СУБД PostgreSQL 10.1 в приближенных к реальным условиям средах на различных unix-сис.

Мобильный eCommerce: привлечение установок Кейс по привлечению новых пользователей для мобильного eСommerce приложения Joom с помощью myTarget.

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

Обзор облачных сервисов для разработки бэкенда мобильных приложений Разработка бэкенда — сложный и затратный процесс. При разработке мобильных приложений ему зачастую уделяется неоправданно больше внимания. Неоправданно, потому что каждый раз приходится реализовывать типичные для мобильных приложений сценарии: отправить push-уведомление, узн.

[Перевод] 12 приемов работы с JavaScript, которых нет в большинстве туториалов Когда я начал изучать JavaScript, то первым делом составил список приемов, которые помогали мне экономить время. Я подсмотрел их у других программистов, на разных сайтах и в мануалах. В этой статье я покажу 12 отличных способов улучшить и ускорить свой JavaScript-код. В.

[Из песочницы] Как мы искали замену MS Word, а вместо этого внедрили новый процесс управления документами MS Word регулярно подкидывает нам «сюрпризы»: «съехавшие» скриншоты, «плывущие» таблицы, пустые страницы при печати. Эта статья о том, как мы искали замену MS Word, (спойлер — не нашли), а нашли возможность глобально улучшить наш процесс работы с документацией. Читать даль.

Wi-Fi и много других аббревиатур. Как в Android приложении получить данные об узлах Wi-Fi и не опухнуть Однажды мне понадобилось сканировать из Android приложения сети Wi-Fi и получать подробную выкладку данных о точках доступа. Читать дальше →

[Из песочницы] Визуализация времени возрождения Рошана В данной статье рассматривается перехват функций графического API на примере DirectX 9 под x64 применительно к игре Dota 2. Будет подробно рассказано, как внедриться в процесс игры, как изменить поток выполнения, приведено краткое описание внедряемой логики. В конце поговор.

Как создать UI kit, который продается. Этапы разработки коммерческой дизайн-системы Сегодня у любого дизайнера есть возможность заработать на собственном дизайн-продукте. Иконки, иллюстрации, шаблоны сайтов и приложений можно превратить в цифровой продукт и продавать по всему миру. Кому-то ваша поделка поможет ускорить работу и человек за нее заплатит. Др.

Про установку и использование LineageOS 16, F-Droid Предлагаю вашему вниманию инструкцию как оптимально(по моему мнению) перейти на свободное программное обеспечение при использовании смартфона на примере операционной системы LineageOS(далее сокращённо LOS) и приложений из F-Droid. Я думаю, что это статья будет вам интересна.


Беспощадная автоматизация. Director’s Cut Я хочу рассказать о своем опыте ускорения автоматизации в команде программистов, и о том, какие приемы мы применили на практике, и что из этого получилось. Начальные условия Наш эксперимент по ускорению работы программистов мы проводили в следующих условиях: это было террит.

Пентест приложений с GraphQL В последнее время GraphQL набирает всё большую популярность, а вместе с ней растёт и интерес со стороны специалистов информационной безопасности. Технологию используют такие компании, как: Facebook, Twitter, PayPal, Github и другие, а это значит, что пора разобраться, как т.

[Перевод] Развертывание приложений на нескольких кластерах Kubernetes с Helm Как Dailymotion использует Kubernetes: развертывание приложений Мы в Dailymotion начали использовать Kubernetes в продакшене 3 года назад. Но развертывать приложения на нескольких кластерах то еще удовольствие, поэтому в последние несколько лет мы старались улучшить наши ин.

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

[Перевод] Сервис-воркеры в клиенте Slack: об ускорении загрузки и оффлайн-режиме Материал, перевод которого мы сегодня публикуем, посвящён рассказу об оптимизации новой версии настольного клиента Slack, одной из центральных особенностей которой стало ускорение загрузки. Читать дальше →

[Из песочницы] Создаем элементы интерфейса программно с помощью PureLayout Привет, Хабр! Представляю вашему вниманию перевод статьи Creating UIViews Constraints Programmatically Using PureLayout автора Aly Yaka. Сегодня я проведу вас через создание простого пользовательского интерфейса мобильного приложения кодом, без использования раскадровок и.

[Из песочницы] Блокчейн и электроэнергетика Привет, в данной статье я попытаюсь популярно описать, почему применение блокчейна в электроэнергетике назрело, и почему в некоторых странах этот кейс активно продвигается. Все данные, на которых я основывал свои суждения, я брал из открытых источников. Я допускаю их неточн.

5G и AMP от Google. Почему AMP — это обман? Думается многие слышали о приходе нового поколения мобильных сетей 5G, которые должны значительно ускорить передачу данных в мобильных сетях и по сути перевернуть наши представления об Интернете и умных технологиях. Все что можно реализовать благодаря внедрению 5G сетей чита.

Разработчик, помни — трафик твоего приложения смотрят На данный момент существует так много типов уязвимостей, что разработчики совсем забывают об элементарных из них. На днях мне удалось обойти авторизацию в новом приложении WOG (ТОВ «ВОГ РІТЕЙЛ» — вторая по величине сеть АЗС в Украине). В 2020 году, точно такую же уязвимость.

[Перевод] Способы тестирования программного обеспечения Всем привет! Уже на следующей неделе мы запускаем новый поток по курсу «Автоматизация веб-тестирования». Этому и будет посвящен сегодняшний материал. В этой статье рассматриваются различные способы тестирования программного обеспечения, такие как модульное тестирование (uni.

[Из песочницы] Уравнение Навье-Стокса и симуляция жидкостей на CUDA Привет, Хабр. В этой статье мы разберемся с уравнением Навье-Стокса для несжимаемой жидкости, численно его решим и сделаем красивую симуляцию, работающую за счет параллельного вычисления на CUDA. Основная цель — показать, как можно применить математику, лежащую в основе урав.

VShard — горизонтальное масштабирование в Tarantool Меня зовут Владислав, я участвую в разработке Tarantool — СУБД и сервера приложений в одном флаконе. И сегодня расскажу вам, как мы реализовали горизонтальное масштабирование в Tarantool при помощи модуля VShard. Читать дальше →

От High Ceph Latency к Kernel Patch с помощью eBPF/BCC В Linux есть большое количество инструментов для отладки ядра и приложений. Большинство из них негативно сказываются на производительности приложений и не могут быть использованы в продакшене. Читать дальше →

Учимся писать Waves смарт-контракты на RIDE и RIDE4DAPPS. Часть 1 (Многопользовательский кошелек) Всем привет! Совсем недавно Waves Labs анонсировал конкурс для разработчиков приуроченный к релизу в тестовую сеть расширения языка смарт-контрактов RIDE для децентрализованных приложений Ride4Dapps! Мы выбрали кейс DAO, так как Ventuary планирует заниматься разработкой dAp.

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

Как получить быстрый доступ к веб-приложениям iCloud из Chrome За что многие пользователи так любят Google Chrome, что готовы ради него отказываться от не в пример более экономичного и быстрого Safari? Конечно, за расширения, которым Google даже посвятила отдельный магазин. Благодаря расширениям можно существенно расширить функциональн.

2. Анализ логов Check Point: SmartEvent Здравствуйте, коллеги. В прошлый раз, в статье «1. Анализ логов Check Point: официальное приложение Check Point для Splunk» мы обсуждали разбор логов шлюза безопасности на основе официального приложения в системе логирования Splunk. В заключении пришли к выводу что хоть пр.

[Перевод] Лучшая приоритизация HTTP/2 для ускорения веба HTTP/2 обещал заметно ускорить веб, и Cloudflare давным-давно развернула доступ по HTTP/2 для всех клиентов. Но одна особенность HTTP/2, приоритизация, не соответствовала ожиданиям. Не потому, что она принципиально сломана, а из-за реализации в браузерах. Сегодня Cloudflar.

Дайджест интересных материалов для мобильного разработчика #302 (10 — 16 июня) В новом дайджесте продолжаются рассказы про WWDC и SwiftUI, а заодно говорим про темные режимы, гипер казуальные игры, приложения для людей, рынок фитнес-приложений и многое другое. Читать дальше →

Один из методов получения истории блокировок в PostgreSQL Продолжение статьи «Попытка создать аналог ASH для PostgreSQL «. В статье будет рассмотрено и показано на конкретных запросах и примерах — какую же полезную информацию можно получить с помощью истории представления pg_locks. Предупреждение. В связи с новизной темы и незавер.

[Из песочницы] Производительность торговой платформы на простом примере В этой статье я хочу в научно-популярной форме рассказать об оптимизации времени отклика в торговых платформах бирж и банков (HFT). Для справки речь идет о временах от сотен наносекунд до сотен микросекунд. Для большинства других приложений многие приведенные ниже методы оп.

gui приложение для задачи о ходе коня Это туториал по созданию интерактивного приложения для решения задачи о ходе коня на языках processing и p5.js Посмотреть саму программу можно здесь. Для управления «конём» используется метод mouseDragged(); пример программы, использующей этот метод здесь. Отмена хода осуще.

Из жизни с Kubernetes: Как HTTP-сервер испанцев не жаловал Представитель нашего клиента, стек приложений которого обитает в облаке от Microsoft (Azure), обратился с проблемой: с недавнего времени часть запросов некоторых клиентов из Европы стала завершаться ошибкой 400 (Bad Request). Все приложения написаны на .NET, развёрнуты в K.

[Перевод] Асинхронный PHP. Зачем? Асинхронное программирование сегодня востребовано, особенно в веб-разработке, где отзывчивость приложения особенно важна. Никому не хочется ждать, пока приложение «отвиснет», пусть даже в это время оно выполняет запрос к базе данных, отправляет электронное письмо или работ.

Разработчики конструктора сайтов uCoz создали веб-игру 14 марта создатели uCoz и uKit открыли онлайн-симулятор управления веб-разработкой. Игра моделирует процесс создания, запуска и развития веб-проектов. Игра Web Tycoon открылась для массового пользователя после окончания бета-тестирования: теперь она доступна как в браузерной.

Автодруг — помощник автомобилиста «Автодруг» – лучший помощник автомобилиста на улицах большого города. С помощью этого приложения можно за считанные секунды отыскать свободное место на автомобильной стоянке, а также парковке. Суть в том, что через приложение можно найти парковочное место не только на глоб.

[Из песочницы] Сборка примера Augmented Faces ARCore в Unity Надеюсь, данная статья будет полезна тем, кто хочет пощупать возможности дополненной реальности ARCore в Unity, но при этом не смог найти понятной инструкции. Мы соберем пример приложения дополненной реальности Augmented Faces ARCore для Unity, оно будет отслеживать через.

Строим интерфейс по вводу документов через подбор В различных бизнес-приложениях часто возникает задача по вводу документов. Обычно документ состоит из заголовка и некоторых строк, каждая из которых ссылается на некоторый объект (например, товар). Чаще всего, для ввода записей в документ используется обычная таблица, в кот.

Как сделать из сайта приложение и выложить его в Google Play за несколько часов. Часть 2/2: Trusted Web Activity В первой части мы превратили наш сайт в Progressive Web App. Там же было сказано, что совсем недавно, 6 февраля 2020 года, Google предоставили простую возможность выкладывать PWA в Google Play при помощи Trusted Web Activity. Всё, что нужно сделать, это написать небольшую .

Оптимизация производительности .NET (C#) приложений Статей с подобным заголовком достаточно много, поэтому постараюсь избежать банальных тем. Надеюсь, что даже очень опытные разработчики найдут здесь что-то новое для себя. В данной статье будут рассмотрены только простые механизмы и подходы к оптимизации, которые позволят п.

[Перевод] Разработка приложения на SwiftUI. Часть 1: поток данных и Redux После участия в сессии State of the Union на WWDC 2020 я решил детально изучить SwiftUI. Я потратил много времени на работу с ним и теперь приступил к разработке реального приложения, которое может оказаться полезным широкому кругу пользователей. Его я назвал MovieSwift.

[Из песочницы] Согласие на обработку данных по GDPR: подробный разбор GDPR (или «Регламент») содержит несколько оснований для обработки персональных данных. Эти основания можно условно разделить на две большие группы. Это обработка на основании личного согласия носителя (владельца) персональных данных, и обработка на иных основаниях. В данно.

Управление персонажем с помощью SharedEvents Ссылка на проект В данной статье я хочу показать, как можно использовать SharedEvents для управления персонажем от третьего лица, который предлагает стандартный набор ассетов. О SharedEvents я писал в предыдущих статьях (этой и в этой). Добро пожаловать под кат! Читать да.

Компания Kari в 3 раза ускорила оформление рассрочки в магазинах с помощью технологии распознавания Smart IDReader Компания Kari внедрила в мобильное приложение технологию распознавания паспортов Smart IDReader, разработанную компанией Smart Engines. Это …

Новые голосовые приложения на C# в 3CX v16 3CX v16 уже на подходе, и у нас есть отличные новости о нашем приложении для разработчиков Call Flow Designer. В новом релизе CFD использует новый скриптовый «движок», интегрированный в ядро сервера 3CX. Благодаря выполнению скриптов в ядре АТС, производительность голосовых .

[Из песочницы] Бот VS Приложения: плюсы и минусы. Кейс бота-бухгалтера Работать со сложнейшими налоговыми приложениями для бухгалтеров нашей команде – не в новинку. Но рынок диктует свои правила, и вот однажды у наших партнёров родилась идея создания чат-бота, который бы полностью заменил для предпринимателей сервисы отчетности, и позволил ФОПа.

Модульная разработка или путь туда, а не обратно Как мы пришли к новому подходу работы с модулями в iOS приложении RaiffeisenBank. Проблема В приложениях Райффайзенбанка каждый экран состоит из нескольких, максимально независимых друг от друга модулей. «Модулем» мы называем визуальный компонент, имеющий своё представлени.

«Яндекс» открыл каталог «Яндекс.Игры» для всех разработчиков браузерных игр и предложил им заработать на рекламе Пользователи видят эти игры на главной странице поисковика, в мобильном приложении «Яндекса» и в «Яндекс.Браузере».

«Яндекс» открыл каталог «Яндекс.Игры» для всех разработчиков браузерных игр и предложил заработать на рекламе Пользователи видят эти игры на главной странице поисковика, в мобильном приложении «Яндекса» и в «Яндекс.Браузере».

Распознавание номеров. Как мы получили 97% точности для Украинских номеров. Часть 2 Распознавание номеров. Практическое пособие. Часть 1 Продолжаем рассказ о том как распознавать номерные знаки для тех кто умеет писать приложение «hello world» на python-е! В этой части научимся тренировать модели, которые ищут регион заданного объекта, а также узнаем как.

[Перевод] Реализация анимации в React Native Перевод статьи подготовлен специально для студентов курса «ReactJS/React Native-разработчик». Трудно себе представить мобильное приложение, в котором нет анимации. В вебе анимации обычно простые, если они есть вообще (максимум – одна страница сменяет другую). Анимации же.

Внедряем Sign in with Apple — систему авторизации от Apple Привет, Хабр! Этим летом на конференции WWDC 2020 Apple представила собственную систему авторизации Sign in with Apple и сделала ее обязательной для всех приложений в App Store, которые используют вход через соцсети. Исключение составляют образовательные, корпоративные, пр.

[Перевод] Фаззинг в стиле 2000 года на современных приложениях Windows 10 Рис. 1. Ушиблен, но не сломлен. Калькулятор Windows, чей код недавно опубликован на Github, оказался одним из двух протестированных приложений, которые не зависли и не упали в противостоянии с фаззером оконных сообщений разработки 2000 года. Размер окна специально увеличен.

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

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

Основы архитектуры приложений на Flutter: Vanilla, Scoped Model, BLoC (оригинал статьи на английском языке опубликован на Medium) Flutter предоставляет современный реактивный фреймворк, большой набор виджетов и тулов. Но, к сожалению, в документации нет ничего похожего на руководство по рекомендуемой архитектуре приложения для Android. Не сущ.

Два новых приложения для пользователей с нарушениями слуха Google работает над улучшением повседневной жизни пользователей Android с нарушениями слуха с помощью двух новых приложений — Live Transcription и Sound Amplifier. Live Transcribe может помочь людям с тяжелой или полной потерей слуха общаться с теми, кто не говорит на.

[Из песочницы] Хороший, плохой, злой — тестирование в проекте новичков Предисловие: в университете было получено задание — собрать scrum команду, выбрать проект и работать над ним в течении семестра. Наша команда выбрала разработку веб-приложения (react + flask). В этой статье я постараюсь рассказать, какими тесты должны были быть, и проанализи.

Как я опубликовал PWA на Svelte в Google Play Мне нравится метал музыка разных направлений. Для отслеживания новинок я сделал парсер, который ищет свежие альбомы и складывает их в базу. За время существования приложения парсер я почти не трогал, хотя он и далек от идеала, а вот фронтенд был переделан несколько раз. Под.

Как быстро написать веб-сайт или веб-приложение и не увязнуть в сборщиках Это маленькое руководство описывает создание реактивного веб-приложения используя отрисовку на стороне сервера (Server-Side Rendering, SSR). Клиентская часть являет собой полноценное Vue-приложение, в моём случае используя шаблон MVVM. Серверное приложение работает на микроф.

[Из песочницы] Vuex — чрезмерное использование геттеров в приложении. Разбор ошибки В этой статье пойдет речь об распространенной ошибке, которую делают большинство начинающих при разработке приложения на Vue + Vuex. Мы поговорим о геттерах (getters) и как их правильно использовать. Также мы рассмотрим вспомогательные функции mapState и mapGetters. Примеча.

Весь мир в кармане или как сделать мобильную карту за пару дней В прошлой статье я рассказывал о том, как можно быстро сделать Web-звонилку. А что если поставить более амбициозную задачу — собрать своё собственное приложение с картой, без рекламы и с блэк-джеком? А если всего за пару дней? Давайте сделаем это! Прошу под кат. Читать дал.

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

[Из песочницы] Как в yEd Graph Editor построить красивую схему базы данных Хочу показать вам как с помощью нынче популярного приложения yEd, которое предназначено для построения различных диаграмм и схем, можно сделать полноценную(со всеми обозначениями) схему базы данных. Читать дальше →

Напоминания на iPhone и iPad: полезные советы по использованию приложения Системное iOS-приложение Напоминания – одна из лучших (если не самая лучшая) программ, написанных программистами Apple. В статье мы расскажем, как выжать из Напоминаний максимум полезных возможностей. ПО ТЕМЕ: Все функции кнопок оригинальных наушников из комплекта iPhone. Пр.

[Перевод] Руководство по React Native для начинающих Android-разработчиков (с примером приложения) Представляем вам перевод статьи Nikhil Sachdeva, опубликованной на hackernoon.com. Автор делится опытом разработки мобильных приложений с помощью React Native и предлагает создать свое приложение, используя этот фреймворк. Я был Android-разработчиком и довольно длительное.

I’m going deeper underground, или о чем стоит знать, оптимизируя работу сетевого приложения Приветствую, друзья! В предыдущих двух статьях (раз, два) мы погружались в сложность выбора между технологиями и искали оптимальные настройки для нашего решения в Ostrovok.ru. Какую тему поднимем сегодня? Каждый сервис должен работать на каком-то сервере, общаясь с желез.

Angulareact У меня есть проблема. Приложение написано на Angular, а библиотека компонентов на React. Делать клон библиотеки слишком дорого. Значит, нужно использовать React-компоненты в Angular-приложении с минимальными затратами. Разбираемся как это делать. Читать дальше →

Особенности проверки гипотез для мобильных приложений Сколько времени занимает проверка гипотезы для мобильного приложения? Давайте посчитаем: Разработка приложения, работающего в разных режимах для разных групп пользователей. Тестирование результата. Выкладывание приложения в магазины приложений и ожидание одобрения. Ожидани.

Началось публичное бета-тестирование мобильного приложения MetaMask Разработчики браузерного Ethereum-кошелька MetaMask открыли для всех желающих возможность протестировать бета-версию мобильного приложения, доступного для Android и iOS. MetaMask’s mobile app is now available for public beta! With MetaMask mobile, users can now manage their .

[Из песочницы] Удаленная отладка микросервиса через SSH под VPN в 4 хода Бывает ситуация, когда нужно отдебажить сложный кейс на удаленной машине, но доступ к серверу есть только под VPN с ограничениями по открытым портам. В статье хочу поделиться с коллегами небольшим «ресерчем» на тему удаленной отладки через SSH под VPN, дабы сэкономить драгоц.

От Норильска до Эр-Рияда: реальный кейс применения карт памяти Kingston Industrial Temperature microSD UHS-I Когда три года назад мы сделали обзор карт памяти для промышленного применения, в комментариях были пожелания не рассказывать про дроны и фотоаппараты, — мол, это не типичная область применения для таких карт памяти. ОК, сказали мы себе и записали в контент-план — сделать пу.

Как распилить монолит на сервисы и сохранить производительность In-memory кэшей без потери консистентности Всем привет. Меня зовут Александр, я Java-разработчик в группе компаний Tinkoff. В данной статье хочу поделиться опытом решения проблем, связанных с синхронизацией состояния кэшей в распределенных системах. Мы столкнулись с ними, разбивая наше монолитное приложение на микр.

[Перевод] Тестирование производительности Flutter приложений Фреймворк Flutter по умолчанию работает хорошо и быстро, но означает ли это, что вам вообще не нужно думать о производительности? Нет. Абсолютно реально писать приложения Flutter, которые будут медленными. С другой стороны, также можно использовать фреймворк максимально и де.

Управление параметрами в бизнес-приложениях по аналогии с системой контроля версий В различных приложениях регулярно возникает задача по поддержке логики изменения во времени некоторого атрибута объекта относительно некоторого субъекта (или субъектов). Например, это может быть изменение розничной цены товара в магазинах или показателей KPI для сотруднико.

[Из песочницы] Использование примесей во Flutter приложениях Я работаю в компании, занимающейся разработкой игр, но как домашнее хобби мне последнее время стала интересна разработка мобильных приложений. Поэтому, когда друг пригласил меня съездить на митап, посвященный разработке мобильных приложений с помощью фреймворка Flutter, я .

Дайджест интересных материалов для мобильного разработчика #318 (14— 20 октября) Мы возвращаемся из отпуска с новым дайджестом в котором есть длинная история путеводителя, закрытие Daydream, самые красивые приложения Material Design Awards 2020, темные темы и рост продуктов, рынок приложений в 3 квартале и многоликий Retention. Читать дальше →

[Из песочницы] Быстрая интеграция с 1С: Предприятие В данной статье я расскажу о наиболее простом, на мой взгляд, способе интеграции сторонних приложений с конфигурациями 1С. Статья будет интересна в первую очередь разработчикам, пишущим на .Net Core, PHP и Python. Способов интеграции с 1С известно много, этому даже посвящен.

[Перевод] 7 полезных советов для тех, кто использует Room Room — это уровень абстракции поверх SQLite, который упрощает организацию хранения данных. Если вы ещё мало знакомы с Room, то посмотрите эту вводную статью: 7 шагов к использованию Room. Пошаговое руководство по миграции приложения на RoomА в этой статье я хотел бы поделит.

«Шакал»: сжимаем фронтенд Привет! Я — Ваня, лид платформенной команды в Тинькофф Бизнес. Мое любимое занятие — открывать вкладку DevTools и проверять, сколько весят артефакты сайта. В этой статье расскажу, как мы сократили вес приложения на 30% силами платформенной фронтенд-команды за один день без .

Применение смарт-аккаунтов и смарт-ассетов Waves в финансовых инструментах В предыдущей статье мы рассмотрели несколько кейсов применения смарт-аккаунтов в бизнесе – включая аукционы и программы лояльности. Сегодня мы поговорим о том, как смарт-аккаунты и смарт-ассеты могут повысить прозрачность и надежность таких финансовых инструментов, как оп.

Как собрать «Олимпийский» благодаря email-рассылкам. Кейс Black Star Меня зовут Александра Солодкая, я email-маректолог Black Star. В 2020 году с помощью рассылок мы собрали «Олимпийский» — 50% билетов на концерт L’One купили через email-канал. Хочу рассказать, как письма помогают нам продавать билеты на мероприятия. Читать дальше →

Apple представила Card — виртуальную замену вашим банковским картам Вместе с новостным сервисом по подписке компания Apple представила Card — виртуальную банковскую карту внутри приложения Apple Pay. Карту «заказывается» прямо iPhone, а в приложении Apple Pay можно посмотреть статистику трат и пополнений.

Выведение Action type с помощью Typescript Всем привет! Меня зовут Дмитрий Новиков, я javascript-разработчик в Альфа-Банке, и сегодня я расскажу вам про наш опыт выведения Action type при помощи Typescript, с каким проблемами мы столкнулись и как их решили. Это расшифровка моего доклада на Alfa JavaScript MeetUp. К.

Идея о поиске людей в лесу Эта статья описание небольшой идеи возникшей после прочтения недавней статьи «Обыскать 314 км² за 10 часов — финальное сражение инженеров-поисковиков против леса» Сразу предупрежу, что у меня маловато опыта в радиотехнике, и совсем нет оного в поиске пропавших людей, так чт.

[Из песочницы] Secure Scuttlebutt — p2p социальная сеть, работающая и в оффлайне Scuttlebutt — сленговое слово, распространённое среди американских моряков, обозначающее слухи и сплетни. Node.js разработчик Доминик Тарр, живущий на паруснике у берегов Новой Зеландии, использовал это слово в названии p2p сети, предназначенной для обмена новостями и личным.

All you need is URL Ежедневно пользователи ВКонтакте обмениваются 10 млрд сообщений. Они отправляют друг другу фотографии, комиксы, мемы и другие вложения. Расскажем, как в iOS-приложении мы придумали загружать картинки с помощью URLProtocol, и пошагово разберём, как реализовать свой. Читать .

«Яндекс.Музыка» автоматически установилась на Windows 10 и заменила стандартное приложение для MP3 Приложение «Яндекс.Музыка» теперь устанавливается по умолчанию в операционной системе Windows 10, пишет «Коммерсантъ» со ссылкой на дискуссии в Microsoft Store. Там официальный представитель «Яндекса» объясняет, что приложение всё равно можно удалить с компьютера. Судя по.


Дизайнеры vs разработчики: об истории создания приложения «Мой умный город» Представьте себе банковское приложение. Что вы видите? Наверняка это несколько строчек с количеством денег на ваших счетах и куча невзрачных менюшек, где перечислены способы как-нибудь эти деньги потратить. Невзрачная картина. А банковское приложение, как центр платежной акт.

В macOS 10.15 более не поддерживаются 32-битные приложения. Что вы можете сделать? 7 октября 2020 года Apple выпустила в свет новую версию своей операционной системы для Mac, macOS Catalina. Версия 10.15 содержит множество изменений и улучшений. Одно из значимых – полный отказ от 32-битных приложений. Будучи разработчиком таких приложений для macOS, что в.

Google Drive как хранилище для веб-приложения Предисловие Мое веб-приложение хранит данные в localStorage. Это было удобно, пока не захотелось, чтобы пользователь, заходя на сайт с разных устройств, видел одно и то же. То есть, понадобилось удаленное хранилище. Но приложение «хостится» на GitHub Pages и не имеет сервер.

[Перевод] Garden v0.10.0: Вашему ноутбуку не нужен Kubernetes Прим. перев.: С Kubernetes-энтузиастами из проекта Garden мы познакомились на недавнем мероприятии KubeCon Europe 2020, где они произвели на нас приятное впечатление. Этот их материал, написанный на актуальную техническую тему и с заметным чувством юмора, — наглядное тому по.

Джедайские техники мобильного разработчика: как монетизировать приложение в 2020? Сколько сил и средств нужно, чтобы приложение начало приносить доход? Почему мобильные разработчики — ни разу не миллионеры, и где находится стеклянный потолок в рекламной прибыли? Ребята из Appgrow проанализировали 320+ приложений и рассказали о главных ошибках разработчи.

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

Преимущества анализа приложений 7 уровня в межсетевых экранах. Часть 2. Безопасность Новое поколение межсетевых экранов удобнее и безопаснее, благодаря новой архитектуре движка и новой идеологии управления сетевыми потоками. Почему появилась эта статья? Неоднократно приходил к коллегам-безопасникам, которые пользуются межсетевым экраном нового поколения и .

[Из песочницы] Управление текстом и локализация в веб-приложении Доброго времени суток, хабравчане! В данной статье я расскажу о простом варианте решения задачи управления текстом и локализацией в веб-приложении, который вы сможете сами реализовать или же воспользоваться готовым. Давно хотелось поделиться собственными мыслями и опытом… н.

Решение задания с pwnable.kr 11-coin1, 12-blackjack, 13-lotto. Ошибки в логике приложений В данной статье рассмотрим решения 3-х заданий с сайта pwnable.kr. Организационная информацияСпециально для тех, кто хочет узнавать что-то новое и развиваться в любой из сфер информационной и компьютерной безопасности, я буду писать и рассказывать о следующих категориях: .

Новое приложение 3CX для Android — ответы на вопросы и рекомендации На прошлой неделе мы выпустили обновление 3CX v16 Update 3 и новое приложение (мобильный софтфон) 3CX для Android. Софтфон предназначен для работы только с 3CX v16 Update 3 и выше. У многих пользователей возникли дополнительные вопросы о работе приложения. В этой статье мы о.

[Перевод] Выравнивание лица за одну миллисекунду с помощью ансамбля деревьев регрессии Перевод статьи подготовлен для студентов курса «Математика для Data Science» Аннотация В этой статье рассматривается задача выравнивания лица для одного изображения. Мы покажем, как ансамбль деревьев регрессии можно использовать для прогнозирования положения ориентиров лиц.

Использование Liquibase для управления структурой БД в Spring Boot приложении. Часть 2 В предыдущей части мы разобрались с основными возможностями Liquibase и написали базовый пример Spring boot приложения, который использует Liquibase для инициализации БД. Полный код базового приложения можно увидеть тут. В этой статье мы поговорим про liquibase-maven-plugin .

[Перевод] 26 рекомендаций по использованию типа var в Java The Java Local Variable Type Inference (LVTI) или кратко — тип var (идентификатор var — это не ключевое слово, а зарезервированное имя типа) был добавлен в Java 10 с помощью JEP 286: Local-Variable Type Inference. Являясь 100% функцией компилятора, она не влияет на байт-код.

[Из песочницы] MySQL — Использование переменных в запросе Довольно часто спрашивают, есть ли аналоги аналитических (оконных) функций в MySQL. Примечание. На момент написания статьи таких аналогов не было, однако статья и ныне представляет собой академический интерес в плане разбора оригинального для MySQL подхода к использованию пе.

«И невозможное возможно»: превращаем черный ящик в белый с помощью бинарного анализа На данный момент существует два основных подхода к поиску уязвимостей в приложениях — статический и динамический анализ. У обоих подходов есть свои плюсы и минусы. Рынок приходит к тому, что использовать надо оба подхода — они решают немного разные задачи с разным результа.

Приложения для электронных книг на операционной системе Android (часть 2) В первой части обозрения приложений для электронных книг на операционной системе Android были изложены причины, по которым далеко не всякое приложение для системы Android будет корректно работать на электронных книгах с этой же операционной системой. Именно этот печальный .

[Из песочницы] Создание минимального Docker-контейнера для Go-приложений Привет, Хабр! Предлагаю вашему вниманию перевод статьи основателя сервиса Meetspaceapp Nick Gauthier «Building Minimal Docker Containers for Go Applications». Время чтения: 6 минут Существует множество, как официальных, так и поддерживаемых сообществом контейнеров для разл.

[Перевод] Google запустил «вознаграждения за просмотр рекламы» в приложениях Google объявили о новой функции, которую разработчики могут добавлять в приложения, «вознаграждения за просмотр рекламы». Идея заключается в том, чтобы стимулировать пользователей смотреть больше рекламы, поощряя их виртуальными товарами и внутриигровой валютой. Большое коли.

[recovery mode] Сократить время вычислений от нескольких лет до минут. Разбираемся с квантовым машинным обучением Я давно интересуюсь квантовыми вычислениями и пишу программы для 5-ти и 14-кубитных квантовых компьютеров IBM Q Experience. Сегодня я расскажу о технологиях, которые можно будет применять в машинном обучении после того, как квантовые вычисления завоюют мир. Спойлер для дата .

3D игра на three.js, nw.js Я решил выпустить новую версию своей старой браузерной игры, которая на протяжении пары лет пользовалась успехом в качестве приложения в социальных сетях. На этот раз я задался целью оформить ее также и в виде приложения под Windows (7-8-10) и разместить в различных магазина.

[Из песочницы] Сохранения данных пользователя после перезагрузки страницы Представим себе, что вы пишите таск-менеджер. Приложение должно работать как нативное: работать в офлайне также как в онлайне. Основная концепция Наш главный инструмент в построении такого приложения – localstorage. С другими способами реализовать это я не знаком. Способ о к.

SwiftUI для прошлого конкурсного задания Telegram Charts (март 2020 года): все просто Сразу начну с замечания о том, что приложение, о котором пойдет речь в этой статье, требует Xcode 11 и MacOS Catalina , если вы хотите использовать Live Previews, и Mojave, если будете пользоваться симулятором. Код приложения находится на Github. В этом году на WWDC 2020.

[Из песочницы] Github actions и кросс-платформенное построение Привет, Хабр. Это статья о том как настроить построение на всех платформах с помощью github actions. Читать дальше →

[Перевод] Записки фрилансера: разработка первого React Native-приложения Автор материала, перевод которого мы публикуем, недавно выпустил своё первое мобильное приложение, написанное на React Native. Так случилось, что это приложение стало и его первым проектом, который он создал как программист-фрилансер. Здесь он расскажет о том, с чем ему приш.

Автоматизируем тестирование redux селекторов в приложении В этой статье я хотел бы поделиться своими идеями того, как можно автоматизировать написание unit-тестов в react/redux приложениях. Идеи эти родились в одной из дискуссий с коллегами, в процессе написания тестов, и, как мне кажется, предложенное решение имеет право на жизнь.

Строительные блоки распределенных приложений. Второе приближение Анонс Коллеги, в середине лета я планирую выпустить еще один цикл статей по проектированию систем массового обслуживания: “Эксперимент VTrade” — попытка написать фреймворк для торговых систем. В цикле будет разобрана теория и практика построения биржи, аукциона и магазина. В.

Книга «Прагматичный ИИ. Машинное обучение и облачные технологии» Привет, Хаброжители! Эта книга Ноя Гифта предназначена для всех, кого интересуют ИИ, машинное обучение, облачные вычисления, а также любое сочетание данных тем. Как программисты, так и просто неравнодушные технари найдут тут для себя полезную информацию. Примеры кода даны н.

На Google-сервисах запретят авторизацию через CEF С июня Google начнет блокировать попытки авторизации на ее сервисах с помощью встроенных в сторонние приложения браузерных фреймворков. Это нововведение должно усилить защиту пользователей от MitM-атак фишеров. По словам руководителя Google по продуктам и защите аккаунтов Дж.

[Из песочницы] Анимация в мобильных приложениях: тестируем Lottie О библиотеке LottieFiles многие знают, но пробовать на практике не спешат. Статей на эту тему мало, поэтому я решила поделиться своим опытом создания анимации для мобильных приложений с помощью Lottie. Читать дальше

OpenSceneGraph: Интеграция с фреймворком Qt Введение С одной стороны движок OpenSceneGraph и сам по себе обладает развитой подсистемой управления окнами, обработки событий пользовательского ввода, отправки и приема пользовательских сообщений. Об этом мы довольно подробно поговорили в предыдущих статьях этого цикла. .

Онбординг как продажа веры в продукт и взлом роста конверсии — опыт Revolut и Wrike Product owner в Revolut Михаил Цвик поделился на конференции по продуктовому маркетингу Epic Growth Conference концепцией и практическим опытом взлома конверсии с помощью онбординга. Ниже опубликована расшифровка его выступления. Большинство кейсов представлены из компании.

Что в черном ящике. Обзор методов тестирования биллинга Проверка платных сервисов — один из ключевых инженерных вопросов в тестировании Badoo. Наше приложение интегрировано с 70 платёжными провайдерами в 250 странах мира, и баг хотя бы в одном из них может привести к непредсказуемым последствиям. В этой статье я расскажу о мето.

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

Руководство по реализации авто-возобновляемых подписок в iOS-приложениях Всем привет! Меня зовут Денис, я разрабатываю Apphud – сервис по аналитике авто-возобновляемых подписок в iOS-приложениях. В данной статье я расскажу как настроить, реализовать и валидировать авто-возобновляемые подписки в iOS 12 и iOS 13. Бонусом расскажу о тонких моментах.

[Перевод] Обмен данными между React-компонентами с использованием библиотеки RxJS Перед вами перевод статьи Chidume Nnamdi, опубликованной на blog.bitsrc.io. Перевод публикуется с разрешения автора. Появление библиотеки RxJS открыло массу новых возможностей в мире JS. Цель RxJS — достигать многого, используя небольшое количество кода. Прочитав эту стат.

[Перевод] Настройки аутентификации в Veeam Backup for Microsoft Office 365 v3 В недавно выпущенной версии 3.0 решения Veeam Backup for Microsoft Office 365, помимо прочих новинок, поддерживается современный способ аутентификации при работе с облачными данными. В нем задействованы аутентификация с использованием приложения Azure и сервисной учетной зап.

Гражданскую замену пистолету Макарова впервые показали в действии В рамках форума «Армия-2020» был впервые представлен пистолетный комплекс «Удав» в калибре 9х19 миллиметров, который рассматривается как замена знаменитому пистолету Макарова. Новинку продемонстрировал в действии главный разработчик пистолета – Иван Козлов, ведущий инженер-к.

Liveprof покажет, когда и почему менялась производительность вашего PHP-приложения Привет, Хабр! Меня зовут Тимур Шагиахметов, я PHP-разработчик в Badoo. Производительность приложения — один из важнейших критериев качества работы программиста. В вопросах оптимизации PHP-приложений помощником является профайлер. Недавно мы рассказывали о том, какими и.

Как продвигать мобильное приложение в 2020 году: 4 практических способа + полезные инструменты Конкуренция на рынке мобильных приложений растет быстрыми темпами. Сегодня уже трудно рассчитывать на успех, освоив подходы ASO, необходимо более глубокое погружение и разработка нестандартных рекламных и маркетинговых шагов. Сегодня мы поговорим о способах продвижения м.

[Перевод] 12 советов для тех, кто использует Redux при разработке React-приложений Когда речь идёт о разработке React-приложений, то, в плане архитектуры кода, маленькие проекты часто бывают более гибкими, чем большие. Нет ничего плохого в том, чтобы создавать такие проекты с использованием практических рекомендаций, нацеленных на более крупные приложения.

Создана браузерная Super Mario с королевской битвой на сто человек Блогер-энтузиаст под ником InfernoPlus сделал браузерную версию классической Super Mario Bros, а ещё добавил в неё режим королевской битвы. Поиграть бесплатно можно прямо сейчас на сайте автора.

Приложение Локатор в iOS 13 – замена Найти iPhone и Найти Друзей на iOS и macOS с революционными возможностями Одним из нововведений, представленных Apple на конференции WWDC в 2020 году, стало появление приложения Локатор, которое объединяет в себе два существующих сервиса Найти iPhone и Найти Друзей. ПО ТЕМЕ: Как обновлять приложения в iOS 13 на iPhone и iPad, если в App Store нет .

Использование DbTool для засеивания (seeding) баз данных в приложениях .NET (Core) Представляем вашему вниманию DbTool — утилиту командной строки для экспорта данных БД в различные форматы и open-source библиотеку Korzh.DbUtils, использование которых может значительно упростить первоначальное «засевание» базы данных в вашем .NET (Core) приложении. С помощь.

Даб-даб 2020: новинки WWDC и мои впечатления Привет! Меня зовут Азат Зулькарняев, я занимаюсь разработкой iOS-приложений в компании Badoo. Традиционно мы каждый год с коллегами проводим неделю на WWDC. В статье я делюсь своими впечатлениями с конференции: под катом не только важные обновления и обзор сессий, но и немно.

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

[Перевод] Протокол MQTT: концептуальное погружение Протокол Message Queuing Telemetry Transport (MQTT) используется в течение многих лет, но сейчас он особенно актуален благодаря взрывному росту IoT: и потребительские, и промышленные устройства внедряют распределённые сети и граничные вычисления (edge computing), а устройств.

Как сделать два приложения из одного. Опыт Тинькофф Джуниор Привет, меня зовут Андрей и я занимаюсь приложениями Тинькофф и Тинькофф Джуниор для платформы Android. Хочу рассказать о том, как мы собираем два похожих приложения из одной кодовой базы. Тинькофф Джуниор — это мобильное банковское приложение, ориентированное на детей .

Инфраструктура как код, выигрываем на масштабе (Кирилл Ветчинкин, TYME) Модель «Инфраструктура как код (IaC)», которую иногда называют «программируемой инфраструктурой», — это модель, по которой процесс настройки инфраструктуры аналогичен процессу программирования ПО. По сути, она положила начало устранению границ между написанием приложений и с.

[Из песочницы] Топ 5 ошибок в моих ReactJS приложениях Больше 4х лет назад я влюбился в ReactJS и с тех пор все Fron End приложения разрабатываю при помощи этого замечательного инструмента. За это время я и команды, в которых мне повезло поработать, наделали кучу ошибок, многие из которых были благополучно исправлены. Множество .

[Из песочницы] Как разработать ещё один платформер с помощью Unity. Ещё один туториал Привет, Хабр! Под катом вас ждёт ещё одна статья, которая расскажет о том, как я поставил себе цель запрограммировать игру, основываясь на переводе статьи на Хабр под названием Паттерны дизайна уровней для 2D-игр. Статья имеет много текста (как обычного, так и исходного) и м.

Мастер Йода рекомендует:  MIT News новые материалы добавят оптическую связь в кремниевые процессоры

Алгоритм мышления и сознания, часть 2 Данный текст содержит пояснения к алгоритму из моей первой статьи “Алгоритм мышления и сознания”. Тезисы первой статьи: Феномен субъективного мышления можно алгоритмизовать. Предъявленный в статье алгоритм мыслит и этим можно воспользоваться практически. С помощью алгорит.

[Перевод] Публикуем приложения iOS в App Store с GitLab и fastlane Как GitLab с fastlane собирает, подписывает и публикует приложения для iOS в App Store. Недавно у нас был пост о том, как быстро собрать и запустить приложение Android с GitLab и fastlane. Здесь мы увидим, как собрать и запустить приложение iOS и опубликовать его в TestFlig.

[Из песочницы] Lock с приоритетами в .NET Каждый программист, использующий более одного потока в своей программе, сталкивался с примитивами синхронизации. В контексте .NET их очень и очень много, перечислять не буду, за меня это уже сделал MSDN. Мне приходилось пользоваться многими из этих примитивов, и они прекрас.

[Перевод] Как посчитать ROI от автоматизации тестирования с Selenium? Перевод статьи подготовлен специально для студентов курса «Python QA Engineer» Кроссбраузерное тестирование – это именно тот тип тестирования, который требует большого количества сил и времени. Тестирование веб-приложения в различных браузерах, на различных операционных си.

[Из песочницы] Как хакеры используют Microsoft Excel против самого себя Привет, Хабр! представляю вашему вниманию перевод статьи «How Hackers Turn Microsoft Excel’s Own Features Against It» автора Лили Хэй Ньюман. Elena Lacey, getty images Наверняка для многих из нас Microsoft Excel – программа скучная. Она много чего умеет, но всё-таки это н.

[Перевод] /etc/resolv.conf для Kubernetes pods, опция ndots:5, как это может негативно сказаться на производительности приложения Не так давно мы запустили Kubernetes 1.9 на AWS с помощью Kops. Вчера, во время плавного выкатывания нового трафика на самый большой из наших Kubernetes кластеров, я начал замечать необычные ошибки разрешения имен DNS, залогированные нашим приложением. Читать дальше →

Facebook закроет свой spyware VPN Onavo В конце января на Хабре появилась новость о том, что Facebook в течение двух лет ведет секретный проект Atals. В его рамках добровольцам платили по $20 в месяц за установку на смартфон некоего псевдо-VPN, приложения, которое устанавливает корневой сертификат и далее отслеж.

Netramesh – легковесное service mesh решение В процессе перехода от монолитного приложения к микросервисной архитектуре мы сталкиваемся с новыми проблемами. В монолитном приложении обычно достаточно просто определить, в какой части системы произошла ошибка. Скорее всего, проблема в коде самого монолита, либо в базе дан.

[Из песочницы] 9 Принципов для создания качественных iOS приложений Принципы основаны на известной методологии от heroku, адаптированы под реалии айос разработки (Отсутствие контейнеров, ревью которые занимают несколько дней и тормозят развертывания, работа Xcode только на маке). Эта статья является коротким введением, полную серию можете на.

FFmpeg практика аппаратного декодирования DXVA2 Привет! Эта статья продолжение моей статьи FFmpeg начало работы Visual Studio. Здесь мы приступим к аппаратному декодированию RTSP-потока FULL HD. Заранее скажу, что с данной задачей легко справится даже Intel ATOM Z8350. Задача: аппаратное декодирование и запись до 4-х кад.

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

Практика использования библиотеки lottie в мобильном приложении банка Привет, Хабр! В свое время Product Owner попросил подумать нас о создании эффективного процесса по внедрению анимации в наше приложение на android/ios. В то время мы делали задачу по предзаполнению заявки личными данными на кредитный продукт, и на ответ от сервера требовало.

[Из песочницы] Создание приложения Sticky Notes с использованием 8base, GraphQL и React Посмотреть демо версию программы здесь. Во все времена тайм менеджмент был связан для меня с огромной борьбой, запланированные задачи забыты, заметки потеряны, потому что они распределены по нескольким приложениям, сохраняющим заметки. Решение заключается вовсе не в прило.

Материалы с android-митапа: инструменты для автотестов | Yandex Mapkit 3 | дизайн приложений | Server Driven UI Привет! Это пост-отчёт с android-митапа, который недавно прошёл в офисе Авито. С коллегами из Озон, Surf, Revolut и Авито мы обсуждали интеграцию Yandex Mapkit 3, как быстро запускать фичи с Server Driven UI, какие инструменты выбирать для автотестов и как сделать дизайн при.

Использование DiagnosticSource в .NET Core: практика В предыдущей статье я рассказал про механизм DiagnosticSource и на простом примере показал, как с его помощью можно перехватывать запросы в базу данных через классы SqlConnection и SqlCommand и измерять время их выполнения. В настоящее время DiagnosticSource уже используется.

[Перевод] Пишем мультиязычное приложение на React Native Локализация продукции очень важна для международных компаний, осваивающих новые для себя страны и регионы. Аналогично локализация нужна и мобильным приложениям. Если разработчик начинает международную экспансию, важно дать пользователям из другой страны возможность работа.

[Перевод] Posit-арифметика: победа над floating point на его собственном поле. Часть 1 Часть 2 От переводчика: Тема формата Posit уже была на хабре здесь, но без существенных технических подробностей. В этой публикации я предлагаю вашему вниманию перевод статьи Джона Густафсона (автора Posit) и Айзека Йонемото, посвящённой формату Posit. Так как статья имеет .

Как я делал desktop-приложение на Flutter (+ bonus) Недавно попалась на глаза новость, что вышел очередной релиз Flutter (1.9), который обещает разные вкусности и, в том числе, раннюю поддержку веб-приложений. На работе я занимаюсь разработкой мобильных приложений на React Native, но с любопытством поглядываю на Flutter. Для.

Как работает децентрализованный мессенджер на блокчейне В начале 2020 мы начали создавать мессенджер на блокчейне [название и ссылка есть в профиле] с обсуждения преимуществ перед классическими P2P-мессенджерами. Прошло 2.5 года, и нам удалось подтвердить свой концепт: сейчас доступны приложения мессенджера для iOS, Web PWA, Win.

Интересные доклады на HighLoad++ Siberia 2020 по версии Plesk Всем привет! В июне в Новосибирске прошла конференция по разработке высоконагруженных приложений HighLoad++ Siberia 2020. Ранее в статьях на Хабре мы упоминали, что мы в компании Plesk проводим ретроспективу конференций и докладов, которые посещаем, чтобы не потерять получен.

Особенности настройки Palo Alto: SSL VPN Несмотря на все преимущества межсетевых экранов Palo Alto, в рунете не так много материалов по настройке этих устройств, а также текстов, описывающих опыт их внедрения. Мы решили обобщить материалы, накопленные у нас за время работы с оборудованием этого вендора и рассказа.

iTunes могут разделить на несколько приложений с выпуском следующей версии macOS По информации ресурса 9to5mac, в следующем крупном релизе macOS компания Apple планирует разделить iTunes на четыре отдельных приложения для музыки, книг, телевидения и подкастов. Новые приложения будут созданы с помощью Marzipan – проекта Apple, который позволяет создавать .

Сайзинг Elasticsearch — How big a cluster do I need? — Well, it depends… (злобное хихиканье) Elasticsearch — сердце Elastic Stack, в котором происходит вся магия с документами: выдача, приём, обработка и хранение. От правильного количества нод и архитектуры решения зависит его производительност.

Бесплатные варианты лицензирования PVS-Studio Существует несколько вариантов бесплатного лицензирования статического анализатора кода PVS-Studio, предназначенного для поиска ошибок и потенциальных уязвимостей. Бесплатной лицензией могут воспользоваться открытые проекты, маленькие закрытые проекты, публичные специалисты.

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

Accessibility Testing: что это такое и почему это важно Информационные технологии уже давно стали неотъемлемой частью нашей жизни, и делать их доступными как можно большему количеству людей — просто необходимо. Доступность, о которой мы говорим, относится к внедрению функций, которые позволяют оптимизировать сайт, приложение или.

Google выпустил два приложения для помощи слабо слышащим Google объявил о запуске двух новых функций/приложений для Android — Live Transcribe и Sound Amplifier.


[Из песочницы] Практичный гайд по переменным окружения в Go Привет, Хабр! Представляю вашему вниманию перевод статьи A no-nonsense guide to environment variables in Go автора Enda Phelan. Переменные окружения — лучший способ хранения конфигурации приложения, поскольку они могут быть заданы на системном уровне. Это один из принципов .

Как организовать хакатон будучи студентом 101. Часть вторая И снова здравствуйте. Это продолжение статьи про организацию студенческого хакатона. В этот раз расскажу про проблемы появляющиеся прямо во время хакатона и как мы их решали, локальные ивенты которые мы добавили к стандартным «много кодить и есть пиццу» и немного советов про.

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

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

Интеграция 3CX с Office 365 через Azure API АТС 3CX v16 редакции Pro и Enterprise предлагает полную интеграцию с приложениями Office 365. В частности, реализована: Синхронизация пользователей Office 365 и добавочных номеров (пользователей) 3CX. Синхронизация персональных контактов пользователей Office и персонально.

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

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

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

Антирейтинг 2020 Эта статья написана по аналогии со статьей «Как не надо писать на Хабр: Антирейтинг 2020». Статьи взяты за 2020 год, точнее, начиная с индекса 345000. Кроме отрицательных значений рейтинга, есть список по абсолютному количеству минусов (видимо, самые обсуждаемые темы, в бо.

Google закручивает гайки Последние годы компания Google в отношении своей операционной системы Android – все больше “закручивает гайки”: запрещает ранее работающие функции, ограничивает изменение настроек системы из приложений. И старые приложения перестают работать на новых версиях Android. Кроме .

Как создать приложение для сферы финансов: 5 API в помощь разработчику Всем привет! Продолжаю свое исследование сферы финансов с точки зрения технологий. В прошлом материале мы изучали существующие торговые терминалы и их особенности, а сегодня предлагаю поговорить, собственно, о разработке финансовых приложений. Для нового топика я подобра.

Работа с камерой во Flutter Возможность задействовать камеру существует во многих приложениях, и мы все регулярно пользуемся ею. Во Flutter мы можем реализовать работу с камерой с помощью двух официальных плагинов: camera image-picker Между ними – заметная разница, и использовать их стоит по ситуации.

Linux многоликий: как работать на любом дистрибутиве Создать приложение для резервного копирования, работающее на любом дистрибутиве — задачка не простая. Чтобы обеспечить работу Veeam Agent for Linux на дистрибутивах от Red Hat 6 и Debian 6, до OpenSUSE 15.1 и Ubuntu 19.04 приходится решать спектр проблем, особенно если уче.

[Перевод] Руководство по логированию в Node.js Первая задача, с которой чаще всего сталкиваются разработчики, начинающие программировать на JavaScript, – как регистрировать события в журнале консоли с помощью метода console.log. В поисках информации по отладке кода на JavaScript вы найдёте сотни статей в блогах, а также.

[Из песочницы] Как при помощи 2 видов unit-тестов сделать приложение более стабильным Привет, Habr. Меня зовут Илья Смирнов, я Android-разработчик в компании FINCH. Хочу показать вам несколько примеров работы с Unit-тестами, которые мы наработали у себя в команде. В наших проектах используется два вида Unit-тестов: проверка на соответствие и проверка на выз.

Как дебажить фронтенд и бекенд: пошаговая инструкция Привет, Хабр! Представляю вам перевод статьи «How to debug javascript in Chrome quick and easy «. В этом посте мы научимся дебажить JavaScript на фронт- и бекенде с помощью Chrome DevTools и VS Code. Читать дальше →

[Перевод] Вычисление 2D-коллизий: алгоритм Гилберта — Джонсона — Кирти Я занялся изучением процессов распознавания коллизий, и это привело меня к алгоритму Гилберта — Джонсона — Кирти (Gilbert-Johnson-Keerthi, GJK). Все примеры кода в посте написаны на TypeScript. В примерах используются созданные мной структуры, которые подробно в посте не р.

Привлечь удержать: кейс Всемайки.ру и AppMetrica Как реклама мобильного приложения помогла увеличить оборот в 2,5 раза и привлечь новую аудиторию, при сохранении доли рекламных расходов

Оптимизация node.js приложения Дано: старое http node.js приложение и возросшая нагрузка на него. Стандартные решения проблемы: докинуть серверов, все переписать с 0, оптимизировать уже написанное. Давайте попробуем пойти путем оптимизации и разобраться, как можно найти и улучшить слабые места приложения.

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

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

[Перевод] Автоматический перенос приложений iOS (ARM) на macOS (x86) с помощью Bitcode Когда Apple представила технологию Bitcode и сделала её обязательной для watchOS и tvOS, компания словно отмахнулись от вопросов, зачем она вообще нужна. Лишь туманно сказала, что она помогает настраивать двоичные файлы и использует последние улучшения компилятора. С тех по.

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

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

Генерация приложения на React с бэкэндом на GraphQL за считанные минуты Мы добавили новую экспериментальную возможность в 8base CLI (Command Line Interface), которая генерирует готовое приложение на React из вашей модели данных. Это очень удобно для начала работы с GraphQL и React, а также для быстрого создания пользовательского интерфейса прило.

Первое знакомство с Home Assistant Home Assistant – популярное приложение с открытым исходным кодом для организации умного дома. Первый опыт автора в работе с Home Assistant основывается на попытке интеграции в него ‘умной рисоварки‘. Автор постарается описать основные компоненты и возможности данного прило.

PyDERASN: как я написал ASN.1 библиотеку с slots and blobs ASN.1 это стандарт (ISO, ITU-T, ГОСТ) языка описывающего структурированную информацию, а также правил кодирования этой информации. Для меня как программиста это просто ещё один формат сериализации и представления данных, наравне с JSON, XML, XDR и другими. Он крайне распрост.

Dynamic в C#: рецепты использования Это заключительная часть цикла про Dynamic Language Runtime. Предыдущие статьи: Подробно о dynamic: подковерные игры компилятора, утечка памяти, нюансы производительности. В этой статье подробно рассматривается кэш DLR и важные для разработчика моменты, с ним связанные. Г.

[Перевод] Как Project Infer от Facebook помогает искать баги в мобильных приложениях перед деплоем Несколько дней назад команда инженеров Facebook отличилась — ее удостоили награды Most Influential POPL Paper Award. В среде специалистов по машинному обучению это весьма почетно. Награду вручили за работу Compositional Shape Analysis by Means of Bi-abduction, которая рас.

[Перевод] Изучаем Docker, часть 4: уменьшение размеров образов и ускорение их сборки В этой части перевода серии материалов, которая посвящена Docker, мы поговорим о том, как оптимизировать размеры образов и ускорить их сборку. В прошлых материалах мы сравнивали образы Docker с пиццей, термины с пончиками, а инструкции файлов Dockerfile с бубликами. Сегодня .

Часть 4. Модель вычисления логических функций по графу для асинхронных параллельных процессов Перейдем к вычислению логических функций по графу для более широкого класса поведений. Будем рассматривать циклические автономные поведения, не содержащие кратных сигналов (или по другому: не содержащие индексированных событий). Еще одно ограничение: для удобства не будем ра.

Джулия и параллельные вычисления С момента выхода в августе 2020, язык Julia активно набирает популярность, войдя в топ 10 языков на Github и топ 20 самых популярных профессиональных навыков по версии Upwork. Для начинающих стартуют курсы и выпускаются книги. Julia используется для планирования космических.

[Перевод] Эффективное и надежное управление кластерами в любом масштабе с Tupperware Сегодня на конференции Systems @Scale мы представили Tupperware — нашу систему управления кластерами, которая оркестрирует контейнеры на миллионах серверов, где работают почти все наши сервисы. Впервые мы развернули Tupperware в 2011 г., и с тех пор наша инфраструктура разр.

[Перевод] Вся правда об ОСРВ. Статья #29. Прерывания в Nucleus SE Все современные микропроцессоры и микроконтроллеры содержат какие-либо механизмы прерывания. Эти механизмы необходимы для обеспечения «отзывчивости», требуемой многими приложениями. Безусловно, отзывчивость и предсказуемость являются основной целью при использовании ОСРВ, но.

IBM System i (aka AS/400) — Как мы делали автотесты приложений зеленого экрана Привет! Меня зовут Антон Воробьев, я отвечаю в Альфа-Банке за разработку приложений для централизованной банковской системы. В этом посте я расскажу вам о том, что такое приложения зеленого экрана, зачем они нужны и как мы делали для них автотесты, написав для этого собстве.

Sloy — AR-приложение «Яндекса» с распознаванием одежды по видео С помощью технологии компьютерного зрения это приложение распознаёт бренды и модели одежды, обуви и аксессуаров.

Управляем android устройством Это уже третья попытка подружить умный дом с android, напомню, что первая попытка контролировать android устройства посредством HTTP, была с помощью приложения Paw Server. Данное приложение позволяло с помощью языка BeanShell встраивать свой код в xhtml страницу и взаимоде.

[Перевод] Лучшие практики для контейнеров Kubernetes: проверки работоспособности TL;DR Чтобы добиться высокой наблюдаемости контейнеров и микросервисов, журналов и первичных метрик мало. Для более быстрого восстановления и повышения отказоустойчивости приложения должны применять Принцип высокой наблюдаемости (HOP, High Observability Principle). На уров.

Книга «Kafka Streams в действии. Приложения и микросервисы для работы в реальном времени» Привет, Хаброжители! Эта книга подойдет для любого разработчика, который хочет разобраться в потоковой обработке. Понимание распределенного программирования поможет лучше изучить Kafka и Kafka Streams. Было бы неплохо знать и сам фреймворк Kafka, но это не обязательно: я ра.

Мастхэв для мобильной аналитики. Что нужно, чтобы вскрывать приложения для Android на Android Для подписчиковЕсли ты занимаешься аналитикой мобильных приложений или разрабатываешь их, то знаешь о таких десктопных инструментах, как IDA, apktool или Jadx. Но бывает, что компьютера под рукой нет, а тебе срочно нужно проанализировать приложение. В этой статье я приведу п.

[Перевод] Анонсирован Windows Vision Skills (Preview) Недавно была анонсирована превью-версия Windows Vision Skills, являющяяся частью набора пакетов NuGet, который облегчают разработчикам приложений решение целого комплекса проблем компьютерного зрения с помощью простого набора API. Рисунок 1 — Слева направо вы видите в дейс.

Замена одного наушника AirPods Pro или зарядного кейса обойдётся в $89 (или в $29 при наличии AppleCare+) Несколько дней назад компания Apple опубликовала информацию о новых полностью беспроводных наушниках AirPods Pro, которые получили поддержку системы активного шумоподавления. Их цена составляет $249, что больше стоимости обычных AirPods ($159 или $199 в зависимости от типа и.

[Перевод — recovery mode ] Типичные ошибки при логгировании Привет, Хабр! Я думаю, практически в каждой программе есть логгирование. Более того, в ряде уже неновых приложений (а значит с морем нетривиальных условий) зачастую логи становятся жизненно важными на боевом сервере. Однако, несмотря на всю важность и распространенность подо.

[Перевод] Must-have алгоритмы машинного обучения Хабр, привет. Этот пост — краткий обзор общих алгоритмов машинного обучения. К каждому прилагается краткое описание, гайды и полезные ссылки. Метод главных компонент (PCA)/SVD Это один из основных алгоритмов машинного обучения. Позволяет уменьшить размерность данных, потер.

[Перевод] Реализуем UI в iOS: улучшаем, ускоряем, масштабируем Привет! Меня зовут Азат Зулькарняев, я занимаюсь разработкой iOS-приложений в компании Badoo. При создании мобильных приложений большая часть времени уходит на разработку UI, и оптимизация этого процесса всегда является актуальной темой в среде разработчиков. Мой коллега А.

[Из песочницы] Python + Raspberry Pi + Pixhawk и квадрокоптер. Или как не надо делать роботов Привет, Хабр! Меня зовут Алексей, уже 7 лет я ведущий разработчик Smart TV-решений в крупной компании из Ижевска, занимающейся заказной разработкой. Каждый год у нас проводится конкурс новогодних украшений, и каждый раз мы ничего не украшаем, а пилим всякие технологичные шт.

Как удалить ненужные приложения со смартфона? Сегодня пользователям мобильной системы Android доступно много различных приложений и инструментов. При помощи магазина Google Play можно загружать.

Обзор радиаторов на память от BYKSKI и замена штатных радиаторов Обзор радиаторов BYKSKI B-MRCOV-X на память. Также в статье инструкция по демонтажу стоковых радиаторов G.SKILL RipjawsV. После замены радиаторов также были проведены тесты замеров температуры.

Особенности тестирования Mobile Web приложений Привет, хабражитель. Тестирование Mobile Web в чем-то похоже на тестирование Desktop Web. С одной стороны это те же HTML, CSS, JavaScript и прочие прелести, которые мы привыкли видеть. Те же проблемные места и типичные баги. С другой стороны, отличия все же имеются. В этой.

Мультиван и маршрутизация на Mikrotik RouterOS Введение Взяться за статью, помимо тщеславия, побудила удручающая частота возникновения вопросов по этой теме в профильных группах русскоязычного телеграмм-сообщества. Статья ориентирована на начинающих администраторов Mikrotik RouterOS (далее ROS). В ней рассматривается то.

Особенности тестирования веб-приложения для видеосервиса Услуги потокового вещания по запросу (VOD) стали неотъемлемой частью нашей повседневной жизни. Video on Demand — это система доставки видеоконтента, которая позволяет зрителям выбирать контент (видео) и просматривать его в удобное время (по запросу) на любом устройстве, пр.

[Перевод] 5 отличных способов анимировать React-приложения в 2020 году Анимация в приложениях React — популярная и обсуждаемая тема. Дело в том, что способов ее создания очень много. Некоторые разработчики используют CSS, добавляя теги в HTML-классы. Отличный способ, его стоит применять. Но, если вы хотите работать со сложными видами анимаци.

[Перевод] Знакомство с Тестированием в Python. Ч. 3 Друзья, у нас для вас отличные новости. Во-первых на улице наконец-то светит солнышко, а это значит, что весна начинает полноправно вступать в свои права. Вторая новость более профильная — уже 20 марта стартует первое занятие в новом потоке по курсу «Разработчик Python», в с.

[Перевод] Новый Windows Terminal: ответы на некоторые ваши вопросы В комментариях к недавней статье вы задали много вопросов по поводу новой версии нашего Windows Terminal. Сегодня постараемся ответить на некоторые из них. Под катом приведены некоторые из наиболее часто задаваемых вопросов, которые мы слышали (и до сих пор слышим), а также.

[Из песочницы] Передача данных между сценами в Unity — применение мультисценности в разработке простых игр Данная статья будет полезна начинающим разработчикам игр. В ней я расскажу о собственном опыте реализации мультисценного взаимодействия и проблемах с которыми я столкнулась. Поговорим о статических классах для хранения данных, различных способах подгрузки сцен движком Unity.

YouTube Music будет предустановлен на всех устройствах с Android 10 Приложение YouTube Music заменит Play Music на новых устройствах. Компания Google решила ускорить процесс перевода […]

Как отключение анимации может ускорить старый смартфон? Правда, что отключение анимации может ускорить старый смартфон? Со временем старые смартфоны начинают работать медленнее — приложения обновляются.

Из-за китайского приложения для обмена лицами со знаменитостями разгорелся скандал 30 августа в китайском App Store появилось приложение Zao. С его помощью пользователи могут подставлять своё лицо вместо лиц актёров в отрывках фильмов и игр. Всего за несколько дней приложение заняло первую строчку списка бесплатных развлекательных приложений в App Store. Н.

Huawei может отказаться от приложения Gmail в смартфонах модельного ряда Mate 30 и более новых На место сервиса электронной почты от Google рассматривается защищенный аналог со сквозным шифрованием.

[Из песочницы] Deploy Symfony + React приложения на AWS посредством CI Добрый день, в данной статье я покажу как развернуть Symfony 4 приложение на AWS. В официальной документации есть пример подобного процесса, однако мой вариант не столь тривиален, как загрузка zip архива с приложением. На дворе 2020, в моде docker, микросервисная архитектура.

[Перевод] Плюсы и минусы Django Прим. перев.: Эта статья рассчитана в основном на тех кто только выбирает фреймворк для веб-разработки. Опытные разработчики на Django вряд ли узнают что-то новое. Django описывают как «веб-фреймворк для перфекционистов с дедлайнами». Его создали, чтобы переходить от протот.

Калькулятор Windows получит компактный режим и возможность работы поверх всех окон Некоторое время назад компания Microsoft открыла исходный код UWP-приложения «Калькулятор», поставляющегося вместе с операционной системой Windows 10, благодаря чему сторонние разработчики смогли подключиться к реализации новых функций. В частности, вскоре приложение обзаве.

[Перевод] Прокачиваем навыки отладки JavaScript с помощью консольных трюков Перед вами перевод статьи из блога Better Programming на сайте Medium.com. Автор, Indrek Lasn, рассказывает об инструментах для отладки кода, которые предоставляет JavaScript. Читать дальше →

[Из песочницы] Учебник по JavaFX: начало работы Привет, Хабр! Представляю вашему вниманию перевод статьи «JavaFX Tutorial: Getting started» автора Vojtech Ruzicka. Как настроить и начать работать с JavaFX, с помощью Maven, Gradle или JavaFX SDK. Читать дальше →

Машинное обучение глубокой нейронной сети с подкреплением на tensorflow.js: Трюки Обучать глубокие нейронные сети с нуля — задача не из простых. Требуется много данных и времени на обучение, но ускорить процесс могут помочь некоторые трюки, о которых я и расскажу под катом. Демонстрация прохождения простого лабиринта с использованием трюков. Длительност.

Замена штатного кулера XBOX One на Noctua Microsoft XBOX One? Нет, не слышно! В статье идет речь о замене штатного кулера XBOX One (первого поколения) на практически безшумный Noctua. Сделаем переходник, который в случае необходимости позволит без проблем вернуть назад оригинальный кулер.

Как замедлить или ускорить воспроизведение в Apple Music Случается, что иногда нужно замедлить музыкальную композицию, чтобы наверняка расслышать то, что произнес исполнитель, дикция которого оставляет желать лучшего, или наоборот ускорить ее. Это не проблема, если вы звукорежиссер с соответствующей аппаратурой, но что делать тем.

C for Metal — драгоценный металл для вычислений на графических картах Intel Сколько процессорных ядер Intel в вашем компьютере? Если вы пользуетесь системой на базе Intel, то в абсолютном большинстве случаев к вашему ответу надо будет прибавить единицу. В состав почти всех процессоров Intel — от Atom и до Xeon E3, естественно, не пропуская Core, уже.

[Из песочницы] OutOfMemory и использование векторных изображений в Android Studio Привет, Хабр! В данной статье, ориентированной на новичков, я бы хотел дать несколько советов по оптимизации использования приложением памяти устройства, дабы постоянно не получать OutOfMemory, а также рассмотреть использование векторных изображений в текущей актуальной верс.

Apache Kafka и потоковая обработка данных с помощью Spark Streaming Привет, Хабр! Сегодня мы построим систему, которая будет при помощи Spark Streaming обрабатывать потоки сообщений Apache Kafka и записывать результат обработки в облачную базу данных AWS RDS. Представим, что некая кредитная организация ставит перед нами задачу обработки вхо.

На четыре года раньше обещанного. Microsoft решила ускорить «смерть» Windows 8 Компания Microsoft решила ускорить процесс перехода пользователей с операционной системы Windows 8 и прекратить обновление приложений для неё на четыре года раньше, чем было изначально обещано. В прошлом году компания объявила, что она перестанет обновлять прилож.

Безболезненный Fallback Cache на Scala В крупных или микросервисных архитектурах самый важный сервис не всегда самый производительный и бывает не предназначен для хайлоада. Мы говорим о бэкенде. Он работает медленно — теряет время на обработке данных и ожидании ответа между ним и СУБД, и не масштабируется. Даже е.

Приложение DeepNude раздевает человека на фото. Закрывают сервис Сегодня нейросети используют для очень разных задач. Авторы приложения DeepNude решили в очередной раз сыграть на том, что издавна двигает интернет и технологии — нейросеть может раздеть персонажа на фотографии. Но приложение оказалось слишком популярным, скандальным, а по.

Приложение для раздевания девушек на фото выставили на продажу Разработчики нашумевшего приложения DeepNude, которое с помощью нейросетей «раздевает» девушек на фотографиях, решили продать своё детище. Начальная цена — $30 тысяч.

Rollup: уже можно собирать приложения Rollup — это сборщик javascript приложений и библиотек нового поколения. Многим он давно знаком как перспективный сборщик, который хорошо подходит для сборки библиотек, но плохо подходит для сборки приложений. Однако время идет, продукт активно развивается. Я впервые попроб.

Создание системы формальной верификации с нуля. Часть 1: символьная виртуальная машина на PHP и Python Формальная верификация — это проверка одной программы либо алгоритма с помощью другой. Это один из самых мощных методов, который позволяет найти в программе все уязвимости либо же доказать, что их нет. Более подробное описание формальной верификации можно увидеть на пример.

СМИ: почти 90% российских топовых Android-приложений передают личные данные третьим сторонам 89 из топ-100 бесплатных приложений в российском Google Play Store делятся пользовательскими данными со сторонними платформами. Об этом свидетельствует исследование The Bell. С помощью сервисов AppCensus и Exodus издание проанализировало, какие именно данные обрабатывают и .


«Лаборатория Касперского» пожаловалась в ФАС на Apple Компания «Лаборатория Касперского» заявила о жалобе, поданной в Федеральную антимонопольную службу (ФАС) на компанию Apple. Представители ФАС сообщили о том, что жалоба уже поступила на рассмотрение, о чем сообщают «Ведомости». По мнению «Лаборатории Касперского» корпораци.

[Перевод] Представляем шрифт Cascadia Code Cascadia Code наконец-то здесь! Вы можете установить его непосредственно со страницы релизов в нашем репозитории на GitHub или автоматически получить его в следующем обновлении Windows Terminal. Постойте, что за «Cascadia Code»? Cascadia Code был представлен в мае этого г.

[Перевод] Использование UIViewPropertyAnimator для создание пользовательских анимаций Создание анимаций это здорово. Они являются важной частью iOS Human Interface Guidelines. Анимации помогают привлечь внимание пользователя к важным вещам или попросту делают приложение не таким скучным. Существует несколько способов реализовать анимацию в iOS. Вероятно, са.

[Перевод] Google Play Store переходит на стандартизацию значков приложений Google объявил, что разработчики приложений, отправляющие свои приложения в Google Play Store, должны будут соответствовать определенным спецификациям, когда дело доходит до дизайна значка их приложения. Спецификация вынудит разработчиков обновлять «магазинный» значок своего.

Почему не удаляются приложения на iPhone Удалить приложение с iPhone можно двумя способами. Первый – зажать иконку приложения на рабочем столе до появления крестика и удалить программу нажатием на него. Второй – перейти в Настройки – Основные – Хранилище iPhone, найти ненужное приложение и нажать Удалить прог.

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

[Из песочницы] Как быть опубликованным в Google Play в 2020 Вступление Опубликовать приложение, не нарушив ни чьих прав, стало непростой задачей. За последние пару лет в Google Play добавилось множество новых правил и ограничений, причем некоторые из них действуют только в определенных регионах и бремя отслеживания какие ограничения .

Разработчики конструктора сайтов uCoz создали веб-игру 14 марта создатели uCoz и uKit открыли онлайн-симулятор управления веб-разработкой. Игра моделирует процесс создания, запуска и развития веб-проектов. Игра Web Tycoon открылась для массового пользователя после окончания бета-тестирования: теперь она доступна как в браузерной.

Вся мощь IntelliJ IDEA на примере одного языка (в картинках) Классическая модель разработки любых приложений подразумевает наличие хорошей документации по пользовательскому интерфейсу и API, а также, при необходимости, хорошего покрытия исходного кода комментариями. В этом случае, доработка системы начинается с изучения документации, .

[Перевод] 10 самых распространенных ошибок при работе с платформой Spring. Часть 1 Всем привет. Сегодня делимся первой частью статьи, перевод которой подготовлен специально для студентов курса «Разработчик на Spring Framework». Начнём! Spring — пожалуй, одна из самых популярных платформ разработки на языке Java. Это мощный, но довольно сложный в освоении.

Самые красивые приложения и игры | WWDC 2020 В ходе конференции были объявлены проекты, которые (по мнению корпорации из Купертино) обладают наиболее привлекательным дизайном и уникальными возможностями. Список 9 «лучших из лучших» в 2020 году выглядит следующим образом: гоночная игра Asphalt 9: Legends; игра-головоло.

Как работать с Postgres в Go: практики, особенности, нюансы Неожиданное поведение приложения в отношении работы с базой приводит к войне между DBA и разработчиками: DBA кричат: «Ваше приложение роняет базу», разработчики — «Но ведь до этого всё работало!». Хуже всего, что DBA и разработчики не могут помочь друг другу: одни не знают .

[Перевод] Как работает альфа-композитинг Возможно, прозрачность не кажется какой-то интересной темой. Формат GIF, позволявший некоторым пикселям просвечивать сквозь фон, опубликован более 30 лет назад. Почти в каждом приложении для графического дизайна, выпущенном за последние два десятка лет, поддерживается созда.

[Перевод] 7 советов по оптимизации CSS для ускорения загрузки страниц В современном вебе, время загрузки страницы сайта — одна из важнейших метрик. Даже миллисекунды могу оказывать огромное влияние на Вашу прибыль и медленная загрузка страницы может легко навредить Вашим показателям конверсии. Существует много инструментов и техник, которые Вы.

Управление M5Stack через BLE Интро Уже сравнительно давно микроконтроллер ESP32 стал неким стандартом для множества DIY проектов. И действительно, возможность работы с Wi-Fi, Bluetooth, встроенная энергонезависимая память, а так же большое число выводов позволяют сделать массу интересных проектов. В эт.

[Из песочницы] Open Session In View в Spring Boot: Скрытая угроза Все здесь правы, каждый по-своему, и, следовательно, все здесь не правы. «Сказка о Тройке» (А. и Б. Стругацкие)Если вы используете Spring Data JPA, то после обновления на Spring Boot 2 при старте приложения можете заметить в логе новое предупреждение: spring.jpa.op.

Новый мировой рекорд по вычислению числа пи: 31,4 трлн знаков Формула Бэйли — Боруэйна — Плаффа, которая позволяет извлечь любую конкретную шестнадцатеричную или двоичную цифру числа пи без вычисления предыдущих (нынешний рекорд был установлен на алгоритме Чудновского, см. под катом) Вычислительный кластер Google Compute Engine за 1.

Riverbed представила решение для ускорения SaaS-приложений Компания Riverbed, The Digital Performance Company, представила SaaS Accelerator, новое прорывное решение, которое способно повысить производительность ведущих SaaS-приложений, в том числе O365, Salesforce, ServiceNow и Box в 10 раз. Подключив SaaS .

Игра в прятки с оптимизатором. Гейм овер, это CTE PostgreSQL 12 Эта статья — продолжение рассказа о новом в PostgreSQL 12. Мы уже разобрали SQL/JSON (патч JSONPath) в статье «Что заморозили на feature freeze 2020. Часть I. JSONPath», теперь очередь CTE. CTE CTE это Common Table Expression — общие табличные выражения, их еще называют к.

Тим Кук пообещал разобраться с приложением Absher, которое вызвало критику правозащитников из-за возможности контроля перемещения саудовских женщин Правозащитные организации Amnesty International и Human Rights Watch недавно выступили с критикой компаний Apple и Google, в магазинах приложений которых доступно для загрузки приложение Absher. Это приложение разработано правительством Саудовской Аравии и используется для в.

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

Книга «Spring. Все паттерны проектирования» Привет, Хаброжители! Мы издали книгу в которой дается обзор фреймворка Spring 5 и паттернов проектирования для него. Объясняется принцип внедрения зависимостей (dependency injection), играющий ключевую роль при создании слабосвязанного кода во фреймворке Spring. Затем рассм.

Исследование ASO российских приложений: как понять, что ваше приложение придёт к успеху? Привет, мы Pushapp, агентство мобильного маркетинга. Мы подготовили для вас маркетинговое исследование с помощью аналитического ASO-инструмента — Checkaso. Это бесплатный сервис для определения уровня оптимизации страницы мобильного приложения в App Store и Google Play.

Что особенного в Cloudera и как ее готовить Рынок распределенных вычислений и больших данных, если верить статистике, растет на 18-19% в год. Значит, вопрос выбора софта для этих целей остается актуальным. В этом посте мы начнем с того, зачем нужны распределенные вычисления, подробней остановимся на выборе ПО, расскаж.

Релиз приложения для удаленного управления: Aspia 1.1.0 После нескольких месяцев разработки, готов представить новую версию приложения для удаленного управления – Aspia. Предыдущая статья на Хабре вызвала большой интерес у многих читателей к разработке и я постарался сделать релиз новой версии максимально интересным. Была продел.

Встраиваем интерпретатор Python в java-приложение с помощью проекта Panama Пару дней назад увидел твит Брайана Гетца, но только сегодня дошли руки поиграться с примерами. Про это и хочу кратко рассказать. О проекте Panama на Хабре уже писали, поэтому просто покажу пару простых примеров того, как можно применить native binder. Читать дальше →

Тестирование на iOS 9 и выше: не баги приложений, а фичи платформы Оксана Фадеева, инженер по обеспечению качества Redmadrobot У платформы iOS 9 и выше есть особенности, которые нужно учитывать при тестировании мобильных приложений. Некоторые из них могут ввести в заблуждение и восприниматься как дефект приложения, хотя на самом деле это .

Application Security Manager. Разработчик или безопасник? Большинство успешных атак организации реализуется через уязвимости и закладки в софте. К счастью, сканер уязвимостей ПО уже рассматривается компаниями не как что-то экзотическое, а как необходимый элемент инфраструктуры защиты. Если при небольших объемах разработки можно исп.

Приложение AirSynth превращает iPhone с Face ID в терменвокс Несмотря на то, что компания Apple выпустила свой первый смартфон с Face ID уже достаточно давно, сторонние разработчики редко строят свои приложения вокруг этого сканера. Однако интересные проекты время от времени все же выходят. Например, недавно Дэйв Вуд представил AirSyn.

[Из песочницы] Мой опыт разработки на Playcanvas Существуют ли среди читателей люди, которые хотя бы краем уха слышали, что есть некий 3D движок для разработки WebGL приложений с редактором, похожим на Unity, только в браузере? Тема крайне непопулярная, но я стал одним из таких людей почти 2 года назад. И теперь мне захоте.

API на F#. Доступ к модулям приложения на основе ролей ASP.NET Core по стандарту предлагает настраивать доступ к api с помощью атрибутов, есть возможность ограничить доступ пользователям с определенным claim, можно определять политики и привязывать к контроллерам, создавая контроллеры для разных ролей У этой системы есть минусы.

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

[Перевод] 5 чрезвычайно простых способов ощутимо повысить скорость вашего VueJS-приложения Здравствуйте. Перевод данной статьи подготовлен специально для студентов курса «Разработчик JavaScript», который стартует уже на следующей неделе. Голос Чуи Немного обо мне — меня зовут Вайбхав, я из Five2One. Я вовлечен во VueJS уже целых 2 года (с момента выхода 1.0) и.

Proof-of-Stake: взгляд изнутри В интернете ходит много обывательских статей и рассуждений, но достаточно мало информации по существу. В определённый момент автору стало понятно, что механика и множество связанных нюансов безопасности до конца не понятны даже многим разработчикам криптовалют. Это вскрылос.

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

Tic Tac Toe, часть 6: Flask и Celery/RabbitMQ Tic Tac Toe: содержание цикла статейПопробуем подключить Celery/RabbitMQ к нашему проекту. В качестве основы возьмем проект с Flask’ом. Celery займется вычислением случайного числа. Читать дальше →

Не стоит доверять приложениям для поиска бесплатных сетей Wi-Fi На Android и iOS довольно популярны приложения с картами сетей Wi-Fi. С их помощью можно найти точки с бесплатных доступом в интернет и подключиться к ним, даже если они запаролены.

Warner Music подписала коммерческий контракт с алгоритмом Warner Music стала первым крупным лейблом, который подписал контракт на звукозапись с компьютерным алгоритмом. Контракт подписан с музыкальным приложением Endel от Олега Ставицкого. По договору, программа обязана сгенерировать 20 музыкальных альбомов в этом году с учётом пя.

Oracle продвигает блокчейн в корпоративной среде Нововведения в Oracle Blockchain Platform должны помочь компаниям ускорить разработку, интеграцию и развертывание новых приложений на базе блокчейна.

[Из песочницы] 10 самых распространенных ошибок Spring Framework Привет, Хабр! Представляю вашему вниманию перевод статьи «Top 10 Most Common Spring Framework Mistakes» автора Toni Kukurin. Spring, вероятно, один из самых популярных Java-фреймворков, а также могучий зверь для укрощения. Хотя его базовые концепции довольно легко понять, д.

[Перевод] Команда из России заняла третье место на конкурсе Imagine Cup в Европе, Африке и Ближнем Востоке Соревнование Imagine Cup 2020 уже началось, и на этой неделе мы провели второй региональный финал в Амстердаме, в Нидерландах. Команда Finderr из Соединенного Королевства заняла первое место и получила путевку на мировой финал за свое приложение для поиска потерянных предме.

Приложения для электронных книг на операционной системе Android. Часть 4. Игры В сегодняшней, четвёртой (предпоследней), части статьи о приложениях для электронных книг на операционной системе Android будет рассмотрена только одна, но обширная тема: игры. Краткое содержание предыдущих трёх частей статьиВ 1-ой части были подробно рассмотрены причины, п.

Google помогает полиции определять устройства вблизи мест преступления, используя данные о местоположении Не секрет, что Google отслеживает вас повсюду, даже если вы отключили функцию истории местоположений Google. Как показало исследование Associated Press в 2020 году, приложения Google, такие как Карты или Погода на Android, позволяют компании непрерывно собирать вашу геолока.

[Перевод] Деплоим ML проект, используя Flask как REST API, и делаем доступным через приложение на Flutter Введение Машинное обучение уже везде и, пожалуй, почти невозможно найти софт, не использующий его прямо или косвенно. Давайте создадим небольшое приложение, способное загружать изображения на сервер для последующего распознавания с помощью ML. А после сделаем их доступными .

[Перевод] Подготовка приложения к Android Q. Часть 1 Перевод статьи подготовлен специально для студентов курса «Android-разработчик. Базовый курс». Также напоминаем о том, что мы продолжаем набор на расширенный курс «Специализация Android-разработчик» Мы находимся на 10-м году разработки Android (Android Q должен быть верс.

На Aliexpress продаеся Huawei Mate 30 Pro с предустановленным приложением Google Play, но это еще не все странности Как известно, смартфоны Huawei Mate 30 и Mate 30 Pro лишены сервисов и приложений Google, однако это не значит, что их нельзя установить. Более того, как пишет источник, на Aliexpress можно купить Mate 30 Pro уже с доступом Google Play. Судя по всему, речь идет о парти.

Как создать загрузочную флешку Windows 10 Эра компакт-дисков успешно завершилась и на замену им пришли USB-накопители. С их помощью можно быстро выполнить переустановку системы. В статье мы покажем вам, как сделать загрузочную флешку Windows 10.

Книга «Микросервисы. Паттерны разработки и рефакторинга» Привет, Хаброжители! Если вам давно кажется, что вся разработка и развертывание в вашей компании донельзя замедлились — переходите на микросервисную архитектуру. Она обеспечивает непрерывную разработку, доставку и развертывание приложений любой сложности. Книга, предназнач.

[Из песочницы] Прощай HTML, привет QML Как можно создать web приложение без использования HTML? Для этого нам понадобится: новый браузер, QML и back-end на Java. Читать дальше →

Adobe анонсировала поддержку Ray Tracing для своих приложений Abode объявила на конференции Adobe MAX, что ряд ее приложений теперь получат поддержку функций, доступных в серии графических процессоров NVIDIA RTX, включая Ray Tracing. C помощью технологии NVIDIA художники смогут сэкономить много времени на таких процессах, как рендерин.

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

Прикручиваем ngx-translate в Angular приложение. Практическое пошаговое руководство Практическая пошаговая инструкция как прикрутить динамическую локализацию (возможность выбора языков) в веб приложении на Angular 4+ используя @ngx-translate/core. В принципе можно найти публикации на подобную тему, может быть достаточно самой документации этой библиотеки, н.

[Перевод] Пишем чистый и масштабируемый JavaScript-код: 12 советов Язык JavaScript родом из раннего веба. Сначала на нём писали простые скрипты, которые «оживляли» страницы сайтов. Теперь же JS превратился в полноценный язык программирования, который можно использовать даже для разработки серверных проектов. Современные веб-приложения силь.

Построение автоматической системы модерации сообщений Автоматические системы модерации внедряются в веб-сервисы и приложения, где необходимо обрабатывать большое количество сообщений пользователей. Такие системы позволяют сократить издержки на ручную модерацию, ускорить её и обрабатывать все сообщения пользователей в real-time.

[Перевод] Хакер, взломавший приложения для слежения за автомобилями по GPS, обнаружил, что может их удалённо останавливать «Я могу создать серьёзные проблемы с дорожным движением по всему миру», — сказал он. Хакер взломал тысячи учётных записей, принадлежащих пользователям двух приложений для слежения по GPS, что дало ему возможность отслеживать местонахождение десятков тысяч машин и даже глуш.

Безграничные технологии XR в эпоху распределённых вычислений Как трансформация Wireless Edge поможет в разработке фотореалистичных мобильных систем расширенной реальности. Читать дальше →

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

[Из песочницы] OBD2 reader — диагностика автомобиля При создании приложения мы столкнулись с множеством выборов, проблем и так далее, с которыми попробуем ознакомить вас в этой статье. Как оказалось с автомобилем можно вести диалог, причем довольно таки продуктивный. Естественно для того чтобы организовать общение с автомобил.

Gemini 2 — безошибочный поиск и удаление дубликатов файлов на Mac Утилита Gemini для компьютеров Mac позволяет освободить место и ускорить работу компьютера за счет удаления продублированных и похожих файлов. Такой «умный» поиск стал возможным благодаря специальному алгоритму, с помощью которого приложение «знает», какие файлы трогать нель.

Huawei случайно открыла исходный код компилятора Huawei Ark раньше релиза Компания Huawei временно открыла для скачивания программу Huawei Ark, позволяющую серьезно ускорить работу приложений для Android и Hongmeng OS

Простой способ освободить память, ускорить смартфон и улучшить автономность Как отключение приложений помогает улучшить работу телефона? Приложения, которые мы устанавливаем на смартфон, могут снизить скорость работы.

Кейсы удачных (и не очень) экспериментов «Яндекс.Навигатора» Продуктовая команда «Яндекс.Навигатора» поделилась, какие проводит эксперименты, как организована работа внутри, как монетизирует продукт и какие подходы использует в предиктивной аналитике. Читать дальше →

[Из песочницы] Web MVC приложение без фреймворков и сервлетов Напишем небольшое веб приложение, без использование Web-фреймворков, внешних библиотек, и сервера приложений. Цель данной статьи показать общую суть происходящего под капотом веб-сервиса, на примере Java. Итак, поехали. Мы не должны использовать сторонние библиотеки, а так.

Мастер Йода рекомендует:  Искусственный интеллект научился выявлять отклонения в развитии детей

Google анонсировал новые инструменты для продвижения приложений При помощи новинок можно найти новых пользователей приложения

[Из песочницы] Применение Go в производственных системах. Валидаторы Добрый день, Хабр! Я довольно часто начинаю утро с просмотра хабра и наконец решил внести свой вклад в данный процесс изучения интересного. Если всё сложится, то это первая моя статься из цикла применения языка GO на производственных системах. Я хочу рассказать некоторые т.

[recovery mode] Промышленный интернет вещей: рассказываем об успешных кейсах В следующем году число подключенных к интернету устройств вырастет до 34 миллиардов, при этом большую часть составят «умные» объекты для бизнеса и промышленности. А к 2021 году инвестиции в развитие только промышленного интернета вещей» (IIoT) достигнут шести триллионов долл.

Slack запустил конструктор приложений Workflow Builder Slack запустил конструктор приложений Workflow Builder, с помощью которого практически любой пользователь сможет создать приложение внутри мессенджера.

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

Один из методов получения профиля рабочей нагрузки и истории ожиданий в PostgreSQL Продолжение статьи «Попытка создать аналог ASH для PostgreSQL «. В статье будет рассмотрено и показано на конкретных запросах и примерах — какую же полезную информацию можно получить с помощью истории представления pg_stat_activity. Предупреждение. В силу довольно большого .

Создано приложение для оформления ДТП В России С сегодняшнего дня у российских водителей появилась возможность оформить мелкие ДТП при помощи приложения “Помощник ОСАГО”. На данный момент мобильное приложение доступно для использования в пяти регионах.

Инженеры «скрутили» свет в оптоволокне — новая технология ускорит передачу данных в сто раз В октябре журнал Nature Communications опубликовал научную работу инженеров из Австралии, в которой описана технология передачи данных с помощью «скрученного в спираль» света. Под катом обсуждаем принципы работы и перспективы решения. Читать дальше →

Роскомнадзор заказал автоматизированную систему контроля за поисковиками и VPN 19 марта 2020 года на сайте госзакупок размещён тендер на разработку «автоматизированной системы контроля выполнения требований статьи 15.8 федерального закона от 27.07.2006 №149-ФЗ „Об информации, информационных технологиях и о защите информации”». Заказ разместило подвед.

Словарь рекламных метрик. CTR, CPI, CPM, CPC, CR Для того, чтобы оценить качество рекламных компаний существует большое количество различных метрик. Все они давольно таки простые для понимания, но чтобы было проще ориентироваться, в данном посте будут описаны основные из них. Разберем один из стандартных процессов попа.

Приложения для iOS должны начать занимать меньше места За прошедшие несколько лет вес мобильных приложений заметно вырос. Однако компания Apple планирует бороться с этим ростом. Специально для решения этой проблемы купертиновцы доработали язык Swift так, чтобы финальное приложение после компиляции занимало на 8-15% меньше, чем с.

Американец с помощью приложения для доставки пиццы вызвал отряд полиции Американец использовал приложение Domino’s Pizza, чтобы создать ложный вызов целого отряда полицейских.

Основоположники теории распределенных систем в объятьях гидры Это Лесли Лэмпорт — автор основополагающих работ в распределённых вычислениях, а ещё вы его можете знать по буквам La в слове LaTeX — «Lamport TeX». Это он впервые, ещё в 1979 году, ввёл понятие последовательной согласованности, а его статья «How to Make a Multiprocessor Com.

[Перевод] Разработка простых современных JavaScript-приложений с использованием Webpack и прогрессивных веб-технологий Думали ли вы о том, чтобы воспользоваться при разработке своего очередного веб-проекта простейшим из существующих набором технологий? Если это так — значит материал, перевод которого мы публикуем сегодня, написан специально для вас. JavaScript-фреймворки существуют для того.

[Из песочницы] Крибле Карбле Gradle: магия автоматической сборки Разработчики облегчают жизнь людям, а Gradle — разработчикам. Если вы пишете на Android, эта статья для вас. Читайте о том, что за зверь этот Gradle (спойлер: он слон), а также — как с ним работать. Gradle — система автоматической сборки, которую используют для упрощения раб.


Визуальный редактор логики для Unity3d. Часть 1 Введение Здравствуйте уважаемые читатели, в сегодняшней статье я хотел бы остановиться на таком феномене в разработке приложений на Unity3d, как визуальная разработка или если бы точнее, разработка с применением визуального представления кода и логики. И, прежде чем продолжи.

Huawei Atlas 900: самый быстрый в мире кластер для обучения ИИ Китайская Huawei продолжает вкладывать большие средства в разработку технологий искусственного интеллекта. Специалисты компании считают, что в ближайшие пять лет статистические вычисления примут массовый характер, а на ИИ-вычисления будет приходиться 80% всей мировой вычисли.

uWSGI в помощь метрикам. Доклад Яндекса На днях состоялся Moscow Python Meetup #66 — сообщество продолжает обсуждать актуальные инструменты, которые усиливают язык и адаптируют его к разным окружениям. В том числе на митапе прозвучал и мой доклад. Меня зовут Наиль, я делаю Яндекс.Коннект. Рассказ, который я по.

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

20 проектов, 20 языков, срок вчера. Часть 3 Заключительная статья об интеграции Serge+Smartcat. В этой статье я расскажу, как мы масштабируем Serge на всю компанию, рассмотрю 4 нестандартных интеграции и, в качестве бонуса, расскажу о 2 фичах которые могут упростить вам жизнь. Предыдущие статьи: 20 проектов, 20 язык.

На ошибках учатся: кейс разработки мобильного приложения от Райффайзенбанка Как работа над ошибками помогла разработчикам мобильного приложения увеличить количество транзакций на 20% и поднять динамику открытия накопительных счетов на 50%.

Транспилятор PAS2JS из Паскаля в JavaScript: несовместимости с Delphi и пути обхода В наше время в кармане обычного человека лежит мощный персональный компьютер, о котором 10-20 лет назад можно было только мечтать. И если у вас километры отлаженного Windows-кода и отлично работающие приложения и утилиты, написанные на Delphi, вы наверняка хотели бы задейств.

В приложении Яндекс.Денег появился «брокер» С помощью приложения Яндекс.Денег пользователи теперь могут самостоятельно инвестировать средства в ценные бумаги и иностранные валюты. В основе нового сервиса — инвестиционная платформа компании «БКС Брокер».

[Перевод] Фотографии из грубых набросков: как именно работает нейросеть NVIDIA GauGAN В прошлом месяце на NVIDIA GTC 2020 компания NVIDIA представила новое приложение, которое превращает нарисованные пользователем простые цветные шарики в великолепные фотореалистичные изображения. Приложение построено на технологии генеративно-состязательных сетей (GAN), в .

Автомасштабирование и управление ресурсами в Kubernetes (обзор и видео доклада) 27 апреля на конференции Стачка-2020, в рамках секции «DevOps», прозвучал доклад «Автомасштабирование и управление ресурсами в Kubernetes». В нём рассказывается о том, как с помощью K8s обеспечить высокую доступность приложений и гарантировать их максимальную производительно.

Сильвестр Сталлоне сыграет Нео в Матрице, или Кино 2.0 Замена лиц актёров с помощью нейросетей работает уже неплохо. Если интересно, вбейте на ютубе запрос «Терминатор с лицом Сталлоне». Надеюсь, по контексту понятно, что вы увидите. Технология замена лиц открытая. Проще говоря, каждый может заморочиться и подменить лицо в любо.

Почти single sign on. Используем системную аутентификацию с сокетами UNIX Для подписчиковВ мире веб-приложений протоколы для SSO широко распространены и легко реализуемы. Ряд популярных приложений, к примеру консольный клиент PostgreSQL (psql), предоставляют такую возможность для локальных подключений через сокеты UNIX. В этой статье мы рассмотрим.

Введение в WebAssembly

Что такое WebAssembly?

WebAssembly ( Wasm ) предоставляет формат бинарных инструкций для виртуальной машины на основе стека. Проще говоря WebAssembly представляет технологию, которая позволяет запускать в браузере низкоуровневый скомпилированный код.

Предтечей появления Wasm была разработка в компании Google Native Client (NaCL) — специального инструмента, который позволял запускать нативный код на C/C++ в веб-браузере. Нативный код компилировался в файлы с расщирением nexe и запускался в песочнице браузера (sandbox), поэтому его выполнение было относительно безопасным. Однако технология была доступна только для приложений и плагинов из Google Chrome Web Store Далее был разработан Portable Native Client (PNaCL) . Если NaCL был платформенно-зависимым, то PNaCL, наоборот, не зависел от архитектуры и был теоретически доступен для всех приложений, а не только из Google Chrome Web Store. PNaCL состоял из двух компонентов: инструментария, который компилировал код C/C++ в модули NaCL, и компонентов выполнения, которые встраивались в браузер и позволяли запускать модули NaCL.

Параллельно Mozilla, начиная с 2013 года, разрабатывала библиотеку asm.js , которая должна была транслировать код C/C++ в JavaScript.

В апреле 2015 международный консорциум по разработке веб-стандарто World Wide Web Consortium (W3C) создает рабочую группу по разработке спецификации по WebAssembly. И в марте 2020 года новый стандарт был принят. Изначально реализация WebAssembly в браузерах во многом базировалась на asm.js, в то время как для переноса скомпилированных модулей использовалась концепция PNaCL. Спецификация по WebAssembly доступна по адресу https://www.w3.org/TR/wasm-core-1/. Кроме того, разнообразную информацию о Wasm можно найти на официальном сайте https://webassembly.org.

При этом важно понимать, что WebAssembly — это не новый язык, это лишь бинарный формат, в который можно компилировать программу на разных языках. Работать с WebAssembly довольно просто. Вначале пишется обычный код, который размещается в текстовом файле. Преимущественно применяются C и C++, но также можно использовать Rust и другие языки. Далее этот код компилируется в бинарный формат в файл с расширением .wasm . Затем специальный код JavaScript загружает скомпилированный модуль на веб-страницу и вызывает функции, которые определены в модуле wasm.

При этом WebAssembly не предназначен для замены JavaScript, а лишь призван дополнить и обогатить возможности данного языка. Более того без JavaScript мы не сможем получить доступ к коду wasm.

Где Wasm может применяться? WebAssembly предназначен прежде всего для таких задач, где важна производительность, например, обработка картинок, аудио и видео, игры, распознование изображений, виртуальная реальность. По ряду задач при переходе от JavaScript к WebAssembly наблюдался прирост в производительности почти в 20 раз.

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

Для работы с Wasm преимущественно используются C, C++ и Rust, однако могут использоваться и другие языки, для которых существует поддержка компиляции в модули Wasm (например, C#, Go). Собственно это еще одно из преимуществ Wasm, поскольку не все программисты могут значть JavaScript, однако теперь можно писать если не весь, то по крайней мере немалую часть кода для клиентской стороны без знания JavaScript.

В то же время WebAssembly не лишен ограничений, которые следует учитывать при проектировании приложений:

Отсутствует сборщик мусора (Garbage Collector). Хотя, возможно, поддержка GC будет добавлена впоследствии.

Через Wasm нельзя взаимодействовать напрямую с DOM, для этого следует использовать JavaScript.

Не поддерживается в ряде браузеров, в основном старых (например, IE 11). Какие браузеры поддерживают Wasm, можно посмотреть на https://caniuse.com/#feat=wasm.

В коде JavaScript мы можем проверить наличие объекта WebAssembly перед выполнением кода на Wasm:

Полезные инстументы для изучения и практики WebAssembly

WebAssembly Studio представляет среду разработки, которая дсотупна онлайн, где можно посоздавать простейшие примеры с помощью языков C и Rust.

WasmFiddle — еще одна фактически онлайн-среда разработки, которая позволяет скомпиллировать код C в Wasm и провести минимальные исследования.

WebAssembly Binary Toolkit предоставляет утилиты командной строки для взаимодействия с кодом wasm, например, поддерживает их трансляцию в исходный код на C. Однако он не поддерживает компиляцию из C/C++ в Wasm.

Emscripten — один из наиболее популярных инструментов для компиляции из C/C++ в wasm.

Google, Mozilla и Microsoft хотят ускорить работу браузеров в 20 раз

Совместно с разработчиками открытого движка WebKit известные компании Mozilla, Microsoft и Google начали активные работы над проектом «WebAssembly». В его рамках планируется создать бинарный формат, который позволит сделать веб-сайты исполняемыми приложениями из бинарного кода. Такой новый стандарт обещает оказать значительное влияние на скорость работы сайтов. Как утверждают сами участники проекта, она увеличится в 20 раз.

Преобразование сайтов в исполняемые приложения – это задача №1 для проекта «WebAssembly». А вот задачей №2 является разработка низкоуровневого исполняемого кода с целью выполнения приложений в браузере. Он сможет заменить популярный сегодня язык JavaScript, ограничения которого разработчики не могли преодолеть уже долгие годы.

Главная идея нового проекта – создание эффективного способа обработки страницы веб-браузером. Благодаря этому станет возможным писать коды сайтов с помощью таких языков программирования, как C/C++, Go, Rust путем его компиляции в исполняемый бинарный файл.

На данный момент программы, созданные на основе JavaScript – это обычные текстовые файлы. При открытии каких-либо веб-страниц они загружаются на ПК с сервера, затем встроенный в браузер JavaScript-движок делает интерпретацию команд. Подобный процесс довольно длительный, поэтому многие разработчики уже не раз задумывались об его оптимизации. К примеру, компания Google занялась проектом «Native Client», Mozilla – «Asm.js». Их цели идентичны: возможность запуска в браузере исполняемого кода. Однако работы над проектами пока не дали должных результатов и многие уверены, что «WebAssembly» принесет успешные плоды гораздо быстрее.

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

К тому же, авторы «WebAssembly» планируют выпуск библиотеки polyfill. Она даст возможность конвертации кода в JavaScript. Таким образом, запускать код можно будет на разных браузерах, даже тех, которые не поддерживают новый стандарт.

Участники проекта утверждают, что их цель – не замена JavaScript, а предоставление возможности компиляции кодов для сайтов, которые написаны на большем количестве языков программирования.

Пока проект «WebAssembly» находится на первой стадии разработки.

[Перевод] Как мы при помощи WebAssembly в 20 раз веб-приложение ускорили

В этой статье рассматривается кейс по ускорению браузерного приложения через замену вычислений JavaScript на WebAssembly.

WebAssembly — что это такое?

Если коротко, то это это бинарный формат инструкций для стековой виртуальной машины. Часто Wasm (сокращенное название) называют языком программирования, но это не так. Формат инструкций исполняется в браузере наряду с JavaScript.

Важно, что WebAssembly можно получить при компиляции исходников на таких языках, как C/C++, Rust, Go. Здесь применяется статистическая типизация и так называемая плоская модель памяти. Код, как сказано выше, хранится в компактном бинарном формате, благодаря чему выполняется почти так же быстро, как если бы приложение было запущено с помощью командной строки. Эти возможности и привели к росту популярности WebAssembly.

Напоминаем: для всех читателей «Хабра» — скидка 10 000 рублей при записи на любой курс Skillbox по промокоду «Хабр».

На данный момент Wasm используется во многих приложениях, от игр вроде Doom 3 до портированных в веб приложений типа Autocad и Figma. Wasm применяется и в такой сфере, как serverless вычисления.

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

Трансформация приложения

В примере будет использоваться браузерный сервис fastq.bio, который предназначен для генетиков. Инструмент позволяет оценить качество секвенирования (расшифровки) ДНК.

Вот пример приложения в работе:

Подробности процесса не стоит приводить, поскольку они довольно сложны для неспециалистов, но если вкратце, то ученые по указанной выше инфографике могут понять, прошел ли процесс секвенирования ДНК гладко и какие возникли проблемы.

У этого сервиса есть альтернативы, десктопные программы. Но fastq.bio позволяет ускорить работу, визуализируя данные. В большинстве других случаев нужно уметь работать с командной строкой, но не у всех генетиков есть нужный опыт.

Работает все просто. На входе — данные, представляемые в виде текстового файла. Этот файл генерируется специализированными инструментами для секвенирования. В файле размещается список последовательностей ДНК и оценка качества для каждого нуклеотида. Формат файла .fastq, поэтому сервис и получил такое название.

Реализация на JavaScript

Первый шаг пользователя при работе с fastq.bio — выбор соответствующего файла. Используя объект File, приложение считывает случайную выборку данных из файла и обрабатывает этот пакет. Задача JavaScript здесь — выполнение несложных строковых операций и подсчет показателей. Один из них — количество нуклеотидов A, C, G и T на разных фрагментах ДНК.

После просчета нужных показателей они визуализируются при помощи Plotly.js, а сервис начинает работать с новой выборкой данных. Разделение на фрагменты сделано для повышения качества UX. Если работать со всеми данными сразу, процесс зависнет на какое-то время, поскольку файлы с результатами секвенирования занимают сотни гигабайтов файлового пространства. Сервис же берет участки данных размером от 0,5 до 1 Мб и работает с ними шаг за шагом, выстраивая графические данные.

Вот как это работает:

В красном прямоугольнике размещается алгоритм строковых преобразований для получения визуализации. Это наиболее нагруженная с точки зрения вычислений часть сервиса. Стоит попробовать заменить ее на Wasm.

Тестируем WebAssembly

Для оценки возможности использования Wasm команда проекта занялась поиском готовых решений для создания QC-метрики (QC — quality control) на основе файлов fastq. Поиск велся среди инструментов, написанных на С, С++ или Rust, чтобы была возможность портировать код на WebAssembly. Кроме того, инструмент не должен быть «сырым», требовался сервис, уже проверенный учеными.

В результате выбор был сделан в пользу seqtk. Приложение довольно популярно, оно open-source, исходный язык — С.

Перед преобразованием в Wasm стоит посмотреть принцип компиляции seqtk для десктопа. Согласно Makefile, вот то, что нужно:

# Compile to binary
$ gcc seqtk.c \
-o seqtk \
-O2 \
-lm \
-lz

В принципе, скомпилировать seqtk можно при помощи Emscripten. Если его нет, обходимся образом Docker.

$ docker pull robertaboukhalil/emsdk:1.38.26
$ docker run -dt –name wasm-seqtk robertaboukhalil/emsdk:1.38.26

При желании собрать его можно и самостоятельно, но на это нужно время.

Внутри контейнера без проблем можно взять emcc в качестве альтернативы gcc:

# Compile to WebAssembly
$ emcc seqtk.c \
-o seqtk.js \
-O2 \
-lm \
-s USE_ZLIB=1 \
-s FORCE_FILESYSTEM=1

Вместо вывода в бинарный файл Emscripten для генерации файлов используется .wasm и .js, который применяется для запуска модуля WebAssemby.
Для поддержки библиотеки zlib используется флаг USE_ZLIB. Библиотека распространена и портирована на WebAssembly, а Emscripten включает ее в проект.
Активируется виртуальная файловая система Emscrippten. Это POSIX-подобная ФС, работающая в оперативной памяти внутри браузера. Когда страница обновляется, память очищается.

Чтобы понять, зачем нужна виртуальная файловая система, стоит сравнить способ запуска seqtk из командной строки со способом запуска скомпилированного модуля WebAssembly.

# On the command line
$ ./seqtk fqchk data.fastq

# In the browser console
> Module.callMain([«fqchk», «data.fastq»])

Получение доступа к виртуальной файловой системе нужно, чтобы не переписывать seqtk под строковый, а не файловый ввод. В этом случае фрагмент данных отображается как файл data.fastq в виртуальной ФС с вызовом на нем main() seqtk.

Вот новая архитектура:


Рисунок демонстрирует, что вместо вычислений в основном потоке браузера используется WebWorkers. Этот способ дает возможность выполнять вычисления в фоновом потоке, не ухудшая отзывчивость браузера. Ну а контроллер WebWorker запускает Worker, управляя его взаимодействием с основным потоком.

Команда seqtk запускается при помощи Worker на примонтированном файле. После завершения выполнения Worker выдает результат в виде Promise. Когда сообщение получено главным потоком, результат используется для обновления графиков. И так в несколько итераций.

Что насчет производительности WebAssembly?

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

При использовании решения «из коробки» прирост производительности составил девять раз.

Это отличный результат, но, как оказалось, есть возможность оптимизировать и его. Дело в том, что большое количество результатов QC-анализа не используется seqtk, поэтому их можно удалить. Если это сделать, результат по сравнению с JS улучшается в 13 раз.

Достичь его удалось простым комментированием команд printf().

Но и это не все. Дело в том, что на этом этапе fastq.bio получает результаты анализа с вызовом разных функций С. Любая из них вычисляет свой набор характеристик, так что каждый фрагмент файла читался по два раза.

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

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

В качестве вывода можно сказать, что Wasm действительно дает возможность улучшить производительность приложения, но использовать его нужно с умом.

Google, Apple и Mozilla придумали, как ускорить браузеры в 20 раз

Ведущие разработчики браузеров, включая Google, Apple, Microsoft и Mozilla решили создать новый веб-стандарт, который позволит писать код сайтов на C/C++ и других языках и компилировать их в бинарный исполняемый файл сайта. Нововведение позволит в десятки раз увеличить скорость загрузки страниц.

WebAssembly — это унифицированный двоичный компилятор. Его задача заключается в том, чтобы встроенный в браузер движок JavaScript мог исполнять код, скомпилированный из разных языков программирования, таких как C/C++.

У бинарного формата есть несколько важных преимуществ. Во-первых, он обеспечивает более сильное сжатие JavaScript-файлов, что приведет к скачиванию меньшего объема данных из Интернета. Во-вторых, JavaScript-движок в браузерах декодирует двоичный код в десятки раз быстрее, что скажется на повышении скорости загрузки сайтов, особенно на мобильных устройствах. Прототип WebAssembly уже обрабатывает код до 23-х раз быстрее, чем код asm.js.

Ранее разработчикам приходилось обходить ограничения для комплиляции кода в JavaScript. Каждая крупная компания пыталась решить проблему по-своему. Microsoft, например, создала язык TypeScript, расширяющий функции JavaScript, Mozilla — подмножество asm.js, Google — Native Client. Новый формат призван объединить достоинства этих разработок и сделать так, чтобы для веба могло быть скомпилировано больше языков.

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

На начальном этапе разработчики планируют выпустить библиотеку для трансляции WebAssemlby-кода в JavaScript, чтобы его можно было запускать в любом браузере. Позднее будет выпущено больше инструментов (компиляторов, отладчиков и т.п.) и добавлена поддержка новых языков (Rust, Go, C# и др.).

По мнению создателя JavaScript Брендена Айка (Brendan Eich) — который недолго пробыл генеральным директором Mozilla — после того как все основные браузеры получат поддержку WebAssembly, между WebAssembly и JavaScript произойдет раскол. Однако авторы стандарта подчеркивают, что задача нового стандарта — не заменить JavaScript, а лишь предоставить возможность компиляции кода для веб-сайтов, написанном на большем количестве языках.

Как мы при помощи™ WebAssembly в 20 раз веб-приложение ускорили

В этой статье™ рассматривается кейс по ускорению браузерного приложения через замену™ вычислений JavaScript на WebAssembly.

WebAssembly — что это такое?

Если коротко, то это это бинарный формат™ инструкций для стековой виртуальной машины™. Часто Wasm (сокращенное название) называют языком™ программирования, но это не так. Формат™ инструкций исполняется в браузере наряду™ с JavaScript.

Важно, что WebAssembly можно получить при компиляции исходников на таких языках™, как C/C++, Rust, Go. Здесь применяется статическая типизация и так называемая плоская модель™ памяти™. Код, как сказано выше, хранится в компактном бинарном формате, благодаря чему выполняется почти так же быстро™, как если бы приложение было запущено с помощью командной строки™. Эти возможности и привели к росту популярности WebAssembly.

Напоминаем: для всех читателей «Хабра» — скидка™ 10 000 рублей™ при записи™ на любой курс Skillbox по промокоду «Хабр».

На данный™ момент™ Wasm используется во многих™ приложениях, от игр вроде Doom 3 до портированных в веб приложений типа Autocad и Figma. Wasm применяется и в такой сфере, как serverless вычисления.

В этой статье™ приведен пример™ использования Wasm для ускорения аналитического веб-сервиса. Для наглядности мы взяли работающее приложение, написанное на С, которое скомпилируется в WebAssembly. Результат будет использован для замены™ малопроизводительных участков JS.

Трансформация приложения

В примере будет использоваться браузерный сервис™ fastq.bio, который предназначен для генетиков. Инструмент позволяет оценить качество секвенирования (расшифровки) ДНК.

Вот пример™ приложения в работе™:

Подробности процесса не стоит приводить, поскольку они довольно сложны™ для неспециалистов, но если вкратце, то ученые™ по указанной выше инфографике могут понять™, прошел™ ли процесс секвенирования ДНК гладко™ и какие возникли проблемы.

У этого сервиса есть альтернативы, десктопные программы. Но fastq.bio позволяет ускорить работу™, визуализируя данные™. В большинстве других™ случаев нужно уметь работать с командной строкой, но не у всех генетиков есть нужный™ опыт.

Работает все просто™. На входе — данные™, представляемые в виде текстового файла. Этот файл генерируется специализированными инструментами для секвенирования. В файле размещается список™ последовательностей ДНК и оценка™ качества для каждого нуклеотида. Формат™ файла .fastq, поэтому сервис™ и получил такое название.

Реализация на JavaScript

Первый™ шаг пользователя при работе™ с fastq.bio — выбор соответствующего файла. Используя объект™ File, приложение считывает случайную выборку данных™ из файла и обрабатывает этот пакет. Задача™ JavaScript здесь — выполнение несложных строковых операций и подсчет показателей. Один из них — количество нуклеотидов A, C, G и T на разных™ фрагментах ДНК.

После просчета нужных™ показателей они визуализируются при помощи™ Plotly™.js, а сервис™ начинает работать с новой выборкой данных™. Разделение на фрагменты сделано для повышения качества UX. Если работать со всеми данными сразу, процесс зависнет на какое-то время, поскольку файлы с результатами секвенирования занимают сотни гигабайтов файлового пространства. Сервис™ же берет участки данных™ размером от 0,5 до 1 Мб и работает с ними шаг за шагом, выстраивая графические данные™.

Вот как это работает:

В красном прямоугольнике размещается алгоритм строковых преобразований для получения визуализации. Это наиболее нагруженная с точки зрения™ вычислений часть сервиса. Стоит попробовать заменить ее на Wasm.

Тестируем WebAssembly

Для оценки™ возможности использования Wasm команда проекта занялась поиском готовых решений для создания QC-метрики (QC — quality control) на основе™ файлов™ fastq. Поиск велся среди инструментов, написанных на С, С++ или Rust, чтобы была возможность портировать код на WebAssembly. Кроме того, инструмент не должен™ быть «сырым», требовался сервис™, уже проверенный учеными.

В результате выбор был сделан™ в пользу™ seqtk. Приложение довольно популярно, оно open-source™, исходный язык — С.

Перед преобразованием в Wasm стоит посмотреть принцип компиляции seqtk для десктопа. Согласно Makefile, вот то, что нужно:

В принципе, скомпилировать seqtk можно при помощи™ Emscripten. Если его нет, обходимся образом Docker™.

Внутри™ контейнера без проблем можно взять emcc в качестве альтернативы gcc:

Вместо™ вывода™ в бинарный файл Emscripten для генерации файлов™ используется .wasm и .js, который применяется для запуска модуля™ WebAssemby.

Для поддержки библиотеки zlib используется флаг USE_ZLIB. Библиотека распространена и портирована на WebAssembly, а Emscripten включает ее в проект™.

Активируется виртуальная файловая система Emscrippten. Это POSIX-подобная ФС, работающая в оперативной памяти™ внутри™ браузера. Когда страница обновляется, память™ очищается.

Чтобы понять™, зачем нужна виртуальная файловая система, стоит сравнить способ™ запуска seqtk из командной строки™ со способом запуска скомпилированного модуля™ WebAssembly.

Получение доступа к виртуальной файловой системе нужно, чтобы не переписывать seqtk под строковый, а не файловый ввод. В этом случае™ фрагмент данных™ отображается как файл data.fastq в виртуальной ФС с вызовом на нем main() seqtk.

Вот новая архитектура:

Рисунок демонстрирует, что вместо™ вычислений в основном потоке™ браузера используется WebWorkers. Этот способ™ дает возможность выполнять вычисления в фоновом потоке™, не ухудшая отзывчивость браузера. Ну а контроллер WebWorker запускает Worker™, управляя его взаимодействием с основным потоком.

Команда seqtk запускается при помощи™ Worker™ на примонтированном файле. После завершения выполнения Worker™ выдает™ результат в виде Promise. Когда сообщение получено главным потоком, результат используется для обновления графиков. И так в несколько итераций.

Что насчет™ производительности WebAssembly?

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

При использовании решения «из коробки» прирост производительности составил девять™ раз.

Это отличный результат, но, как оказалось, есть возможность оптимизировать и его. Дело в том, что большое количество результатов QC-анализа не используется seqtk, поэтому их можно удалить. Если это сделать, результат по сравнению с JS улучшается в 13 раз.

Достичь его удалось простым комментированием команд™ printf™().

Но и это не все. Дело в том, что на этом этапе fastq.bio получает результаты анализа с вызовом разных™ функций С. Любая из них вычисляет свой набор характеристик, так что каждый™ фрагмент файла читался по два раза.

Для того, чтобы обойти™ это проблему, было решено™ совместить две функции в одну. В результате производительность увеличилась в 20 раз.

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

В качестве вывода™ можно сказать, что Wasm действительно дает возможность улучшить производительность приложения, но использовать его нужно с умом.

MaxGraey / Wasm-FAQ-2020.md

Данный FAQ был специально создан для телеграм сообщества https://t.me/WebAssembly_ru.

Он базируется на статье от Andre Weissflog, но так же содержит множество моих дополнений и мыслей, которые могут быть уже не слишком актуальны на момент прочтения. Прошу это учитывать.

0. Какие цели у WebAssembly?

  • Определение переносимого двоичного формата с эффективным размером и временем загрузки, который будет служить целью компиляции и выполняться с предсказуемой скоростью и детерменированным поведением в рамках среды выполнения;
  • Позволить портирование и исполнение в web уже имеющегося кода отличного от JavaScript;
  • При всем этом не нарушая целостности уже существующей веб-экосистемы.

1. WebAssembly это нативный код CPU?

Нет! WebAssembly — это цель компиляции и промежуточный формат, который скорее похож на байткод в .NET, LLVM IR или Java, нежели нативный машинный код. Если вам не нравится ассоциации с .NET или Java-байткодом, то по-другому это можно представить себе как некий портативный набор инструкций для виртуального процессора (ISA).

2. WebAssembly это ассемблерный код?

Нет! «ассемблерный код» обычно означает текстовое представление определенного набора команд центрального процессора. WebAssembly в своей типичной форме не является ни текстовым представлением, ни специфичным для процессора бинарным представлением, хотя спецификация WASM определяет и текстовое представление имеющие одно из расширений: .wat или .wast . Безусловно вы можете писать код используя wat синтаксис и собирать его в бинарный модуль с помощью wat2wasm, но это стоит делать лишь в академических целях или для изучения новых возможностей, недоступных пока в компиляторах высокого уровня. В действительности, WebAssembly — это цель компиляции, так же как и нативный код для x86 или ARM.

3. WebAssembly это очередной «Java Applets»/ActiveX/Flash/Silverlight?

Нет! WebAssembly отличается от Java-апплетов тем, что он использует существующие части виртуальной машины JavaScript и ее среду изоляции (sandbox), вместо добавления другой громоздкой виртуальной машины посредством плагинов или расширений и тем самым снижая надежность и безопасность системы в целом. WebAssembly также не позволяет вызывать нативный код или системные вызовы напрямую, минуя слои безопасности самого браузера или другой виртуальной машины, как это делали Flash или Java-апплеты (через JNI).

Плагины ActiveX были встроенными библиотеками нативного кода, в которых безопасность строилась на доверии к третьей стороне. Для WebAssembly доверие возлагается исключительно на производителя самого браузера и только на него.


Кроме того, большинство этих плагинов имели свои виртуальные машины, которые создавались для конкретных языков. Например, Java Applets — для Java, Flash — для ActionScript, Silverlight — для C#. WebAssembly же — это унивирсальная виртуальная машина c открытым стандартом, готовая принять в свои объятия любой язык, будь то Haskell, PHP или TypeScript.

4. WebAssembly это угроза для безопасности? Надо ли опасаться вирусов?

Нет! Если только вы не считаете JavaScript угрозой безопасности для браузера =) WebAssembly примерно так же безопасен, как и JavaScript, поскольку он работает в той же песочнице. Типичные реализации WebAssembly только добавляют довольно небольшой модуль синтаксического анализа и загрузчика к существующему JavaScript движку. Например, в WebKit, WebAssembly, составляет всего около 10 тыс строк из 432 тыс строк кода для всего движка JavaScriptCore. Таким образом, всего лишь

2% от всего JavaScript-движка — это новая поверхность атаки, специфичная для WebAssembly. Кроме того, WebAssembly не позволяет напрямую обращаться к Web API или любому другому внешнему интерфейсу системы без явного импорта внутри WebAssembly сборки и некоторого «склеивающего кода» со стороны хоста.

5. Могу ли я вызывать tcp-сокеты/операции ввода-вывода/DOM/WebGL и другие API браузера или ОС из под WebAssembly напрямую?

Нет! WebAssembly работает внутри изолированной программной среды браузера или другой VM и может получать доступ только к веб-API (так же, как и в JavaScript). Однако emscripten SDK (C++) и web-sys (Rust) предоставляют обертки для многих распространенных API, что упрощает перенос существующего кода C / C++ / Rust (например, конвертировать TcpSockets-в-WebSockets, OpenGL-в-WebGL, OpenAL-в-WebAudio и т.д.). В дальнейшем, когда будет реализован interface-types (webidl-bindings) proposal всеми браузерами, всего вышеперечисленного не потребуется, и можно будет обращаться непосредственно к Web API или любому другому интерфейсу (в случае со standalone VM) непосредственно через WebIDL а так же WASI интерфейс.

6. Могу ли я загрузить или создать нативную DLL-библиотеку в WebAssembly?

Нет! Динамические библиотеки, которые используются в операционной системе являются машинным кодом и, следовательно, не будут работать (без эмуляции соответсвуюшего процессора). Стоит так же заметить, что Blazor, может действительно загружать файлы с расширением .dll в браузере, но это CIL-библиотеки Mono-рантайма которые выполняются в режиме интерпретации.

В то же время WebAssembly будет поддерживать динамическую линковку между Wasm-модулями, что позволит повторно использовать модули совместно используемого кода (идея состоит в том, чтобы уменьшить размер загрузки, перемещая общий код в отдельный модуль, который может быть впоследствии закэширован).

7. Могу ли я запустить программу или отдельный процесс из WebAssembly?

Нет! По той же причине, почему нельзя загружать DLL.

8. Можно ли использовать WebAssembly для обхода блокировщиков рекламы?

Нет! WebAssembly может делать только то, что и JavaScript. Даже если реклама не загружает изображения, а отображает ее контент «процедурно» с помощью кода WebAssembly, сам WebAssembly-модуль должен быть сперва загружен с какого-либо адреса (обычно это сервер рекламной сети), и это может быть перехвачено и заблокировано Ad-блокерами.

…но я ведь не могу посмотреть исходный код?!

Это уже стало давно проблематично даже для JavaScript, с тех пор как все начали использовать минификаторы и обфускаторы. Тем не менее, большинство браузеров сейчас умеют отображать wasm-модули в текстовом представлении, что порой куда более понятней, чем минифицированный и обфусцированный JavaScript-код. Кроме того, браузеры и инструменты сборки давно уже поддерживают source maps для WebAssembly.

9. WebAssembly это раздолье для криптомайнеров? Могу ли я запретить WebAssembly в своем браузере?

Нет! Вы не сможете запретить исполняться WebAssembly если только не запретите исполнение самого JavaScript в браузере.

Насчет майнеров. Первые криптовалютные майнеры в браузере появились еще в 2012 году, задолго до WebAssembly или asm.js и использовали новую тогда технолугию WebGL 1.0 (точнее GLSL язык) и конечно же JavaScript. После этого были майнеры использующие asm.js и некоторые из них используют его до сих пор, если ваш браузер не поддерживает WebAssembly. Стало быть WebAssembly ни в коей мере не является главным инициатором активности браузерных майнеров. На данный момент производители браузеров стремяться мониторить активность скриптов и автоматически блокировать такие майнеры, но пока не слишком успешно. Также в этом немного помогают блокировщики рекламы.

10. Я простой frontend-разработчик, выходит мне теперь необходимо изучать C++ или Rust?

Нет! Одно из важных преимуществ WebAssembly — это создание сборок, которые можно вызывать из JavaScript. Исполняющий код (например, манипуляции с изображениями, игры, физические и графические движки, криптография и т.д.) может быть реализован в виде модулей WebAssembly, но при этом вызываться из-под JavaScript. Использование такого WebAssembly-модуля не будет сильно отличаться от использования обычной JavaScript-библиотеки, вы зачастую даже не будете об этом подозревать.

Так что написание тех частей приложения, которые впоследствии будут компилироваться в wasm-модуль можно поручить системным разработчикам, уже знакомыми с одним из таких языков. Кроме того, активно развивается TypeScript-подобный язык AssemblyScript способный производить WebAssembly-модуль и с которым большинство JavaScript/TypeScript разработчиков будут себя чувствовать в комфортной и знакомой среде.

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

11. Может ли WebAssembly манипулировать DOM?

Мы уже частично затронули этот вопрос. И здесь мы имеем неоднозначный ответ — и да, и нет. WebAssembly не может получить прямой доступ к DOM, но может вызывать вспомогательный код на JavaScript, и этот код уже может предоставлять доступ к DOM. В emscripten это так же просто, как прямое встраивание кода JavaScript в код C++. Но такое взаимодействие между WebAssembly и JavaScript налагает дополнительные расходы. В последнее время браузеры стремятся сократить время этого взаимодействия, но если для простых типов это осуществимо, то ссылочные типы по-прежнему требуют структурное клонирование и дополнительные затраты на сериализацию и десереализацию в случае со структурами или объектами.

Может возникнуть очень заманчивая идея создать свою реактивную библиотеку работы с DOM (или реализовать лишь diff-алгоритм для Virtual DOM) например для Rust, С++ или Go. Не делайте этого! По крайней мере пока. Как показывает опыт таких экспериментальных библиотек как yew и asm-dom это зачастую медленее даже самых медлительных JavaScript-библиотек или фреймворков, не говоря уже о непосредственной работе с vanilla DOM без дополнительных абстракций.

12. WebAssembly бесполезен для языков требующих Сборщик Мусора (GC)?

И да, и нет. Текущая MVP версия WebAssembly не предпологает встроенный сборщик мусора, тем самым ограничивая языки с наличием таковых, но это не мешает таким языкам как C#, Go, Java или Kotlin включать их в сборку вместе с остальным рантаймом, что они и делают. Безусловно это увеличивает размер wasm-модуля в сравнении с Rust или C++, которые не требуют GC. Кроме того существует предложение для расширения MVP включающее Сборщик Мусора и над которым сейчас активно работают основные производители браузеров.

13. WebAssembly существенно ускоряет код по сравнению с аналогичным, но на JavaScript?

И да, и нет. Это зависит от нескольких факторов:

  • от выбора языка/компилятора и его настроек;
  • от текущих задач, которые вы стремитесь решить. Как мы уже выяснили манипуляции с DOM у WebAssembly явно не будут быстрее. Зато игры, криптография, эмуляторы, CAD-системы, DSP, кодирование/декодирование мультимедиа определенно да! Особенно если учесть, что в будущем WebAssembly будет поддерживать SIMD-комманды недоступные для JavaScript и уже поддерживает (но только для Chrome под флагом) атомарные инструкции и потоки, работающие с разделяемой памятью SharedArrayBuffer;
  • от того, как часто вы вызываете методы хоста (Web API) из под WebAssembly или экспортируемые методы wasm на стороне хоста;
  • и наконец, от скорости оптимизирующих JIT-компиляторов самих виртуальных машин.

14. Что такое WASI?

Префикс «Web» в названии WebAssembly может навести на мысль, что эта технология создавалась исключительно для веба, но это не так. На данный момент уже существует огромное множество standalone рантаймов для WebAssembly способные исполнять wasm не в самом браузере а непосредственно в ОС или в нативном приложении.

WASI (WebAssembly System Interface) — это проект ABI от Mozilla, который определяет стандартизированный интерфейс взаимодействия ОС с wasm-модулем (такой себе POSIX только для wasm). WASI дает возможность получить доступ к таким функциям как файловая система, сетевые сокеты, таймеры и генераторы случайных чисел. Развитие ABI предполагает независимость от браузера, JavaScript и WebAPI. При этом проект обеспечивает надлежащий уровень изоляции от основной системы и позволяет определять полномочия приложения в стиле CloudABI и Capsicum. Файлы, каталоги, сокеты и другие ресурсы ассоциируются со специальным типом файловых дескрипторов, а для взаимодействия с каждым из ресурсов приложения должен иметь полномочия. Последние обрабатываются иерархически, то есть доступ к каталогу автоматически открывает и доступ ко всем файлам в нем. Кроме того существует polyfill WASI для браузеров и готовиться для node.js. Все это дает возможность писать модули с единым интерефейсом как для десктопных так и для браузерных приложений. Стоит также отметить, что на данном этапе это довольно базовая спецификация, не описывающая пока криптографию, API для работы с GPU, асинхронный I/O, TLS и т.д. кроме работы с процессами, так что IPC и fork не планируются.

15. WebAssembly это конец гегемонии и смерть JavaScript?

Нет! Определенно нет! При всех очевидных преимуществах WebAssembly будет слишком смело ожидать, что то огромное колличество библиотек, фреймворков и инструментов уже созданных для JavaScript экосистемы вдруг начнет переписываться на Rust, C++ или любой другой поддерживающий wasm язык, а огромная армия frontend-разработчиков незамедлительно ринется осваивать системное програмирование и соответствующие ему языки, особенно, если учесть, что в этой области порог вхождения несопостовимо выше чем у JavaScript. Кроме того, как мы уже выяснили далеко не для всех задач WebAssembly целесообразен. Языку Cи уже почти 50 лет и за это время возникло довольно много его надмножеств и прямых конкурентов, которые должны были покончить с ним, но как мы видим этого не произошло и он до сих пор остается в десятке наиболее часто используемых языков.

Еще одна важная особенность JavaScript состоит в том, что это интерпретируемый динамичный язык, поддерживающий очень многие функции полностью или частично недоступные языкам с AOT-компиляцией. Например, в игровой индустрии по-прежнему очень популярны Lua, JS, Python которые используются для описания скриптовых сцен да и игровой механики в целом.

Кроме того, JavaScript давно вышел за пределы браузера и используется для бэкенда (node.js, deno), мобильной разработки (ReactNative, NativeScript, Cordova) и даже для программирования логики встраиваемых (IoT) устройств.

Будем надеяться и WebAssembly постигнет такой же успех!

[Перевод] Как мы при помощи WebAssembly в 20 раз веб-приложение ускорили

В этой статье рассматривается кейс по ускорению браузерного приложения через замену вычислений JavaScript на WebAssembly.

WebAssembly — что это такое?

Если коротко, то это это бинарный формат инструкций для стековой виртуальной машины. Часто Wasm (сокращенное название) называют языком программирования, но это не так. Формат инструкций исполняется в браузере наряду с JavaScript.

Важно, что WebAssembly можно получить при компиляции исходников на таких языках, как C/C++, Rust, Go. Здесь применяется статистическая типизация и так называемая плоская модель памяти. Код, как сказано выше, хранится в компактном бинарном формате, благодаря чему выполняется почти так же быстро, как если бы приложение было запущено с помощью командной строки. Эти возможности и привели к росту популярности WebAssembly.

Напоминаем: для всех читателей «Хабра» — скидка 10 000 рублей при записи на любой курс Skillbox по промокоду «Хабр».

На данный момент Wasm используется во многих приложениях, от игр вроде Doom 3 до портированных в веб приложений типа Autocad и Figma. Wasm применяется и в такой сфере, как serverless вычисления.

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

Трансформация приложения

В примере будет использоваться браузерный сервис fastq.bio, который предназначен для генетиков. Инструмент позволяет оценить качество секвенирования (расшифровки) ДНК.

Вот пример приложения в работе:

Подробности процесса не стоит приводить, поскольку они довольно сложны для неспециалистов, но если вкратце, то ученые по указанной выше инфографике могут понять, прошел ли процесс секвенирования ДНК гладко и какие возникли проблемы.

У этого сервиса есть альтернативы, десктопные программы. Но fastq.bio позволяет ускорить работу, визуализируя данные. В большинстве других случаев нужно уметь работать с командной строкой, но не у всех генетиков есть нужный опыт.

Работает все просто. На входе — данные, представляемые в виде текстового файла. Этот файл генерируется специализированными инструментами для секвенирования. В файле размещается список последовательностей ДНК и оценка качества для каждого нуклеотида. Формат файла .fastq, поэтому сервис и получил такое название.

Реализация на JavaScript

Первый шаг пользователя при работе с fastq.bio — выбор соответствующего файла. Используя объект File, приложение считывает случайную выборку данных из файла и обрабатывает этот пакет. Задача JavaScript здесь — выполнение несложных строковых операций и подсчет показателей. Один из них — количество нуклеотидов A, C, G и T на разных фрагментах ДНК.

После просчета нужных показателей они визуализируются при помощи Plotly.js, а сервис начинает работать с новой выборкой данных. Разделение на фрагменты сделано для повышения качества UX. Если работать со всеми данными сразу, процесс зависнет на какое-то время, поскольку файлы с результатами секвенирования занимают сотни гигабайтов файлового пространства. Сервис же берет участки данных размером от 0,5 до 1 Мб и работает с ними шаг за шагом, выстраивая графические данные.

Вот как это работает:

В красном прямоугольнике размещается алгоритм строковых преобразований для получения визуализации. Это наиболее нагруженная с точки зрения вычислений часть сервиса. Стоит попробовать заменить ее на Wasm.

Тестируем WebAssembly

Для оценки возможности использования Wasm команда проекта занялась поиском готовых решений для создания QC-метрики (QC — quality control) на основе файлов fastq. Поиск велся среди инструментов, написанных на С, С++ или Rust, чтобы была возможность портировать код на WebAssembly. Кроме того, инструмент не должен быть «сырым», требовался сервис, уже проверенный учеными.

В результате выбор был сделан в пользу seqtk. Приложение довольно популярно, оно open-source, исходный язык — С.

Перед преобразованием в Wasm стоит посмотреть принцип компиляции seqtk для десктопа. Согласно Makefile, вот то, что нужно:

# Compile to binary
$ gcc seqtk.c \
-o seqtk \
-O2 \
-lm \
-lz

В принципе, скомпилировать seqtk можно при помощи Emscripten. Если его нет, обходимся образом Docker.

$ docker pull robertaboukhalil/emsdk:1.38.26
$ docker run -dt –name wasm-seqtk robertaboukhalil/emsdk:1.38.26

При желании собрать его можно и самостоятельно, но на это нужно время.

Внутри контейнера без проблем можно взять emcc в качестве альтернативы gcc:

# Compile to WebAssembly
$ emcc seqtk.c \
-o seqtk.js \
-O2 \
-lm \
-s USE_ZLIB=1 \
-s FORCE_FILESYSTEM=1

Вместо вывода в бинарный файл Emscripten для генерации файлов используется .wasm и .js, который применяется для запуска модуля WebAssemby.
Для поддержки библиотеки zlib используется флаг USE_ZLIB. Библиотека распространена и портирована на WebAssembly, а Emscripten включает ее в проект.
Активируется виртуальная файловая система Emscrippten. Это POSIX-подобная ФС, работающая в оперативной памяти внутри браузера. Когда страница обновляется, память очищается.

Чтобы понять, зачем нужна виртуальная файловая система, стоит сравнить способ запуска seqtk из командной строки со способом запуска скомпилированного модуля WebAssembly.

# On the command line
$ ./seqtk fqchk data.fastq

# In the browser console
> Module.callMain([«fqchk», «data.fastq»])

Получение доступа к виртуальной файловой системе нужно, чтобы не переписывать seqtk под строковый, а не файловый ввод. В этом случае фрагмент данных отображается как файл data.fastq в виртуальной ФС с вызовом на нем main() seqtk.

Вот новая архитектура:

Рисунок демонстрирует, что вместо вычислений в основном потоке браузера используется WebWorkers. Этот способ дает возможность выполнять вычисления в фоновом потоке, не ухудшая отзывчивость браузера. Ну а контроллер WebWorker запускает Worker, управляя его взаимодействием с основным потоком.

Команда seqtk запускается при помощи Worker на примонтированном файле. После завершения выполнения Worker выдает результат в виде Promise. Когда сообщение получено главным потоком, результат используется для обновления графиков. И так в несколько итераций.

Что насчет производительности WebAssembly?

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

При использовании решения «из коробки» прирост производительности составил девять раз.

Это отличный результат, но, как оказалось, есть возможность оптимизировать и его. Дело в том, что большое количество результатов QC-анализа не используется seqtk, поэтому их можно удалить. Если это сделать, результат по сравнению с JS улучшается в 13 раз.

Достичь его удалось простым комментированием команд printf().

Но и это не все. Дело в том, что на этом этапе fastq.bio получает результаты анализа с вызовом разных функций С. Любая из них вычисляет свой набор характеристик, так что каждый фрагмент файла читался по два раза.

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

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

В качестве вывода можно сказать, что Wasm действительно дает возможность улучшить производительность приложения, но использовать его нужно с умом.

Добавить комментарий