Πάει πολύς αρκετός καιρός που συνέβηκε αυτό αλλα το θυμήθηκα διαβάζοντας το wikipedia entry για την ταινία Borat.
Είχε κυκλοφορήσει σε DVD η ταινία στα videο club και την είχα δεί.
Δυό βασικά στοιχεία για την ταινία:
α) Είναι fucked up. Κυριολεκτικά. Το αποκορύφωμα όταν δύο εντελώς γυμνοί άντρες ,ο ένας απο τους οποίους είναι θεόχοντρος τσακώνονται. Super gay moments.
β) To DVD της ταινίας είναι φτιαγμένο να μοιάζει σαν αντιγραφή. Έξυπνο. εδώ η εικόνα
Είμαι στο σουβλατζίδικο λοιπόν και περιμένω να ετοιμαστούν τα σουβλάκια μου όταν μπαίνει ένας κύριος γύρω στα 50 με το DVD στο χέρι. Ώχ λέω μέσα μου. Πενηντάρης κύριος, το βρήκε στις κωμωδίες, είδε και το εξώφυλο και σου λέει ‘καλό θα είναι.
Ανοίγει ο κύριος το κουτί να δεί το δισκάκι, και αρχίζει τα γαλλικά. Και όταν λέμε για γαλλικά εννοούμε χριστοπαναγίες. Ο ιδιοκτήτης του Video Club πρέπει να έπαθε 4 είδη καρκίνου εκείνη την στιγμή και μόνο απο αυτά που του έσυρε ο τύπος. Παίρνει κάποιον τηλέφωνο και αρχίζει να βρίζει το video club και σε αυτόν.
Εγώ να έχω πάει στην άκρη του μαγαζιού, και με δυσκολία να συγκρατιέμαι.
Προσπάθησα να του εξηγήσω οτι είναι χιουμοριστικό, και οτι είναι αυθεντικό το DVD αλλα μόνο που δεν με είπε μαλάκα.
Απο τότε άρχισε να μου αρέσει το Borat :p
Yes, … Very nice…
Python’s list comprehension syntax is amazingly concise and easy to use and understand. It make Python even more beautiful than it already is.
However, i came upon some weird behavior today that caused a strange bug in my application.
The common way to use a list comprehension is with a variable named x eg:
my_new_list = [ x.name for x in people ]
The behavior most of us would expect (or assume to be reasonable) is for the scope of variable x to be limited within the execution of the list comprehension.
This is not the case however. If you already have defined an x variable and expect it to be the same after the list comprehension you will be disappointed (not to mention bewildered at your new, seemingly unexplained, bug ).
I am not sure why this feature it was designed that way. I think this is a source of confusion and, as such, un-pythonic, if i may use the term :-)
Be careful when using list comprehensions to use a completely new variable.
Πριν μερικές ημέρες χρειάστηκα να τραβήξω μερικές φωτογραφίες με την Canon EOS 400D μου, χρησιμοποιώντας remote capture. Συγκεκριμένα ,ήθελα να φτιάξω ένα script που να τραβάω κάποια αντικείμενα φωτογραφία και να συσχετίζονται αυτόματα με την αντίστοιχη εγγραφή τους στη Database.
Ομως το gphoto2 δεν ήθελε με τίποτα να δουλέψει. Έβρισκε την μηχανή, τράβαγε φωτογραφίες, αλλα όταν ερχόταν η ώρα να την ‘κατεβάσει’ μου έριχνε ένα ωραίο segfault.
Είχα δοκιμάσει τα πάντα (εκτός απο ultrex) και δεν είχα δεί λύση. Είχα απογοητευτεί.
Εντελώς τυχαία , σήμερα έπεσα σε αυτό το blog post. Εκεί διαβάζω α) οτι θέλει να δίνω κάποιες εντολές σε μία γραμμή, και β) στα σχόλια έγραφαν οτι πριν φτιάχτηκε στο trunk πριν μόλις 2 ημέρες.
Αμέσως checkout απο το subversion, configure , compile ,install κλπ. και ως δια μαγείας, δουλεύει!
Για παράδειγμα αυτό δουλέυει:
gphoto2 --set-config capture=on -F 1 -I 1 --capture-image
Σκέφτομαι οτι θα ήταν ωραίο ένα GUI για αλλαγή των ρυθμίσεων και remote capture όπως το software της Canon. Ίσως αν έχω χρόνο αυτές της ημέρες (πράγμα πολύ απίθανο μέχρι μέσα Ιουνίου…)
Reading the scarce documentation on Django’s signals there did not seem to be a way to detect on the post_save handler if the object is a new instance or an update of an existing instance.
Reading the source code, however, reveals that on django/db/base.py at the end of save() method of Model class, we see this snippet:
# Run any post-save hooks.
dispatcher.send(signal=signals.post_save, sender=self.__class__,
instance=self, created=(not record_exists), raw=raw)
So on your post_save hook all you have to do is accept an extra parameter called ‘created’ which will be True if the instance was just created or False if it is simply an update.
Although the documentation of Django is pretty good, and certainly much better than a lot of other Python web frameworks, its still far from complete.
I used to use Webware once upon a time, and the only documentation for the bloody thing was the source code.