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

viernes, 28 de octubre de 2016

85. Insertar a SQL una fecha por un Query

Un problema muy común cuando se esta trabajando con queries en una base de datos es el poder obtener correctamente las fechas y que estas sean entendidas adecuadamente por el sistema.

Existen ocasiones en las que es necesario obtener datos de SQL en forma de texto y después insertarlos a otra base de datos, ¿Qué hacer en esos casos? ¿con que formato debo manejarlos?, hace ya algunas entradas de este blog, hablamos de los formatos universales de fecha en SQL Formato universal , bueno con esta información lo que haremos será extraer el dato de sql en el formato correcto

¿Cómo haremos esto?

Usaremos la instrucción convert, de la siguiente forma


CONVERT(NVARCHAR(250),Fecha,126)


Felices lineas

miércoles, 5 de octubre de 2016

84. Desarrollando CFDI

Hola, les presento un nuevo blog http://desarrollandocfdi.blogspot.mx/ , algunos saben que trabajo para un PAC, no diré su nombre por razones de confidencialidad, sin embargo en este nuevo blog, haremos análisis de los cambios que nos presenta el SAT, en lo que es CFDI, mas allá del desarrollo, es conveniente que todoMexicano conosca que es lo que pide el SAT para la elaboración de sus facturas.

Felices Lineas

lunes, 3 de octubre de 2016

83. Devops

Devops, se puede decir que es una ideología, que no debería ser nueva, es mas no debería ni siquiera estar en la lista de cosas que una empresa debería implementar, sin embargo cuando perdemos la perspectiva de lo que una empresa busca, cuando nos gana el egoísmo propio del ser humano, es cuando esta ideología no se cumple.

Una empresa debe buscar un solo objetivo, ir por un solo camino, hacer que todos sus engranes se muevan juntos, así debe nacer, así debe vivir, así debe transformarse, cuando esto ocurre, la empresa se mueve muy rápido, se adapta, reacciona, es capaz de sobrevivir a la adversidad.

Pero que pasa en la realidad, supongamos que fundamos una empresa pequeña, una de un solo hombre, en donde nosotros hacemos todo, conforme el tiempo pasa, necesitamos mas manos, nos dividimos, uno desarrolla, otro vende, pero necesitamos ahora calidad, así que nos volvemos a dividir, uno desarrolla otro vende otro supervisa la calidad, poco a poco nuestra empresa se hace compleja, se empiezan a crear muchos engranes, muchas islas, y es aquí en donde empieza el problema, cada isla empieza a ver por aquello que es mas importante para ella, no por aquello que es mas importante para la empresa.

Se han escrito cientos de libros acerca de que debemos tener una misión, una visión y unos objetivos, ¿Por que? pues por algo sencillo, la empresa debe ser una, debe ir en la misma dirección, debe de seguir el mismo camino.

NO, somos islas separadas, somos un todo, eso es Devops.

Pero entonces digo, ¿Por que se considera algo nuevo? si es algo que debería existir desde el momento mismo que creamos la empresa, esto es por que todo sistema complejo tiende al caos, y ante esto es a lo que nos encontramos, cuando empezamos a dividir la empresa por responsabilidades, y a cada una se le trazan objetivos individuales y específicos, generamos ese caos, por que rompemos la comunicación, hacemos que cada uno siga su camino.

Devops, se puede resumir en una sola frase "Trabajar juntos", es seguir una meta en común, estar todos involucrados todo el tiempo, dejar de vernos como áreas independientes y participar todos en todos los procesos, tener canales amplios y fuertes de comunicación.

¿Qué ganamos? ganamos que compartimos una visión, compartimos lo que se espera del proyecto, compartimos el desarrollo y la implementación del mismo, si por alguna causa no se esta generando lo que se espera, el cambio de rumbo es sencillo, por que hay muchos ojos y todos tienen una sola visión, que amplia el panorama.

Esto no es algo nuevo, es algo útil una ideología que debería existir en todo momento, pero que tendemos a olvidarla.

Felices Líneas

lunes, 12 de septiembre de 2016

82. Dia del programador



Se bien que no ha prosperado mucho la celebración de este día, sin embrago es importante reconocer que la programación se ha vuelto muy importante en nuestras vidas, en donde hay procesos, en donde hay cambios en donde es necesario darle vida a la información ahí siempre hay un programador.

Por lo que quiero felicitar desde aquí a todos los programadores del mundo.

Que si bien este día no es reconocido en todo el mundo, de hecho solo en Rusia, les deseo que lo disfruten.

Feliz día del programador (día 256 del año)




viernes, 9 de septiembre de 2016

81. Reflecciones de telefonia movil

Antes que nada debo decir que nunca he sido fanático de Mac, por lo mismo mi opinión puede perder un cierto grado de objetividad, he de reconocer que Mac ha generado cambios, no como una empresa tecnológica de vanguardia, sino como una empresa tecnológica que ha hecho la tecnología deseable, dejando de ser esos monstros toscos que hacen muchas cosas, hacia una tendencia en que la tecnología se vea bonita.

Hacer fácil el uso de la tecnología, ese es su gran logro, hacerlo agradable.

Año con año, la conferencia de lanzamiento de nuevos productos es esperada con muchas ansias, por que es cuando sabremos ¿Qué novedades habrá para este año?, Pero realmente solo en pocas ocasiones se puede hablar de un cambio real, de algo que valla mas allá del poder de computo, de algo que haga que un dispositivo sea realmente deseable.

¿De que depende esto?, depende realmente de nuestra capacidad de asombro, todos deseamos ver algo nuevo, algo que todos deseen.

Eso fue lo que ocurrió en el lanzamiento de su interfaz grafica, eso ocurrió en el lanzamiento del primer iPhone, en el lanzamiento del iPod, quizás en un menor grado en el iWatch, por que todos podemos vivir sin tener el reloj, pero hoy en día no podemos vivir sin tener un Smartphone.

Estos cambios tecnológicos no se pueden dar todos los años, no es que se pierda la capacidad de asombro, es que en muchos casos una mejora no es algo nuevo, es solo es una mejora.

Hoy estamos en una carrera en que los fabricantes ofrecen mejoras a sus teléfonos, que se quedan en eso mejoras que pueden ser fácilmente copiadas por otros fabricantes, esto no les d una ventaja competitiva real, no genera el deseo de tener el producto, el cliente no reconoce la necesidad de que eso hace falta en su vida.

iPhone 7, no es mas que una mejora a la gama iPhone, como lo ha sido el Galaxy Note 7 o incluso el Lumia 950 (que en mi opinión personal es un gran teléfono), pero no ofrecen ese extra eso que nos diga yo lo necesito.

Una cámara asombrosa que nos permite tomar parte de la realidad... los 3 lo tienen...

Mas apps, y mejores... seamos francos las apps llámense como se llamen giran alrededor del mismo tema, hace mucho que no se ve una app asombrosa, Me dirán ¿y pokemon go?, pokemon go en un app de coleccionista, un app que explota la necesidad del ser humano de ser reconocido por lo que tiene, de tener mas que los demás, de tener una colección completa de pokemons, es un álbum de estampas traído al mundo virtual.

Los fabricantes tienen que arriesgar para crear esos cambios, pero arriesgar puede ser complicado y costoso, pero al final eso es parte del desarrollo.

Ver mas allá de lo que existe, proponer cosas nuevas, por que una mejora de lo anterior... esta destinada a solo quedar como eso una mejora perdida en el tiempo.

Y bueno este es mi sentimiento de la conferencia de mac de esta semana, es solo eso, una mejora perdida en el tiempo, esperemos un año, para ver que nos trae el futuro.

Mientras tanto, felices lineas


jueves, 8 de septiembre de 2016

80. Creando una dll desde un programa

La creación de una dll dinámica nos puede ayudar algunas veces a construir procesos mas rápidos, esto por que podemos tener datos pre compilados en una dll, que cambie a través, del tiempo.

Una dll dinámica es mu sencilla de hacer.

El código es tan sencillo como esto:


Y que hace, hace algo muy simple toma el código que nosotros le damos, y lo convierte en una dll lista para ser utilizada por otro proceso.

Felices lineas

miércoles, 17 de agosto de 2016

79. SQL Server Configuration Manager (Linea de comando)

La línea de comando cmd es una herramienta sumamente poderosa, y eso que estamos hablando de su forma mas básica, Windows 10 edición de aniversario nos ha brindado la posibilidad de usar el bash de Ubuntu, lo cual nos brinda un mundo de posibilidades, si a eso agregamos la potencia de power Shell, nos da una capacidad inmensa para la administración y configuración de un equipo, pudiendo automatizar un sin numero de tareas.

Tiempo atrás cuando yo me iniciaba en el área de sistemas, mi primer jefe me dijo "Quien no puede usar una computadora (Windows) sin mouse, no sabe usarla", el llamaba a aquellos que dependían del ambiente grafico, Ing click.

Así pues en esta sección iremos creando un conjunto de accesos desde modo de comando, asi como una revisión de los clásicos comandos de sistema, y de las grandes posibilidades que nos ofrecen cmd, bash y powershell.

SQL Server Configuration Manager, es una herramienta que se emplea para configurar el servicio de SQL, esta se puede invocar desde línea de comando de la siguiente forma:

  • SQL2016 - SQLServerManager13.msc
  • SQL2014 - SQLServerManager12.msc
  • SQL2012 - SQLServerManager11.msc
  • SQL2008 - SQLServerManager08.msc
Felices Lineas

miércoles, 27 de julio de 2016

78. Saltos de Linea (Ayuda Rapida)

He estado un tiempo fuera del foro, preparando una nueva etapa del mismo, pero no he abandonado la misión, la misión de la sección de ayuda rápida, es la de dar la facilidad de creación para que con pequeños segmentos de código se puedan resolver problemas de manera sencilla.

El tema del día es como quitar los saltos de línea en una cadena, me dirán que es muy fácil, que solo se reemplaza la función Enviroment.NewLine por un espacio o por una cadena vacía, esto es correcto la mayoría de las veces.

Sin embargo hay que tomar en cuenta, que por motivos de sistema operativo o por error de programación esto no puede ser del todo correcto, la función consta de un retorno de carro y un salto de línea Char(10) y Char(13) respectivamente, por lo que es mejor eliminar estos caracteres de la línea en cuestión para controlar correctamente el salto de línea, ¿Por que usarlo separado?, ya sea por errores o por diseño, muchos programadores no usan los 2 caracteres que tiene el salto de línea, o los usan en orden inverso, esto hace que no sea posible determinar cuando ocurre realmente.

¿Cómo quedaría nuestra función?


No dejen de programar, no dejen de construir


martes, 24 de mayo de 2016

77. sql EXEC master..xp_cmdshell ¿Usarlo?

Ya ha pasado un rato que no he escrito, una disculpa, múltiples actividades redujeron un poco mi tiempo, pero eso no quiere decir que me he olvidado de este proyecto.

La siguiente es una opinión mía, basada únicamente en mi experiencia es posible que no la compartan pero ese es el punto principal de la creación de un blog, incitar al debate.

En este caso hablaremos de xp_cmdshell, que nos sirve para hacer llamadas al sistema operativo desde un store procedure de la base de datos.

Si bien esto nos dota de una herramienta muy poderosa ya que nos permite la interacción con procesos externos, abre algunas puertas para poder ejecutar comando no deseados en el sistema operativo, y he aquí una de las grandes debilidades, si se tiene una mala codificación, este comando podría permitir una inyección de código directo al sistema operativo, que se ejecutaría con un usuario que tiene los privilegios del usuario de la base de datos, o del store procedure en cuestión.

Bueno esto siempre puede ser contenido, limitando los privilegios de acceso, evitando enviar concatenaciones a este comando que se puedan manipular desde afuera.

Sin embargo la puerta esta abierta.

Yo soy firme creyente de que el motor de base de datos no se debe sobrecargar, y sobrecargar el equipo en el que se encuentra dicho motor tampoco es buena idea, el uso de este comando hace que las acciones que se ejecutan sobre sistema operativo, o con un programa externo se ejecuten en el mismo equipo en el que se encuentra la base de datos, si hablo de una base de datos productiva en la que me interesa que el servidor en el que se encuentra la base se dedique solo a administrar la base, es un grave error quitarle recursos.

Los StorePorcedures no deben tener una lógica de negocio complicada, por que todo lo que se haga en ellos se hace en el servidor de base de datos, y repercute contra la cantidad de operaciones en paralelo que nuestro servidor sea capas de resolver, todos los accesos a base de datos deben ser rápidos, no deben tomar periodos de tiempo prolongados por que esto genera que las operaciones a la base se empiecen a encolar.

Cuando invocamos una llamada al sistema operativo desde el motor, este permanece a la espera de que el sistema operativo termine su proceso, empleando un hilo de la base de datos que se encuentra ocupado, pero sin una actividad real.

Una llamada al sistema operativo no puede ser cancelada desde la base de datos, imaginemos que hacemos una llamada a un proceso que consume gran cantidad de recursos, puede incluso provocar que nuestra base de datos se detenga, y aun si la cancelamos desde SQL, el proceso se cancelara hasta que la llamada al Sistema operativo termine, como consecuencia solo podremos cancelarlo desde el servidor mismo.

En mi opinión, usar una llamada a sistema operativo, desde la base de datos, si es posible pero siempre y cuando se valoren los pros y contras de la misma, yo en lo personal prefiero no usarla.

Felices lineas.

viernes, 8 de abril de 2016

76. Zen de Python

La base de python es la filosofía que favorezca el código legible, y bueno ella en realidad es un gran aporte para todos los desarrollos, no solo los desarrollos de python, es algo que deberíamos hacer nuestra ya que mucho de lo que dice ahí nos ayuda en nuestro trabajo.

Piénsenla, háganla suya, conviertanla en un himno, el hacer cosas complejas no nos hace mejores, simplemente aumenta la posibilidad de cometer errores.

La mejor arquitectura siempre es la mas sencilla por que todo mundo la comprende, la puede manejar, la puede desarrollar y trabajar con ella.

Tim Peters es el desarrollador al que le debemos esta reflexión

Bello es mejor que feo.
Explícito es mejor que implícito.
Simple es mejor que complejo.
Complejo es mejor que complicado.
Plano es mejor que anidado.
Disperso es mejor que denso.
La legibilidad cuenta.
Los casos especiales no son tan especiales como para quebrantar las reglas.
Lo práctico gana a lo puro.
Los errores nunca deberían dejarse pasar silenciosamente.
A menos que hayan sido silenciados explícitamente.
Frente a la ambigüedad, rechaza la tentación de adivinar.
Debería haber una -y preferiblemente sólo una- manera obvia de hacerlo.
Aunque esa manera puede no ser obvia al principio a menos que usted sea holandés.15
Ahora es mejor que nunca.
Aunque nunca es a menudo mejor que ya mismo.
Si la implementación es difícil de explicar, es una mala idea.
Si la implementación es fácil de explicar, puede que sea una buena idea.
Los espacios de nombres (namespaces) son una gran idea ¡Hagamos más de esas cosas!

Felices Lineas

jueves, 7 de abril de 2016

75. Home Office

El mundo ha evolucionado, se ha hecho mas pequeño, la información viaja en segundos, nos hemos convertido en una humanidad colaborativa, en la que las fronteras importan poco, los idiomas dejan de ser una barrera, la información se comparte, somos capaces de trabajar juntos, experimentar un proyecto desde muchos puntos de vista, en donde uno de ellos es la misma visión cultural.

El trabajo en casa poco a poco se ha hecho popular en el mundo, teniendo un sin numero de ventajas, entre ellas podemos mencionar, es posible tener a los mejores como miembros de un equipo ya que deja de importar la distancia y las fronteras, las personas no llegan de mal humor o agotadas por el transporte, se humaniza el trabajo ya que se efectúa una labor productiva, pero a la vez el trabajador se encuentra cerca de su familia, recuperando el estado de familia como célula social y semilla del futuro de la humanidad, el trabajador puede observar a su familia, y esta crece en el seno de una familia unida, se da un ahorro de recursos por parte de la empresa ya que estos son transferidos directamente al trabajador, el trabajador debe ser altamente eficiente debido a que al no encontrarse en el sitio, su trabajo no debe prestarse a una interpretación incorrecta.

Claro para hacer esto se requieren cambios en varios niveles, ya que los colaboradores deben ser responsable de sus entregas las cuales deben ser realistas y entregadas con la calidad adecuada, los coordinadores deben tener capacidad para coordinar equipos con múltiples culturas en múltiples usos horarios, y saber que hace y como lo hace cada miembro del equipo.

Si esto es correcto entonces ¿Por que muchas organizaciones lo ven con malos ojos?, desde mi punto de vista nos enfrentamos a una resistencia que impone la misma cultura, ya que esto no ocurre igual en todos los países, en algunos países como México país en el que me encuentro la cultura empresarial sigue viendo con malos ojos el no tener al empleado cerca, partiendo de muchos conceptos erróneos que se encuentran muy arraigados en la sociedad, una cultura de premios y castigos en las que los jefes o gerentes están acostumbrados a llamar la atención de un empleado cuando las cosas no salen como se esperan, el temor de que si el empleado no esta no efectuara las actividades que tiene asignadas, la sobre explotación que se da en algunas empresas que hacen que un trabajador se encuentre en ellas en jornadas muy largas con la falsa idea que esto lo hace ser responsable a los ojos de los demás, la necesidad de ver y controlar en todo momento al trabajador.

El tiempo en el que vivimos nos coloca en la necesidad de hacer un cambio en nuestra cultura como empresa, en todos los niveles, con la finalidad de poder obtener los beneficios que nos entrega la nueva tecnología.

Pero este cambio es muy complicado sobre todo cuando la tecnología no nació con uno sino que se unió a uno en el transcurso de la vida

Felices lineas


martes, 5 de abril de 2016

74. Build 2016 - Reflexiones

Hoy es el mejor momento para ser un desarrollador, esta es la principal reflexión que nos deja este build 2016 y no puedo estar mas de acuerdo, la tecnología se ha desarrollado de una manera exponencial, hace unas cuantas décadas los equipos de escritorio tenían una capacidad inferior a cualquier celular, la adopción tecnología es cada día mas rápida, el teléfono tardo varias décadas en llegar a todos los hogares, el ratio, la televisión, Internet solo ha tardado unos cuantos años, la tecnología móvil ha tenido ya mas de una renovación, visiblemente yo hablaría de 3 renovaciones, la primera cuando nacen los teléfonos celulares, que únicamente se emplean para hacer llamadas, la segunda la llegada de teléfonos capaces de tomar fotografías y ejecutar pequeños procesos, la tercera la llegada del smart phone y la cuarta sera ya un cambio radical hacia una tecnología de realidad aumentada como la que proponen los hololents, esto es muy probable.

Los equipos de computo también han cambiado, hoy en día una computadora de escritorio puede ser incluso estorbosa, y necesaria solo para un pequeño grupo de individuos, principalmente desarrolladores, la laptop suple a la computadora de escritorio, nos da movilidad, la tablet cambia la forma en la que nos comunicamos con el equipo, lo hace mas portátil... los lentes eliminan un mundo bidimencional y nos envían a un mundo tridimencional.

Los costos bajan, la nube crece, antes tener un servidor en Internet era algo impensable para alguien que no fuera una empresa, hoy se puede tener un servidor que cobre lo que yo uso a un precio muy accesible, si lo uso me cobran, si necesito mas potencia solo la incremento, un modelo que me permite bajar costos, antes se quería tener todo en casa, hoy la información vive en el mundo entero.

Por eso mismo vivimos una época de evolución y como lo reiteraron muchas veces en build, no hay mejor momento para ser un desarrollador.

Bueno platiquemos un poco de aquello que se dio en este evento

Continium

Una PC en un celular con la capacidad de conectarse en donde se encuentre una pantalla, una PC que nos permite trabajar, que nos permite divertir, nos permite construir, en algo tan pequeño y portátil como un celular.

Ubuntu + Windows

Esta es una prueba de la convergencia que se esta dando en estos días, la posibilidad de ejecutar de forma nativa el bash de ubuntu, brinda una gran cantidad de posibilidades, ya que tendremos disponibles un conjunto de herramientas que antes solo las teníamos disponibles mediante emulación, unidos somos mas fuertes esa es la mentalidad que nos muestra en esta ocasión el equipo de Windows en ves de desgastarse peleando una guerra, por que no sacar lo mejor de ambos mundos

Xamarin Gratis

Algo que esperábamos incluso desde antes de que Microsoft comprara Xamarin, pero cuando ya se veía el coqueteo de ambas empresas al incluir Xamarin en Visual Studio, un paso hacia la convergencia de todos los sistemas operativos móviles, y quizás el mayor soporte que Microsoft le puede dar a su propio sistema operativo móvil, si ya desarrollaron un app en C#, y para Android e IOS, pues ya están a un paso de poderla vender también en Windows, entonces por que no hacerlo.

HoloLents

Para mi es el sueño hecho realidad, el romper la barrera del monitor, y la barrera de las 2 dimensiones, es la jubilación de los smartphones y de los viejos equipos de escritorio, algo que si bien tardara un poco todavía en llegar a nuestros hogares, plantea un nuevo paradigma para el computo y el futuro

Xamarin Test cloud

Las pruebas siembre han sido un tema complicado cuando la cantidad de variantes se incrementan, y como en el caso de los dispositivos móviles, estas se vuelven casi imposibles, de manera física, esta herramienta nos ayuda a probar el código, rápidamente, sin gran inversión y de manera simultanea, así tenemos que las pruebas se simplifican al probar en múltiples dispositivos al mismo tiempo, un gran acierto por un costo reducido https://www.xamarin.com/test-cloud

Convergencia

Que puedo decir, tenemos equipos rápidos, tenemos memoria, tenemos posibilidad de que todo parta de un código y se valla a múltiples fuentes, un solo lenguaje para todo.

Xbox One Developer

La industria de los vídeo juegos es una de las mas demandantes, emplea una cantidad de recursos del equipo de computo alto, ademas de ser la industria que mas ingresos deja, al hablar de convergencia todo es Windows y como tal desarrollar juegos para el Xbox one ya no es cosa de grandes desarrolladoras, ya puede ser hecho por un programador solitario

Cortana

Los asistentes personales evolucionan, aprenden de nosotros y están en todos nuestros equipos se puede decir que son un extra a nuestra propia memoria

Smart-bots

Inteligencias artificiales, que nos ayudan para resolver problemas dar soporte, mantener conversaciones aprender, todo en la nube, todo con un gran banco de datos que esta a nuestro alcance

Hay mucho por hacer y cada día hay mas herramientas para ello, somos protagonistas de una era, podemos crear sueños, ya que soñar es el limite

Felices lineas

jueves, 31 de marzo de 2016

73. Xamarin - Visual Studio

Pensaba esperar a que terminara el build 2016 para escribir una reseña al respecto, pero creo que la noticia que se dio el día de hoy tiene una relevancia tal que hay que gritarla a todas partes.

¿Por que? por que catapulta a C# a una posición de ventaja permitiendo la creación de aplicaciones para IOS, Android y Windows Phone, de manera gratuita para cualquier usuario de Visual Studio.

¿Que nos permite esto? que se crea una aplicación una vez y se distribuye a cualquier dispositivo, ya no solo de la familia Windows, eso quiere decir que si este proyecto continua por buen rumbo, puede convertir a C# en el lenguaje mas importante para el futuro cercano, un futuro en el que la computación móvil es de gran relevancia.

Crear desde C# nos permite que las aplicaciones nazcan para Windows Phone y de ahí se vallan a los otros sistemas operativos, no es necesario que aprendamos otros lenguajes, desde C# podemos crear maravillas que se empleen en la computación móvil.

La incorporación nos permite ahora ser punta de lanza en las creación de aplicaciones, y convertir en realidad el sueño de todo desarrollador, un solo código múltiples sistemas

https://store.xamarin.com/

Por cierto esta es una noticia que muchos esperábamos desde que salio la noticia de la adquisición de Xamarin por Microsoft

Saludos

miércoles, 30 de marzo de 2016

72. Científico de datos - La evolucion


La imagen anterior no es mía, la tome prestada de un curso que les recomiendo ampliamente, https://www.coursera.org/learn/data-scientists-tools, este es el curso de científico de datos que imparte la universidad de John Hoppking por medio de coursera.

Hace tiempo escribí una entrada de lo que es un desarrollador, en aquel momento comente que esa era una entrada viva que cambiaba con respecto al tiempo, bueno ahora me pregunto que debe ser un desarrollador, y la única respuesta que obtengo en este momento, es que un buen desarrollador debe ser un científico de datos, ¿Por que digo esto?, por algo muy sencillo vivimos en una era del big data, en la que tenemos grandes cantidades de información, información que debemos comprender, se acabo la época en la que la misión de sistemas era resguardar información, se acabo la época en la que la misión era mejorar procesos, hoy somos pieza clave para generar nuevo conocimiento.

Así que nuestro perfil ha cambiado, necesitamos un nuevo perfil que nos permita explotar información, generar conocimiento, y crear ventajas competitivas en las empresas en las que nos desarrollamos, hoy mas que nunca el conocimiento es poder.

Así, nuestro nuevo perfil debe tener las siguientes características ser un hacker, no por el hecho de entrar a sistemas, sino por el hecho de la curiosidad y el conocimiento, por el rápido razonamiento y por la rápida solución de problemas, por la gran cantidad de conocimientos que debemos tener, por los conocimientos técnicos y por el no temor a equivocarnos, Debemos tener conocimientos estadísticos, para poder encontrar el nuevo conocimiento, para poder interpretar los datos, para que los daos realmente aporten información y no sean solo datos guardados en alguna base de datos, la información debe hablar, debe decirnos sus secretos, y valla que hay muchos secretos en la información que poseemos, hoy mas que nunca tenemos acceso a muchas fuentes de información, debemos saberlas explotar organizar, relacionar. y por ultimo experiencia que no es otra cosa que el conocimiento del negocio en el que nos desarrollamos, esto nos permite encontrar cosas especificas, la búsqueda no es meter la información a una licuadora y ver que obtenemos, no la búsqueda es crear un conocimiento nuevo que sea un factor de cambio, un factor diferenciador entre los que había y lo que hay.

Nuevas herramientas, nuevos retos eso es lo que nos genera este nuevo perfil. Y no podemos hacer otra cosa mas que evolucionar.

Felices lineas


miércoles, 23 de marzo de 2016

71. Control de excepciones

Este es un tema un tanto complejo, por que muchos programadores consideran que usar un try - catch es un control de excepciones, y eso no lo es, realmente un programa nunca debería caer en una excepción del tipo try - catch, ¿Por que?, por que el hecho de que caiga ahí quiere decir que existe algo que no estamos realizando de la manera correcta.

Atrapar una excepción, nos permite evitar que un programa colapse, por que algo ocurrió que esta fuera del ámbito de nuestro programa, algo que nosotros no controlamos de un inicio (siempre es mejor controlar una excepción de un inicio a atraparla, por que entonces nuestra lógica se altera).

Sin embargo eso tampoco es un control de excepciones, no basta con solo atraparlas, lo que se debe hacer es decir como debe reaccionar el proceso en caso de que estas ocurran.

Un flujo complejo que se detiene por una excepción y que deja los datos a medio procesar puede ser un gran dolor de cabeza, me dirán, existen las transacciones que permiten que se efectué un todo o nada, si existen y es algo de lo que hablaremos después, pero hay casos en los que por limitaciones de recursos (no olviden estamos en la era del big data) es muy complicado el uso de una transacción.

Por ello se deben implementar medios para realmente controlar una excepción, algo mas allá de una linea que en muchos de los casos no dice nada.

Peor aun hay quien enmascara una excepción con un error del tipo "Ha ocurrido un error consulte a su administrador del sistema", pero no existe información por ningún lado de como ocurrió el error, de por que ocurrió, encontrar una aguja en un pajar es mucho mas fácil.

Entonces ¿Como debemos construir una excepción?, bueno, debemos seguir una serie de reglas en su construcción, reglas que nos facilitaran mucho la vida.


  1. Debemos buscar controlar las excepciones desde codificación, para ya tener una alternativa en el proceso de que hacer en caso de que fallen.
  2. Si se da una excepción, cosa que no podemos evitar esta nos debe dar la información suficiente para reproducir el error (método, variables, etc).
  3. Es conveniente que conozcamos el flujo de nuestro proceso para tener un plan de contingencia en caso de que una excepción nos cause algún problema, esto se debe evaluar desde una etapa de diseño, generar un plan de contingencia en producción no es buena idea.
  4. Si no se desea ser alarmista con el cliente (por imagen) la información de como reproducir el problema se debe almacenar en algún sitio aparte, no solo enviar el mensaje de "un error a ocurrido", si por imagen no se quiere mostrar el error como tal, entonces por imagen deben resolverlo lo antes posible, y si no tienen idea de que paso, esto se convertirá en insatisfacción rápidamente, somos una herramienta para mejorar procesos, no podemos comernos el tiempo del usuario tratando de solucionar errores en los mismos.

Felices lineas

Carlos

martes, 22 de marzo de 2016

70. HoloLents - build 2016?

La conferencia de Microsoft build 2016 se celebra en la ciudad de San Francisco, es un evento lleno de novedades que ningún desarrollador debe perderse, si no es posible asistir, no debemos perderle en su formato on line.


Bueno parece que Microsoft empieza a soltar unas gotas de lo que vendra en dicho evento, ya que si buscamos hololents emulator, encontraremos lo siguiente:


que precisamente coincide con la fecha de este evento...ademas encontramos:


Unity para HoloLents, parece que llegaran novedades muy interesantes este año...

Felices Lineas

69. Andrew S. Grove 1936 - 2016 (Nuestra Historia)

Adrew S. Grove es uno de los ingenieros que ha forjado esta nueva era, ¿Que hizo?, algo tan simple como poner en el mapa a la que ha sido el corazón del computo personal, INTEL, el fue clave del éxito de INTEL y ha dejado este mundo el día 21 de Marzo de 2016, forma parte de nuestra historia, ha cimentado el camino que nos lleva al día de hoy.

Su logro fue transformar INTEL de una empresa dedicada a producir chips de memoria a la empresa de microprocesadores dominante en el mundo, el vivió la primer ola de crecimiento del computo personal, fue uno de los visionarios, que creyó en el futuro de la industria del computo, para tener lo que tenemos hoy en día.

Desde aquí hacemos un pequeño homenaje a uno de los ingenieros que formo parte de nuestra historia.

Descanse en paz Andrew S. Grove


68. Windows 10 Mobile - El sentido de pertenencia

El día 17 de Marzo de  2016 después de una larga espera ha salido al mercado Windows 10 Mobile, esto después de seguir un camino bastante tortuoso, con una serie de retrasos, y con varios teléfonos que se quedaron en el camino.

Quiero aprovechar la salida de este tema, para tocar lo que es el sentido de pertenencia, algo que en mi opinión es lo que le falta explotar a este sistema operativo.

Windows 10 Mobile, es un sistema moderno, con una interfaz diferente a sus competidores, muy estable, que no presenta deterioro pese a las aplicaciones que puedan ser instaladas, y que incluso se podría hablar de que permite que la vida del teléfono se alargue mucho mas de los que permite otros sistemas operativos.

Entonces ¿Que pasa con el?, ¿Por que su cuota del mercado es tan baja?, mucho se ha escrito sobre esto, se habla de que la tienda tiene pocas aplicaciones (algunos miles) se habla de que las principales aplicaciones no lo apoyan (si no ven negocio en la plataforma ¿Por que apoyarla?), sin embargo Microsoft nació con algo a su favor, existen miles de programadores de C# que pueden crear aplicaciones para este ecosistema Entonces si tiene tantos programadores, ¿Por que no hay aplicaciones?, Si el sistema es tan estable, ¿Por que no hay grandes ventas?.

Cuando un proyecto sale a la luz, muy independientemente del tipo de proyecto, siempre se busca gente que se sienta identificada con el, esto es algo que siempre tenemos que tener en cuenta en cualquier proyecto que emprendamos, ¿A que segmento se encuentra dirigido dicho proyecto?, pero esto no es lo único que necesitamos para conseguir un éxito, una vez que se a que segmento me dirijo, debo hacer que dicho segmento se sienta orgulloso de pertenecer a el, y que mi producto que es parte del segmento, se convierta en un identificador del mismo.

Veamos el caso iphone, el iphone, genera status, no cualquiera trae un iphone, y el que lo trae por lo general es una persona, que vive de la tecnología de punta (puede no ser cierto esto pero es la apreciación que da el iphone a este segmento), la gente que lo posee siempre esta en la punta de la tecnología, y pese al costo no subestima cambiar su dispositivo por otro de la misma marca(lealtad) pero de un modelo reciente, incluso lo ven como algo necesario, ellos se ven como usuarios de iphone, o incluso como usuarios de Mac.

¿Que pasa con Android?, Principalmente un segmento medio, un gran conjunto de los usuarios escogió Android como su primer smartphone, el usuario de android, también gusta de estar a la vanguardia, pero por un costo mucho menor que el usuario iphone, le gusta la libertad, Android permite transformar y personalizar el telefono, la marca no le es tan importante, pero pertenece a un grupo y se siente plenamente identificado, el cambio a iphone, si bien se da, no se da a un ritmo acelerado.

Ahora, ¿Que pasa son Windows Phone?, Primero que nada, no existe un segmento que se sienta plenamente identificado con el dispositivo ¿Para quien es? en algún momento empezó a cobrar terreno con la gama media, una gama que busca diversidad a un precio económico, No representa competencia en la gama alta, un sector que se encuentra dominado por iphone, ya que este teléfono no da un status social. ¿Podría darlo?, la respuesta es si, pero esa es una imagen que el fabricante tendría que construir, un buen equipo ya no es suficiente, es importante que los usuarios sientan que pertenecen a el.

¿Y las aplicaciones?, son necesarias si, pero la base de programadores debería bastar para tener sus propias aplicaciones, ¿Por que no las hay?, por que los programadores no se sienten identificados con el sistema operativo, por desgracia muchos de los programadores .Net pertenecen a un grupo que se dedica a aplicaciones empresariales, en donde por muchos años se ha dicho, el aspecto no importa, lo que importa es que funcione.

El aspecto no importa... Claro que importa, por que esto es lo que hace que queramos usar una aplicación, que nos enamoremos, que la aplicación se defina como parte de nuestro grupo, que nos pertenezca.

Esa pertenencia de la que hablo, es la que nos hace defender nuestra empresa, defender al equipo, sentirnos como uno, y crecer juntos, es lo que nos hace alcanzar el éxito, es el alma de un proyecto, y un proyecto sin alma no puede sobrevivir.

No digo que en este ejemplo Windows Phone no tenga alma, la tiene pero debe encontrar su sitio, y al encontrar su sitio, la historia cambiara.

Crear proyectos con alma, proyectos que tengan un sitio, es un diferenciador en proyectos exitosos y proyectos que no lo son.

Siempre debemos preguntarnos ¿a quien pertenece este proyecto?,  ¿Quien lo adoptara como suyo?

Felices Lineas

martes, 15 de marzo de 2016

67. SQL Llenar con ceros un numero (Ayuda Rápida XIX)

Uno de los formatos mas comunes para un entero, es presentar este con ceros a la izquierda, esta funcionalidad SQL no la crea de manera directa, sin embargo, por medio de la combinación de 2 funciones podemos obtenerla rápidamente.

Primero usaremos la función RIGHT.

¿Que hacer RIGHT? bueno nos devuelve los caracteres que se encuentran a la derecha de la cadena, por ejemplo:

SELECT RIGHT('hola mundo', 3)

nos entregara ndo como resultado

Partimos del hecho que el numero siempre al cual deseamos agregar los ceros siempre es menor a la longitud de la cadena.

Así que lo que haremos sera lo siguiente:

1. Concatenaremos el numero a una cadena con ceros.
2. Por medio de RIGHT, le indicaremos el tamaño de la cadena que deseamos

Y listo tenemos una cadena con ceros

SELECT RIGHT('00000' + CAST(11 AS VARCHAR(5)) , 5)

el resultado sera: 00011

ahora en vez del 11 coloquemos el campo al cual deseamos dar este formato, listo tenemos el formato de una manera que no afecta el desempeño de sql

Felices lineas





viernes, 11 de marzo de 2016

66. GhostDoc

La reutilización de código es algo que siempre se debe buscar en la industria del desarrollo de software, mientras mas código pueda ser reutilizado se desarrollara con código de mayor calidad por que este código ya fue probado previamente.

Sin embargo uno de los grandes problemas que tiene el desarrollador es que no documenta, ¿Cual es la desventaja de no documentar? la desventaja es que el código se vuelve un criptico, incluso para el mismo desarrollador que lo programo, un desarrollador puede recordar sus programas por semanas, saber cual es su uso, pero recordarlo por meses o por años, es prácticamente imposible, ademas, el desarrollador va madurando, y conforme madura su estilo de programación cambia, no es lo mismo aquel primer código que escribieron cuando estudiaban que ese ultimo código de su proyecto mas reciente.

Las técnicas de desarrollo cambian, maduran se hacen mas solidas, ademas la capacidad de solucionar problemas evoluciona, como consecuencia su codificación cambia.

Con el correr de los años el código ya no es de ustedes, el código es de una versión previa de ustedes.

Eso cuando hablamos de nuestro propio código, pero ¿Que ocurre cuando es un código heredado? muchas veces una buena solución se desecha por el simple hecho de que no sabemos que existe o desconfiamos de ella.

Resultado, se codifica lo mismo varias veces en diferentes proyectos, bajo el punto de vista de diferentes desarrolladores.

Pero esto ocurre en proyectos "caseros" por que es común ir a buscar frameworks y dll que se encuentren en nuget, que nos solucionan el trabajo.

¿Por que confiar primero en un tercero que en nuestro propio compañero de equipo?

Por una razón muy sencilla, no entendemos su código.

Bueno existen muchas formas de documentar un código, pero ahí viene otro problema, documentación muy compleja, también es enviada al cajón del olvido, se debe buscar una forma en que la documentación sea concisa.

Existen diversas herramientas de documentación, pero hoy hablare de una que nos muestra nuestras clases en un formato que ya es de todos conocido, ¿Por que? por que es el mismo formato con el que se encuentra la ayuda de MSDN, la aplicación se llama GhostDoc, tiene 2 versiones una Comunity que es gratuita y una de paga.

Pueden descargarlo de esta pagina

http://submain.com/products/ghostdoc.aspx

¿Como usarla?

Bueno creemos un proyecto de Visual Studio, una clase de ejemplo

Debemos colocarnos en la parte superior del espacio de nombres, de los métodos de las propiedades, y presionar la secuencia de teclas

Ctr+Mayusculas+D

o ir al menú herramientas->GhostDoc->Document this

Que ocurre, GhostDoc trata de documentar nuestra clase con la información que posee, y si no tiene información nos deja el espacio para que nosotros documentemos


Aquí me diran esto ya lo hace Visual Studio, bueno llenemos los campos de documentación y veremos por que es te gran ayuda esta herramienta


Bien ahora debemos hacer lo siguiente:


Herramientas -> GhostDoc -> Build Help File


Nos mostrara una pantalla de opciones, si tenemos la versión gratuita no podremos modificar nada, demos "OK".



Nos genera un archivo de ayuda



que si lo abrimos nos muestra la documentación de nuestro código en un formato familiar



Felices lineas






miércoles, 9 de marzo de 2016

65. Microsoft adquiere Xamarin

El ecosistema móvil de Microsoft Windows Phone, es muy estable sobre todo para la instalación de múltiples aplicaciones sin que se requiera un incremento de hardware, y en estos años que tiene ha demostrado que terminales de las primeras generaciones, sin embargo las pocas aplicaciones con las que cuenta el sistema, así como la poca publicidad por parte de los operadores, ha hecho que día a día, la cuota del mercado baje.

En lo personal me parece un muy buen sistema operativo, rápido, eficiente, y con grandes posibilidades, ademas de que teóricamente cuenta con todos aquellos que desarrollamos .net para poder desarrollar aplicaciones en el.

Una base muy grande de desarrolladores, sin embargo no todos desarrollamos para el.

Xamarin es un proyecto muy ambicioso, basado en una premisa, desarrollar una vez y distribuirlo a los 3 sistemas operativos móviles principales, una gran ventaja para todos los que somos desarrolladores de .net, por que ahora no necesitamos aprender un nuevo lenguaje para desarrollar aplicaciones para móviles.

La relación entre Xamarin y Microsoft siempre ha sido cercana, prueba de ello es que Xamarin ya se encuentra integrado a Visual Studio 2015, bueno se ha dado un paso mas a esta relación, Microsoft ha anunciado oficialmente la adquisición de Xamarin.

https://blog.xamarin.com/a-xamarin-microsoft-future/

¿Que representa esto para nosotros los desarrolladores? que una herramienta muy importante para el desarrollo movil, sera administrada directamente por los creadores de .net, permitiéndonos crear aplicaciones multiplataforma cada vez mas complejas eliminando la curva de aprendizaje para los desarrolladores de .net, vuelve mas atractiva la oferta del desarrollo de Windows Phone, ya que al final es el lenguaje nativo, que nos servirá para crear aplicaciones en las 3 plataformas, algo como lo que ocurre con UNITY y loa juegos.

Debemos estar pendientes de Build 2016 ya que ahi tendremos mas anuncios, y de la evolución anunciada por Xamarin en abril de este año.



No existen códigos absolutos, todos son mejorables.
Carlos




martes, 8 de marzo de 2016

64. Validar mi HTML

El HTML es un lenguaje muy noble, se puede decir que es tan noble que aun con errores este puede ser desplegado en los navegadores, sin embargo, cada navegador puede interpretar esto de una forma diferente, y los errores nos pueden dar un comportamiento que no esperamos.

Las herramientas que hoy en día tenemos para desarrollo web, simplifican la creación de paginas, empleando mucho código que es auto generado, o que fue generado por medio de una plantilla.

Sin embargo estos métodos en muchos casos, introducen errores en la codificación de HTML, errores que si no se tiene cuidado pueden ser descubiertos hasta que el producto llegue a manos del cliente, un mal habito del desarrollador es corregir un error en una pagina para que funcione solo en su maquina.

Es recomendable que después de crear una pagina HTML, se valide dicha pagina por medio del validador de la W3C, al final ellos son los dueños del HTML, si el HTML es estable, la posibilidad de que la pagina se muestre correctamente en varios navegadores, es mayor.

https://validator.w3.org/  validador


La verdad absoluta no existe, y mucho menos en desarrollo
Carlos

martes, 1 de marzo de 2016

63. Microsoft Holographic Academy

No puedo mas que emocionarme, por que la realidad virtual esta aquí, si bien es una área que esta naciendo, somos afortunados al ver su nacimiento.

Los fabricantes están construyendo los dispositivos para acceder a ella, pero nosotros los desarrolladores somos el alma de esos dispositivos, de nosotros depende que esto sea un éxito, de crear aplicaciones útiles, novedosas, este es un nuevo campo en el que podemos construir grandes cosas, aprovechemos esta oportunidad en la que vivimos el nacimiento de la era de la realidad virtual.

Microsoft ha lanzado la Microsoft Holographic Academy, que nos permitirá dar nuestros primeros pasos en este apasionante mundo, un mundo lleno de posibilidades.

https://dev.windows.com/es-ES/holographic/academy

Es hora de crear un nuevo mundo

viernes, 19 de febrero de 2016

62. This platform could not be created becouse a solution platform of the same name alrready exists (Ayuda Rápida XIX)

Cuando trabajamos con muchos datos y requerimos que se saque el máximo provecho del procesador, es necesario también considerar la compilación sobre la que se hará la aplicación, compilar a 64 bits nos puede traer buenos resultados cuando los milisegundos cuentan.

El error:

This platform could not be created becouse a solution platform of the same name alrready exists

es un error común, que genera Visual Studio cuando a un proyecto que ya se encuentra previamente configurado para compilar a 64 bits, se agrega otro nuevo proyecto, que no trae esta configuración por defecto.


La solución a esto, es la creación manual de un perfil para la compilación a 64 bits, 

¿Como hacemos esto?

Es necesario que abramos en un editor de texto el archivo de proyecto del nuevo proyecto que estamos agregando (csproj).


Dentro de el, encontraremos la siguiente seccion:



La sección que se encuentra delimitada por PropertyGroup indica el tipo de compilación, en este caso vamos a agregar el tipo de compilación a 64 bits, para ello debemos agregar la siguiente configuración
.
Guardamos el archivo.

abrimos nuevamente nuestra solución, y ya tendremos la configuración de proyecto para compilar a 64 bits.




domingo, 14 de febrero de 2016

61. Motivación (comentario)



Ver a las estrellas y tomarlas con las manos, leerlas conocerlas y ver que hay mas allá, tener el conocimiento de la humanidad en nuestras manos, comprenderlo, e investigarlo.

Los desarrolladores tenemos en nuestras manos la posibilidad de potenciar el desarrollo de la humanidad hasta limites que no se han alcanzado anteriormente.

La información se ha democratizado y el conocimiento de la humanidad esta cada día mas cerca de nuestra manos, organizarlo analizarlo, encontrar cosas nuevas esa es nuestra labor.

Todos los desarrolladores son buenos, y tenemos una lucha de egos, por que, por que todos tenemos una forma muy especial de razonamiento, somos constructores de un mundo abstracto, eso ha cambiado nuestra forma de pensar con respecto al resto de la gente.

Al ser constructores de este mundo abstracto podemos construir caminos para hacer maravillas, no solo en un plano virtual en donde nos movemos, sino en un plano físico.

Dejemos de vivir el sueño de otros, convirtamos en parte de un sueño común, dejemos nuestra huella en la humanidad misma.

Estamos viviendo una epoca de evolución sin precedentes en la historia de la humanidad, si bien tenemos muchas cosas que superar, somos un punto que puede impulsar la solución.

¿Como?

La union hace la fuerza, y los sistemas informáticos deben ser la fuerza de esa union, necesitamos unir las redes de información y hacer que de ellas surja el conocimiento, que las dependencias se hablen, que las fuentes de datos puedan compartir la información.

Estamos en una era de big data con sistemas que pueden procesar información a velocidades sorprendentes, debemos mejorar eso, para hacer que ese conocimiento se desarrolle mas rápido.

Ya no somos solamente los encargados de una caja fuerte en donde se resguarda información, la época de ser creadores de ABC ha quedado en el pasado, ahora somos aquellos que pueden crear los medios para impulsar el conocimiento.

Los desarrolladores somos el nuevo catalizador para encontrar lo que hay en el futuro para comprender el pasado para hacer que todo lo que se ha construido se mueva de una mejor manera.

Debemos buscar comprender todo aquello que esta en el universo, descubre los secretos de la creación, ver las maravillas de dios, y todo eso como, generando conocimiento, uniendo lo que tenemos, haciendo útil, analizando la información.

Esa debe ser nuestra motivación.

Bueno es solo un comentario

sábado, 13 de febrero de 2016

60. Ondas Gravitacionales de Einstein

Este no es un tema de computo, pero dada su importancia debo mencionarlo, un evento que inicia no solo una nueva era en la Astronomía, sino que inicia una nueva era en la historia de la humanidad, las ondas gravitacionales que Einstein describir en 1916 han podido ser observadas, esto realmente representa el inicio de una nueva era por las aplicaciones que presenta la partícula elemental que se desprende de dicho descubrimiento el Gravitón que es una partícula sin masa.

Pero yo no soy experto en este tema, por lo que les dejo un par de ligas que explican el tema.

http://www.bbc.com/mundo/noticias/2016/02/160212_ciencia_ondas_gravitacionales_einstein_como_fue_gtg

http://www.bbc.com/mundo/noticias/2016/02/160211_ciencia_ondas_gravitacionales_relatividad_einstein_gtg

Ademas de esto una explicación del tema hecha para niños en Inglaterra narrada por el mismísimo Dr Who (David Tennant) para explicar a los niños de manera sencilla la teoría general de la relatividad de Einstein.


celebremos la nueva era que ha iniciado, 100 años después de que se hizo la hipótesis de las ondas gravitacionales, han sido comprobadas.

hasta pronto

viernes, 12 de febrero de 2016

59. ¿Que contiene una actualización de Windows?

Desarrollo no es solo escribir lineas y lineas de código, debemos estar enterados de la compatibilidad de los componentes que usamos con el sistema operativo, con frameworks, debemos ser capaces de dar una alerta cuando una aplicación se encuentre en riesgo, muchas veces por un cambio que se da por una actualización de sistema operativo.

Estos cambios son costosos por que hacen que una aplicación que hoy funcione mañana no lo haga, es importante revisar  ¿Que contienen las actualzaciones de Windows?, bueno esto microsoft nos lo indica por lo menos para el caso de windows 10 en la siguiente pagina:

http://windows.microsoft.com/en-us/windows-10/update-history-windows-10

revísenla de vez en cuando, mas vale prevenir que llevarse algunas sorpresas desagradables

58. BCP (BulkCopy) Unicode en SQL Server(Ayuda Rápida XVIII)

Últimamente he estado hablando de muchos temas de SQL, no he olvidado los de C#, todavía debemos continuar con los patrones de diseño, y con los cambios que nos ha traído la nueva versión del lenguaje, pero como lo he mencionado anteriormente, un desarrollador completo debe conocer varios aspectos del entorno en el que se mueve.

El bulkcopy y el bulk insert son herramientas muy útiles por que nos permiten la rápida carga y descarga de datos, bulk insert es mucho mas flexible, y se puede considerar una evolución de Bulkcopy, hablemos hoy de bulkcopy.

Bulkcopy nos permite extraer a un archivo desde una ventana de comando toda la información o parte de ella de una tabla de SQL, de una manera muy rápida, pero ojo, la velocidad tiene un precio, Bulkcopy provoca bloqueos en la base de datos.

Así podemos extraer la información con una instrucción como esta:

bcp [Query] queryout [ruta] -S [Servidor] -T -d [Base_de_datos] -c -C ACP

que le estamos diciendo a la base que efectue un bulk copy de un query, esto lo copie a una ruta de salida, -S le indica cual es el nombre del servidor -T indica que no usara pasword, - d indica el catalogo -c indica el tipo de datos a usar en el archivo de texto - C ACP, este es el caso por el que escribimos este post, nos especifica la codificacion para que se guarden los datos que se encuentran en unicode de manera correcta.

¿Por que nos interesa esto?

Bueno el problema que se genera es que cuando usamos un tipo de dato como nvarchar, almacenamos la información en unicode, es decir tenemos un tamaño de palabra mayor que nos permite almacenar una mayor cantidad de símbolos, la version 5.1 de unicode permite alrededor de 100 000 símbolos, si no especificamos el formato, un símbolo se trata de representar por su equivalente en otro formato, como consecuencia el documento se corrompe.

En el caso del idioma español esto nos pasa con la ñ, los acentos que son propios de nuestro idioma.

Ahora si tenemos un archivo ¿Como podemos hacer el proceso contrario y subirlo a la base de datos?

La instrucción es muy similar

bcp [tabla] in [Archivo] -S [Servidor] -d [base de datos] -T -c -E -C ACP

que dice la instrucción, la instrucción anterior dice lo siguiente, inserta en la tabla, el contenido del archivo, -S nos indica el servidor de base de datos -d la base de datos -T que no pedirá password -c que los campos son caracteres -E como es una inserción le decimos que puede insertar columnas tipo identity -C ACP indica la codificación.

Es muy importante que si los datos se extraen con una codificación estos se importen con la misma codificación.


Felices lineas

jueves, 11 de febrero de 2016

57. Eliminar la parte de tiempo de una fecha (Ayuda Rápida XVII)

En C# tenemos el tipo de dato DateTime, pero existen casos en los que no nos interesa la hora, minutos y segundos, la forma de eliminarlos es muy sencilla.

DateTime Fecha = DateTime.Now;
var Fecha2 = Fecha.Date;

se emplea la propiedad Date de DateTime

Esta si fue ayuda rápida, saludos

56. Formato Universal de Fecha en SQL (Ayuda Rapida XVI)

Un problema muy común en las consultas de SQL, sobre todo cuando estas se deben hacer por algún medio que no se encuentra parametrizado (siempre que pase un parámetro a una consulta en C# independiente mente del la forma en la que se realice esto, se recomienda especificar el tipo de dato) por ejemplo al hacerlas desde el Management Studio es el poder colocar una fecha y que el motor la interprete correctamente sin importarle el idioma y la región geográfica.

Los desarrolladores debemos tener el conocimiento por que al final nuestro principal objetivo es el procesamiento de la información, y nuestra principal fuente de datos son las bases de datos.

Si estamos en C# que es el lenguaje que empleamos en este Blog, nuestro motor principal es SQL Server.

Existen 2 formas una, es emplear el formato:

YYYYMMDD

Es decir, por ejemplo el 04 de enero de 2015 seria 20150104, pero esta representación no se encuentra completa, ya que en muchos casos necesitamos también la hora, para ello se usa el formato ISO8601, este formato fue creado para transferir fechas entre sistemas.

El formato que emplearemos de dicho estándar sera:

YYYY-MM-DDTHH:mm:SS.sss

Asi podemos tener una fecha de ejemplo como es:

2015-01-06T11:22:36.568

Felices Lineas

55. Hololents y Super Bowl

No puedo dejar de impresionarme, de como la tecnología cambia y nos lleva a pasos cada vez mas grandes, entramos a un tren de avances en los que estos cada día se dan a un paso mas rápido, dicen que perdemos la capacidad de maravillarnos, pero yo creo lo contrario, por que esa capacidad de maravillarnos es la capacidad que nos permite soñar, crear construir.

Cuando dejamos de maravillarnos dejamos de pensar en lo que puede venir, los desarrolladores nunca debemos perder esa capacidad, el futuro no esta escrito.

Pero hoy necesito que viajemos un momento al pasado, allá por el año de 1898, y vallamos a estados unidos, así que tomemos nuestra TARDIS, escojamos a nuestro Time Lord favorito y vallamos a ese punto y lugar del tiempo y el espacio.

Ahí conoceremos a una persona Charles Holland Duel, un hombre serio, formal, político educado, hijo de congresistas, que en ese tiempo se desempeñaba como Comisionado de la Oficina de Patentes y Marcas de Estados Unidos, toda aquella persona en estados unidos que quisiera efectuar el registro de una patente tenia que ir a esta oficina.

Es en esta época en la que se le atribuye una frase muy famosa.

"Todo lo que puede ser inventado ha sido inventado"

Quizás la frase fue sacada un poco de contexto, se maneja en muchos caso como un mito, no comprobado, pero nos hace pensar en algo, si perdemos esa capacidad de asombro, llegamos a considerar eso, que todo lo que se tenia que inventar ya ha sido inventado.

Nosotros somos piezas al servicio de la tecnología, y en nuestras manos tenemos un gran LEGO nuestros lenguajes de programación, con los que podemos crear construir e inventar las maravillas que nuestros hijos verán.

¿A que viene todo esto?

A un vídeo que se lanzo en los días previos al Super Bowl 50, en el que se muestra un dispositivo de Realidad Aumentada conocido como Hololents, dando una experiencia mas allá que la televisión, pero un vídeo dice mas que mil palabras, así que les dejo aquí el vídeo.



Felices lineas.


martes, 9 de febrero de 2016

54. Alto vuelo

Una muy mala practica que existe en el medio son las llamadas estimaciones a "Alto vuelo" o los dictámenes a "Alto vuelo", que se traducen como decir algo o comprometerse a algo sin tener la información para poder tomar una decisión.

Esta mala practica muy común en los niveles gerenciales, se convierte en una completa falta de respeto a lo que es la Ingeniería,  ya que no da elemento para poder emitir un juicio, elimina una fase de diseño, y en muchos de los casos busca forzar una ventaja competitiva, que en realidad no se tiene.

Esta frase también es una de las causantes de la crisis de la industria del software, ya que permite tomar decisiones al aire, muchas de ellas traen como consecuencia que los proyectos no se entreguen a tiempo o con la calidad indicada.

Es responsabilidad del Arquitecto, del desarrollador, del líder, no permitir que una decisión sea tomada sin tener los elementos completos, o indicar en el riesgo que se cae cuando se hace una decisión de este tipo.

Se debe valorar, una ventaja competitiva es oro molido para la industria, hacerla, puede conducir no solo al éxito de un proyecto sino que también al éxito de una organización, sin embargo forzarla, y fallar en obtenerla, causa desprestigio y desconfianza.

El ingeniero es el creador de soluciones, pero hay que tener los elementos para crear estas soluciones, piensen un poco mas analicen, y actúen.

Bueno solo es un comentario, felices lineas
  

viernes, 5 de febrero de 2016

53.Determinar si una constraint existe en SQL (Ayuda Rápida XV)

Como lo he dicho anteriormente un desarrollador no es aquel que solo sabe el lenguaje de programación, en nuestro caso C#, sino que es aquel que sabe como explotar todos los componentes que giran alrededor del mismo.

¿Como determinamos si una constraint ya existe en SQL?

El proceso es muy sencillo, vamos ha hacer una consulta a la tabla INFORMATION_SCHEMA.TABLE_CONSTRAINTS

¿Cuales deben ser nuestros criterios de búsqueda?

Consideraremos 3 criterios de búsqueda

1. El esquema
2. La tabla
3. El nombre de la constraint

¿Como seria la instrucción?

IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
                   WHERE CONSTRAINT_SCHEMA=[Esquema] AND CONSTRAINT_NAME=[Constraint] AND TABLE_NAME=[Tabla])
BEGIN
  [Accion]
END
GO


Felices lineas

52. Discos duros virtuales (Ayuda Rápida XIV)

El día de hoy es muy útil trabajar en maquinas virtuales, la virtualización nos permite simular ambientes y mejorar el proceso de pruebas, esto es muy útil para el desarrollador, podemos crear maquinas virtuales locales o incluso en la nube lo que nos permite entregar un software de mayor calidad ya que mejoramos el proceso de prueba, siempre es importante que nuestro software se pruebe en un ambiente en donde no se encuentren instalados los componentes que tenemos en nuestro equipo de desarrollo.

Los discos duros virtuales también se convierten en una herramienta muy útil ya que son contenedores en los que se puede almacenar archivos y estos archivos pueden guardarse con diferentes formatos de almacenamiento incluso diferentes al formato en el que se encuentra el disco duro local.

Los sistemas de archivos tienen diferentes características, y es importante conocerlas como desarrollador, ya que vivimos en la era del big data, en la que se tiene grandes cantidades de información, y tener un mal entendimiento o usar un formato solo por herencia puede generar alguna sorpresa desagradable, en un próximo articulo hablare sobre estos formatos.

El disco duro virtual como contenedor de archivos lo podemos usar para efectuar pruebas en diferentes equipos virtualizados teniendo un conjunto de pruebas precargado o emplearlo para compartir información de manera rápida.

Windows tambien es capaz de leer estos discos duros virtuales como si fueran un disco duro de sistema

Por lo regular esta es una tarea típica de un administrador de sistemas, pero como desarrolladores nos resulta muy útil saberlo hacer.

El disco duro virtual que emplearemos es el que tiene como extensión vhd.

¿Como hacemos esto?

1. Abrimos el administrador de discos, para ello emplearemos la instrucción.

2. En el administrador de seleccionamos el menú acción:


 3. Seleccione Exponer VHD


4. Seleccione el disco duro virtual


5. Y el disco duro se mostrara como un disco duro mas



Felices lineas



martes, 26 de enero de 2016

51. Nuestra historia (V) - Alan Turing

No se puede hablar de cómputo sin hablar de Alan Turing, uno de los más grandes científicos de nuestra era, y es considerado uno de los padres de la computación. Una historia de éxitos que tiene un trágico final, incomprendido en su época.

Una página en la que se pueden encontrar muchas referencias de él es http://www.turing.org.uk/

¿Quién fue Alan Turing?

Nació a principios del siglo XX en Paddington Inglaterra un 23 de junio de 1912, Matemático, científico, criptógrafo, filosofo, hizo grandes aportaciones al conocimiento humano.

Se puede considerar que su máquina de Turing sentó las bases de lo que hoy se conoce como algoritmo.

Trabajo en descifrar la maquina nazi Enigma, durante la segunda guerra mundial, diseño la bombe una máquina que permitía eliminar un conjunto de claves candidatas a fin de obtener la clave para descifrar el mensaje, la maquina Enigma es la maquina por medio de la cual la Alemania Nazi de la segunda guerra mundial se comunicaba con sus tropas.

Creo uno de los primeros computadores electrónicos programables en su natal Inglaterra.

Desarrollo el test de Turing que es una prueba para validar la inteligencia artificial de una máquina.

Diseño el primer programa de Ajedrez para una computadora que no existía, el trato de ejecutarlo en computadores de su época pero fue imposible.

Trabajo con la biología matemática buscando la explicación de la aparición de números de Fibonancci en los vegetales.

Fue procesado por homosexualidad en 1952, bajo los cargos de indecencia grave y perversión sexual, fue condenado a castración química, 2 años después y debido a los problemas que causo esta condena muere por envenenamiento con cianuro al ingerir una manzana envenenada, su muerte nunca fue esclarecida por completo, se trataron hipótesis de suicidio y de asesinato.

Una historia no confirmada dice que el logo de Apple es un homenaje a Alan Turing una de las mentes más grandes del siglo XX

La reina Isabel II lo exonero en el año 2013

Sin él no seriamos lo que somos ahora, un grande entre los grandes Alan Turing.

Hasta la próxima.