Προς το περιεχόμενο

Συνεχής ανανέωση τιμής και διαθεσιμότητας για +10,000 προϊόντα από amazon.com affiliate


redmedusa

Προτεινόμενες αναρτήσεις

Φτιάχνω μια βάση δεδομένων με +10,000 προϊόντα από κυρίως εξαρτήματα υπολογιστή (Επεξεργαστές, Μητρικές, κλπ.)

Η βάση δεδομένων είναι τύπου MySQL με όνομα "parts" και με πίνακες για κάθε είδους εξαρτήματος, π.χ. πίνακας με όνομα "processors"

Επίσης, φτιάχνω μια εφαρμογή (iOS) που μπορεί να χρησιμοποιηθεί για να φτιάξει ο χρήστης πλήρης συστήματα Η/Υ, όπως στη σελίδα pcpartpicker.com

Έχω αρκετή εμπειρία με εφαρμογές αλλά σχεδόν καθόλου με networking για αυτό δεν ξέρω πως να κατευθυνθώ.

Για αρχή θα ήθελα να χρησιμοποιήσω την amazon.com και να γίνω affiliate.

1. Πρέπει να συνδέσω κάθε προϊόν με την αντίστοιχη διεύθυνση του στην amazon.com

2. Πρέπει να ανανεώνω την τιμή και την διαθεσιμότητα του από την amazon.com

Πρόβλημα 1

Νομίζω ότι πρέπει να το κάνω χειροκίνητα με τον ίδιο τρόπο που έφτιαξα και τη βάση δεδομένων. (αρκετά επίπονη και χρονοβόρα διαδικασία)

Παράδειγμα

Προφανώς, η τελική διεύθυνση θα έχει και τα affiliate στοιχεία μου μέσα.

Αλλά τι γίνεται με τα links? Υπάρχει πιθανότητα να αλλάξουν?

Πρόβλημα 2

Η τιμή και η διαθεσιμότητα (ελπίζω) είναι οι μόνες μεταβλητές που αλλάζουν γρήγορα και θα ήθελα να τις ελέγχω κάθε 10 λεπτά.

Αρχίζω με ένα απλό script (server-side) που ανανεώνει +10,000 τιμές και διαθεσιμότητες στην MySQL και στη συνέχεια από την εφαρμογή (client-side) κάνω ένα query για να τις διαβάσω (περίπου 1MB δεδομένων) κάθε 10 λεπτά.

Με τη γλώσσα πρέπει να φτιάξω το script? Πως πρέπει να είναι η δομή/αρχιτεκτονική του?

Γενικά

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

Δεν με νοιάζει να κάνει scale και για τα 10,000 προιόντα σωστά χωρις να αργεί κλπ. αρκεί να δουλέψει για αρχή και μετά το βελτιστοποιώ.

Οποιαδήποτε βοήθεια είναι πολύτιμη και ευπρόσδεκτη.

Σας ευχαριστώ πολύ.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

2 ώρες πριν, redmedusa είπε

Φτιάχνω μια βάση δεδομένων με +10,000 προϊόντα από κυρίως εξαρτήματα υπολογιστή (Επεξεργαστές, Μητρικές, κλπ.)

Η βάση δεδομένων είναι τύπου MySQL με όνομα "parts" και με πίνακες για κάθε είδους εξαρτήματος, π.χ. πίνακας με όνομα "processors"

Επίσης, φτιάχνω μια εφαρμογή (iOS) που μπορεί να χρησιμοποιηθεί για να φτιάξει ο χρήστης πλήρης συστήματα Η/Υ, όπως στη σελίδα pcpartpicker.com

Έχω αρκετή εμπειρία με εφαρμογές αλλά σχεδόν καθόλου με networking για αυτό δεν ξέρω πως να κατευθυνθώ.

Για αρχή θα ήθελα να χρησιμοποιήσω την amazon.com και να γίνω affiliate.

1. Πρέπει να συνδέσω κάθε προϊόν με την αντίστοιχη διεύθυνση του στην amazon.com

2. Πρέπει να ανανεώνω την τιμή και την διαθεσιμότητα του από την amazon.com

Πρόβλημα 1

Νομίζω ότι πρέπει να το κάνω χειροκίνητα με τον ίδιο τρόπο που έφτιαξα και τη βάση δεδομένων. (αρκετά επίπονη και χρονοβόρα διαδικασία)

Παράδειγμα

Προφανώς, η τελική διεύθυνση θα έχει και τα affiliate στοιχεία μου μέσα.

Αλλά τι γίνεται με τα links? Υπάρχει πιθανότητα να αλλάξουν?

Πρόβλημα 2

Η τιμή και η διαθεσιμότητα (ελπίζω) είναι οι μόνες μεταβλητές που αλλάζουν γρήγορα και θα ήθελα να τις ελέγχω κάθε 10 λεπτά.

Αρχίζω με ένα απλό script (server-side) που ανανεώνει +10,000 τιμές και διαθεσιμότητες στην MySQL και στη συνέχεια από την εφαρμογή (client-side) κάνω ένα query για να τις διαβάσω (περίπου 1MB δεδομένων) κάθε 10 λεπτά.

Με τη γλώσσα πρέπει να φτιάξω το script? Πως πρέπει να είναι η δομή/αρχιτεκτονική του?

Γενικά

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

Δεν με νοιάζει να κάνει scale και για τα 10,000 προιόντα σωστά χωρις να αργεί κλπ. αρκεί να δουλέψει για αρχή και μετά το βελτιστοποιώ.

Οποιαδήποτε βοήθεια είναι πολύτιμη και ευπρόσδεκτη.

Σας ευχαριστώ πολύ.

Αρχίζω με ένα απλό script (server-side) που ανανεώνει +10,000 τιμές και διαθεσιμότητες στην MySQL και στη συνέχεια από την εφαρμογή (client-side) κάνω ένα query για να τις διαβάσω (περίπου 1MB δεδομένων) κάθε 10 λεπτά.

Μάλλον δεν έχω καταλάβει κάτι (η μαλλον εσυ), αλλά τι εννοείς εδώ server and client side; Ενα σκριπτ εχεις, που διαβαζει οτι το api του αμαζον, και γραφει στην DB σου. Σερβερ side εχεις μονο, δεν εχεις client. To οσον αφορα την γλωσσα, μπορεις να την κανεις με οτι επιθυμει η ψυχουλα σου, οτι ξερεις καλυτερη ή απλα με python.

Πάνε κάνε ένα Azure account (η aws, δεν εχει σημασια), κανε ενα free tier azure function, προσθεσε ενα timer triggered (cronjob) που θα τρεχει καθε 10λεπτο, σωσε τα δεδομενα σε ενα storage account η οπου επιθυμει η ψυχουλα σου και τελειωσες. Azure functions ειναι free, και ενα απλο storage account ειναι πανφτηνο. 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)
5 ώρες πριν, Papakaliati είπε

Αρχίζω με ένα απλό script (server-side) που ανανεώνει +10,000 τιμές και διαθεσιμότητες στην MySQL και στη συνέχεια από την εφαρμογή (client-side) κάνω ένα query για να τις διαβάσω (περίπου 1MB δεδομένων) κάθε 10 λεπτά.

Μάλλον δεν έχω καταλάβει κάτι (η μαλλον εσυ), αλλά τι εννοείς εδώ server and client side; Ενα σκριπτ εχεις, που διαβαζει οτι το api του αμαζον, και γραφει στην DB σου. Σερβερ side εχεις μονο, δεν εχεις client. To οσον αφορα την γλωσσα, μπορεις να την κανεις με οτι επιθυμει η ψυχουλα σου, οτι ξερεις καλυτερη ή απλα με python.

Πάνε κάνε ένα Azure account (η aws, δεν εχει σημασια), κανε ενα free tier azure function, προσθεσε ενα timer triggered (cronjob) που θα τρεχει καθε 10λεπτο, σωσε τα δεδομενα σε ενα storage account η οπου επιθυμει η ψυχουλα σου και τελειωσες. Azure functions ειναι free, και ενα απλο storage account ειναι πανφτηνο. 

Καταρχάς, σε ευχαριστώ πολύ για την απάντηση σου.

Μερικά λόγια για την εφαρμογή:

Θέλω να ανταγωνιστώ την ιστοσελίδα pcpartpicker.com και να πάρω ένα αρκετά μεγάλο market share απο τους χρήστες της.

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

Σκοπεύω να κάνω μια native εφαρμογή (iOS, macOS, Android, Windows και Linux) ώστε να προσαρμόζεται στο λειτουργικό σύστημα του χρήστη και να είναι αρκετά γρήγορη. Εν αντιθέση, η ιστοσελίδα pcpartpicker.com έχει general web based design και αργεί πολύ επειδή τρέχει σε web browser και σε κάθε εντολή πρέπει να φορτώσει μια νέα σελίδα.

Όσο αναφορά τους clients και τον server:

Η εφαρμογή δεν συνδέεται για να διαβάσει τα προϊόντα από τη βάση δεδομένων αλλά την κατεβάζει ολόκληρη (περίπου 50MB χωρίς φωτογραφίες) την πρώτη φορά που την ανοίγεις όπως κάνουν τα προγράμματα Antivirus. Η βάση δεδομένων έχει "version=1.0.0". Όταν βάλω επιπλέον προιόντα, κατι που συμβαίνει σχετικά σπάνια (1-2 φορές τη βδομάδα) επειδή δεν βγαίνουν καινούργιοι επεξεργαστές και μητρικές κάθε μέρα, αλλάζει το "version=1.0.1" και όλοι οι clients την κατεβάζουν ξανά ολάκερη.

Στον server υπάρχει η βάση δεδομένων (σε συμπιεσμένη μορφή και μη) αλλά και το script που τρέχει συνέχεια για να ανανεώvει τις τιμές και τις διαθεσιμότητες. Κάθε 10 λεπτά όλοι οι clients διαβάζουν την version της βάσης δεδομένων αλλά και τις τιμές και διαθεσιμότητες (σε άλλο πίνακα) όλων των προιόντων με ένα απλό query:

SELECT price, availability FROM affiliate_data

Το script πρέπει ανανεώνει αυτόν τον πίνακα κάθε φορά που υπάρχει αλλαγή τιμής ενός προϊόντος στο amazon.com αλλά μελλοντικά και από άλλους affiliates όπως Newegg, BestBuy, B&H, κ.α.

Κάτι ακόμα:

Επειδή, το PC Building είναι ένα design process με πολλά revisions (τα πρώτα εξαρτήματα που σκέφτεσαι να αγοράσεις δεν είναι αυτά που τελικά θα αγοράσεις) και επειδή μια αλλαγή κατεύθυνσης δεν αρκεί σκοπεύω να ενσωματώσω τεχνητή νουμοσύνη ώστε το πρώτο build να γίνεται σε δευτερόλεπτα σύμφωνα με τις προηγούμενες επιλογές όλων των χρηστών.

Στον server θα πρέπει να τρέχει και ένα script HTM (Hierarchical Temporal Memory) της Numenta, είναι ένα νέου είδους τεχνητής νουμοσήνσης που δουλεύει με αναπαραστάσεις (Sparse Distributed Representations) και δομές (Sensors, Columns, Segments, Cells, Connections) όπως ο εγκέφαλος (είναι βιολογικά ακριβής).

Είμαι αρκετά ενθουσιασμένος διότι το έχω δοκιμάσει και δουλεύει αλλά χρειάζεται ΠΟΛΥ RAM. Είχα φτιάξει μια HTM για iOS την οποία έχω ενσωματώσει σε έναν Web Browser που είχα φτιάξει πάλι για iOS ώστε να μαντεύει τα Bookmarks. Επισυνάπτω μια απλουστευμένη έκδοση της αν θέλετε απλά να ρίξετε μια ματιά στον κώδικα (Objective-C). SNMemory.zip

Δεν μπορώ να κατεβάσω το συνημμένο αρχείο για κάποιο λόγο: https://www.sendspace.com/file/o3mwzh

Παρακολουθώ Numenta Meetings και έχουν καταλήξει σε Python για την HTM επειδή ο Wrapper της χρησιμοποιεί λιγότερη μνήμη. Επειδή, δεν έχω ασχοληθεί με servers στο παρελθόν, πως μπορώ να έχω ένα script που να καταναλώνει π.χ. 1GB RAM και να τρέχει συνέχεια? Έχω αυτή την πολυτέλεια με AWS και Azure? Μήπως πρέπει να φτιάξω τον δικό μου? Τι είδους περιβάλλον και ποιάς εταιρίας πιστεύεται είναι το καλύτερο? Σε ποιά εταιρία να απευθυνθώ για hosting? Μήπως ένας dedicated server είναι καλύτερος?

Συγνώμη αν σας ζάλισα.

Επεξ/σία από redmedusa
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

θεωρώ οτι ειναι λαθος αυτο που κανεις με το καθε 10 λεπτα.
Εγω θα εκανα το εξης.

θα ειχα στον Server ενα Node.js ( websocket server ) ή θα εφτιαχνα ενα Service ( pascal , c++ )  που να ανοιγει μια πορτα και να κανουν connect οι χρηστες οσο τρεχει η εφαρμογη σου.Δεν χρειαζεται καν να ειναι websocket server αφου απο την στιγμη που το εχεις σε εφαρμογη μπορει καλιστα να ειναι ενας TCP Server  ή ακομα και ενας UDP server.

οποτε το Script που τρεχει στην βαση κανει update σημειώνει σε ενα Log file τα Updates.
Οταν συνδεεται ο Client στελνει ενα Handle με το τελευταιο update που εχει λαβει απο τον Websocket/TCP server.
Ο Server του στελνει πισω απο αυτο το timestamp και επειτε ολα τα updates και η εφαρμογη σου ενημερωνει το SQLlite Database client side.
ετσι οι χρηστες δεν καθυστερουν και δεν χρειαζετε να κατεβαζουν συνεχως ολοξληρη την Database.

τωρα βεβαια εσυ ξερεις καλυτερα τι θες και περι ορεξεως ... :)


 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...