Δημήτρης Κατηφόρης
Διακοπές από την C
2024-2-26
Αυτό το άρθρο είναι ΓΙΑ ΕΜΈΝΑ. Εγώ γράφω για τον εαυτό μου, as a programmer. I made a python script in 1 DAY 24 HOURS. How I made MY game engine.
Τις προηγούμενες ημέρες αποφάσισα να ασχοληθώ με κάτι διαφορετικό. Έτσι σαν πρώτο μου “project” πήγα να κάνω κάτι που θα συνδύαζε Python, Selenium και BeautifulSoup. Πάντα μου άρεσε ο κόσμος του webscraping, βρίσκω κάτι ωραίο στην μαζική συλλογή δεδομένων. Είναι ξεχωριστό και σε κάνει να νιώθεις «επικίνδυνος». Σίγουρα έχεις χρησιμοποιήσει κάποτε το Scratch, την ιστοσελίδα όπου προγραμματίζεις με τουβλάκια. Το scratch αποτελεί έναν ιδανικό θησαυρό πληροφοριών εφόσον ήδη συλλέγει αρκετές πληροφορίες από τους χρήστες τις οποίες παρουσιάζει και δημοσίως (τοποθεσία χρήστη, ημερομηνία εγγραφής. Αυτά βασικά δεν είναι πολλές, ούτε αρκετές. Καλά, ίσως αρκετές).
Στο scratch υπάρχουνε followers (πώς αλλιώς το MIT θα κρατήσει ένα τόσο μεγάλο κοινό;) όπως και σε κάθε άλλο εθιστικό διαδικτυακό χάπι. Ο χρήστης έχει την δυνατότητα να ακολουθήσει όσους χρήστες θέλει (έχει cooldown 20 δευτερόλεπτα όμως μεταξύ δύο διαδοχικών πατημάτων του κουμπιού follow) και οι ακόλουθοί του φαίνονται σε μια λίστα στο προφίλ του την οποία οποιοσδήποτε μπορεί να δει. Βρήκα το άτομο με τους περισσότερους ακόλουθους και αποθήκευσα τους πρώτους 3000 χρήστες σε ένα text file (Εδώ το BeautifulSoup βοήθησε να αποθηκεύσω και την τοποθεσία τους). Ύστερα έφτιαξα ένα script σε Selenium το οποίο αυτόματα άνοιγε το browser (headless mode για να μην με ενοχλεί) και ακολουθούσε έναν έναν τους χρήστες, αφήνοντας παράλληλα ένα comment στο προφίλ του καθενός το οποίο επιλεγόταν τυχαία από μια λίστα με strings. Το ρομπότ έκανε πολύ καλή δουλεία, τόσο καλή που ο λογαριασμός μου διαγράφθηκε μέσα σε 1-2 μέρες λόγω του ότι παραβίασε τους κανόνες της ιστοσελίδας. Σε αυτό βοήθησαν αρκετά τα σχόλια τα οποία προσελκούσαν το ενδιαφέρον των χρηστών πολύ περισσότερο από ένα απλό follow.
Τα αποτελέσματα που συγκέντρωσα τα αναπαρέστησα γραφικά με την βοήθεια του pandas.
Οι πλειοψηφία των χρηστών είναι από την αμερική και από την δυτική Ευρώπη. Πολλές τοποθεσίες ήταν ψεύτικες με την ανταρκτική να αποτελεί συχνή επιλογή.
Golang
Και για να κρατηθεί αυτή η ωραία συνοχή του κειμένου ας περάσουμε τώρα στους κινέζους. Η γλώσσα του μέλλοντος!!! Ni hao!!!! Ας μάθουμε και κινέζικα μήπως επωφεληθούμε! Η Golang είναι ήδη η δεύτερη αγαπημένη μου γλώσσα. Είναι το άρθρο ΜΟΥ μην το ξεχνάμε. Μοιάζει πάρα πολύ με την c χωρίς όμως να κουράζει τον χρήστη με πολύ low level λεπτομέρειες. Κατανοεί ότι απλά θέλω να φτιάξω ένα απλό (επανάληψη της λέξης απλό -1 πόντος) λειτουργικό server και μου επιτρέπει μέσα σε πολύ λίγο χρόνο να φτάσω σε εντυπωσιακά αποτελέσματα.
Ήθελα πάντα (από παραπροχθές) να φτιάξω ένα αντικοινωνικό δίκτυο αλλά δεν ήξερα πώς. Τώρα όμως με την golang, χρησιμοποιώντας μια βιβλιοθήκη εν ονόματι fiber μπόρεσα να το υλοποιήσω την άβλη αυτή ιστοσελίδα. Παρουσιάζεται ως ένα μέρος στο οποίο μπορεί ο καθένας να μιλάει για επιστήμη, κυρίως Χημεία. Είναι άχρηστη κυρίως, αλλά έχει και κάτι σαν ftp το οποίο δεν εμφανίζεται τόσο εύκολα στα άλλα μέσα. Ο κάθε χρήστης έχει το δικό του προφίλ στο οποίο έχει και μια βιβλιοθήκη. Στην βιβλιοθήκη μπορεί να προσθέσει εκπαιδευτικό υλικό το οποίο είτε βρήκε είτε έφτιαξε ο ίδιος. Δυστυχώς είμαι ο μόνος που ενθουσιάζεται με αυτό γιατί οι συμμαθητές μου δεν έχουν δείξει πολύ ενδιαφέρον. Τουλάχιστον δουλεύει καλά ακόμα και αν έχει γιγαντιαία προβλήματα ασφάλειας.
Πώς την τρέχω; Hosting δεν μπορώ να κάνω γιατί κοστίζει, domain δεν μπορώ να αγοράσω για τον ίδιο λόγο. Όμως υπάρχει το systemd! Απλά έκανα το sevrer μου daemon και το τρέχει κάθε φορά που ανοίγει ο υπολογιστής μου αυτόματα (Δηλαδή όλη μέρα). Μου έκανε πολύ καλό, έμαθα πώς λειτουργούν οι servers, τι είναι τα JWT και λίγη sqlite3.
Στείλε μου μήνυμα αν θες να την επισκεφτείς.
Javascript
Τέλος έκανα λίγο ακόμα javascript. Θυμάμαι που ο μαθηματικός μας μάς ρώτησε ποιοι κάναμε μια άσκηση που μας είχε βάλει τότε σε άλλη γλώσσα προγραμματισμού πέραν της mathematica. Του είχα πει ότι έφτιαξα κάτι σε javascript αλλά ποτέ δεν κατάλαβε ότι το έκανα σε javascript και όχι java. Πάντως έχει κάνει BASIC και μια διάλεκτο της lisp που είναι τέλειο.
Η javascript όσο μοντέρνα και περιέργη να είναι έχω να πω ότι έχει λίγο πλάκα. Αυτήν την φορά επέστρεψα για να φτιάξω ένα απλό layer το οποίο θα με βοηθάει να φτιάχνω παιχνίδια ή διαδραστικές εφαρμογές. Βασίζεται στο built-in canvas και απλά φτιάχνει abstract concepts που βοηθάνε τον προγραμματιστή. Με δύο γραμμές κωδικού μπορώ να φτιάξω ένα particle emittor και με έναν πολύ ξεχωριστό τρόπο μπορείς να δημιουργήσεις μικρά animations. Σε αυτό το εγχείρημα βοήθησε ο αδελφός μου. Όταν φτάσει σε ένα καλύτερο επίπεδο θα ανεβάσω σχετική ανακοίνωση στο μάθημα Javascript III. Όσοι δεν είστε εγγεγγραμένοι στο eclass κάντε το τώρα!
Αυτά ^-^ One day of a hobbyist programmer. My productive life schedule. Can’t start the day without a cup of coffee xD… How I stay productive as a programmer. Αυτά γενικά… είμαι τέλειος κουνήσου τεμπέλη.