Τη στιγμή που αποφασίζεις να δοκιμάσεις σε μία φορητή συσκευή την ιστοσελίδα (ή web εφαρμογή) που τόσο καιρό φτιάχνεις με αγάπη και μεράκι, αντιλαμβάνεσαι πως ενώ ο browser είναι o ίδιος και όλοι δουλεύουν για να τον κάνουν όσο πιο συμβατό γίνεται με την αντίστοιχη desktop έκδοση, τα πράγματα δεν είναι τόσο απλά και ξεκάθαρα. Αν το layout σου στη μικρή οθόνη μοιάζει να έχει επιρροές από Picasso (ναι, το γνωστό ζωγράφο) τότε να κατηγορήσεις το μη προσαρμόσιμο σχεδιασμό σου (τους CSS κανόνες για μικρές οθόνες που δεν έβαλες, τα meta tags που ξέχασες, κλπ. κλπ.), και φυσικά το μη συνεργάσιμο browser. Αν το πρόβλημα όμως δεν είναι εμφανισιακό αλλά λειτουργικό, δηλαδή πατάς εκείνο το ωραίο καμπυλωτό κουμπί που έφτιαξες και δεν κάνει απολύτως τίποτα, τότε τα πράγματα είναι κάπως πιο δύσκολα γιατί μάλλον ο JavaScript κώδικας σου απέτυχε και άντε να βρεις τι πήγε στραβά.
Μαζική αλλαγή διαστάσεων εικόνων
Έστω πως έχετε πολλές (πολλές!) εικόνες και θέλετε να τις δείξετε στους φίλους σας έστω κάποιο κοινωνικό εικονικό δίκτυο (γκου χου, γκου χου, ονόματα δε λέμε).
Παρατηρείτε πως κάθε φορά που πρέπει να ανεβάσετε ένα album από την τελευταία σας εξόρμηση στη φύση ή εκείνο το φοβερό πάρτι, το εν λόγω δίκτυο κάνει 3456* 10^10 ώρες μέχρι να τις ανεβάσει.
Είναι προφανές (για να μη πούμε προφανέστατο) πως η ολοκαίνουργια φωτογραφική σας με τα 20 mega pixel, που τραβά τέλειες φωτογραφίες, ΔΕΝ έχει να κάνει τίποτε με το πρόβλημα αυτό. Βέβαια, παρατηρείτε επίσης πως ο σκληρός σας δίσκος τώρα τελευταία «σαν πολύ γρήγορα να γεμίζει».
Μαζική αποστολή μηνυμάτων email (τελευταίο μέρος)
Το widget
Το widget μας θα είναι ένα κομματάκι JavaScript που θα προσθέτει μια ετικέτα div στο σημείο κλήσης του και μετά με ajax θα φορτώνει την πρώτη σελίδα, αυτήν της εγγραφής δηλαδή. Εδώ συναντάμε και την πρώτη σημαντική δυσκολία: το φόρτωμα με ajax περιεχόμενου από διαφορετικό domain… Πολλάααα λίτρα μελάνης έχουν χυθεί στην αναφορά των θεμάτων ασφάλειας που κάτι τέτοιο θα δημιουργούσε. Για το λόγο αυτό ακολουθούμε την μέθοδο CORS (Cross Origin Resource Sharing) me με απλή προσθήκη του Continue Reading…
Μαζική αποστολή μηνυμάτων email (μέρος 2ο)
Εν αρχή ην …. ο σχεδιασμός
Θα γνωρίζετε υποθέτω εκείνη τη λαϊκή (και σοφή) ρήση που λέει πως “κάλιο γαϊδουρόδενε παρά γαϊδουρογύρευε”. Κι ‘μεις αυτά τα ράβε-ξήλωνε δε τα συμπαθούμε διόλου. Έτσι θα ξεκινήσουμε σχεδιάζοντας όσα θέλουμε να γίνουν έχοντας κατά νου το προηγούμενό μας άρθρο σχετικά με την μαζική αποστολή μηνυμάτων email (ΌΧΙ spam).
Θέλουμε λοιπόν να μπορούμε να στέλνουμε newsletters σε εγγεγραμμένους χρήστες, να τους δίνουμε την δυνατότητα να αποχωρήσουν από την λίστα μας (μη ξεχνάμε τον 3471/2006) και φυσικά να έχουμε μια βολική μέθοδο να τους καλούμε να γραφτούν. Continue Reading…
Μαζική αποστολή μηνυμάτων email (για newsletter)
Ο ελέφαντας στο δωμάτιο: spam
Εντάξει, θα αρχίσουμε από τα προφανή: η μαζική αποστολή μηνυμάτων μέσω ηλεκτρονικού ταχυδρομείου (και όχι μόνο) χωρίς να είναι ρητά επιθυμητά από τους παραλήπτες είναι Ο ορισμός του spam.
Ο νόμος για τη “Μη ζητηθείσα επικοινωνία”
Το άρθρο 11 του Νόμου 3471/2006 στην παράγραφο 1 σχετικά με τη “Μη ζητηθείσα επικοινωνία” δηλώνει “Η χρησιμοποίηση αυτόματων συστημάτων κλήσης, ιδίως με χρήση συσκευών τηλεομοιοτυπίας (φαξ) ή ηλεκτρονικού ταχυδρομείου, και γενικότερα η πραγματοποίηση μη ζητηθεισών επικοινωνιών με οποιοδήποτε μέσο ηλεκτρονικής επικοινωνίας, χωρίς ανθρώπινη παρέμβαση, για σκοπούς απευθείας εμπορικής προώθησης προϊόντων ή υπηρεσιών και για κάθε είδους διαφημιστικούς σκοπούς, επιτρέπεται μόνο αν ο συνδρομητής συγκατατεθεί εκ των προτέρων ρητώς.” Continue Reading…
OWASP Νο10 – Μη επικυρωμένες μεταπηδήσεις ή προωθήσεις (Unvalidated Redirects and Forwards)
Συνεχίζοντας τον κύκλο άρθρων σχετικά με την ασφάλεια σε δικτυακά περιβάλλοντα σε συνεργασία με τον Παναγιώτη Καλαντζή, τελευταία στον χορό των αδυναμιών παρουσιάζεται η χρήση μη επικυρωμένων μεταπηδήσεων ή προωθήσεων από την εφαρμογή (Unvalidated Redirects and Forwards). Πολλές διαδικτυακές εφαρμογές χρησιμοποιούν για την μεταπήδηση ή προώθηση από σελίδα σε σελίδα εξειδικευμένες σελίδες που, πολύ συχνά, δέχονται Continue Reading…
Φτιάχνοντας το δικό μας CAPTCHA
Σε προηγούμενη ανάρτησή μας, είδαμε μερικούς λόγους που οδηγούν στη χρήση captcha.
Στην παρούσα θα δούμε πώς φτιάχνεται ένα απλό captcha με τη χρήση PHP και ολίγη JavaScript.
Ξεκινώντας να σχεδιάσουμε τη διαδικασία, είναι απλό και υψηλού επιπέδου Διάγραμμα Μεταβολής Καταστάσεων είναι ιδιαίτερα βοηθητικό. Continue Reading…
php – Κατεβάζοντας playlists με το youtube-dl: “real users do it on the command line”
Πήρατε λοιπόν, λέω ‘γω τώρα, το τζιτζι νέο κασετοφωνάκι αυτοκινήτου και μετά από ~10^32 προσπάθειες να βρείτε μετασχηματιστή των καλωδίων για να «μπει» χωρίς να σφάξετε τα καλώδια που μυρίζουν καινουργίλα… τέλος πάντων μπήκε 😀
Στην πρώτη βόλτα όμως παρά τον κρυστάλλινο ήχο και τα υπόλοιπα πλεονεκτήματά του, σας έλλειψε η αγαπημένη σας playlist. Continue Reading…
php: Αυτόματη μετάφραση πολλαπλών κειμένων με την Bing-Translate (Μέρος 2ο και καλύτερο!)
Θυμάστε που κάναμε καφέ όσο η php έστελνε κείμενα για μετάφραση;
Θυμάστε που αναρωτηθήκαμε τι νόημα έχει η μέθοδος Translate() να απαντά μόνο σε http GET όταν το μήκος του κειμένου προς μετάφραση επιτρέπεται να είναι 10000 χαρακτήρες (κάντε και τον πολλαπλασιασμό για UTF-8 και urlencode) ενώ ο server δέχεται μέγιστο μήκος uri όχι πάνω από 5000 χαρακτήρες;
Εεεεε, ήρθε η ώρα να κάνουμε άλλο ένα καφεδάκι 😉 Continue Reading…
php: Αυτόματη μετάφραση πολλαπλών κειμένων με την Bing-Translate (πέρα από τα όρια ενός μόνο λογαριασμού ;-)
Αααχχ οι χαρές της επεξεργασίας δεδομένων καθώς εσείς … πίνετε καφέ! Ποιος άλλος τομέας δεν έχει ζηλέψει την πληροφορική για αυτή την ικανότητά της;
Η αυτοματοποιημένη μετάφραση στις μέρες μας, παρότι πολύ σπάνια δεν χρήζει χειρωνακτικής διόρθωσης, έχει εξελιχθεί ιδιαιτέρως. Continue Reading…