RadicalPython Radical Python

A la memoria de un Linuxero y del que pudo ser.

Pues el día de hoy un compañero muy querido de nuestro grupo Cabuntu ha fallecido por un accidente de tránsito en la ciudad de Cali, su esposa se encuentra en un estado grave en la clínica y pues este post es para hacerle una dedicación a quien con tanto esmero se encargaba de difundir la cultura libre, GNU/Linux y en especial Ubuntu, hacía los demás.

Cali underground 2009Cahos y Koyi K Utho

Espero que esté bien donde quiera que se encuentre y ojala se encuentre con mi bebé.

No lo había dichó antes pero mi bebécito aquel por el cual estaba tan feliz y pusé un post en este blog se me murió el jueves de hace 15 días por que a mi esposa le dió un aborto incompleto, por tal razón borré el post y no había dichó nada; ahora quiero honrar en este post la memoria de ambos.

dymb2b, my B2B

Cansado de una mierda de B2B (que no sirve para un culo) desarrollado por un tal blanco, pues estoy yo dandole al mio propio, parte del código que he colgado últimamente sobre Clase Query Conexión lo he utilizado en este proyecto al 100%, voy a colgar lo que he estado haciendo, cualquier ayuda o mejora se les agradece y quedarán incluidos en los créditos, se los digo quedará con licencia GNU/GPL, aunque de pronto me entra la maricada y lo termino poniendo con licencia CC y pues como en su día tuvó mi querido Configurador de DansGuardian, comenzaré a colgarlo acá en mi blog.

Esta desarrollado en PHP con DB MySQL y cuando tenga los conocimientos suficientes o quien me quiera ayudar haré un instalador vía PHP, tal cual como Joomla u otras aplicaciones.

Bueno los dejo, un saludo señor blanco, voy a colocar en manos de la gente un B2B mejor que la porquería que usted hizó y pues ojala veas que no eres nadie como programador.

phpdocumentor -> Generando documentación para PHP

Leyendo en el blog de sherekan me he encontrado con un software para documentar aplicaciones para PHP y pues que creen, me va a servir full por que una de las cosas que debía hacer para la aplicación que estoy haciendo (valga la redundancia :P) actualmente de la cual la Clase Query Conexión hace parte debía documentarla.

Pues me encuentro con phpdocumentor el cual te genera la documentación de acuerdo a lo que le pases como parámetro.

Seguí el ejemplo del blog de sherekan y pues es muy sencillo.
phpdoc -o HTML:frames:earthli -d /path/al/proyecto/ -t /documentacion/a/generar
Lo mejor de todo es que me va a ahorrar un buen tiempo que tenía destinado para esto.

Clase Query Conexión III parte

He estado avanzando bastante en la clase query conexión, realmente me está ayudando bastante en la creación de un proyecto que estoy haciendo, ojala le sirva a alguien más por ahí.
Después coloco ejemplos de cómo funciona.

<?php
/**
*
* @Clase principal de conexion y query. "clases.php"
* @versión: 9.09.14 @modificado: 14 de septiembre de 2009
* @autor: RadicalEd
*
**/


class SQL
{
//Variables públicas
public $result;
public $numrows;
public $arrayRegistros;
public $ultimo;

//Constructor
function SQL($host='localhost', $db='dymb2b', $user='usdym', $password='clio1214')
{
$this->database = mysql_connect($host, $user, $password) or die("No se pudo conectar con el servidor".mysql_error());
@mysql_select_db($db) or die( "No se pudo conectar a la db: " . mysql_error());
}

//Este método mostrará datos de una consulta de varias tablas
public function query($query, $tipo=0, $error='Query ejecutado incorrectamente')
{
$this->result = mysql_query($query) or die(mysql_error($error));

//Dependiendo del tipo de consulta SQL escojida
//extraemos las variables
switch($tipo)
{
case 0: //SELECT
$this->numrows = mysql_num_rows($this->result);
$this->arrayRegistros = mysql_fetch_array($this->result);
$this->ultimo = '';
break;
case 1: //INSERT
$this->ultimo = mysql_insert_id();
$this->numrows = '';
$this->arrayRegistros = '';
break;
case 2: //UPDATE
case 3: //DELETE
case 4: //ALTER
$this->numrows = '';
$this->arrayRegistros = '';
$this->ultimo = '';
break;
}

//Estos son todos los datos que se pueden extraer de un query
//Aca lo que se hace es devolverlo todo en un array
$arrayRetorno = array($this->result, $this->numrows, $this->arrayRegistros, $this->ultimo);

return $arrayRetorno;
}

//Este nos imprimirá un tag <table> compuesto de varios campos de
//tablas diferentes en forma vertical, además se puede agregar un link
//para ir hacía un script diferente
public function tablaVertical($query, $camposTabla, $link='0', $pagina='')
{
$tabla = '<div align="center"><table border="1" cellpadding="1" cellspacing="1"><tbody><tr>';

//Para saber el porcentaje de tamaño de cada campo
/*$porc = 100/count($camposTabla);
$porc = floor($porc);*/


//Acá mostrará los encabezados de la tabla
foreach($camposTabla as $campo)
{
//Si el campo es PRECIO entonces al final añadimos una columna más para la suma
if ($campo=='PRECIO')
{
$tabla .= '<td align="center" class="letratd"><strong>'.$campo.'</strong></td>
<td align="center" class="letratd"><strong>TOTAL</strong></td>'
;
}
else
{
$tabla .= '<td align="center" class="letratd"><strong>'.$campo.'</strong></td>';
}
}

$tabla .= '</tr>';

//Ejecuto el query y obtengo un array con este
$array = $this->query($query);

$n = 0;
while($n<$array[1])
{
$tabla .= '<tr>';

$cmp = 0; //Esta variable nos sirve para saber cuando el primer campo es un link

//Se recorre el array de Datos
foreach($camposTabla as $campo)
{
$registro = mysql_result($array[0],$n,$campo);

//Confirmamos si es una imagen u otro tipo de dato
if (substr($registro, -3) == 'jpg' || substr($registro, -3) == 'bmp')
{
$tabla .= '<td align="center" class="letratd"><div id="pic">
<a class="p1" href="#" title="miniatura">
<img src="'
.$registro.'" width="50" height="50" title="miniatura">
<img src="'
.$registro.'" class="large">
</a>
</div></td>'
;
}
else
{
//Si el parámetro link esta a 1 y la variable cmp es igual a 0
//entonces se imprimira el enlace
if ($link=='1' && $cmp==0)
{
/*************NOTA*****************
* SE DEBERA TENER EN CUENTA QUE EL ID DEL LINK SIEMPRE DEBERA SER EL PRIMER
* CAMPO DEL QUERY, PARA QUE EL "mysql_result" PUEDA BUSCAR EL CAMPO 0
*/


//Si el dato está vacio, entonces imprimo el id
if ($registro=='')
{
$tabla .= '<td class="letratd" align="center"><a href="'.$pagina.mysql_result($array[0],$n, 0).'">'.mysql_result($array[0],$n, 0).'</a></td>';
$cmp = 1;
}
else
{
$tabla .= '<td class="letratd" align="center"><a href="'.$pagina.mysql_result($array[0],$n, 0).'">'.$registro.'</a></td>';
$cmp = 1;
}
}
else
{
//Si es un registro de tipo número, lo centramos en el campo de la tabla
if (is_numeric($registro))
{
//Una forma fea pero no tengo de otra para hacer la suma de campos
if ($campo=='CANTIDAD')
{
$cantidad = $registro;
}
//Si es un campo moneda; se diferenciará por que siempre el dato del
//array se deberá llamar PRECIO y calculamos el precio
if ($campo=='PRECIO')
{
$tabla .= '<td class="letratd" align="right">$ '.$registro.'</td>
<td class="letratd" align="right">$ '
.$registro*$cantidad.'</td>';
$total += $registro*$cantidad;
$precio = 1; //Nos servira para imprimir el total al final
}
else
{
$tabla .= '<td class="letratd" align="center">'.$registro.' </td>';
}
}
else
{
$tabla .= '<td class="letratd">'.$registro.' </td>';
}
}
}
}
$tabla .= '</tr>';

$n++;
}

//Lo mismo que la anterior si hay un campo precio, entonces al final
//se imprimirá un valor total
if ($precio==1)
{
$tabla .= '<tr><td colspan="'.count($camposTabla).'" align="right" class="letratd"><b>TOTAL</b></td><td class="letratd" align="right"><b>$ '.$total.'</b></td></tbody></table></div>';
}
else
{
$tabla .= '</tbody></table></div>';
}

//Devolvemos un array con todos los datos necesarios
$arrayRetorno = array($array, $tabla);
return $arrayRetorno;
}

//Este nos imprimirá un tag <table> compuesto de varios campos de
//tablas diferentes en forma horizontal
public function tablaHorizontal($query, $camposTabla)
{
$tabla = '<div align="center">
<table border="1" cellpadding="1" cellspacing="1">
<tbody>'
;

$n = 0;
//Ejecuto el query y obtengo un array con este
$array = $this->query($query);
if ($row=$array[2])
{
//Acá mostrará los encabezados de la tabla
foreach($camposTabla as $campo)
{
$tabla .= '<tr>
<td class="letratd"><strong>'
.$campo.'</strong></td>
<td class="letratd">'
.$row[$n].'</td>
</tr>'
;
$n++;
}
}

$tabla .= '</tbody></table></div>';

//Devolvemos un array con todos los datos necesarios
$arrayRetorno = array($array, $tabla);
return $arrayRetorno;
}

//Este nos imprimirá un tag <table> compuesto de varios campos de
//tablas diferentes y un campo de texto
public function campoTextoVertical($query, $camposTabla)
{
$tabla = '<div align="center"><table border="1" cellpadding="1" cellspacing="1"><tbody><tr>';

//Acá mostrará los encabezados de la tabla
foreach($camposTabla as $campo)
{
$tabla .= '<td align="center" class="letratd"><strong>'.$campo.'</strong></td>';
}

$tabla .= '<td align="center" class="letratd"><strong>CANTIDAD</strong></td></tr>';

//Ejecuto el query y obtengo un array con este
$array = $this->query($query);

$n = 0;
while($n<$array[1])
{
$tabla .= '<tr>';

//Se recorre el array de Datos
foreach($camposTabla as $campo)
{
$registro = mysql_result($array[0],$n,$campo);

//Confirmamos si es una imagen u otro tipo de dato
if (substr($registro, -3) == 'jpg' || substr($registro, -3) == 'bmp')
{
$tabla .= '<td align="center" class="letratd"><div id="pic">
<a class="p1" href="#" title="miniatura">
<img src="'
.$registro.'" width="50" height="50" title="miniatura">
<img src="'
.$registro.'" class="large">
</a>
</div></td>'
;
}
else
{
//Vamos a crear un campo array con el código de item
if ($campo=='CODIGO')
{
$tabla .= '<td class="letratd" align="center">'.$registro.'
<input type="hidden" name="item[]" size="10" style="text-align: center;" value="'
.$registro.'"></td>';
}
else
{
//Si es un registro de tipo número, lo centramos en el campo de la tabla
if (is_numeric($registro))
{
$tabla .= '<td class="letratd" align="center">'.$registro.' </td>';
}
else
{
$tabla .= '<td class="letratd">'.$registro.' </td>';
}
}
}
}
$tabla .= '<td class="letratd" align="center">
<input type="text" name="cantidad[]" size="5" style="text-align: center;">
</td></tr>'
;

$n++;
}

$tabla .= '</tbody></table></div>';

//Devolvemos un array con todos los datos necesarios
$arrayRetorno = array($array, $tabla);
return $arrayRetorno;
}

//Este nos imprimirá un tag <table> compuesto de varios campos de
//tablas diferentes y un campo de texto
public function tablaImagenTexto($query, $camposTabla)
{
$tabla = '<div align="center">
<table border="1" cellpadding="1" cellspacing="1">
<tbody><tr>'
;

//Ejecuto el query y obtengo un array con este
$array = $this->query($query);
$n = 0;
$z = 0;
//while ($row=mysql_fetch_array($array[0]))
while ($z<$array[1])
{
//Esto es propio del desarrollo, lo quitaré después
//de usar thumbnails
$img = str_replace('img/colecciones/', 'img/colecciones/g', mysql_result($array[0], $z, $camposTabla[0]));

//Cada 4 impresiones me voy a la siguiente línea
if ($n==4)
{
//el rel="lightbox" del vínculo es para que funcione el popup de imágenes
$tabla .= '</tr><tr>
<td align="center">
<a href="'
.$img.'" rel="lightbox" title="'.mysql_result($array[0], $z, $camposTabla[2]).'<br>'.mysql_result($array[0], $z, $camposTabla[1]).'">
<img src="'
.mysql_result($array[0], $z, $camposTabla[0]).'" width="100" height="100" border="0">
</a>
<br /><b>'
.mysql_result($array[0], $z, $camposTabla[2]).'</b>
<br />'
.mysql_result($array[0], $z, $camposTabla[1]).'
<input type="text" name="cantidad[]" size="5" maxlength="3" style="text-align: center;">
<input type="hidden" name="item[]" size="10" style="text-align: center;" readonly value="'
.mysql_result($array[0], $z, $camposTabla[3]).'">
</td>'
;
$n = 1;
}
else
{
//el rel="lightbox" del vínculo es para que funcione el popup de imágenes
$tabla .= '<td align="center">
<a href="'
.$img.'" rel="lightbox" title="'.mysql_result($array[0], $z, $camposTabla[2]).'<br>'.mysql_result($array[0], $z, $camposTabla[1]).'">
<img src="'
.mysql_result($array[0], $z, $camposTabla[0]).'" width="100" height="100" border="0">
</a>
<br /><b>'
.mysql_result($array[0], $z, $camposTabla[2]).'</b>
<br />'
.mysql_result($array[0], $z, $camposTabla[1]).'
<input type="text" name="cantidad[]" size="5" maxlength="3" style="text-align: center;">
<input type="hidden" name="item[]" size="10" style="text-align: center;" readonly value="'
.mysql_result($array[0], $z, $camposTabla[3]).'">
</td>'
;
$n++;
}
$z++;
}
$tabla .= '</tbody></table></div>';

//Devolvemos un array con todos los datos necesarios
$arrayRetorno = array($array, $tabla);
return $arrayRetorno;
}
}
?>

Ubuntu Karmic Alpha 2 vs Windows 7 RC

Muchos conocen mi "odio" hacía los producto Micro$oft, me considero radical en cuanto a eso aunque no debería ya que no es la filosofía que deberíamos adoptar los Linuxeros; bueno les dejo un video que encontré en YouTube comparando los 2 sistemas.
Windows con Core2Duo 7250 y Ubuntu en un Core2Duo 7100.