portaldacalheta.pt
  • Κύριος
  • Σχεδιασμός Ux
  • Κερδοφορία & Αποδοτικότητα
  • Κύκλος Ζωής Προϊόντος
  • Ευκίνητος
Πίσω Μέρος

NodeOS: Το λειτουργικό σύστημα με βάση τη JavaScript



Είμαι βέβαιος ότι έχουν ακούσει οι περισσότεροι προγραμματιστές Node.js αλλά τι γίνεται NodeOS ; Ναι, NodeOS, ένα λειτουργικό σύστημα γραμμένο στο Node.js. Λοιπόν. Το NodeOS χρησιμοποιεί τον πυρήνα Linux για τα περισσότερα κρίσιμα πράγματα όπως, για παράδειγμα, αλληλεπιδράσεις υλικού, αλλά για οτιδήποτε άλλο χρησιμοποιεί το Node.js. Η ανάπτυξη του NodeOS ξεκίνησε πριν από δύο χρόνια και δημιουργήθηκε από άτομα που μοιράστηκαν μια απλή, αλλά ενδιαφέρουσα ιδέα: 'Είναι δυνατή η δημιουργία ενός λειτουργικού συστήματος χρησιμοποιώντας μόνο το Node.js;'

Ποια από τις παρακάτω προτάσεις δεν ισχύει για την κεφαλαιοποίηση των ομόρρυθμων εταιρειών;

Το διάγραμμα εξέλιξης του Δαρβίνου



Είναι δυνατή η δημιουργία ενός λειτουργικού συστήματος χρησιμοποιώντας μόνο το Node.js; Τιτίβισμα

Ποια είναι η μεγάλη υπόθεση;

Πρώτα απ 'όλα, σκεφτείτε την πρόοδο που έχει σημειώσει το 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. Τιτίβισμα

Όταν εκτελείτε την προαναφερθείσα εντολή, το Docker κατεβάζει αυτόματα την εικόνα δίσκου για το NodeOS από ένα αποθετήριο και εκτελεί την εγκατάσταση του NodeOS μέσα σε μια εικονική μηχανή. Μόλις ολοκληρωθεί η εγκατάσταση, ανοίγει μια περίοδο λειτουργίας SSH στο κέλυφος NodeOS.

Χωρίς λιμενεργάτη

Υπάρχουν ορισμένοι λόγοι για τους οποίους θα θέλατε να αποφύγετε τη χρήση του Docker, και ένας από αυτούς είναι η τελευταία έκδοση του NodeOS. Τη στιγμή της γραφής, η τελευταία αλλαγή στην εικόνα Docker του NodeOS πραγματοποιήθηκε πριν από δύο μήνες, ενώ η έκδοση ανάπτυξης ενημερώθηκε πριν από έξι ημέρες. Έτσι, εάν θέλετε να χρησιμοποιήσετε την πιο πρόσφατη έκδοση, θα πρέπει σίγουρα να λάβετε τον πηγαίο κώδικα. Αυτό δεν είναι πολύ δύσκολο, αλλά χρειάζεται πολύς χρόνος. Θα χρειαστείτε:



  1. Ένας υπολογιστής με Linux. Μπορείτε να το μεταγλωττίσετε στο OS X, αλλά θα χρειαστεί περισσότερος χρόνος από τη στιγμή που πρέπει να κάνει μια διασταυρούμενη συλλογή. Το ίδιο ισχύει και για τα Windows.
  2. Τα βοηθητικά προγράμματα build Linux (make, g ++, gcc, autoconf).
  3. Κέμε.
  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, δεν τον έχω υλοποιήσει. Ο αρχικός κώδικας για το παράδειγμά μας βρίσκεται στο το αποθετήριο Git node-bin-man .

Ας επιστρέψουμε στη δημιουργία της πρώτης εφαρμογής 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 Η συλλογή είναι ένα αντικείμενο κλειδιού / τιμής JSON που περιέχει το όνομα της εντολής και ένα σχετικό αρχείο JavaScript. Στο παράδειγμά μας, το man Η εντολή σχετίζεται με το αρχείο man.js. Η συλλογή, dependencies, περιέχει μια λίστα πακέτων NPM που απαιτούνται για τη χρήση αυτής της εφαρμογής. Στο παράδειγμά μας, ο συντάκτης του κώδικα περιλάμβανε το Blessed, μια βιβλιοθήκη τύπου κατάρας με ένα τερματικό API διεπαφής υψηλού επιπέδου για το Node.js.

Τώρα ας πάμε στο κύριο μέρος, τον πραγματικό κώδικα.

#!/usr/bin/env node

Αυτό το μέρος ονομάζεται 'shebang'. Στην πραγματικότητα δεν απαιτείται από το 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.

llc εναντίον s-corp εναντίον c-corp

Το NodeOS έχει πολλές δυνατότητες και νομίζω ότι θα μπορούσε να γίνει ένα εξαιρετικό λειτουργικό σύστημα μόλις εφαρμοστούν πρόσθετα χαρακτηριστικά. Χρειάζεται ακόμα δουλειά, αλλά ως αποτέλεσμα της δημοτικότητας ολόκληρου του οικοσυστήματος που βασίζεται στο Node.js, δεν θα εκπλαγώ αν γίνει γρήγορα ένα δημοφιλές λειτουργικό σύστημα. Τι πιστεύετε για αυτό; Επιτρέψτε μου να μάθω στα σχόλια.

Ευέλικτη τεκμηρίωση: Εξισορρόπηση ταχύτητας και διατήρηση γνώσης

Ευκίνητος

Ευέλικτη τεκμηρίωση: Εξισορρόπηση ταχύτητας και διατήρηση γνώσης
Μαξιμαλιστικός σχεδιασμός και το πρόβλημα με τον μινιμαλισμό

Μαξιμαλιστικός σχεδιασμός και το πρόβλημα με τον μινιμαλισμό

Σχεδιασμός Ux

Δημοφιλείς Αναρτήσεις
Αισθητική και αντίληψη - Τρόπος προσέγγισης εικόνων εμπειρίας χρήστη
Αισθητική και αντίληψη - Τρόπος προσέγγισης εικόνων εμπειρίας χρήστη
Βέλτιστες πρακτικές διάταξης ιστού: Αναλύθηκαν 12 διαχρονικά μοτίβα διεπαφής χρήστη
Βέλτιστες πρακτικές διάταξης ιστού: Αναλύθηκαν 12 διαχρονικά μοτίβα διεπαφής χρήστη
Εξοικείωση με το Πρόγραμμα ανάπτυξης Sketch
Εξοικείωση με το Πρόγραμμα ανάπτυξης Sketch
Mini Tutorial - Ένας οδηγός για συνδυασμούς γραμματοσειρών
Mini Tutorial - Ένας οδηγός για συνδυασμούς γραμματοσειρών
Για Σχεδιαστές με Αγάπη (Ένα Γράμμα από έναν Προγραμματιστή Front-end)
Για Σχεδιαστές με Αγάπη (Ένα Γράμμα από έναν Προγραμματιστή Front-end)
 
Σχεδιασμός βάσει δεδομένων και γενετικός σχεδιασμός - Μια επισκόπηση
Σχεδιασμός βάσει δεδομένων και γενετικός σχεδιασμός - Μια επισκόπηση
Διακομιστές ARM: Κινητή αρχιτεκτονική CPU για κέντρα δεδομένων;
Διακομιστές ARM: Κινητή αρχιτεκτονική CPU για κέντρα δεδομένων;
Ξεκινήστε με μικροσυσκευές: Ένα εκπαιδευτικό πρόγραμμα Dropwizard
Ξεκινήστε με μικροσυσκευές: Ένα εκπαιδευτικό πρόγραμμα Dropwizard
Μείνετε Sharp - Πώς να ενισχύσετε τη δημιουργικότητα όταν υποχωρεί η εργασία
Μείνετε Sharp - Πώς να ενισχύσετε τη δημιουργικότητα όταν υποχωρεί η εργασία
Ditch MVP, Υιοθετήστε Ελάχιστα Βιώσιμα Πρωτότυπα (MVPr)
Ditch MVP, Υιοθετήστε Ελάχιστα Βιώσιμα Πρωτότυπα (MVPr)
Δημοφιλείς Αναρτήσεις
  • Πώς να αποφύγετε τις διαρροές μνήμης στη java
  • χακαρισμένοι αριθμοί πιστωτικών καρτών που λειτουργούν
  • ερωτήσεις δέουσας επιμέλειας
  • AWS πιστοποιημένος οδηγός μελέτης αρχιτέκτονα λύσεων
  • ποιοι είναι οι κύριοι τύποι συναλλαγματικών κινδύνων
Κατηγορίες
  • Σχεδιασμός Ux
  • Κερδοφορία & Αποδοτικότητα
  • Κύκλος Ζωής Προϊόντος
  • Ευκίνητος
  • © 2022 | Ολα Τα Δικαιώματα Διατηρούνται

    portaldacalheta.pt