C++ Tip Of The Day

Η C++ αποτελεί μια πολύ δυνατή γλώσσα, που προσφέρει πολλές δυνατότητες σε όποιον την χρησιμοποιεί. Ειδικά με την τελευταία εκδοχή της (C++11), έχει γίνει ακόμα πιο δυνατή, καθώς έχουν προστεθεί αρκετές ακόμα δυνατότητες, τόσο στο πυρήνα της γλώσσας, όσο και στην STL.

Πρόσφατα, ο φίλος μου ο Νίκος, με αφορμή να εξερευνήσει τις νέες (αλλά και παλιές) δυνατότητες της γλώσσας, ξεκίνησε ένα blog με θέμα τη C++. Εκεί δίνει (σχεδόν) καθημερινά και από μια συμβουλή για τη χρήση της C++. Είναι ακόμα στην αρχή, αλλά συνεχώς εμπλουτίζει τη σελίδα με νέο υλικό. Ήδη αποτελεί μια καλή πηγή για όποιον ασχολείται με τη C++ και θέλει είτε να εμπλουτίσει τις γνώσεις του, είτε να τις φρεσκάρει.

Πιστεύω αξίζει να της κάνετε μια επίσκεψη ή και περισσότερες!

RoR – Αυτοματοποίηση των tests

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

Αρχικά πρέπει να προσθέσουμε στο Gemfile το κατάλληλο gem. Θεωρώντας ότι χρησιμοποιούμε RSpec αντί Test::Unit προσθέτουμε το ‘guard-rspec’ (αλλιώς σκέτο ‘guard’) στο group ‘development’:

group :development do
  gem 'guard-rspec'
end

Σύμφωνα με το Rails Tutorial, πρέπει επίσης να προσθέσουμε κάποια ακόμα gems κάτω από το group ‘test’, ανάλογα με το λειτουργικό μας. Εφόσον χρησιμοποιούμε Rails 4 (για παλιότερες εκδόσεις είναι λίγο διαφορετικά) προσθέτουμε:

  • Σε Linux:
    group :test do
      gem 'libnotify'
    end
    
  • Σε Windows:
    group :test do
      gem 'rb-notifu'
      gem 'win32console'
      gem 'wdm'
    end
    
  • Σε OS X:
    group :test do
      gem 'growl'
    end
    

Στη συνέχεια τρέχουμε:


bundle install
bundle exec guard init rspec

Μπορούμε αν θέλουμε να τροποποιήσουμε το παραγόμενο ‘Guardfile’. Για να μην τρέχουν όλα τα tests κάθε φορά μπορούμε να προσθέσουμε (πάντα στη περίπτωση που χρησιμοποιούμε  RSpec αντί Test::Unit):

guard 'rspec', all_after_pass: false do
...
end

Εν τέλει τρέχουμε:


bundle exec guard

Έτοιμοι!