Open Source
PHP Tutorial: Αυτόματες αλλαγές του σχήματος της βάσης δεδομένων
του mrpc στις 12/04/2011, στην κατηγορία Development, Open Source, php, web development
Είχα πολύ καιρό να γράψω tutorial για το Freestuff, βρήκα όμως επιτέλους λίγο χρόνο το Σ/Κ που πέρασε και ετοίμασα μερικά. Ανέβασα ήδη το ένα από αυτά. Πρόκειται για έναν απλό τρόπο ενημέρωσης αλλαγών στη βάση δεδομένων κάθε φορά που κάνουμε upgrade της εφαρμογής μας, περίπου στη λογική του wordpress.
Μπορείτε να το διαβάσετε από εδώ: Freestuff.gr - Αυτόματες αλλαγές του σχήματος της βάσης δεδομένων.
Linux Inside
του mrpc στις 04/02/2011, στην κατηγορία Open Source, Διάφορα
Για όσους δεν το έχουν δει ακόμα, κυκλοφόρησε το πρώτο τεύχος ενός νέου ελληνικού περιοδικού για το Linux και το ανοιχτό / ελεύθερο λογισμικό, το Linux Inside.
Πρόκειται ουσιαστικά για τη συνέχεια του Linux Format, το οποίο σταμάτησε να κυκλοφορεί, αν κατάλαβα καλά λόγω λήξης της σύμβασης του εκδότη με το ξένο περιοδικό. Παρ’ όλα αυτά, το Linux Inside έχει αρκετές βελτιώσεις σε σχέση με το προηγούμενο, καθώς και διάφορα ενδιαφέροντα στοιχεία, όπως π.χ. 3D barcodes με όλα τα link στα άρθρα.
Γενικά έχω σταματήσει εδώ και καιρό να αγοράζω περιοδικά, αφού όλες τις ανάγκες μου σε ενημέρωση τις καλύπτω online. Ειδικά μάλιστα για τα νέα σχετικά με open source και linux, έτσι κι αλλιώς ενημερώνομαι αρκετά γρήγορα, ακόμα και από τους ίδιους τους συντάκτες του περιοδικού, αφού ο καθένας στο δικό του blog καλύπτει ήδη όλα τα σχετικά θέματα πριν την κυκλοφορία του περιοδικού (π.χ. τα νέα του elkosmas.gr). Παρ’ όλα αυτά, το Linux Inside θα συνεχίζω να το αγοράζω όσο είμαι στην Ελλάδα, αφού πιστεύω ότι τέτοιες προσπάθειες χρειάζονται στήριξη για να συνεχίσουν. Βοηθάνε πολύ τους νέους χρήστες (όταν έκανα τα πρώτα μου βήματα κι εγώ, τα περιοδικά μου είχαν φανεί πολύ χρήσιμα), βοηθάνε στην ανάπτυξη της κοινότητας κ.λ.π.
Δείτε περισσότερα για το περιοδικό στη σελίδα http://www.linuxinside.gr.
Βρείτε τα διαγραμμένα sms από το iPhone
του mrpc στις 27/06/2010, στην κατηγορία Open Source
Πριν μερικές μέρες σκάλισα λίγο τον τρόπο που αποθηκεύει τα δεδομένα μας το iPhone. Για τα περισσότερα πράγματα χρησιμοποιεί τη βάση sqlite. Είναι ένα αρκετά βολικό και portable format.
Όταν κάνει backup (κατά τη διάρκεια του συγχρονισμού με το iphone) αντιγράφει όλα τα αρχεία sqlite από το κινητό σας, στο folder που κρατάει το backup. Στο mac είναι στο φάκελο:
~Library/Applications Support/MobileSync/Backup.
Στα windows xp είναι στον φάκελο:
C:\Documents and Settings\USERNAME\Application Data\Apple Computer\MobileSync\Backup.
Στα windows 7 είναι
c:\Users\USERNAME\AppData\Roaming\Apple Computer\MobileSync\Backup\.
Μέσα θα βρείτε ένα subfolder για κάθε backup που υπάρχει. Τα ονόματα των αρχείων σε αυτό είναι πολύ περίεργα για να βγάλουμε άκρη, όμως το αρχείο με τα sms έχει συγκεκριμένο όνομα: 3d0d7e5fb2ce288813306e4d4636395e047a3d28.mddata.
Το αρχείο αυτό μπορείτε να το ανοίξετε με κάποιο πρόγραμμα όπως το sqlitebrowser και ουσιαστικά έχετε πρόσβαση σε όλα τα sms που έχετε λάβει και στείλει, εκτός από τα διαγραμμένα φυσικά.
Τι γίνεται όμως με τα διαγραμμένα; Γενικά στην sqlite όταν διαγράφουμε μια εγγραφή από ένα πίνακα, η εγγραφή στην πραγματικότητα δε σβήνεται από το αρχείο που κρατάει τα δεδομένα της. Όπως γράφει στο FAQ της:
When you delete information from an SQLite database, the unused disk space is added to an internal «free-list» and is reused the next time you insert data. The disk space is not lost. But neither is it returned to the operating system.
Θυμίζει λίγο τον τρόπο που λειτουργεί το file system των περισσότερων λειτουργικών συστημάτων, στον οποίο τα δεδομένα δεν σβήνονται για κάποιο διάστημα και υπάρχει η πιθανότητα της εκτέλεσης κάποιου εργαλείου undelete που μπορεί να επαναφέρει τα δεδομένα σας.
Αν λοιπόν ψάξετε το αρχείο με τα sms αρκετά σύντομα μετά τη διαγραφή των μηνυμάτων που ψάχνετε, ή αν γενικά δεν λαμβάνετε/στέλνετε συχνά, έχετε πάρα πολλές πιθανότητες να βρείτε αυτό που ψάχνετε.
Αν ψάξετε στο internet θα βρείτε διάφορα εργαλεία τα οποία εξάγουν τα δεδομένα αυτά. Προσωπικά απλά άνοιξα το αρχείο με έναν text viewer και ψάχνοντας λίγο βρήκα ότι έψαχνα.
Αυτό μπορεί να έχει διάφορες χρήσεις, από προσωπική (να βρείτε κάτι που σβήσατε κατά λάθος), μέχρι να παρακολουθήσετε το κινητό κάποιου άλλου έχοντας ένα backup του. Στη δεύτερη περίπτωση, να γνωρίζετε ότι είναι παράνομο, και φυσικά ότι μπορεί να βρείτε πράγματα που τελικά δεν θέλετε να γνωρίζετε
(photo by: Eric Rice)
Security stuff
του mrpc στις 11/06/2010, στην κατηγορία Open Source, php, web development, Περιπέτειες
Σήμερα το πρωί με ενημέρωσαν από την εταιρεία που διαχειρίζεται τους server μου ότι από κάποιο αρχείο σε ένα site έφευγαν spam mails. Με μια σύντομη αναζήτηση εντόπισα ότι το αρχείο είχε ανέβει με ftp κανονικότατα, χωρίς κάποια hackια. Πολύ πιθανό να ξέφυγε από τον πελάτη το pass μέσω κάποιου malware που διαβάζει τα passwords από τον ftp client.
Αυτό με έκανε να σκεφτώ λίγο πως θα αποφύγω ανάλογα περιστατικά. Έφτιαξα λοιπόν ένα php script το οποίο συνδέεται με ftp στον server και σκανάρει όλα τα αρχεία με executable extensions (php, php5 κλπ) και αποθηκεύει τη λίστα σε μια βάση. Την επόμενη φορά που θα τρέξει, με ενημερώνει για ότι νέο αρχείο υπάρχει, ώστε αν είναι κάτι που δεν το έχω προσθέσει εγώ, να το ελέγχω για πιθανά προβλήματα.
Δεν είναι και η πιο optimal λύση (θα μπορούσα με shell να ψάξω απλά όλα τα php αρχεία με ημερομηνία ως και μια μέρα πριν π.χ.) , όμως το υλοποίησα έτσι γιατί έχω σκοπό να προσθέσω μερικά ακόμα πράγματα στο script και να το ελευθερώσω σαν open source για όποιον χρειάζεται κάτι ανάλογο.
Μερικά πράγματα που θέλω να κάνω είναι:
- Να ελέγχει όλα τα νέα αρχεία για περίεργες functions (exec, base64_decode κλπ)
- Να με ενημερώνει για τα αρχεία που για κάποιο λόγο σβήστηκαν ή άλλαξαν (για αυτό και η βάση)
- Να τρέχει αυτόματα με ένα cron job και να με ενημερώνει με email, μια φορά κάθε 3-4 μέρες
Πολύ απλά πράγματα, λογικά σε λίγες μέρες θα το ανεβάσω κάπου. Αν έχετε κάποια ιδέα… στείλτε μου.
Πάντως μια γρήγορη λύση για τα δείτε αν υπάρχει κάποιο ύποπτο αρχείο είναι να τρέξετε από shell την παρακάτω εντολή:
grep -RPn "(passthru|shell_exec|system|phpinfo|base64_decode|chmod|mkdir|fopen|fclose|readfile) *\(" public_html/
η οποία θα σας δείξει αμέσως ότι υπάρχει με αυτές τις εντολές. Μπορείτε και να το περάσετε σε ένα cron job και να εκτελείται μόνο του, ενώ τα αποτελέσματα θα σας έρχονται στο email σας.
Δουλεύοντας με το Kodingen.com
του mrpc στις 26/03/2010, στην κατηγορία Development, Open Source, php, web development
Όσοι από εσάς δουλεύετε σαν web developers, γνωρίζετε ότι το πιο κλασικό πρόβλημα που υπάρχει πριν δουλέψετε σε οποιονδήποτε υπολογιστή, είναι το σχετικό στήσιμο. Πρέπει να στηθεί ο τοπικός server (στη δική μου περίπτωση apache/php/mysql). Επίσης πρέπει να εγκατασταθούν τα αντίστοιχα εργαλεία (εδώ και κάποιο διάστημα χρησιμοποιώ netbeans). Τέλος, πρέπει αν δουλεύετε και σε άλλους υπολογιστές, να μεταφέρετε τη δουλειά σας και να την συγχρονίσετε τοπικά (για αυτό το λόγο έχω στήσει ένα subversion server). Αυτό είναι σχετικά εύκολο, αφού τα περισσότερα γίνονται μόνο μια φορά, ενώ με κάποιο version control system, ακόμα και η δουλειά σας μεταφέρεται εύκολα.
Οι δυσκολίες όμως ξεκινάνε αλλού:
- Τι γίνεται όταν χρειαστεί να δουλέψετε για λίγο σε κάποιον άλλο υπολογιστή για κάποια γρήγορη διόρθωση;
- Αν όλα αυτά βαραίνουν πολύ τον υπολογιστή σας (π.χ. σε περιπτώσεις netbook) και σέρνεται όταν δουλεύετε;
- Αν θέλετε να δουλέψετε σε κάποιο άλλο λειτουργικό σύστημα, το οποίο απαιτεί διαφορετικό στήσιμο και δεν έχετε τον ανάλογο χρόνο/γνώσεις κλπ;
- Υποθέτω ότι ανάλογο θέμα θα υπάρχει όταν κυκλοφορήσει το Chrome OS, το οποίο δεν ξέρω κατά πόσο θα είναι βολικό αφού όλες του οι εφαρμογές είναι web based.
Μια πολύ καλή λύση για όλα αυτά είναι το Kodingen.com. Πρόκειται για μια web εφαρμογή η οποία σας επιτρέπει να ανεβάσετε τα project σας σε έναν δικό τους development server με διάφορες τεχνολογίες (php/perl/python/ruby, mysql/postgresql κλπ) και έπειτα να το επεξεργαστείτε με μια σειρά από editors που έχουν. Μπορείτε να το δοκιμάσετε online και έπειτα να το κατεβάσετε ή να το μεταφέρετε σε κάποιο δικό σας server μέσω ftp.
Η εφαρμογή είναι δωρεάν στη χρήση με κάποια βασικά resources (τα οποία είναι αρκετά για μικρά project), ενώ μπορείτε να αγοράσετε επιπλέον χώρο/domains/bandwidth κ.λ.π. σε εξαιρετικά χαμηλές τιμές.
Επίσης, υποστηρίζεται subversion σύστημα, πρόσβαση σε shell, ενώ για την πλήρη αξιοποίησή του, περιβάλλεται και από ένα social network που μπορεί να σας τροφοδοτήσει με πολύ χρήσιμες πληροφορίες, ή απλά να σας βοηθήσει να συνεργαστείτε με άλλους προγραμματιστές χωρίς να χρειάζεται να μοιραστείτε passwords και ευαίσθητες πληροφορίες μαζί τους.
Τέλος, κάτι πολύ χρήσιμο είναι η εγκατάσταση εφαρμογών στο χώρο σας, με ένα κλικ. Δείτε στο παρακάτω video ένα παράδειγμα:
Kodingen.com : Online Development Environment, ODE from Kodingen on Vimeo.
Το περιβάλλον είναι ακόμα σε beta έκδοση, όμως βελτιώνεται συνεχώς και από ότι φαίνεται πολύ σύντομα θα βγει στον αέρα κανονικά.
Πρέπει να αναφέρω ότι το Project είναι βασισμένο σε open source τεχνολογίες και είναι και το ίδιο Open Source. Η σελίδα του στο Google Code αναφέρει ως άδεια την GNU GPL2.
Κάνοντας το Ubuntu να μοιάζει με Mac OS
του mrpc στις 17/01/2010, στην κατηγορία Open Source
Αν και βρίσκω το Gnome αρκετά εύχρηστο, από τότε που άγγιξα το Mac ερωτεύτηκα το user interface του. Ευτυχώς όμως το Gnome είναι αρκετά εύκολα παραμετροποιήσιμο και μπορείς να του δώσεις ότι εμφάνιση θέλεις. Αποφάσισα λοιπόν να κάνω το netbook μου να θυμίζει mac.
Βασίστηκα σε αυτόν τον οδηγό, όμως δεν ακολούθησα όλα τα βήματα. Παρακάτω μπορείτε να διαβάσετε μια ελεύθερη απόδοση οδηγιών από όσα έκανα.
Αρχικά κατεβάζουμε τα Mac4Lin themes και κάνουμε εξαγωγή στο home directory μας. Η εγκατάσταση είναι εύκολη, ανοίγουμε terminal, μπαίνουμε στο directory που αποσυμπιέσαμε τα themes και δίνουμε:
sh Mac4Lin_Install_v1.0.sh
Αυτό θα αλλάξει το desktop και την εμφάνιση των παραθύρων. Αν το background του desktop δεν έχει αλλάξει, θα βρείτε τα backgrounds στο folder ~/Mac2Lin_v1.0.
Επόμενο βήμα είναι η εγκατάσταση του Dock. Αυτό που χρησιμοποιώ εγώ είναι το AWN. Για την εγκατάστασή του δίνετε:
sudo apt-get install avant-window-navigator
Ή μπορείτε να βρείτε το πακέτο μέσα από την προσθαφαίρεση εφαρμογών. Για να λειτουργήσει σωστά θα πρέπει να αφαιρέσετε το κάτω πάνελ που έχει ήδη το gnome και εμφανίζει της εφαρμογές που τρέχουν. Το AWN θα το βρείτε κάτω από τα βοηθήματα. Θα πρέπει όμως να ρυθμιστεί ώστε να τρέχει όταν ξεκινάει το σύστημα, αυτό γίνεται από το menu: Σύστημα->Προτιμήσεις->Προγράμματα εκκίνησης. Η εντολή που δίνουμε είναι avant-window-navigator.
Για να δείξει όπως πρέπει το dock, πρέπει να εγκαταστήσουμε και το αντίστοιχο theme. Πηγαίνουμε λοιπόν: Προτιμήσεις->AWN Manager->Themes->Προσθήκη και από εκεί επιλέγουμε το αρχείο Mac4Lin_v1.0/AWN/Mac4Lin_AWN_v1.0.tar.gz. Εφαρμόζουμε και είναι έτοιμο.
Μέχρι αυτό το σημείο, πρέπει να έχουμε αυτό:
Θα βρείτε πολύ χρήσιμη την επιλογή: Απόκρυψη κάτω από τα μεγιστοποιημένα παράθυρα όταν δεν χρησιμοποιείται. Αλλιώς θα χάνετε το κάτω μέρος των παραθύρων σας.
Ο οδηγός που διάβασα έχει μερικά ακόμα βήματα, όπως η αλλαγή των fonts και η εγκατάσταση ενός global menu όπως του mac, αλλά και του dashboard. Τα fonts δεν με ενδιαφέρει να αλλάξουν, το global menu σε άλλο μηχάνημα που το δοκίμασα μου έβγαζε προβλήματα σε κάποιες εφαρμογές (όπως ο firefox) και έτσι δεν το έκανα. Ίσως βέβαια η τελευταία έκδοση να έχει βελτιωθεί. Τέλος, το dashboard γίνεται μέσω του compiz, όμως στο netbook δεν τρέχω compiz (ακόμα), οπότε άφησα αυτό το βήμα για πιο μετά. Αν το κάνω όμως, θα ανανεώσω αυτό το post.













