Ποια είδη EC2 δεν απαιτούν VPC;




Θα πρέπει να προσθέσετε κάποια ικανότητα σε ένα σύμπλεγμα Spark και φαίνεται να τρέξει μέσα στο ανώτατο όριο w / εκ νέου τους τύπους παράδειγμα, μπορώ να χρησιμοποιήσω χωρίς να αρχίσει μια VPC.


Ο κωδικός που έχω κληρονομήσει να ξεκινήσει το εν λόγω σύμπλεγμα είναι ένα κομμάτι της Groovy μακαρόνια και δεν φαίνεται να είναι το ίδιο δανεισμό για να ενσωματώνει ένα VPC πάρα πολύ εύκολα. Εξ ου και η ανάγκη να εργαστούμε w / έξω.
Είσαι σίγουρος ότι δεν είναι μόνο το όριο παράδειγμα σχετικά με το λογαριασμό που μπορείτε εύκολα να ζητήσετε Amazon για την αύξηση;


Σύμφωνα με [τα έγγραφα](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-vpc.html#vpc-only-instance-types) , αυτά είναι τα μόνα είδη παράδειγμα περιορίζεται σε ένα VPC αυτή τη στιγμή:


* C4
* M4
* Τ2
* X1


Όλοι οι άλλοι τύποι παράδειγμα, θα πρέπει να εξακολουθεί να είναι διαθέσιμη στο EC2 Classic.
> 
> ο διαχωρισμός μεταξύ πιρούνι / exec και δυναμική σύνδεση, εκτός του ότι είναι το είδος των τεχνητών,
> 
> 
> 


Δεν νομίζω τεχνητό της σε όλα. Βασικά είναι ακριβώς κάνει η διαίρεση με βάση το επίπεδο ολοκλήρωσης. Αν το πρόγραμμα έχει «plugins», το οποίο είναι ουσιαστικά φωτιά και να ξεχάσουμε χωρίς ολοκλήρωσης επίπεδο API, τότε το έργο που θα προκύψει είναι μάλλον απίθανο να θεωρηθεί παράγωγη εργασία. Σε γενικές γραμμές ένα plugin το οποίο απλώς διχαλωτή / exec'ed θα ταίριαζε αυτά τα κριτήρια, αν και μπορεί να υπάρχουν περιπτώσεις όπου αυτό δεν συμβαίνει. Η περίπτωση αυτή ισχύει ιδίως εάν ο κωδικός «plugin» θα μπορούσε να λειτουργήσει ανεξάρτητα από τον κωδικό σας επίσης.


Εάν, από την άλλη πλευρά, ο κώδικας εξαρτάται έντονα από την υπό την GPL εργασίας, όπως εκτενώς καλώντας APIs, ή ενσωμάτωση σφιχτή δομή δεδομένων, τότε τα πράγματα είναι πιο πιθανό να θεωρηθεί παράγωγη εργασία. Δηλαδή, το «plugin» δεν μπορεί να υπάρξει από μόνη της, χωρίς το προϊόν GPL, και ένα προϊόν με αυτό το plugin εγκατεστημένο είναι ουσιαστικά μια που προέρχεται έργο του άδεια GPL προϊόντος.


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


Μήπως αυτό κάνει πιο λογικό; Ήρθα προς την αντίθετη κατεύθυνση, από ένα φόντο EE πήρα στον προγραμματισμό και πήγε πίσω στο σχολείο για να πάρει ένα βαθμό CS. Θα ήθελα να συστήσω ξεκινάμε με κάτι που συνδυάζει και τα δύο, προκειμένου να καταστεί η μετάβαση λίγο πιο ομαλή. Υπάρχουν τόνοι των χομπίστα βιβλία όπως [γίνουν τα πράγματα Talk](http://rads.stackoverflow.com/amzn/click/0596510519) , και [Hardware Hacking έργα](http://rads.stackoverflow.com/amzn/click/0596003145) που κάνουν αυτό το πιο εύκολο. Θα ήθελα να συστήσω επίσης τη [Evil Genius](http://rads.stackoverflow.com/amzn/click/0071448810) σειρά από βιβλία σχετικά με την ηλεκτρονική και ρομποτική κυκλώματα.


Charles Petzold του [Κώδικα: Η κρυμμένη Γλώσσα Υλικό υπολογιστών και λογισμικού](http://www.charlespetzold.com/code/index.html) είναι ένα άλλο βιβλίο που κάνει σπουδαία δουλειά της σύνδεσης εννοιών του υλικού και του λογισμικού μαζί. Δεν μπορώ να το συστήσω ιδιαίτερα αρκετό, αν και μπορεί να λαμβάνει μια αντίθετη προσέγγιση από ό, τι είστε μετά. Ξεκινά με απλούς διακόπτες και τρανζίστορ και χτίζει μέχρι να δείξει πώς από όπου και αν συνδυάζονται για να κάνουν ένα προγραμματιζόμενο κύκλωμα. Αυτή είναι μια πολύ καλή ερώτηση.


Νομίζω ότι είναι λεπτή, αλλά σίγουρα λογοδοτούν:


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


Παράδειγμα:



```
(loop for x from 0 below 100
      when (even x)
      collect x)

```

Τούτου λεχθέντος, πιο απλό μακροεντολές χρησιμοποιούν μόνο s-εκφράσεις. Και θέλετε να «κολλήσει» με τη χρήση τους.


Αλλά s-εκφράσεις, όπως Sergio έχει απαντήσει, αρχίζουν να αισθάνονται δεξιά. Η σύνταξη παίρνει έξω από το δρόμο και να ξεκινήσετε την κωδικοποίηση στο δέντρο σύνταξη.


Όσο για μακροεντολές αναγνώστη, ναι, θα μπορούσε ενδεχομένως να γράψετε κάτι σαν αυτό:



```
#R{
      ruby.code.goes.here
  }

```

Αλλά τότε θα πρέπει να γράψετε τη δική σας Ruby σύνταξη αναλυτή.


Μπορείτε, επίσης, να μιμούνται μερικές από τις Ruby κατασκευάζει, όπως τετράγωνα, με μακροεντολές που συγκεντρώνει τις υπάρχουσες Lisp κατασκευές.



```
#B(some lisp (code goes here))

```

θα μεταφραστεί σε



```
(lambda () (some lisp (code goes here)))

```

Δείτε [αυτή τη σελίδα](http://rottcodd.wordpress.com/2007/11/29/lambda-shortcut/) για το πώς να το κάνουμε. Τέλος, ένα θέμα που πραγματικά μπορώ να βάλω μια τιμή απάντηση :). 


Έχω διερευνηθεί f2py, boost.python, γουλιά, cython και πυρέξ για την εργασία μου (PhD στις τεχνικές οπτικής μέτρησης). Θα χρησιμοποιηθεί γουλιά εκτενώς, boost.python μερικές και πυρέξ και cython πολλά. Θα χρησιμοποιηθεί επίσης ctypes. Αυτή είναι η ανάλυση μου:


**Αποποίηση** : Αυτή είναι η προσωπική μου εμπειρία. Δεν εμπλέκομαι με οποιοδήποτε από αυτά τα έργα.


**swig:** 
δεν παίζει καλά με ++ γ. Θα πρέπει, αλλά το όνομα που κατασπαράζουν τα προβλήματα στο στάδιο της σύνδεσης ήταν ένας μεγάλος πονοκέφαλος για μένα σε Linux και Mac OS X. Εάν έχετε κωδικό C και θέλουν να διασυνδεθεί με python, είναι μια καλή λύση. Έχω τυλιγμένο τις GTS για τις ανάγκες μου και έπρεπε να γράψω ουσιαστικά ένα C κοινή βιβλιοθήκη που θα μπορούσα να συνδεθείτε. Εγώ δεν θα το συνιστούσα.


**Ctypes:** 
Έγραψα ένα περιτύλιγμα libdc1394 (IEEE βιβλιοθήκη κάμερα) με τη χρήση ctypes και ήταν μια πολύ straigtforward εμπειρία. Μπορείτε να βρείτε τον κωδικό στο <https://launchpad.net/pydc1394> . Είναι πολλή δουλειά για να μετατρέψει τις κεφαλίδες σε κώδικα python, αλλά στη συνέχεια όλα λειτουργούν αξιόπιστα. Αυτός είναι ένας καλός τρόπος, αν θέλετε να διασυνδέσει μια εξωτερική βιβλιοθήκη. Ctypes είναι επίσης στην stdlib του πύθωνα, έτσι ώστε ο καθένας μπορεί να χρησιμοποιήσει τον κωδικό σας αμέσως. Αυτό είναι επίσης ένας καλός τρόπος για να παίξει γύρω με ένα νέο lib σε python γρήγορα. Μπορώ να το συστήσω σε διασύνδεση με εξωτερικές libs.


**Boost.Python** : Πολύ ευχάριστη. Αν έχετε ήδη κωδικό C ++ της δικής σας που θέλετε να χρησιμοποιήσετε σε python, πάμε για αυτό. Είναι πολύ εύκολο να μεταφράσει τις δομές γ τάξη ++ σε δομές python τάξη με αυτόν τον τρόπο. Θα το συνιστούσα αν έχετε C ++ κώδικα που χρειάζεστε σε python.


**Πυρέξ / Cython:** Χρήση Cython, δεν πυρέξ. Περίοδος. Cython είναι πιο προηγμένη και πιο ευχάριστη στη χρήση. Σήμερα, κάνω τα πάντα με cython που συνήθιζα να κάνω με SWIG ή Ctypes. Επίσης, είναι ο καλύτερος τρόπος αν έχετε κωδικό Python που τρέχει πολύ αργά. Η διαδικασία είναι απολύτως φανταστική: να μετατρέψετε μονάδες python σας σε ενότητες cython, την κατασκευή τους και να διατηρήσουν προφίλ και τη βελτιστοποίηση, όπως ήταν ακόμα python (καμία αλλαγή των εργαλείων που απαιτούνται). Στη συνέχεια μπορείτε να εφαρμόσετε όσο (ή λίγο) τον κωδικό C αναμιγνύεται με κωδικό python σας. Αυτό είναι κατά πολύ πιο γρήγορα στη συνέχεια να ξαναγράψει ολόκληρα τμήματα της εφαρμογής σας σε C? θα ξαναγράψει μόνο το εσωτερικό βρόχο.


**Χρονισμός** : ctypes έχει το υψηλότερο εναέρια κλήση (~ 700ns), ακολουθούμενη από boost.python (322ns), τότε άμεσα από swig (290ns). Cython έχει το χαμηλότερο εναέρια κλήση (124ns) και την καλύτερη ανατροφοδότηση όπου ξοδεύει το χρόνο στην (υποστήριξη cProfile!). Οι αριθμοί είναι από το κουτί μου ζητά ένα ασήμαντο συνάρτηση που επιστρέφει έναν ακέραιο από ένα διαδραστικό κέλυφος? εναέρια μονάδα εισαγωγής ως εκ τούτου δεν χρονικά, λειτουργεί μόνο εναέρια κλήση. Συνεπώς, είναι πιο εύκολο και πιο παραγωγικό να πάρετε τον κωδικό python γρήγορα από προφίλ και τη χρήση cython.


**Περίληψη** : Για το πρόβλημά σας, χρησιμοποιήστε Cython?). Ελπίζω ότι αυτό υποβαθμισμένο θα είναι χρήσιμο για μερικούς ανθρώπους. Θα απαντήσω ευχαρίστως κάθε υπόλοιπο ερώτηση.







**Επεξεργασία** : ξεχάσω να αναφέρω: για αριθμητικούς λόγους (δηλαδή, σύνδεση με NumPy) χρησιμοποιούν Cython? έχουν υποστήριξη για αυτό (γιατί ουσιαστικά την ανάπτυξη cython για το σκοπό αυτό). Έτσι, αυτό θα πρέπει να είναι μια άλλη +1 για την απόφασή σας. Αν χρησιμοποιείτε τάξεις Objective-C, τότε η `[myObject isKindOfClass: [InterestingClass class]]`δοκιμή είναι διαθέσιμη. Αν χρησιμοποιείτε πρωτόγονων τύπων (η οποία ερώτησή σας, αναφέροντας το «διπλό» τύπου, προτείνει), τότε δεν μπορείτε. Ωστόσο, αν κάνετε κάποια πολύ funky πράγματα, ο compiler μπορεί να σας πει πότε πρωτόγονων τύπων ή δεν ταιριάζουν, και όταν δεν θα εκτελέσει έμμεση προώθηση στο επιθυμητό τύπο.


Θα ήταν χρήσιμο να γνωρίζουμε λίγο περισσότερα για το ποιο είναι το συγκεκριμένο πρόβλημα είναι ότι προσπαθείτε να λύσετε, διότι μπορεί να είναι ότι η λύση δεν περιλαμβάνει την ανίχνευση της δημιουργίας διπλασιάζεται σε όλα :-). Λοιπόν, ένα από τα reaons γιατί τάξεις περιλαμβάνουν συνήθως ιδιωτικού μέλη με τις δημόσιες κτήτορες / setters είναι ακριβώς επειδή μπορεί να ελέγξει τα δεδομένα.


Αν έχετε έναν αριθμό από ό, τι μπορεί να είναι μεταξύ 1 και 100, θα έβαζα σίγουρα κάτι το setter που επικυρώνει ότι και τότε ίσως να ρίξει μια εξαίρεση που έχει αλιευθεί από τον κώδικα. Ο λόγος είναι απλός: Αν δεν το κάνουμε στο ρυθμιστή, θα πρέπει να θυμόμαστε ότι 1 έως 100 περιορισμό κάθε φορά που το ρυθμίσετε, η οποία οδηγεί σε διπλές κώδικα ή όταν το ξεχνάμε, οδηγεί σε μια μη έγκυρη κατάσταση.


Όσο για τις επιδόσεις, είμαι με εδώ Knuth:



> 
> «Πρέπει να ξεχάσουμε τις μικρές αποδόσεις, δηλαδή περίπου το 97% του χρόνου. Πρόωρο βελτιστοποίησης είναι η ρίζα όλων των κακών»
> 
> 
> [SmartPaster](http://weblogs.asp.net/alex_papadimoulis/archive/2004/05/25/Smart-Paster-1.1-Add-InStringBuilder-and-Better-C_2300_-Handling.aspx) - (FREE) Copy / Paste γεννήτρια κώδικα για έγχορδα


[AnkhSvn](http://ankhsvn.open.collab.net/) - (FREE) Ολοκλήρωση ελέγχου SVN Πηγή VS.NET


[VisualSVN διακομιστή](http://www.visualsvn.com/server/) - (FREE) Έλεγχος Πηγή


[ReSharper](http://www.jetbrains.com/resharper/index.html) - ενίσχυση IDE που βοηθά με refactoring και την παραγωγικότητα


[CodeRush](http://www.devexpress.com/Products/Visual_Studio_Add-in/Coding_Assistance/) - Κωδικός gen μακροεντολές στα στεροειδή


[Refactor](http://www.devexpress.com/Products/Visual_Studio_Add-in/Refactoring/) - Κωδικός ενίσχυση refactoring


[CodeMaid](http://www.codemaid.net/) (FREE) - Κωδικός καθαρισμό, την οργάνωση και την πολυπλοκότητα ανάλυση


[Codesmith](http://www.codesmithtools.com/) - Γεννήτρια κώδικα


[GhostDoc](http://www.roland-weigelt.de/ghostdoc/) - (FREE) Απλό κωδικό σχολιάζοντας εργαλείο


[DXCore](http://www.devexpress.com/Downloads/Visual_Studio_Add-in/DXCore/) (χωρίς χρέωση) και πολλά φοβερό plugins του: [DxCore Κοινότητα Πρόσθετα](http://code.google.com/p/dxcorecommunityplugins/) , [CR\_Documentor](http://code.google.com/p/cr-documentor/) , [CodeStyleEnforcer](http://joel.fjorden.se/static.php?page=CodeStyleEnforcer) , [RedGreen](http://www.rorybecker.me.uk/DevExpress/Plugins/Community/RedGreen/) Τρέχουμε [Buildbot - Trac](http://buildbot.net/trac) στην εργασία. Δεν έχω χρησιμοποιήσει πάρα πολύ από την βάση κώδικα μου δεν είναι μέρος του κύκλου κυκλοφορίας ακόμα. Αλλά θα τρέξει τις δοκιμές σε διαφορετικά περιβάλλοντα (OSX / Linux / Win) και στέλνει μηνύματα ηλεκτρονικού ταχυδρομείου - και είναι γραμμένο σε Python. κι εγώ το ίδιο αναρωτιέμαι. είμαι στο επίπεδο 12 με 47% ευχέρεια στη χρήση της γλώσσας. Έχω ολοκληρώσει το english tree. από δω και πέρα τι κάνουμε; απλά ενίσχυση γνώσεων για να ανέβουμε επίπεδα; Ίσως να είναι σε θέση να πάρετε κάποιες ιδέες εφαρμογής από την [βιβλιοθήκη Ruby / ProgressBar](http://0xcc.net/ruby-progressbar/ "Ruby / ProgressBar") , η οποία παράγει μπαρ πρόοδο κείμενο. Σκόνταψα σε μια-δυο μήνες πίσω, αλλά δεν έχουν κάνει οποιαδήποτε χρήση του.