Cake και custom όνομα πίνακα Βάσης Δεδομένων

Και αυτό το θέμα έχει εν μέρει να κάνει με τον πληθυντικό και το CakePHP. Πάλι ο controller ονομάζεται Stuff και ο πίνακας με τα δεδομένα στη Βάση Δεδομένων δεν μπορεί να λέγεται Stuffs (όπως θα περίμενε το Cake με βάσει το naming convention του). Για να δηλώσεις custom όνομα πίνακα στη Βάση Δεδομένων πρέπει να δημιουργήσεις το Model (αν δεν το έχεις κάνει ήδη) στο αρχείο app/models/stuff.php

και μέσα να δηλώσεις

var $useTable = "stuff"

Πληθυντικός και cake

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

Για να υποδείξεις στο CakePHP να μην το πειράξει όταν πάει να το μετατρέψει σε πληθυντικό πρέπει να δηλώσεις ένα Infliction.

Μέσα στο αρχείο /app/config/inflections.php

βάζεις

$uninflectedPlural = array('stuff');

Archives tar.gz (tgz) και tar.bz2 - Δημιουργία και αποσυμπίεση

.tar.gz (.tgz)

Δημιουργία: tar cvzf archive.tar.gz dir01/ dir02/ ....

Αποσυμπίεση: tar xvzf archive.tar.gz

 

.tar.bz2

Δημιουργία: tar cvjf archive.tar.bz2 dir01/ dir02/ ....

Αποσυμπίεση: tar xvjf archive.tar.bz2

ΣΗΜΕΙΩΣΗ: Σε όλα τα παραπάνω commands το flag v σημαίνει verbose (δηλαδή εκτύπωση σχολίων) οπότε μπορεί να απαλειφθεί χωρίς πρόβλημα.

[via]

Πως ψάχνω το pid ενός process για να την τερματίσω;

Μέχρι σήμερα χρησιμοποιούσα το

ps -e | grep 'name'

σήμερα όμως δεν έβρισκα έτσι το process που έψαχνα με τον παραπάνω τρόπο (ήταν ένας tomcat application server). Βρήκα λοιπόν αυτή τη σελίδα που δίνει αυτή τη λύση

ps xu | grep 'name'

και για να γίνει ακόμη καλύτερο και να δώσει κατευθείαν το pid

ps xu | grep 'name' | awk '{print $2}'

και ακόμη καλύτερα για να τη "σκοτώσει" με τη μια

ps xu | grep 'name' | awk '{print $2}' | xargs kill -9

Δικαιώματα σε φακέλους (Windows) από την command line

Επειδή ορισμένα πράγματα γίνονται καλύτερα και γρηγορότερα από την command line, ένα μικρό tip για ορισμό δικαιωμάτων φακέλου σε M$ Windows (NTFS File System).

Η εντολή είναι η cacls η οποία υποστηρίζει μια σειρά από ορίσματα. Εγώ χρησιμοποίησα την παρακάτω εκδοχή της:

cacls <dir_name> /T /G <username>:<permission>

Όπου φυσικά <dir_name> το όνομα του φακέλου, <username> το όνομα χρήστη (ιδιαίτερα χρήσιμα για domains), <permission> το κατάλληλο flag για το κατάλληλο permission.

Σημειώσεις:

  1. Μετά το /G μπορεί να μπει μια σειρά ορισμάτων <username>:<permission> αντί για ένα μόνο.
  2. Για να εφαρμοστούν τα ίδια δικαιώματα αναδρομικά σε υποφακέλους και αρχεία (recursion) πρέπει να βάλουμε και τον /T
  3. Το παραπάνω σβήνει όλα τα υπάρχοντα δικαιώματα και αφήνει μόνο αυτά που ορίζουμε!! Αν θέλουμε απλά να διορθώσουμε την access list και όχι να την ξαναγράψουμε από την αρχή πρέπει να δώσουμε το /E (από το edit).

Περισσότερα από το help της cacls.

Άλλος ένα λόγος για Cake...

Υπάρχουν πραγματικά πάρα πολλοί λόγοι για να χρησιμοποιήσει κάποιος ένα application framework για να "γράψει" μια εφαρμογή.

Εγώ θα γράψω την δικιά μου εμπειρία. Πριν λίγο καιρό έφτιαξα, στα πλαίσια της δουλειάς μου, το site της Επιτροπής Διαχείρισης του Ειδικού Λογαριασμού του Διεθνούς Πανεπιστημίου της Ελλάδος. Αρχικά το είχα φτιάξει σε php γραμμένο από το μηδέν. Τους τελευταίους μήνες έχω ασχοληθεί αρκετά με το cakephp και σκέφτηκα να το ξαναφτιάξω πάνω σε cakephp ώστε να γίνει πιο αξιόπιστο, επεκτάσιμο και εύχρηστο (με clean urls).

Ένα από τα προβλήματα στις περιπτώσεις που "ανακαινίζεται" ένα site είναι αυτό των εισερχόμενων links. Για παράδειγμα αν κάποιο τρίτο site έχει ήδη ένα link για το site μας, αυτό μπορεί να χαθεί (να βγάζει σε 404 σελίδα) μετά την "ανακαίνιση".

Αυτό το θέμα μπορεί να λυθεί πολύ εύκολα στο cake δημιουργώντας το κατάλληλο routing (στο app/config/routes.php) για κάθε "παλιό" url. Ειδικά αν το site έχει και google analytics τότε μπορούν να βρεθούν ακόμη και τα links των άλλων σελίδων που οδηγούν στο site μας.

Απ' οσο είμαι σε θέση να γνωρίζω, το παραπάνω (url routing) γίνεται και μέσω του apache αλλά αυτό προϋποθέτει καλή γνώση του format των configuration αρχείων του apache και σχετικά δικαιώματα. Πιστεύω ότι η λύση του cakephp είναι πολύ ευκολότερη...

CakePHP

Σε αυτό το book θα μπαίνουν άρθρα σχετικά με το CakePHP...

Προσθήκη alias σε apache2 (Ubuntu Linux)

Το πρόβλημα:

Έχω κάποιους φακέλους με αρχεία που για κάποιο λόγο θέλω να τα βλέπω μέσω του browser (πχ δεν έχω ρυθμίσει ή δεν θέλω να ρυθμίσω file server).

Οι λύσεις:

(α) Η "κομπογιαννίτικη": Αντιγράφω τον φάκελο που θέλω μέσα στο /var/www και τον κρατάω εκεί (ή ίσως δημιουργώ ένα symbolic link).

(β) Η πιο "tech savvy": Δημιουργώ ένα alias για τον apache. Πχ θέλω να είναι ορατό μέσω του web server ο φάκελος /myDisk/files/movies. Στο Ubuntu πρέπει να δημιουργήσω ένα αρχείο μέσα στον φάκελο /etc/apache2/conf.d με ότι όνομα θέλω πχ myConf.conf.

Το περιεχόμενο του αρχείου είναι κάτι σαν το παρακάτω

Alias /movies /myDisk/files/movies

<Directory /myDisk/files/movies>
    Options Indexes FollowSymLinks
</Directory>

Restart τον apache ( sudo /etc/init.d/apache2 restart ) και είσαι έτοιμος! http://localhost/movies

 

Downtime και Drupal 6.14

Εδώ και αρκετές μέρες το http://ale3andro.gr/portal ήταν down. Ο λόγος ότι μετά από αρκετά χρόνια λειτουργίας είχε "ξεχειλώσει" σε πολλά σημεία. Το παραπάνω σε συνδυασμό με τα περίπου 4,500 spam comments (βλακεία που δεν είχα βάλει κάποιο captcha) είχαν ως αποτέλεσμα να "κρεμάσει".

Μετά από ένα συμμάζεμα της βάσης του drupal (από 14ΜΒ περίπου που ήταν έμεινε η μισή περίπου) και αναβάθμιση στην έκδοση 6.14 το portal είναι up ξανά. Ελπίζω για πολύ καιρό ακόμη χωρίς προβλήματα...

Πως αφαιρώ από Version Control ένα αρχείο (bazaar)

Εδώ και αρκετό καιρό χρησιμοποιώ το bazaar για να έχω Version Control στο metathesi.gr που ετοιμάζω τον τελευταίο καιρό. Το μεγαλύτερο πλεονέκτημα είναι ότι "στεγάζεται" δωρεάν στο launchpad και μπορώ να έχω τον κώδικα μου όποτε και όπου θέλω.

Από το bazaar του launchpad όμως μπορεί ο οποιοσδήποτε να "κατεβάζει" ένα branch και μαζί με αυτό τα configuration αρχεία τα οποία περιέχουν ευαίσθητους κωδικούς (ειδικά όταν το λογισμικό είναι μια ιστοσελίδα τα passwords αυτά είναι πολύ ευαίσθητα). Οπότε προκύπτει το θέμα της αφαίρεσης από το revision control ορισμένων αρχείων (των configuration αρχείων). Δεδομένου ότι το έργο είναι ήδη σε revision control από Bazaar για να αφαιρέσουμε ένα αρχείου αρκεί η παρακάτω εντολής

bzr del "path/to/file/" --keep

ΠΡΟΣΟΧΗ! Αν δεν χρησιμοποιηθεί η παράμετρος "--keep" το αρχείο θα διαγραφεί τελείως!!

Τέλος ένα commit τοπικά και στο launchpad:

bzr commit -m "new revision"

bzr push lp:~launchpadUsername/+junk/branchName

Who's new

  • ale3andro

Who's online

There are currently 0 users and 0 guests online.

feed icon
Grab my feed
feed icon
or my FriendFeed ;-)
Feed icons by Dirceu Veiga