Рубрики
Без рубрики

Как самоуровневый подросток построил операционную систему, которая работает в вашем браузере

Arizona Teenager Aaron Adams построил и поддерживает этот AWE-вдохновляющий сольный проект. Разработанный полностью в облаке, используя среду онлайн-разработки C9.IO, AOS (короткий для Aaronos) – впечатляющий инструмент, упакованный целой кучей особенностей и возможностей для настройки. Чтобы перечислить только несколько из этих функций:

Arizona Teenager Aaron Adams построен и поддерживает Этот AWE-вдохновляющий сольный проект Отказ Развивается полностью в облаке, используя C9.IO Окружающая среда разработки онлайн, AOS (короткая для Aaronos) является впечатляющим инструментом, упакованным с целой кучей особенностей и возможностей для настройки.

Чтобы перечислить только несколько из этих функций:

  • Причудливое unsx-unsired интернет-интерфейс? Проверять. Предпочитаю классический Windows XP тематический интерфейс? Проверять. Или чувствую, что проектирование собственного? Вперед, продолжать!
  • Обязательно попробовать возможность распознавания речи виртуального помощника Нораа
  • Испытайте команды в окне терминала в стиле Bash
  • Пойти с использованием некоторых из строящих «приложений», таких как текстовый редактор, функционирующий ставист, а также Музыка визуализатор
  • Почему бы не написать собственное настраиваемое приложение, используя приложение?

Еще более впечатляющим является история этого молодого программиста и как он утверждает этот текущий проект.

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

Я: Привет, Аарон, спасибо, что согласились ответить на несколько вопросов о AOS. Давайте начнем слышать немного больше о вас, и как вы начали свое путешествие по программированию. Были ли какие-либо ключевые фигуры или события, которые вдохновили вас?

Аарон: Спасибо за ваш интерес к AOS! Обо мне? Я просто средняя аризона, предназначенная для подростка в средней школе. В настоящее время я работаю в филиале театров AMC, а также в продуктовом магазине. Мой первый опыт программирования пришел ироничный поворот судьбы, на самом деле. Когда я подписался на классы средних школ в моем году первоклассный год, я был (и все еще был сегодня), очень заинтересованным в фотографии, поэтому я просил кинопроизводство в качестве одного из моих классов.

Видимо, хотя этот класс был полон, поэтому я вместо этого поместил в Genyees – класс, который фокусируется на обучении моего поколения о важных навыках, связанных с компьютером. Такие вещи, такие как устранение неполадок и крепежных компьютеров, используя общие программы и, конечно, – программирование. Если бы я был принят к классу производства фильма, я, скорее всего, никогда бы не нашел программирование, не говоря уже о том, чтобы охватить мою жизнь так, как у него есть! Учитель моих Genyees действительно помог мне, и я снова отвинулся на класс в моем прошлом году средней школы. Только этот класс – это то, что позволило моему программированию путешествовать вообще снять.

Конечно, был счастливой поворот судьбы! Скажи мне больше, как начался AOS? Какова была начальная идея или объем проекта?

Это сложный вопрос! Мой первый опыт в программировании был потрачен делать десятки крошечных маленьких проектов; такие как калькуляторы, струнные манипуляторы и т. Д. Одним из этих проектов была «операционная система» или, по крайней мере, что-то, что выглядела немного подобно. Вы можете увидеть этот проект здесь Отказ

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

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

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

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

Не могли бы вы уточнить для всех, кто точно читал это, что такое AOS? В какой степени он подражает операционной системе «реальной»?

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

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

Я вдохновлял со многими источниками. Оглядываясь назад, насколько я могу помнить, единственные реальные операционные системы, которые я использовал, были Windows (дома) и Chrome OS (в школе). В самых старых выживших вариантах AOS имеется пара артефактов, вдохновленных Windows. Одним из них является то, что блокнот, конечно, назван в честь аналога Windows.

Файлы и интернет-приложения взяли некоторые тонкие сигналы из браузера Chrome в их дизайне; в основном с баром вкладки в верхней части прилипания выше содержания, чем все остальное. Совсем недавно вдохновение из других источников можно очень легко найти в разных местах ОС. Эффект WindowBlur очень напоминает Aero Wisk из окон. На панель задач очень похож на Windows. Я включал симулированную консоль Bash, которая, очевидно, вдохновлена Linux. Другая функция Linux – это возможность сложить окна с помощью кнопки на левой стороне строки заголовка. Меню «Настройки» очень вдохновлено меню настроек Windows 10.

Есть несколько различных мод приборной панели, которые вдохновлены теми из Windows 7, Android и XFCE Whiscermenu. Я уверен, что вы можете обнаружить множество других функций, где я нарисовал вдохновение из этих источников!

В целом, какие были ваши любимые части проекта до сих пор? А какие были самые большие проблемы, с которыми вы столкнулись?

Моя любимая часть проекта? О, мальчик, опять же с жесткими вопросами! Я действительно не уверен, могу ли я указать на определенный момент, но я помню, что получение движения окна и изменение изменений функций, работающих правильно рядом с эффектом WindowBlur, был одним из лучших «я сделал это!» моменты. Я бы сказал, что эти моменты толкают над чем-то более недели, прежде чем, наконец, заканчивая и совершенствуя его – это мои любимые моменты в развитии AOS.

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

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

Что касается безопасности, обеспечение того, чтобы все просматривали страницу в HTTPS, было очень сложной. Без HTTPS, Chrome попросит запросить разрешение каждый раз Я пытался получить доступ к микрофону (для виртуального помощника Noraa) или камеры (для приложения камеры). Использование HTTPS, сайт более безопасен, а Chrome просит только один раз обо всем этом, и помнит предпочтение каждому пользователю.

Кроме того, теперь, когда я думаю об этом, возможно, абсолютная худшая проблема, с которой я столкнулся с развитием АОС, был кешем Chrome. Chrome будет кэшировать свой сценарий и стильют, что сделало бы обновления рядом с невозможным нажать. Я с тех пор работал вокруг этой функции, поместив миллисекунду запроса Get в параметрах URL файла сценариев. Это был жесткий контроль блокировки, чтобы выяснить!

Вы являетесь частью более широкого сообщества разработчика?

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

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

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

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

Вы использовали Cloud9 для разработки и размещения Aaronos. Вы делаете все свои Dev Work Online, или вы тоже работаете локально? Какова ваша текущая настройка разработки?

Первоначально Aaronos был разработан на программе кодовой биты кодекадемы. Это вернулось в V0.9 и ранее, и версия кодовой биты была очень ограничена, так как я могу использовать три файла – один HTML, один CSS и один JavaScript. Нет PHP или внешнего связывания (кроме изображения).

Все мои разработки DEV выполняются в Интернете, и IDE Cloud9 очень хорош с точки зрения его непрерывности – я могу писать код на одном компьютере, внезапно заканчиваться аккумулятором и забрать на другой компьютер с IDE в Точно так же состояние, когда у меня кончились батареи. Файл прокручивается на одно и то же место, терминальные сеансы сохраняются, вкладки сохраняются, все сохраняется. Даже курсор остается в том же месте! Я буквально вошел в любой компьютер и просто добраться до работы, что удивительно.

Мои основные аппаратные настройки – это машина HP 350 G1, запущенная процессором I3 со встроенной графикой, а совсем недавно, 16 ГБ ОЗУ. Это мой главный игровой автомат, и удивил меня своей способностью проходить 60FPS во многих играх.

Я использую Windows 10 для игр, но в основном я запускаю Minux Mint с рабочим столом XFCE. У меня установлен Aeroglass и Classic Shell, что делает его очень похожим на Windows 7. Лично я не вентилятор Windows 10 UI – маленькие детали действительно ошибки меня, такие как командная строка изредка открытия с помощью границ окна Windows 98-тематическими, или способ, которым работают программы в режиме совместимости для Windows XP Windows 7 Basic Window Borders. Возьми свой разум, окна!

Вы явно получили острый глаз для последовательного UX! Какие рамки или инструменты вы использовали для создания логики UI и Backend? И у вас есть любимый язык для работы?

Одним из моих целей с AOS было использование никаких сторонних библиотек JavaScript. Вся код был написан на царапин – нет jQuery, угловой, подчеркивания и т. Д. – Это все 100% чистый “ванильный” JavaScript. Уэй полностью представлен в HTML и CSS, и весь код клиента является JavaScript. Код Server-Side написан в PHP.

Мой любимый язык должен был бы быть JavaScript, хотя Ti-Basic входит в ближайшее время. Для тех, кто не знает, Ti-Basic – это язык, используемый на калькуляторах Ti-8 *, и очень много значит для меня, потому что это был единственный способ, которым я мог бы программировать во время других классов! Кроме того, другие дети в школе высоко оценили видеоигры, которые я надеваю на их калькуляторы для них.

Виртуальный помощник Noraa – действительно крутая функция – как это произошло?

Нораа была изобретена однажды ночью, когда я был повторной просмотром военных игр, (фильм с компьютером под названием Джошуа, который обманул всех, думая, что была глобальная термоядерная война). Нораа воодушевлена частично Windows ‘Cortana, а отчастья Джошуа (Редактировать: Aaron, пожалуйста, не запускайте WW3 …) .

Джошуа – это то, откуда приходит внешний вид терминала для нораа. Я закодировал в способности Noraa адаптировать его или ее ответы на основе его или ее отношения к вам. К сожалению, эта функция получила мало реализации, помимо нескольких команд тестирования. В настоящее время NORA более сосредоточена на выполнении задач, чем искать вещи в Интернете. Если вам интересно, Нораа – мое собственное имя, написанное обратно!

С точки зрения будущего, каковы ваши планы и амбиции? Что стоит рядом с Aaronos? А также Как насчет облачных систем и настольных компьютеров в целом?

На данный момент у меня нет конкретных планов на Aaronos; К которому я имею в виду, что Aaronos не имеет реальной точки, на которой он будет «закончен». Намного похоже на игру Minecraft, она будет постоянно обновляться и улучшиться до тех пор, пока я не смогу работать над этим, или если я когда-нибудь закончу деньги … в зависимости от того, что наступит на первом месте!

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

Хотя есть несколько доступных облачных настольных компьютеров, единственные два, которые я могу подумать о верхней части моей головы, которые все еще в активном развитии – мой собственный AOS и другой под названием Os.js , который является удивительным проектом.

Я надеюсь, что AOS, OS.JS и другие проекты, как они будут стоять как доказательство того, что с программированием (и достаточно свободного времени), вы можете сделать практически все, что вы хотите сбыться.

Аарон, спасибо, что нашли время, чтобы ответить на несколько вопросов! Еще раз поздравляю с по-настоящему впечатляющим проектом – я с нетерпением жду встречи с тем, что приходит рядом!

Мое удовольствие – спасибо за эту замечательную возможность поговорить о AOS! Я с нетерпением жду, чтобы прочитать его, когда он выйдет.

Оригинал: “https://www.freecodecamp.org/news/how-a-self-taught-teenager-built-an-operating-system-that-runs-in-your-browser-47da735ac919/”