thanocaster Δημοσ. 27 Απριλίου 2011 Δημοσ. 27 Απριλίου 2011 Ωφείλω να ζητήσω συγγνώμη για το θέμα του API, καθώς δεν πρόσεξα ότι καλείς το 'https://maps-api-ssl...om/maps/suggest', και όχι το 'http://maps.google.com/maps/api/js'. Συνεπώς, όντως δεν φορτώνεις το API, απλά καλείς μια υπηρεσία της Google, η οποία επιστρέφει τις περιοχές που ματσάρουν με το query του χρήστη. Βέβαια, εσύ επιμένεις πως δεν κάνεις κανένα call στην Google, και, επίσης, πως δεν χρειάζεται κανένα key (που ούτως ή άλλως το Google Maps δεν απαιτεί κανένα key).
h4ck3r Δημοσ. 27 Απριλίου 2011 Μέλος Δημοσ. 27 Απριλίου 2011 Πολύ ωραία όλα αυτά αλλά κάνω χρήση της υπηρεσίας και τσιμπάω τα αποτελέσματα "as-is" και μετά με reverse engineering κάνω χρήση και διαχωρισμό των αποτελεσμάτων χωρίς να έχω γνώση και χρήση του A.P.I! Άρα δεν κάνω κανένα A.P.I call στο Google, δεν είναι call το request στο link, και τέλος δεν γνώριζα ότι το νέο version του Google Maps και τα σχετικά δεν χρειάζεται πλέον keys ή οτιδήποτε άλλο μιας και δεν έκανα ποτέ τον κόπο να τα μάθω γιατί δε χρειάστηκα χάρτες! Πιστεύω ότι καταλαβαίνεις τώρα πως το μόνο που παρέχω είναι μια καθαρή υλοποίηση με reverse engineering του συστήματος της Google, τουλάχιστον ένα μέρος του για την ώρα.
kostas0928 Δημοσ. 28 Απριλίου 2011 Δημοσ. 28 Απριλίου 2011 Τι έχει το API της google ρε παιδιά ? Γιατί προσπαθούμε να το αποφύγουμε ?
h4ck3r Δημοσ. 28 Απριλίου 2011 Μέλος Δημοσ. 28 Απριλίου 2011 Δε λέμε να το αποφύγουμε, όχι πάντα τουλάχιστον. Προσωπικά το βλέπω μόνο και μόνο απο θέμα μεγέθους, ταχύτητας και εγωϊσμού το να μπορώ να κάνω χρήση μέρους του συστήματος άμεσα και όχι όλου και χωρίς να κάτσω να διαβάσω κάποιο A.P.I. Αυτά είναι τα ωραία!
kostas0928 Δημοσ. 28 Απριλίου 2011 Δημοσ. 28 Απριλίου 2011 Ωραία ας πούμε οτι εσύ που το έφτιαξες ικανοποίησες τον εγωϊσμό σου. Σε εμάς τους υπόλοιπους προσφέρει κάτι ?
h4ck3r Δημοσ. 28 Απριλίου 2011 Μέλος Δημοσ. 28 Απριλίου 2011 Βέβαια! Μικρό μέγεθος, μεγαλύτερη ταχύτητα και φυσικά ευχρηστία, γιατί δε καλείς κάποιο A.P.I ή κάτι άλλο και έχεις ένα έτοιμο αυτόνομο εργαλείο! Το βάζεις στο site σου και απλά παίζει.... Τί άλλο θες?
kostas0928 Δημοσ. 28 Απριλίου 2011 Δημοσ. 28 Απριλίου 2011 Μικρό μέγεθος, μεγαλύτερη ταχύτητα και φυσικά ευχρηστία, Μα αυτά θεωρούνται δεδομένα σε οτιδήποτε φτιάχνεις εσύ ! Ειδικά η ευχρηστία είναι πιστεύω το σήμα κατατεθεν σου (μετά την ασφάλεια βέβαια). Τιποτα άλλο δεν προσφέρει ??? (Μας έχεις καλομάθει και έχουμε απαιτήσεις!)
h4ck3r Δημοσ. 28 Απριλίου 2011 Μέλος Δημοσ. 28 Απριλίου 2011 Αυτό είναι δική σου άποψη, άν έχεις να προτείνεις κάτι...καλώς αλλιώς αν θες να αποδείξεις κάτι κάνε κάτι καλύτερο και μετά έλα να με κρίνεις. Είμαι σαφής.
dewn735 Δημοσ. 28 Απριλίου 2011 Δημοσ. 28 Απριλίου 2011 Το βάζεις στο site σου και απλά παίζει.... Αυτό ελέγχεται.. Έχει προαπαιτήσεις τις οποίες δε λες να παραδεχτείς... Ας πάρουμε για παράδειγμα αυτή τη γραμμή: >url = '/ultra_suggest.php'; εάν δε βάλω όλα τα αρχεία στον root φάκελο, καταλαβαίνεις ότι απλώς γυρνάει σφάλμα, έτσι δεν είναι; Βέβαια! έχεις ένα έτοιμο αυτόνομο εργαλείο! ... το οποίο επί της ουσίας δε κάνει τίποτα! Ωραία, βρήκα όλες τις "athens" του πλανήτη.. και μετά; Πως μπορεί να χρησιμοποιηθεί για παράδειγμα σε αυτό το θέμα;
h4ck3r Δημοσ. 28 Απριλίου 2011 Μέλος Δημοσ. 28 Απριλίου 2011 Απλά το βάζει το παλικάρι στο φάκελο και το κάνει χρήση.... Το μόνο που δε λαμβάνει υπόψιν όμως το συγκεκριμένο tool είναι τα μήκη και πλάτη. Εάν τον ενδιαφέρει όμως μόνο το auto-complete είναι ΟΚ! Όσο γι αυτό url = '/ultra_suggest.php';, είναι λογικό βέβαια να μπορείς να το αλλάξεις.
kostas0928 Δημοσ. 28 Απριλίου 2011 Δημοσ. 28 Απριλίου 2011 Αυτό είναι δική σου άποψη, Για την ακρίβεια είναι η άποψη των τεσσάρων απο τους πέντε που έχουν ποστάρει σε αυτό το τόπικ (και ο πέμπτος είσαι εσύ!)
dewn735 Δημοσ. 28 Απριλίου 2011 Δημοσ. 28 Απριλίου 2011 Απλά το βάζει το παλικάρι στο φάκελο και το κάνει χρήση.... Το μόνο που δε λαμβάνει υπόψιν όμως το συγκεκριμένο tool είναι τα μήκη και πλάτη. Εάν τον ενδιαφέρει όμως μόνο το auto-complete είναι ΟΚ! Όσο γι αυτό url = '/ultra_suggest.php';, είναι λογικό βέβαια να μπορείς να το αλλάξεις. Όπως βλέπεις όμως, το παλικάρι γράφει ότι γενικότερα δεν το "κατέχει". Με το να του δώσεις αυτό το ημιτελές extension με όλα αυτά τα προβλήματα που σου αναφέραμε και τη παντελή έλλειψη βοήθειας (ή έστω σχολίων στον κώδικα) απλώς ακυρώνεις όλη τη προσπάθειά σου. Φτιάξε κάτι πιο ολοκληρωμένο και ουσιώδες (σαν κι αυτό), άσε τους βαρύγδουπους τίτλους ("Reversed Engineered Google Maps A.P.I." - σιγά, χαλάρωσε λίγο!), βάλε κάνα σχόλιο στον κώδικά σου, φτιάξε ένα βασικό troubleshooting, προέβλεψε βασικά λάθη του χρήστη, κάνε και κάνα τεστάρισμα σε διαφορετικά μηχανήματα και εγκαταστάσεις και θα αφήσουμε κι εμείς το κράξιμο και την (επί μονίμου βάσεως αρνητική) κριτική BTW, ακόμα ένα λάθος λογικής: >// Initialize an AJAX object function AJAX_Init() { var xmlHttp = null; // Firefox, Opera, Safari, Chrome try { xmlHttp = new XMLHttpRequest(); } catch(any_error) { // Internet Explorer try { xmlHttp = new ActiveXObject('Msxml2.XMLHTTP'); } catch(ie_error) { try { xmlHttp = new ActiveXObject('Microsoft.XMLHTTP'); } catch(no_error) { alert('Your browser does not support AJAX!'); } } } return xmlHttp; } // Initialize global XML HTTP objects global_xml_http[0] = AJAX_Init(); global_xml_http[1] = AJAX_Init(); global_xml_http[2] = AJAX_Init(); global_xml_http[3] = AJAX_Init(); global_xml_http[4] = AJAX_Init(); global_xml_http[5] = AJAX_Init(); global_xml_http[6] = AJAX_Init(); global_xml_http[7] = AJAX_Init(); εάν όντως ο browser δεν υποστηρίζει ajax, θα τρέξει 7 φορές την >alert('Your browser does not support AJAX!'); και θα φάω στη μάπα ισάριθμα μηνύματα λάθους... Επιπλέον, γιατί τόσες κενές γραμμές; Είπαμε, readability, αλλά αυτό καταντάει γελοίο... και τέλος, γιατί όλο αυτό: >if (ajax_session == 1) { global_xml_http[0].onreadystatechange = __State_Changed_1; global_xml_http[0].open('POST', url, true); global_xml_http[0].setRequestHeader ('Accept-encoding', 'UTF-8'); global_xml_http[0].setRequestHeader ('Content-type', 'application/x-www-form-urlencoded'); global_xml_http[0].setRequestHeader ('Content-length', data.length); global_xml_http[0].setRequestHeader ('Connection', 'close'); global_xml_http[0].send(data); } if (ajax_session == 2) { global_xml_http[1].onreadystatechange = __State_Changed_2; global_xml_http[1].open('POST', url, true); global_xml_http[1].setRequestHeader ('Accept-encoding', 'UTF-8'); global_xml_http[1].setRequestHeader ('Content-type', 'application/x-www-form-urlencoded'); global_xml_http[1].setRequestHeader ('Content-length', data.length); global_xml_http[1].setRequestHeader ('Connection', 'close'); global_xml_http[1].send(data); } if (ajax_session == 3) { global_xml_http[2].onreadystatechange = __State_Changed_3; global_xml_http[2].open('POST', url, true); global_xml_http[2].setRequestHeader ('Accept-encoding', 'UTF-8'); global_xml_http[2].setRequestHeader ('Content-type', 'application/x-www-form-urlencoded'); global_xml_http[2].setRequestHeader ('Content-length', data.length); global_xml_http[2].setRequestHeader ('Connection', 'close'); global_xml_http[2].send(data); } if (ajax_session == 4) { global_xml_http[3].onreadystatechange = __State_Changed_4; global_xml_http[3].open('POST', url, true); global_xml_http[3].setRequestHeader ('Accept-encoding', 'UTF-8'); global_xml_http[3].setRequestHeader ('Content-type', 'application/x-www-form-urlencoded'); global_xml_http[3].setRequestHeader ('Content-length', data.length); global_xml_http[3].setRequestHeader ('Connection', 'close'); global_xml_http[3].send(data); } if (ajax_session == 5) { global_xml_http[4].onreadystatechange = __State_Changed_5; global_xml_http[4].open('POST', url, true); global_xml_http[4].setRequestHeader ('Accept-encoding', 'UTF-8'); global_xml_http[4].setRequestHeader ('Content-type', 'application/x-www-form-urlencoded'); global_xml_http[4].setRequestHeader ('Content-length', data.length); global_xml_http[4].setRequestHeader ('Connection', 'close'); global_xml_http[4].send(data); } δε γράφτηκε απλά σαν: >global_xml_http[ajax_session].onreadystatechange = __State_Changed_(ajax_session); global_xml_http[ajax_session-1].open('POST', url, true); global_xml_http[ajax_session-1].setRequestHeader ('Accept-encoding', 'UTF-8'); global_xml_http[ajax_session-1].setRequestHeader ('Content-type', 'application/x-www-form-urlencoded'); global_xml_http[ajax_session-1].setRequestHeader ('Content-length', data.length); global_xml_http[ajax_session-1].setRequestHeader ('Connection', 'close'); global_xml_http[ajax_session-1].send(data);
h4ck3r Δημοσ. 28 Απριλίου 2011 Μέλος Δημοσ. 28 Απριλίου 2011 Όντως....Good point! Απλώς το search που μου έδωσες σαν παράδειγμα κάνει χρήση του Google A.P.I. Εμένα δε μου κάνει. Όσο γι' αυτό; "βαρύγδουπους τίτλους ("Reversed Engineered Google Maps A.P.I." - σιγά, χαλάρωσε λίγο!" που είναι το υπερβολικό? λέω απλά τι έκανα με την ορολογία που διέπει την τεχνική.
PavelX Δημοσ. 28 Απριλίου 2011 Δημοσ. 28 Απριλίου 2011 Άλλο το http://en.wikipedia.org/wiki/Reverse_engineering και άλλο το http://en.wikipedia.org/wiki/Parsing
h4ck3r Δημοσ. 28 Απριλίου 2011 Μέλος Δημοσ. 28 Απριλίου 2011 Ευχαριστώ πολύ, αυτή είναι η δουλειά μου. Τα γνωρίζω πολύ καλά και ξέρω πολύ καλά τι λέω. Δεν κάνω κανένα parsing δεν φτιάχνω κανένα compiler αλλά έκανα reverse engineering στο προτώκολλο επικοινωνίας. Πως λοιπόν κάνεις χρήση του A.P.I χωρίς να το καλείς. Αυτό ονομάζεται χρήση με αντίστροφη μηχανική (Βλέπε σαν παράδειγμα WINE)
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.