Русский
Русский
English
Статистика
Реклама

Electron

Electron Разработка Desktop-приложений, используя HTML, CSS и JavaScript

11.01.2021 14:11:20 | Автор: admin
О чем вы узнаете из статьи?
Что такое Electron
Возможности и ограничения при разработке
Как работать с Electron
Плюсы и минусы
Известные проблемы
Вывод

Electron это библиотека, которую можно использовать для написания десктопных приложений с помощью html, css, js. Эти приложения могут быть упакованы под windows, mac, linux.

Возможно некоторые из вас уже использовали Electron даже не подозревая об этом!

Список некоторых приложений, написанных на Electron
Visual Studio Code
Atom
Skype
Discord
Slack
GitHub Desktop
Figma
Zeplin
Postman


Что можно создать?
приложение по работе с файлами
скрытые приложение ( Tray )
приложения для менеджмента ( tracker, pomodoro )
видео/аудио проигрыватели
социальные чаты
календарь

Любые ваши идеи, которые будут полезны вам или компании

Когда вы работаете с Electron вы должны помнить о некоторых ограничениях старые ОС:
а) Windows 7+
b) Mac OS 10.10+
c) Ubuntu 12.04+

Electron состоит из трех компонентов:


Принципы работы
  1. Основной процесс (Main) отвечает за создание и управление окнами и различными событиями приложения (именно этот процесс создает рендеринг процессы)
  2. Процесс рендеринга (Renderer) Отвечает за запуск пользовательского интерфейса вашего приложения (их может быть любое количество)

Прицип работы в схеме


Взаимодействие процессов
Эти процессы полностью изолированы друг от друга и отвечают за различные задачи, но они должны как-то взаимодействовать и с этим нам помогает IPC (inter-process communication) модуль, который позволяет взаимодействовать между этими процессами.

Взаимодействие процессов в схеме


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

В примере показано как событие click, описанное в процессе рендеринга (Renderer) взаимодействует с главным (main) процессом.

Хранение данных: FileSystem
Обычно для хранения каких-либо данных используют БД.
Но в десктоп приложениях у нас есть доступ к файловой системе, поэтому мы можем хранить данные прямо на компьютере пользователя (если их не очень много).

Плюсы Electron приложения
WEB как UI ( HTML, CSS, JS )
Разработка только под Chrome ( Safari, IE )
Chrome Devtools
Скорость разработки
Современный стек ( React, TypeScript, ...)
Кроссплатформенная разработка ( Windows, Mac OS, Linux )

Минусы Electron приложений
Вес проекта
Время старта ( если большое приложение )
Не все платформы имеют одинаковый интерфейс ( Н-р: Tray )
Linux имеет большое количество дистрибутивов

Вывод: достаточно знать html, css, js, чтобы разрабатывать на Desktop.
Подробнее..
Категории: Html , Javascript , Css , Electron , Desktop , Desktop apps

Неудачный опыт миграции Electron приложения на ECMAScript модули

26.02.2021 20:18:58 | Автор: admin

Работая над своим стартовым шаблоном для Electron приложений я решил полностью отказаться от CommonJS модулей и использовать исключительно ECMAScript модули (далее ES модули или ESM).

Я очень хочу иметь единый стиль кода везде. В моём проекте, как и у многих, непосредственно исходный код написан с использованием ES модулей, а всё остальное (тесты, файлы конфигурации, дополнительные скрипты для сборки) написано с использованием CommonJS модулей. Меня это сильно напрягает и я хочу чтобы всё было в одном стиле -- ESM.

Кратко о модульных системах в NodeJS

Начиная с 13-й версии NodeJS поддерживает две системы модулей:

  • CommonJS: для подключения модуля используется функция require();

  • ECMAScript: для подключения модуля используется ключевое слово import или функция import();

Важно знать:

  • Вы не можете использовать в одном файле и require и import. Либо то, либо другое.

  • В ES модуле вы можете подключить другой ES или CommonJS модуль.

  • В CommonJS модуле вы можете подключать исключительно CommonJS модули.

Как NodeJS выбирает систему для конкретного файла

Тут всё просто. Существует два расширения для файлов: .cjs и .mjs которые определяют что это CommonJS или ES модуль соответственно.

Кроме этого, в package.json вы можете добавить свойство type со значением commonjs или module чтобы определить систему модулей по-умолчанию для файлов с расширением .js.

Проблемы Electron

С чего начинается любое Electron приложение? С файла main.js (или background.js) -- точки входа, которая отвечает за запуск, создание окон, проверку обновлений, работу с системными api и так далее. Если сильно упростить, то обычно этот файл имеет такое содержимое:

const { app, BrowserWindow } = require('electron')app.whenReady().then(() =>  new BrowserWindow().loadFile('index.html'))app.on('window-all-closed', () => app.quit())

Ничего особенного: подключение одной зависимости и вызов пары функций.

Я хочу использовать по всему проекту ESM, поэтому установил в package.json "type": "module" и переписал main.js:

- const { app, BrowserWindow } = require('electron')+ import { app, BrowserWindow } from 'electron'

И моё ещё не написанное приложение уже падает с ошибкой:

Error [ERR_REQUIRE_ESM]: Must use import to load ES Module

Это меня сильно удивило. Я использовал electron v12 у которого под капотом работает NodeJS 14.15. То есть ESM должны поддерживаться и работать.

Файлы проекта подключаются как CommonJS модули

Оказалось проблема в том, как electron, да и многие другие библиотеки, обрабатываются JavaScript файлы вашего проекта. А делают они это очень просто -- через вызов require:

То есть когда вы запускаете

electron /path/to/main.js

Где-то внутри, electron вызывает

require('/path/to/main.js')

Вызывающий файл electron это CommonJS модуль. А наш файл main.js -- ES модуль. CommonJS модули не могут подключать ES модули. Отсюда и ошибка.

И это главная проблема на пути к светлому ESM-будущему.

Обходные пути

Получается я не могу использовать ES модули из-за архитектуры Electron. Это большая проблема, но всё-таки решаемая.

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

Проблемы со сборщиками

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

Некоторые инструменты не способны сохранять JavaScript в файлы с расширением не .js. Оно и логично, до недавних пор такой нужды не было.

Например используя tsc или esbuild я не могу изменить расширение итоговых файлов, в том случае если собираю не один, а сразу несколько. Все файлы будут сохранены с расширением .js.

Кроме этого многие сборщики/библиотеки думают про JavaScript файлы как про файлы исключительно с расширением .js. И когда приходит файл с расширением .cjs они не знают что с этим делать.

Например Vite, с которым я работаю, имеет возможность настроить шаблон выходных файлов [filename].[hash].cjs. Но до недавних пор он не понимал какой loader использовать для .cjs и падал с ошибкой. Пришлось отправить отдельный PR (который уже принят) чтобы он воспринимал .cjs файлы как JavaScript.

Проблемы с electron-builder

С исходным кодом я разобрался относительно небольшой ценой. Теперь можно писать ES модули, и Vite будет преобразовывать их в CommonJS модули перед запуском Electron.

Теперь, нужно обработанный код запаковать в исполняемое приложение. Для этого используется electron-builder. И тут меня ждали всё те же проблемы:

  • electron-builder под капотом использует пакет read-config-file.

  • read-config-file это CommonJS модуль, который использует require('/path/to/config.js') для чтения конфигурации в моём проекте.

  • CommonJS модуль не может подключать ES модуль и падает с ошибкой.

Это означает, что я никак не смогу написать конфиг electron-builderкак ES модуль.

Я решил пойти не компромисс и оставить конфиг electron-builder как CommonJS модуль с расширением .cjs. Это ставит крест на идее полностью отказаться от CommonJS модулей в проекте.

Но, это не помогло.

Дело в том, что read-config-file просто не воспринимает файлы .cjs как JavaScript:

if (config.endsWith('.js')) {    require(config)} else {    // ... Это что угодно, но не JavaScript}

Я отправил PR для исправления, но на момент публикации его так и не приняли.

Подчеркну electron-builderв принципе не способен обрабатывать JavaScript файл конфигурации в проектах где в package.json указано "type": "module".

Так что как временное решение пришлось переписать конфигурацию с .js на .json, отказавшись от некоторых возможностей.

Проблемы с экосистемой в целом

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

  • Например eslint. Я не могу написать конфиг для eslint как ESM. В документации так прямо и написано.

    И всё по той же причине -- где-то под капотом он использует require чтобы загрузить ваш .eslintrc.js. И единственный способ обойти это переименовать ваш файл в .eslintrc.cjs и продолжить использовать синтаксис CommonJS.

    А смена расширений снова приводит к некоторым проблемам. Так моя IDE отказывается определять .eslintrc.cjs как конфиг для eslint.

  • Другой пример -- dotenv. В документации есть целый раздел посвященный ESM, возможным проблемам и вариантам их решения.

  • Jest имеет экспериментальную, не стабильную и ограниченную поддержку ES модулей.

Больше проблем чем пользы

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

Подробнее..
Категории: Javascript , Electron , Esm , Commonjs

Обновления в Chipmunk

01.09.2020 18:20:28 | Автор: admin
Рад представить Вашему вниманию некоторые обновления смотрелки для логов chipmunk. Где-то стало удобнее, где-то практичнее, но обо всем по порядку Под катом будет коротко, но интересно.



Это вообще о чем?
Это о программе chipmunk, позволяющей открывать файлы любых размеров и быстро по ним искать. Можно сохранять свои фильтры, можно стоить графики, мерить время и много чего другого, что не будет лишним при анализе логов. Здесь больше.


Мерить время стало удобнее. Теперь вы можете определить пару фильтров, первый из которых будет началом временного отрезка, а последний его окончанием. На основании этих данных chipmunk построит график продолжительности.

image

Вы можете и не ограничиваться определением точек начала и конца временного отрезка, но и определить промежуточные. В этом случае, как результат, вы получите stacked bar. Такие графики по умолчанию строятся в строгом режиме, то есть подразумевается, что определенный вами паттерн должен полностью совпасть (все вхождения должны быть в том порядке, в котором вы их определили, без пропусков), однако это можно отключить и тогда chipmunk будет проверять лишь начало и конец временного отрезка.

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

image

Естественно, chipmunk запомнит, что именно было отключено (фильтр, определение для графика или же временной отрезок) и при восстановлении вернет, где лежало.

Была доработана и панель Time measurement. Из важного стоит отметить тот факт, что chipmunk будет помнить все успешно применённые форматы даты-времени, что позволит вам легко их добавить (восстановить), если формат не был определен автоматически.

image

И уже по традиции (а третий раз это почти традиция) прошу вас поддержать проект лишь кликнув на звездочку на github. Для вас это дело 2-4 секунд, а для нас важная и ценная обратная связь. OpenSource нуждается в вашей поддержке.

Скачать без СМС и регистрации можно здесь :)

Спасибо.
Подробнее..

Обновления в смотрелке логов

09.11.2020 04:11:53 | Автор: admin
Хотел бы поделиться с Вами рядом обновлений смотрелки для логов chipmunk. Описание займет не больше 2-х минут Вашего времени, но меж тем новые возможности могут оказаться весьма полезным подспорьем в Вашей повседневной работе.

Это вообще о чем?
Это о программе chipmunk, позволяющей открывать файлы любых размеров и быстро по ним искать. Можно сохранять свои фильтры, можно стоить графики, мерить время и много чего другого, что не будет лишним при анализе логов. Здесь больше.

Chipmunk наконец-то научился сохранять ваши сессии. Иными словами, все что Вы сделали с тем или иным файлом, будет автоматически восстановлено при его (файла) повторном открытии:

  • Фильтры;
  • Фильтры для графиков;
  • Фильтры для анализа времени;
  • Комментарии.

image

Chipmunk в том же месте, где расположен файл с логами создаст файл сессии с незатейливым разрешением .chip. Это дает Вам возможность полностью воспроизвести Ваш анализ логов на любом другом компьютере. Все что нужно скинуть .chip файл вместе с логами, например, Вашему коллеге.

Теперь Вы можете оставлять комментарии непосредственно в логах: выделяем фрагмент; вызываем контекстное меню; и добавляем комментарий.

image

Комментарии могут быть отнесены к той или иной категории. Дабы быть максимально нейтральными мы решили не использовать такие понятия как: error, warning etc., а просто группировать по цветам. Какой цвет и что будет означать дело исключительно Вашего вкуса.

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

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

Прикоснуться к open source можно тут

P.S.
Мы получили ряд feature requests, касающихся измерения времени. Что-то пришло в комментариях к предыдущим постам, что-то прилетело на github. Спешу Вас заверить, что ничто не остается без внимания, но в силу несколько ограниченных ресурсов, реализуется не сразу. В настоящее время мы активно работаем над существенной оптимизаций производительности.
Подробнее..

Легкие обновления

31.12.2020 14:09:18 | Автор: admin
Напоследок немного новостей о смотрелке для логов chipmunk. Ничего особенного, никаких кардинальных изменений или же заметных фитч, а скорее работа над ошибками, да и просто хочется сказать пару слов о прошедшем, настоящем и будущем.


Это вообще о чем?
Это о программе chipmunk, позволяющей открывать файлы любых размеров и быстро по ним искать. Можно сохранять свои фильтры, можно стоить графики, мерить время и много чего другого, что не будет лишним при анализе логов. Здесь больше.


Итак, вышел релиз 2.10.2, содержащий исправления ряда ошибок. Полный список исправлений есть на github, здесь же ограничусь наиболее весомым: починили возможность определения собственного формата даты-времени при совмещении нескольких файлов (речь о функции Merge).

image

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

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

Конечно, не всегда получается реализовать всё то что задумано и как оно задумано было. Не всегда получается и оперативно отреагировать на Ваши пожелания, но мы стараемся и будем стараться и впредь. В то время как найти стоящие инструменты на бесплатной основнее становится сложнее, а тот же youtube смотреть уже просто невозможно с их вставками рекламы на каждые 3-5 минут, мы верим, что слова community и open source что-то да и значат. Такой путь мы выбрали и сворачивать не собираемся.

Спасибо! И с наступающим Новым Годом!

Скачать без SMS и регистрации :) можно тут


P.S.
Вся наша скромная команда будет рада Вашим поздравлениям в виде новогодних звёзд на github. Для Вас лишь, клик для нас обратная связь и энергия! По-моему это здорово, когда одним кликом, можно поддержать разработчиков и их усилия.
Подробнее..

Вторая авария Электрона

06.07.2020 12:10:38 | Автор: admin
Суеверные люди могут праздновать иллюзию своей правоты тринадцатый запуск ракеты-носителя Electron завершился аварией с потерей ракеты и полезной нагрузки. Название миссии Фотки или не было (Pics Or It Didn't Happen) тоже оказалось в тему картинка с бортовых камер пропала, и по трансляции причину аварии установить вряд ли получится.


Кадр из трансляции, изображение Rocket Lab

Четвертого июля, в 21:19 UTC (09:19 местного времени) ракета-носитель Electron с семью спутниками оторвалась от стартового стола новозеландского космодрома на полуострове Махия. В течение трехсот сорока одной секунды полет проходил штатно, но затем картинка с бортовых камер зависла.



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



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

Это уже вторая авария ракеты-носителя Electron. В первом испытательном полете, 25 мая 2017, случилась трагикомическая история полет исправной ракеты аварийно прекратили из-за неправильно установленного тумблера на наземном оборудовании приема телеметрии.

Rocket Lab пока что ведут себя молодцом в опубликованном вскоре после аварии обращении глава, Питер Бек, заявил, что они перевернут все камни в поисках причины, и, несмотря на то, что никто из них не мог хотеть такого тяжелого дня, компания и персонал к нему готовы. Но удар, конечно, придется выдержать сильный на 2020 год было запланировано 12 пусков. Rocket Lab добились того, что ракета производится за 18 дней, а предыдущий, 12 пуск, состоялся 13 июня, и после него прошло всего три недели. Увы, в этом году у Electron'а уже не получится стать одной из самых часто запускаемых ракет в мире до обнаружения и устранения проблемы полеты возобновлять никак нельзя.


Полезная нагрузка на диспенсере, фото Rocket Lab

С ракетой была потеряна полезная нагрузка семь спутников общей массой примерно 75 кг. Самым большим и тяжелым был CE-SAT-IB (на фото сверху) второй экспериментальный спутник дистанционного зондирования Земли от компании Canon. Первый аппарат был выведен в 2017 на индийской PSLV, а сейчас в разработке компании серийные спутники, заметно отличающиеся по конструкции, так что ущерб для компании не фатален. Пять спутников Super Dove тоже были ДЗЗ и относились к типу Flock 4e компании Planet Labs. Это крупный и давний клиент Rocket Lab, уже имеющий созвездие из десятков аппаратов, запущенных на разных ракетах. Именно потому, что шесть из семи спутников предназначались для фотографирования Земли, миссия и получила название Фотки или не было. Последний аппарат, Faraday 1, был первым экспериментальным спутником компании In-Space Missions, который должен был проверить концепцию предоставления услуг размещения экспериментов на малых спутниках под ключ. По информации самой компании у них уже есть заказы на четыре спутника, так что будем надеяться, что и по ним не нанесен фатальный удар.

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

Успешный запуск. Sequoia на Electron. Запуски 2020 года 66 всего, 60 успешных, 25 от США

02.09.2020 22:22:14 | Автор: admin

Вячеслав Ермолин, 31 августа 2020 г.

Текущая статистика запусков 2020 годаТекущая статистика запусков 2020 года

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

Девиз:
Я не могу поверить, но это не оптика.
Can't Believe It's Not Optical.

Время и место старта:
31 августа 2020 года 03:05 UTC.
Пусковой комплекс -1 Rocket Lab на полуострове Махия в Новой Зеландии.

Ракета-носитель:
Electron двухступенчатая ракета-носитель сверхлегкого класса для выведения малых нагрузок. Грузоподъёмность до 250 кг (300 кг) на НОО. До 150 кг на ССО. Общий вес полезной нагрузки в миссии около 100 кг.

Полезная нагрузка:
Capella Space Sequoia спутник ДЗЗ оснащен радиолокатором с синтезированной апертурой (SAR) в Х-диапазоне. Высококачественные радарные изображения поверхности Земли в любое время суток и при любой погоде, в режиме реального времени. Обеспечивает фиксацию изменений менее 0,5 м, что можно использовать в сферах безопасности, мониторинга с/х и инфраструктуры, а также для реагирования на стихийные бедствия и поддержки операций спасения. Весит 100 кг, основная сеточная SAR-антенна в развернутом виде - около 3,5 м.

Орбита:
Солнечно-синхронная орбита высотой около 500 км.
2020-060A : 546 x 528 км x 45.10

Интересное:
1-й запуск РН Electron после аварии.
14-й полет Electron. Два запуска аварийные.
4-й полет Electron в 2020 году. Один запуск аварийный.
4-й полет Electron Block 2.
1-й аппарат для спутниковой группировки Capella Spaces Whitney.
Стоимость запуска ракеты-носителя Electron около 6 млн $.
Стоимость вывода 1 кг полезной нагрузки на ССО не менее 40 000 $.

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

Патчи и логотипы миссииПатчи и логотипы миссииЛегенда к статистикеЛегенда к статистике
Подробнее..

Японский спутник ДЗЗ. Запуски года 106 всего, 42 от США

16.12.2020 12:18:50 | Автор: admin

Вячеслав Ермолин, 15 декабря 2020 г.

Текущая статистика запусков 2020 годаТекущая статистика запусков 2020 года

Миссия:
Запуск японского спутника ДЗЗ StriX-a. Пуск успешный, космический аппарат выведен орбиту. Спутник радиолокационного зондирования оснащенный интерферометрическим радаром с синтезированной апертурой (InSAR). Планируются два тестовых спутника для отработки технологии и развертывание спутниковой группировки.

Инфографика текущего запускаИнфографика текущего запуска

Ссылкана изображение в высоком качестве.

Девиз:
Ночь совы начинается (The Owls Night Begins).

Время и место старта:
15 декабря 2020 г. 10:09 UTC
Пусковой комплекс -1 Rocket Lab на полуострове Махия в Новой Зеландии.

Ракета-носитель:
Electron KS-17 двухступенчатая ракета-носитель сверхлегкого класса для выведения малых нагрузок от частной компании Rocket Lab. Грузоподъёмность до 250 кг (300 кг) на НОО. До 150 кг на ССО. Масса полезной нагрузки в миссии 150 кг.

Полезная нагрузка:
StriX alpha спутник наблюдения Земли, созданный японской компанией Synspective. Технический демонстратор будущей группировки из 25 спутников Synspective SAR. Спутник будет использовать оборудование StripMap и Sliding Spotlight, обеспечивая разрешение сканирования от 3 до 1 метра. StripMap имеет полосу обзора 30 км, а Sliding Spotlight 10 км. Планируется развертывание группировка из 25 спутников, рассчитанной на круглосуточный мониторинг.

Орбита:
ССО: 489 Х 511 км. Наклон орбиты 97,3.

Интересное:
17-й полет Electron с 2017 года. Два запуска аварийные.
7-й полет Electron в 2020 году. Один запуск аварийный.
107-я попытка орбитального запуска в 2020 году.
Стоимость запуска ракеты-носителя Electron около 6 млн $.
Стоимость вывода 1 кг полезной нагрузки на ССО до 40 000 $.

Ссылкана изображение в высоком качестве.
Статьяс портала NSF.
Анонсот Everyday Astrounavt.

Эмблемы и нашивки миссииЭмблемы и нашивки миссииЛегенда к статистикеЛегенда к статистике

Личное мнение:
Успешный запуск Rocket Lab вызывает уважение. Хорошо поставленная работа по производству ракет и поиску заказчиков.

В запусках Rocket Lab спутников малого размера хорошо видно как изменились технологии проектирования и строительства спутников. В десятках и сотнях килограмм полезной нагрузки удается разместить оборудование с характеристиками и возможностями ранее требовавшее большой массы. Например, в этом запуске на орбиту выведен японский экспериментальный спутник радиолокационного зондирования с пятиметровой FAR. Предполагается развертывание спутниковой группировки из 25 спутников. Которые обеспечат всепогодный обзор с разрешением до 1 метра. Это впечатляет.

Подробнее..

Как мы сделали оплату по QR

25.01.2021 18:10:11 | Автор: admin

Всем привет! Сегодня с вами Владислав Козуля, тимлид команды Розница, и я расскажу, как начать платить по QR и ни в чём себе не отказывать. Моя команда делает продукт Касса МойСклад, которым часто пользуются наши клиенты, у которых есть точки продаж. Речь пойдёт о том, как разработка инструментов для повседневной работы выглядит изнутри.

Что это вообще такое

Для начала немного контекста. Обычно, когда вы оплачиваете покупки на кассе, у вас есть выбор: платить наликом или картой. Технически между ними есть ещё один вариант и тем, и тем, но он встречается гораздо реже. Или бонусной картой, а это вообще отдельная система. Короче, налик или карта.

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

Тут возникает резонный вопрос: к чему заморачиваться с камерой на телефоне, если картой проще? Это выгодно магазину. Прикол в том, что для него комиссия с платежа (а магазин с каждой покупки платит комиссию банку) будет ниже. К тому же оплачивать по QR можно без терминала, то есть ещё и экономить на закупке оборудования. Поэтому продавец будет предлагать вам оплатить именно по QR.

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

Разработчица Екатерина демонстрирует работу функции печати QR-кода на чекеРазработчица Екатерина демонстрирует работу функции печати QR-кода на чеке

У Сбербанка для этого есть своя система Плати по QR, Тинькофф работает по Системе Быстрых Платежей (СБП). При этом они интегрированы друг другом, то есть покупатель разницы не заметит. Обе системы с нашей стороны завёрнуты в единый API, поэтому для клиента тоже нет разницы.

Разберём, как оплата по QR выглядит под капотом с точки зрения Кассы МойСклад.

  1. Пользователь МоегоСклада выбирает в настройках банк, с которым у него есть договор оплаты по QR. Теперь на его кассе появится новый способ оплаты.

  2. Кассир создаёт продажу касса запрашивает у бэкэнда QR-код.

  3. Бэкэнд идёт в API банка, который выбрал пользователь из первого пункта. Получает строку, в которой зашиты данные для формирования платежа.

  4. Полученная строка прилетает на кассу и зашивается в QR-код, который можно отрисовать на UI или распечатать на чеке очень удобно.

  5. Дальше мы опрашиваем банк до тех пор, пока он не скажет, что платеж дошел или был отменён.

  6. Можно печатать фискальный чек, ура!

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

Подводные камни

Помните, я упоминал, что обычно платят наличными или по карте? Когда проектировали базу, тоже так думали. Добавление нового типа оплаты означает добавление новых полей в базу (у нас PostgreSQL), причём в историю операций, одну из самых больших и популярных таблиц. На её основе формируются отчёты, одна из ключевых функций МоегоСклада. Это раз.

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

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

МойСклад не занимается процессингом платежей, только их учётом. Кассир возвращает вам деньги в руки или на карту своими силами, без участия кассового ПО. С оплатой по QR становится немного сложнее: теперь за отмену транзакции и возврат платежа отвечает бэкэнд. Для этого мы сохраняем её айдишник после инициализации.

В API обе операции сидят на одном эндпоинте (скопировали у Тинькова). До проведения платежа транзакцию можно отменить, и при попытке оплаты покупатель увидит ошибку в приложении банка. Если оплата уже прошла, будет произведён возврат. В случае, когда на кассе что-то пошло не так, возврат всегда может сделать владелец магазина из своего личного кабинета в банке.

Касса МойСклад это не веб-сайт, а десктопное приложение и пара мобильных клиентов под iOS и Android. Они легко могут работать и при отсутствии связи месяцами: для этого там поднимается локальная база, то есть по сути, свой маленький бэкенд. Соответственно, миграцию надо проводить и на сервере, и на клиенте. Сломать локальную базу означает превратить кассу в кирпич или ещё хуже: потерять все данные. Поистине апокалиптический сценарий для техподдержки.

Архитектура Кассы Мойсклад (упрощённая)Архитектура Кассы Мойсклад (упрощённая)

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

Фух.


Мы запустили СБП с Тиньковым 1 октября, а 1 декабря интеграцию со Сбером, Плати по QR. Уже почти февраль, и мы видим с десяток ежедневных платежей. Клиенты пользуются, люди оплачивают свои покупки по QR. А значит, всё было не зря!

В следующем выпуске я подробно расскажу о том, как релиз с оплатой по QR заезжал на бэкенде. Следите за обновлениями!

Подробнее..

Мой питомец LinguaPlayer

19.02.2021 14:12:20 | Автор: admin

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

И так, у меня было достаточно много пет-проектов разной степени готовности. Среди них: социальная сеть для писателей, генератор CSS-спрайтов, Телеграм бот для знакомств по интересам и многое другое. Сегодня речь пойдёт о моей последней разработке.

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

Идея проекта

Так у меня и родилась идея видеоплеера с переводимыми субтитрами. Приложение позволяет переводить слова и целые фразы прямо во время просмотра кино. С ним отпадает необходимость переключаться между приложениями или брать в руки смартфон. Знакомьтесь LinguaPlayer.

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

Технологический стек

Плеер реализован на платформе Electron, т. е. по сути это браузер Chromium внутри которого бежит обычное веб-приложение. На этой технологии построено большое количество различных приложений удачных и не очень. Наиболее известные примеры это Visual Studio Code, Skype, Slack. Electron предоставляет некоторые системные API, которые недоступны JavaScript, запущенному в обычном браузере. Это позволяет делать приложения более функциональными и близкими по возможностям и пользовательскому опыту к нативным. Что касается всего остального разработчику доступен абсолютно любой стек, применимый в вебе. Будь то чистый JavaScript, Angular, jQuery, Vue что угодно.

Для LinguaPlayer я выбрал привычный стек, с которым работаю каждый день: TypeScript, React, MobX, Webpack. Я планировал сделать прототип за вечер, так как задача выглядела легко: дал приложению файл с видео и файл с субтитрами, прикрутил переводчик и готово. С этой частью проблем не возникло. Однако, как оказалось, встроенный в браузеры движок отображения субтитров не имеет никаких средств взаимодействия с текстом реплик. Что я имею в виду. Реплики титров хоть и появляются поверх видео, но в DOM никаких упоминаний о них нет. Другими словами, нет возможности распарсить текст, разбить его по словам и предложениям, повесить обработчики нажатий клавиш или зарегистрировать события мыши.

Решение интересных задач

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

Для парсинга титров я взял библиотекуnode-webvtt. Для синхронизации титров изначально я написал логику в лоб. Подписавшись на событие video-элемента timeupdate, я просто ходил по массиву реплик и сравнивал текущее время видео с временем реплик. Однако, событие timeupdate срабатывает четыре раза за секунду, а реплик в среднем фильме несколько тысяч. Всё это дело жутко тормозило.

Для оптимизации данного процесса я сделал простой hash map. Его ключом является секунда (целая, без миллисекунд), а значением массив номеров реплик, которые должны быть показаны в эту секунду. Выглядело это примерно так:

{// на пятой секунде 2 реплики5: [1, 2]// на седьмой секунде 3 короткие реплики7: [3, 4, 5]}

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

// Объект реплики: порядковый номер, время начала отображения (в миллисекундах), время конца отображения, текстclass Cue {  public readonly index: number;  public readonly startTime: number;  public readonly endTime: number;  public readonly text: string;  constructor(index: number, startTime: number, endTime: number, text: string) {    this.index = index;    this.startTime = startTime;    this.endTime = endTime;    this.text = text;  }}interface CueIndex {  // Ключ индекса это целая секунда (без миллисекунд) и массив порядковых номеров реплик,  // которые начинают или заканчиваются в течение этой секунды  [key: number]: number[];}class SubtitlesTrack {  private readonly cues: Cue[];  private index: CueIndex = {};  constructor(cues: Cue[]) {    this.cues = cues;    // На входе у нас просто массив реплик, нужно проиндексировать    this.indexCues();  }  private indexCues() {    this.cues.forEach((cue: Cue) => {      // Переводим время начала и конца реплики из миллисекунд в секунды и берём только целую часть      const startSecond = Math.floor(cue.startTime / 1000);      const endSecond = Math.floor(cue.endTime / 1000);      // Добавляем реплику (её порядковый номер) в индекс      this.addToIndex(startSecond, cue);      // Бывает, что реплика началась в одной секунде, и отображается до следующей или даже держится несколько секунд      // Такую реплику следуют добавить также в индекс секунды окончания      if (endSecond !== startSecond) {        this.addToIndex(endSecond, cue);      }    });  }  private addToIndex(secondNumber: number, cue: Cue): void {    // Если это первая реплика в данной секунде, инициализируем ключ индекса пустым массивом    if (!this.index[secondNumber]) {      this.index[secondNumber] = [];    }    // Затем в массив реплик добавим порядковый номер новой реплики    this.index[secondNumber].push(cue.index);  }  // Метод поиска реплики  public findCueForTime(timeInSeconds: number): Cue|null {    // Событие плеера timeupdate присылает время сразу в секундах    // Поэтому сразу берём целую часть    const flooredTime = Math.floor(timeInSeconds);    // Выбираем проиндексированные реплики для этой секунды    const cues = this.index[flooredTime];    let currentCue = null;    // Если на данной секунде есть реплики    if (cues) {      // Проходимся по каждой      for (let index of cues) {        const cue = this.cues[index];        // И смотрим, совпадает ли интервал времени начала и конца реплики с текущем временем в плеере        if (this.isCueInTime(timeInSeconds, cue)) {          // Если да, то устанавливаем значение текущей реплики и останавливаем цикл          currentCue = cue;          break;        }      }    }    // Вернём текущую реплику или null, если для данного времени реплики нет    return currentCue;  }  public isCueInTime(timeInSeconds: number, cue: Cue): boolean {    const timeInMilliseconds: number = timeInSeconds * 1000;    return timeInMilliseconds >= cue.startTime && timeInMilliseconds <= cue.endTime;  }}

Таким образом, вместо того, чтобы 4 раза в секунду обходить массив из тысяч элементов, необходимо лишь сделать одно обращение по индексу, и пройтись по массиву длинной от 1 до 4.

Перед тем как выводить получаемые реплики я разбивал их на предложения и на слова с помощью библиотекиnode-sentence-tokenizer. Всё это дело я оборачивал в элементы div с классами sentence и word соответственно, чтобы иметь возможность вешать на них события в дальнейшем и выполнять перевод. Вот так выглядит код:

import Tokenizer from 'sentence-tokenizer';function formatCue(text: string): string {  const brMark: string = '[br]';  const tokenizer = new Tokenizer();  // Заменяем переносы строк на псевдотэг для удобной работы с переносами в дальнейшем  text = text    .replace(/\r\n/g, ` ${brMark}`)    .replace(/\r/g, ` ${brMark}`)    .replace(/\n/g, ` ${brMark}`);  // Устанавливаем text как сущность для обработки  tokenizer.setEntry(text);  // Разбиваем текст на предложения  const sentenceTokens: string[] = tokenizer.getSentences();  // Проходимся по предложениям  const sentencesHtml: string[] = sentenceTokens.map((sentenceToken: string, index: number) => {    // Разбиваем предложение по словам    const wordTokens: string[] = tokenizer.getTokens(index);    // Идём по каждому слову    const wordsHtml: string[] = wordTokens.map((wordToken: string) => {      let brTag: string = '';      // Если после слова есть псевдотэг переноса, удаляем его и устанавливаем html тэг переноса строки      if (wordToken.includes(brMark)) {        wordToken = wordToken.replace(brMark, '');        brTag = '<br/>';      }      // Оборачиваем слово в span с классом word и добавляем тэг br, если надо      return `${brTag}<span class="word">${wordToken}</span>`;    });    // Склеиваем слова обратно, в строку, оборачиваем предложение в в span с классом sentence    return `<span class="sentence">${wordsHtml.join(' ')}</span>`;  });  // Склеиваем предложение обратно в строку  const html: string = sentencesHtml.join(' ');  return html;}

Далее я прикрутилMicrosoft Translatorдля осуществления перевода, и плеер для изучения английского был готов.

Чего не хватает проекту, чтобы развиваться

Конечно, на данный момент плеер даже не является MVP, это скорее proof of concept. И у меня есть множество идей по развитию данного проекта. В первую очередь хочется добавить поддержку словарей, например английского и англо-русского, а также интегрировать Urban Dictionary для распознавания сленга, а также различных современных слов и фраз. Во вторую очередь есть мысль реализовать интеграции с сервисами по изучению иностранных языков, такими какLinguaLeoилиSkyeng. Это позволило бы добавлять незнакомые слова в персональный словарь на сервисе и учить их позже. Или же импортировать свой словарь вAnki. Также можно было бы добавить поддержку изучения других языков.

Но, прежде чем приступить к реализации задуманных функций, необходимо решить ряд технических и концептуальных проблем. Моя изначальная идея заключалась в том, чтобы можно было смотреть свои старые и излюбленные фильмы, пылящиеся на жёстком диске. И здесь возникает серьёзная техническая проблема, а именно слабая поддержка кодеков в браузере Chromium. Глядя насписок поддерживаемых форматов, можно заметить, что по факту в приложении можно проиграть лишь файлы с видеокодеком H.264 и аудиокодеком FLAC либо MP3. Нужно очень постараться чтобы найти именно такой файл. Да никто и не будет заниматься подобным сейчас все избалованы стриминговыми сервисами. Не говоря уже о вопросах лицензирования, что является большой, концептуальной проблемой.

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

Подробнее..

Аварийный запуск. 47-й запуск в 2020 году. 18-й от США. 7 спутников на РН Electron

05.07.2020 14:08:58 | Автор: admin
Вячеслав Ермолин, 4 июля 2020 г.



Миссия:
Основная:
спутник ДЗЗ CE-SAT-1B от Canon Electronics

Дополнительная:
5 спутников ДЗЗ SuperDove Flock 4e от Planet Labs.
Технологический спутник Faraday-1 от In-Space Missions.




Девиз:
Фото, либо не случится

Время и место старта:
4 июля 2020 г. в 21:19 UTC. Launch Complex-1A, Mahia Peninsula, Новая Зеландия

Ракета-носитель:
Electron двухступенчатая ракета-носитель сверхлегкого класса для выведения малых нагрузок. Грузоподъёмность до 250 кг на НОО. До 150 кг на ССО. Общий вес полезной нагрузки в миссии 75 кг.

Полезная нагрузка:
Оптический спутник ДЗЗ CE-SAT-1B от Canon Electronics для получения детальных фотографий с разрешением до 1 метра. Весом 50 кг, построен на EOS 5D mk.3 и телескопе Кассегрена 40 см. Изображение 5760 3840 пикселей с размером кадра 6 х 4 км (600 км).

Спутники ДЗЗ оптического диапазона SuperDove Flock 4e от Planet Labs. Формат CubeSat (3U). Оборудованы мощным телескопом, камерой и программным обеспечением для съемки разных участков земной поверхности. Непрерывная съемка. Группировка спутников позволяет получать раз в сутки полное изображение поверхности Земли с разрешением 3,5 метра.

Спутник Faraday-1, от британской компании In-Space Missions. Формат 6U CubeSat. Технологический спутник для отработки спутниковых технологий.


Орбита:
ССО: 500 Х 500 км, 97.5

Интересное:
13-й запуск РН Electron Rocket Lab. Два запуска аварийные.
3-й запуск Rocket Lab в 2020 году.
Стоимость запуска ракеты-носителя Electron около 6 млн $.
Стоимость вывода 1 кг полезной нагрузки на ССО не менее 40 000 $.


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

Ссылка на изображение в высоком качестве
Статья с портала NSF



Патчи и логотипы миссии

Легенда к шапке
Подробнее..

Rocket Lab титановый гном в космосе и мягкая посадка

23.11.2020 02:14:32 | Автор: admin
В пятницу в 15:20:01 по новозеландскому времени с частного космодрома Rocket Lab на полуострове Махия, расположенном на восточном побережье Северного острова Новой Зеландии, стартовала РН Electron в рамках миссии с символичным названием Вернуть отправителю, так как это был первый раз, когда ракета Electron взлетела с парашютами и вспомогательными системами на борту, и первая попытка выполнить полную серию маневров контролируемого спуска.



Первая ступень Electron на своем пути к Земле успешно совершила следующие запланированные маневры:
  • Примерно через 2.5 минуты после старта на высоте около 80 км первая и вторая ступени Electron разделятся в соответствии со стандартной процедурой полета. Вторая ступень Electron продолжает движение к орбите, где разгонный блок разведет спутники на свои орбиты.
  • Теперь, когда двигатели на первой ступени Electron выключены, система управления реакцией развернет ступень на 180 градусов, чтобы направить ее под идеальным углом для входа, чтобы она могла выдержать невероятную температуру и давление воздуха во время его спуска на Землю, известные как The wall.
  • После замедления до скорости <2 Махов тормозной парашют будет развернут для увеличения сопротивления и стабилизации первой ступени при спуске.
  • На последних километрах спуска будет развернут основной парашют, чтобы еще больше замедлить ступень и обеспечить контролируемое приводнение.
  • Судно Rocket Lab встретится со ступенью после приводнения и заберет ее для транспортировки обратно в производственный комплекс Rocket Lab для проверки.


Rocket Lab стала всего лишь второй частной компанией, вернувшей на Землю ракету-носитель орбитального класса в целости и сохранности. Ступень из углеродного композита приводнилась в нескольких сотнях миль от стартовой площадки Rocket Lab в Новой Зеландии.



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

Успешное приводнение первой ступени Electron приблизило калифорнийскую Rocket Lab (компания имеет офис в Калифорнии) к повторному использованию ракетных ускорителей, что, по словам компании, позволит запускать миссии с большей частотой и потенциально сократить расходы. Изначальные планы подразумевают 100 пусков год, при этом молодая компания в этот непростой год уже совершила 6 запусков.

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



Почему гном? Геймеры могут узнать в фигурке гнома Чомпски из игры Half-Life 2: Episode 2, где имеется задание перетащить гнома через все уровни игры и в конце посадить на ракету, чтобы запустить в космос. Этот же маленький друг полетит на самом деле.

Созданный при поддержке удостоенной множества наград дизайн-студии Weta Workshop, уникальный космический компонент изготовлен аддитивно из титана и напечатан в форме игрового символа Half-Life Гнома Чомпски, пишет Rocket Lab в пресс-релизе для миссии в четверг. Миссия служит данью уважения инновациям и творчеству геймеров во всем мире, а также направлена на тестирование и верификацию новой технологии 3D-печати, которая может быть использована для компонентов будущих космических кораблей. 150-миллиметровый гном останется прикрепленным к разгонному блоку Electron'а и сойдет с орбиты вместе с ней, когда ступень сгорит при входе в атмосферу Земли.
Создатель игры Half-Life Гейб Ньюэлл из Valve пожертвует по 1 доллару отделению педиатрической интенсивной терапии Оакленда за каждого зрителя на прямой трансляции запуска.

Запись трансляции запуска миссии Return to sender.

В то время как первая ступень спускалась с парашютом в Тихий океан, вторая ступень Электрона вывела 30 полезных нагрузок и ступень на предварительную переходную орбиту. В течение часа после запуска третья ступень, называемая kick stage зажглась, чтобы вывести небольшие полезные нагрузки на круговую орбиту высотой 310 миль (500 километров).

Два космических аппарата для запуска на Electron были построены Millennium Space Systems, дочерней компанией Boeing, для миссии под названием DragRacer для испытания устройства, вызывающего сопротивление, которое могло бы помочь небольшим спутникам на низкой околоземной орбите быстрее сойти с нее. Это устройство называется лентой терминатора (Terminator Tape). Лента, разработанная компанией Tethers Unlimited, имеет ширину всего 5-7 см, но ее можно разматывать на десятки метров.


Этот Terminator не имеет отношения к Terminator Tape.

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


Оба спутника миссии DragRacer в представлении художника.

Первый спутник Новой Зеландии также вышел на орбиту благодаря ракете Electron. Спроектированный и построенный в Оклендском университете, CubeSat получил название Te Waka miorangi o Aotearoa, что в переводе с английского означает новозеландский спутниковый аппарат (Официально аппарат известен как APSS-1).

Другие полезные нагрузки, запущенные в рамках миссии Rocket Lab в четверг вечером, включают два CubeSat размером с чемодан для французского стартапа UnseenLabs. Спутники Bro-2 и Bro-3, созданные датским производителем малых спутников GomSpace, являются вторыми и третьими спутниками, запущенными UnseenLabs.

Французская компания планирует запустить группировку из 20-25 спутников в течение следующих пяти лет для наблюдения за морскими водами. UnseenLabs заявляет, что ее флот наноспутников сможет обнаруживать и идентифицировать корабли по всему миру, предоставлять услуги слежения для морских операторов и помогать силам безопасности следить за пиратами и контрабандистами.


Представленная инфографика показывает все этапы миссии. Источник: Rocket Lab.

Rocket Lab намеревается в конечном итоге использовать вертолет для захвата ступеней ракет, спускающихся на парашютах, чтобы избегать попадания морской воды. Но Бек сказал перед запуском, что Rocket Lab сначала попытается извлечь ускорители Electron из моря и затем тщательно исследует возвращенный экземпляр, чтобы внести необъодимые изменения в дизайн.

То, чего команда достигла сегодня на этом этапе, это настоящий подвиг, сказал Питер Бек, основатель и генеральный директор Rocket Lab. Потребовались колоссальные усилия со стороны многих команд в Rocket Lab, и приятно видеть, что эта работа окупилась, и это важный шаг к превращению Electron в многоразовую ракету.

Источник
Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru