lunes, 16 de junio de 2008

Etica Hacker

Introducción a PostgreSQL - Instalación e inicialización

En este artículo vamos a dar una introducción a la base de datos PostgreSQL, tambien veremos como instalarla e inicializarla para empezar a utilizarla.

Introducción

PostgreSQL es una base de datos relacional, distribuida bajo licencia BSD y con su código fuente disponible libremente. Es el motor de bases de datos de código abierto más potente del momento y en sus últimas versiones empieza a no tener que envidiarle nada a otras bases de datos comerciales.

Sus características técnicas la hacen una de las bases de datos más potentes y robustas del mercado. Su desarrollo comenzo hace más de 15 años, y durante este tiempo, estabilidad, potencia, robustez, facilidad de administración e implementación de estándares han sido las características que más se han tenido en cuenta durante su desarrollo. En los últimos años se han concentrado mucho en la velocidad de proceso y en características demandadas en el mundo empresarial.

La última serie de producción es la 8.2, siendo la última versión disponible en el momento de escribir este artículo la 8.2.4. PostgreSQL se puede ejecutar en la gran mayoria de sistemas operativos existentes en la actualidad, entre ellos Linux y UNIX en todas sus variantes (AIX, BSD, HP-UX, SGI IRIX, Mac OS X, Solaris, Tru64) y Windows. Las características más importantes y soportadas son:

-Es una base de datos 100% ACID
-Llaves ajenas (foreign keys)
-Joins
-Vistas (views)
-Disparadores (triggers)
-Reglas (Rules)
-Funciones/procedimientos almacenados (stored procedures) en numerosos lenguajes de programacion, entre otros PL/pgSQL (similar al PL/SQL de oracle)
-Numerosos tipos de datos, posibilidades de definir nuevos tipos
-Soporta el almacenamiento de objetos binarios grandes (gráficos, videos, sonido, ...)
-Herencia de tablas (Inheritance)
-PITR - point in time recovery
-Tablespaces
-Replicación asincrona
-Nested transactions (savepoints)
-Two-phase commit
-Copias de seguridad en caliente (Online/hot backups)
-Unicode
-Juegos de caracteres internacionales
-Multi-Version Concurrency Control (MVCC)
-Acceso encriptado via SSL
-SQL92/SQL99
-APIs para programar en C/C++, Java, .Net, Perl, Python, Ruby, Tcl, ODBC, PHP y muchos otros lenguajes.
-Completa documentacion

Otra caracteristica muy a tener en cuenta es lo bien que PostgreSQL funciona con grandes cantidades de datos y una alta concurrencia, con muchos usuarios accediendo a la vez el sistema. En un futuro escribiremos un artículo sobre esto.

Algunos de los limites físicos de PostgreSQL son:

Limite Valor
--------------------------------------------------------------------
Maximo tamaño base de dato Ilimitado (Depende de tu sistema de almacenamiento)
Maximo tamaño de tabla 32 TB
Maximo tamaño de fila 1.6 TB
Maximo tamaño de campo 1 GB
Maximo numero de filas por tabla Ilimitado
Maximo numero de columnas por tabla 250 - 1600 (dependiendo del tipo)
Maximo numero de indices por tabla Ilimitado
--------------------------------------------------------------------

Podriamos seguir escribiendo sobre muchas más características, pero en este artículo no tienen cabida. Podeis pasaros por la pagina web del proyecto, Postgresql.org para profundizar en el tema ó estar atentos a una serie de artículos sobre PostgreSQL que iremos publicando en el futuro .

A continución pasaremos a describir como podemos instalar e inicizalizar PosgreSQL.

Instalación
PostgreSQL está disponible en cualquiera de las principales distribuciones de Linux. Existen paquetes RPM og DEB, que se distribuyen con estas distribuciones y que se pueden instalar de la manera por defecto típica en cada distribución.

Si quereis instalar PostgreSQL de esta manera, adelante, es totalmente valida. A mi particularmente, el motor de base de datos que utilizo me gusta compilarlo e instalarlo yo mismo desde las fuentes. De esta manera tengo control absoluto sobre la versión en uso (especialmente importante en sistemas en producción y bases de datos). El resto del artículo se basa en este tipo de instalación.

Requerimientos
Se necesitan una serie de programas para poder compilar e instalar PostgreSQL (o cualquier otro programa) desde las fuentes. La mayoria de lo que se necesita se suele instalar por defecto en la mayoria de las distribuciones si instalamos los paquetes relacionados con "Desarrollo y compiladores". Todos estos paquetes se pueden instalar de la manera estandard, rpm og deb en la distribucion de Linux que utiliceis, si por causalidad no los teneis instalados.

Necesitamos:

+GNU make (gmake)
+Un compilador ISO/ANSI C. GCC el compilador por defecto en Linux funciona perfectamente.
+tar, gzip o bzip2 para desempaquetar las fuentes.
+Biblioteca GNU Readline
+Biblioteca de compresión zlib
+Perl y python si quereis soportar PL/Perl y PL/Python

Compilación e instalación
Primero nos bajamos las fuentes de la versión que vayamos a instalar de Postgresql.org. En nuestro ejemplo la versión 8.2.4 desde el servidor espejo (mirror) de Noruega.

[user@servidor]# cd /tmp/
[user@servidor]# wget ftp://ftp.no.postgresql.org/pub/databases/postgresql/source/v8.2.4/postgresql-8.2.4.tar.bz2
--21:17:45-- ftp://ftp.no.postgresql.org/pub/databases/postgresql/source/v8.2.4/postgresql-8.2.4.tar.bz2
=> `postgresql-8.2.4.tar.bz2'
Resolving ftp.no.postgresql.org... 158.36.2.10
Connecting to ftp.no.postgresql.org158.36.2.10:21... connected.
Logging in as anonymous ... Logged in!
==> SYST ... done. ==> PWD ... done.
==> TYPE I ... done. ==> CWD /pub/databases/postgresql/source/v8.2.4 ... done.
==> PASV ... done. ==> RETR postgresql-8.2.4.tar.bz2 ... done.
Length: 12,527,803 (12M) (unauthoritative)
100%[===========================================================>] 12,527,803 692.34K/s ETA 00:00
21:18:02 (700.20 KB/s) - `postgresql-8.2.4.tar.bz2' saved [12527803]

A partir de ahora seguimos trabajamos como usuario root.:

[user@servidor]# su -
(o sudo -i si estamos en Ubuntu)

Desempaquetamos las fuentes:

[root@servidor]# cd /tmp
[root@servidor]# tar xjvf postgresql-8.2.4.tar.bz2
[root@servidor]# cd postgresql-8.2.4/

Ahora tenemos que configurar y compilar PostgreSQL. Existen muchos parametros que podemos utilizar para configurar las caracteristicas disponibles en el software PostgreSQL que vamos a compilar. Teneis una lista completa sobre estos parametros en la sección 14.5.Installation Procedure de la documentación oficial de PostgreSQL.

Para mis servidores en producción, yo suelo configurar PostgreSQL con estos parametros:

[root@servidor]# ./configure --prefix=/usr/local --enable-nls --with-perl --with-python --with-openssl --with-pam --with-ldap

Estos parametros necesitan que tengais instalado en vuestro sistema perl, python, openssl y ldap (estos paquetes se pueden instalar de la manera estandard, rpm og deb en la distribucion de Linux que utiliceis).

Para instalar en casa seguramente no necesiteis --with-pam --with-ldap, el resto es bueno tenerlo para tener posibilidad de conectar a vuestra base de datos encriptando el trafico de red, y tener posibilidad de utilizar PL/Perl y PL/Python para crear funciones. Mas información en PL/Perl - Perl Procedural Language y PL/Python - Python Procedural Language

Una vez que el proceso de configuración este terminado sin errores, podemos empezar a compilar las fuentes:

[root@servidor]# gmake

La compilación deberia de terminar sin errores si tenemos instalado todos los paquetes que necesitamos y dependiendo de los parametros de configuración que hayamos definido con ./configure.

Una vez que hayamos terminado de compilar las fuentes, pasamos a instalar todos los programas que forman PostgreSQL:

[root@servidor]# gmake install

Si todo ha salido bien, ahora tendremos todo lo necesario para usar PostgreSQL (servidor, clientes, herramientas, bibliotecas, etc) disponible en nuestro sistema. En nuestro ejemplo todo se habrá instalado bajo /usr/local (como definimos más arriba con --prefix=/usr/local)

Inicialización
Ahora tenemos que inicializar y configurar nuestra instalación de PostgreSQL antes de poder empezar a crear nuetra base de datos.

Lo primero que tenemos que hacer es crear un usuario en el sistema (postgres), que será el dueño en nuestro sistema de los ficheros generados por PostgreSQL, asi como el encargado de ejecutar el motor de base de datos (PostgreSQL se negará a arrancar si intentamos hacerlo como usuario root)

Podeis utilizar vuestro programa preferido para crear nuevos usuarios en vuestra distribución, o ejecutar el siguiente comando:

[root@servidor]# useradd --help
Usage: useradd ...
useradd - create a new user
-c comment Set the GECOS field for the new account
--show-defaults Print default values
--save-defaults Save modified default values
-D binddn Use dn "binddn" to bind to the LDAP directory
-d homedir Home directory for the new user
-e expire Date on which the new account will be disabled
-f inactive Days after a password expires until account is disabled
-G group,... List of supplementary groups
-g gid Name/number of the users primary group
-k skeldir Specify an alternative skel directory
-m Create home directory for the new user
-o Allow duplicate (non-unique) UID
-P path Search passwd, shadow and group file in "path"
-p password Encrypted password as returned by crypt(3)
-u uid Force the new userid to be the given number
-r, --system Create a system account
-s shell Name of the user's login shell
--service srv Add account to nameservice 'srv'
--help Give this help list
--usage Give a short usage message
-v, --version Print program version
Valid services for --service are: files, ldap
[root@servidor]# useradd -m postgres

Hemos creado nuestro usuario postgres sin clave de acceso. Esto significa que la unica manera de convertirse en este usuario es siendo root y utilizando el comando su - postgres.

A continuación nos conectamos como el usuario postgres e inicializamos nuestro "cluster postgresql".

[root@servidor] mkdir -p /var/pgsql/data
[root@servidor] chown postgres /var/pgsql/data
[root@servidor]# su - postgres
[postgres@servidor]# /usr/local/bin/initdb -E utf8 -U postgres -D /var/pgsql/data
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.
The database cluster will be initialized with locale en_US.UTF-8.
fixing permissions on existing directory /var/pgsql/data ... ok
creating subdirectories ... ok
selecting default max_connections ... 100
selecting default shared_buffers/max_fsm_pages ... 32MB/204800
creating configuration files ... ok
creating template1 database in /var/pgsql/data/base/1 ... ok
initializing pg_authid ... ok
initializing dependencies ... ok
creating system views ... ok
loading system objects' descriptions ... ok
creating conversions ... ok
setting privileges on built-in objects ... ok
creating information schema ... ok
vacuuming database template1 ... ok
copying template1 to template0 ... ok
copying template1 to postgres ... ok
WARNING: enabling "trust" authentication for local connections
You can change this by editing pg_hba.conf or using the -A option the
next time you run initdb.
Success. You can now start the database server using:
/usr/local/bin/postgres -D /var/pgsql/data
or
/usr/local/bin/pg_ctl -D /var/pgsql/data -l logfile start

Suponemos que vamos a tener todas nuetras bases de datos y ficheros relacionados con postgresql en el directorio /var/pgsql/data.

En sucesivos artículos, veremos como podemos configurar/organizar nuestros discos de una mejor manera para conseguir la máxima seguridad y velocidad cuando utilicemos PostgreSQL en sistemas de producción. Tambien, veremos como podemos configurar PostgreSQL para sacar el maximo provecho a esta magnifica base de datos.

En estos momentos podemos arrancar nuestra base de datos postgresql y empezar a utilizarla sin problemas.

[postgres@servidor]# /usr/local/bin/pg_ctl -D /var/pgsql/data -l /var/pgsql/data/postgresql.log start
server starting

Si queremos parar PostgreSQL podemos utilizar el siguiente comando:

[postgres@servidor]# /usr/local/bin/pg_ctl -D /var/pgsql/data stop -m fast
waiting for server to shut down.... done
server stopped

Podemos empezar a utilizar la base de datos con el potentisimo cliente por linea de comandos que se instala por defecto, su nombre /usr/local/bin/psql:

[postgres@servidor]# /usr/local/bin/psql
Welcome to psql 8.2.4, the PostgreSQL interactive terminal.
Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit
postgres=#

Para conseguir una lista de los principales comandos que podeis utilizar en psql para que podais empezar a disfrutar de PostgreSQL, ejecutar el comando \?:

postgres=# \?

Aqui teneis algunos ejemplos de como utilizar este cliente :

postgres=# \l
List of databases
Name Owner Encoding
-----------+----------+----------
postgres postgres UTF8
template0 postgres UTF8
template1 postgres UTF8
(3 rows)
postgres=# CREATE DATABASE test001;
CREATE DATABASE
postgres=# \l
List of databases
Name Owner Encoding
-----------+----------+----------
postgres postgres UTF8
template0 postgres UTF8
template1 postgres UTF8
test001 postgres UTF8
(4 rows)
postgres=# \c test001
You are now connected to database "test001".
test001=# CREATE TABLE testing(
id INTEGER NOT NULL,
name TEXT NOT NULL,
PRIMARY KEY (id));
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "testing_pkey" for table "testing"
CREATE TABLE
test001=# \d
List of relations
Schema Name Type Owner
--------+---------+-------+----------
public testing table postgres
(1 row)
test001=# \q
[postgres@servidor]#

Esto es todo por esta vez. Mucha mas información en los proximos articulos de esta serie.

Fuentes: postgresql.org / wikipedia.

Introducción a PostgreSQL - Configuración

En este segundo artículo de la serie vamos a hablar de como configurar PostgreSQL para sacarle el mayor provecho a esta base de datos en su version 8.2.x.
Como enseñamos en nuestro anterior artículo, PostgreSQL se puede empezar a utilizar sin necesidad de configurar, nada mas terminar de instalarlo y despues de inicializar nuestro "cluster". Pero si vamos a utilizar PostgreSQL para algo importante y con cierto volumen de datos y usuarios es imprescindible que lo configuremos para dicho trabajo.
No es la primera vez que algun asuario protesta o esta super preocupado de lo mal y lo lento que funciona su cluster de base de datos PostgreSQL en un servidor ultimo modelo con muchisima memoria. Normalmente el problema es que PostgreSQL no ha sido configurado para trabajar con el volumen de datos y usuarios con el que lo estamos usando. No es una gran ayuda tener un servidor con varios GBytes de memoria RAM si le hemos dicho a PostgreSQL, por ejemplo, que no utilice más de 32MBytes.
Tambien tenemos que decir que cualquier base de datos que se este usando activamente, no solo PostgreSQL, es un elemento dinamico y vivo en el que estamos cambiando los datos constantemente y donde el tamaño de los datos almacenados suele ir creciendo con el tiempo. Esto significa que una configuracion que funcione bien con ciertos valores hoy, puede que no funcione tan bien despues de un año de uso y que necesite ajustarse para que funcione optimalmente.

Configuración

El comportamiento de PostgreSQL en nuestro sistema se puede controlar con tres ficheros de configuración que se encuentran en el directorio de datos donde inicializamos nuestro cluster PostgreSQL (En nuestro caso /var/pgsql/data). Estos tres ficheros son:
* pg_hba.conf: Este fichero se utiliza para definir los diferentes tipos de accesos que un usuario tiene en el cluster.
* pg_ident.conf: Este fichero se utiliza para definir la información necesaria en el caso que utilicemos un acceso del tipo ident en pg_hba.conf .
* postgresql.conf: En este fichero podemos cambiar todos los parametros de configuracion que afectan al funcionamiento y al comportamiento de PostgreSQL en nuestra maquina.

Pasamos a continuación a explicar los cambios mas importantes que podemos hacer en algunos de estos ficheros.

pg_hba.conf

Este fichero se utiliza para definir como, donde y desde que sitio un usuario puede utilizar nuestro cluster PostgreSQL. Todas las lineas que empiezen con el caracter # se interpretan como comentarios. El resto debe de tener el siguiente formato:

[Tipo de conexion][database][usuario][IP][Netmask][Tipo de autentificacion][opciones]

Dependiendo del tipo de conexion y del tipo de autentificacion, [IP],[Netmask] y [opciones] pueden ser opcionales. Vamos a explicar un poco como definir las reglas de acceso. El tipo de conexion puede tener los siguientes valores, local, host, hostssl y hostnossl. El tipo de metodo puede tener los siguientes valores, trust, reject, md5, crypt, password, krb5, ident, pam o ldap

Una serie de ejemplos nos ayudaran a comprender mejor como podemos configurar diferentes accesos al cluster PostgreSQL.

Ejemplo 1 .- Acceso por tcp/ip (red) a la base de datos test001, como usuario test desde el ordenador con IP 10.0.0.100, y metodo de autentificacion md5:

host test001 test 10.0.0.100 255.255.255.255 md5

Esta misma entrada se podria escribir tambien con la mascara de red en notacion CIDR:

host test001 test 10.0.0.100/32 md5

Ejemplo 2 .- Acceso por tcp/ip (red) a la base de datos test001, como usuario test desde todos los ordenadores de la red 10.0.0.0, con mascara de red 255.255.255.0 (254 ordenadores en total) y metodo de autentificacion md5:

host test001 test 10.0.0.0 255.255.255.0 md5

Esta misma entrada se podria escribir tambien con la mascara de red en notacion CIDR:

host test001 test 10.0.0.0/24 md5

Ejemplo 3 .- Acceso por tcp/ip (red), encriptado, a todas las bases de datos de nuestro cluster, como usuario test desde el ordenador con IP 10.0.0.100, y el ordenador 10.1.1.100 y metodo de autentificacion md5 (necesitamos dos entradas en nuestro fichero pg_hba.conf:

hostssl all test 10.0.0.100 255.255.255.255 md5
hostssl all test 10.1.1.100 255.255.255.255 md5

Ejemplo 4.- Denegar el acceso a todos las bases de datos de nuestro cluster al usuario test, desde todos los ordenadores de la red 10.0.0.0/24 y dar accesso al resto del mundo con el metodo md5:

host all test 10.0.0.0/24 reject
host all all 0.0.0.0/0 md5

Asi podriamos seguir jugando con todas las posibilidades que nos brinda este fichero de configuracion. Por supuesto que las bases de datos y usuarios usados en este fichero tienen que existir en nuestro cluster para que todo funcione y algunos de los parametros solo se pueden usar si hemos compilado con las opciones pertinentes en el proceso de instalacion (por ejemplo, hostssl, pam, krb5)

Para poder en produccion los cambios en este fichero tendremos que decirle a PostgreSQL que vuelva a leerlo. Basta con un simple 'reload' (/usr/local/bin/pg_ctl -D /var/pgsql/data reload) desde la linea de comandos o con la funcion pg_reload_conf() como usuario postgres desde psql, el cliente PostgreSQL.

[postgres@servidor]# /usr/local/bin/psql
Welcome to psql 8.2.4, the PostgreSQL interactive terminal.
Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit
postgres=# SELECT pg_reload_conf();
pg_reload_conf
----------------
t
(1 row)
postgres=#

Para una documentacion detallada sobre el fichero pg_hba.con, pasaros por la seccion Chapter 20. Client Authentication de la documentacion oficial de PostgreSQL.

postgresql.conf

Los cambios que realicemos en este fichero afectaran a todas las bases de datos que tengamos definidas en nuestro cluster PostgreSQL. La mayoria de los cambios se pueden poner en produccion con un simple 'reload' (/usr/local/bin/pg_ctl -D /var/pgsql/data reload), otros cambios necesitan que arranquemos de nuevo nuestro cluster (/usr/local/bin/pg_ctl -D /var/pgsql/data restart).

Mas informacion sobre todos los parametros que podemos cambiar en este fichero, que afectan y como se pueden poner en produccion se puede encontrar en la seccion 17. Server Configuration de la documentacion oficial de PostgreSQL.

A continuacion vamos a ver los parametros mas importantes que deberiamos cambiar si empezamos a usar PostgreSQL para un uso serio y si queremos sacarle el maximo partido a nuestra maquina. Existen muchos mas parametros que se pueden y con el tiempo se deberan de ajustar, aqui nos vamos a centrar en los mas importantes y los cuales deberiamos cambiar antes de empezar a utilizar PostgreSQL de una manera seria.

max_connections: Numero maximo de clientes conectados a la vez a nuestras bases de datos. Deberiamos de incrementar este valor en proporcion al numero de clientes concurrentes en nuestro cluster PostgreSQL. Un buen valor para empezar es el 100:

max_connections = 100

shared_buffers: Este parametro es importantisimo y define el tamaño del buffer de memoria utilizado por PostgreSQL. No por aumentar este valor mucho tendremos mejor respuesta. En un servidor dedicado podemos empezar con un 25% del total de nuestra memoria. Nunca mas de 1/3 (33%) del total. Por ejemplo, en un servidor con 4Gbytes de memoria, podemos usar 1024MB como valor inicial.

shared_buffers = 1024MB

work_mem: Usada en operaciones que contengan ORDER BY, DISTINCT, joins, .... En un servidor dedicado podemos usar un 2-4% del total de nuestra memoria si tenemos solamente unas pocas sesiones (clientes) grandes. Como valor inicial podemos usar 8 Mbytes.

work_mem = 8MB

maintenance_work_mem: Usada en operaciones del tipo VACUUM, ANALYZE, CREATE INDEX, ALTER TABLE, ADD FOREIGN KEY. Su valor dependera mucho del tamaño de nuestras bases de datos. Por ejemplo, en un servidor con 4Gbytes de memoria, podemos usar 256MB como valor inicial.

maintenance_work_mem = 256MB

effective_cache_size: Parametro usado por el 'query planner' de nuestro motor de bases de datos para optimizar la lectura de datos. En un servidor dedicado podemos empezar con un 50% del total de nuestra memoria. Como maximo unos 2/3 (66%) del total. Por ejemplo, en un servidor con 4Gbytes de memoria, podemos usar 2048MB como valor inicial.

effective_cache_size = 2048MB

checkpoint_segments: Este parametro es muy importante en bases de datos con numerosas operaciones de escritura (insert,update,delete). Para empezar podemos empezar con un valor de 64. En grandes databases con muchos Gbytes de datos escritos podemos aumentar este valor hasta 128-256.

checkpoint_segments = 64

Es muy importante tener en cuenta que al aumentar los valores por defecto de muchos de estos parametros, tendremos que aumentar los valores por defecto de algunos parametros del kernel de nuestro sistema. Informacion detallada de como hacer esto se encuentra en la seccion 16.4. Managing Kernel Resources de la documentacion oficial de PostgreSQL.

En fin, esto es solo un aperitivo de lo que podemos hacer. Con la practica y la experiencia podremos y tendremos que ajustar otros muchos parametros. Pero esto sera materia de un proximo articulo.

Fuentes: postgresql.org.

Emulador de shell unix (linux) online

Estrictamente, no es exactamente una shell de unix ni de linux. Pero podemos hacer muchísimas cosas propias de una linea de comandos de sistemas unix. Hay un muchos comandos que se pueden utilizar: ps, vi grep,sed,cat,tail,ls. Cuando solicita login y password, pulsar intro. Curioso

Ingresa al emulador Aqui

Aplicaciones Inalámbricas un Modelo Nuevo

Muchos sitios en Internet ya se encuentran habilitados para enviar información hacia aparatos inalámbricos, una descripción de esta modalidad se describe en Aplicaciones Inalámbricas (WAP-WML) , sin embargo, la principal carencia de esta Tecnología (WAP-WML) reside en la Interfase Gráfica capaz de observarse en los dispositivos inalámbricos (Teléfonos Celulares, PDA's, etc).

Ante este problema han surgido nuevos mecanismos para enviar contenido hacia medios inalámbricos.

J2ME ("Java 2 Micro Edition")
J2ME viene a formar el ultimo "Suite" desarrollado por Sun Microsystems , al lado del J2SE ("Java 2 Standard Edition") y J2EE ("Java 2 Enterprise Edition") el cual esta enfocado hacia aplicaciones inalámbricas.

Varias características diferencian a J2ME de otras tecnologías inalámbricas :

La primera y más obvia, es la integración transparente con otras Tecnologías Java .
Otra capacidad reside en la posibilidad de ejecutar aplicaciones altamente dinámicas en el dispositivo inalámbrico, en este sentido, es posible ejecutar/guardar programas altamente gráficos/vídeos a través de una conexión en Internet, caso no posible con WAP/WML .
Finalmente la Interfase Gráfica en general se ve ampliamente superada a diferencia de aplicaciones WAP/WML.



BREW ("Binary Runtime Enviorment for Wireless")
BREW ("Binary Runtime Environment for Wireless") es una creación de la empresa Qualcomm que intenta ofrecer la misma solución al mercado inalámbrico, el generar aplicaciones dinámicas altamente gráficas en el Cliente (Teléfono Celular), esto a diferencia de WAP-WML donde un Servidor de Páginas genera un contenido muy restringido para el Cliente (Teléfono Celular).

A diferencia de J2ME("Java 2 Micro Edition"), BREW ("Binary Runtime Environment for Wireless") es una Tecnología basada en los lenguajes C y C++, esto ofrece una alternativa para aquellos que no están especializados en el mundo Java .

Proveedores de Servicio y Aparatos Inalámbricos.
Para que cualquier Tecnología sea exitosa se requiere del apoyo de diversos proveedores, J2ME así como BREW no son la excepción.

Primeramente es necesario que el dispositivo inalámbrico sea capaz de ejecutar este tipo de Aplicaciones así como el proveedor de servicios, esto trae consigo otras consideraciones ya que es posible que el usuario final ni siquiera sea capaz de observar la aplicación correctamente.

Actualmente una de las empresas lideres en ofrecer servicios en J2ME es Nextel , mientras que para BREW es su mismo creador Qualcomm una empresa ya especializada en este ramo.

Comandos Basicos Unix/Linux







Compilar Asterisk Centos Linux