sábado, 14 de septiembre de 2013

AVANCE: Diseño de Aplicación Escritorio

El día de hoy decidimos realizar en papel el diseño de la aplicación en escritorio, a continuación mostramos una foto de lo realizado. En resumen se determinan las diferentes ventanas y funciones que tendrá la aplicación de escritorio y de igual manera se establecen los Store Procedure principales que tenemos que crear para que la aplicación pueda correr de forma optima, estos son: 
  • autentificacion
  • crearDocumento
  • crearAdministrador
  • modificarDocumento
  • eliminarDocumento
  • buscarDocumento
  • buscarVenta
  • buscarHistorialVenta
  • buscarHistorialDocumento



Cristian Araya
David Vargas
Horas: 4 horas



AVANCE: Diagrama Bases de Datos V3.0

Se realizan cambios al diagrama antes mostrado y con este se comienza a trabajar en las diversas aplicaciones
Cristian Araya
David Vargas
Horas Dedicadas: 4 horas

viernes, 13 de septiembre de 2013

EXPERIENCIA: PHP y HTML

Conceptos PHP y HTML


Los días 9, 10, 11 y 12 de septiembre se dedicaron horas al proyecto en la sección de la aplicación de escritorio, por ejemplo se aprendieron conceptos como:

a) Elementos de HTML y la unión con el código de PHP
b) Como conectar desde PHP a la base de datos
c) Dar un mejor formato a los elementos de HTML con codigo CSS
d) Pasar variables de un documento.php a otro
e) en general el manejo de la logica de HTML, PHP y la base de datos en SQL Server 2012

<HTML LANG="ES">

<HEAD>
   <TITLE>Holis Mundo</TITLE>
</HEAD>

<BODY>
<form>
   <label for="matricula">Matricula:</label>
   <input type="text" id="matricula" name="matricula" value=""/> <br/>
   <label for="nombre">Nombre:</label>
   <input type="text" id="nombre" name="nombre" value=""/> <br/>
   <label for="materno">Materno:</label>
   <input type="text" id="materno" name="materno" value=""/>
</form>

<H1>Prueba de Hola Mundoo</H1>

<!-- Caja de texto -->
<input type="text" size="15" maxlength="30" value="Nombre" name="nombre">

<!-- Codigo PHP -->
<?php
echo "Codigo php.<br />";
// Connect to SQL Server and check for errors
//$serverName = "CHARLIE-PC\SQLEXPRESS"; //serverName\instanceName

// Puesto que no se han especificado UID ni PWD en el array  $connectionInfo,
// La conexión se intentará utilizando la autenticación Windows.
/*$connectionInfo = array( "Database"=>"BD-Proyecto1");
$conn = sqlsrv_connect( $serverName, $connectionInfo);

// EJECUCION DE LA CONSULTA
$tsql_callSP = "{call eliminaCliente( ?)}";    /* Nombre del procedure, cada ? es un parametro*/
$Id = 3;
$vacationHrs = 1;
$params = array( /* Array para agregar los parametros, si el procedure devuelve algo es un PARAM_OUT*/
                 array($Id, SQLSRV_PARAM_IN)
               );

/* Execute the query. */
$stmt3 = sqlsrv_query( $conn, $tsql_callSP, $params);   /*Ejecuta la vara*/
if( $stmt3 === false )
{
     echo "Error in executing statement 3.\n";
     die( print_r( sqlsrv_errors(), true));         /* Imprime el tipo de error */
}

/* Display the value of the output parameter $vacationHrs. */
sqlsrv_next_result($stmt3);                             /*Esto es por si el procedure devuelve algo se trabaja de esta manera*/
echo "Remaining vacation hours: ".$vacationHrs;

/*Free the statement and connection resources. */
sqlsrv_free_stmt( $stmt3);

sqlsrv_close( $conn);*/
?>

</BODY>
</HTML>

Paginas Consultadas:
http://answers.yahoo.com/question/index?qid=20110128160534AAEuOca
http://www.w3schools.com/html/
http://technet.microsoft.com/en-us/library/cc644932(v=sql.105).aspx (Muy importante)

David Vargas
Cristian Araya

Horas invertidas: 15

miércoles, 4 de septiembre de 2013

Error Conexion Apache

ERROR XAMPP


Durante dos días tuve en mi computadora el problema de conectar a Apache desde el programa que Cristian propuso que utilizáramos para hacer la aplicación web en PHP con el servidor Apache. Durante el intento de componerlo, Cristian me compartió archivos, librerías, etc algunos problemas se resolvian pero otros persistían.
El error era el siguiente:
Por lo tanto seguimos en otras tareas para no atrasarnos mas, volviendo al problema hoy desintalé el Xampp y descargue otra versión que según leí era mas compatible con Windows 7, que es el que tengo instalado en mi computadora, pero el problema siguió presentandose.

Solución: encontré el siguiente link: http://tutorialesyopiniones.blogspot.com/2013/01/corregir-error-al-iniciar-xampp-apache.html , siguiendo los pasos y modificando los archivos que ahí dice se logro la conexion con Apache!

Cristian Araya
David Vargas

Horas trabajadas: 8

AVANCE: Borrador Diagrama de Bases de Datos

El día 4 de septiembre decidimos pasar el diagrama de bases de datos a la herramienta de SQL Server.
En este diagrama pudimos establecer todos los tipos que vamos a usar en las diferentes tablas, de igual manera establecimos los primary key y las relaciones de foreign key. A continuación mostramos el diagrama realizado.



Se tienen varias dudas con el diagrama realizado, por lo cual se procede a enviar un correo al profesor antes de seguir con el siguiente paso, la creación de store procedure y la aplicación de escritorio.

Cristian Araya
David Vargas
Horas Dedicadas: 5horas

EXPERIENCIA: Uso de conceptos en SQL Server

A continuación presentamos un pequeño tutorial de las herramientas mas básicas y necesarias a la hora de utilizar una base de datos en SQL Server

Realizar atributos que sea de un valor auto incrementable
Especificación de Identidad
Se active la opción y se agrega que se vaya sumando 1 cada vez, útil para las primary key



Realizar atributos definidos
Especificación de columna calculada
Se activa la opción y se escribe la fórmula que queremos para el atributo


Definiendo Primary Key
Click derecho sobre cualquier atributo, se selecciona Primary Key


Relaciones de Foreign Key
Para estas relaciones, se utilizó la herramienta de diagrama que ofrece SQL Server ya que lo realiza de una forma muy sencilla, lo cual es arrastrando el atributo que tiene la FK a la tabla que queremos relacionar, lo soltamos en la tabla seleccionada y aparecerá el cuadro de configuración.

Cuando se este arrastrando van a aparecer lineas cortadas

Se configura la relación que establece la Foreign Key


Store Procedure
Para los store procedure utilizamos como una plantilla para definirlos todos, ya que esto mejora la lectura y el entendimiento de los mismo. Esto debido a las varias maneras de definir los procedimientos que existen, en esta plantilla se utilizan el begin y el end como paréntesis en otros lenguajes, y esto claramente ayuda a entender mejor cada procedimiento.

create procedure nombre
@parametros
as
begin
Instrucciones

end

Cristian Araya
David Vargas
Horas Dedicadas: 3horas

lunes, 2 de septiembre de 2013

Problemas

A la hora de conectar mediante el programa XAMPP, apache con php tuve muchas dificultades al parecer por la version de XAMPP que tenia descargada, desde el dia anterior pase intentando corregir los problemas con Cristian, a él si le funcionaba perfectamente pero a mi me estaba dando muchos problemas. Tenia errores, warnings de librerias .dll en especial la php_mssql.dll
Error de libreria
Pero antes daba el siguiente error: 
El cual se solucionó copiando los archivos de php que mi compañero Cristian tenia en su computadora que si le servian.

Pasamos a instalar la siguiente version de XAMPP del link que Cristian me pasó:

Horas dedicadas: 6

Cristian Araya
David Vargas

EXPERIENCIA: Configurando Microsoft SQL Server para trabajar con PHP, y algunos ejemplos

 Cuando ya tengamos nuestro servidor Apache con el PHP instalado, o bien el servidor XAMPP, se requiere instalar y configurar las librerías para poderlo conectar con MS SQL. En nuestro caso estamos haciendo uso de las siguientes versiones:

            - Apache 2.4 
            - PHP Version 5.4.7
            - Microsoft SQL Server 2012

Se debe ingresar a la página:
http://msdn.microsoft.com/en-us/sqlserver/ff657782.aspx
Y se debe de descargar el archivo Microsoft Drivers 3.0 for PHP for SQL Server




Y se instalan en el directorio ext de php, en nuestro caso es la dirección:

             c:/xampp/php/ext

Luego de esto hay que ir al archivo PHP.ini, el cual se ubica en la carpera principal de PHP en nuestro caso
             
             c:/xampp/php

En este archivo hay que encontrar el apartado de Dynamic Extensions, el cual se encuentra alrededor de la línea 960. En este apartado hay que agregar las siguientes líneas:


extension=php_pdo_sqlsrv_54_ts.dll

extension=php_sqlsrv_54_ts.dll

Y se debe activar, esto se refiere a quitarle el punto y coma a la siguiente línea


extension=php_mssql.dll

En la siguiente imagen se puede ver las tres líneas que debemos modificar



Se guardan los cambios y se reinicia el servidor Apache, y de esta manera tenemos instaladas las librerías para poder conectar PHP con Microsoft SQL Server.

Ahora veremos unos breves ejemplos de la conexión 

Para realizar la conexión seguimos el siguiente código que se puede encontrar en la documentación oficial de la librería:

<?php
$serverName = "Servidor";   // Nombre del servidor
$connectionInfo = array( "Database"=>"Nombre de la Base de Datos");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
// Puesto que no se han especificado UID ni PWD en el array  $connectionInfo,
// La conexión se intentará utilizando la autenticación Windows. Se puede insertar el nombre y la contraseña, añadiéndolos separados de una coma, para ingresar con el otro modo de autentificación

if( $conn ) {
     echo "Conexión establecida.<br />";
}else{
     echo "Conexión no se pudo establecer.<br />";
     die( print_r( sqlsrv_errors(), true));
}


?>

El siguiente ejemplo que veremos es con la llamada de un store procedure:

$tsql_callSP = "{call eliminarPersona( ?)}";    // Nombre del procedure, cada ? es un                                                                                                     parámetro
$Id = 3;
$vacationHrs = 1;

/* Array para agregar los parámetros, si el procedure devuelve algo es un PARAM_OUT
$params = array(
                 array($Id, SQLSRV_PARAM_IN)
               );

$stmt3 = sqlsrv_query( $conn, $tsql_callSP, $params);   /*Ejecuta el procedimiento*/
if( $stmt3 === false )
{
     echo "Error in executing statement 3.\n";
     die( print_r( sqlsrv_errors(), true));         /* Imprime el tipo de error */
}

sqlsrv_next_result($stmt3);                             /*Esto es por si el procedure retorna algo se trabaja de esta manera*/
echo "Remaining vacation hours: ".$vacationHrs;

sqlsrv_free_stmt( $stmt3); // Se liberan recursos


sqlsrv_close( $conn);   // Se cierra la conexión 


Con estos dos pequeños ejemplos, sirven como base para realizar cualquier conexión y hacer la llamada a un store procedure, para mas información se puede acceder a la dirección:
http://technet.microsoft.com/en-us/library/cc644932(v=sql.105).aspx donde se encontrara también como realizar la llamada de una instruccion.

Cristian Araya
David Vargas

Horas Trabajadas : 4horas

EXPERIENCIA: Servidor Apache

A la hora de instalar el servidor Apache e integrarlo con PHP, tuvimos varios errores, como por el ejemplo el acceso denegado a la hora de cambiar la configuración del php.ini y del conf del Apache, intentamos solucionarlo de todas las maneras que indicaban en la web, sin embargo no pudimos lograrlo, para no atrasarnos más con el proyecto luego de llevar un bueno rato tratándolo de instalar correctamente, decidimos utilizar XAMPP, esto es un servidor independiente el cual contiene configuradas e instaladas herramientas como el Apache, PHP, MYSQL entre otras. Con esta herramienta pudimos obtener en menos de 5 minutos la debida configuración del servidor Apache con PHP. Un punto muy importante que tenemos que mencionar es que la configuración por defecto que posee el XAMPP tiene algunas deficiencias en cuanto a la seguridad, que poco a poco en cada versión la han ido mejorando, y de igual manera realizando unos ajustes se ha utilizado como servidor de sitios web. Si al final tenemos tiempo, intentaremos de nuevo instalar el servidor apache e integrarle PHP.

Para realizar la descarga de este servidor accedimos al siguiente enlace:

Luego de instalarlo hay que configurar e instalar las librerías para poder conectar PHP con MSSQL, esto lo hablaremos en la siguiente entrada, ya que se tenga el XAMPP o se haya instalado solamente el servidor Apache se debe de realizar de igual forma, por lo cual nos parece muy útil que haya un documento donde muestre la configuración de esta conexión y de igual forma que muestre unos ejemplos, asunto que costó mucho encontrar en la web y en libros, debido a que las herramientas que estamos usando son las más nuevas.



Cristian Araya
David Vargas

Horas dedicadas: 5horas

viernes, 30 de agosto de 2013

EXPERIENCIA: Visual Studio y SQL

Mensaje de Advertencia

Problema: Al instalar Microsoft Visual C# 2010 Express aparecio un mensaje que no se podia ejecutar ni este programa ni  SQL Server Managment Studio sin antes actualizar el Microsoft Visual Studio 2010 Service  Pack 1.

Solucion: Instalar el Microsoft Visual Studio 2010 Service Pack 1 de la pagina oficial
  Pagina Official SP1

Al terminar de instalarlo se reinicia la computadora y ya los dos programas corren sin problemas.

Horas invertidas: 3

Conceptos Aprendidos: C#

Using : Se usa para liberar obligatoriamente recursos de memoria al finalizar un bloque de código. Para el uso de bases de datos reemplaza el try catch.

Conceptos Aprendidos: Bases de Datos

Primary key: Define la clave principal de la tabla

Llave Foránea o externa:  Es una clave que se encuentra en una tabla para hacer referencia a otra tabla

Store procedure: Serie de secuencias almacenado en una base de datos  
Ventajas:
- Compilación : Una vez compilado, se sigue usando esa compilación, hasta ser modificado o haya una nueva conexión

- Automatización: Conjunto de instrucciones y ejecutarlas en orden

- Administración: Se pueden editar, eliminar fácilmente

- Seguridad:Cambios de código sin necesidad de afectar la aplicación, usuarios solo pueden usar funciones de acuerdo a sus privilegios

- Programibilidad
- Tráfico de una red: minimizar el tráfico en la red, ejecuta el nombre del store procedure y no una linea.
Para realizar un store procedure seguro, se recomienda validar los parámetros y realizar la operación en un try/catch.


Instrucción rollback : Revierte una transacción explícita o implícita hasta el inicio de la transacción o hasta un punto de retorno dentro de la transacción y de igual manera libera los recursos que mantiene la transacción. 


Instrucción commit: Hace que todas las modificaciones efectuadas sobre los datos desde el inicio de la transacción sean parte permanente de la base de datos, libera los recursos mantenidos por la transacción

ERROR: Problema Ingresando con Autenticación de SQL Server

El día 29 de Agosto obtengo el primero error en SQL, y tiene que ver a la hora de entrar al servidor con autenticación de SQL Server, esto quiere decir con usuario y contraseña, anteriormente entraba solo con la autenticación de Windows, esto debido a las grandes ventajas que tienen ambos métodos.
El error fue el siguiente:  


Por lo tanto se consulta en la documentación de SQLServer, y me doy cuenta que el error está en la configuración de cuando instale el SQL. Se trata de cambiar la configuración habilitando el inicio de sesión de los dos modos y habilitando el usuario por defecto que crea el servidor "sa". Pero de igual manera no me permitía ingresar al servidor con el usuario y la contraseña. Por tal razón se dialoga con una persona con experiencia, sobre el problema, y me menciona que error puede ser que realice una mala instalación, y que esto ocurre mucho por darle el famoso "siguiente y siguiente" en la instalación y no leer las diferentes configuraciones que ofrece SQLServer. Tomando ese consejo se procede a realizar un script que sirva como respaldo de la base de datos de prueba que hice para poder probar diferentes funciones básicas de SQLServer. Se desinstala por completo el programa, y se vuelve a instalar esta vez prestando atención a cada paso de la instalación y configurando de forma correcta cada opción.
De esta manera se corrige el problema que se tenia, y ahora se puede ingresar de las dos maneras. De esta experiencia aprendimos y aconsejamos la importancia que tiene la correcta instalación y configuración inicial de programas como SQLServer en los cuales es la parte fundamental para que el servidor tenga un buen funcionamiento.


AVANCE: Segunda Reunion

Después de estar una semana investigando un poco sobre las herramientas que vamos a utilizar y conceptos claves nos reunimos por segunda ocasión esta vez después de clases en la soda del TEC. Ya aquí sabemos mas a lo que vamos, y las diferentes herramientas que vamos a utilizar y tenemos un modelo base que realizo nuestro profesor en clase.

Decidimos leer la especificación nuevamente para ver si todo quedo claro y no nos quedo dudas en algunas partes, a partir de esto vimos que teníamos algunos problemas con el entendimiento de los diferentes scripts que se tenían que crear en la tarea, por lo tanto se procede a buscar información  de estos y a repasar el cuaderno con la materia que vimos en clases.

Para aprender conceptos claves David Vargas menciona la idea de hacer una especie de glosario o conceptos aprendidos en el Google Docs para luego crear en el blog un espacio para insertar todos estos conceptos, tales como la diferencia entre las llaves, las ventajas de usar una herramienta, etc

En cuanto el modelo borrador proporcionado por el profesor, se analiza cada tabla y cada atributo, propusimos unos ligeros cambios que tenemos que consultar con el profesor cuando lo hayamos trasladado a una herramienta visual.

Se concluye los diferentes temas que iremos investigando y probando con las diferentes herramientas para los días siguientes.

Horas Trabajadas: 3horas

Cristian Araya
David Vargas

domingo, 25 de agosto de 2013

AVANCE: Primera Reunión


El viernes 23 de Agosto vía Google Hangout procedemos a leer y a discutir la especificación de la tarea programada y asuntos administrativos.
De la cual sacamos las siguientes conclusiones:
1. Se crea y se configura el blog en blogger.com
2. Se usara el MS SQL 2012, esta desicion la tomamos ya que es la herramienta mas actualizada y posee mas funciones que se pueden aprovechar de gran manera
3. Como lenguaje de programación utilizaremos C# en Visual Studio 2012
4. Como lenguaje para la aplicación web utilizaremos PHP con su servidor Apache
5. Se procede a escribir un correo electrónico al profesor con las dos siguientes dudas que no se entendieron de una forma optima:
    5.1. El proceso del pago
    5.2  Datos de prueba

Días después obtuvimos la respuesta del profesor la cual se detalla a continuación

5.1.R.Se realiza una simulación  seria simplemente llamar un método que devuelve un número de autorización de pago realizado.
5.2.R. Los datos, se entregan en tablas Excel o una base de datos, y se tienen que migrar de esa base de datos a su propia base de datos. Y esto nos los hace llegar unos días antes de la entrega de la tarea.

6. Se crea un documento en Google Docs, para ir creando una especie de documentación,recordatorio y apuntes importantes que recolectemos los dos a la hora de investigar y realizar la tarea

7. Se concluye que vamos a proceder con la instalación del servidor, e ir investigando poco a poco cada concepto y herramienta que ocupemos.

Horas Trabajadas : 3 horas
Cristian Araya
David Vargas

viernes, 23 de agosto de 2013

Especificación de la Primera Tarea Programada

ITCR - Ing. en Computación - Bases de datos - Prof Franco Quiros - Marzo 2013
Primera Tarea Programada

1) Objetivos. Construir una aplicación web y otra de escritorio,  que se conectan a una base de datos para la realización de mantenimientos, consultas y transacciones.  Realizar una migración de datos, mediante un script. Escribir procedimientos almacenados para realizar operaciones de mantenimiento, consulta y transacciones. 

2) Requerimientos.

La creación de un sitio web para la venta de documentos, en pdf. El sitio debe permitir la consulta de documentos por tipo de documento (diccionarios, libros de texto, manuales de usuario, etc.), para esto se lista los tipos de documento y al dar “buscar”, aparece una lista con los títulos de los documentos del tipo buscado,  junto a cada título se muestra una descripción del documento, fecha de creación, fecha de última actualización y su precio. Si se da click sobre un título, el sitio responde con la visualización en pdf de un extracto del documento.

Si un título se selecciona para compra, se solicitan datos del comprador  (correo y nombre), datos para la compra (marca de la tarjeta que se selecciona de una lista, nombre en la tarjeta, número de tarjeta, fecha de expiración y código verificador), externamente se procesa el pago, tal que si es exitoso devuelve un código de aprobación, que es un entero positivo y si no, un código de error, que es un entero negativo. Si la compra es aprobada se envía una “llave aleatoria” al correo del cliente.

En el sitio hay una sección para bajar documentos comprados, en ella se ingresa la “llave aleatoria” enviada por correo, se valida que la llave exista, y si es así, se hace una “bajada” del documento a la estación del cliente, se pueden hacer un máximo de 4 bajadas

Por otro lado hay una aplicación de escritorio usada por el administrador (se verifica usuario y contraseña),  en la cual puede editar la información de los documentos (título, descripción, fecha de creación, fecha de última actualización, extracto o el documento en si), puede cambiar el estado del documento de activo a no-activo, puede agregar nuevos documentos.

Además puede consultar las ventas, ya sea de un documento o de todos, acumulado durante la presente semana,  el presente mes, el presente año o durante un rango de fechas. Se indica el nombre del cliente, su correo, fecha de compra y cantidad de bajadas,

Para cada documento puede consultar una historia de los cambios realizados mediante edición del administrador.

3) El profesor provee:

Datos de prueba en archivos tipo texto o en tablas no normalizadas.

4) Que se pide:

+ Script de creación de la BD y todos sus objetos

+ Script de llenado de datos básicos o catálogos
+ Script de migración de la base de datos con datos de prueba a la BD del proyecto.
+ El código de la aplicación por web
+ El código de la aplicación de escritorio para el administrador. 
+ Documentación, una bitácora escrita en un blog en el cual día a día, se indica la cantidad de horas trabajadas por el equipo de trabajo, se hace un relato de los avances,   acerca de los problemas encontrados, como fueron resueltos; dudas, divergencias de criterio,  forma en que trabajó el equipo de trabajo, problemas con la instalación del software, problemas de aprendizaje del framework,  investigaciones, pruebas de concepto, experiencias, moralejas, ayuda recibida, consejos a dar, buenas practicas descubiertas, etc.; que describa el proceso de solución de la tarea programada; una descripción sincera y detallada será bien evaluada.  Incluya referencia externas a recursos utilizados en internet para solventar dudas o resolver problemas, puede incluir los mensajes de error y como fueron resueltos. La ultima entrada del blog es un resumen que indique la cantidad de horas total de trabajo, por persona, así como un análisis de resultados de los que se está entregado. Debe ser exhaustivo.

5) Grupos de 2 personas. Motor de base de datos: MS SQL 2008 o 2012. Fecha de entrega por definir. Los accesos a la BD debe hacerse solo mediante Store Procedure.