Semana 2 Desarrollo de aplicaciones II

Esta semana fue de exposiciones, y aun cuando el cañón nos jugó algunas bromas, los equipos empezaron a presentar sus patrones de diseño vimos Composite, Adapter e Iterator.

Hay que recordar que se tienen que subir el código e información a la plataforma.

Por mi parte vimos de manera muy general el patrón MVC.

En lo general todos llevaron sus ejercicios e información como habíamos acordado.

En esta semana seguiremos con el ejercicio en puerta y veremos el manejo de archivos.

Atte.

Profesor Miguel Araujo

Semana 2 Desarrollo de aplicaciones Web

Teníamos pendiente un contenido de la primera unidad, lo referente a la seguridad de las aplicaciones web, por lo que estuvimos revisando un material que publicó la UNAM, muy breve pero muy concreto, aquí les comparto dicha información.

https://www.seguridad.unam.mx/historico/documento/index.html-id=17

El martes se inició con las exposiciones y pues como se enteraron el potencial y realidad de Node JS es muy espectacular y creo que como desarrolladores debemos echar un vistazo o inclusive aprender dicha tecnología.

Para empezar se rompe lo dicho durante años, que el lenguaje inventado por Netscape era solo para scripts del lado del cliente. Ahora con Node JS, Javascript es un lenguaje del lado del servidor y su uso se esta haciendo muy generalizado además que es utilizado y patrocinado por compañías lideres en las tecnologías de la información.

En su página nodejs.org define dicha tecnología como “Concebido como un entorno de ejecución de JavaScript orientado a eventos asíncronos, Node está diseñado para construir aplicaciones en red escalables.” , e inmediatamente explica la ventaja de NodeJS sobre otras tecnologías web “Por cada conexión el callback será ejecutado, sin embargo si no hay trabajo que hacer Node estará durmiendo. Esto contrasta con el modelo de concurrencia más común hoy en día, donde se usan hilos del Sistema Operativo. Las operaciones de redes basadas en hilos son relativamente ineficientes y son muy difíciles de usar. Además, los usuarios de Node están libres de preocupaciones sobre el bloqueo del proceso, ya que no existe. Casi ninguna función en Node realiza I/O directamente, así que el proceso nunca se bloquea. Debido a que no hay bloqueo es muy razonable desarrollar sistemas escalables en Node.

Read More

Hacer un hipervínculo para descargar un archivo empacado (zip)

En anteriores herramientas web estuvimos usando un hipervínculo de html para hacer descargas de archivos, nunca tuvimos problemas con archivos de texto tipo CSV.

Como mencionaba en un artículo pasado para evitar la descarga de tantos archivos usamos la librería que tiene .NET para la compresión de archivos, y seguimos el mismo proceso, poner una etiqueta HTML del tipo Ancla (A), sin embargo el archivo no descargó.

Acudimos a San Google que nos dio una solución https://geeks.ms/sergiotarrillo/2007/03/16/forzar-la-descarga-de-archivos-en-nuestros-sitios-web/

Sin embargo al implementarla el archivo se nombraba con el mismo nombre que la página de descarga.

Fue entonces que recibimos la asesoría de la ingeniero Ana Yessica Espinosa que nos sugirió el uso de los controles asp.net llamado HyperLink – Santo remedio.

Aquí la presentación de ambas soluciones.

La del Blog…

Read More

Usando ZipFile en un sitio ASP.NET

En la oficina estamos haciendo una aplicación que nos permita hacer scripts en cascada basadas en cierto patrón para ahorro de tiempo de los analistas. Sin embargo para que sea más eficaz pensamos en una aplicación web para que sea accesible a todos desde la intranet.

Con esto surgió una complicación que sería engorroso y atenta contra la usabilidad del sitio el hecho de bajar “n” archivos de un mismo tipo. Por lo que se nos ocurrió empacar dichos scripts.

Mi colega se encarga de mandar dichos scripts en el servidor, y yo me encargué de la investigación de como empacar los archivos.

La información me la proporciono el sitio de Microsoft.

https://docs.microsoft.com/en-us/dotnet/api/system.io.compression.zipfile?view=netframework-4.7.2

Read More

Semana 1 de Desarrollo de Aplicaciones Web

Ahora en Ingeniería (que para este cuatrimestre ha cambiado a solo Ingeniería en Tecnologías de la Información) volvemos a dar la materia de sobre desarrollo web solo que ahora a los 2 grupos A y B.

Buscando sacar provecho de los muchachos que tienen experiencia haremos exposiciones sobre la vasta tecnología web que hay, y yo inicié con ASP.NET, así como la introducción de la unidad 1 donde se hizo un breve repaso de HTML, CSS3 y JavaScript con la presentación 3 de la unidad 1.

Les comentaba a los chicos de las cosas nuevas que vamos aprendiendo cuando se tiene la dicha de ser profesor, una de ellas fue la similitud de los nombres de JavaScript y Java, y como muchos saben pues fue una técnica de mercadeo, aprovechar la fama de Java.

Hemos iniciado nuestro primer mini-proyecto que tendrá acceso a la base de datos usando php, el viernes iniciamos con el prototipo que es una forma que captura correo electrónico, nombre, peso y altura con este vamos a obtener el índice de masa muscular donde usamos los atributos required para evitar que el dato vaya vacío, el tipo email (que solo cuida que tenga una arroba) y el atributo readonly que son elementos de solo lectura.

IMC = peso / (estatura^2)

Vamos despegando y la próxima semana empezaremos con las exposiciones, y la aplicación del examen de la unidad 1.

Seguimos leyéndonos.

Atte.

Profesor Miguel Araujo.

Semana 1 de desarrollo de aplicaciones II

Hemos vuelto a lo que tanto nos apasiona, el desarrollo de aplicaciones, en esta ocasión con  mis alumnos ya conocidos de anteriores cuatrimestres, 7D de TSU.

Les comenté que explicaría sobre desarrollo de software orientado a objetos y desarrollamos el ejemplo de figuras geométricas de acuerdo al siguiente diagrama de clases.

Por mayoría se optó por usar Visual Studio .NET

No hubo mucho sobresalto solo que su profesor llegó muy barrido, situación que Bryan se encargaba de recordarme 🙂

Read More

SQLite usado en aplicaciones WEB VS2017 C#

Tenía pendiente este artículo ya que cuando lo enfrenté la primera vez me costó mucho trabajo el resolverlo. Como muchos hoy en día la web se ha convertido en la gran biblioteca virtual y a ella recurrí para tales efectos, y lo encontré en un post en inglés.

Se bien que SQLite es una base de datos para uso local por lo que a continuación detallo es para fines experimentales y cultura general.

Platicando con mis alumnos de Ingeniería sobre todo, me encuentro que en las empresas donde laboran – afortunadamente el estado tiene varias empresa de TIC’s – se usan mucho los llamados ORM.

Una descripción de lo que es el Object-Relational Mapping nos dice “Para facilitar los programas de aplicación que utilizan bases de datos relacionales, se han desarrollado herramientas de mapeo de objeto-relacional. En general, las bases de datos relacionales almacenan datos en tablas teniendo renglones (registros) y columnas (campos). Las tablas generalmente están interrelacionadas, y con ésto, hay una estructura lógica impuesta en la base de datos. La estructura lógica es conocida como un esquema. Las herramientas de mapeo de objeto-relacional leen una base de datos y automáticamente generan código fuente. Este código que se genera contiene un número de clases cuya interrelación refleja la estructura lógica o esquema de la base de datos.Una clase, por ejemplo en Java, es una estructura de datos que contiene tanto miembros de datos que almacenan datos y miembros de función (o métodos) que actuan sobre los datos. El código fuente contiene una clase para cada tabla en la base de datos y cada clase contiene un miembro de datos para cada columna en la tabla correspondiente. De forma adicional, las clases contienen miembros de función que son usados tanto para leer como escribir los miembros de datos y eventualmente actualizar la base de datos.

Usando una herramienta de mapeo de objeto-relacional, un programador puede escribir de manera fácil aplicaciones de base de datos. Después de que la herramienta de mapeo genera el código, el programador escribe el código para interactuar solo con las clases del código generado y no con la base de datos, con esto se oculta la complejidad de interactuar con la base de datos.” [1]

Read More

Sub-consultas, clausulas MIN y TOP

Mi primer contacto con un servidor de base de datos en lo profesional fue con SQL Server. Sin embargo cuando nos fuimos a procesamiento de datos entro como luz, el poderoso Oracle.

Sin embargo para fines académicos me hicieron una consulta, que en Oracle no hubiera tenido grandes problemas y quizás en SQL Server tampoco pero tiene sus diferencias que llevaron un poco de tiempo para investigar.

El problema es el siguiente:

Se tienen registros de préstamo de equipos de cómputo y el cliente ha solicitado que se haga un sistema para automatizar estos préstamos además que verifique los tiempos de uso de los equipos para balancear sus cargas de trabajo y lograr una durabilidad del inventario.

No tengo el modelo de exacto de la base de datos de los chicos pero es algo parecido a ésto:

Read More

DataGridView con botones en ASP.NET

 

En la clase pasada de Desarrollo de Aplicaciones III, surgió la duda de como hacer funcionar un botón en un objeto (componente) DataGridView.

En aquellos años mozos del 2005 nos comentaban que estos componentes ponían a temblar a los servidores de aplicaciones por el tiempo de respuesta. Parece ser que esto ha quedado en el pasado (hay que ver las opiniones de los testers) pero vamos a desarrollar un artículo de Hitesh Vikani [1], donde da un ejemplo de como trabajar con esto.

Para ello creamos una aplicación web vacía con soporte para WebForms (ustedes pueden usar MVC o otros tipos de proyectos, yo creo que funcionará).

Read More

Íconos en Xamarin-Android.

Los íconos para agregarse en la aplicación era otro problema referente a las aplicaciones Xamarin-Android.

Aunque siguieras el Hola mundo de la Xamarin University, al realizar este paso [1] no es posible ejecutar la aplicación. Visual Studio marca el siguiente error:

No resource found that matches the given name (at ‘icon’ with value ‘@mipmap/Icon’). XappAn_Meetings

C:\Users\miguel.araujo\Documents\Visual Studio 2015\Projects\XAppAn_Meetings\XAppAn_Meetings\obj\Debug\android\manifest\AndroidManifest.xml 9

Intente varias cosas, al final lo que me dió la solución fue entrar en el GitHub donde se tiene esta aplicación y revisar el ejemplo [2]. En el PhoneWord (el de GitHub) no se usan las carpetas mipmap, sino las carpetas drawables, por lo que procedí a renombrarlas en mi aplicación.

Antes diseñé un ícono (inspirado en el chapulín colorado) en un sitio línea llamado Android Asset Studio [3], muy sencillo realmente y nos descarga los 5 tipos de íconos, así que una vez descargados renombre a todos como Icon.png e inserte en el proyecto.

Esto del diseño gráfico es un tema muy interesante inclusive hay sitios donde puedes mandar pedir que te hagan tus propios íconos (con un costo claro), según el sitio de aprendizaje de Xamarin.

Ahora en el manifiesto (AndroidManifest.xml) no podemos elegir de forma gráfica (al menos yo no) entonces otra cosa muy importante es que cuando vemos el asistente de forma gráfica (en el Explorador de soluciones dar click con botón derecho y elegir la opción Propiedades) la parte del ícono hay que dejarla vacía.

Read More