Kodestandard for PHP

I forbindelse med at jeg skal lave en stak projekter i PHP, har jeg ledt efter en kodestandard sammen med et værktøj til at håndtere denne, da det gør projekterne lettere at vedligeholde senere.

Som beskrevet hos TIOBE kan det at lave og benytte en kodestandard ses som følgende 7 trins proces.

  1. Define Coding Standard
  2. Select Code Checking Tool
  3. Customize Code Checking Tool
  4. Integrate in SW Environment
  5. Set up Quality Database
  6. Define Quality Targets
  7. Enforce Compliancy

Da projekterne ikke er specielt store, og der ikke er mange udviklere på, har jeg valgt at springe quality databasen over, og kun benytte punkt 1, 2, 3, 4 og 7.

Som udgangspunkt kan man jo lave sin egen standard. Dette tager dog lang tid, og kræver stadig vedligeholdelse, samt udvikling af værktøj til at kontrollere overholdelse af denne. Derfor kan der være mange fordele i at adoptere en anerkendt standard.

Her er valgt at adoptere PHP PEAR standarden, da dette er en anerkendt standard i PHP miljøet, og der er meget PHP kode der bygger på denne. Samtidig er den meget gennemarbejdet.

Den væsentlige fordel ved at benytte PEAR standarden, er at PHP teamet også har udviklet et værktøj til at kontrollere kodestandarden i form af PHP_CodeSniffer, så punkt 1,2 og 3 kan klares af en gang.

Installering af værktøj

Først skal php pear installeres.
sudo apt-get install php-pear

Opdater pear databasen.
sudo pear channel_update pear.php.net

Installer kodestandarden.
sudo pear install PHP_CodeSniffer

Med dette kommer kommandoen phpcs som kan benyttes til at kontrollere php kode for om den overholder standarden.

Hvad punkt 4 angår, så benytter jeg bluefish som web editor, da denne er ekstrem hurtig (letvægts editor) på min gamle 1 GHz pentium 3, samtidig har den nogen pænt advanceret muligheder der gør den genial til web udvikling. Her integrere jeg phpcs, ved at gå ind i Rediger -> Præferencer og vælger uddata parsere, og tilføjer phpcs på samme måde som de andre muligheder.

Med dette haves en kodestandard for PHP, samt værktøj der integrere med ens IDE i form af phpcs integreret med bluefish. Alt i alt en stor hjælp når man ønsker at skrive PHP kode til lidt større projekter end single hygge projekter.

Forberede billeder til gallery

Som i kan se på mit wpg2 link har jeg installeret gallery. Problemet er at den server jeg har det hostet på (stort tak til kollegienet) kun understøtter GD som Graphics Toolkits, og denne kan i dette tilfælde ikke bygge thumbnails/resizes hvis billederne bliver for store, samt kan ikke rotere billederne.

Som så meget andet kan dette problem løses med et script til bash som tager sig af at rotere og ændre størrelse på billederne, så de er parate til gallery.

Første del er et interface der tager en path til mappen med billederne, og en skaleringsstørelse.

echo "Starts the pic2gallery script"

while [ $# -gt 0 ]; do
case $1 in
(–help)
echo “pic2gallery is written by Claus Stovgaard – frosteyes.dk”
echo “Use -s for scale and -p for path”
exit 0
;;
(-s)
# Next param is scale
shift
SCALE=$1
;;
(-p)
# Next param is path
shift
FOLDER_PATH=$1
;;
*)
echo “Unknown param: $1”
exit 1
;;
esac
shift
done

Anden del er at rotere billederne ud fra deres exif information

function rotate_jpgpictures(){
for FIL in $FOLDER_PATH*; do
# Only work width the jpg, jpeg, JPG or JPEG files
JPEG_FILES=`echo $FIL | awk '/\.jpg$/ || /\.jpeg$/ || /\.JPG$/ || /\.JPEG$/' `
if [ -n "$JPEG_FILES" ]; then
case `jpegexiforient $JPEG_FILES` in
(1)
echo "$JPEG_FILES do not need rotating"
;;
([2-8])
echo "$JPEG_FILES need rotation, use exifautotran"
exifautotran $JPEG_FILES
;;
(*)
echo "Something wrong with $JPEG_FILES, maybe we can read the exiforient"
;;
esac
fi
done
}

Tredie del er at skalere billedet.

function scale_jpgpictures(){
for FIL in $FOLDER_PATH*; do
# Only work width the jpg, jpeg, JPG or JPEG files
JPEG_FILES=`echo $FIL | awk '/\.jpg$/ || /\.jpeg$/ || /\.JPG$/ || /\.JPEG$/' `
if [ -n "$JPEG_FILES" ]; then
echo "scaling $JPEG_FILES, new picture is named ${FOLDER_PATH}gal_${JPEG_FILES#*/}"
convert -scale $SCALE% $JPEG_FILES ${FOLDER_PATH}gal_${JPEG_FILES#*/}
fi
done
}

Det samlede script kan hentes her pic2gallery.sh , og løser i hvert fald mine problemer med at forberede billeder til gallery

Lad google håndtere din browser opsætning

Dette er et lille tip til folk der som mig har flere computere og ønsker at synkronisere browseroplysninger. I mit tilfælde har jeg en stationær, der kører gentoo, og to bærbare der kører kubuntu, samt en suse workstation ude på arbejde.

Indtil nu har jeg haft forskellig bookmarks i de forskellige profiler.

Dette kan laves om med en lille extension der hedder Google Browser Sync. Som navnet antyder kan den synkronisere browser oplysninger med din google identitet.

Efter den er installeret, genstartes firefox og den spørger efter mit google id. Jeg vælger at en avanceret synkronisering da jeg kun ønsker at synkronisere mine bookmarks, og ønsker kryptering på dataen. Installere på de andre maskiner, og der haves synkronisering. Lige pludselig blev det meget nemmere at have ens bookmarks over de forskellige computere.

Claus, nu med egen blog

Jeg har længe gået og arbejdet med idéen omkring min egen webside. Som det kan ses hos dk-hostmaster har jeg haft domænet i lang tid, dog uden at benytte det. Samtidig har jeg gået og arbejdet med mange projekter, så hvorfor ikke kombinere dem.

Idéen med denne side er et sted hvor jeg beskriver mine projekter, har et CV, en ønskeliste, samt et billedgalleri. Dette mener jeg er en god kombination til et personligt site. Den er hostet lokalt hos kollegienet, og benytter en kombination af wordpress.org, Gallery2 og wpg2 (plugin) til at binde det sammen.

Der er stadig meget arbejde inden det er færdig, og før jeg lærer de forskellige muligheder af wordpress at kende. Men nu er projektet søsat, så håber det bliver godt.