Κυριακή, 27 Νοεμβρίου 2016

Αληθινές Θεωρίες Συνωμοσίας

Δεν θεωρώ τον εαυτό μου συνωμοσιολόγο αλλά ομολογώ πως και στο δικό μου πρωτόγονο μυαλό αρέσει να ακούει παραμύθια για κακούς δράκους. Κάποια από αυτά τα παραμύθια είναι αληθινά κάποια άλλα όχι. Το πιο πρόσφατο παράδειγμα αληθινής θεωρίας συνωμοσίας ήταν η "αποκάλυψη" (επιβεβαίωση θα την έλεγα εγώ) πως η NSA παρακολουθεί τις συνομιλίες των πολιτών. Όμως υπάρχουν κι άλλες επιβεβαιωμένες θεωρίες συνωμοσίας. Μερικές από αυτές είναι:
Ο στρατός συνωμοτεί για να προκαλέσει φόβο στον λαό
Μια κλασσική θεωρία είναι ότι ο Κένεντι έγινε έξαλλος με το Γενικό Επιτελείο Εθνικής Άμυνας για τα σχέδιά τους να προκαλέσουν πολέμους στην αμερικανική ήπειρο. Κάποιοι επιμένουν ότι αυτός ήταν και ο λόγος που δολοφονήθηκε.
Τα όπλα καρδιακής προσβολής υπάρχουν
Το 1975 η CIA άρχισε να χρησιμοποιεί τα όπλα καρδιακής προσβολής: είχαν σφαίρες από πάγο βουτηγμένο σε τοξίνες που προκαλούσαν καρδιακή προσβολή.
Το FBI συνωμοτεί εναντίον ακτιβιστών
Το FBI διαθέτει πράγματι ένα σώμα ονόματι COINTELPRO που στοχοποιεί διάφορες ομάδες ακτιβιστών, όπως τους «Black Panthers».
Η «Επιχείρηση Κοτσύφι»
Η «Επιχείρηση Κοτσύφι» (Operation Mockingbird) ήταν ενεργή από το 1948 και ανήκε στα βασικά όπλα του Ψυχρού Πολέμου. Πέρασε στο χώρο των θεωριών συνωμοσίας τη δεκαετία του 1970 και αποδείχθηκε πραγματικότητα μόλις το 2007. 
Η Εθνική Υπηρεσία Ασφαλείας των ΗΠΑ παρακολουθεί τις συνομιλίες πολιτών
Και μαθεύτηκε χάρη στον Edward Snowden.

Τετάρτη, 23 Νοεμβρίου 2016

Chain of responsibility design pattern



Άλλη μια υλοποίηση ενός design pattern, αυτή τη φορά του γνωστού chain of responsibility. Σε αυτό το design pattern η βασική λογική του αλγορίθμου θέλει την δυνατότητα να πηγαίνει το όρισμα της μεθόδου από instance σε instance μέχρι να μπορεί να επιστρέψει αποτέλεσμα.

Στο παρακάτω από παράδειγμα, έχουμε μια abstract κλάση (BookChain) από την οποία οι επόμενες υλοποιούν δύο βασικές μεθόδους, την nextStore και η getStore. Η getStore κάνει τον έλεγχο αν το όρισμα μπορεί να έχει αποτέλεσμα και αν τελικά δεν έχει καλεί το επόμενο instance με την nextStore.

Τετάρτη, 16 Νοεμβρίου 2016

Εγκληματίες στη χλιδή και έντιμοι στο δρόμο. Μια ακόμα αδικία του σημερινού πολιτισμού!


Στον σύγχρονο πολιτισμό αναμφισβήτητα υπάρχουν πολλές αδικίες. Μια από αυτές παρουσιάζει και το παρακάτω βίντεο. Πως είναι δυνατόν ένας άνθρωπος που διαπράττει έγκλημα να μπορεί να έχει δωρεάν στέγη και φαγητό ενώ ένας άνθρωπος που προσπαθεί να μην ξεφύγει από τα όρια του νόμου να μην έχει την ικανότητα να έχει αυτές τις πολυτέλειες.


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

Θα πρέπει νομίζω οι πολιτισμένες χώρες να μεριμνήσουν γι αυτήν την αδικία. Στο βίντεο βλέπουμε πως κάποιοι φυλακισμένοι έχουν την ευκαιρία να ζήσουν σε ένα κελί με παροχές με είτε χρηματικό αντάλλαγμα ή παραγωγή εργασίας. Θα μπορούσε ίσως να συμβεί κάτι παρόμοιο και για τους άστεγους.

Όπως και να έχει το βίντεο δημιουργεί προβληματισμούς και σκέψεις και είναι ένα ακόμα πρόβλημα του σημερινού πολιτισμού μας. Αξίζει κανείς να το δει και να προβληματιστεί.

Σάββατο, 12 Νοεμβρίου 2016

The Art of Writting Software



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

Ο μουσικός λοιπόν βάζει περίτεχνα τις νότες του στο πεντάγραμμο (αλγόριθμος) με σκοπό οι μουσικοί με τα όργανα τους  (επεξεργαστής) να εκτελέσουν το αλγόριθμο αυτόν. Το ίδιο και ο προγραμματιστής. Η διαφορά είναι στην αντίληψη αυτών που απολαμβάνουν το προϊόν αυτών των δύο. Στη μουσική ο άνθρωπος αντιλαμβάνεται τον αλγόριθμο με τα αυτιά του και μπορεί να κρίνει αν έχει ισορροπία ή όχι. Στα προγράμματα ο αλγόριθμος μπορεί να κάνει τόσα πολλά που ο άνθρωπος δεν μπορεί με τις αισθήσεις του να το αντιληφθεί. Πρέπει να χρησιμοποιήσει εργαλεία ώστε να καταλάβει πόσο καλό είναι το αποτέλεσμα ενός καλογραμμένου προγράμματος.

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

Κυριακή, 6 Νοεμβρίου 2016

Βιγκανισμός, μια νέα θρησκεία.


Τον τελευταίο καιρό όλο και περισσότερος κόσμος αποφασίζει να αφήσει το ζουμερό κρέας για να μπει σε ένα νέο lifestyle, αυτό του vegan. Οι vegan, με στατιστικά στοιχεία και μελέτες, προσπαθούν να πείσουν τον κόσμο να μην τρώει κρέας για λόγους υγείας από την μια και για ηθικούς λόγους από την άλλη. 

Φυσικά όταν τρως κρέας κάθε μέρα θα έχεις προβλήματα υγείας. Είναι η φύση της τροφής αλλά και ο τρόπος που ο δυτικός κόσμος μαγειρεύει το κρέας. Δεν θα φάει κανένας βραστό κοτόπουλο αν δεν του το επιβάλει ο γιατρός του. Κι αυτό γιατί ένα βραστό κοτόπουλο δεν είναι τόσο νόστιμο όσο ένα κοτόπουλο ψημένο στο φούρνο με πατάτες, με βούτυρο από πάνω κι άλλα ανθυγιεινά καλούδια. Αν λοιπόν κάθε μέρα τρως κάτι παρόμοιο είναι λογικό οι αρτηρίες σου να μην αντέξουν. Όμως το ίδιο μπορεί να συμβεί και με τους vegan. Αν κάθε μέρα τηγανίζεις πατάτες και τρως σαλάτες με περίεργα dressing προφανώς ούτε αυτό κάνει καλό στην υγεία σου. Άρα το θέμα δεν είναι αν τρως κρέας ή όχι αλλά πως το τρως. 

Φυσικά αν κάποιος αποφασίσει να πάρει τον vegan way θεωρώ πως είναι ένας άνθρωπος που σκέφτεται την υγεία του οπότε οι επιλογές του θα είναι όσο το δυνατόν πιο υγιεινές. Άρα νομίζω πως τα αποτελέσματα των ερευνών που οι vegan μας πασάρουν για επιχειρήματα είναι απλά μπαρούφες. Μπορεί κάποιος να έχει μια σωστή διατροφή ακόμα και αν τρώει κρέας, αρκεί να είναι διατεθειμένος να αλλάξει το lifestyle του και τις διατροφικές του συνήθειες. Και επισημαίνω πως όταν κάποιος αποφασίσει να γίνει vegan σίγουρα έχει αποφασίσει πως θα αλλάξει τις διατροφικές του συνήθεις έτσι τα αποτελέσματα των ερευνών δεν μπορούν να είναι 100% σωστά. Είναι σαν να συγκρίνεις έναν vegan που δεν γυμνάζεται με έναν vegan που γυμνάζεται κάθε μέρα. Προφανώς ο δεύτερος θα έχει μια καλύτερη υγεία συνολικά.

Στο ηθικό κομμάτι τώρα της θρησκείας του βιγκανισμού έχουμε την εξής υποκρισία. Κανείς δεν μπορεί να αμφισβητήσει πως για να φας κρέας πρέπει να σκοτώσεις ζώα. Και σ' αυτό έχουν δίκιο όμως μπορεί κανείς να διακρίνει την υποκρισία τους. Οι περισσότεροι vegan λοιπόν έχουν επιλέξει να αντλήσουν όλοι αυτή τη πληροφόρηση τους από το internet. Το internet για να λειτουργήσει χρειάζεται ηλεκτρική ενέργεια. Και μάλιστα αρκετά μεγάλη ηλεκτρική ενέργεια ώστε να μπορεί να μείνει ένας server ανοιχτός 24 ώρες τη μέρα, να μείνουν οι routers ανοιχτοί ώστε να μπορεί να κυκλοφορεί η ψηφιακή πληροφορία και να φτάνει στους υπολογιστές μας οι οποίοι χρειάζονται ηλεκτρική ενέργεια για να λειτουργήσουν. Φυσικά χρησιμοποιούν αυτοκίνητο για να πάνε στη δουλειά τους τις περισσότερες φορές και πολλά άλλα προϊόντα που για την κατασκευή τους ο άνθρωπος καταστρέφει το οικοσύστημα του. Ένα οικοσύστημα που υποτίθεται προστατεύει τα ίδια τα ζώα που οι vegans θέλουν να προστατέψουν.

Παράλληλα ένας vegan θα πιει καφέ αφού δεν έχει προέλθει από κάποιο ζώο και είναι φυσικό προϊόν. Απλά έχει προέλθει από την απάνθρωπη εργασία μικρών παιδιών που οι τόσο ευαίσθητοι vegans δεν νοιάστηκαν ποτέ τους. Γι αυτούς το να σκοτώνεις ένα ζώο για να φας και να ζήσεις έχει μεγαλύτερη σημασία από τη ζωή ενός παιδιού που σου προσφέρει μια απόλαυση την οποία την αποδέχεσαι καθημερινά. Η καταστροφή λοιπόν του πλανήτη και η εκμετάλευση μικρών παιδιών έρχεται σε δεύτερη μοίρα γι αυτούς όταν έχουμε να κάνουμε με γλυκούλια προβατάκια και όμορφα κατσικάκια. 

Μπορεί ένας άνθρωπος να ζήσει χωρίς κρέας. Ναι φυσικά και μπορεί. Όμως μπορεί να ζήσει χωρίς καφέ, σοκολάτα, τσιγάρα, ίντερνετ και αυτοκίνητο. Γιατί όμως οι vegans επιλέγουν μόνο το κρέας; Η γνώμη μου είναι γιατί απλά είναι πιο βολικό γι αυτούς. Είναι θέμα επιλεκτικής ηθικής που όλοι οι άνθρωποι (κι εγώ φυσικά, δεν με βγάζω απ' έξω) χρησιμοποιούμε. Με βολευεί να ξεχνάω πως κάθε γουλιά καφέ ή σοκολάτας που πίνω έχει προέλθει από το βασανισμό ενός ανθρώπου όπως ακριβώς κάνει και ένας vegan. Με απλά λόγια στο ηθικό κομμάτι ένας vegan δεν είναι περισσότερο ηθικός από έναν κρεατοφάγο. 

Όμως από που έχει έρθει όλη αυτή η μανία για την απουσία κρέατος από τη διατροφή μας. Αν λοιπόν κάποιος ψάξει λίγο θα δει πως υπάρχει συσχέτιση της διατροφής με τις θρησκείες. Στον χριστιανισμό για παράδειγμα έχουμε την νηστεία. Στη νηστεία λοιπόν η λογική είναι να μην χυθεί αίμα για να τραφεί ο άνθρωπος. Αυτό δηλαδή που η θρησκεία του βιγκανισμού πρεσβεύει. 

Μα γιατί το λέω θρησκεία. Εκτός από το γεγονός πως θεωρώ ότι έχει προέλθει αυτή η παλαβομάρα από τις θρησκείες έχουμε και το νέο φαινόμενο αν οι γονείς είναι vegan και το παιδί τους να είναι vegan. Φυσικά ούτε λόγος να μάθουν απλά στο παιδί τους να έχει σωστές διατροφικές συνήθειες. Δογματικά λοιπόν, όπως θα έκαναν και δύο ομόθρησκοι γονείς, το παιδί θα πρέπει να γίνει vegan. Θα πρέπει να του γίνει η πλύση εγκεφάλου από νωρίς ώστε να μην βγει από τον δρόμο του σωστού vegan. Με απλά λόγια έτσι ώστε να μην επιλέξει το ίδιο το παιδί αν θέλει να είναι vegan ή όχι. Όπως ακριβώς κάνουν και οι θρησκείες.

Το σωστό λοιπόν, νομίζω πως είναι η ισορροπία. Καλό είναι να μάθουμε να τρώμε σωστά και ισορροπημένα και όχι να απορρίπτουμε τροφές γιατί αυτό είναι κουλ τώρα στο δυτικό πολιτισμό. Το φαγητό δεν υπάρχει μόνο για επιβίωση αλλά και για ευχαρίστηση. Για το ηθικό κομμάτι δεν έχω να πω κάτι παραπάνω. 

Αφορμή γι αυτό το ποστ είναι το παρακάτω πείραμα:


Τετάρτη, 2 Νοεμβρίου 2016

Πως να ανεβάσεις κώδικα στο github


Το github είναι μια τεράστια πηγή κώδικα, ελεύθερο για οποιονδήποτε θέλει είτε να διαβάσει τον κώδικα κάποιου προγράμματος ή για να κατεβάσει κάποιο πρόγραμμα και να το τροποποιήσει. Ταυτόχρονα σου δίνεται η δυνατότητα να ανεβάσεις κι εσύ τον δικό σου κώδικα ώστε να τον μοιραστείς με όλο το κόσμο. Πως όμως μπορείς να το κάνεις αυτό;

Αρχικά είναι το απλό για το 2016 να φτιάξεις έναν λογαριασμό στο github. Δίνεις τα στοιχεία σου και έτοιμος. Αφού λοιπόν ολοκληρώσεις αυτή την απλή διαδικασία ξεκινάς ένα νέο project. Πατάς λοιπόν στο Start new project και πας στην επόμενη οθόνη. Εκεί δίνεις ένα όνομα στο project σου. Μετά πατάς το Create repository. Μόλις έφτιαξες ένα repository για τον πηγαίο κώδικα του project σου.

Τώρα όμως αρχίζουν τα δύσκολα. Πως ανεβάζεις αρχεία. Το github δεν είναι μια υπηρεσία που απλά ανεβάζεις τα αρχεία σου στο cloud. Ελέγχει τον κώδικα που έχεις γράψει και μπορεί να επισημάνει τις αλλαγές που έχεις κάνει. Ο λόγος είναι κυρίως για να μπορεί μια ομάδα να βλέπει τι αλλαγές έχουν γίνει στον κώδικα και να έχει ο leader του project καλύτερο έλεγχο. 

Ο τρόπος που θα περιγράψω αφορά σε λειτουργικό linux όμως από γραμμή εντολών υποθέτω πως θα είναι ίδιος και σε windows. Αρχικά πρέπει να έχεις εγκαταστήσει στον υπολογιστή σου το github. Ανάλογα λοιπόν με την διανομή δίνεις την εντολή sudo get-apt install git. Αυτό αρκεί για να κάνεις την εγκατάσταση.

Αφού λοιπόν γίνει η εγκατάσταση επιστρέφεις στο site και στο repository του project που μόλις έφτιαξες. Εκεί το site θα σου έχει δώσει όλες τις εντολές για να "κατεβάσεις" το project στο δίσκο σου τοπικά. Για χάρη οργάνωσης φτιάχνεις έναν φάκελο με το όνομα του porject σου στο δίσκο και αφού μπεις στο φάκελο δίνεις τις εντολές που σου γράφει. Συνήθως είναι κάπως έτσι:

git clone https://github.com/username/project.git


Αφού λοιπόν έχεις κατεβάσει το κλώνο του project σου είτε ξεκινάς να γράφεις τον κώδικα σου σε αυτό το φάκελό ή αντιγραφείς τα αρχεία που θες να στείλεις στο github. Μόλις τελειώσεις χτυπάς στο πληκτρολόγιο σου τις τρεις παρακάτω χαρακτηριστικές εντολές:

git add *
git commit -m "my first commit"
git push


Αυτό ήταν όλο. Μόλις ανέβασες τα πρώτα σου αρχεία. Από το σημείο αυτό και μετά κάθε φορά που κάνεις κάποια αλλαγή στο κώδικα σου ή στα αρχεία σου πατάς αυτές τις τρεις εντολές και τα αρχεία σου θα ανεβαίνουν στο github.