ΤΙ ΕΙΝΑΙ ΤΟ AIRBNB;
Η πιο δημοφιλής ηλεκτρονική πλατφόρμα για ένα ιδιοκτήτη να νοικιάσει το ακίνητό του (από δωμάτιο μέχρι ένα ολόκληρο κτίριο) για μικρό χρονικό διάστημα κι αντίστοιχα για να βρει κάποιος επισκέπτης το κατάλληλο κατάλυμα σε ολόκληρο τον κόσμο.
Στο Ruby on Rails, υπάρχει μια έννοια της [μετανάστευσης](http://wiki.rubyonrails.org/rails/pages/UnderstandingMigrations) - ένα γρήγορο σενάριο για να αλλάξει τη βάση δεδομένων.


Μπορείτε να δημιουργήσετε ένα αρχείο μετανάστευση, η οποία έχει τους κανόνες για να αυξηθεί η έκδοση db (όπως η προσθήκη μιας στήλης) και τους κανόνες για να υποβαθμίσει την έκδοση (όπως η αφαίρεση μιας στήλης). Κάθε μετανάστευση είναι αριθμημένο, και ένας πίνακας παρακολουθεί την τρέχουσα έκδοση db σας.


Για να *μεταναστεύσουν μέχρι* , μπορείτε να εκτελέσετε μια εντολή που ονομάζεται «db: μεταναστεύσουν», η οποία εξετάζει την έκδοση σας και εφαρμόζει τις απαραίτητες δέσμες ενεργειών. Μπορείτε να μεταναστεύουν προς τα κάτω με τον ίδιο τρόπο.


Οι ίδιοι σενάρια μετανάστευσης διατηρούνται σε ένα σύστημα ελέγχου εκδόσεων - κάθε φορά που αλλάζετε τη βάση δεδομένων που ελέγχει σε ένα νέο σενάριο, και κάθε προγραμματιστής μπορεί να εφαρμοστεί για να φέρει τις τοπικές db τους στην τελευταία έκδοση. LinkDemand απαιτεί ουσιαστικά τον κωδικό κλήσης για να έχουν το συγκεκριμένο δικαίωμα. Η ζήτηση, από την άλλη πλευρά, απαιτεί όχι μόνο την κλήση κώδικα για να έχουν το συγκεκριμένο δικαίωμα, αλλά και τον κώδικα που ονομάζεται τον κωδικό κλήσης και τον κωδικό που ονομάζεται ότι, και ούτω καθεξής, σε όλη τη διαδρομή μέχρι τη στοίβα (ή μέχρις ότου assert βρίσκεται? βλέπε παρακάτω).


LinkDemand μπορεί να επιβληθεί σε ΚΟΕ χρόνο μεταγλώττισης, γιατί αν το πρόγραμμα μεταγλώττισης JIT χτυπά μια δήλωση που καλεί μια μέθοδο με LinkDemand, μπορεί να προσδιορίσει αμέσως αν ο κωδικός κλήσης έχει την άδεια ή όχι. Η ζήτηση πρέπει να εφαρμοστεί κατά το χρόνο εκτέλεσης κάθε φορά που μια κλήση γίνεται με τη μέθοδο, επειδή δεν είναι δυνατή κατά τη μεταγλώττιση για να ξέρετε τι θα είναι στη στοίβα κατά τη διάρκεια οποιαδήποτε πρόσκληση. Ως εκ τούτου, LinkDemand είναι πολύ πιο αποδοτική. Ωστόσο, η αντίστροφη σχέση για την εν λόγω απόδοση είναι λιγότερη ασφάλεια. Με LinkDemand, που πιστεύοντας ότι ο κωδικός κλήσης δεν πρόκειται να αφήσει ΤΗΣ κωδικός κλήσης (που μπορεί ή δεν μπορεί να έχει την άδεια) να το χρησιμοποιήσετε για φαύλους σκοπούς. (Με άλλα λόγια, έχουν εμπιστοσύνη ότι δεν υπάρχουν τρύπες ασφαλείας στον κώδικα κλήσης που καλούντες του μπορεί να εκμεταλλευτεί για να αποκτήσουν πρόσβαση έμμεσα με τη μέθοδο με την LinkDemand.) Με τη ζήτηση, ξέρετε ότι όλοι στη στοίβα έχει καμία απολύτως άδεια (σε τουλάχιστον μέχρι ενός Assert βρεθεί), οπότε δεν υπάρχει κίνδυνος από μη αξιόπιστες καλούντες.


Διεκδικούν είναι ουσιαστικά ένα βραχυκύκλωμα για την ζήτηση. Ο έλεγχος ασφαλείας που συμβαίνει με την ζήτηση σταματά εάν ο καλών στη στοίβα έχει ενεργό διεκδικήσουν (με άλλα λόγια, μόνο οι καλούντες στη στοίβα μέχρι το Assert πρέπει να έχουν την άδεια). Έτσι, όπως LinkDemand, θα πρέπει να εμπιστεύονται ότι ο κώδικας με τον Assert δεν μπορεί να αξιοποιηθεί από τους καλούντες της.


Άρνηση είναι επίσης ένα βραχυκύκλωμα για την ζήτηση, αλλά αντ 'αυτού να προβάλει μια άδεια ακυρώνει μια άδεια που θα μπορούσε να έχει ένας επισκέπτης. Θα χρησιμοποιήσετε αυτό για να βοηθήσει στην πρόληψη πιθανών κενά ασφαλείας, διασφαλίζοντας ότι δεν ξένα άδειες είναι σε ισχύ κατά τη διάρκεια μιας κλήσης που θα μπορούσε να είναι εκμεταλλεύσιμα.


PermitOnly είναι σαν Deny, εκτός αντί να αρνείται μια ειδική άδεια αρνείται κάθε δικαίωμα, εκτός από εκείνη που καθορίζεται.


InheritanceDemand, σε αντίθεση με τους άλλους, δεν σχετίζεται άμεσα με τη μέθοδο κλήσεις, αλλά λέει ότι μια κατηγορία που δεν έχει την άδεια, δεν μπορεί να κληρονομήσει από την τάξη με το InheritanceDemand. Αυτό θα μπορούσε να χρησιμοποιηθεί, για παράδειγμα, να σταματήσει να μη αξιόπιστο κώδικα από το να αποκτήσουν πρόσβαση σε προστατευόμενα μέλη της κατηγορίας που διαφορετικά θα ήταν προσβάσιμη σε απόγονος τάξεις. Κάνατε πολύ καλή δουλειά στο να συνοψίσετε τι είναι φοβερό στο Node.js. Η αίσθησή μου είναι ότι το Node.js είναι ιδιαίτερα κατάλληλο για εφαρμογές όπου θα θέλατε να διατηρήσετε μια μόνιμη σύνδεση από το πρόγραμμα περιήγησης πίσω στον διακομιστή. Χρησιμοποιώντας μια τεχνική γνωστή ως ["long-polling"](https://en.wikipedia.org/wiki/Push_technology#Long_polling), μπορείτε να γράψετε μια εφαρμογή που στέλνει ενημερώσεις στον χρήστη σε πραγματικό χρόνο. Η πραγματοποίηση long polling σε πολλούς από τους γίγαντες του διαδικτύου, όπως το [Ruby on Rails](https://en.wikipedia.org/wiki/Ruby_on_Rails) ή το [Django](https://en.wikipedia.org/wiki/Django_%28web_framework%29), θα δημιουργούσε τεράστιο φόρτο στον διακομιστή, επειδή κάθε ενεργός πελάτης τρώει μια διεργασία του διακομιστή. Αυτή η κατάσταση ισοδυναμεί με επίθεση [tarpit](https://en.wikipedia.org/wiki/Tarpit_(networking)). Όταν χρησιμοποιείτε κάτι όπως το Node.js, ο διακομιστής δεν έχει ανάγκη να διατηρεί ξεχωριστά νήματα για κάθε ανοιχτή σύνδεση. 


Αυτό σημαίνει ότι μπορείτε να δημιουργήσετε μια [εφαρμογή συνομιλίας με βάση το πρόγραμμα περιήγησης](https://github.com/rivalslayer/node_chat) σε Node.js που δεν χρειάζεται σχεδόν καθόλου πόρους συστήματος για να εξυπηρετεί πολλούς πελάτες. Κάθε φορά που θέλετε να κάνετε αυτού του είδους τη μακροχρόνια αναζήτηση, το Node.js είναι μια εξαιρετική επιλογή. 


Αξίζει να αναφέρουμε ότι και η Ruby και η Python έχουν εργαλεία για να κάνουν κάτι τέτοιο ([eventmachine](http://rubyeventmachine.com/) και [twisted](https://twistedmatrix.com/trac/), αντίστοιχα), αλλά ότι το Node.js το κάνει εξαιρετικά καλά, και από την αρχή. Η JavaScript είναι εξαιρετικά καλά τοποθετημένη σε ένα μοντέλο ταυτόχρονης λειτουργίας βασισμένο σε callback, και υπερέχει εδώ. Επίσης, η δυνατότητα σειριοποίησης και αποσειριοποίησης με JSON εγγενές τόσο στον πελάτη όσο και στον διακομιστή είναι αρκετά έξυπνη.


Ανυπομονώ να διαβάσω άλλες απαντήσεις εδώ, αυτή είναι μια φανταστική ερώτηση.


Αξίζει να επισημάνουμε ότι το Node.js είναι επίσης εξαιρετικό για καταστάσεις στις οποίες θα επαναχρησιμοποιήσετε πολύ κώδικα σε όλο το χάσμα πελάτη/εξυπηρετητή. Το [Meteor framework](https://meteor.com) το κάνει αυτό πολύ εύκολο, και πολλοί άνθρωποι προτείνουν ότι αυτό μπορεί να είναι το μέλλον της ανάπτυξης ιστοσελίδων. Μπορώ να πω από την εμπειρία μου ότι είναι πολύ διασκεδαστικό να γράφεις κώδικα στο Meteor, και ένα μεγάλο μέρος αυτού είναι να ξοδεύεις λιγότερο χρόνο σκεπτόμενος πώς θα αναδομήσεις τα δεδομένα σου, ώστε ο κώδικας που εκτελείται στο πρόγραμμα περιήγησης να μπορεί εύκολα να τα χειριστεί και να τα μεταβιβάσει πίσω.


Εδώ είναι ένα άρθρο για το Pyramid και το long-polling, το οποίο αποδεικνύεται ότι είναι πολύ εύκολο να ρυθμιστεί με λίγη βοήθεια από το gevent: [*TicTacToe και Long Polling με την Pyramid*](http://michael.merickel.org/2011/6/21/tictactoe-and-long-polling-with-pyramid/). OO ποτέ βάσεις δεδομένων πήρε από μια εξειδικευμένη αγορά. Είναι καλό για ορισμένες εφαρμογές - όπου η ίδια η δομή των δεδομένων προσφέρεται για να αντιπροσωπεύονται από ένα γράφημα αντικείμενο - αλλά ποτέ δεν πραγματοποιήθηκε το συναρπαστικό πλεονέκτημα σε σχέση με ένα RDBMS να διασχίσουν το χάσμα. Το βασικό πλεονέκτημα κράχτης για τα προϊόντα ΑΣΔΒΔ είναι η σφιχτή ολοκλήρωση με τη γλώσσα της χώρας υποδοχής - δεν υπάρχει κανένα αντικείμενο / σχεσιακή αναντιστοιχία αντίσταση.


Ωστόσο, εξακολουθούν να υπάρχουν αρκετοί προμηθευτές ΑΣΔΒΔ, όπως [πολύτιμων λίθων](http://www.gemstone.com) , [Versant](http://www.versant.com/) ή [Καρδινάλιος](http://www.jadeworld.com/) που κάνουν πολύ καλά με τα προϊόντα τους. Η τεχνολογία είναι χρήσιμη για ορισμένους τύπους των δομών δεδομένων και μπορεί να είναι πιο αποτελεσματική από μια RDBMS, αλλά τείνει να είναι αδύναμο για ερωτήματα ad-hoc σε σύγκριση με τις σύγχρονες διαλέκτους SQL.


Όπως [διάφοροι](https://stackoverflow.com/questions/353258/are-object-oriented-databases-still-in-use#353655)  [άλλοι](https://stackoverflow.com/questions/353258/are-object-oriented-databases-still-in-use#354508) έχουν σημειωθεί, πολύτιμος λίθος είναι να πάρει ένα κομμάτι της προσοχής λόγω της υποστήριξής τους για [Seaside](http://www.seaside.st/) και [Maglev](http://ruby.gemstone.com/) (λιμάνι της [Ruby](http://www.ruby-lang.org/en/) στην λίθος VM με [ράγες](http://www.rubyonrails.org/) που τρέχουν σε αυτό). Μπορούμε να βρούμε αυτό παίρνει τα ωραία παιδιά από πολύτιμων λίθων ένα κομμάτι του Τύπου και με το λίγο περισσότερη προσοχή στο παράδειγμα ΑΣΔΒΔ. yah-noo-ahr roof Εάν χρησιμοποιείτε πολλαπλά αρχεία .htaccess να είναι σίγουρος για να ρυθμίσετε το AuthName το ίδιο. Αυτό λέει το πρόγραμμα περιήγησης που πρέπει να παρέχεται η ίδια προσωρινής αποθήκευσης uid / κωδικό πρόσβασης για αυτό το «βασίλειο». Εάν έχετε συνδεδεμένο `127.0.0.1`με το `my.cnf`αρχείο αυτό σημαίνει ότι μπορείτε να συνδεθείτε μόνο με τη βάση δεδομένων από τον τοπικό υπολογιστή βάσεων δεδομένων. `127.0.0.1`είναι η τοπική διεύθυνση loopback, επιτρέπει μόνο συνδέσεις localhost. Εάν είστε ιστοσελίδα δεν φιλοξενείται στον ίδιο server αυτός είναι ο λόγος που δεν μπορείτε να συνδεθείτε.


Αν θέλετε να συνδεθείτε με τη βάση δεδομένων σας από έναν άλλο διακομιστή δεσμεύουν την LAN IP του server της βάσης δεδομένων στο `my.cnf`αρχείο.


Στη συνέχεια μπορείτε να βάλετε τη LAN IP διεύθυνση του διακομιστή βάσης δεδομένων σε συμβολοσειρά σύνδεσης και θα πρέπει να είναι σε θέση να συνδεθείτε


σφάλμα σας είναι στην πραγματικότητα ένα σφάλμα σύνδεσης με το δίκτυο, που δεν επικυρώνει ακόμα και έτσι προσπαθεί διαφορετικά ονόματα χρήστη και κωδικούς πρόσβασης δεν πρόκειται να βοηθήσει. Μόλις διευθετηθεί τα θέματα του δικτύου θα λάβετε ένα διαφορετικό σφάλμα αν ο έλεγχος ταυτότητας αποτυγχάνει (π.χ. user @ host με τον κωδικό απέτυχε) ρώτησα στα forum του arch και τελικά είναι θέμα virtualbox. έφτιαξα ένα startup.nsh για να ανοίγει τον grub στο διαμέρισμα efi και έφτιαξε.

<https://wiki.archlinux.org/index.php/virtualbox#installation_in_efi_mode> ο σωστός τρόπος είναι

nohup program -option &