πώς να προφέρει garish;
gar-ish
Karl είναι απολύτως σωστό, δεν υπάρχει ανάγκη να ρυθμίσετε αντικείμενα για να άκυρη μετά τη χρήση. Αν ένα αντικείμενο υλοποιεί `IDisposable`, απλά φροντίστε να καλέσετε `IDisposable.Dispose()`όταν τελειώσετε με αυτό το αντικείμενο (τυλιγμένο σε μια `try`.. `finally`, ή, ένα `using()`μπλοκ). Αλλά ακόμα και αν δεν θυμάστε να καλέσετε `Dispose()`, η μέθοδος finaliser στο αντικείμενο θα πρέπει να καλούν `Dispose()`για εσάς.


Σκέφτηκα ότι αυτό ήταν μια καλή θεραπεία:


[Σκάβοντας σε IDisposable](http://msdn.microsoft.com/en-us/magazine/cc163392.aspx)


και αυτό 


[Κατανόηση IDisposable](http://web.archive.org/web/20090426210049/www.marcclifton.com/tabid/79/Default.aspx)


Δεν υπάρχει κανένα νόημα να προσπαθούμε να μαντέψουμε το δεύτερο το GC και τις στρατηγικές διαχείρισης της επειδή είναι μόνος ρύθμιση και αδιαφανές. Υπήρξε μια καλή συζήτηση για τις εσωτερικές διεργασίες με Jeffrey Ρίχτερ στο Dot Net Rocks εδώ: [Jeffrey Ρίχτερ στο μοντέλο μνήμης των Windows](http://www.dotnetrocks.com/default.aspx?showNum=361) βιβλίου και Richters [CLR μέσω C #](http://www.compman.co.uk/scripts/browse.asp?ref=747022) κεφάλαιο 20 έχει μια πολύ καλή θεραπεία: Γράφοντας διασυνδέσεις «μόνο και μόνο επειδή» μου φαίνεται σαν χάσιμο χρόνου και ενέργειας, για να μην αναφέρω μια παραβίαση των KISS-αρχή.


Τους γράψω όταν είναι πραγματικά χρήσιμα στην εκπροσώπηση κοινή συμπεριφορά των σχετικών κατηγοριών, όχι μόνο ως ένα φανταχτερό αρχείο μπάλα. Ήρθα προς την αντίθετη κατεύθυνση, από ένα φόντο 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) είναι ένα άλλο βιβλίο που κάνει σπουδαία δουλειά της σύνδεσης εννοιών του υλικού και του λογισμικού μαζί. Δεν μπορώ να το συστήσω ιδιαίτερα αρκετό, αν και μπορεί να λαμβάνει μια αντίθετη προσέγγιση από ό, τι είστε μετά. Ξεκινά με απλούς διακόπτες και τρανζίστορ και χτίζει μέχρι να δείξει πώς από όπου και αν συνδυάζονται για να κάνουν ένα προγραμματιζόμενο κύκλωμα. Εύκολο μου click-by-click οδηγίες ( **ειδικά για TortoiseSVN** ) είναι Stack λόγω υπερχείλισης *[Ποιος είναι ο απλούστερος τρόπος για να γίνει διακλάδωση και συγχώνευση με τη χρήση TortoiseSVN;](https://stackoverflow.com/questions/1461922)* . <p>δεν περιγράφετε κλίμακα για να ταιριάζει. περιγράφεις την εμφάνιση. (έχω επεξεργαστεί την ερώτησή σας σε αυτό το θέμα.) η υποβολή γίνεται όσο το δυνατόν μεγαλύτερη, διατηρώντας παράλληλα την αναλογία της και προσαρμόζοντας εξ ολοκλήρου μέσα στον γονέα της.</p><p>τέλος πάντων, μπορείτε να το κάνετε αυτό με αυτόματη διάταξη. μπορείτε να το κάνετε εξ ολοκλήρου στο ib από xcode 5.1. ας ξεκινήσουμε με μερικές προβολές:</p><p><img src="https://i.stack.imgur.com/hhdxr.png" alt="some views"></p><p>η ανοιχτή πράσινη όψη έχει αναλογία διαστάσεων 4: 1. η σκούρα πράσινη προβολή έχει αναλογία διαστάσεων 1: 4. πρόκειται να δημιουργήσω περιορισμούς έτσι ώστε η μπλε όψη να γεμίζει το πάνω μισό της οθόνης, η ροζ όψη να γεμίζει το κάτω μισό της οθόνης και κάθε πράσινη προβολή να επεκτείνεται όσο το δυνατόν περισσότερο, διατηρώντας παράλληλα τον λόγο διαστάσεων και προσαρμόζοντας την δοχείο.</p><p>κατ 'αρχάς, θα δημιουργήσω περιορισμούς και στις τέσσερις πλευρές της μπλε όψης. θα το περάσω στον κοντινότερο γείτονα σε κάθε άκρη, με απόσταση 0. φροντίζω να απενεργοποιήσω τα περιθώρια:</p><p><img src="https://i.stack.imgur.com/yo2jf.gif" alt="blue constraints"></p><p>σημειώστε ότι το i <strong> δεν ενημερώνει </strong> το πλαίσιο ακόμα. θεωρώ ότι είναι ευκολότερο να αφήνετε χώρο μεταξύ των απόψεων κατά τη δημιουργία περιορισμών και απλά να ορίσετε τις σταθερές στο 0 (ή οτιδήποτε άλλο) με το χέρι.</p><p>στη συνέχεια, κλίνω το αριστερό, το κάτω και το δεξί άκρο της ροζ εικόνας στον πλησιέστερο γείτονά της. δεν χρειάζεται να ρυθμίσω έναν ανώτατο περιορισμό edge επειδή η άνω άκρη του είναι ήδη περιορισμένη στο κάτω άκρο της μπλε όψης.</p><p><img src="https://i.stack.imgur.com/spins.gif" alt="pink constraints"></p><p>χρειάζομαι επίσης έναν περιορισμό ισοδύναμων μεταξύ των ροζ και μπλε απόψεων. αυτό θα τους κάνει να γεμίσουν το ήμισυ της οθόνης:</p><p><img src="https://i.stack.imgur.com/oelrv.gif" alt="enter image description here"></p><p>αν λέω στο xcode να ενημερώσει όλα τα πλαίσια τώρα, έχω αυτό:</p><p><img src="https://i.stack.imgur.com/9fbwl.png" alt="containers laid out"></p><p>έτσι, οι περιορισμοί που έχω δημιουργήσει μέχρι τώρα είναι σωστοί. ανεξάρτητα από αυτό και να αρχίσετε να εργάζεστε με την ανοιχτό πράσινη όψη.</p><p>η τοποθέτηση σε πτυχές της ανοιχτής πράσινης προβολής απαιτεί πέντε περιορισμούς:</p><ul> <li>απαιτούμενος λόγος αναλογίας διαστάσεων προτεραιότητας στην ανοιχτό πράσινη όψη. μπορείτε να δημιουργήσετε αυτόν τον περιορισμό σε xib ή storyboard με xcode 5.1 ή νεότερη έκδοση.</li> <li>ο περιορισμός της απαιτούμενης προτεραιότητας που περιορίζει το πλάτος της ανοιχτό πράσινης όψης να είναι μικρότερο ή ίσο με το πλάτος του δοχείου.</li> <li>ένας περιορισμός υψηλής προτεραιότητας που καθορίζει το πλάτος της ανοιχτής πράσινης όψης να είναι ίσο με το πλάτος του δοχείου.</li> <li>ο περιορισμός της απαιτούμενης προτεραιότητας που περιορίζει το ύψος της ανοιχτής πράσινης όψης να είναι μικρότερο ή ίσο με το ύψος του δοχείου.</li> <li>ένας περιορισμός υψηλής προτεραιότητας που θέτει το ύψος της ανοιχτής πράσινης όψης να είναι ίσο με το ύψος του δοχείου.</li> </ul><p>ας εξετάσουμε τους δύο περιορισμούς πλάτους. ο περιορισμός που δεν είναι ο ίδιος, είναι επαρκής για να καθορίσει το πλάτος της ανοιχτής πράσινης όψης. πολλά πλάτη θα ταιριάζουν με τον περιορισμό. δεδομένου ότι υπάρχει ασάφεια, το autolayout θα προσπαθήσει να επιλέξει μια λύση που ελαχιστοποιεί το σφάλμα στον άλλο περιορισμό (υψηλής προτεραιότητας αλλά όχι υποχρεωτικό). η ελαχιστοποίηση του σφάλματος σημαίνει ότι το πλάτος είναι όσο το δυνατόν πλησιέστερο στο πλάτος του κιβωτίου, ενώ δεν παραβιάζεται ο απαιτούμενος περιορισμός που δεν είναι μικρός ή ίσος.</p><p>το ίδιο συμβαίνει και με τον περιορισμό του ύψους. και επειδή απαιτείται επίσης ο περιορισμός της αναλογίας πλευρών, μπορεί να μεγιστοποιηθεί το μέγεθος του υποβιβασμού κατά μήκος ενός άξονα (εκτός αν ο περιέκτης έχει την ίδια αναλογία διαστάσεων με την υποέκθεση).</p><p>έτσι πρώτα δημιουργώ τον περιορισμό της αναλογίας διαστάσεων:</p><p><img src="https://i.stack.imgur.com/4ihow.gif" alt="top aspect"></p><p>στη συνέχεια, δημιουργώ ίσους περιορισμούς πλάτους και ύψους με το δοχείο:</p><p><img src="https://i.stack.imgur.com/vycag.gif" alt="top equal size"></p><p>πρέπει να επεξεργαστώ αυτούς τους περιορισμούς ώστε να είναι λιγότερο από-ή-ίσους περιορισμούς:</p><p><img src="https://i.stack.imgur.com/bc7rh.gif" alt="top less than or equal size"></p><p>στη συνέχεια πρέπει να δημιουργήσω ένα άλλο σύνολο ίσων περιορισμών πλάτους και ύψους με το δοχείο:</p><p><img src="https://i.stack.imgur.com/u9hkm.gif" alt="top equal size again"></p><p>και πρέπει να θέσω τους νέους αυτούς περιορισμούς λιγότερο από την απαιτούμενη προτεραιότητα:</p><p><img src="https://i.stack.imgur.com/i7dte.gif" alt="top equal not required"></p><p>τελικά, ζητήσατε να είναι κεντραρισμένο το υποπεριοχή στο δοχείο του, οπότε θα ρυθμίσω αυτούς τους περιορισμούς:</p><p><img src="https://i.stack.imgur.com/4dtr1.gif" alt="top centered"></p><p>τώρα, για να δοκιμάσετε, θα επιλέξω τον ελεγκτή προβολής και θα ζητήσω από το xcode να ενημερώσει όλα τα πλαίσια. αυτό έχω:</p><p><img src="https://i.stack.imgur.com/kmtoy.png" alt="incorrect top layout"></p><p>ωχ! το subview έχει επεκταθεί για να γεμίσει πλήρως το δοχείο του. αν το επιλέξω, μπορώ να δω ότι στην πραγματικότητα διατηρείται η αναλογία του, αλλά κάνει μια πτυχή - <strong> συμπληρώστε </strong> αντί για μια πτυχή - <strong> ταιριάζει </strong>.</p><p>το πρόβλημα είναι ότι σε έναν λιγότερο από ή ίσο περιορισμό, έχει σημασία ποια είναι η άποψη σε κάθε άκρο του περιορισμού, και το xcode έχει δημιουργήσει τον περιορισμό απέναντι από την προσδοκία μου. θα μπορούσα να επιλέξω καθέναν από τους δύο περιορισμούς και να αντιστρέψω το πρώτο και δεύτερο στοιχείο. αντ 'αυτού, θα επιλέξω μόνο το subview και θα αλλάξω τους περιορισμούς ώστε να είναι μεγαλύτερο από-ή-ίσο:</p><p><img src="https://i.stack.imgur.com/mh4xm.gif" alt="fix top constraints"></p><p>το xcode ενημερώνει τη διάταξη:</p><p><img src="https://i.stack.imgur.com/srvqg.png" alt="correct top layout"></p><p>τώρα κάνω όλα τα ίδια πράγματα με τη σκούρα πράσινη θέα στο κάτω μέρος. πρέπει να σιγουρευτώ ότι η αναλογία πλευρών είναι 1: 4 (το xcode το μείωσε με περίεργο τρόπο αφού δεν είχε περιορισμούς). δεν θα δείξω τα βήματα ξανά, αφού είναι τα ίδια. εδώ είναι το αποτέλεσμα:</p><p><img src="https://i.stack.imgur.com/kdj1r.png" alt="correct top and bottom layout"></p><p>τώρα μπορώ να το εκτελέσω στον προσομοιωτή iphone 4s, ο οποίος έχει διαφορετικό μέγεθος οθόνης από τον ib που χρησιμοποιείται και δοκιμή περιστροφής:</p><p><img src="https://i.stack.imgur.com/hpa6w.gif" alt="iphone 4s test"></p><p>και μπορώ να δοκιμάσω στο iphone 6 προσομοιωτή:</p><p><img src="https://i.stack.imgur.com/otbq9.gif" alt="iphone 6 test"></p><p>έχω ανεβάσει τον τελικό πίνακα ιστορικού μου στο <a href="https://gist.github.com/mayoff/d9320088ab4025c95e40">αυτό το gist</a> για την ευκολία σας.</p> Υποθέτω ότι προσπαθείτε να κάνετε το περιβάλλον εντολή ως επιεικής δυνατόν. Αν αυτή είναι η περίπτωση, σας προτείνω να χρησιμοποιήσετε έναν αλγόριθμο παρόμοιο με αυτό:


1. Διαβάστε στο κορδόνι
	* Χωρίστε το string σε μάρκες
	* Χρησιμοποιήστε ένα λεξικό για να μετατρέψετε τα συνώνυμα σε μια κοινή μορφή
	* Για παράδειγμα, μετατροπή «χτύπησε», «γροθιά», «απεργία», και «κλωτσιά» όλα για να «χτυπήσει»
	* Εκτελέστε ενέργειες σε ένα μη διατεταγμένο, χωρίς αποκλεισμούς βάση
	* **Μη αριθμημένη** - «γροθιά τον πίθηκο στο πρόσωπο» είναι το ίδιο πράγμα όπως «το πρόσωπο στο γροθιά μαϊμού»
	* **Inclusive** - Εάν η εντολή είναι υποτίθεται ότι είναι «γροθιά τον πίθηκο στο πρόσωπο» και παρέχουν «μαϊμού γροθιά», θα πρέπει να ελέγξετε πόσες εντολές αυτή ταιριάζει. Εάν μόνο μία εντολή, να κάνει αυτή την ενέργεια. Θα μπορούσε ακόμη και να είναι μια καλή ιδέα να έχουμε προτεραιότητες εντολή, ακόμη και αν υπήρχαν ακόμη αγώνες, θα εκτελέσει την κορυφή δράση. είναι αλήθεια ότι μου πέρασε κάποια στιγμή από το μυαλό να “σηκώσω” ένα arch δοκιμαστικά κατ αρχήν στο netbook (μάλλον επηρεάστηκα από τον [@billniakas](/u/billniakas)) αλλά φοβήθηκα ότι “τα νερά θα είναι βαθειά” :blush:. αφού όλα δουλεύουν το αφήνω για αργότερα όταν, και αν, ξαναδημιουργηθεί πρόβλημα.

τώρα έχει μ… Τέλος, ένα θέμα που πραγματικά μπορώ να βάλω μια τιμή απάντηση :). 


Έχω διερευνηθεί 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 για την απόφασή σας. πάνε μέσα στον φάκελο ~/.config/gtk-3.0/ και δημιούργησε ένα αρχείο με το όνομα gtk.css μέσα θα πρέπει να περιέχει κάτι σαν αυτό : 
.nemo-desktop.nemo-canvas-item {
color: #000050;
text-shadow: 1px 1px @desktop\_item\_text\_shadow;
}

βάλε εσύ όποιο χρώμα θέλεις σε δεκαεξαδικό. [εικόνα] leobatakis:

sudo pluma /etc/default/grub

η δουλειά έγινε με το (δύσχρηστο) nano. αλλά εγκατέστησα το gedit που το ξέρω από παλιά! (ελπίζοντας να μην ξαναχρειαστεί!)