viernes, 10 de febrero de 2017

95. Visual Studio 2017 (Noticias)

Ya tiene fecha de lanzamiento, el largamente esperado Visual Studio 2017, el cual se lanzara en un evento los próximos 7 y 8 de Marzo.

Pueden participar en el evento desde la siguiente liga: https://launch.visualstudio.com/

Se espera un gran cambio en este Visual Studio, principalmente debido a la política que actualmente tiene la administración de Microsoft guiada por Saiya Nadella, que presenta una política de inclusión de varios de los ecosistemas de software (llámese mac, Linux, Windows), bajo una premisa de trabajar para todos en un solo lugar, de que cada mundo de software, no es un mundo aislado, y todos conviven tomando como eje el ecosistema de Microsoft.

Desarrolla una vez y distribuye donde quieras, un sueño de todo desarrollador que cada día es mas palpable.

Presenta una madures de los lenguajes de programación y del .NET Agregar a diccionario que es su núcleo, así como una evolución para la multiplataforma.

Una orientación hacia DevOps y a aplicaciones organizadas siguiendo metodologías de desarrollo de software, esta es una temática en la que los desarrolladores .NET llegan a tener grandes deficiencias, pero que cada día es impulsada con mas fuerza en la industria.

El día de hoy ya esta liberada la versión RC, por si no quieren esperar a que se libere la versión oficial.

Nuevamente Visual Studio se muestra como la mejor alternativa para el desarrollo de software multiplataforma.

Felices Lineas

jueves, 9 de febrero de 2017

94. Configurar el IIS para https (pruebas) - Ayuda rapida

Las aplicaciones web son muy útiles, dado que se pueden ejecutar en distintos equipos con en cualquier parte del mundo, muchas veces es necesario efectuar pruebas de dichas aplicaciones de manera local, por lo que tenemos 2 opciones, usar el IIS express que viene con nuestro Visual Studio, o usar el IIS que viene dentro de Windows, cuando una aplicación madura, siempre es mejor instalar dichas aplicaciones en nuestro IIS antes de que estas sean liberadas, esto para verificar configuraciones, y el comportamiento de las mismas.

Una configuración necesaria que en muchos casos olvidan los desarrolladores es montar el sitio sobre https, esto es importante, por que en algunas aplicaciones por ejemplo WCF, la configuración cambia si en sitio es http o https.

El principal impedimento para esto, es que se requiere un certificado digital y estos certificados son costosos, por lo que para desarrollo, siempre podemos usar un auto certificado.

Para crear un auto certificado, debemos entrar en el Administrador de Internet Information Services (IIS).


Seleccionar sobre el nombre del servidor


Y seleccionar en la configuración del IIS Certificados de servidor

Entramos en la pantalla



Con el botón derecho sobre esta pantalla aparece un menú, y en el seleccionamos Certificado autofirmado


Seleccionemos un nombre para el certificado y con esto tendremos un nuevo certificado autofirmado

Ahora tenemos que configurar el protocolo https para nuestro sitio.

Entremos al sitio sobre el cual deseamos hacer esto.



y del lado derecho vamos a encontrar el menú enlaces


Seleccionemos el enlace y agreguemos un nuevo enlace



Se indica que es tipo https, y se selecciona nuestro certificado, con esto ya podemos entrar a nuestro sitio con http y https



 Felices lineas




viernes, 3 de febrero de 2017

93. DevOps (2)

Ya hemos platicado acerca de DevOps, que son una serie de mejores practicas que nos permiten en este mundo vertiginoso que es la tecnología, poder tener desarrollos que cumplan en tiempo y forma con las necesidades planteadas por el cliente.

Una idea debe explotarse lo mas rápidamente posible, por que esta puede perder su vigencia, hay que aprovechar la novedad, la notoriedad para que una idea crezca, sin embargo, si una aplicación es de mala calidad, aunque la idea sea buena, la aplicación puede perderse y olvidarse, hoy en día los usuarios no dan segundas oportunidades.

En un desarrollo no empresarial, el amor es a primera vista, o me gusta me enamora y me atrapa para que regrese continuamente a la aplicación, o simplemente la desecho y nunca me vuelvo a acordar de ella.

Un error debe ser corregido de la misma forma, ágil, ya no puedo darme el lujo de dejar una aplicación fuera de línea por periodos de tiempo muy altos.

Estamos en un mundo que realmente es 24*7*365.

Es aquí en donde es necesario una técnica para desarrollar software de una manera rápida y muy eficiente.

 Si se desea aplicar DevOps es muy importante no perder de vista 7 reglas que se deben convertir en un mantra para todos aquellos que quieran aplicar realmente DevOps.

  1. Infraestructura como código
  2. Integración continua
  3. Pruebas automatizadas
  4. Monitoreo de rendimiento de la aplicación
  5. Liberaciones continuas
  6. Administración de liberaciones
  7. Administración de la configuración
¿Pero que significa cada paso?

Infraestructura como código: elimina uno de los problemas mas grandes que existen en el desarrollo de aplicaciones, el que en equipos diferentes (desarrollo siempre es diferente a producción), las aplicaciones se comporten de manera diferente. Además de que los ambientes de desarrollo por lo regular tienen instalados software que se emplea para diversas actividades, software que normalmente no esta instalado en el ambiente productivo.

El desarrollo en la nube elimina en gran medida este problema ya que se pueden tener equipos con mejores características.

Integración continua: Se acabo la época del programador héroe, en el que un solo programador hacia todo, hoy estamos en una época de grupos distribuidos geográficamente, en la que se busca a los mejores para efectuar tareas que antes hacia el equipo de un solo hombre, pese a que el arquitecto es el gran orquestador de las actividades del desarrollo, las aplicaciones que fueron desarrolladas por personas o equipos diferentes en diferentes partes del mundo, deben operar correctamente entre si. Es aquí en donde entra la integración continua, cada componente debe tomar la parte del rompecabezas que le corresponde, para así generar un todo, los errores de integración deben ser detectados al momento, para evitar que por un error en las piezas, se incrementen los tiempos o se baje la calidad.

Pruebas automatizadas: Grandes softwares, requieren grandes cantidades de pruebas, pero el tiempo para hacerlas es cada día menor, hay pruebas de regresión para ver si las liberaciones no han funcionalidad en el pasado, el rendimiento es importante, es necesario saber como será el desempeño de la aplicación en la vida real, de nada me sirve probar con un solo usuario y que cuando meta un segundo la aplicación deje de funcionar.

La cantidad de pruebas que puede tener una aplicación a lo largo de su vida puede superar algunos miles, y el permitir que se hagan con factor humano, trabajando bajo presión y con tendencia al cansancio, genera productos de baja calidad. Las pruebas automatizadas deben ser validadas para que aporten valor.

Un buen set de pruebas automatizadas reduce el tiempo de pruebas de días a incluso minutos.

Monitoreo del rendimiento de la aplicación: Hoy en día estamos ante aplicaciones que se encuentran activas 24x7x365, es necesario saber que pasa en ellas, pero sin ser intrusivos,
se debe brindar el soporte para poder contestar a las siguientes preguntas ¿Qué pasa en una aplicación? ¿Cuándo se degrada el servicio? ¿Sufro algún ataque? ¿Mis recursos son suficientes? ¿Cuántos usuarios tengo? ¿El crecimiento es el esperado?

Liberaciones continuas: Un tema escabroso sobre todo para aquellos que vienen de otras generaciones en las que los ciclos de desarrollo se encontraban completamente divididos, las liberaciones continuas permiten pasar cambios de un ambiente a otro prácticamente de manera instantánea, el subir los cambios en desarrollo actualiza la versión que se encuentra en una ambiente de integración, con una simple aprobación esta versión pasa a QA, a preproducción o incluso a producción, haciendo que los tiempos de liberación pasen de ventanas de varias horas a ventanas de minutos, en los que incluso el servicio puede continuar disponible.

Liberaciones continuas permite la solución de problemas o la integración de funcionalidades en tiempos pequeños, permitiendo que el cliente conserve su capacidad de asombro, o evitando la partida de clientes por errores en el aplicativo.

Administración de liberaciones: Una liberación pasa una versión aprobada, de una manera sencilla entre ambientes, tenido un código único, que ya fue probado y se encuentra completamente estable.

Administración de la configuración: Establece la consistencia de los productos durante el ciclo de vida, determina ¿Qué requisitos se cumplen? ¿Cuáles faltan? ¿Qué versiones de los productos se manejan? ¿Qué componentes se liberan? su función es tener un conjunto de fotografías de lo que ocurrió, ocurre y ocurrirá en un proyecto


Una ventaja de DevOps es que nos entrega métricas del proceso, por lo que se puede seguir la premisa de "Lo que no se mide no se puede mejorar" por lo que podemos tener este proceso en mejora continua.

Felices líneas.

martes, 31 de enero de 2017

92. Bases de Datos noSQL - Desarrollando desde la nube

El mundo no es cuadrado, no todo puede ser finito, ni todo puede ser almacenado en la rígida estructura de una tabla, vivimos en un mundo que esta compuesto por múltiples variables.

El mundo No-SQL, forma parte de un conjunto de sistemas de gestión de datos, en donde las reglas clásicas no son validas, este tipo de bases de datos, también son llamadas bases de datos de almacenamiento estructurado, estas bases de datos son la respuesta para lo que es el almacenamiento de la información cuando esta no presenta características definidas y sin embargo de alguna forma debe ser explotada, si vemos a nuestro alrededor todo lo que existe es información no estructurada.

Las bases de datos NoSQL están diseñadas para manejar grandes cantidades de información que de otra forma no es posible analizar.

Una base de datos NoSQL posee las siguientes características:

  1. Ausencia de esquema (no existe la normalización)
  2. Escalabilidad horizontal sencilla (pueden crecer mucho fácilmente, con solo añadir nodos es posible aumentar el rendimiento)
  3. Muy veloces (Gran optimización que tienen para el procesamiento en paralelo.)

MongoDB, documentDB, Apache Cassandra, simpleDB, Google BigTable, Apache Hadoop son algunos ejemplos de bases de datos No-SQL.

En la era en la que la información esta por todos lados y en múltiples formas y que su análisis nos da una ventaja sobre la competencia, estas bases de datos se convierten en la mejor opción para guardar y analizar información.


Felices lineas

viernes, 27 de enero de 2017

91. Un nuevo Amancer (bitcoin?) - Desde el divan del gato

Nos encontramos en un punto verdaderamente interesante de la historia de la humanidad, un punto que se puede convertir incluso en un cambio de era, si hacemos las cosas de manera adecuada, los ciclos cambian se dan múltiples transformaciones, y hoy estamos ante una de ellas.

Con los cambios de política que vemos en Estados Unidos se puede decir que nos preparamos ante el fin de la globalización al perder a uno de sus principales promotores, pero esto puede no ser del todo real, esto puede representar el inicio de una nueva era con una nueva economía mundial.

Una economía cerrada, como la que nos muestra el día de hoy Estados Unidos, en la que el proteccionismo se convierte en su moneda de cambio, hace que una economía abierta sea mas sencilla, en la que realmente los mejores hagan lo que realmente tienen que hacer.

Se los mejores cuesta, pero ser una economía altamente especializada, permitirá que la humanidad realmente crezca, se transforme y llegue a esa utopía de una sola humanidad.

¿Pero como lograr esto si ya no puedo vender libremente?

Es ahí en donde entra en juego la tecnología, en donde los cambios tecnológicos marcaran el nuevo destino, en donde conceptos como frontera, país, moneda pierden el sentido.

Un nuevo amanecer, pensando en que por medio de la red de redes realmente puedo contratar a la persona especializada que requiero en el momento que requiera, sin la necesidad de que esta persona se encuentre realmente en el mismo lugar del mundo en el que yo me encuentro.

Un nuevo amanecer, pensando en que puedo buscar por el mundo los insumos que sean de mejor calidad y a mejor precio, con los que puedo convertir a mi región en una especialista.

Y sobre todo, un nuevo amanecer, pensando en una moneda única, nacida de la propia humanidad, con reglas previamente establecidas, en las que un gobierno o banco central ya no puede intervenir.

Es en este punto en donde una moneda como bitcoin nos abre un nuevo camino.

Estados Unidos se esta cerrando, el dólar que por mucho tiempo ha sido una moneda internacional no oficial, reciente los cambios en la política de Estados Unidos, como consecuencia las otras monedas mundiales también resienten el cambio, los inversionistas buscan posiciones seguras en donde su dinero no se vea afectado, por muchos años esa moneda ha sido representada por las monedas de las potencias mundiales, dólar, hoy inestable por la incertidumbre generada por Estados Unidos, Libra, hoy inestable por la incertidumbre generada por el brexit, Euro, hoy inestable por los movimientos que se dan en Europa.

El oro que tradicionalmente ha sido el mayor refugio de capitales es estable pero no tiene dinamismo, no se puede comerciar fácilmente con el.

Una criptomoneda, es segura, y esta en todos lados, esto permite que yo comercie con ella desde cualquier país, derribando el muro de las fronteras, bitcoin ve una nueva evolución al considerar una economía libre, globalizada, en la que cada país debe trabajar en ser el mejor en alguna actividad que complemente a los demás.

Ningún país es bueno en todo, pero la suma de ese todo se convierte en un progreso y un cambio en el futuro.

Una sola moneda, controlada por todos, en los que una política de un país no la afecte, es una utopía, que hoy es real.


Sean bienvenidos a una nueva era de la humanidad




jueves, 5 de enero de 2017

90. SQL Padres sin hijos (Ayuda Rapida)

Una función sencilla para obtener aquellos registros de una relación entre 2 tablas en que se tenga un padre sin hijos es:

SELECT * FROM [Tablapadre]
LEFT JOIN [TablaHijo]
ON [Tablapadre].id = [TablaHijo].id
WHERE [TablaHijo].id IS NULL


El left join nos hace la relación de ambas tablas incluso con registros que no existen, por eso al buscar aquellos en los que una columna de la relación sea nula, el query nos entregara los registros que estamos buscando


Felices líneas

miércoles, 14 de diciembre de 2016

89. Eliminar duplicados en una base de datos (Ayuda Rapida)

El siguiente Query permite eliminar rápidamente registros duplicados en una base de datos de SQL, es muy importante para que el Query opere correctamente, que exista un índice que ordene los registros de la misma manera en que forman los campos únicos.

Otro punto importante, para efectuar este cambio es que se debe evaluar la posibilidad de borrar cualquier otro índice que tenga la tabla durante el proceso, esto ayudara a que el borrado sea mas rápido ya que no actualizara los índices.

WITH CTE AS(
   SELECT [Campo1],[Campo2],[Campo3],...,Renglon = ROW_NUMBER()OVER(PARTITION BY [Campo1],[Campo2],[Campo3],... ORDER BY [Campo1],[Campo2],[Campo3],...)
   FROM [Tabla]
)
DELETE FROM CTE WHERE Renglon > 1

Felices lineas

88. Aplicaciones Universales: Día 1


Iniciemos este tutorial de creación de aplicaciones universales, el primer día es la creación de nuestra primera aplicación universal, para ello debemos hacer lo siguiente:

1.      Iniciar Visual Studio
2.      Crear un nuevo proyecto



Para el nuevo proyecto vamos a escoger C# ->Windows -> Universal
3.      Visual Studio nos preguntara para que versión de Windows se creara la aplicación


Es muy importante esta respuesta porque esto nos permite saber la compatibilidad de nuestra aplicación.

¿Cómo está integrada esta aplicación básica?


Tenemos un archivo llamado Tutorial_TemporaryKey.pfx que representa un certificado para firmar nuestra aplicación

Project.json es un archivo que nos indica los paquetes que integraran nuestra aplicación

Package.appxmanifest es un archivo muy interesante que analizaremos en otra sesión, este nos da las características que tendrá nuestra aplicación.


MainPage.xaml, es nuestra interfaz de usuario, aquí empezaremos a trabajar con xaml
App.xaml, es el punto de inicio de nuestra aplicación
Assets, es una carpeta en la que se encontraran todos aquellos componentes externos que forman la aplicación.
Felices Líneas






martes, 13 de diciembre de 2016

87. Arreglo de caracteres a Cadena C# (Ayuda Rapida)

Un problema muy simple que ocurre algunas veces con conversiones de datos, como convertir un arreglo de caracteres a una cadena.

Para ello es necesario usar el constructor que nos proporciona string y pasar el arreglo como cadena.

char[] Arreglo = new char[4];
Arreglo[0] = 'h';
Arreglo[1] = 'o';
Arreglo[2] = 'l';
Arreglo[3] = 'a';

string cadena = new string(Arreglo);

Con esto se ha efectuado la conversión,

Felices líneas

86. Aplicaciones Universales


Vamos a iniciar 2 tutoriales para este blog, de 2 temas que me parecen de gran relevancia, y que tendrán un peso muy importante en los próximos meses, si bien ambos ya existen, y llevan un tiempo en el mercado, para nosotros que nos movemos en mundo Microsoft es importante conocerlos.

Me refiero a la UWP (Universal Windows Platform) y a XAMARIN, me dirán porque quiero tratar estos 2 temas juntos, porque si los manejamos vamos a tener realmente aplicaciones que se puedan ejecutar en cualquier sistema Windows con UWP y móvil no Windows con XAMARIN.

Una aplicación que se ejecuta sobre UWP es una aplicación que puede ser compartida en diversos dispositivos siempre y cuando estos se manejen sobre la plataforma Windows, ahora considerando que la plataforma Windows cada día es más extensa, esto nos genera aplicaciones que realmente pueden ejecutarse en cualquier tipo de dispositivo.

Ahora bien, este tipo de aplicaciones son sumamente versátiles, principal mente por el grado de adaptación que tienen en la interfaz de usuario para poder ser vista en múltiples equipos incluso con diferentes arquitecturas de procesador.

Pero la adopción no ha sido tan rápida como se esperaba, esto ha sido porque existe resistencia al cambio por parte de los desarrolladores de Windows que ven el desarrollo hacia UWP muy diferente a lo que están acostumbrados.

¿Para qué hacer una UWP si tengo una plataforma WEB? Es una buena pregunta, pero su respuesta es UWP es una evolución de WinForm es decir tenemos una aplicación que aprovecha todas las características que nos ofrece Windows 10, es una aplicación que puede operar de manera desconectada y que nos ofrece una versatilidad muy alta en la interfaz de usuario, las UWP emplean XAML para construir la interfaz de usuario.

XAML ventaja o desventaja, desgraciadamente la adopción de XAML tampoco ha sido como se esperaba, XAML es increíblemente flexible lo que permite crear una interfaz de usuario muy llamativa, pero requiere ciertos conocimientos de estética, requiere que el desarrollador busque la belleza en su aplicación, y esto se convierte en un problema sobre todo cuando es un desarrollador que viene de WinForms en donde todas las formas son iguales.

XAML permite un diseño que hace que las aplicaciones dejen de ser planas y que además de ser útiles, sean fáciles y cómodas de usar para el usuario.

Felices líneas