Dojo Toolkit (II). Com instal·lar Dojo.

Com totes les llibreries JavaScript per incloure-les en una pàgina web hem de fer servir l’etiqueta HTML <script>, que serveix per definir un script del cantó del client, com per exemple JavaScript. Aquesta etiqueta tant pot contenir instruccions de l’script o bé pot apuntar a un fitxer d’script extern via la paraula reservada src.

La llibrería de Dojo Toolkit no n’és una excepció i per tant per carregar-la l’hem d’incloure mitjançant aquest mètode, o sigui fent servir l’etiqueta <script>. El fitxer que apunta a la llibreria de Dojo Toolkit pot estar allotjat en el servidor que serveix la web o bé podem accedir a ell mitjançant el que es diu una Xarxa de Distribució de Continguts o CDN en anglès.

 

Si escollim el primer mètode hem de descarregar, forçosament, el codi de la llibreria, des de la pàgina de descàrregues de Dojo Toolkit. Per fer-ho disposem de vàries versions:

  • Dojo Toolkit Release: aquesta versió és ideal per a obtenir una còpia comprimida i optimitzada de la llibreria de Dojo Toolkit, amb els projectes Dojo, Dijit i DojoX. És la versió que es pot agafar quan volguem posar el nostre servidor en mode de producció.
  • Dojo Base: aquesta versió només conté la base de la llibrería Dojo. Es presenta en dos fitxers: un de comprimit i un de no comprimit. Per a entorns de producció agafarem la versió comprimida mentre que per al desenvolupament podem agafar la versió no comprimida.
  • Dojo Toolkit SDK x.x.x: és el codi font de la llibreria. És la versió ideal per a desenvolupament ja que conté una versió completa, no comprimida del codi de l’ultima release de Dojo Toolkit. A part conté tota una serie d’eines per a construir, documentar, testejar i desenvolupar amb Dojo. També inclou test unitaris i demostracions funcionals.
Doncs bé, en els següents enllaços es pot comprovar el temps de càrrega de cada una de les opcions de descàrrega de la llibreria que hi ha:
Com es veurà molt clarament, l’última opció es la que triga més en carregar i és la recomenada per a desenvolupament.
Per a un entorn en producció es recomana és fer servir l’eina “Dojo Build System” que el que fa és crear versions eficients de de Dojo i mòduls d’aplicació preparats per al desplegament en un entorn de producció, però això es tractarà més a fons en una altra entrada. 

Dojo Toolkit (I). Que és?

Avui enceto una sèrie d’entrades relacionades amb el Framework de JavaScript Dojo Toolkit.

Dojo Toolkit és una llibrería  modular JavaScript Open Source dissenyada per a realitzar el desenvolupament de forma més ràpida i fàcil d’aplicacions multi-plataforma, javascript-Ajax i web. El món web ha anat canviant en els darrers anys pel que fa al cantó de les aplicacions del servidor, però el cantó del client no s’ha quedat enrere i és aquí on frameworks com jQuery, Yui, Prototype i Scriptacoulos, qooxdoo i Dojo Toolkit prenen força. Aquests frameworks expandeixen les capacitats dels navegadors i la seva interfície d’usuari es quasi calcada a qualsevol aplicació local, com per exemple aplicacions fetes en AWT, SWT, Swing, Qt, …

Bé, ara que ja he fet una breu descripció del que és Dojo, descriuré de que es composa Dojo.

Dojo està dividit en tres projectes:

  • Dojo: és el cor sobre el que està desenvolupada la llibrería. Només incloent el fitxer dojo.js s’accedeix a característiques com animacions, Ajax, modularització, drag and drop localització, internacionalització, …
  • Dijit: és la llibreria de Interfaç Gràfica (UI) de Dojo que permet afegir afegir molts dispositius per exemple per a mostrar formularis, calendaris, …
  • Dojox: són les extensions de Dojo, i conté molts subprojectes que poden estar en fase alfa o bé ser completament estables.

A part també hi ha un quart projecte anomenat DojoC que és un repositori extern  SVN utilitzat per DojoCampus i que conté una varietat de widgets, tutorials i altres demostracions, tot i que no es garanteix el seu funcionament.

 

Per últim afegeixo uns quants links útils per a consultar la documentació de Dojo:


En el proper article tractarem el mode com instal·lar la llibrería i utilitzar-la en un projecte web: Dojo Toolkit (II). Com instal·lar Dojo.

 

 

Script còpia de seguretat

Les entrades còpia de seguretat amb rsync i accés sense contrasenya amb el putty tenen com a finalitat fer una còpia de seguretat de un sistema Linux en un altre sistema ja bé sigui Linux o Windows. Com en tot backup hi ha d’haver una tasca que s’encarregui de prepara els fitxers dels que es farà backup i comprimir-los per a que ocupin poc espai a l’hora de fer la transferència per Internet. Doncs bé en aquesta entrada facil·lito l’script que faig servir jo mitjançant crontab. Es tracta d’un script que fa còpies de seguretat en el home d’un usuari de sistema afegint l’extensió que calgui depenent de si és una còpia diària, setmanal o mensual. El primer que es fa es  definir tota una sèrie de variables  d’entorn, com poden ser el dia, mes, any, número de dia dins de la setmana (de 1 a 6) i rutes de fitxers

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#! /bin/bash

DD=`date +%d`

MM=`date +%m`

YYYY=`date +%Y`

WKD=`date +%u`

WN=`date +%V`

CRON_DIR="/<strong>ruta</strong>/scripts"

DEST_DIR="/home/<strong>usuari</strong>/backup"

LOG="backup.log"

Tot seguit establim el valor inicial de la variable fi de mes ja que el farem servir després, i obtenim els fitxers dels quals fem backup mitjançant TAR o zip i li posem l’extensió del dia de la setmana en que estem:

1
2
3
4
5
6
7
8
9
10
11
fi_mes=0

echo "${YYYY}${MM}${DD} `date +%H:%M:%S` INI LOG" &gt;&gt; $LOG

#Backup de dir www, fitxers de configuració de Apache i BBDD de mysql
echo -e "\tCreant còpia de seguretat" &gt;&gt; $LOG
tar -zcvf ${DEST_DIR}/www_backup.$WKD.tgz /var/www --exclude-from ${CRON_DIR}/exclude_dirs_www_backup.txt
tar -zcvf ${DEST_DIR}/config_apache.$WKD.tgz /etc/httpd/conf.d /etc/httpd/conf
tar -zcvf ${DEST_DIR}/www_logs.$WKD.tgz /var/log/httpd

mysqldump -u <strong>usuari</strong> -p<strong>contrasenya</strong> --all-databases &gt; ${DEST_DIR}/mysql_dump.$WKD.sql

En el cas que es mostra en l’exemple es fa backup dels directoris /var/www (les pàgines web que tenim al nostre servidor), /etc/httpd/conf.d (configuració de servidors virtuals de Apache), /var/log/httpd (logs de Apache) i la base de dades de MySQL. Cal remarcar que quan es fa el backup del directori /var/www s’exclouen alguns directoris ja que pot ser que tinguem algunes llibreries o imatges de les quals no volem que es faci backup. Això s’aconsegueix editat un fitxer com el que hi ha en l’script. També podríem agafar la còpia de seguretat de SVN que és on esta el codi del nostre projecte web. Cada fitxer té l’extensió del dia actual de la setmana o sigui que si avui és dimarts, el dia de la setmana serà 2.

 

Mirem si el dia de la setmana és 7 o el que és el mateix, si és l’últim dia de la setmana. Si no és l’últim dia de la setmana es deixa el número de dia de la setmana actual, tal i com s’ha explicat en el pas anterior. Si ho és li posem l’extensió de la setmana que acaba:

1
2
3
4
5
6
7
8
#Mirem si és l'ultim dia de la setmana i en cas que ho sigui creem la copia setmanal
if [ ${WKD} -eq 7 ]
then
mv ${DEST_DIR}/www_backup.${WKD}.tgz ${DEST_DIR}/www_backup.week${WN}.tgz
mv ${DEST_DIR}/config_apache.${WKD}.tgz ${DEST_DIR}/config_apache.week${WN}.tgz
mv ${DEST_DIR}/www_logs.${WKD}.tgz ${DEST_DIR}/www_logs.week${WN}.tgz
mv ${DEST_DIR}/mysql_dump.$WKD.sql ${DEST_DIR}/mysql_dump.week${WN}.sql
fi

 

Ara passem a comprovar si és l’ultim dia de mes. En cas que ho sigui activem la variable d’entorn que havíem comentat anteriorment, fi_mes:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#Comprovem si avui és l'últim dia del mes. en cas que ho sigui hem de crear la còpia de final de mes.
case "$MM" in
01|03|05|07|08|10|12)
if [ $DD -eq "31" ]
then
echo "\tEs un mes de 31 dies i avui es dia $DD" &gt;&gt; $LOG
fi_mes=1
fi
;;
02)
traspas=`expr $YYYY % 4`
if [ $traspas -eq 0 ]
then
if [ $DD -eq "29" ]
then
echo "\tEs l'ultim dia de FEBRER i estem en un any de traspas, avui es dia $DD" &gt;&gt; $LOG
fi_mes=1
fi
else
if [ $DD -eq "28" ]
then
echo -e "\tEs l'ultim dia de FEBRER i NO estem en un any de traspas, avui es dia $DD" &gt;&gt; $LOG
fi_mes=1
fi
fi
;;
04|06|09|11)
if [ $DD -eq "30" ]
then
fi_mes=1
echo -e "\tEs un mes de 30 dies i avui es dia $DD" &gt;&gt; $LOG
fi
;;
*)
echo -e "\tNo es un mes valid" &gt;&gt; $LOG
exit
;;
esac

Si es fi de mes, canviem l’extensió i posem el mes que acaba:

1
2
3
4
5
6
7
8
if [ ${fi_mes} -eq 1 ]
then
echo -e "\tEs final de mes. Avui es dia $DD del mes de $MM." &gt;&gt; $LOG
mv ${DEST_DIR}/www_backup.${WKD}.tgz ${DEST_DIR}/www_backup.${YYYY}month${MM}.tgz
mv ${DEST_DIR}/config_apache.${WKD}.tgz ${DEST_DIR}/config_apache.${YYYY}month${MM}.tgz
mv ${DEST_DIR}/www_logs.${WKD}.tgz ${DEST_DIR}/www_logs.${YYYY}month${MM}.tgz
mv ${DEST_DIR}/mysql_dump.${WKD}.sql ${DEST_DIR}/mysql_dump.${YYYY}month${MM}.sql
fi

Finalment donem permisos per a l’usuari que es connectarà mitjançant rsync per a que pugui obtenir els fitxers.

1
2
chown <strong>usuari</strong>.<strong>usuari</strong> ${DEST_DIR}/*
echo "${YYYY}${MM}${DD} `date +%H:%M:%S` FI LOG" &gt;&gt; $LOG

Nota: s’ha de canviar usuari per l’usuari on volgueu que es desi el backup, posar una contrasenya vàlida per connectar-nos a MySQL i especificar la ruta al directori on es troba l’script.