jueves, 21 de junio de 2007
Para los birriosos de Wolfenstein Enemy Terrytory
Aquí les dejo un video que en lo particular me parece exelente, y a los que han jugado Wolfenstein les va a gustar
miércoles, 20 de junio de 2007
Los Virus que te Geolocalizan (Google Maps)
Todo igual a otros virus hasta aquí, pero ¿que lo hace diferente? Simple, que desde el Panel de Administración del Virus, el atacante puede Geolocalizar el PC en Google Maps mediante la Dirección IP.
Es cierto que aunque estas Aplicaciones no son de fiar, podemos encontrarnos con atacantes que ya manejan los Conceptos de Web 2.0.
Más Información | Alerta 741 de WebsenseEncontrado en: http://www.opensecurity.es
jueves, 14 de junio de 2007
Tags sobre PHPDocumentor 2
Siguiendo con la explicación de algunos tags que pueden utilizar en PHPDocumentor les dejo aquí unos cuantos.
- @param: indica el tipo de variable y una descripción de un parámetro de una función. Puedes asignar varios tipos de datos a un parámetro, por ejemplo integer y booleano.
Ej. @param integer|boolean @var1
La barra ( | ) se utiliza para separar los tipos de datos asignados a dicha variable. - @return: el tag return es usado para los métodos con valor de retorno. @returns es el alias de @return y cualquiera de los dos puede ser usado. El tipo de dato debe ser uno soportado por PHP, un nombre de clase o la palabra "mixed" (sin las comillas). Al igual que @param también asignar varios tipos de datos usando la barra ( | ). Si asignas un nombre de clase PHPDocumentor va a crar un link automáticamente enlanzando a la documentación de dicha clase.
- @see: es usado para documentar cualquier elemento (variable global, clase, función, etc). Sirve para referenciar ya sea a una clase padre o a una función de una clase hija, etc.
- @since: no sirve para referenciar desde que versión del archivo de código se encuentra presente el elemento (cualquier elemento ya se una función de una clase etc.).
- @static: es usado para declarar un método estático de una clase. Estos métodos son llamados sin necesidad de crear una instancia de objeto.
- @staticvar: lo mismo que static pero este se aplica a las variables estáticas de la clase. Puede llevar dos parámetros que son el tipo de datos y una pequeña descripción.
Ej. @staticvar string nombre del estudiante - @subpackage: trabajo junto con el tag @package. Hace un trabajo similar o parecido al tag @category.
- @access: define el tipo de acceso de la variable. Si es pública, privada o protected. Para que las variables privadas sean documentadas por PHPDocumentor hay que activar la opción de Parse @access private and @internal/{@internal}} en la configuración de la aplicación web, o si estas en consola utiliza -pp como parámetro.
- @todo: planea un nuevo cambio en un elemento que todavía no va a ser implementado. PHPDocumentor muestra dicho string (la información) sin alterar alguna palabra. Funciona para cualquier tipo de elemento.
- @var: se utiliza para documentar una variable de clase. El tipo de datos debe ser uno tal que se soportado por PHP, un tipo de clase o la palabra "mixed" (sin las comillas).
- @version: para indicar en que versión del archivo de código se encuentra actualmente. Usa un string cualquiera como parámetro.
miércoles, 13 de junio de 2007
Tags sobre PHPDocumentor
Este post va dirigido a los que por lo menos se han leído algo de la documentación que hay en la página de PHPDocumentor que publiqué en el post anterior.
Bueno aquí les dejo una seria de tags interesantes que pueden utilizar en sus archivos de código para su documentación.
Bueno aquí les dejo una seria de tags interesantes que pueden utilizar en sus archivos de código para su documentación.
- @category: es usado para organizar grupos de paquetes juntos. Por ejemplo si dentro de un paquete tenemos varios subpaquetes podemos organizarlos por categoría. Ej.
@package paquete
@category categoria1
class foo{}
@package paquete
@category categoria2
class foo{}
Allí le estamos diciendo que las dos clases pertenecen a un mismo paquete, sólo que a categoría diferentes. Esto puede ser útil para organizar bien tu código. - @example: hace un enlace con un documento que puede se ejemplo para lo que se está documentando. La extensión del documento debe estar definidad dentro del phpdocumentor.ini. Si el archivo (ejemplo un archivo .php) entonces phpdocumentor genera un highlight (lo genera en html) del código fuente del archivo.
- @final: usada para un método, clase, etc. que nunca va a ser modificada, o sea es su versión final.
- @filesource: sólo puede ser usada en el primer DocBlock (bloque de documentación). Toma el código y genera un hightlight de tu código.
- @internal: es usado para crear dos tipos de documentación, ya sea una para uso privado y otra para uso público por ejemplo. La documentación que esta con el tag @internal se presenta sólo si activamos la opción de parse @access private y @internal (en modo web) o con los comandos -pp en modo consola.
- @license: puede ser usado para documentar cualquier elemento. En el colocas una url donde se encuentra dicha licencia y nombre para el url.
Ej. /**
* Muestra
* http://opensource.org/licenses/gpl-license.php'>GNU Public License
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*/ - @name: phpDocumentor reconoce el nombre del tag en las variables globales dentro de los DocBlocks (en conjunto con @global) para así asignarle el valor de @name en vez de $GLOBLAS['var'].
Ej. /**
* @global variable $GLOBALS['var1']
* @name var1
*/
$GLOBALS['var1']
Entonces en la documentación generada no saldría el nombre como mixed $GLOBALS['var'] sino como mixed var1.
PHPDocumentor otra buena herramienta para documentar tus proyectos
PHPDocumentor es una herramienta basada en Javadoc para la documentación de código fuente. Esta es una herramienta desarrollada en PHP y usa los mismos principios que Javadoc. La sintaxis es casi la misma que la de Javadoc, por lo que si ya has usado Javadoc ántes no te será problema aplicarlo para php.
Ej. /**
* @var string nombre
*/
var $nombre;
Si le quieres hechar un vistazo aquí te dejo su página web http://www.phpdoc.org., en donde hay un Tutorial que puedes seguir si eres un principiante como yo.
PHPDocumentor puede crear la documentación en diferentes formatos como lo son HTML, PDF, CHM, XML. Para el formato HTML tiene una serie de plantillas que puedes utilizar, pero también te da la opción de crear tu propia plantilla.
Actualizado: 28 de mayo de 2008
Si usas Eclipse como IDE para desarrollar php puedes usar phpdocumentor como una aplicación externa para generar la documentación. En esta página está como instalarlo phpdocumentor en Eclipse
Mediante voy aprendiendo un poco sobre este tema publicaré algunos post con ejemplos.
Ej. /**
* @var string nombre
*/
var $nombre;
Si le quieres hechar un vistazo aquí te dejo su página web http://www.phpdoc.org., en donde hay un Tutorial que puedes seguir si eres un principiante como yo.
PHPDocumentor puede crear la documentación en diferentes formatos como lo son HTML, PDF, CHM, XML. Para el formato HTML tiene una serie de plantillas que puedes utilizar, pero también te da la opción de crear tu propia plantilla.
Actualizado: 28 de mayo de 2008
Mediante voy aprendiendo un poco sobre este tema publicaré algunos post con ejemplos.
viernes, 4 de mayo de 2007
Problema con Mysql Administrator en Ubuntu
El bug ocurre cuando queremos entrar a la parte de "Administrador de Usuario" o "User Administrator". La aplicación se congela debido a que pierde la conexión con el servidor.
Este problema ocurre en Linux Ubuntu.
Para resolver este problema tenemos que seguir los siguientes pasos:
Espero le haya ayudado de algo ;) ...
El bug ocurre cuando queremos entrar a la parte de "Administrador de Usuario" o "User Administrator". La aplicación se congela debido a que pierde la conexión con el servidor.
Este problema ocurre en Linux Ubuntu.
Para resolver este problema tenemos que seguir los siguientes pasos:
- Ir a la consola y loguearnos como root.
- Escribir en la consola la línea: # export DEBUG_DONT_SPAWN_FETCHES=1
- Entonces ya podemos correr nuestra aplicación sin que se cuelgue en la parte de administrador de usuarios.
- Y la corremos: # mysql-admin
Espero le haya ayudado de algo ;) ...
miércoles, 4 de abril de 2007
REFERENCIAS EN PHP
En php todos los nombres de las variables están enlazados con valores en memoria automáticamente. Una referencia se puede usar para enlazar dos nombres de variables al mismo valor guardado en memoria.
<?php
//Sin referencia
$color = "azul";
$color2 = $color;
$color = "rojo";
echo $color2; //Imprime azul
//Con referencia
$color = "azul";
$color2 = &$color;
$color = "rojo";
echo $color2; //Imprime rojo
?>
Importancia de las Referencias en PHP
Imagínate que en tu sitio tienes un panel de control que puedes cambiarle el estilo a la páginas. Para eso tenemos dos clases (Estilo, Salida). Veamos una representación simple de como trabajarían estas clases:
<?php
class Estilo {
var $color;
var $size;
function Estilo()
{
$this->color = 'white';
$this->size = 'medium';
}
function getColor()
{
return $this->color;
}
function getSize()
{
return $this->size;
}
function setColor($color)
{
$this->color = $color;
}
function setSize($size)
{
$this->size = $size;
}
}
?>
Ahora la clase Salida:
<?php
class Salida {
var $estilo;
var $salida;
// Constructor toma estilo como argumento
function Salida($estilo)
{
$this->estilo = $estilo;
}
function buildSalida()
{
$this->salida = 'Color is ' . $this->estilo->getColor() .
' and size is ' . $this->estilo->getSize();
}
function display()
{
$this->buildOutput();
return $this->salida;
}
}
Como vemos en la clase salida, su constructor tiene un argumento. Este argumento es un objeto de tipo Salida.
Entonces si ponemos en prática estas clases tendríamos algo como esto:
<?php
//Se crea una instancia de la clase Estilo
$estilo = new Estilo();
$salida = new Salida($estilo);
echo $salida->display();
?>
Esto dará como salida:
Color is white and size is medium
Ahora supongamos que queremos cambiar el estilo del panel que estamos creando.
<?php
//Se crea una instancia de la clase Estilo
$estilo = new Estilo();
$salida = new Salida($estilo);
//Modifico el estilo completamente
$estilo->setColor('red');
$estilo->setSize('large');
//Ahora imprimimos
echo $salida->display();
?>
Salida:Color is white and size medium
Ahora vemos que lo que imprimimos es lo mismo que en el caso anterior, aunque en este ejemplo se haya cambiado el estilo. El problema consiste en que en la clase Salida el mismo resultado que en ejemplo anterior, debido a que a que la clase Salida obtiene una copia del objeto Estilo, y al realizarse los cambios en el objeto Estilo original no son reflejados en el objeto de la clase Salida ya que está trabajando con una copia.
Pero si modificamos la clase Salida para en vez de trabajar con una copia del objeto Estilo, trabajar con el original, o sea, hacemos referencia al objeto real dentro de la clase Salida, veamos:
function Salida(&$estilo){
$this->estilo = &$estilo;
}
Ahora si volvemos a correr el ejemplo anterior tendríamos otra salida debido a que ahora si estamos trabajando con el objeto original de tipo Estilo. La salida sería:
Color is red and size is large
Buenas Prácticas
Es recomendable color el operador de referencia (&) dentro de la definición de la función, debido a que si lo colocamos en la llamada de la función. A este tipo de referencia se le llama call-time pass-by-reference (obj->funcion(&$obj2)). Si en el php.ini tenemos la opción allow_call_time_pass_reference = Off entonces este tipo de referencia nos dará un warning. php.ini trae esta opción en Off por default.
Cuando debemos usar Referencia
Debemos usar referencia en caso de:
- Con variables complejas estilo arreglos y objetos.
No debemos usar referencias cuando:
- Tengamos variables sencillas estilo integers, strings, etc.
Referencia tomada del libro "The PHP Anthology - Volumen 1"
Suscribirse a:
Entradas (Atom)
