Bienvenidos a CódiGeek

Donde el Desarrollo y las buenas practicas son nuestra razón de ser.

Todo sobre Desarrollo

Tips, consejos, experiencias y más.

El futuro esta en tus manos

Aprende tecnicas, trucos para sacarle provecho a tu trabajo.

Pages

jueves, 9 de julio de 2015

Tutorial básico de GIT en español


Hoy recordando algunas funcionalidades de git encontré un tutorial en Español con lo minimo que todos debemos saber para trabajar con repositorios y mejorar así nuestra productividad, ya sea que estemos trabajando en grupo o individualmente. El video explica acciones básicas como crea un repositorio, inicializar, subir cambios, actualizar, manejar ramas o etiquetar versiones de nuestro proyecto.




Espero les sea de utilidad.

Video tomado de: Makigas

viernes, 1 de mayo de 2015

Estimación del crecimiento de las tablas de una base de datos

Buenas, reciban ante todo un cordial saludo, en esta nueva oportunidad daré a conocer cómo hacer un análisis de estimación sobre el crecimiento de las tablas de una base de datos (BD), ¿con qué fin hacer estos cálculos? Esto debe realizarse cuando deseamos conocer cuánto espacio en disco necesitaremos al momento de crear nuestra BD e implementarla en un manejador y/o motor de base de datos posiblemente para ser usada en el campo laboral propiamente, ya sea porque se dispone de pocos recursos de hardware  y se desea hacer una asignación optima de recursos (mantenimiento y gestión de una BD, realizado por un DBA), o simplemente para tener una idea de cuánto pueden crecer cada una de las tablas.

Para este artículo se empleará el modelo de BD realizado en un post anterior llamado: “SQL Developer Data Modeler y un ejemplo de uso” el cual muestra como descargar, instalar y utilizar una herramienta grafica para representar un modelo relacional en caso de que no se posea ya una herramienta o un modelo relacional digitalizado. Más detalles pueden contemplarse en el siguiente link:


Antes de comenzar deben tenerse presente ciertos aspectos:

a) El tipo de dato de las columnas: Esto es de vital importancia como se había mencionado en el link del artículo anterior, ya que cada tipo de dato tiene un tamaño diferente.

b) Estimación aproximada de registros ingresados: Al definirse el tipo de dato, debe tenerse presente una estimación básica (si el modelo será implementado) de cuantos registros serán ingresados en un periodo de tiempo;  este puede ser de una semana, un mes, o un año dependiendo de la frecuencia con la que se realizara el mantenimiento a la base de datos, para este ejemplo se asume que el mantenimiento se efectuara 1 vez al año en circunstancias normales.

c) La cantidad de columnas que posea la tabla: Todas las columnas deben ser tomadas en cuenta al momento de hacer el análisis de crecimiento.

Dicho esto podemos proseguir con el análisis de las tablas.

1) para la tabla Almacen:


Almacen

Columna
Tipo
Tamaño en bytes
Id_almacen
NUMBER
3
Ubicacion
VARCHAR2
50
Metros_cuadrados
FLOAT
6
Tamaño total en bytes: 59

Como puede apreciarse en la tabla anterior, se identifica cada columna (las palabras que deberían tener acentos no los poseen ya que en el modelo y/o script de la BD no se asignan nombres con acentos), su tipo de dato, y el tamaño de dicha columna, luego se realiza una suma del tamaño de todas las columnas y se obtiene su total en bytes.

Estimando que por mucho al año se lleguen a ingresar o adquirir un máximo de 15 almacenes al año.
15 * 59 = 885 bytes / 1024 bytes = 0.864 = 1 M.

En esta operación se toman los 15 posibles almacenes que se adquirirán en un año, se multiplican por el total en bytes, luego este valor es llevado a megabytes (por comodidad) lo cual se consigue dividiendo entre 1024 bytes.

Ahora se realiza el mismo procedimiento para la próxima tabla, en este caso Area.

2) para la tabla Area:

Area
Columna
Tipo
Tamaño en bytes
Id_area
NUMBER
2
Descripcion
VARCHAR2
50
Metros_cuadrados
FLOAT
2
Tamaño total en bytes: 54

De igual manera se representan cada una de las columnas, su tipo y tamaño en bytes, y se suman todos los valores.

Suponiendo que el local tenga un total de áreas o estimando un incremento de áreas máximo total al año de 50.

Nota: Todos estos son estimados a la realidad, para tener una exactitud en valores, se pueden realizar mediciones en sistemas ya implementados, o conseguirlos consultando propiamente a los usuarios de dicho sistema.

50 * 54 = 2700 bytes / 1024 = 2.637 = 3 M.

Se toma el total máximo de áreas estimadas y se multiplica por el tamaño total en bytes de la tabla, nuevamente se realiza la conversión a megabytes.

Este proceso se repite para cada una de las tablas faltantes del modelo; ahora para finalizar se explicara una forma de estimar los datos de 2 de las tablas más complejas de predecir valores en el presente modelo, estas tabla son Cliente; ya que es un modelo para un mercado, y en nuestras reglas del mercado propiamente se registra propiamente 1 sola vez al cliente en la tabla cliente.

3) para la tabla Cliente:

Cliente
Columna
Tipo
Tamaño en bytes
Cedula_cliente
VARCHAR2
10
Nombre
VARCHAR2
30
Apellido
VARCHAR2
30
Telefono
VARCHAR2
20
Direccion
VARCHAR2
60
Tamaño total en bytes: 150

La estimación para  esta tabla se hará considerando lo siguiente:

a) Alrededor de 1 persona cada 3 minutos.
b) Con 2 cajas atendiendo en promedio.

Esto nos daría 40 personas en 1 hora, durante 10 horas de trabajo al día en promedio.

Lo que traería como resultado 400 personas al día * 358 (365 – 7)  días en promedio (estos 7 días son en promedio 7 días al año no laborales).

Se estima un total de 143200 personas hipotéticas al año y suponiendo que al menos todas las personas vuelven a comprar en el establecimiento al menos 15 veces al año.

Para poder finalmente tener una idea de en realidad cuantos clientes diferentes se registran únicamente en la tabla, se divide el resultado anteriormente calculado y se divide entre 15.

143200 / 15 = 9546.6687 = 9547 personas hipotéticas diferentes en el año.

Nota: Si no se tiene esta restricción, la división anterior no se efectúa.

Ahora con este valor, se procede a calcular su crecimiento.
9547 * 140 = 1336580 bytes / 1024 = 1305.25 = 1.5 M 

Esto ha sido todo por ahora finalmente, espero haya podido ser de utilidad, si el tema fue de su interés, próximamente escribiré un artículo para la gestión y mantenimiento de una BD, donde para la estimación realizada, podrá observarse su importancia propiamente.

miércoles, 29 de abril de 2015

SQL Developer Data Modeler, y ejemplo de su uso

¿Qué es SQL Developer Data Modeler?

Un saludo, en esta ocasión les platicare sobre Oracle SQL Developer Data Modeler, como su nombre lo indica es una herramienta desarrollada y patentada por Oracle cuyo fin es permitirle a los usuarios poder crear de manera gráfica un modelo relacional (Entre otras virtudes) de una base de datos que deseemos o requiramos por algún motivo en específico, permitiendo así mayor velocidad de comprensión.

El primer paso que debemos realizar lógicamente es descargarlo, la versión utilizada en este post, se puede conseguir en el siguiente link:

O también la versión más actualizada desde la propia página de Oracle gratuitamente en el siguiente link.

http://www.oracle.com/technetwork/developer-tools/datamodeler/overview/index.html

Nota: en el caso de descargarla de la página de Oracle, deben realizar los siguientes pasos: 

1) Dar click en el link suministrado, y seleccionar la pestaña Download como se indica en la imagen.



2) Seguidamente deben aceptarse los términos y condiciones de la licencia gratuita.



3) Luego seleccionar el sistema operativo y si es de 32 o 64 bits en el caso de Windows.



4) Luego los redireccionara a una nueva página donde deben ingresar con una cuenta de Oracle, en caso de no poseerla deben crearla gratuitamente y posteriormente se empezará a descargar el archivo.

Una vez finalizada la descarga del archivo es un .rar, lo copian y pegan en la ubicación de su ordenador que deseen, posteriormente lo descomprimen y ya está listo para usarse, al hacer click en el archivo “datamodeler.exe” (aplicación) se abrirá la pantalla principal de la aplicación.

Y debería ser igual a la siguiente imagen:



Posteriormente hacemos click derecho en la opción de la lista lateral izquierda “Modelos Relacionales” y luego en la opción “Nuevo Modelo Relacional”.



Ahora se puede observar que se creó correctamente al desglosar el modelo relacional que acabamos de crear. Ya podemos empezar a crear nuestras tablas, para ejemplo de este post yo creare un modelo para una base de datos de un mercado sencillo.



Para crear una tabla basta con hacer click en el botón “Nueva tabla” como se indica a continuación.



Luego dibujamos un cuadrado en el área de trabajo de la aplicación y se nos abrirá la siguiente ventana donde indicaremos nombre, columnas y demás características que necesitemos personalizar para esta tabla.



Lo primero que deberíamos hacer antes de ingresar las columnas como se nos abre por defecto en la aplicación, es hacer click en la lista lateral izquierda la opción superior “General”, y aquí asignarle el nombre que tendrá la tabla, la abreviatura de nombre que deseemos agregarle opcionalmente.

En mi caso le asignare de nombre Almacen, será una tabla sencilla con pocos campos.

Nota: al asignar el nombre y la abreviatura hacer click en aplicar para que el nombre completo cambie, todavía no aceptar o se cerrara dicha ventana; en dicho caso hacemos click derecho sobre la tabla, en la opción propiedades y se nos abrirá nuevamente la ventana.



Ahora el siguiente paso de Gran Importancia es la creación de las columnas que tendrá dicha tabla, donde indicaremos su nombre, si será o no clave primaria si será campo único, y de qué Tipo será dicha columna, si será una columna obligatoria de llenar o si puede ser nula. Al hacerle click en el botón verde “+” podremos agregar una nueva columna.



Posteriormente podremos asignarle el nombre que deseemos, en mi caso será la clave primera que identificara cada registro que se ingrese a dicha tabla



Luego vamos a indicar que Tipo va a ser la columna: 
1) Haremos click en la opción “Lógica”.
2) Seleccionamos en la lista la Opción “NUMERIC”. 
3) Indicamos la precisión, para este caso es 3 ya que esto permitirá ingresar una cantidad de 3 dígitos de almacenes, ejemplo 500 almacenes lo cual es una enorme cantidad pero por motivos académicos y suponiendo que no adquiera una cantidad superior de almacenes de 999 al menos en 1 año, servirá para el ejemplo.
4) Indicaremos que la columna será clave primaria.



Ahora se puede repetir el proceso para cada columna que se desee agregar a la tabla o cualquier tabla indicando que tipo de dato, su longitud y si será o no nula (esto es con la opción desmarcable “Obligatoria”).

De necesitarse una tabla relacional, bastaría con que en cada padre seleccionar la opción “Nueva clave ajena”, seleccionar la tabla padre y luego la tabla hija.



Luego se nos abrirá una ventana en la que podemos asignarle el nombre que deseemos a la relación y nombre de la clave ajena, yo personalmente las dejo como están por defecto ya que así no se corre el riesgo de accidentalmente asignarle algún nombre repetido a alguna relación y se ocasione ambigüedad, lo único que personalizo es en la opción “Suprimir regla” en el menú selecciono “CASCADE”.



Se repite el proceso con el resto de los padres y posteriormente seleccionamos la tabla hija con click derecho “Propiedades” y seleccionamos las 2 claves heredadas y marcamos la opción “Clave primaria”.



Ya con este podemos crear cualquier tipo de tabla y configurar sus columnas, a nuestra conveniencia, en mi caso al finalizar el modelo del mercado, se obtiene:





Ya para finalizar el Data Modeler nos brinda la opción para poder generar el script de nuestro modelo, de manera que podemos ejecutarlo ya en cualquier motor de bases de datos de Oracle, eso lo podemos hacer de la siguiente forma; Hacemos click en “Archivo > Exportar > Archivo DDL” seleccionamos la ruta donde deseamos que se genere el script y ya está.

Luego seleccionamos el modelo del cual queremos generar el script en el caso de tener varios abiertos al mismo tiempo, y se nos abrirá una ventana, seleccionaremos la versión de Oracle a la que deseamos generarle el script, y hacemos click en generar.



Ahora desmarcamos las opciones no desplegables (No se están usando) de la lista y podemos observar en el menú inferior cada una de las cosas que se pueden generar o no generar en el script seleccionamos aceptar y ya tendremos generado el script.



Nota: Para efectos de un futuro Post “Creación y configuración de una base de datos a través de línea de comandos” yo recomendaría, generar un script solo con la creación de las tablas sin ningún constraint (claves primarias, ni claves ajenas), un segundo script con todos los constraints, otro con los drop tables, otro con los drop constraints, ya que esto permitirá al DBA (Se explicara posteriormente) mayor facilidad al momento de hacer mantenimiento a una base de datos.

¿Porque no seleccionamos la opción guardar? Porque esta opción nos permite es guardar nuestro modelo relacional en una ubicación que deseemos en nuestro ordenador, también debemos hacerlo si deseamos hacer modificaciones futuras a dicho modelo.

Para poder continuar en un proyecto ya creado anteriormente, seria de la siguiente forma “Archivo > Abrir” Seleccionamos la ubicación donde se encuentra el modelo y ya está.



También podemos importar un script de algún modelo relacional que tengamos, esto se hace a través de las opciones “Archivo > Importar > Archivo DLL” lo ubicamos en nuestro ordenador y fin.



Espero haya podido ser de utilidad este pequeño artículo, cualquier duda, opinión u observaciones será bien recibida y aclarada.

viernes, 6 de marzo de 2015

"Write in C"


Siguiendo con la cultura geek, aquí les dejo un video que comparte José Román Hernández Martín (@Manz en twitter) y que me hizo reir un buen rato.

domingo, 1 de marzo de 2015

Code Pad, una red social para programadores


Hace algún tiempo escuché de Code Pad, sin embargo hasta el día de ayer me llamo la curiosidad debido a un artículo en hipertextual y decidí hacer una cuenta. Aunque aún es registro no es inmediato (necesitas pedir invitación) la verdad me parece una propuesta muy interesante, tanto para guardar fragmentos de código que nos interesa como para compartirlos.

El servicio te da la opción de guardar de forma Pública, privada o pública mediante enlace (parte privado) y compartirlas o simplemente como dije anteriormente guardarlas para ti. Tu código podrá ser visto, calificado, comentado o descargado por lo que me parece una excelente alternativa para conocer gente con tus mismos intereses y hacer cartera o presencia a corto o mediano plazo en el mundo laboral. En pocas palabras, lo mismo que podrías hacer con Linkedin pero orientado a informáticos. 

Me permito la molestia de dejarles el enlace de mi cuenta en la cual estaré publicando algunos fragmentos de código en los próximos días: http://codepad.co/Humberts

viernes, 27 de febrero de 2015

5 trucos de Google que tal vez no conoces



Hoy recibí por las redes sociales un video sobre trucos de Google que no conoces, por más que he buscado el video en Youtube no encontré el mismo, sin embargo encontré 5 trucos aún vigentes en la actualidad y me pareció muy geek, espero les guste :D



domingo, 22 de febrero de 2015

Buenas practicas en JavaScript

Javascript es un lenguaje de programación el cual y a pesar de sus años gana cada vez más adictos en el mundo. Javascript o JS por sus siglas es un lenguaje de programación interpretado, dialecto del estándar ECMAScript, durante gran parte de su existencia se le ha conocido por su uso en los navegadores para ayudar a la interacción del usuario con las página web (del lado del cliente) sin embargo y desde hace ya varios años se ha convertido en un potente motor (del lado del servidor) gracias Node.js que han hecho un excelente trabajo.

Hoy con motivo de mi tesis me he concentrado en el desarrollo en Javascript y he estado descubriendo un lenguaje bastante potente, con una buena comunidad y con una excelente guía o API del lenguaje como la que ofrece Mozilla. Buscando mejorar mi trabajo en Javascript y como he contado en entradas anteriores es muy importante mantener las buenas prácticas en el trabajo que realizamos día a día con el fin de hacer más legible nuestro código ante terceros y ante nosotros mismos. Es por esto que hoy comparto un video de buenas prácticas en JS que conseguí en Internet, además de un enlace bastante completo de que está bien hacer y que no en Javascript.


Video de DesarrolloWeb.com

Buenas practicas (Español)

Buenas practicas (Ingles)

Documentación Mozilla