Mostrando entradas con la etiqueta tutorial. Mostrar todas las entradas
Mostrando entradas con la etiqueta tutorial. Mostrar todas las entradas

INSTALAR APACHE 2.4 Y PHP 5.4 EN UBUNTU

Posted: lunes, 22 de octubre de 2012 by Skuarch in Etiquetas: , , , ,
0


En ocaciones usar apt-get no tiene los programas actualizados, para eso se realizo este pequeño tutorial

Requisitos:
apache: httpd-2.4.x.tar.gz
php: php-5.4.x.tar
tener instalado mysql 5 (este si se instalo con apt-get)
opcionalmente puedes usar git para clonar un repositorio, si no tienes git instalado puedes ir a la pagina web de git y descargarlo el proyecto como zip.

Paso 1:
instalar todas la librerias para para poder compilar
sudo apt-get build-dep apache2 php5
sudo apt-get install libtool

Paso 2 (instalar apache) :
cd /usr/local/src
clonar este repositiorio (tambien puedes obtenerlo como zip desde la pagina de github)
git clone https://github.com/apache/apr.git srclib/apr
./buildconf --force
./configure -enable-modules=all --with-included-apr --enable-mpm=worker --enable-suexec --enable-rewrite
sudo make
sudo make install
editar el archivo /usr/local/apache2/conf/httpd.conf con tu editor favorito y cambiar las siguientes lineas
#User ya existe se tiene que editar
User www-data
Group www-data
#ServerAdmin  ya existe se tiene que editar
ServerAdmin root@localhost.localdomain
#DocumentRoot ya existe se tiene que editar
DocumentRoot "/var/www"
#Directory se ya existe tiene que editar
dentro de el bloque de Directory porner lo siguiente
Options Indexes FollowSymLinks
AllowOverride all
Require all granted
por favor checa los comentarios

en el mismo archivo cambiar los siguiente
ServerName localhost:80
crea la carpeta www en var para poner los sitios web
sudo mkdir /var/www
le damos todos los permisos para que posteriormente no de probremas
sudo chmod 777 -R /var/www
chown -Rf www-data:www-data /var/www
link dinamico para que apache ejecute binarios
ln -s /usr/local/apache2/bin/* /usr/local/bin/
remover /etc/init.d/apache2 y remplazarlo con un link simboloco a /usr/local/bin/apachectl:

rm -rf /etc/init.d/apache2
ln -s /usr/local/bin/apachectl /etc/init.d/apache2 
para que apache inicia automaticamente
update-rc.d -f apache2 defaults 91 09


Paso 3 (instalar php) :

mover el archivo comprimido a /usr/local/src y descomprimirlo
cd usr/local/src
sudo tar -xvf php5.x.x
hay que darle permisos
sudo chmod 777 -R php5
usamos este comando
./buildconf --force 
para instalar php primero se tiene que configurar
./configure -enable-bcmath --enable-calendar --enable-dba --enable-exif --enable-ftp --enable-mbstring --enable-shmop --enable-sigchild --enable-soap --enable-sockets --enable-sysvmsg --enable-wddx --enable-zip --with-apxs2=/usr/local/apache2/bin/apxs --with-bz2 --with-config-file-path=/usr/local/apache2/conf --with-curl --with-gd --with-gettext --with-mcrypt --with-mysql --with-mysqli --with-openssl --with-pdo-mysql --with-pdo-pgsql --with-zlib
si tienes problemas en esta parte checa que tengas todas las librerias instaladas
sudo apt-get install libxml2-dev libpcre3-dev libbz2-dev libcurl4-openssl-dev libdb5.1-dev libjpeg-dev libpng12-dev libxpm-dev libfreetype6-dev libmysqlclient-dev postgresql-server-dev-9.1 libt1-dev libgd2-xpm-dev libgmp-dev libsasl2-dev libmhash-dev unixodbc-dev freetds-dev libpspell-dev libsnmp-dev libtidy-dev libxslt1-dev libmcrypt-dev
lo instalamos
make
sudo make install
copiamos el php.ini a /usr/local/apache2/conf/
sudo cp php.ini-development /usr/local/apache2/conf/php.ini
 creamos un archivo que contenga lo necesario para apache use php
sudo touch /usr/local/apache2/conf/extra/httpd-php5.conf
y tendra el siguiente contenido

#
# This next section will call PHP for .php, .phtml, and .phps files
#
AddType application/x-httpd-php .php
AddType application/x-httpd-php .phtml
AddType application/x-httpd-php-source .phps
#
# This is the directory containing php.ini
#
PHPIniDir "/usr/local/apache2/conf"
al archivo /usr/local/apache2/conf/httpd.conf agregarle esta linea en la seccion de modulos
LoadModule php5_module modules/libphp5.so
en ese mismo archivo buscar DirectoryIndex y modificarlo asi
DirectoryIndex index.html index.php
copiar las librerias que estan en la carpeta de php5/libs a /usr/local/apache2/modules/

cp /usr/local/php.x.x/libs/* /usr/local/apache2/modules/
con esto tendremos instalado nuetro servidor y listo para trabajar

INSTALAR NODE.JS y NPM EN UBUNTU

Posted: sábado, 24 de marzo de 2012 by Skuarch in Etiquetas: , , , , , , ,
0


la instalacion es algo facil de realizar solo tienes que seguir estos pasos y todo quedara listo, esto lo mostrare de dos maneras distintas

Instalar dependencias necesarias
$ sudo apt-get update
$ sudo apt-get install g++ make git libssl-dev pkg-config curl build-essential openssl libssl-dev
Utilizando git
$ git clone https://github.com/joyent/node.git && cd node
$ ./configure
$ make
$ sudo make install
$ curl http://npmjs.org/install.sh | sudo sh

Descargando node.js

$ wget “http://nodejs.org/dist/v0.6.11/node-v0.6.11.tar.gz”
$ tar -xzvf node-v0.6.11.tar.gz
$ cd node-v0.6.11/
$ ./configure
$ make
$ sudo make install
$ curl http://npmjs.org/install.sh | sudo sh

Podemos tener algun problema con el proxy cuando queramos instalar algo con nmp para resolverlo hacemos esto

npm config set registry http://registry.npmjs.org/ 

Eso seria todo lo que tienes que hacer para instalar node.js y npm yo sugiero instalarlo utilizando git ya que asi obtienes la ultima version, si lo descargas probablemente tengas que cambiar la direccion para obtener la version mas reciente

INTRODUCCION A UNDERSCORE.JS

Posted: domingo, 11 de marzo de 2012 by Skuarch in Etiquetas: , , , ,
0


Introduccion
underscore.js es una libreria para javascript que provee mucha programacion funcional, cuenta con 60 funciones para ayudarte a hacer tareas,  es el complemento ideal para backbone.js y jquery, todas las funciones de underscore empiezan con un "_", en los ejemplos puedes entender mas sobre esta libreria.

Ejemplos

_.each
var arrayNums = [1,2,3];
_.each(arrayNums, function(num){
   alert(num);
});
La funcion _.each recibe dos parametros el primero es un array y el segundo es una funcion, lo que hara _.each es recorrer el array y llamar la funcion que se paso como segundo parametro en cada posicion del array, el arrayNum tambien se podria declarar dentro de la funcion _.each.

_.filter
var evens = _.filter([1, 2, 3, 4, 5, 6], function(num){
   return num % 2 == 0; }
);
alert(evens);
la funcion filter regresara un array con los numeros que pasen como true en la segunda funcion.

_.without
_.without([1,2,3,4,5,6], 0,1);
Esta funcion regresara una copia del array sin los numeros que se le pasaron como segundo parametro.

_.isFunction
_.isFunction(alert);
Evaluara si lo que se le paso como parametro es una funcion, regresa un booleano.

_.isNull
_.isNull(object);
regresa true si object es null.


Como puedes ver nos facilita algunas de las cosas usando arrays y en evaluaciones, te recomiendo que le eches un vistaso a la documentacion para que veas todas las funciones que tiene esta libreria


pagina web de underscore.js

PROGRAMACION ORIENTADA A OBJETOS

Posted: martes, 6 de marzo de 2012 by Skuarch in Etiquetas: ,
0


Estos son algunos conceptos que se utilizan en la programacion orientada a objetos. El objetivo de esto es dar una introduccion breve a la programacion orientada a objetos.

INTRODUCCION
La programacion orientada a objetos (POO) tiene como fin ver las cosas como el mundo real, en el mundo real tenemos objetos y estos objetos tienen caracteristicas propias como peso, altura, color. En la POO se trata de sumular los objetos del mundo real dentro de la programacion infomatica.

OBJETO
Un objeto es cualquier cosa tangible, por ejemplo: una television, un telefono..., estos objetos tienen sus propias caracteristicas, color, tamaño, peso..., en POO un objeto es una entidad con sus propias caracteristicas (propiedades), estas entidades pueden ser cualquier cosa, un objeto de tipo reporte u otro objeto de tipo cliente, en donde el cliente tiene un nombre, una direccion etc.

CLASE
Las clases son la parte fundamental de cualquier programacion orientada a objetos, las clases se pueden definir como el molde del objeto, son las que definen a los objetos.

INSTANCIA
La instancia se produce cuando se crea un objeto y se dice que es una instancia de la clase.

METODOS
Todos los objetos tienen una funcion a realizar, por ejemplo el telefono es un objecto y su funcion es hacer una llamada o recibirla, entonces tendriamos que el telefono tienen dos funciones principales que son llamar y recibir llamada, en POO la palabra funcion se cambia a metodo, aunque en algunos lenguajes se sigue preservando, entonces los metodos son los que ejecutan las acciones.

CONTRUCTORES
Los constructores son los metodos que se ejecutan primero, usualmente este metodo se utiliza para inicializar las variables. Si la clase tiene mas metodos el primero en ejecutarse sera el constructor. el constructor se llama automaticamente cuando se crea la instancia.

HERENCIA
En una familia la jerarquia seria algo asi, el papá tiene hijos y esos hijos tienen los ojos de su papá, entonces los hijos heredaron los ojos de su papá, en POO pasa lo mismo pero la herencia se crea entre clases, una clase que hereda de otra clase tiene los mismo metodos que la clase padre, como lo que pasa entre la familia, los hijos heredaron los ojos de su papá.



CONEXION ORIENTADA A OBJETOS PHP Y MYSQL

Posted: lunes, 5 de marzo de 2012 by Skuarch in Etiquetas: , , , ,
0




Como todos sabemos las ventajas de la programacion orientada a objectos es poder reutilizar el codigo, aqui les muestro como hacer una clase en PHP para conectarse a la base de datos, tambien se creara una capa superior a la conexion para poder reutilizar nuestro codigo.

La clase no sera un singleton, debido a que si en cualquier momento se requiere cambiar de servidor de base de datos o se utilizen varias conexiones a diferentes bases de datos, el singleton no nos funcionaria.

Unos de los principios de la clase para conectarse es que pueda ser utilizada por cualquiera, recibira todos las parametros necesarios para crear la conexion y como servidor de base de datos se utiliza MySQL.


class ConnectionDatabase {

    private $user;
    private $password;
    private $database;
    private $server;
    private $link;
    private $result;

    //===================================================================
function __construct($user, $password, $database, $server) {
$this->user = $user;
$this->password = $password;
$this->database = $database;
$this->server = $server;
} // end __construct


Primero declararemos las variables y en el contructor recibimos los parametros necesarios para inicializar las variables, como puedes ver con esto, esta clase se puede conectarse a cualquier servidor.



//===================================================================
private function connect(){

if(isset($this->link)){

$this->link = mysql_connect($this->server,$this->user,$this->password) or die(mysql_error());
$this->selectDatabase();

}

return $this->link;

} // end connect


//===================================================================
private function selectDatabase(){

mysql_select_db($this->database,$this->link) or die(mysql_error());

}


Estos metodos son privados por que los demas metodos lo utilizaran, entonces no tiene caso que sea publico.

//===================================================================
public function executeQuery($query){

$this->result = mysql_query($query,$this->link);

return $this->result;

}


Este metodo si es publico, puede ejecutar cualquier query que me mandes, insert, update o select.

//===================================================================
public function fetchArray($query){

$fetchArray = null;          
        $this->result = $this->query($query);
        while($array = mysql_fetch_array($this->result)){              
        $fetchArray[] = $array;
        }
       
         $this->disconnect();
        return $fetchArray;

}


Este metodo tambien es publico y si lo observas tiene un while en donde llena un array para poderlo regresar, el array que regresa lo puedes recorrer en un foreach.


//====================================================================
private function disconnect(){

mysql_close($this->link);

}

//====================================================================
private function freeResult(){

mysql_free_result($this->result);

}

} //end class
Estos son los respectivos metodos para liberar y cerra la conexion que tambien son privados




PROGRAMACION MULTICORE EN JAVA

Posted: martes, 6 de diciembre de 2011 by Skuarch in Etiquetas: , , , ,
0


Si alguna vez te preguntaste si java (JVM) por si sola corre en varios nucleos a la vez, pues la respuesta es que si , pero en tu programa se debe de habilitar esto, y como diablos habilito esto ???, pues se tiene que crear ciertas funcionalidades en el codigo para usar multicore, lo primero que tenemos que hacer es saber cuantos nucleos tiene nuestro procesador

int processors = Runtime.getRuntime().availableProcessors();


Con esa simple linea de codigo sabes cuantos procesadores tenemos disponibles ahora nececitamos crear nuestro procesos independientes, la forma mas comun es esta.
ExecutorService executor = Executors.newFixedThreadPool(processors);

ExecutorService es una interface que hereda de Executor, como se puede apreciar se crea un pool de Threads y como parametros le mandamos el numero de procesadores que tiene el cliente donde se ejecutara. Ahora solo falta lanzar nuestros procesos
executor.execute(new Runnable(){
public void run(){
//aqui se hace algo ...
}
});

La mejor forma de iniciar un proceso es creando un hilo, hasta el final debemos de dar de baja el executor con la siguiente instruccion
executor.shutdown();

Esto te puede servir como introduccion para el manejo de diferentes procesos en java solo ten cuidado en no dejar Threads vivos asi como tambien la concurrencia.

TRIGGER SENCILLO EN MYSQL

Posted: sábado, 31 de enero de 2009 by Skuarch in Etiquetas: , , ,
0

Los trigger en mysql esta disponibles desde la version 5.0.2 y superiores, los triggers son objetos de la base de datos el cual esta ligado a una tabla y este se ejecuta cuando pasa alguna accion (INSERT,UPDATE,DELETE) en el ejemplo siguiente se muestra un ejemplo.

DELIMITER |

CREATE TRIGGER nombreTrigger BEFORE INSERT ON nombreTabla
FOR EACH ROW
BEGIN

INSERT INTO nombreTabla SET campo1 = NEW.nuevoCampo1; //tienes que tener cuidado aqui
DELETE FROM nombreTabla WHERE campo3 = NEW.campo1;
UPDATE nombreTabla SET cmpo4 = b4 + 1 WHERE campo4 = NEW.campo1;

END
|

DELIMITER ;


Lo que podemos observar de este sencillo codigo es que se necesita de un delimitador " | "
con la sentencia " CREATE TRIGGER " seguido del nombre se crea el trigger, " BEFORE o AFTER " esto se coloca cuando se quiere que se ejecute una funcion, antes o despues de alguna accion (INSERT,UPDATE,DELETE) despues se coloca " ON " y el nombre de la tabla con la que se quieres que se dispare el trigger, " FOR EACH ROW " para cada fila, despues vemos que se realizan un insert, un update y un delete, pero lo que se resalta de esto es " NEW.campo1 ", se pueden utilizar dos palabras " NEW u OLD" si el trigger esta definido para que se ejecute con BEFORE se utilizara NEW, si es AFTER se utilizara OLD, esto lo que quiere decir es que, si se usa NEW el campo todavia no se a insertado y lo contrario con OLD, dicho con otras palabras se tomaria el campo antes o despues de la accion, " DELIMITER ;" debe de llevar un espacion antes del " ; ".

Espero que te sirva, si no buscale por otro lado.

USO DE TIMER Y TIMERTASK

Posted: domingo, 31 de agosto de 2008 by Skuarch in Etiquetas: , , , ,
2



Para poder crear una tarea que se repita cada cierto periodo en java, se puede utilizar la clase Timer un ejemplo de este puede ser un reloj que cada segundo muestra la hora, pero para realizar un ejemplo sencillo, solo se va a imprimir un numero cada segundo, con esto cada quien puede realizar sus propias adecuaciones al codigo.


import java.util.Timer;
import java.util.TimerTask;

/**
*
* @author skuarch
*/
public class PruebaTimer {

    public static void main(String[] args) {

        // Clase en la que está el código a ejecutar
        TimerTask timerTask = new TimerTask() {

            int numero = 0;

            public void run() {
                System.out.println(numero++);
            }
        };

        // se crea un objeto del tipo timer
        Timer timer = new Timer();

        // se indica la tarea a ejecutar,
        //el retardo y cada cuando se tiene que repetir
        timer.scheduleAtFixedRate(timerTask, 0, 1000);
    }//fin main
}//fin class


El ejemplo es muy sencillo, cabe mencionar que en la clase TimerTask contiene un metodo que se llama run(), esto es parecido a los Thread, lo que contiene el metodo run es lo que se va a ejecutar cada cierto periodo.

Despues se crea un objeto de tipo Timer, que en este caso se llama "timer", y este accede a la propiedad scheduleAtFixedRate que se le tiene que pasar como parametros la tarea que se va a realizar el retardo, y el periodo, esta funcion tambien pude ser llamada cada determinada fecha, en la api de java puedes encontrar mas informacion sobre como programar tareas con fechas.

MANDAR CORREOS SIMPLES CON JAVA

Posted: lunes, 14 de julio de 2008 by Skuarch in Etiquetas: , , , , ,
0

Una de las formas de enviar correo con java es utilizar la api de java, javamail, que la puedes descargar de la pagina de sun, tambien se requiere del marco de trabajo que tambien se descarga del mismo lugar, con el nombre de jaf o activador, cuando se tengan estas dos apis se copian los archivos mail.jar y activator.jar en la ruta, C:\Program Files\Java\jdk1.6.0_04\jre\lib\ext obvio sobre windows, si usas otro que no sea JDK la la verdad no se donde se pongan los archivos, supongo que en el mismo lugar pero la verdad no se.

Ahora solo necesitamos un servidor que envie los correos, yo tengo un servidor smtp en windows 2003, pero tambien se puede crear en windows xp profesional, en el panel de control, agregar o quitar programas, agregar o quitar componentes de windows, hay buscamos Servicios de Internet informacion Server(IIS), dentro de eso buscamos Servicio SMTP y lo activamos, damos en aceptar en todo y nos pedira el disco de instalacion, es lo mismo para windows 2003, despues de esto se tiene que configurar el servidor.


Para configurar el servidor y que nos permita enviar correos, tenemos que realizar lo siguiente,
en el boton inicio, seleccionar mi pc dar click derecho y escoger administrar, nos abre una ventana que se llama administracion de equipos, hay buscamos servicios y aplicaciones, dentro de este buscamos Servicios de Internet Information Server(IIS), dentro de este encontramos Default SMTP Virtual Server damos click derecho y escogemos propiedades, nos aparece una ventana escogemos la pestaña de acceso y en la parte de reenvio damos click, hay escogemos la opcion de todas excepto las de esta lista, aceptamos en todo y con eso tenemos nuestro server de correos.


Una vez que se tienen esos archivos en la ruta especificada pasamos a realizar este pequeño codigo.


import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;

public class Msgsend {

public static void main(String []args) throws Exception{

Properties p = new Properties();
p.setProperty("mail.smtp.host", "localhost");
p.setProperty("mail.smtp.starttls", "true");
p.setProperty("mail.smtp.port", "25");
//p.setProperty("mail.smtp.user", "alguien@dominio.com");
p.setProperty("mail.smtp.auth", "false");

Session session = Session.getDefaultInstance(p,null);

session.setDebug(false);

MimeMessage message = new MimeMessage(session);

// Quien envia el correo
message.setFrom(new InternetAddress("alguien@dominio.com.mx"));

// A quien va dirigido
message.addRecipient(Message.RecipientType.TO, new InternetAddress("quienresibe@dominio.com.mx"));

message.setSubject("prueba de correo");
message.setText("este es el contenido del mensaje");

Transport t = session.getTransport("smtp");

t.connect();

t.sendMessage(message,message.getAllRecipients());

t.close();

}


}

hay esta si no te sale pues buscale por otro lado.

4




Este es un pequeño ejemplo de como crear un Stored Procedure en mysql que no regrese nada.

Paso 1:
Como es comun en la programacion se tienen muchos errores y para crear un sp (Stored Procedure) se realiza a base de prueba/error, para eso ponemos en la primer linea esto:

DROP PROCEDURE IF EXISTS mysp;


el nombre del stored procedure es mysp

Paso 2:
se tiene que utilizar un delimitador, yo utilizo //
DELIMITER //

este delimitidor mas adelante se debe de cerrar.
con la sentencia
CREATE PROCEDURE mysp ()

indicamos la creacion del sp, el sp debe de tener un cuerpo y un final para eso usamos las etiquetas BEGIN y END

Entonces ya temenos esta parte de codigo

DELIMITER //
CREATE PROCEDURE mysp ()

BEGIN

END

//
DELIMITER ;#aqui es donde se cierra el delimitador


La instruccion DELIMITER ; esta ultima instruccion debe de tener un espacio antes del ";"

Paso 3:
Declaracion y asignacion de variables, la declaracion de variables dentro de un sp es de la siguiente forma.

DECLARE var1 INT DEFAULT 0; #variables enteras
DECLARE var2 VARCHAR(15); #variables varchar tambien le podemos decir strings


La asignacion se realiza de esta manera:

SET vat1 = "hola";


Tambien existe otra forma de aisgnarles valores que se ve mas adelante.

Paso 4: (opcional)
Podemos tener un ciclo dentro del sp de la siguiente forma.

WHILE v1 <= 10 DO
SET v1 = v1 +1;
END WHILE;


Llenar variables con resultados de un select

SELECT campo INTO variable FROM tabla LIMIT 1;


Para llenar las variables de este tipo el resultado del select solo tienes que regresar un registro, de lo contrario tendriamos un error, podemos llenar varias variables dentro del mismo select

SELECT campo1,campo2,campo3 INTO variable1,variable2,variable3 FROM tabla LIMIT 1;


Nuestro codigo hasta el paso 4 se veria asi:

DROP PROCEDURE IF EXISTS mysp;

DELIMITER //
  CREATE PROCEDURE mysp ()

   BEGIN
    DECLARE var1 INT DEFAULT 0;
    DECLARE var2 VARCHAR(15);

    WHILE var1 <= 10 DO

     SELECT campo INTO var2 FROM tabla LIMIT 1;
     SET var1 = var1 + 1; #var1 +=

    END WHILE;

   END

//
DELIMITER ;


para llamar al procedure se utiliza:

call mysp();


Eso es todo para un ejemplo sencillo !!!!