Traits in PHP 5.4 Αναρτήθηκε στις 2013-07-27 06:53:00 από Vontikakis

traits.jpg Η php είναι η πιο διαδεδομένη γλώσσα στην ανάπτυξη εφαρμογών web, όσο περνάει ο καιρός προσθέτονται καινούργια χαρακτηριστικά τα οποία τη κάνουν καλύτερη στο κομμάτι του OOP, στην έκδοση PHP 5.4 προστέθηκαν τα traits. Τα traits είναι κλάσεις από τις οποίες δεν μπορούν να δημιουργηθουν στιγμιότυπα (objects) αλλά βοηθούν στην εξάλειψη του επαναλαμβανώμενου κώδικα.

Η php ανήκει στην κατηγορία μοναδικής κληρονομικότητας γλώσσας (single inheritance language), αυτό σημαίνει ότι μια κλάση μπορεί να επεκτείνει(extend) και να κληρονομήσει μεθόδους, μόνο από μία άλλη κλάση, όχι από άλλες δύο ταυτόχρονα όπως μπορεί να γίνει σε γλώσσες πολλαπλής κληρονομικότητας, όπως είναι η C++, η python κ.α. Εάν απλό παράδειγμα σύνταξης του treat στην php είναι το παρακάτω.

trait message{
      public function hello(){
           echo "hello";
      }
}
class user(){
   use message;
}
$user = new user();
$user->hello();

Version Control Systems Αναρτήθηκε στις 2013-07-24 06:16:09 από Vontikakis

revision.jpgVersion control ή Revision Control είναι ένα σύστημα το οποίο κρατάει την ιστορία των αλλαγών που γίνεται στο κώδικα και στα αρχεία ενός λογισμικού, κατά τη φάση της ανάπτυξης του. Eίναι ιδιαίτερα χρήσιμο όταν δουλεύεται σε ένα project λογισμικού που κατασκευάζεται από μία ομάδα δύο ή περισσότερων ατόμων γιατί μπορούν να ενώσουν πολύ εύκολα τα κομμάτια του κώδικα που γράφει το κάθε μέλος. Επιπλέον αν δημιουργηθεί πρόβλημα στο λογισμικό ή έχει κάποιο σημαντικό bug μπορείτε πολύ εύκολα να επαναφέρεται μία προηγούμενη έκδοση μέχρι να λυθεί το bugs.

Τρία γνωστά Version Control Systems, είναι το Mercurial το οποίο δημιουργήθηκε το 2005 και είναι κυρίως γραμμένο στη python, Το δεύτερο είναι το SVN ή αλλιώς Apache Subversion το οποίο είναι και πιο διαδεμένο, και το τρίτο είναι το Git το οποίο αναπτύχτηκε απο το Linus Torvalds για να βοηθήσει στην ανάπτυξη του Linux Kernel, τελευταιά γνωρίζει μεγάλη διάδοση και αυτό.

Redis Server Data Structure Key Value Store Αναρτήθηκε στις 2012-12-13 21:00:23 από Vontikakis

redis_server.jpg Εγκαθιστώντας τον Redis server διαθέτουμε μία data stuctrure engine δηλαδή μία μηχανή αποθήκευσης δομών δεδομένων, συγκεκρίμενα υποστηρίζει πέντε διαφορετικούς τύπου δεδομένων αλφαρηθμιτικά (strings), (hashes), λίστες (lists) , σύνολα (sets) και διατεταγμένα σύνολα (order sets).

Βέβαια οι περιπτώσεις στις οποίες μας χρησιμεύει αυτού του τύπου η αποθήκευση δεν είναι συνηθησμένες και περιλαμβάνει λειτουργίες στις οποίες τα δεδομένα είναι μικρά και ταυτόχρονα δεν είναι critical data, ώστε σε περίπτωση crash δεν θα μας ενοχλήσει αν χαθούν μερικά ενώ ταυτόχρονα χρειαζόμαστε υψηλής απόδοσης key value data store. Τέτοιες περιπτώσεις είναι Real Time Analysis or Tracking System, Leaderboards, System with voting όπως το Reddit, τελευταία ενημερώσεις σε μια homepage πολύ υψηλής επισκεψιμοτητας και μεταβολής δεδομένων, κάτι σαν live in memory cache, αλλά και ως cashing system

ΕΓΚΑΤΑΣΤΑΣΗ

sudo apt-get install redis-server

μας βρίσκει από τα repository της canonical τη τελευταία έκδοση του Redis Server και την εγκαθιστά αμέσως στον υπολογιστής μας

/etc/init.d/redis-server start

ΡΥΘΜΙΣΕΙΣ

/etc/mongodb.conf

στο παραπάνω αρχείο βρίσκονται οι ρυθμίσεις του redis

ΕΚΚΙΝΗΣΗ, ΠΑΥΣΗ, ΕΠΑΝΕΚΚΙΝΗΣΗ ΤΟΥ REDIS SERVER

η εκκίνηση, παύση, επανεκκίνηση γίνεται με τις παρακάτω εντολές

sudo /etc/init.d/redis-server start
sudo /etc/init.d/redis-server stop
sudo /etc/init.d/redis-server restart

ΣΥΝΔΕΣΗ ΣΤΟ REDIS SERVER

στο τερματικό πληκτρολογούμε την παρακάτω εντολή και συνδεόμαστε

redis-cli

στο τοπικό redis-server βλέποντας redis 127.0.0.1:6379> .ο redis server ουσιαστικά αποθηκεύει σε κλειδιά δομές δεδομένων (data structure) . Ο δομές δεδομένων που μπορείται να αποθηκεύεσεται είναι αλφαριθμιτικά Strings (αλφαριθμητικά)

set key 'lorem ipsum'
get key

Lists (λίστες) Οι λίστες είναι απλά είναι είναι μια ομάδα αλφαριθμητικών οι οποίες διατάσσονται με βάση τη σειρά εισαγωγής, μπορούμε να εισάγουμε στοιχεία σε μία λίστα με τη την εντολή lpush τοποθετεί ένα καινούργιο στοιχείο στην αρχή της λίστας όπως για παράδειγμα

Lpush chat "what's up?"
Lpush chat "Nothing Much?"

Για να εμφανίσουμε τα δύο πρώτα στοιχεία της λίστας χρησιμοποιούμε την εντολή lrange χρησιμοποιώντας τους δείκτες 0, 1

Lrange chat 0 1

Επιπλέον δομές δεδομένων που υποστηρίζει το redis server είναι τα σύνολα(sets), διατεταγμένα σύνολα (order sets) και hashes.

NoSQL βάσεις δεδομένων MongoDB τα πρώτα βήματα Αναρτήθηκε στις 2012-12-06 19:29:48 από Vontikakis

Χρησιμοποιώντας μια διανομή linux όπως τα Ubuntu μπορούμε να εγκαταστήσουμε γρήγορα και εύκολα την Mongodb

ΕΓΚΑΤΑΣΤΑΣΗ

sudo apt-get install mongodb

μας βρίσκει από τα repository της canonical τη τελευταία έκδοση της mongodb και την εγκαθιστά αμέσως στον υπολογιστής μας

ΡΥΘΜΙΣΕΙΣ

/etc/mongodb.conf

στο παραπάνω αρχείο βρίσκονται οι ρυθμίσεις της mongodb οπου μπορούμε να αλλάξουμε διάφορες παραμέτρους όπως η port, ρυθμίσεις για replication κτλ.

ΕΚΚΙΝΗΣΗ, ΠΑΥΣΗ, ΕΠΑΝΕΚΚΙΝΗΣΗ

Οι ρυθμίσεις ελέγχου του mongdb server γίνονται με τις παρακάτω εντολές

sudo service mongodb start
sudo service mongodb stop
sudo service mongodb restart

ΣΥΝΔΕΣΗ ΜΕ ΚΕΛΥΦΟΣ

χρησιμοποιούμε απλά την εντολή mongo για να συνδεθούμε με το τερματικό (mongo client)

mongo

Αρχικά η βάση που έχει δημιουργεί έχει το όνομα test και μπορούμε να εισάγουμε απευθείας εγγραφές. Αν θέλουμε να δημιουργήσουμε μία συλλογή εγγράφων-collection (Αντιστοιχα στην SQL ένα πίνακα) με το όνομα clients εισάγουμε δεδομένα απευθείας στη μορφή json όπου για παράδειγμα

db.clients.insert({
  firstName: 'john',
  surname: 'doe',
  email: 'test@test.gr',
  phone: '2810232232223',
  mobile: '6985565882322',
  leadSource: 'advertisement'
});

Για να δούμε όλες τις εγγραφές στη συλλογή clients στη βάση με το όνομα test

db.clients.find();

Ουσιαστικά μία συλλογή (Πίνακαs στην SQL) είναι πολλά έγγραφα τύπου, binary json (BJSON) ,τα πεδία της κάθε συλλογής δεν είναι προκαθαρισμένα όπως στους πίνακες ενός RDBMS

Διαφημιστικό Budget στο internet με Simplex Αναρτήθηκε στις 2012-08-10 20:01:50 από Vontikakis

adwords simplex

Πολλές φορές αν διαθέτουμε κάποιο προϋπολογισμό για να διαφημίσουμε υπηρεσίες ή προϊόντα στο internet και τίθεται το ερώτημα πως θα γίνει η κατανομή του προϋπολογισμό (budget) στα διάφορα διαφημιστικά μέσα όπως είναι το adwords search network , adwords display network, τις διαφημίσεις του facebook και σε λοιπά διαφημιστικά μέσα του internet. Η απάντηση είναι απλή θα χρησιμοποιήσουμε μία από τις συνήθεις μεθόδους βελτιστοποίησης κάτω από περιορισμούς, δηλαδή παρόμοια με αυτή που χρησιμοποιούμε σε προβλήματα βελτιστοποίησης χαρτοφυλακίου ή κατανομής της παραγωγής στα οικονομικά, και είναι η δημοφιλής μέθοδος simplex (ή ο αλγόριθμος simplex) του γραμμικού προγραμματισμού.

Η μέθοδος δημιουργήθηκε από τον George Dantzig το 1947 είναι δεύτερος δημοφιλέστερος αλγόριθμος του 20ου αιώνα και γνώρισε ιδιαίτερή άνθιση στα οικονομικά αφού μία από τις καταλληλότερες μεθόδους για τη βελτιστοποίηση προβλημάτων προϋπολογισμών και βοηθάει να φτάνεις εύκολα σε βέλτιστες λύσεις/απαντήσεις. Για να χρησιμοποιήσει κανείς αυτό τον αλγόριθμο δεν χρειάζεται να είναι ειδικός στον προγραμματισμό ακόμα και το excel, και το calc του libreoffice διαθέτουν κάποιους απλούς solver γτα τέτοιους είδους προβλήματα.

choose language
Greek | English
www.photoreal.me

project by vontikakis.com

Copyright 2008 - 2014 by vontikakis.com .

powered by Yii Framework