socialgekon.com
  • Hlavná
  • Proces Návrhu
  • Životný Cyklus Produktu
  • Rast Tržieb
  • Finančné Procesy
Back-End

NodeOS: operačný systém založený na JavaScripte

Som si istý, že väčšina programátorov o tom už počula Node.js , ale čo z toho NodeOS ? Áno, NodeOS, operačný systém napísaný v Node.js. No, nejako. NodeOS používa jadro Linuxu pre väčšinu vecí dôležitých pre výkon, ako napríklad hardvérové ​​interakcie, ale pre všetko ostatné používa Node.js. Vývoj systému NodeOS sa začal pred dvoma rokmi a vytvorili ho ľudia, ktorí zdieľali jednoduchý, ale zaujímavý nápad: 'Je možné vytvoriť operačný systém iba pomocou Node.js?'

Darwinov vývojový diagram

Je možné vytvoriť operačný systém iba pomocou Node.js? Tweet

Aký je veľký problém?

Najskôr sa zamyslite nad pokrokom, ktorý Node.js urobila za krátky čas, ktorý tu bol. Teraz premýšľajte o tom istom, čo sa deje s operačným systémom. Potom k tomu pridajme nejaké super veci.



Na užívateľa nezávislý a izolovaný koreňový súborový systém

NodeOS predstavil zaujímavú paradigmu: Ak majú všetci používatelia izolovaný súborový systém, poskytuje im jednoduchú hierarchiu súborového systému, s ktorou môžu pracovať. Pretože ich „domovský priečinok“ je v skutočnosti koreňom ich vlastnej hierarchie súborového systému, môžu inštalovať balíčky globálne bez toho, aby vyžadovali špeciálne oprávnenia a nemuseli nič konfigurovať, pretože sú predvolene nainštalované v domovskom adresári. Poskytuje tiež značnú bezpečnosť; ak hacker nájde spôsob, ako sa dostať do konkrétneho účtu v operačnom systéme, jediný prístup, ku ktorému má prístup, je oddiel daného používateľa. Konečným výsledkom je hacker nemôže kompromitovať celý systém.

Node.js a NPM

Ak sa nad tým zamyslíte, operačný systém, ktorý používa Node.js, znamená, že akýkoľvek balík dostupný v NPM je súčasne aj balíkom NodeOS. V čase písania tohto článku bolo 210 735 balíkov; keďže počet balíkov NPM rastie každú minútu, nebolo by čudné, keby za pár rokov mal NodeOS milión aplikácií.

Je založený na jadre Linuxu

To sa nemusí javiť ako veľká vec, ale Linux je najpoužívanejší operačný systém pre servery. Pretože NodeOS je založený na jadre Linuxu, mohli by ste každú aplikáciu napísanú pre iné distribúcie Linuxu spustiť s minimálnymi zmenami.

Nevýhody

Nakoľko by som chcel hotový NodeOS, ešte tam nie je. Stále mu chýba veľa kľúčových funkcií pre operačný systém servera. Napríklad chýba celá sada nástrojov BASH vrátane ps, tail, nano a grep. Ďalej ho nemôžete spustiť ako operačný systém pre stolné počítače, pretože nemá grafické rozhranie. Iste, niektoré chýbajúce funkcie môžete implementovať pomerne ľahko pomocou trochy JavaScriptu, ale skutočnosť, že všetky spomenuté funkcie nie sú predvolene k dispozícii, nie je dobrá.

Ako si teda môžem vyskúšať NodeOS?

Pomocou Dockeru

Najjednoduchší a najrýchlejší spôsob, ako vyskúšať NodeOS, je použiť nasledovné:

  1. Počítač so systémom Mac OSX alebo Linux. Možno to bude fungovať v systéme Windows, ale neskúšal som to.
  2. Docker.

Po nainštalovaní Dockeru je spustenie inštancie NodeOS jednoduché. Všetko, čo musíte urobiť, je vykonať nasledujúci príkaz a Docker vykoná všetko kúzlo:

sudo docker run -t -i nodeos/nodeos

Najjednoduchší a najrýchlejší spôsob, ako vyskúšať NodeOS, je použitie Dockeru

Najjednoduchší a najrýchlejší spôsob, ako vyskúšať NodeOS, je použitie Dockeru. Tweet

Keď spustíte vyššie uvedený príkaz, Docker automaticky stiahne obraz disku pre NodeOS z úložiska a vykoná inštaláciu NodeOS vo virtuálnom stroji. Po dokončení inštalácie otvorí reláciu SSH v prostredí NodeOS.

Bez ukotvenia

Existuje niekoľko dôvodov, prečo by ste sa chceli vyhnúť používaniu Dockeru. Jedným z nich je najnovšia verzia systému NodeOS. V čase písania tohto článku bola posledná zmena obrazu Docker systému NodeOS vykonaná pred dvoma mesiacmi, zatiaľ čo vývojová verzia bola aktualizovaná pred šiestimi dňami. Pokiaľ teda chcete používať najnovšiu verziu, určite by ste si mali zaobstarať zdrojový kód. To nie je príliš ťažké, ale trvá to dlho. Budete potrebovať:

  1. Počítač s Linuxom. Môžete ho skompilovať na OS X, ale bude to trvať dlhšie, pretože bude musieť vzniknúť krížová kompilácia. To isté platí pre Windows.
  2. Pomocné programy na zostavenie systému Linux (make, g ++, gcc, autoconf).
  3. Qemu.
  4. Čas. Vážne, veľa.

Keď budete mať všetko, môžete pokračovať v kompilácii zdrojového kódu:

  1. Stiahnite si zdrojový kód projektu: bash git clone [email protected] :NodeOS/NodeOS.git.
  2. Zkompilujte ho spustením nasledujúcich príkazov: cd NodeOS a npm install.
  3. Budem citovať, slovo po slove, oficiálnu dokumentáciu: 'Vyberte si mikrovlnnú popcorn a choďte sa pozrieť na film.' Nie, naozaj, urob to. “ . Áno, bude to trvať toľko času, takže medzitým urobte niečo zaujímavé.
  4. Spustiť bash npm start na spustenie NodeOS vo vnútri Qemu.

Funguje to?

Po dokončení inštalácie môžeme skontrolovať, či funguje, vykonaním príkazu ls vo vnútri shellu NodeOS. Mal by sa zobraziť takýto výstup:

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

Ak áno, znamená to, že niektoré základné príkazy fungujú. Čo však v prípade, že chceme zobraziť adresu IP sieťovej karty? V systéme Linux existuje príkaz s názvom ifconfig to robí práve to; Poďme to skúsiť:

command not found: ifconfig

Vyzerá to ako príkaz ifconfig chýba. Je to preto, že NodeOS nemá predvolené ifconfig príkaz. Teraz čo? Je to jednoduché; NodeOS má integrovaného správcu balíkov (napríklad apt alebo yum) s názvom npkg, ktorý je založený na NPM spoločnosti Node a je ľahko použiteľný. Inštaluje sa ifconfig je rovnako jednoduché ako spustenie nasledujúceho príkazu:

npkg install bin-ifconfig

Ak všetko prebehlo dobre, príkaz ifconfig by teraz malo byť k dispozícii v prostredí shell. Ak sa ho pokúsime znova spustiť, zobrazí sa výstup ako tento (zo zrejmých dôvodov som vložil náhodnú MAC adresu a IP adresu):

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

Ak váš výstup vyzerá nejako tak, potom funguje. Úspešne ste nainštalovali svoju prvú aplikáciu NodeOS: ifconfig.

Funguje to. Čo však urobíme teraz s OS?

Aký zmysel má mať operačný systém napísaný v Node.js, ak môžete robiť rovnaké veci (alebo dokonca menej vecí), ktoré môžete robiť v Ubuntu alebo inej distribúcii Linuxu? Celý bod je, že všetko sa vyvíja pomocou ničoho iného ako Node.js. To tiež znamená, že môžeme rozvíjať naše aplikácie nepoužívajú nič iné ako Node.js. Napríklad NodeOS nemá predvolenú implementáciu príkazu man, ktorý sa v systéme Linux používa na zobrazenie manuálnych stránok iných príkazov. Nebojte sa, implementácia je jednoduchá. Ako, počujem, že sa pýtaš? Jednoduché.

Budovanie aplikácie NodeOS s Node.js

Najskôr si nainštalujeme textový editor s názvom Hipster, aby sme mohli vytvárať a upravovať súbory vykonaním nasledujúceho príkazu: npm install -g [email protected] . Tento editor súborov je jednoduchý a určite nie niečo, čo by som použil ako editor pre čokoľvek iné, ale v tomto prípade je to dosť dobré. Vytváranie súborov pomocou aplikácie Hipster je skutočne jednoduché, stačí spustiť hip filename, ako napríklad hip package.json; pre uloženie stlačte Ctrl + s a pre ukončenie stlačte Ctrl + q. V tomto príklade použijem kód vyvinutý jedným z hlavných vývojárov systému NodeOS, sám som ho vlastne neimplementoval. Originálny kód pre náš príklad nájdete v úložisko Git node-bin-man .

Vráťme sa k vytvoreniu našej prvej aplikácie NodeOS. Ako pri každej aplikácii Node.js (alebo balíku NPM), začneme vytvorením package.json súbor, ako v nasledujúcom príklade:

{ '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' } }

Parametre name, version, author, repository, license a description sú samozrejmé. The bin kolekcia je objekt kľúč / hodnota JSON obsahujúci názov príkazu a asociovaný súbor JavaScript. V našom príklade man príkaz je asociovaný so súborom man.js. Zbierka dependencies obsahuje zoznam balíkov NPM, ktoré sú potrebné na používanie tejto aplikácie. V našom príklade bol autorom kódu Blessed, knižnica podobná kliatbám s rozhraním API terminálu na vysokej úrovni pre Node.js.

Teraz poďme k hlavnej časti, skutočnému kódu.

#!/usr/bin/env node

Táto časť sa nazýva „shebang“. NodeOS to v skutočnosti nevyžaduje, ale operačnému systému hovorí, ako vykonať nasledujúci kód. V našom prípade informuje tlmočníka, že všetko je potrebné vykonať príkazom /usr/bin/env node.

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

Rovnako ako v Node.js, aj funkcia require() načíta vybraný balík do pamäte a uloží ho do zadanej premennej.

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

Štandardné správanie a man príkaz povie o sebe manuál, ak nie je zadaný iný príkaz. Náš príklad kódu robí to isté: Ak nie je zadaný žiadny argument pre druhý parameter (prvý je samotný človek), použije sa predvolene 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); }

V tomto okamihu program skontroluje, či pre danú aplikáciu existuje súbor readme. V NodeOS je cestou inštalácie každej aplikácie domovský adresár (alebo /), za ktorým nasleduje adresár lib/node_modules. Ak súbor README.md existuje, uloží svoj obsah do premennej readme. V opačnom prípade zobrazí chybu a ukončí proces.

// 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 má skutočne jednoduché API; zobraziť obsah súboru je také ľahké, ako keď mu poviete, aby vytvoril box a načítanie obsahu.

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

Poďme si teraz vytvoriť spôsob ukončenia man žiadosť. Kombinujeme klávesy escape, q alebo kombinácia štýlov emacs C-c ukončiť proces.

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(); });

Smerovými klávesmi prechádzame nahor alebo nadol o jeden riadok a klávesmi space, f, j alebo n posúvanie nadol po stránke (toľko riadkov, koľko je na obrazovke). Použite b, k alebo p urobiť naopak.

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

Nakoniec povieme aplikácii, aby sa zamerala na box celú vec sme vytvorili a vykreslili. Umiestnime tieto súbory do adresára /lib/node_modules/bin-man a pridajme jednoduché README.md, niečo ako toto:

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

Naša prvá vlastná aplikácia pre NodeOS je takmer hotová. Ostáva už len posledný malý krok; musíme vytvoriť konfiguračný súbor, pretože je to požiadavka pre aplikácie NodeOS. Je to také jednoduché ako vytvorenie súboru v ceste /etc/bin-man/config.json s nasledujúcim obsahom: {}, prázdny objekt JSON. Teraz môžeme vyskúšať našu novú aplikáciu. Beží man vo vnútri shellu NodeOS by mal zobraziť súbor readme, ktorý sme vytvorili skôr.

Záver

Ako vidíte na našom príklade jednoduchého kódu, implementácia všetkého v NodeOS je ľahká úloha, stačí vám vedieť Node.js.

NodeOS má veľa potenciálu a myslím si, že by sa po implementácii ďalších funkcií mohol stať skvelým operačným systémom. Stále to potrebuje prácu, ale v dôsledku popularity celého ekosystému založeného na Node.js by ma neprekvapilo, keby sa rýchlo stal rýchlo obľúbeným operačným systémom. Čo si o tom myslíš? Dajte mi vedieť v komentároch.

WebVR časť 3: Uvoľnenie potenciálu WebAssembly a AssemblyScript

Webové Klientske Rozhranie

WebVR časť 3: Uvoľnenie potenciálu WebAssembly a AssemblyScript
Predpovedanie hodnotení „Páči sa mi to“: Vo vnútri algoritmov jednoduchého modulu odporúčaní

Predpovedanie hodnotení „Páči sa mi to“: Vo vnútri algoritmov jednoduchého modulu odporúčaní

Back-End

Populárne Príspevky
Vytváranie moderných webových aplikácií pomocou AngularJS a Play Framework
Vytváranie moderných webových aplikácií pomocou AngularJS a Play Framework
Zásada jedinej zodpovednosti: Recept na Veľký kódex
Zásada jedinej zodpovednosti: Recept na Veľký kódex
Podrobný sprievodca vytvorením vysvetľujúcich videí k animovaným produktom
Podrobný sprievodca vytvorením vysvetľujúcich videí k animovaným produktom
10 nastavení fotoaparátu iPhone, ktoré radikálne vylepšia vaše fotografie
10 nastavení fotoaparátu iPhone, ktoré radikálne vylepšia vaše fotografie
Genetické algoritmy: Vyhľadávanie a optimalizácia prirodzeným výberom
Genetické algoritmy: Vyhľadávanie a optimalizácia prirodzeným výberom
 
Ako skryť fotografie a videá na iPhone
Ako skryť fotografie a videá na iPhone
Predstavujeme bojové skripty: Boti, lode, chaos!
Predstavujeme bojové skripty: Boti, lode, chaos!
Optimalizácia výkonu webových stránok a cesta kritického vykreslenia
Optimalizácia výkonu webových stránok a cesta kritického vykreslenia
Forma a funkcia - Sprievodca po najlepších drôtových nástrojoch
Forma a funkcia - Sprievodca po najlepších drôtových nástrojoch
The Ultimate Experience: Sprievodca zásadami senzorického dizajnu
The Ultimate Experience: Sprievodca zásadami senzorického dizajnu
Kategórie
StreľbaBudúcnosť PráceŽivotný Cyklus ProduktuTrendyMobilnéKpi A AnalyticsUverejnenieĽudia A TímyProduktoví Ľudia A TímyDizajn Ux

© 2023 | Všetky Práva Vyhradené

socialgekon.com