Pages

Sunday, September 26, 2010

Ajax Search

Photobucket

Σε προηγούμενο ποστ είχα δείξει έναν τρόπο για αναζήτηση-κατά-την-πληκτρολόγηση.

Ο τρόπος εκείνος φόρτωνε εξ' αρχής όλα τα αποτελέσματα και μετά η αναζήτηση γινόταν τοπικά.

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

Saturday, September 18, 2010

Αλγόριθμοι - Binary Search

Ο αλγόριθμος Binary Search είναι ένας δημοφιλής, αποτελεσματικός και γρήγορος αλγόριθμος αναζήτησης.
Ο αλγόριθμος είναι σχετικά απλός αλλά προαπαιτεί ο πίνακας στον οποίον εφαρμόζεται να είναι ταξινομημένος.
Εφόσον έχουμε δώσει το στοιχείο που ψάχνουμε ξεκινάει ο αλγόριθμος :

1. Επιλέγουμε το μεσαίο στοιχείο του πίνακα και ελέγχουμε αν είναι το στοιχείο που ψάχνουμε.
2.1. Αν είναι το στοιχείο που ψάχνουμε η αναζήτηση τελειώνει.
2.2 Αν το στοιχείο που ψάχνουμε είναι μικρότερο από το μεσαίο στοιχείο του πίνακα τότε επαναπροσδιορίζουμε τον πίνακα ώστε η επόμενη αναζήτηση να γίνει στο μισό του πίνακα με τις μικρότερες τιμές.
2.3 Το αντίστοιχο γίνεται και αν το στοιχείο που ψάχνουμε είναι μεγαλύτερο από το μεσαίο στοιχείο του πίνακα.
3. Επαναλαμβάνουμε την ίδια διαδικασία ξεκινώντας από το βήμα 1. Μετά από λίγες μόνο επαναλήψεις και εφόσον το στοιχείο υπάρχει στο πίνακα, θα βρεθεί.

Θα υλοποιήσουμε ένα παράδειγμα με ένα πίνακα ακεραίων 1024 θέσεων.
Για να γίνει αυτό χρειάζονται μερικές βοηθητικές μεταβλητές :

Friday, September 17, 2010

Προβολή/απόκρυψη στοιχείων βάσει γράμματος με τη Javascript

Επειδή ο τίτλος δεν βοηθάει και ιδιαίτερα, τι εννοώ:

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

To είδα λοιπόν, μου άρεσε, το χρησιμοποίησα σε ένα project και εδώ είναι ένα παράδειγμα για το πώς να το χρησιμοποιήσετε κι εσείς.

Κάπου εδώ να επισημάνω ότι όπως και με το live search, έτσι κι εδώ, πρώτα φορτώνω όλα τα στοιχεία που με ενδιαφέρουν και μετά κάνω την όποια επιλογή. ΔΕΝ γίνεται χρήση Ajax.

Η λογική πίσω από το script είναι ιδιαίτερα απλή και μοιάζει κατά κάποιον τρόπο με το live search:

Sunday, September 12, 2010

Αυτόματη (και μη) εναλλαγή εικόνων με τη JavaScript

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

Μιας που έχουμε εξεταστική, δεν είχα τι να κάνω, οπότε είπα "wtf, ας το κάνω...", άνοιξα μια μπύρα (beer programming ντε! ) και ξεκίνησα....

Πώς λειτουργεί το όλο πράμα:

Έχουμε ένα img και 3 κουμπιά: previous, auto, next. 

Tuesday, September 7, 2010

Java Common Mistakes - == String Comparison

Ένα από τα κλασσικά λάθη των αρχάριων στη Java.

Η σύγκριση Strings με τον τελεστή ==.

Τα Java Strings είναι αντικείμενα της κλάσης java.lang.String. Ο τελεστής == όταν χρησιμοποιείται σε αντικείμενα δε κάνει τίποτα παραπάνω από το να ελέγχει εαν τα δύο αντικείμενα "δείχνουνε" στην ουσία στην ίδια θέση μνήμης.

Οπότε με αυτό το τρόπο δεν συγκρίνουμε τα περιεχόμενα των δύο Strings, άρα παίρνουμε πιθανώς και λάθος αποτελέσματα.

Wednesday, September 1, 2010

Breadcrumbs με την PHP

Τι είναι τα breadcrumbs;

Well, είναι τα... "ψίχουλα" που δείχνουν πιο "μονοπάτι" από κατηγορίες και υποκατηγορίες ακολούθησες για να βρεθείς εκεί που βρέθηκες μέσα σε ένα site.

Μιας λοιπόν που στο προηγούμενο post ασχολήθηκα με τις κατηγορίες και τις υποκατηγορίες είπα να το συνεχίσω και να ασχοληθώ και με αυτό που το αναρωτιόμουν περισσότερο καιρό απ' ό,τι αυτό με τις υποκατηγορίες.

Κλασσικά, ακολουθεί η γενική ιδέα, και μετά μια συνάρτηση που την υλοποιεί.
Στην προκειμένη περίπτωση, η συνάρτηση μπορεί να γραφτεί και (αρκετά) καλύτερα, αλλά έτσι είναι αρκετά αναλυτικά και κατανοητά.

Anyways, η βασική ιδέα έχει ως εξής:

Παίρνουμε το id της κατηγορίας που είμαστε
Βάσει αυτού, πηγαίνουμε προς τα πίσω στην parent category και την κρατάμε και αυτή.
Το παραπάνω το κάνουμε μέχρι να φτάσουμε σε root category.
Μετά απλώς τα εμφανίζουμε με αντίστροφη σειρά τα αποτελέσματα.


Ιδού και η συνάρτηση: