Archivo de la categoría: desarrollo

Una mirada a SQL (IV)

Para esta miradita repasaremos lo que tenemos. Ya hemos puesto en marcha los servidores SQL y http con php, hemos creado una base de datos, tablar e insertado algunos datos y contreñas seguras. Ahora continuemos con un paso muy sencillo. Rellenemos las bases de datos con mas datos asi que

INSERT INTO base_de_datos.usuarios (id, nick, pass) VALUES
 (NULL, 'pedro', MD5('algunpa$$')),
 (NULL, 'jorge', PASSWORD('0trop4$$'))
 (NULL, 'alguntroll', SHA1('123456'))

Bien como vimos en la leccion pasada podemos usar informacion especifica usando la forma padre.hijo con padre = base de datos e hijo=tabla en este caso. Por lo siguiente dentro de la seccion de valores pasamos los pares de valores (cosas entre parentesis) para cada registe que deseamos hacer, siendo en este caso 3 usuarios. Sigue leyendo

Una mirada a SQL (III)

En la parte anterior creamos nustra base de datos y su estructura basica asi que es momento de usarla. Primero debemos crear un usuario y ese primer usuario como es logico pensar, debe ser el administrador. Para crear datos debemos de usar la sentencia INSERT INTO ….. VALUES …. pasando como parametros la tabla, los campos y los valores asi que a por ello.

INSERT INTO usuarios (nick,pass) VALUES ("admin","root")

Esto no es nada seguro asi que usemos una pequeña funcion para la contraseña que sigue. Esta funcion es nada menos que la famosisima md5(). Asi nuestras proximas contraseñas seran un hash “seguro”, aunque algunos pueden preferir usar cosas como sha-1 y sha-512. Sigue leyendo

Una mirada a SQL (II)

Bien para empezar a trabajar con SQL pedire unos cuantos requisitos. El primero sera la base de datos MySql, un servidor http como Apache con soporte para PHP y el sostema de gestion de base de datos PHPMyAdmin. Estos requisitos se pueden cumplir facilmente en la mayoria de las distribuciones de Linux y en Windows con los paquetes LAMP, uno que recomiendo es el appServer. Una vez instalado y configura entramos a la interfaz de PhpMyAdmin y observamos una parte de la ventana en el lado izquierdo como si fuera un menu y en la derecha la informacion del servidor SQL y muchos datos adicionales que sirven para la administracion. Por el momento nos fijaremos en la parte que dice “Bases de datos” casi al final de la lista.

Al entrar en esta parte podremos ver una lista con las bases de datos que existen y la codificacion de caracteres, este ultimo dato por el momento no nos debe preocupar. En la parte superior vemos la pestaña SQL y la seleccionamos, lo que nos muestra un cuadro de texto para ingresar nuestra consulta y un boton de confirmar para ejecutarla. Sigue leyendo

Una mirada a SQL (I)

SQL es el lenguaje de programacion usado para obtener informacion de las bases de datos relacionales. Al darse a conocer el modelo relacional de bases de datos, aparecio un lenguaje llamado SEQUEL y este continuo su desarrollo hasta convertirse en lo que hoy conocemos como SQL.

Este lenguaje es un lenguaje declarativo de acceso a bases de datos, por lo que no ejecuta codigo. En lugar de eso genera consultas a los registros y devuelve la informacion o realiza las acciones especificadas sin tener una estructura de flujo como cualquier otro lenguaje de programacion. Sigue leyendo

Programacion orientada a objetos

¿Que es un objeto? Una silla, una mesa, una computadora, una casa. Todos los elementos tangentes en el mundo son objetos pero ademas podemos pensar en los numeros como objetos, las ideas, los modelos y cualquier abstraccion mental que se conciba. Para efectos practicos diremos que un objeto es un ente, ya sea fisico o mental, que puede tener propiedades (forma, tamaño, cantidad), estado (vivo, cerrado, marcado) y acciones (correr, pintar, sumar).

Al referirnos a la programacion basada en objetos nos referimos a una forma de programar. No es un lenguaje, no es una caracteristica, no es una plataforma. Es una filosofia propiamente y nos indica la manera en que podemos abstraer nuestras ideas para programar. La programacion es un modelo abstracto del mundo en el que se trate de resolver un problema especifico, el cual puede ser un problema fisico o abstracto. Sigue leyendo

Quien: el proyecto para desconocer gente.

Bien acabo de encontrar un sitio en Internet: Omegle. Se trata de un sitio donde conoces gente y se presentan como stranger (extraños) y empiezan a platicar, la perfecta forma de conocer gente desconocida. Debido a que no puedo montar un servidor completo tratare de implementar con AJAX y php un sistema en español con algunas cosas que he visto podrian servir.

  • Voz en lugar de video
  • La posibilidad de hablar con 2 extraños a lavez
  • Incluir al espia en la conversacion si lo desean los participantes
  • Mejorar el sistema de extraños, muchos se repiten entre si

Bien el codigo estara en github a traves de https://github.com/fulapol/quien y tendra lugar en algun lugar que luego anunciare.

Licencias de software

Generalmente conocemos una definicion de software libre muy general: Los terminos de la licencia GPL, pero realmente que son las licencias  que nos ofrecen.

El objetivo de las licencias es ofrecer los términos bajo los cuales se libera el software; estas licencias se caracterizan por permitir utilizar, estudiar, modificar o redistribuir el software – sea modificado o no.

Licencia GPL

La licencia GPL es una licencia creada por la Free Software Foundation. Su objetivo es evitar que el software libre pierda las libertades de los usuario. Al ser un documento legal, se le llama acuerdo o contrato de licencia.

A finales del 2005 se anuncio el trabajo de la version 3 y a principios de 2006 se presento el primer draft. Su publicacion tardo varios meses y se publico finalmente a mediados del 2007 contemplando los siguientes puntos:

  • Las diversas formas en que alguna persona podría quitar libertades a los usuarios.
  • Prohibir el uso de software libre en sistemas que utilizan la llamada Gestión de derechos digitales o DRM, sistema criticado por la comunidad del software libre.
  • Resolver ambigüedades y aumentar la compatibilidad de GPLv3 con otras licencias.
  • Facilitar su adaptación a otros países.
  • Incluir cláusulas que defiendan a la comunidad de software libre del uso indebido de las patentes de software.
  • Mostrar usuarios registrados.

Los programas que usan esta licencia pueden combinarse o re-licenciarse bajo otra licencia que sea compatible. La lista de compatibilidades esta disponible en http://www.gnu.org/licenses/license-list.es.html

LGPL

Esta licencia llamada Lesser General Public License es una licencia de la FSF y la diferencia entre esta y la GPL es que permite enlazarse con una aplicacion no libre. Su uso se recomienda al crear una codigo que provea funciones implementadas en sistemas cerrados, pues no se daria ninguna ventaja al software privativo y no habria problemas si terminan en un sistema propietario.

Licencia Apache

La licencia Apache fue creada por la Apache Software Foundation y no es una licencia copyleft. Con esta licencia se requiere el uso de un disclaimer y un aviso de copyright. Al igual que otras licencias libres le permite al usuario distribuir, modificar y usarlo con cualquier proposito sin embargo las modificaciones no necesitan usar la misma licencia por lo que pueden terminar siendo de codigo cerrado.

Licencia MIT/X11

Esta licencia fue usada para el proyecto X Window System del MIT en los 80′s. Dado que no incluye copyright, su modificacion es permitida. Esta licencia permite los derechos de uso, copiar, modificar, enlazar, publicar, sublicenciar o vender copias del software y estos derechos pasan a la persona que obtiene el software.

Licencia BSD

Es parecida a la licencia MIT y es usada en los sistemas BSD. Existen 3 versiones:

  • BSD original o antigua BSD.- Contiene 4 clausulas. Pide mantener la licencia en redistribuciones de codigo, una mencion del desarrollo generado por la universidad de Berkeley y no permite usar el nombre de la escuela y de los contribuidores para promocionar los productos derivados.
  • BSD Revisada, modificada o BSD-3.- Esta version elimina la clausula que obligaba a otorgarle credito a la universidad.
  • BSD simplificada o licencia FreeBSD.- Elimina la clausula donde se prohibe el uso de los nombres de os contribuidores agregando un aviso que menciona la neutralidad de sus comentarios y puntos de vista sobre el desarrollo del proyecto FreeBSD

Licencia MPL

La licencia publica de Mozilla (MPL) fue creada por Netscape y luego paso a ser de la Fundacion Mozilla. Esta licencia hace posible el uso de codigo en sistemas cerrados con el problema de que se necesita una notificacion especifica para el uso de codigo con diferente licencia por lo que el usar cualquier cosa licencia incluso bajo la GPL podria llegar a ser en algunos casos ilegal.

Licencia PHP

La licencia PHP permite la redistribución del contenido licenciado en forma de código fuente o binaria siempre y cuando se cumplan los siguientes requisitos:

  1. Se incluya la declaración de los derechos de autor de la licencia PHP;
  2. La palabra “PHP” no se use en el título de las obras derivadas;
  3. Se incluya el siguiente anuncio bajo cualquier forma en la que se redistribuya el código:
This product includes PHP software, freely available from <http://www.php.net/software/>

Contribuir en el software libre

Bien puesto que hace un tiempo di una conferencia y no he publicado las diapositivas, decidi mejorar la presentacion y aqui les dejo mi presentacion de contribuir en el software libre en un nuevo formato muy interesante.

Contribuir en el software libre on Prezi

Bien debido a la pesima personalizacion de este blog, solo puedo usar la URL que arriba esta para que vean la presentacion asi que, espero la disfruten.

SIstema de control de versiones GIT (II)

Usando GIT

Bien, empezemos el verdadero tema, como usar GIT. Lo primero que haremos sera tener en cuenta que esto sirve para desarrollar proyectos asi que hagamos un proyecto de codigo simple, una aplicacion que funcione como sumadora sencilla. Para esto entramos a la parte del disco duro donde trabajemos y desde consola escribirmos

$mkdir sumadora
$cd sumadora
$git init
Initialized empty Git repository in /archivos/proyectos/sumadora/.git/

Con esto ya tenemos nuestro proyecto, aunque vacio por el momento. Lo importante es tener ganas de seguir programando asi que ahora hagamos un poco de trabajo. Escribiremos nuestro programa basico que por el momento solo servira para el ejemplo. Sigue leyendo

SIstema de control de versiones GIT (I)

Descubriendo GIT

Git es un sistema de control de versiones diseñado inicialmente para el desarrollo de Linux por el mismo linus tolvards. Un sistema de control de versiones es una herramienta muy util para los programadores, ya sea en proyectos pequeños o en proyectos enormes, como el kernel Linux. Este nos permite guardar el estado de nuestro proyecto en determinada version y si llegase a ocurrir algun accidente, solo tendriamos que deshacer los cambios, o en trabajos en equipo, observar los cambios que se hizo de version a version para observar que ha pasado con el codigo y decidir si se debe o no agregar a nuestro proyecto.

Git es un programa escrito en C pensado en ser un sistema distribuido, lo que quiere decir que no existe un repositorio central como tal. Trabaja de una manera muy sencilla. Dentro de nuestra computadora creamos un repositorio git, este guardara todo lo que hagamos, luego podemos obtener o compartir el contenido con el repositorio de otra persona, creando asi una red de desarrollo, por ultimo podemos crear un repositorio en un servidor publico que utilizaremos como repositorio principal y al cual todos los demas tendran que mandar su avance. De esta manera el desarrollo puede hacerse desde un punto remoto y compartido entre algunos nodos para termninar en un repositorio central que sera la fuente publica del codigo. Sigue leyendo

LFS: Una experiencia desde 0 ( ó desde 3)

Durante el mes de febrero me la pase creando un sistema LFS, el tercero en mi cuenta. Un sistema LFS no es otra cosa que un sistema linux totalmente creado desde las fuentes, esto es, bajando los paquetes source.tar.{gz,bz2}, descomprimiendo y aplicando los comandos de compilacion (make, configure, autoconf, automake, etc). Para crear un sistema asi se toman 3 grandes pasos:

  1. Crear un entorno de desarrollo, llamado en el libro tool-chain
  2. Desarrollar el sistema
  3. Extender el sistema

El paso 3 es algo que esta por demas explicar ya que eso depende de cada usuario y los fines que vaya a recibir el sistema.

El paso 1 es quiza el mas interesante en lo que es el desarrollo de nuestro sistema ya que aqui necesitamos compilar todas las herramientas necesarias para compilar, valgase la redundancia, y nos damos cuenta donde va cada pieza y como se deben de unir. Sigue leyendo

Reduciendo linux (ii)

Ya tenemos una pequeña version de Linux, ahora viene lo dificil, hacer una pequeña version del sistema base. Para esto usaremos una herramienta muy poderosa que fue pensada para eso: Busy box.

Busy box fue desarrollado para usarse en los discos de arranque de Debian, ya que este debia contener el sistema y proveer todas las funciones necesarias en un espacio muy reducido. Desde ese momento hasta nuestros dias Busy box ha sido la solucion para todos los sistemas que necesitan ahorrar espacio sin perder la funcionalidad, algunas cosas que podemos usar de esta aplicacion estan en la siguiente lista:
Sigue leyendo

Reduciendo linux (i)

El primer paso para reducir el espacio utilizado por un sistema es encontrar software que nos ayude a ahorrar espacio dando codigo pequeno y que sea funcional. El dia de hoy presentare 3 proyectos que nos ayudaran a esto:
Sigue leyendo

Capturas de texto en consola

Para mis textos usare la salida de la consola para mostrar como funcionan lo scripts e incluso una sesion entera de comandos y entonces la pregunta es como hacerlo para que se guarde en un archivo y evitarme el tener que copiar y pegar en la consola. Para esto se usara el comando tee que guarda la salida en un archivo y en la salida, esto es, que cada vez que algo se imprime en la pantalla se guarda al mismo tiempo en un archivo especificado.

Usaremos el comando “accion | tee archivo.log” para que nuestro comando se ejecute y entonces tee lo imprima en la pantalla y en el archivo.log al mismo tiempo, dando lugar a un fichero que contiene lo mismo que la pantalla.
Sigue leyendo

Usando gdb, el debugger de linux (i)

GDB (Gnu DeBugger) es una herramienta que nos sirve para saber que es lo que pasa con un programa en determinados momentos de su ejecucion.

Usaremos un sistema de ejemplo muy basico. Pondremos un archivo llamado suma.c

#include <stdio.h>

int main() {
int num1=0;
int num2=0;
int num3;
num1=25;
num2=12;
num3=num1+num2;
printf("%i",num3);

return 0;
}

y compilaremos con informacion de depuracion, la cual para estos momentos nos ayudara muchisimo pero despues tendremos que aprender a trabajar sin esta informacion

gcc -ggdb  suma.c -o suma

y lo pasamos al debuguer con la linea

gdb -q suma

Entraremos al prompt de gdb, el cual nos informa que se cargo correctamente el programa. Para verlo funcionar simplemente necesitamos poner el comando run el cual ejecuta nuestra aplicacion dentro de gdb. Por ser un programa muy sencillo este solo muestra un valor (37) y termina.

Sigue leyendo