Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Оптимизируем производительность: JavaScript (V8) vs AssemblyScript (WebAssembly)

Блог компании МаклаудJavaScriptCRustWebAssembly
Перевод


Чтобы повысить производительность web-приложений, используйте WebAssembly в связке с AssemblyScript, чтобы переписать критически важные для производительности компоненты web-приложения, написанные на JavaScript. «И это действительно поможет?», — спросите вы.

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

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

Кто я такой и почему занимаюсь этой темой? 


(Данный раздел можете пропустить, это несущественно для понимания дальнейшего материала).

Мне по-настоящему нравится язык AssemblyScript. Я даже в какой-то момент начал помогать разработчикам финансово. У них небольшая команда, в которой каждый серьёзно увлечён этим проектом. AssemblyScript — очень молодой язык, похожий на TypeScript и способный компилироваться в WebAssembly (Wasm). Именно в этом и заключается одно из его преимуществ. Раньше, чтобы использовать Wasm, web-разработчик должен был учить чуждые ему языки типа С, C++, C#, Go или Rust, так как в WebAssembly изначально могли компилироваться именно такие высокоуровневые языки со статической типизацией. 

Хотя AssemblyScript (ASC) и похож на TypeScript (TS), он не связан с этим языком и не  компилируется в JS. Схожесть в синтаксисе и семантике нужна, чтобы облегчить процесс «портирования» с TS на ASC. Такое портирование в основном сводится к добавлению аннотаций типов.
Читать дальше →
Всего голосов 23: ↑22 и ↓1+21
Просмотры4.1K
Комментарии 0

Первое поколение компьютеров: от Древнего Рима до Второй Мировой

Блог компании МаклаудИстория ITСтарое железо


Лень — двигатель прогресса. Стремление человечества хотя бы частично автоматизировать свою деятельность всегда выливалось в различные изобретения. Математические вычисления и подсчеты также не избежали научного прогресса. Ещё в Древнем Риме местные «таксисты» использовали аналог современного таксометра — механическое устройство, которое определяло стоимость поездки в зависимости от длины маршрута. Время шло, и к середине прошлого века эволюция вычислительных систем привела к появлению нового типа устройств — компьютеров. Тогда, конечно, их так никто не называл. Для этого использовался другой термин — ЭВМ (электронно-вычислительная машина). Но время и прогресс стерли границы между этими определениями. Так как же прогресс дошел до первых ЭВМ и как они работали?

История развития


Арифмометр


Одно из главных событий в истории развития вычислительных систем является изобретение арифмометра. Арифмометр — это механическая вычислительная машина, предназначенная для выполнения алгебраических операций. Первая схема такого устройства датируется 1500 годом за авторством Леонардо да Винчи. Вокруг его схемы в 60-х годах 20 века возникло много споров. Доктор Роберто Гуателли, работавший в IBM с 1951 года по проекту воссоздания машин Леонардо да Винчи, в 1968 году создал копию счетной машины по эскизам 16-го века.
Читать дальше →
Всего голосов 29: ↑28 и ↓1+27
Просмотры5.8K
Комментарии 4

Ахиллесова пята коронавируса

Блог компании МаклаудНаучно-популярноеБиотехнологииЗдоровье
Перевод
Вирус SARS-​CoV-2 критически зависит от особого механизма, обеспечивающего синтез его белков. Коллаборация под руководством исследовательской группы из Высшей Технической Школы Цюриха (ETH Zurich) докопалась до молекулярного устройства этого процесса и показала, что его можно ингибировать специальными химическими соединениями, тем самым существенно подавляя репликацию вируса в инфицированных клетках. 


Видео: Said Sannuga, Cellscape.co.uk / ETH Zurich, The Ban Lab 

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

Когда клетка здорова, рибосома движется вдоль РНК в строго размеренном темпе, считывая три нуклеотида РНК за шаг. Такой трехбуквенный код определяет соответствующую аминокислоту, которая прикрепляется к наращиваемому белку. Почти не случается такого, чтобы рибосома сдвинула один или два нуклеотида РНК вперед или назад, отступив от этого правильного трехчастного паттерна. Если такой сдвиг в рибосоме (его называют «сдвиг рамки считывания») все-таки происходит, то он приводит к ошибкам в считывании генетического кода.
Читать дальше →
Всего голосов 46: ↑43 и ↓3+40
Просмотры11K
Комментарии 8

Привет, Telnet! И пока. Команда OpenSSL s_client для зашифрованных соединений

Блог компании МаклаудИнформационная безопасностьСерверное администрирование
Перевод

Изображение:  JanBaby, via Pixabay CC0

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

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

Казалось бы, утилиту можно легко использовать, как продвинутую версию ping. Сама по себе, команда ping в лучшем случае всего лишь проверяет доступность хоста (иногда эту команду вообще не получится использовать, например, из-за ограничений политики доступа). А вот команда telnet не только проверяет, открыт ли порт, но и может взаимодействовать с сетевыми службами через этот порт. Но со временем мы всё чаще будет сталкиваться с необходимостью использовать зашифрованное соединение, где telnet вновь окажется бессилен.
Читать дальше →
Всего голосов 24: ↑21 и ↓3+18
Просмотры4.6K
Комментарии 3

Игра в Нострадамуса

Блог компании МаклаудСтатистика в ITНаучно-популярное

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

Читать дальше →
Всего голосов 30: ↑28 и ↓2+26
Просмотры10K
Комментарии 10

Языки «Властелина колец»: как язык создал целую вселенную

Блог компании МаклаудЧитальный зал


Рождение Средиземья


21 сентября 1937 года в Англии вышла небольшая книжка, озаглавленная просто – «Хоббит», автором числился мало известный за пределами научного мира Дж. Р. Р. Толкин. Читатели приняли текст хорошо, но никто не понял, чем все это грозит миру.

Толкиновский бум грянул через два с лишним десятилетия.

Эпопея «Властелин колец» вышла в 1954/55-м, американское издание, после которого началось безумие с лозунгами «Гендальфа в президенты», появилось еще через шесть лет. Потом книгу и автора узнали во всех концах мира, помимо ученого-лингвиста он стал популярным писателем.

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

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

Толкин говорил, что его книги написаны лишь для того, чтобы у придуманных им языков был дом. Что не увлекайся он с детства созданием конлангов (от английского constructed language – сконструированный или искусственный язык), то мы бы не получили ни «Хоббита», ни тем более «Властелина колец».
Читать дальше →
Всего голосов 48: ↑46 и ↓2+44
Просмотры12K
Комментарии 38

Как использовать GraphQL Federation для инкрементальной миграции с монолита (Python) на микросервисы (Go)  

Блог компании МаклаудPythonПрограммированиеGoogle App Engine
Перевод
Или как поменять фундамент старого дома, чтобы он не обвалился



Лет 10 назад мы выбрали 2-ю версию Python для разработки нашей обучающей платформы с монолитной архитектурой. Но с тех пор индустрия существенно изменилась. Python 2 был официально похоронен 1 января 2020 года. В предыдущей статье мы объясняли, почему решили отказаться от миграции на Python 3. 

Каждый месяц нашей платформой пользуются миллионы людей. 

Мы пошли на определённый риск, когда решили переписать наш бэкенд на Go и изменить архитектуру. 

Язык Go мы выбрали по нескольким причинам:

  1.  Высокая скорость компиляции.
  2. Экономия оперативной памяти.
  3. Достаточно широкий выбор IDE с поддержкой Go.

Но мы применили подход, который позволил минимизировать риск.
Читать дальше →
Всего голосов 23: ↑21 и ↓2+19
Просмотры4.3K
Комментарии 6

Наиболее полное руководство по практическому использованию Web Speech API

Блог компании МаклаудРазработка веб-сайтовJavaScriptAPI

В этой статье я хочу поделиться с вами результатами изучения основных возможностей Web Speech API (далее — WSA).


Введение


WSA — это экспериментальная технология, состоящая из двух интерфейсов: SpeechSynthesis (интерфейс для перевода текста в речь) и SpeechRecognition (интерфейс для распознавания речи).


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


Что касается поддержки, то вот что об этом говорит Can I use:



Читать дальше →
Всего голосов 24: ↑22 и ↓2+20
Просмотры3.7K
Комментарии 1

Тащим с айфонов все, что плохо лежит через дырявый Apple Find My

Блог компании МаклаудИнформационная безопасностьУмный дом
Перевод


После состоявшегося недавно релиза технологии AirTags от Apple я заинтересовался, можно ли злоупотреблять системой оффлайнового поиска «Find My», чтобы загружать в Интернет произвольные данные с устройств, не подключенных к WiFi или мобильному интернету. Эти данные могли бы широковещательно транслироваться по Bluetooth с низким энергопотреблением и подхватываться устройствами Apple, расположенными поблизости. Эти устройства, стоит им подключиться к Интернету, сразу переправляли бы эти данные на сервера Apple, откуда их впоследствии можно извлечь. Такой прием мог бы использоваться небольшими сенсорами в неконтролируемых окружениях, чтобы не тратить лишнюю энергию на использование мобильного Интернета. Кроме того, она могла бы быть интересна для кражи данных из мест, защищенных клеткой Фарадея, стоит туда только заглянуть человеку с айфоном. 

Теоретически такое должно быть возможным: если удастся эмулировать два AirTags, то можно закодировать данные, активировав в конкретный момент времени лишь один из них. В таком случае устройство-получатель должно проверить, какой AirTag был активен в какое время, и декодировать данные обратно в исходный вид. Однако такая схема представляется исключительно ненадежной и, пожалуй, непригодной к использованию в реальных практических ситуациях по причине очень узкой полосы передачи данных (особенно с учетом ограничения в 16 AirTag на Apple ID представлялось, что объем передаваемых данных не может превышать нескольких бит в час).

Следовательно, осуществимость этой идеи зависит от того, как спроектирована и реализована система. Оказывается, что решения по обеспечению безопасности и приватности, принятые при проектировании механизма оффлайнового показывают: предложенный нами кейс весьма эффективен как метод проникновения, и защититься от него почти невозможно.
Читать дальше →
Всего голосов 57: ↑41 и ↓16+25
Просмотры9.8K
Комментарии 26