socialgekon.com
  • Tärkein
  • Muu
  • Web-Käyttöliittymä
  • Työn Tulevaisuus
  • Suunnittelu
Taustaa

NodeOS: JavaScript-pohjainen käyttöjärjestelmä

Olen varma, että useimmat ohjelmoijat ovat kuulleet Node.js , Entä NodeOS ? Kyllä, NodeOS, Node.js: ään kirjoitettu käyttöjärjestelmä. No, sellainen. NodeOS käyttää Linux-ydintä useimpiin suorituskykykriittisiin asioihin, kuten esimerkiksi laitteistovaikutuksiin, mutta kaikkeen muuhun se käyttää Node.js-tiedostoa. NodeOS-kehitys alkoi kaksi vuotta sitten, ja sen loivat ihmiset, joilla oli yksinkertainen, mutta kiehtova idea: 'Onko mahdollista luoda käyttöjärjestelmä vain Node.js: n avulla?'

Darwinin evoluutiokaavio

Voiko käyttöjärjestelmän luoda vain Node.js: llä? Tweet

Mikä on iso juttu?

Ajattele ensinnäkin Node.js: n edistymistä lyhyessä ajassa. Ajattele nyt samaa, mitä tapahtuu käyttöjärjestelmässä. Sitten lisätään siihen hienoja juttuja.



Käyttäjäkohtainen ja erillinen päätiedostojärjestelmä

NodeOS esitteli mielenkiintoisen paradigman: Jos kaikilla käyttäjillä on eristetty tiedostojärjestelmä, se antaa heille yksinkertaisen tiedostojärjestelmähierarkian työskennellä. Koska heidän 'kotikansionsa' on itse asiassa heidän oman tiedostojärjestelmänsä hierarkian juuret, he voivat asentaa paketteja maailmanlaajuisesti tarvitsematta erityisiä käyttöoikeuksia eikä heidän tarvitse määrittää mitään, koska ne asennetaan oletusarvoisesti kotihakemistoonsa. Lisäksi se tarjoaa paljon turvallisuutta; jos hakkeri löytää tavan päästä tiettyyn tiliin käyttöjärjestelmässä, ainoa osio, johon hän pääsee, on kyseisen käyttäjän osio. Lopputulos on hakkeri ei voi vaarantaa koko järjestelmän.

Node.js ja NPM

Jos ajattelet sitä, Node.js: ää käyttävä käyttöjärjestelmä tarkoittaa, että mikä tahansa NPM: ssä saatavilla oleva paketti on samalla myös NodeOS-paketti. Kirjoitushetkellä on 210735 pakettia; Koska NPM-pakettien määrä kasvaa joka minuutti, ei ole outoa, jos muutamassa vuodessa NodeOSilla on miljoona sovellusta.

Se perustuu Linux-ytimeen

Tämä ei ehkä näytä kovin suurelta, mutta Linux on eniten käytetty palvelimen käyttöjärjestelmä. Koska NodeOS perustuu Linux-ytimeen, voit suorittaa kaikki muut Linux-jakeluille kirjoitetut sovellukset minimaalisilla muutoksilla.

Haittoja

Niin paljon kuin haluaisin valmiin NodeOS: n, sitä ei vielä ole. Sieltä puuttuu edelleen monia palvelimen käyttöjärjestelmän avaintoimintoja. Esimerkiksi koko BASH-työkalusarja puuttuu, mukaan lukien ps, häntä, nano ja grep. Et myöskään voi käyttää sitä työpöydän käyttöjärjestelmänä, koska sillä ei ole käyttöliittymää. Toki, voit toteuttaa joitain puuttuvia ominaisuuksia melko helposti käyttämällä hieman JavaScriptiä, mutta se, että kaikki mainitut ominaisuudet eivät ole oletusarvoisesti käytettävissä, ei ole hyvä.

Joten miten voin kokeilla NodeOSia?

Dockerin käyttäminen

Helpoin ja nopein tapa kokeilla NodeOSia on käyttää seuraavaa:

  1. Tietokone, jossa on joko Mac OSX tai Linux. Se saattaa toimia Windowsin kanssa, mutta en kokeillut sitä.
  2. Satamatyöläinen.

Kun olet asentanut Dockerin, NodeOS-ilmentymän suorittaminen on helppoa. Sinun tarvitsee vain suorittaa seuraava komento, ja Docker tekee kaiken taikuuden:

sudo docker run -t -i nodeos/nodeos

Helpoin ja nopein tapa kokeilla NodeOS on Docker

Helpoin ja nopein tapa kokeilla NodeOS on Docker. Tweet

Kun suoritat yllä mainitun komennon, Docker lataa NodeOS-levykuvan automaattisesti arkistosta ja suorittaa NodeOS-asennuksen virtuaalikoneessa. Kun asennus on valmis, se avaa SSH-istunnon NodeOS-kuoreen.

Ilman telakkaa

On joitain syitä, miksi haluat välttää Dockerin käyttöä, ja yksi on uusin NodeOS-versio. Kirjoitushetkellä viimeinen muutos NodeOS: n Docker-kuvaan tehtiin kaksi kuukautta sitten, kun taas kehitysversio päivitettiin kuusi päivää sitten. Joten, jos haluat käyttää uusinta versiota, sinun on ehdottomasti hankittava lähdekoodi. Se ei ole liian vaikeaa, mutta se kestää kauan. Tarvitset:

  1. Tietokone, jossa on Linux. Voit kääntää sen OS X: ssä, mutta se vie kauemmin, koska sen on tehtävä ristikokoelma. Sama koskee Windowsia.
  2. Linux rakentaa apuohjelmia (make, g ++, gcc, autoconf).
  3. Qemu.
  4. Aika. Vakavasti, paljon.

Kun sinulla on kaikki, voit jatkaa lähdekoodien kokoamista:

  1. Lataa projektin lähdekoodi: bash git clone [email protected] :NodeOS/NodeOS.git.
  2. Käännä se suorittamalla seuraavat komennot: cd NodeOS ja npm install.
  3. Lainaan sana sanalta virallisia asiakirjoja: ”Valitse mikroaaltouuni popcorn ja mene katsomaan elokuvaa. Ei, todella, tee se. ' . Kyllä, se vie niin paljon aikaa, joten tee jotain mielenkiintoista sillä välin.
  4. Suorita bash npm start suorittaa NodeOS Qemun sisällä.

Toimiiko se?

Kun asennus on valmis, voimme tarkistaa, toimiiko se suorittamalla NodeOS-kuoren sisällä komennon ls Tämänkaltaisen tuloksen pitäisi näkyä:

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

Jos se toimii, se tarkoittaa, että jotkut peruskomennot toimivat. Entä jos haluamme näyttää verkkokortin IP-osoitteen? Linuxissa on komento nimeltä ifconfig se tekee juuri niin; kokeillaan:

command not found: ifconfig

Näyttää siltä, ​​että komento ifconfig puuttuu. Tämä johtuu siitä, että NodeOS: lla ei ole oletusarvoa ifconfig komento. Mitä nyt? No, se on yksinkertaista; NodeOS: lla on integroitu paketinhallinta (kuten apt tai yum), nimeltään npkg, joka perustuu Solmun NPM: ään ja on helppokäyttöinen. Asennetaan ifconfig on yhtä yksinkertainen kuin seuraavan komennon suorittaminen:

npkg install bin-ifconfig

Jos kaikki meni hyvin, komento ifconfig pitäisi nyt olla saatavilla kuoressa. Jos yritämme suorittaa sen uudelleen, tällainen tulos näkyy (laitoin satunnaisen MAC-osoitteen ja IP-osoitteen ilmeisistä syistä):

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

Jos tulos näyttää sellaiselta, se toimii. Olet asentanut ensimmäisen NodeOS-sovelluksen: ifconfig.

Se toimii. Mitä kuitenkin teemme nyt käyttöjärjestelmän kanssa?

Mitä järkeä on, että käyttöjärjestelmä on kirjoitettu Node.js-tiedostoon, jos voit tehdä samoja asioita (tai jopa vähemmän asioita) kuin Ubuntussa tai muussa Linux-jakelussa? No, koko asia on, että kaikki on kehitetty käyttämällä muuta kuin Node.js. Se tarkoittaa myös, että voimme kehittää sovelluksissamme, jotka eivät käytä muuta kuin Node.js. Esimerkiksi NodeOS: lla ei ole oletusasetusta komennolle man, jota käytetään Linuxissa muiden komentojen manuaalisten sivujen näyttämiseen. Älä pelkää, sen toteuttaminen on helppoa. Kuinka, kuulen sinun kysyvän? Yksinkertainen.

NodeOS-sovelluksen rakentaminen Node.js: n avulla

Asennetaan ensin tekstieditori nimeltä Hipster, jotta voimme luoda ja muokata tiedostoja suorittamalla seuraavan komennon: npm install -g [email protected] Tämä tiedostojen muokkausohjelma on yksinkertainen ja ehdottomasti ei jotain, jota käytän muokkaajana mihinkään muuhun, mutta se on tässä tapauksessa tarpeeksi hyvä. Tiedostojen luominen Hipsterillä on todella yksinkertaista, suorita vain hip filename, kuten hip package.json; tallenna painamalla Ctrl + s ja poistuaksesi paina Ctrl + q. Tässä esimerkissä aion käyttää koodia, jonka on kehittänyt yksi tärkeimmistä NodeOS-kehittäjistä, en itse ole itse ottanut sitä käyttöön. Esimerkkimme alkuperäinen koodi löytyy osoitteesta solmu-bin-man Git -tietovarasto .

Palataan ensimmäisen NodeOS-sovelluksen luomiseen. Kuten jokaisessa Node.js-sovelluksessa (tai NPM-paketissa), aloitamme luomalla package.json tiedosto, kuten seuraavassa esimerkissä:

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

Parametrit name, version, author, repository, license ja description ovat itsestään selviä. bin kokoelma on JSON-avain / arvo-objekti, joka sisältää komennon nimen ja siihen liittyvän JavaScript-tiedoston. Esimerkissämme man komento liittyy tiedostoon man.js Kokoelma dependencies sisältää luettelon NPM-paketeista, joita tarvitaan tämän sovelluksen käyttämiseen. Esimerkissämme koodin kirjoittaja sisälsi kirouksen kaltaisen kirouksen kaltaisen kirjaston, jolla on korkean tason päätelaitteiden rajapinta Node.js: lle.

Mennään nyt pääosaan, varsinaiseen koodiin.

#!/usr/bin/env node

Tätä osaa kutsutaan 'shebangiksi'. NodeOS ei todellakaan vaadi sitä, mutta se kertoo käyttöjärjestelmälle, kuinka seuraava koodi suoritetaan. Meidän tapauksessamme se kertoo tulkkille, että kaikki on suoritettava komennolla /usr/bin/env node.

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

Aivan kuten Node.js: ssä, funktio require() lataa valitun paketin muistiin ja tallentaa sen määritettyyn muuttujaan.

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

man: N vakiokäyttäytyminen komento on kertoa käyttöoppaasta itsestään, jos muuta komentoa ei ole määritetty. Koodiesimerkkimme tekee samoin: Jos toiselle parametrille (ensimmäinen on ihminen itse) ei määritetä argumenttia, se on oletuksena 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); }

Tässä vaiheessa ohjelma tarkistaa, onko annetulle sovellukselle readme-tiedosto. NodeOSissa jokaisen sovelluksen asennuspolku on kotihakemisto (tai /), jota seuraa hakemisto lib/node_modules. Jos tiedosto README.md on olemassa, se tallentaa sisällön muuttujaan readme. Muussa tapauksessa se näyttää virheen ja sulkee prosessin.

// 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);

Siunatulla on todella yksinkertainen sovellusliittymä; tiedoston sisällön näyttäminen on yhtä helppoa kuin käskeminen luoda box ja sisällön lataaminen.

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

Luodaan nyt tapa poistua man -sivulta sovellus. Yhdistämme näppäimet escape, q tai emacs-tyylinen yhdistelmä C-c poistuaksesi prosessista.

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

Selataan suuntanäppäimiä ylös tai alas yhdellä rivillä ja näppäimet space, f, j tai n vierittää sivua alaspäin (niin monta riviä kuin näytöllä on). Käytä b, k tai p tehdä päinvastoin.

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

Lopuksi käskemme sovelluksen keskittymään box loimme ja renderöimme kaiken. Laitetaan nuo tiedostot hakemistoon /lib/node_modules/bin-man ja lisätään yksinkertainen README.md, jotain tällaista:

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

Ensimmäisen mukautetun NodeOS-sovelluksen käyttö on melkein valmis. Vain yksi viimeinen pieni askel on jäljellä; meidän on luotava asetustiedosto, koska se on vaatimus NodeOS-sovelluksille. Se on yhtä yksinkertaista kuin luoda tiedosto polulle /etc/bin-man/config.json seuraavalla sisällöllä: {}, tyhjä JSON-objekti. Nyt voimme kokeilla uutta sovellustamme. Juoksu man NodeOS-kuoren sisällä pitäisi näkyä aiemmin luoma readme-tiedosto.

Johtopäätös

Kuten voit nähdä yksinkertaisen koodiesimerkkimme avulla, minkä tahansa toteuttaminen NodeOSissa on helppo tehtävä, sinun tarvitsee vain tietää Node.js.

NodeOS: lla on runsaasti potentiaalia, ja mielestäni siitä voi tulla loistava käyttöjärjestelmä, kun lisäominaisuudet otetaan käyttöön. Se tarvitsee edelleen työtä, mutta koko Node.js-pohjaisen ekosysteemin suosion vuoksi en olisi yllättynyt, jos siitä tulisi nopeasti suosittu käyttöjärjestelmä. Mitä mieltä olet siitä? Kerro minulle kommenteissa.

Mielen silmä - katsaus datan visualisointipsykologiaan

Ux-Suunnittelu

Mielen silmä - katsaus datan visualisointipsykologiaan
Tekoälyn nykyisyys ja tulevaisuus suunnittelussa (infografiikan kanssa)

Tekoälyn nykyisyys ja tulevaisuus suunnittelussa (infografiikan kanssa)

Ux-Suunnittelu

Suosittu Viestiä
Elixir-ohjelmointikielen käytön aloittaminen
Elixir-ohjelmointikielen käytön aloittaminen
Heuristinen analyysi UX: lle - Kuinka suorittaa käytettävyyden arviointi
Heuristinen analyysi UX: lle - Kuinka suorittaa käytettävyyden arviointi
Tietorakenteen periaatteet mobiililaitteille (infografiikan kanssa)
Tietorakenteen periaatteet mobiililaitteille (infografiikan kanssa)
Reagoiva suunnittelu ei riitä, tarvitsemme reagoivaa suorituskykyä
Reagoiva suunnittelu ei riitä, tarvitsemme reagoivaa suorituskykyä
Google-kuvat ja tietosuoja: Näin pidät valokuvasi turvassa
Google-kuvat ja tietosuoja: Näin pidät valokuvasi turvassa
 
Kuinka käyttää Google Kuvia iPhonessa kuvien varmuuskopioimiseen, tallentamiseen ja jakamiseen
Kuinka käyttää Google Kuvia iPhonessa kuvien varmuuskopioimiseen, tallentamiseen ja jakamiseen
Ansiosopimukset: Rakenteet neuvottelujen kuolleiden pisteiden rikkomiseksi
Ansiosopimukset: Rakenteet neuvottelujen kuolleiden pisteiden rikkomiseksi
Koneoppimisen numerotunnistus - nollasta sovellukseen
Koneoppimisen numerotunnistus - nollasta sovellukseen
Hinta on oikea - yleiskatsaus hinnoittelustrategiaan kuluttajayrityksille
Hinta on oikea - yleiskatsaus hinnoittelustrategiaan kuluttajayrityksille
Kuinka lisätä musiikkia Instagram-tarinaan tarroilla tai ilman
Kuinka lisätä musiikkia Instagram-tarinaan tarroilla tai ilman
Luokat
Tietojenkäsittely Ja TietokannatiOS-vinkkejäWeb-KäyttöliittymäTrenditProjektinhallintaKetteräAmmuntaOngelmien karttoittaminenElämäntapaTaustaa

© 2023 | Kaikki Oikeudet Pidätetään

socialgekon.com