divendres, 29 d’abril del 2011

Released Zend Server 5.1 for IBM Power i

Zend is pleased to announce the availability of Zend Server for IBM i 5.1. This release includes significant improvements to performance and stability, as well as the following:
  • PHP 5.2 packages upgraded to 5.2.17
  • PHP 5.3 packages upgraded to 5.3.6
  • Zend Framework packages upgraded to 1.11.3
  • New Zend Server RESTful Web API
  • Native IBM i support for Oracle database drivers
  • New PHP Toolkit (beta)
  • Improvements to Zend Monitor
  • Improvements to Zend Job Queue
  • Security and other bug fixes

dimecres, 20 d’abril del 2011

Atorgant els permisos necessaris per a fer BackUp de MySQL

Si fem backup de dades MySQL amb mysqldump, necessitarem un usuari que pugui accedir a les dades únicament per a executar el backup. Els privilegis mínims que necessita són:


  • SELECT: permet la lectura dels registres.
  • LOCK TABLES: permet el bloqueig de taules, per tal de garantir la consistència de les dades guardades.
  • SHOW DATABASES: permet conèixer el directori de bases de dades existent.
  • SHOW VIEW: permet veure la definició de les vistes.
  • EXECUTE: permet executar stored procedures, necessaris per a SHOW FIELDS FROM de les vistes.
  • RELOAD: permet l'ús de FLUSH per a la neteja de la memòria cau (cache).


Així doncs, amb l'ordre GRANT crearem l'usuari de backup amb els permisos adhients:

GRANT SELECT, LOCK TABLES, SHOW DATABASES, SHOW VIEW, EXECUTE, RELOAD ON *.* to 'backup'@'host'
IDENTIFIED BY 'password';


El llistat complert de privilegis el trobarem a la documentació de MySQL.

dissabte, 16 d’abril del 2011

Com generar una contrasenya MySQL 4.1 des de PHP

A partir de la versió 4.1 de MySQL va canviar el mètode de creació de contrasenyes, la funció PASSWORD() retorna una cadena molt més gran i segura amb una encriptació unidireccional.

Si des de PHP volem generar una contrasenya validable des de MySQL ens dotarem d'aquest mètode:


/**
* Retornem una cadena entenedora per la funció PASSWORD()
* de MySQL
*
* @see http://php.net/manual/en/function.sha1.php
* @see http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html#function_password
* @param string $pwd
* @return string
*/
protected function mySqlPassword($pwd)
{
return "*" . strtoupper(sha1(sha1((string) $pwd,true)));
}

dilluns, 11 d’abril del 2011

Released eyeOS 2.4

Aquest migdia s'ha alliberat la versió 2.4 d'eyeOS, la darrera i més evolucionada versió d'eyeOS


El podeu provar a try.eyeos.org, no us oblideu d'afegir corretge a la vostra llista d'usuaris coneguts ;-)

eyeOS 2.4 - The most advanced Cloud Desktop :

dissabte, 2 d’abril del 2011

Instal·lant Zend Server Community Edition a Ubuntu Server desde paquets DEB

Seguint les instruccions de la documentació de Zend, instal·larem el Zend Server Community Edition a un Ubuntu Server 10.10 64 bits des del repositoris DEB de Zend.

Primer de tot, afegim el repositori de Zend a l'arxiu /etc/apt/sources.list:
## Repositori de Zend per a Zend Server Community Edition
deb http://repos.zend.com/zend-server/deb server non-free


Seguidament instal·lem la public key d'aquest repositori
wget http://repos.zend.com/zend.key -O- | sudo apt-key add -

I actualitzem el llistat de paquets
sudo apt-get update

I procedim a instal·lar els paquets:
sudo apt-get install zend-server-ce-php-5.3 php-5.3-extra-extensions-zend-server php-5.3-loader-zend-server zend-server-framework-dojo zend-server-framework-extras control-panel-zend-server

I accedim al Zend Server GUI pel port :10081/ZendServer del servidor on l'hem instal·lat:


Nota: Per a l'edició de la màscares de xarxa en format CIDR, seguim les instruccions del document CIDR Block Prefix.

dilluns, 21 de març del 2011

Accessos 60 cops més ràpids i àgils amb Shared Memory Functions

Les funcions de memòria compartida que suporta el PHP són una bona manera de gestionar indicadors de les aplicacions a nivell de sistema.

Es tracta d'una manera de tenir variables superglobals, és a dir, consultables per tots els scripts de l'aplicació. Realment el que estem fent és accedir directament a blocs de memòria del servidor, convenientment reservat i assegurat.

L'alternativa a aquesta gestió d'indicadors en memòria compartida són els tradicionals accessos al filesystem amb arxius semàfors.

Però si la gestió d'aquesta memòria ens resulta fartosa, sobretot per haver de fer sempre un shmop_read() i controlar l'error per saber si una posició està ocupada o lliure, si el PHP s'executa en un servidor Linux, podem fer servir les funcions semàfor que faciliten la programació amb aquesta tècnica.

shm_attach
La instrucció shm_attach ens permet tractar els segments de memòria amb una facilitat tant gran que a cops sembla que estiguem tractant amb arxius tipus semàfor.

Per reservar un segment executarem:
$this->seg = \shm_attach(0xCAFE, 1024, 0750);

El primer paràmetre és l'id de segment de memòria amb el que volem treballar. En aquest exemple fem servir un de proves, però en explotació podríem fer servir la funció ftok(__FILE__), si aquest segment el reservem per a tota l'aplicació des d'un únic arxiu, o ftok('/etc/app/myapp.ini') on indiquem la ruta de l'arxiu que conté la configuració per a l'aplicació i que s'estima únic per a la mateixa aplicació.

El segon paràmetre és la mida en bytes d'aquest segment, reservem un KB. Cal tenir en compte a l'hora de dimensionar segments, que PHP a hores d'ara encara no és un llenguatge nativament UTF-8.

El tercer paràmetre estableix els permisos d'aquest segment en format octal. Per omissió és 0666, però com que no volem que cap altre usuari del sistema que no sigui l'Apache, els del seu grup puguin llegir-ho, però la resta ni pugui conèixer la seva existència, establim permisos 0750.

shm_put_var
La instrucció shm_put_var serveix per a establir un valor a un slot del segment reservat.
\shm_put_var($this->seg, (int) $clau, $valor);

El primer paràmetre és l'id del segment.

El segon, l'slot del segment que volem declarar.

El tercer, és el valor pròpiament dit.


shm_get_var
La instruccio shm_get_var serveix per a recuperar un valor d'un slot del segment reservat.
if (\shm_has_var($this->seg, $clau))
{
return \shm_get_var($this->seg, (int) $clau);
}


El primer paràmetre és l'id del segment.

El segon, l'slot del segment que volem recuperar. Podem fer servir shm_has_var per tractar d'esbrinar prèviament si està declarat o no aquest slot.

Benchmark
Les proves de rendiment que hem fet comparant aquesta tècnica amb accessos a arxius tipus semàfor al filesystem ens han reportat una mitjana de 60 cops més ràpid l'accés a memòria compartida, que a arxius del filesystem tant per a l'establiment de variables, com per a la recuperació d'aquestes.

Una dada a tenir en compte!

divendres, 4 de març del 2011

Comentaris Facebook al vostre bloc

Facebook ha remodelat recentment el Social Plugin anomenat Comments, fent molt senzilla la implementació de comentaris d'usuaris de Facebook als nostres posts.

Només hi ha una limitació, al tractar-se dels comentaris d'una plana web, només els podem visualitzar quan mostrem el post del bloc concret, i no a la llista de posts.

Els clientes de Net Access que hagin adquirit una Estratègia Blogger, podeu sol·licitar la inclusió d'aquesta opció enviant un correu a info@corretge.cat.