dimarts, 30 de juny del 2009

Alliberada la versió 5.3.0 de PHP

Finalment ha arribat la 5.3 de PHP! Hi havia rumors de que es podria aplaçar l'entrega al setembre, però finalment l'equip de desenvolupadors de PHP ha complert i l'ha alliberat a finals de juny, data en que es finalitzava la creació de tests del Quality Assurance Team.

Les característiques més destacables són:
  • Suport per a namescpaces. Això ens evitarà col·lisions de nomenclatura de classes i una millor organització de l'ambit de cada classe i les variables globals.
  • Funcions lambda.
  • Millores en el rendiment i la gestió de memòria.
  • Suport experimental per a Windows X64. Cada cop hi ha més empreses que empren PHP en entorns Windows, i PHP no pot dar l'esquena a aquesta realitat.
  • I moltes altres.
En aquest enllaç trobarem la llista d'incompatibilitats amb les versions anteriors, poques, però cal tenir-les en compte abans de fer la migració.

Ara falta esperar quant de temps trigarà Ubuntu en certificar aquesta versió i incloure-la a la paqueteria.

dilluns, 29 de juny del 2009

Inauguració nou despatx a Verges

El proper dissabte 4 de juliol, a les 17 hores, inaugurem el nou despatx de Serveis Informàtics Corretgé.com a Verges.

Tothom hi és convidat!

dilluns, 22 de juny del 2009

Visita a l'Internauta

El darrer dissabte 20 de juny vam visitar el programa d'en Vicent Partal l'Internauta amb la Mercè Molist i en Martí Crespo.

Va ser una tertulia força interessant i divertida, on vam explicar el llenguatge de programació PHP en general, i la PHP TestFest d'enguany en particular.

Podeu escoltar el programa en aquest podcast.

dimarts, 16 de juny del 2009

Llistar discos amb menys d'un 20% d'espai lliure

Amb el mandat df i l'ajuda de les Regular Expression obtindrem aquesta informació del sistema d'una tacada:

df -h | grep '[089][0-9]%'

Ens mostrarà els discos que estiguin entre un 80% i un 100% d'ocupació.

Si volem veure tots els discos no executarem la pipe de filtrat grep.

dilluns, 15 de juny del 2009

Instal·lació d'un entorn de desenvolupament PHP

Presentació a la PHP TestFest del 2009 sobre com instal·lar un entorn de desenvolupament PHP integral amb cost zero

dijous, 11 de juny del 2009

Arriba la PHP TestFest d'enguany

Es comença a sentir la remor de les tecles, la PHP TestFest 2009 és arribada.

El proper dissabte 13 de juny, a partir de les 10:30 a la Sala Polivalent de l'Ajuntament de Verges (Baix Empordà) comença la PHP TestFest d'enguany.

PHP és un llenguatge de programació interpretat, orientat a l'entorn web, però també de propòsit general. És el tercer llenguatge més emprat al món després de Java i els .NET i el segon a Europa.

El compilador PHP és de Codi Lliure, i a banda de l'empresa Zend que hi contribueix notablement, milers de programadors i programadores d'arreu del món contribueixen a aquest projecte.

Quan s'està planificant una nova versió, el Quality Assurance Team convoca a la gent que programa en PHP arreu del món per a que escrigui scripts de test i recomana la convocatòria de TestFests per a fomentar la comunicació i cohesió dels grups de programació PHP.

Un script de test és un script amb extensió .phpt, enlloc de l'extensió .php habitual, on tenim seccions diferenciades, només dues les més importants i mandatòries:

--FILE--
On inserim el codi PHP que s'ha d'executar.

--EXPECT--
On indiquem quin és el resultat esperat de l'execució del codi esmentat.

Quan es fan les proves d'una nova versió del compilador interpret, certificarem ràpidament si funciona correctament si el resultat que dona el nou compilador és l'esperat.

A més a més, en el procés de testeig s'anoten les instruccions del compilador que s'han executat, certificant la seva sol·lidessa o preveient llacunes de codi mai executat, susceptible de tenir errors... o no.

Abans de la Revolució del Programari Lliure, crear programes costava molts diners: El preu dels compiladors i dels entorns de desenvolupament eren desmesurats. Avui en dia la creació de Software s'ha humanitzat, i la barrera econòmica és la humana i la de sistemes. També existeixen eines de pagament que fan més rendibles l'hora de treball, sí, però sempre opcionals, mai condicionants de la creació de programes que la seva utilitat repercuteix al gruix de la societat.

Així doncs participar en una PHP TestFest és una manera de retornar el servei que ens ofereix el Programari Lliure. Una mena de pagament en espècies per les plusvàlues generades pels retorns de les inversions que ens hem estalviat.


L'agenda per aquest dissabte serà:

  • 10:30 Presentació de la PHP TestFest amb passi d'una presentació de na Zoe Slattery Coordinadora de les PHP TestFest.
  • 11:00 Presentació del grup CCCPHP.
  • 11:30 Taula rodona sobre programació PHP i presentació de com muntar un entorn de programació PHP integral amb eines OpenSource.
  • 12:30 Explicació de pautes i Redacció de tests.
  • 14:00 Dinar.
  • 16:00 Redacció de tests.
  • 18:00 Execució dels tests.

Tothom és benvingut a la PHP TestFest, si no programeu tests, recomanem que vingueu a les xerrades del matí.

dimecres, 10 de juny del 2009

Girant dates timestamp de MySQL a Pantalla i viceversa

Amb aquesta funció de quatre línies de codi, aconseguirem girar una data Timestamp, data + hora, tant si ens arriba en format MySQL yyyy-mm-dd hh:ii:ss com si ens arriba de pantalla en format europeu dd/mm/yyyy hh:ii:ss


/**
* Girem una data/hora en format MySQL a *EUR i viceversa
*
* @param string $timestamp
* @return string
*/
function giraTimestamp($data)
{
/**
* Mirem que la cadena compleixi amb els requisits de :
* entre 1 i 4 posicions decimals
* seguit d'un separador vàlid
* seguit d'entre 1 i 2 posicions decimals
* seguit d'un separador vàlid
* seguit d'entre 1 i 4 posicions decimals
* seguit d'un espai
* seguit d'entre 1 i 2 posicions decimals
* seguit d'un separador :
* seguit d'entre 1 i 2 posicions decimals
* seguit d'un separador : o no, doncs els segons no són obligatoris
* seguit d'entre 0 i 2 posicions decimals
*
* guardant-nos les xifres d'any, mes i dia i la data complerta
*/
if (preg_match('/(\d{1,4})[\-\/\.](\d{1,2})[\-\/\.](\d{1,4})\s(\d{1,2}\:\d{1,2}\:?\d{0,2})/', $data, $jData))
{
/**
* Esborrem la primera possició de l'array resultant que és la cadena
* que s'ha parsejat.
*/
array_shift($jData);

/**
* Extraiem de l'array l'hora:minut:segon
*/
$jHora = array_splice($jData, 3);

/**
* Si la primera xifra te 4 posicions, vol dir que venim de
* MySQL, i representarem la data girada amb / com a separador
* En cas contrari, vol dir que venim de pantalla, i el
* separador serà l'standard de MySQL.
*/
if (strlen($jData[0]) == 4)
{
$separador = '/';
}
else
{
$separador = '-';
}

/**
* Retornem la data
*
* girem l'array que conté any,mes,dia o dia,mes,any
* la convertim a una cadena separant cada element pel separador calculat
* afegim espai blanc i l'hora complerta
*/
$ret = implode($separador, array_reverse($jData)) . ' ' . $jHora[0];

return $ret;
}
}


Per als camps de tipus date, que no tenen l'hora, la cadena de parseig serà:


/(\d{1,4})[\-\/\.](\d{1,2})[\-\/\.](\d{1,4})/

dilluns, 1 de juny del 2009

Visualitzar clients AbanQ a dotProject

A Corretgé.com hem decidit implementar el gestor de projectes dotProject 2.1.2 i adaptar-lo a les nostres necessitats.
El primer que farem serà que el llistat de companyies del dotProject es correspongui amb la relació de clients de l'AbanQ i així evitar haver d'entrar les fitxes a les dues aplicacions:
Prèvia còpia de seguretat de les dades, arrenquem el MySQL i emprem la base de dades on tenim el dotProject i esborrem la taula companies:
drop table companies

I procedim a la creació de la vista basada en les dades de client de l'AbanQ que tenim en aquest cas a la base de dades crtfaclux. A la relació de clients d'AbanQ també ha d'existir la nostra pròpia empresa, que identificarem com de tipus 6, Interna, que la detectem pel NIF:
create view companies as
select c.codcliente as company_id,
0 as company_module,
convert(c.nombre USING utf8) as company_name,
c.telefono1 as company_phone1,
c.telefono2 as company_phone2,
c.fax as company_fax,
convert(d.direccion USING utf8) as company_address1,
convert(d.provincia USING utf8) as company_address2,
convert(d.ciudad USING utf8) as company_city,
d.codpais as company_state,
d.codpostal as company_zip,
substring_index(c.email, '@', -1) as company_primary_url,
1 as company_owner,
convert(c.nombrecomercial USING utf8) as company_description,
CASE c.cifnif
when 'B17803586' then 6
else 1
end as company_type,
c.email as company_email,
convert(c.contacto USING utf8) as company_custom
from crtfaclux.clientes c
left join crtfaclux.dirclientes d on c.codcliente = d.codcliente and d.domfacturacion = 1


Si accedim al llistat de companyies de dotProject trobarem integrades tots els nostres clients, assigants com a owner de la companyia l'administrador del dotProject. Aquest camp no es pot canviar. Si es necessita canviar dades, el que haurem de fer és integrar-les de manera periòdica i no pas crear una vista.