Τι εργαλεία refactoring χρησιμοποιείτε για την Python;




Έχω ένα σωρό κατηγορίες που θέλετε να μετονομάσετε. Ορισμένα από αυτά έχουν ονόματα που είναι μικρές και ότι το όνομά επαναχρησιμοποιείται σε άλλα ονόματα κατηγορία, όπου δεν θέλω αυτό το όνομα άλλαξε. Τα περισσότερα από αυτή ζει στον κώδικα Python, αλλά έχουμε και κάποιο κώδικα XML που αναφέρεται σε ονόματα τάξη.


Απλή αναζήτηση και αντικατάσταση μου παίρνει μόνο μέχρι τώρα. Στην περίπτωσή μου, θέλω να μετονομάσετε AdminAction να AdminActionPlug και AdminActionLogger να AdminActionLoggerPlug, έτσι αναζήτησης και αντικατάστασης του πρώτου κάποιου θα χτυπήσει και το δεύτερο, κακώς.


Υπάρχει κάποιος που έχει εμπειρία με Python εργαλεία refactoring; Bonus πόντοι αν μπορούν να καθορίσουν τα ονόματα τάξη στα έγγραφα XML πάρα πολύ.
Εν τω μεταξύ, έχω δοκιμάσει δύο εργαλεία που έχουν κάποιο είδος της ολοκλήρωσης με vim.


Το πρώτο είναι [σχοινί](https://github.com/python-rope/rope) , μια βιβλιοθήκη refactoring Python που έρχεται με ένα Vim (και emacs) plug-in. Το δοκίμασα για μερικές μετονομασίες, και ότι σίγουρα λειτούργησε όπως αναμενόταν. Αυτό μου επέτρεψε να δείτε το refactoring ως diff, το οποίο είναι ωραίο. Είναι ένα κομμάτι κειμένου με γνώμονα, αλλά αυτό είναι εντάξει για μένα, απλά χρειάζεται περισσότερο χρόνο για να μάθουν.


Το δεύτερο είναι η [επισκευή ποδηλάτων άνθρωπος](http://bicyclerepair.sourceforge.net/) που υποθέτω ότι κερδίζει πόντους στο όνομα. Επίσης συνδέεται σε vim και emacs. Δεν έχουν παίξει πολύ με αυτό ακόμα, αλλά θυμάμαι ότι προσπαθεί εδώ και πολύ καιρό.


Δεν έχουν παίξει τόσο με αρκετά ακόμα, ή προσπάθησαν περισσότερα είδη refactoring, αλλά εγώ θα κάνω λίγο περισσότερο hacking μαζί τους.
Αυτή είναι η γνώμη μου, αλλά? όπως ακριβώς και οι τάξεις περίπτωση δεν, θα ήθελα να εφαρμόσουν μια `copy`μέθοδο του είδους στην τάξη για να καταστεί δυνατή η τροποποίηση, διατηρώντας παράλληλα το αμετάβλητο, αλλά υπάρχει ορισμένες περιπτώσεις που δεν μπορώ να βοηθήσω να το μεταβλητό? Για παράδειγμα, όταν κάτι αναμένεται να γίνει η λειτουργία αντιγραφής είναι πολύ μεγάλη και αργή για την κατηγορία? όπως όταν η τάξη έχει τόσα πολλά συχνά τροποποιημένο μέλη. Και μην ανησυχείτε για χιλιάδες περιπτώσεις που επιπλέουν γύρω στη μνήμη, επειδή είναι αυτόματα GC'ed, οπότε το πιο πραγματικό πρόβλημα είναι ο χρόνος κόστος της αντιγραφής περιπτώσεις της κλάσης. Παρακαλώ πείτε μου εάν η γνώμη μου είναι κάπως λάθος :) τελικα κατι καταφερα χαρη στο ‘‘xorg-x11-utils xdotool’’. :slightly\_smiling\_face:

(σε wayland δεν πρεπει να δουλεψει).

ubuntu:

sudo apt install xbindkeys x11-utils xdotool

fedora:

sudo dnf install xbindkeys xorg-x11-utils xdotool

(για ποντικι με 6+ πληκτρα.)

δημιουργια ενος (κρυφου) αρχειου σ… <p>όπως μπορούμε <a href="https://github.com/rails/rails/blob/master/actionpack/lib/abstract\_controller/callbacks.rb">βλέπε</a> στο <code>actioncontroller::base</code>, <code>before\_action</code> είναι μόνο <a href="https://github.com/rails/rails/commit/9d62e04838f01f5589fa50b0baa480d60c815e2c">νέα σύνταξη</a> για <code>before\_filter</code>.</p><p>ωστόσο, όλες οι συνταγές <code>before\_filters</code> <a href="https://github.com/rails/rails/blob/v5.0.0.beta2/actionpack/lib/abstract\_controller/callbacks.rb#l190-l193">έχουν καταργηθεί</a> σε <strong> rails 5.0 </strong> και θα αφαιρεθούν σε <strong> rails 5.1 </strong></p> Ενώ μόδας, η λέξη-κλειδί κόλπο αναθεώρηση ενημερώνει μόνο το αρχείο όταν έχει αλλάξει σε αυτή την αναθεώρηση - αν δεν αλλάξει το αρχείο, τότε θα συνεχίσει να αντικατοπτρίζει την παλιά αναθεώρηση.


Αν θέλετε το λογισμικό να αντανακλά πάντα το συνολικό αριθμό αναθεώρησης, τότε θα πρέπει να σκαλίζω το [σχετικό SVN καταχωρήσεις αρχείο](http://svnbook.red-bean.com/en/1.1/ch08s03.html) και αποσυμπιέστε το, το οποίο δεν είναι πάρα πολύ δύσκολο (αυτό είναι ένα αρχείο XML).


Wikipedia το κάνει αυτό στη [σελίδα τους εκδοχή](https://en.wikipedia.org/wiki/Special:Version) για να δείξει την αναθεώρηση του λογισμικού που τρέχει ζωντανά? [ο κώδικας είναι εδώ](https://svn.wikimedia.org/svnroot/mediawiki/trunk/phase3/includes/specials/SpecialVersion.php) - αναζητήστε το **getSvnRevision ()** μέθοδο. **Για την «ορθογραφία λάθος» μέρος (Μήπως εννοείτε)**


* Θα μπορούσατε να κάνετε κάποια `LIKE`ερωτήματα στο db π.χ. `LIKE %j%e%a%n%s%`, αλλά αν θέλετε να το κάνετε καλά, θα πρέπει να χρησιμοποιήσετε μια βιβλιοθήκη αναζήτησης όπως αυτό:


	+ <https://github.com/TomLingham/Laravel-Searchy>
	+ <http://tnt.studio/blog/did-you-mean-functionality-with-laravel-scout>



> 
> Μπορείτε να δημοσιεύσετε το αρχείο ρυθμίσεων στον κατάλογο της εφαρμογής σας και να παρακάμψετε τις ρυθμίσεις, εκτελώντας php τεχνίτη πωλητή: δημοσιεύει για να αντιγράψετε τις ρυθμίσεις στο φάκελο config σας όπως searchy.php
> 
> 
> Μπορείτε να ορίσετε το προεπιλεγμένο πρόγραμμα οδήγησης που θα χρησιμοποιηθεί για τις αναζητήσεις στο αρχείο ρυθμίσεων. Οι επιλογές σας (στην παρούσα φάση) είναι: ασαφή, απλό και Levenshtein.
> 
> 
> Μπορείτε επίσης να παρακάμψετε αυτές τις μεθόδους, χρησιμοποιώντας την ακόλουθη σύνταξη κατά την εκτέλεση μιας αναζήτησης:
> 
> 
> 


Με τον καθορισμό [Levenshtein απόσταση](https://en.wikipedia.org/wiki/Levenshtein_distance) μπορείτε να finetune πόσο μακριά μια λέξη μπορεί να είναι.


* Αν χρειάζεστε καλύτερη απόδοση θα πρέπει να εξετάσει κάτι σαν `solr`ή `elasticsearch`για το έργο αυτό.


<https://wiki.apache.org/solr/SpellCheckComponent>
<https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-fuzzy-query.html>


**Για το τμήμα μετάφρασης**


Απλά θα πρέπει να έχει ένα λεξικό έτοιμο σε βάση δεδομένων ή εντοπισμό των αρχείων σας και εκτελέστε το χαμηλότερο σημείο εισόδου και αυτό. Αναμείνετε υψηλή φορές υπολογιστών τόσο για τη διόρθωση ορθογραφίας και της μετάφρασης στον κώδικά σας. βρέθηκε η λύση. 
η εντολή “mkinitcpio -p linux” δε δουλεύει σωστά στο manjaro (σε αντίθεση με το arch), γιατί έχει διαφορετική ονοματολογία στα kernels, αντί για “linux”, είναι “linux419” , “linux53”, κλπ. 
οπότε θέλει ή να την εκτελέσεις με το σωστό όνομα, ή “mkinitcpio -p” για να τα κάνει rebuild… καλησπέρα καλώς ήρθες φίλε, τρέξε την εντολή που σου λέει :

sudo dpkg --configure -a

και δώσε μας αποτελέσματα, μέσα σε code tags για να είναι ευανάγνωστα. είχα το ίδιο πρόβλημα με αρχεία zip που κατέβαζα παλιότερα από εκπαιδευτικές ιστοσελίδες. έχω linux mint με διαχειριστή αρχείων τον thunar. έκανα προσθήκη “προσαρμοσμένης ενέργειας” (επεξεργασία –> ρυθμίσεις προσαρμοσμένων ενεργειών –> προσθήκη νέας), ώστε με δεξί κλικ να αποσυμπιέζω με τη σωστή κωδ… τελικά το έφτιαξα σβήνοντας οτιδήποτε στο σύστημα έχει σχέση με flatpak και επανεγκατάσταση. πιο συγκεκριμένα 
sudo find ~/ -name "flatpak" | xargs rm -r
sudo find / -name "flatpak" | xargs rm -r
sudo apt install flatpak

ολίγον τι επικίνδυνο αλλά δούλεψε. Από τα περαιτέρω σχόλια που έγιναν από τον συγγραφέα, που ψάχνουν για ένα Node.js ORM που λειτουργεί με δύο οδηγούς MySQL και Oracle.


Εκεί δεν φαίνεται να είναι πολλά ΝΤΥΠΑ που ταιριάζει η περιγραφή και είναι επίσης υποστηρίζονται (προειδοποίηση - βασίζονται αποκλειστικά σε λίγες αναζητήσεις του Google).


Υπάρχει μία διαπίστωσα ότι ταιριάζει με την περιγραφή αν και ακόμα φαίνεται να υποστηρίζεται ενεργά και ότι είναι knex (βλ <https://knexjs.org> ).