Saturday, July 14, 2007

constructor y herencia de clases en php5

el otro dia me preguntaron como podria llamar al constructor de la clase padre desde una clase hija, aparte de como poder inicializar las variables de la clase padre, e hice un pequeño ejemplo que quisiera compartir:


// clase padre
class config {

var $var1;
var $var2;

// funcion constructor
function config( $var11, $var12 ){
$this->var1 = $var11;
$this->var2 = $var12;
}

}

class db extends config{

function db($somevar1, $somevar2){
$this->config($somevar1, $somevar2);
}

}


class Usuario extends db{

funcion Usuario($othervar1, $othervar2){
$this->db($othervar1, $othervar2);
}

}



//
// codigo
//

$usuario = new Usuario($finalvar1, $finalvar2)



saludos...

Friday, July 06, 2007

charset y collation en mysql

y pues .. ahora tenia una duda con respecto a estos dos terminos q mysql usa siempre, y es que en mysql, los valores por defecto son:

charset : latin1 (conjunto de carateres)
collatIon: latin_swedish_ci (conjunto de reglas)

lo cual significa que el universo de caracteres disponibles para este mysql son los q pertenecen a latin1 y que el conjunto de reglas para su gestion (mas q todo a la hora de comparar cadenas) es latin_swedish_ci.

collation tiene una nomenclatura:

charset_nameCollation_xx

donde:
"charset" puede ser: latin1, utf8, ascii, etc...
"nameCollation" puede ser: german1, swedish, general, spanish, etc...
"xx" puede ser: "ci" si no distingue entre may. y minusculas, "cs" si distingue, "bin" de tipo binario.

y q es el latin1, pos no es mas q el: ISO-8859-1, el q tiene el conjunto de caracteres pertenecientes a la mayoria de paises de europa occidental, donde ovbiamente esta el español.

pero mi curiosidad iba un poco mas alla, dado q trabajando en con esta collation, al transportar los datos, las ñ y los acentos eran cambiados por caracteres extraños...

hice una prueba con una db local, la cual hice un backup, borre y restaure... y todo parecia normal, luego me di cuenta q el detalle era q cuando transportaba los archivos, tenia q hacer demostraciones en una pc con windows, y luego la restaurarlo en una pc con linux, y es alli el problema

parece q al generar un backup con linux y correrlo en una pc con windows, no era del todo compatible.

conclusion: windows sucks !!!!!

jejeje xD

la imagen lo dice todo

Monday, July 02, 2007

problema de mysql en red

el otro dia tuve q solucionar un problema q me llamo la atencion de mysql, y es que pensaba q con solo dar la ip del servidor a una maquina clinte sobre windows, su usuario y pass era todo

usar mysqladministrator:

host: nro_ip_servidor
port: 3306
user: nameuser
pass: ********


tambien probe desde consola:

mysql -h nro_ip_servidor -u nameuser -p

y mi sorpresa... error!! :S
que paso ??

luego de un rato de buscar en la red, alabado sea san google xD, encontre la solucion, en el archivo de configuracion de mysql, q normalmente en las distribuciones derivadas de debian es /etc/mysql/my.cnf, hay una parte q debemos desabilitar, por defecto esta:

bind-address = 127.0.0.1

hay q colocar

# bind-address = 127.0.0.1

parece q por defeto, mysql no te permite trabajar en red, por seguridad, una vez q comentamos este detalle, ya podemos trabajar en red sin problemas.

ojo: hay q tener en cuenta la seguridad... no olvidar, estamos hablando de un servidor para desarrollo, no para produccion.

saludos xD

velocidad de mysql en red

y bueeeno, luego de sufrir algunas cosas con la pc del trabajo, decidi una cosa...

FORMATEAR !!!

sist. operativo a colocar: xubuntu... yeah !!!

y pos luego de eso... todo bien... instalar con sinaptic apache, php y mysql...
hecho...

descargar y configurar phpmyadmin...
hecho...

listo, mi pc esta lista para desarrollo y para q sirva de servidor de DB para pruebas
de las otras pc de la oficina... (tienen windows ps... q mas esperan??)

antes de formatear saque un backup de la DB de pruebas, y ahora a restauralas...

mysql -u root -p universidad < universidad.sql
hecho...

luego creacion de los usuarios q tenia la DB
hecho...

fijo mi ip estatico
hecho...

les doy a todos el ip, con sus cuentas y sus password
hecho...

phpmyadmin funciona bien

hay un par de aplicaciones q hacen las pruebas localmente, pero usando la DB remota, en este caso, mi pc

PROBLEMA ?

pues el tiempo de respuesta es... lento... pareciera q estuviera en internet con modem!!!
y supuestamente estamos en la misma red :S

buscando en internet... en /etc/mysql/my.cnf, agregar...

###############

[mysqld]
.....
......
skip-name-resolve

###############

para q resolver nombres de DNS si solo estamos trabajando en la red local?

y ya... ahora si todo ok !!!

espero q esto pueda servir a alguien.

Nota completa: how to optimize mysql response time