Abogado Garza

Abogado Garza

Lawyer Web Page

The Word of the Lord

The Word of the Lord

BroadCasts Religious

Reaching in to Heaven

Reaching in to Heaven

Artistic Expression

MuniManantay

MuniManantay

Municipalidad de Manantay

Abr
16

Instalar Lamp + SVN + Trac en Ubuntu II

Escrito por Carlos Montalvo hace 10 meses y 3 semanas

En la entrada anterior pudimos instalar un Servidor Web ahora veremos la instalación y configuración de SVN (Subversion).

ulamp

Instalación de SVN

Abrimos la consola (Terminal) y escribimos lo siguiente.

sudo apt-get install subversion
sudo a2enmod dav
sudo /etc/init.d/apache2 restart
sudo apt-get install libapache2-svn
sudo /etc/init.d/apache2 restart

subversion: Con esto instalamos subversion.

a2enmod dav: Activamos el modulo de Apache usado para hacer que los repositorios estén disponible a otros a través de una red.

/etc/init.d/apache2 restart: Reiniciamos el servidor web, esto es necesario para poder ver los cambios realizados.

libapache2-svn: Contiene los módulos que capacitan a Apache funcionar como un servidor de Subversion además del módulo de identificación.

Creación de Repositorio

Primero creamos el directorio:

sudo mkdir /var/svn

A continuación indicarle al Subversion que es un repositorio:

sudo svnadmin create /var/svn/repos

A continuación, abrir el archivo /etc/apache2/httpd.conf y añada las siguientes líneas:

<location /repos>
DAV svn
SVNPath /var/svn/repos
AuthType Basic
AuthName "Repositorio Subversion"
AuthUserFile /etc/subversion/passwd
Require valid-user
</location>

Asignamos permisos para que el servidor web pueda modificar el repositorio:

sudo chown -R www-data /var/svn

Añadimos un usuario le asignamos la contraseña y reiniciamos el servidor web.

sudo htpasswd -c /etc/subversion/passwd calinsoft
sudo /etc/init.d/apache2 restart

Añadimos nuestro proyecto al repositorio, en mi caso mi proyecto lo tengo en esta dirección /home/calinsoft/bobi-system

svn import -m "Mi Primer Proyecto" /home/calinsoft/bobi-system file:///var/svn/repos/bobi-system/trunk

Ahora nos dirigimos a http://localhost/repos y nos pedira el usuario y password que hayamos asignado.

Si necesita un Cliente SVN similar a TortoiseSVN les recomiendo NautilusSVN

Continuara…

Categorizado: Desarrollo Web | Web2Dev
Etiquetado: | | | | | |
Abr
13

Instalar Lamp + SVN + Trac en Ubuntu I

Escrito por Carlos Montalvo hace 10 meses y 4 semanas

Bueno esto es un asunto que siempre quise hacer en guindos y nunca pude, cuando lo intente en Linux me salio a la primera.

ulamp

Instalando Lamp (Linux Apache2 MySQL5 Php5 )

Abrimos la consola (Terminal) y escribimos lo siguiente.

sudo apt-get install apache2
sudo apt-get install php5 libapache2-mod-php5 php5-gd php5-cli
sudo /etc/init.d/apache2 restart

apache2: Con esto instalamos apache en nuestro Linux. para ver si esta activo vamos al navegador y digitalos http://localhost.

it-works

php5: Con esto instalamos el modulo Php5 para Apache.

libapache2-mod-php5: Instala el modulo de apache para traducir el php.

php5-gd: Modulo de php para la manipulación de las imágenes.

php5-cli(Command Line Interpreter): Para ejecutar php por linea de comando.

/etc/init.d/apache2 restart: Reiniciamos el servidor web, esto es necesario para poder ver los cambios realizados.

sudo apt-get install mysql-server
sudo apt-get install libapache2-mod-auth-mysql php5-mysql phpmyadmin
sudo /etc/init.d/apache2 restart

mysql-server: Instalamos MySQL, el servidor de base de datos.

libapache2-mod-auth-mysql: Modulo de apache para el manejo de autentificaciones con mysql.

php5-mysql: Modulo de php para manejo de conexiones con MySQL.

phpmyadmin: Administrador de MySQL atravez del navegador ( http://localhost/phpmyadmin ).

PD:Nos pedirá un nombre de usuario y contraseña, esos datos son los que definimos al momento de instalar MySQL.
PD2: Si nos muestra “The requested URL /phpmyadmin/ was not found on this server” ejecuta sudo ln -s /usr/share/phpmyadmin/ /var/www/phpmyadmin esto creara un acceso directo el cual permitira ya ingresar a http://localhost/phpmyadmin

sudo a2enmod rewrite
sudo /etc/init.d/apache2 restart

a2enmod rewrite: Activamos el Mod Rewrite.

En /var/www se publicara las paginas para tu servidor web donde puede probar el funcionamiento de Php, creando un archivo info.php y escribiendo adentro el cual de mostrara los parámetros de configuración y las variables de php y apache.

Continuara…

Categorizado: Desarrollo Web | Web2Dev
Etiquetado: | | | | | |
Sep
12

Clases y métodos finales PHP5

Escrito por Carlos Montalvo hace 1 año y 6 meses

El concepto de clases o método final se utiliza para promocionar al desarrollador un medio de control sobre la herencia. Las clases o métodos declarados como finales se pueden extender y/o sobrecargar mediante clases hijas. Para asegurarnos de que nunca se sobrecargué una clase o método determinado, simplemente añadimos la palabra clave final a la definición de método o clase, como muestra el ejemplo siguiente.

		final class NoExtending{
		public function myFunction(){
			/* Lógica de la Función */
		}
	}

	class restrictedExtending{
		final public function anotherFunc(){
			/* Lógica de la Función */
		}
	}

	class myChild extends restrictedExtending{
		public function thirdFunction(){
			/* Lógica de la Función */
		}
	}

Hemos definido tres clases individuales. La primera de estas clases, la clase NoExtending nunca podrá ser la clase padre de una clase hija por que toda la clase se a declarado como final. Por otro lado, aunque la clase restrictedExtending puede extenderse, el método anotherFunc() dentro de ella no se puede sobrecargar mediante una clase hija. Si nos damos cuenta la palabra clave final es útil para asegurarnos de que las cosas se hacen de una forma determinada dentro de las estructuras de nuestros objetos, aunque siguen permitiendo a los usuarios implantar sus propias subclases.

Categorizado: Desarrollo Web
Etiquetado: | | | |
Sep
09

Interfaces PHP 5

Escrito por Carlos Montalvo hace 1 año y 6 meses

Al contrario que las clases abstract, que proporcionan un medio para expresar conceptos abstractos en programación, las interfaces se han diseñado para asegurar la funcionalidad dentro de una clase. Específicamente, las interfaces son medios para definir el conjunto de métodos que debe tener una clase para implantar dicha interfaz. Para utilizar las interfaces, deben declararse con la palabra clave interface.

interface printable
{
public function printme();
}

Las interfaces, para ser útiles, deben implantarse mediante una o más clases. En el ejemplo hemos definido la interfaz printable, que estipula que cualquier clase que implante una interfaz el método printme(). Para crear una clase que implante una interfaz como ésta, utilizamos la palabra clave implements en la definición de clase, seguida por una lista de interfaces implantadas.

class Integer implements printable
{
private $value;
public function getValue(){
return (int) $this->value;
}

public function printme(){
echo (int) $this->value;
}
}

Hemos modificado la clase Integer original del entrada anterior para implantar la interfaz printable definida en el primer ejemplo. Como clase que implanta esta interfaz, se asegura efectivamente que la clase Integer va a proporcionar los métodos definidos por la interfaz.

Ahora que hemos definido una clase que implanta una interfaz, podemos utilizar este hecho dentro de nuestro código para asegurarnos de que cualquier función o método que requiera determinada funcionalidad de una clase la tendrá disponible desde la clase sin comprobar el nombre de clase específica utilizando la indicación de tipo o el operador instanceof. En su lugar, podemos utilizar estas técnicas para especificar la interfaz printable como muestra el siguiente ejemplo.

interface printable
{
public function printme();
}

abstract class Number
{
private $value;
abstract public function value();

public function reset(){
$this->value = NULL;
}
}

class Integer extends Number implements printable
{
private $value;
function __construct($value){
$this->value = $value;
}

public function getValue(){
return (int) $this->value;
}

public function printme(){
echo (int) $this->value;
}
}

/* Creamos una funcion que requiera de la interfaz printable*/
function printNumber(printable $myObject){
/* Si se llama a esta funcion, podemos estar seguros de que tiene un método printme()*/
$myObject->printme();
}

$inst = new Integer(10);

printNumber($inst);

Hemos utilizado las interfaces para asegurarnos de que la función printNumber() siempre va a recibir un objeto que tiene un método printme().

Categorizado: Desarrollo Web
Etiquetado: | | | |
Sep
08

Clases y Métodos abstractos en PHP 5

Escrito por Carlos Montalvo hace 1 año y 6 meses

Como su mismo nombre lo dice, las clases abstractas se utilizan en la OOP para especificar objetos abstractos. Solo sirven para ser heredadas por otras clases o para usarlas sin instanciar es decir son aquellas que forzosamente se ha de derivar si se desea que se puedan crear objetos de la misma o acceder a sus miembros estáticos.

Cuando una clase contiene un método abstracto tiene que declararse abstracta. No obstante, no todos los métodos de una clase abstracta tienen que ser abstractos.

		abstract class Number
	{
		private $value;
		abstract public function value();
		public function reset()
		{
			$this->value = NULL;
		}

	}

	class Integer extends Number
	{
		private $value;
		public function value()
		{
			return (int) $this->value;
		}
	}

	$num = new Integer; /* Bien */
	$num2 = new Number; /* Mal */

Hemos creado una clase abstracta, Number que se extendiendo por la clase Integer. Como hemos declarado la clase Number como abstracta, no podemos crear una instancia de ella. Si miramos a la clase Number, podremos comprobar que se define 2 funciones: value() y resert(). En una clase abstracta, no es necesario proporcionar ningún código para métodos, aunque podemos incluir si lo deseamos. En el caso de la clase Number, como value() es algo específico a un tipo determinado de número, se deja para que lo implante la clase hija.

Para forzar este comportamiento en un código de escritura de desarrollador, la palabra clave abstract utilizada para identificarlo tiene simplemente un marcador de posición en la clase Number, algo que no obstante, no es cierto para el método reset(), que es consistente para cualquier tipo de número específico.

Las clases abstractas pueden extenderse sin implantar todos los métodos abstractos definidos dentro. Es decir, una clase hija puede también declararse como abstracta si no implanta todos los métodos abstractos de su padre(o padres).

Categorizado: Desarrollo Web
Etiquetado: | | | | |
Ago
30

En los primeros dias de agosto Jose Antonio Gelado entrevisto a  Rasmus Lerdorf el creador de PHP, la entrevista es muy interesante sobre PHP5, PHP6, ruby on rails y de la actualidad por eso lo añado como PodCast para que lo puedan escuchar :) .

Categorizado: Actualidad | Informática
Etiquetado: | | | |