Excel, una herramienta universal

Puedo relatar con orgullo que mi generación tuvo la fortuna de ser los pioneros en la ciudad de Aguascalientes de la incipientes carreras en lo que anteriormente se llamaba “informática”.

A nivel superior en la UAA se ofertaba la Ingeniería en Sistemas y la Licenciatura en Informática, al lado oriente en el Tecnológico de Aguascalientes: la Licenciatura en Informática.

Cuando la parte de educación media que ofertaba el Tecnológico se dejo de ofrecer esto dio paso a creación de los CBTis (Centros de Bachillerato Tecnológico, Industrial y de Servicios) y CETis (Centros de Estudio Tecnológico, Industrial y de Servicios).

El CETis #155 primero y el CBTis #168 fueron los pioneros en ofertar “la carrera del futuro”: “Técnico Profesional en Programación” y “Técnico en Programación”.

En el CETis #155 mi alma mater, cuna de tantos recuerdos, satisfacciones, alegrías y uno que otro desamor, gran generador de conocimientos y habilidades que sustentan al profesionista que hoy soy, en esa modesta pero pulcra institución conocimos el WordStar, Lotus y Dbase, los abuelos de Microsoft Word, Excel, y los poderosos motores de bases de datos relacionales.

Read More

React – History

The people we was studied IT, we have suffered great frustrations again and again. Some years ago in 2014, I wrote in my blog “Despertando del sueño criogénico” where I relieved my worries and disappointments by using satire.

Today, the past looks so far away when I teach JavaScript in the mid-90’s, many frameworks have emerged Jquery, Angular JS, Vue, Ember, etc.

React is a framework sponsored by Facebook and its beginnings are in 2010.

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

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

Emulador Genymotion

Seguimos con Xamarin.

Una de las cosas que me causó un poco de frustración es el tema de los emuladores. Al tratar de que funcionaran con los que trae por default VS 2017-2015 además que se tardaba eternidad por aquello de que los equipos que trabajo son AMD y no Intel, y pese a que alguna vez si se levantó el emulador generalmente marcaba el siguiente error:

Entonces me puse manos a la obra para buscar alguna posible solución. Esta llegó en el sitio “Codenutz“[1] donde comentaba el uso de una emulador llamado Genymotion que se leían varias opiniones positivas y que además podía utilizarse para Xamarin.

Dos cosas que me parecen muy buenas es que utiliza mi caballo de batalla “Oracle VirtualBox” y que Genymotion tiene una versión gratuita para uso personal. Cuestión aparte que el despliegue en esta máquina virtual es muy rápida.

Read More