portaldacalheta.pt
  • Основен
  • Пъргав
  • Иновация
  • Тенденции
  • Back-End
Back-End

NodeOS: Операционна система, базирана на JavaScript



Сигурен съм, че повечето програмисти са чували за Node.js , но какво ще кажете за NodeOS ? Да, NodeOS, операционна система, написана в Node.js. Е, нещо като. NodeOS използва ядрото на Linux за повечето критични за производителността неща, като например хардуерни взаимодействия, но за всичко останало използва Node.js. Разработката на NodeOS стартира преди две години и е създадена от хора, които споделят проста, но интригуваща идея: „Възможно ли е да създадете операционна система, използвайки само Node.js?“

интернет на нещата интелигентни устройства

Диаграма на Дарвин



Възможно ли е да създадете операционна система, използвайки само Node.js? Tweet

Каква е голямата работа?

На първо място, помислете за напредъка, който Node.js е постигнал за краткото време, през което е бил. Сега помислете за същото нещо, което се случва с операционна система. След това нека добавим няколко готини неща към него.



Независима и изолирана коренна файлова система на потребител

NodeOS представи интересна парадигма: Ако всички потребители имат изолирана файлова система, това им дава проста йерархия на файловата система, с която да работят. Тъй като тяхната „домашна папка“ всъщност е коренът на собствената й йерархия на файловата система, те могат да инсталират пакети в световен мащаб, без да изискват специални разрешения и не е необходимо да конфигурират нищо, тъй като те са инсталирани в домашната си директория по подразбиране. Освен това осигурява добра доза сигурност; ако хакер намери начин да влезе в определен акаунт в операционната система, единственият дял, до който той / тя може да има достъп, е дялът на този потребител. Крайният резултат е хакер не мога компрометират цялата система.



Node.js и NPM

Ако се замислите, операционна система, която използва Node.js, означава, че всеки пакет, наличен в NPM, е в същото време и пакет NodeOS. По време на писането има 210 735 пакета; тъй като броят на NPM пакетите нараства всяка минута, не би било странно, ако след няколко години NodeOS има милион приложения.

Тя се основава на ядрото на Linux

Това може да не изглежда голяма работа, но Linux е най-използваната сървърна операционна система. Тъй като NodeOS се основава на ядрото на Linux, можете да стартирате всяко приложение, написано за други дистрибуции на Linux с минимални промени.



Недостатъците

Колкото и да ми се иска завършен NodeOS, той все още не е там. Все още липсват много ключови функции за сървърна операционна система. Например липсва целият набор от инструменти на BASH, включително ps, tail, nano и grep. Освен това не можете да го стартирате като настолна операционна система, тъй като тя няма GUI. Разбира се, можете да внедрите някои от липсващите функции доста лесно, като използвате малко JavaScript, но фактът, че всички споменати функции не са налични по подразбиране, не е добър.

И така, как мога да изпробвам NodeOS?

Използване на Docker

Най-лесният и бърз начин да изпробвате NodeOS е като използвате следното:



  1. Компютър с Mac OSX или Linux. Може да работи с Windows, но не го опитах.
  2. Докер.

След като инсталирате Docker, стартирането на екземпляр на NodeOS е лесно. Всичко, което трябва да направите, е да изпълните следната команда и Docker прави цялата магия:

sudo docker run -t -i nodeos/nodeos

Най-лесният и бърз начин да изпробвате NodeOS е с помощта на Docker



Най-лесният и бърз начин да изпробвате NodeOS е с помощта на Docker. Tweet

Когато стартирате гореспоменатата команда, Docker автоматично изтегля образа на диска за NodeOS от хранилище и извършва инсталирането на NodeOS във виртуална машина. След като инсталацията приключи, тя отваря SSH сесия за обвивката NodeOS.

Без докер

Има няколко причини, поради които бихте искали да избягвате използването на Docker, а една е най-новата версия на NodeOS. По време на писането последната промяна в образа на Docker на NodeOS е извършена преди два месеца, докато версията за разработка е актуализирана преди шест дни. Така че, ако искате да използвате най-новата версия, определено трябва да получите изходния код. Това не е твърде трудно, но отнема много време. Ще имаш нужда:



  1. Компютър с Linux. Можете да го компилирате на OS X, но ще отнеме повече време, тъй като трябва да направи кръстосана компилация. Същото важи и за Windows.
  2. Помощните програми за изграждане на Linux (make, g ++, gcc, autoconf).
  3. Qemu.
  4. Време. Сериозно, много.

След като имате всичко, можете да продължите със компилацията на изходния код:

  1. Изтеглете изходния код на проекта: bash git clone [email protected] :NodeOS/NodeOS.git.
  2. Компилирайте го, като изпълните следните команди: cd NodeOS и npm install.
  3. Ще цитирам, дума по дума, официалната документация: „Вземете малко пуканки с микровълнова фурна и отидете да гледате филм. Не, наистина, направете го. ' . Да, ще отнеме толкова много време, така че междувременно направете нещо интересно.
  4. Изпълнение bash npm start за да стартирате NodeOS вътре в Qemu.

Работи ли?

След като инсталацията приключи, можем да проверим дали работи, като изпълним вътре в черупката на NodeOS командата ls Изход като този трябва да се покаже:



[ 'etc', 'lib', 'lib64', 'root', 'bin', 'sys', 'usr', 'share', 'proc' ]

Ако го направи, това означава, че някои основни команди работят. Но какво, ако искаме да покажем IP адреса на мрежовата карта? Под Linux има команда, наречена ifconfig това прави точно това; да пробваме:

command not found: ifconfig

Изглежда командата ifconfig липсва. Това е така, защото NodeOS няма по подразбиране ifconfig команда. Сега какво? Е, просто е; NodeOS има интегриран мениджър на пакети (като apt или yum), наречен npkg, който се основава на NPM на Node и е лесен за използване. Инсталиране ifconfig е толкова просто, колкото изпълнението на следната команда:

npkg install bin-ifconfig

Ако всичко е минало добре, командата ifconfig вече трябва да е наличен в черупката. Ако се опитаме да го изпълним отново, се показва изход като този (поставям произволен MAC адрес и IP адрес по очевидни причини):

eth0: flags=8863 mtu 1500 ether 01:23:45:67:89:ab inet6 f0cd::ef01:0203:0405:181%en1 prefixlen 64 scopeid 0x5 inet 192.168.0.21 netmask 0xffffff00 broadcast 192.168.0.21 nd6 options=1 media: autoselect status: active

Ако резултатът ви изглежда по някакъв начин, значи работи. Успешно инсталирахте първото си приложение NodeOS: ifconfig.

обработка на изключения при пролетно зареждане

Работи. Какво обаче правим сега с операционната система?

Какъв е смисълът да имате операционна система, написана в Node.js, ако можете да правите същите неща (или дори по-малко неща), които можете да правите в Ubuntu или друга дистрибуция на Linux? Е, целият смисъл е, че всичко е разработено, като не се използва нищо повече от Node.js. Това също означава, че можем развиват нашите приложения не използват нищо повече от Node.js. Например NodeOS няма изпълнение по подразбиране за командата man, която се използва в Linux за показване на ръчни страници на други команди. Не се страхувайте, прилагането му е лесно. Как, чувам как питате? Просто.

Изграждане на приложение NodeOS с Node.js

Първо, нека инсталираме текстов редактор, наречен Hipster, за да можем да създаваме и редактираме файлове, като изпълняваме следната команда: npm install -g [email protected] Този файлов редактор е прост и определено не нещо, което бих използвал като редактор за нещо друго, но в случая е достатъчно добро. Създаването на файлове с Hipster е наистина просто, просто изпълнете hip filename, като hip package.json; за запазване натиснете Ctrl + s и за изход натиснете Ctrl + q. За този пример ще използвам код, разработен от един от основните разработчици на NodeOS, аз всъщност не съм го приложил. Оригиналният код за нашия пример може да бъде намерен в nod-bin-man Git хранилището .

Нека се върнем към създаването на първото ни приложение NodeOS. Както при всяко приложение Node.js (или NPM пакет), ние започваме със създаването на package.json файл, както е в следния пример:

{ 'name': 'bin-man', 'version': '0.0.1', 'description': 'Format and display manual pages', 'bin': { 'man': 'man.js' }, 'repository': 'https://github.com/groundwater/node-bin-man', 'author': 'groundwater', 'license': 'MIT', 'dependencies': { 'blessed': '~0.0.22' } }

Параметрите name, version, author, repository, license и description са обяснителни. bin collection е JSON обект ключ / стойност, съдържащ името на командата и асоцииран JavaScript файл. В нашия пример, man команда е свързана с файла man.js. Колекцията, dependencies, съдържа списък на NPM пакетите, необходими за използването на това приложение. В нашия пример авторът на кода включва Blessed, подобна на проклятия библиотека с API за терминален интерфейс на високо ниво за Node.js.

Сега да преминем към основната част, действителният код.

#!/usr/bin/env node

Тази част се нарича „шебанг“. Всъщност не се изисква от NodeOS, но казва на операционната система как да изпълни следния код. В нашия случай той казва на интерпретатора, че всичко трябва да се изпълни с командата /usr/bin/env node

var fs = require('fs'); var blessed = require('blessed');

Точно както в Node.js, функцията require() зарежда избрания пакет в паметта и го записва в посочената променлива.

var arg = process.argv[2] || 'bin-man';

Стандартното поведение на man команда е да разкажете ръководство за себе си, ако не е посочена друга команда. Нашият пример за код прави същото: Ако не е посочен аргумент за втория параметър (първият е самият човек), той по подразбиране е bin-man.

var path = process.env.HOME + '/lib/node_modules/' + arg + '/README.md'; try{ var readme = fs.readFileSync(path, 'utf-8'); }catch(e){ console.log('No README.md for Package ',arg); process.exit(-1); }

На този етап програмата проверява дали съществува файл на readme за даденото приложение. В NodeOS пътят за инсталиране на всяко приложение е началната директория (или /), последвана от директорията lib/node_modules. Ако файлът README.md съществува, той запазва съдържанието си в променливата readme. В противен случай показва грешка и излиза от процеса.

// Create a screen object. var screen = blessed.screen(); var box = blessed.box({ content: readme, alwaysScroll:true, scrollable: true, }); // Append our box to the screen. screen.append(box);

Blessed има наистина прост API; показването на съдържанието на файл е толкова лесно, колкото да му кажете да създаде box и зареждане на съдържанието.

screen.key(['escape', 'q', 'C-c'], function(ch, key) { return process.exit(0); });

Сега, нека създадем начин за излизане от man приложение. Комбинираме клавишите escape, q или комбинацията в стил emacs C-c за да излезете от процеса.

screen.key(['space','f','j','n'], function(ch, key) { box.scroll(box.height); screen.render(); }); screen.key(['down'], function(ch, key) { box.scroll(1); screen.render(); }); screen.key(['up'], function(ch, key) { box.scroll(-1); screen.render(); }); screen.key(['b','k','p'], function(ch, key) { box.scroll(-box.height); screen.render(); });

Използваме клавишите за насочване, за да превъртаме нагоре или надолу един ред и клавишите space, f, j или n за да превъртите страница надолу (толкова редове, колкото има на екрана). Използвайте b, k или p да се направи обратното.

box.focus(); screen.render();

И накрая, казваме на приложението да се съсредоточи върху box създадохме и изобразихме цялото нещо. Нека поставим тези файлове в директорията /lib/node_modules/bin-man и нека добавим прост README.md, нещо подобно:

# Man Author: @groundwater ## Install npkg install bin-man ## Usage ``` Usage: man PKGNAME Display a packages README.md file ```

Почти приключихме с първото си персонализирано приложение за NodeOS. Остава само една последна малка стъпка; трябва да създадем конфигурационен файл, тъй като това е изискване за NodeOS приложения. Това е толкова просто, колкото създаването на файл по пътя /etc/bin-man/config.json със следното съдържание: {}, празен JSON обект. Сега можем да изпробваме новото ни приложение. Изпълнява се man вътре в черупката NodeOS трябва да показва файла readme, който създадохме по-рано.

Заключение

Както можете да видите с нашия прост пример с код, внедряването на каквото и да е в NodeOS е лесна задача, трябва само да знаете Node.js.

NodeOS има много потенциал и мисля, че може да се превърне в чудесна операционна система, след като бъдат внедрени допълнителни функции. Все още се нуждае от работа, но в резултат на популярността на цялата екосистема, базирана на Node.js, не бих се изненадал, ако бързо стане популярна операционна система. Какво мислиш за това? Кажете ми в коментарите.

Продуктов стратег за съдържание

Други

Продуктов стратег за съдържание
Първи стъпки с криптосистемата SRVB

Първи стъпки с криптосистемата SRVB

Наука За Данни И Бази Данни

Популярни Публикации
ApeeScape разраства връзката си с Amazon Web Services, за да продължи да стимулира икономиката на талантите
ApeeScape разраства връзката си с Amazon Web Services, за да продължи да стимулира икономиката на талантите
Въведение в теорията и сложността на изчислимостта
Въведение в теорията и сложността на изчислимостта
Ръководство стъпка по стъпка за проектиране на персонализирани илюстрации без предишен опит
Ръководство стъпка по стъпка за проектиране на персонализирани илюстрации без предишен опит
Обяснено оптимизиране на ефективността на Magento
Обяснено оптимизиране на ефективността на Magento
Изчерпателно ръководство за дизайн на известия
Изчерпателно ръководство за дизайн на известия
 
Малки данни, големи възможности
Малки данни, големи възможности
Достъпност в мрежата: Защо стандартите W3C често се игнорират
Достъпност в мрежата: Защо стандартите W3C често се игнорират
Бъдещето на UX е нашето човечество
Бъдещето на UX е нашето човечество
Предвиждащ дизайн: Как да създадем магически потребителски опит
Предвиждащ дизайн: Как да създадем магически потребителски опит
Въведение в Python Microservices с Nameko
Въведение в Python Microservices с Nameko
Популярни Публикации
  • принципът на затваряне гласи, че:
  • колко струва индустрията за красота през 2017 г
  • как се рисува в обработка
  • как да проектираме целева страница
  • как да създадем концепция
  • договор към постоянен калкулатор на заплата
Категории
  • Пъргав
  • Иновация
  • Тенденции
  • Back-End
  • © 2022 | Всички Права Запазени

    portaldacalheta.pt