Archivo por meses: noviembre 2014

Caminando con salud a la torre de Maro

 

Pues eso… este sábado 29 de noviembre de 2014 (que se esperaba lluvia, y la hubo pero unas horas más tarde de lo previsto) estuvimos en la Torre de Maro aunque en un principio íbamos a ir al cortijo del Molinero, pero si llovía, como que no convenía que nos pillara tan lejos de la civilización 🙂

La excursión al cortijo del Molinero en principio se aplaza para el sábado 13, ya que el día 6 es festivo.

Aquí te dejo un par de fotos y las otras (pocas) las pondré en mis álbumes de picasaweb para el 2014.

WP_20141129_11_01_07_Pro_lr
Y el agua estaba… para ir en piraguas…

 

WP_20141129_12_17_38_Pro_lr
A la vuelta se empezó a nublar

 

Nos vemos.
Guillermo

Nuevas características de C# 6 y VB 14

 

Pues eso… que lo prometido es deuda y antes de que se me olvide, pues… te pego la tabla que te comenté antes con las novedades o nuevas características que tendrán los lenguajes principales de .NET en la versión definitiva de Visual Studio 2015 o lo que es lo mismo en .NET 4.6 o en la versión final de Roslyn (.NET Compiler Platform).

Esta tabla está "tomada prestada" de esta entrada: Languages features in C# 6 and VB 14 del sitio de Roslyn en Codeplex.

Debes tener en cuenta lo que en página dice sobre estas novedades (está en inglés pero con la ayuda del traductor de Google te lo pongo para que lo entiendas si no sabes mucho inglés):
Tenga en cuenta que todo está todavía sujeta a cambios – se trata de una vista previa después de todo. Sin embargo, estamos razonablemente seguros acerca de la característica general establecido en este punto.

La tabla con las características de los lenguajes:

Feature Example C# VB
Auto-property initializers public int X { get; set; } = x; Added Exists
Getter-only auto-properties public int Y { get; } = y; Added Added
Ctor assignment to getter-only autoprops Y = 15 Added Added
Parameterless struct ctors Structure S : Sub New() : End Sub : End Structure Added Added
Using static members using System.Console; … Write(4); Added Exists
Dictionary initializer new JObject { ["x"] = 3, ["y"] = 7 } Added No
Await in catch/finally try … catch { await … } finally { await … } Added No
Exception filters catch(E e) if (e.Count > 5) { … } Added Exists
Partial modules Partial Module M1 N/A Added
Partial interfaces Partial Interface I1 Exists Added
Multiline string literals "Hello<newline>World" Exists Added
Year-first date literals Dim d = #2014-04-03# N/A Added
Line continuation comments Dim addrs = From c in Customers ‘ comment N/A Added
TypeOf IsNot If TypeOf x IsNot Customer Then … N/A Added
Expression-bodied members public double Dist => Sqrt(X * X + Y * Y); Added No
Null propagation customer?.Orders?[5]?.$price Added Added
String interpolation $"{p.First} {p.Last} is {p.Age} years old." Added* Planned
nameof operator string s = nameof(Console.Write); Added* Planned
#pragma #Disable Warning BC40008 Added Added
Smart name resolution   N/A Added
ReadWrite props can implement ReadOnly   Exists Added
#region inside methods   Exists Added
Overloads inferred from Overrides   N/A Added
CObj in attributes   Exists Added
CRef and parameter name   Exists Added
Extension Add in collection initializers   Added Exists
Improved overload resolution   Added N/A

*Design changes expected

Para más información sobre todas las características (con detalle):

C# feature descriptions (es un PDF)

Visual Basic feature descriptions (es una página web)

 

Si quieres probar estas novedades, puedes hacerlo desde la versión preview de Visual Studio 2015 la cual te la puedes descargar desde este enlace.

VS2015_preview

Espero que te sirva y… eso… a ver si voy haciendo algunas pruebas…

 

Nos vemos.
Guillermo

vaya lío… VB 14 es VB 1 y C# 6 es C# 1

 

Pues eso… que con todo esto de Roslyn (la nueva generación de compiladores de Visual Basic y C#) se ve que la numeración de los compiladores vuelve a empezar desde 1.0.

En la versión actual de Visual Studio 2013 (con Update 4) las versiones de los compiladores incluidos son estos (tal como podemos ver en las figuras 1 y 2):
Visual Basic 11
C# 5.0

 
Figura 1. Versión del compilador de C# incluido en Visual Studio 2013.4

 
Figura 2. Versión del compilador de VB incluido en Visual Studio 2013.4

Donde se han quedado las versiones 12 y 13 de Visual Basic es un misterio (al menos para mí) (*) pero en la versión preview de Visual Studio 2015 (hasta hace poco llamada Visual Studio 14) las versiones de los compiladores eran: C# 6.0 y VB 12, así que… se ve que el compilador de Visual Basic ha ganado dos versiones… 🙂

(*)Sobre las versiones de VB:
Yo pensaba que VB 12 era el que se incluía con VS2013 y se ve que mantiene el nombre o número VB 11, pero del VB 13 no recuerdo haber visto nada.
De hecho VB 12 era el que corresponde con C# 6 en las CTP de Roslyn y posteriores versiones de Visual Studio CTP/Preview, aunque ahora en Roslyn se habla (o escribe) de C# 6 y VB 14.

 

En el Visual Studio 2015 Preview (Ultimate) las versiones mostradas en las información de los compiladores son la 1.0 (con el número de compilación que no sé de dónde viene, ya que es 41031 y la de Visual Studio es 14.0.223110.1) tal como puedes apreciar en las figuras 3 y 4:

 
Figura 3. Versión del compilador de C# incluido en Vs2015 Preview

 
Figura 4. Versión del compilador de VB incluido en Vs2015 Preview

Pero bueno, por ahora si ves que hablan del compilador C# 6.0 o VB 14 están hablando de lo que vendrá con .NET 4.6 y Visual Studio 2015 (aunque la numeración interna es la 14).

Por cierto, en los compiladores vienen un montón de novedades… a ver si te pongo una tabla que he visto hace un rato con un resumen de las novedades tanto de C# como de Visual Basic.

 

Nos vemos.
Guillermo

caminando con salud a la Stupa de Vélez, sábado 22 de noviembre 2014

 

Pues eso… la caminata con Ángel (caminando con salud) de hoy sábado 22 de noviembre de 2014 ha sido a la Stupa de Vélez (Estupa de Kalachakra) en el centro budista Karma Guen y según "mi" Endomondo (en realidad el capturado por mi Lumia 920 con Windows Phone 8.1) han sido 11.71 KM, pero el de Ettore marcaba 12.6 KM o sea… que yo he andurriado menos (y eso que le di unas vueltas al patio del centro budista mientras hacía fotos a las rosas, en fin…)

 

Aquí te dejo algunas fotos y el resto las puedes ver en mi muro de Facebook (y cuando las ponga en mis álbumes de picasaweb también te daré el enlace ya está puesto el enlace abajo del todo).

WP_20141122_11_33_45_Pro_lr
La Stupa de Kalachakra (Vélez-Málaga)

 

WP_20141122_11_58_41_Pro_lr
El grupo casi al completo (faltamos dos)

 

WP_20141122_12_28_07_Pro_lr
Una rosa amarilla (abierta) y con invitados

 

Hiking Workout   Endomondo
Mi recorrido con Endomondo para Windows Phone

 

Las fotos en mis álbumes de picasaweb para el 2014:

caminando con salud a la Stupa de Vélez, sábado 22 de noviembre 2014

 

 

Nos vemos.
Guillermo

Si comparas fechas, mejor usa TimeSpan en vez de Substract

 

Pues eso… estaba haciendo unas comprobaciones para mostrar un aviso después de pasado cierto tiempo, por ejemplo, si han pasado varias horas o minutos entre dos fechas, concretamente entre una fecha almacenada y la otra la fecha y hora actual.

Lo que en un principio se me ocurrió es hacer uso del método Substract de la clase DateTime (también Date para Visual Basic) y mirar si, por ejemplo, había al menos una diferencia de 5 minutos, algo así:

VB:

If fecha1.Subtract(fecha2).Minutes > 5 Then

C#:

if (fecha1.Subtract(fecha2).Minutes > 5)

El problema es que esto solamente comprueba si en la información de los minutos de las dos fechas hay esa diferencia una vez que a los minutos de la fecha2 se le resten los minutos de la fecha1.

Sí, está claro, así es como debe funcionar.

Pero ¿qué pasa si los minutos no se diferencian en 5 pero la fecha completa (fecha1) es mayor que la otra (fecha2) en al menos un día (o solo una hora)?

Pasa que Substract falla.

Si lo que en realidad queremos es comprobar si entre dos fechas ha pasado cierto periodo de tiempo, por ejemplo los 5 minutos de este ejemplo, pero comprobando las fechas y horas al completo, (es decir, si ha pasado más de un día, quiere decir que ha pasado más de 5 minutos), entonces deberíamos usar TimeSpan.

Este es el código a usar:

VB:

' con TimeSpan tiene en cuenta la fecha completa
Dim tsMinutos As New TimeSpan(0, 5, 0)
Dim tsDif = fecha1.Subtract(fecha2)
If tsDif > tsMinutos Then
    bAvisado = True
End If

 

C#:

// con TimeSpan tiene en cuenta la fecha completa
TimeSpan tsMinutos = new TimeSpan(0, 5, 0);
var tsDif = fecha1.Subtract(fecha2);
if (tsDif > tsMinutos)
{
    bAvisado = true;
}

 

Captura usando estas dos fechas:

fecha1 = New DateTime(2014, 11, 19, 16, 26, 0)

fecha2 = New DateTime(2010, 10, 12, 7, 26, 0)

Comparar_DateTime

 

Y esto es todo…

Si quieres ver el código al completo (aplicación de consola) tanto para Visual Basic como para C#, sigue este enlace a mi sitio de descargas:

Fichero con el código de ejemplo.

Nombre: Comparar_DateTime.zip

Tamaño: 21,3 KB

MD5 checksum: 78025D0A1B2DE530C46735E5288A4071

 

Nos vemos

Guillermo

hacer LOGIN en una máquina virtual de Azure

 

Pues eso… que estoy probando con Azure y las máquinas virtuales "prefabricadas" que ofrece a los suscriptores de MSDN, y además de probar algunas con Visual Studio instalado (funcionando en Windows Server 2012 R2) también quise probar con una de Windows 10 Technical Preview for Enterprise (x64) y así evitarme el tener que montar una máquina virtual en mi propio equipo.

Windows 10 enterprise

 

Con las máquinas virtuales funcionando en Windows server 2012 R2 no tuve problema para conectarme mediante escritorio remoto y hacer el "login" correspondiente usando el usuario y la contraseña indicados al crear la máquina virtual.

Pero no fue así de sencillo con el Windows 10 (también probé con un Windows 8.1 Enterprise) ya que me indicaba que ese usuario no podía iniciarse en el equipo (o un mensaje de error parecido). Probé de varias formas, con varios usuarios (aparte del creado por mí), pero nada…

Hoy me ha dado por buscar en "SAN GOOGLE" usando este texto: "how to login in windows 10 enterprise azure" y… ¡premio! (o BINGo), aquí está la respuesta:

Azure Windows 10 Technical Preview for Enterprise (x64) VM Login Issue

Y el truco consiste en usar como "dominio" el nombre de la DNS creada con la máquina virtual seguida del usuario con el que quieres hacer login, por ejemplo: W10Enterprise.cloudapp.net\Guillermo.

Y eso es todo.

 

Nos vemos.
Guillermo

caminando con salud del Cañuelo a Cantarriján

 

Pues eso, la excursión (o caminata) de hoy de "Caminando con salud" ha sido por los acantilados de Maro-Cerro Gordo, concretamente desde la bajada a la playa del Cañuelo hasta la playa de Cantarriján.

Hoy hemos sido un grupillo numeroso, con algunas incorporaciones nuevas, entre ellos mi amigo Joaquín que ha venido desde Granada (Huétor Vega) a caminar por estos montes tan bonitos que tenemos por estos lares.

Y hoy hemos visto algún grupo de cabras monteses y un macho que se dejó fotografiar sin salir corriendo… eso sí, estaba a una buena distancia nuestra, por suerte que hoy me he llevado la Panasonic Lumix TZ8 que con su zoom óptico de 12 aumentos me ha permitido hacer algunas fotos "cercanas". eso sí, debo decir que he borrado un puñaillo de fotos, ya que con tanto sol no veía nada en la pantalla de la cámara y no sabía si la cabra estaba en el encuadre o no…

Aquí te dejo algunas de las fotos, el resto las puedes ver en mi muro de Facebook o en mis álbumes de PicasaWeb del año 2014.

 

P1200342_lr

 

P1200350_lr

 

P1200377_lr

 

P1200384_lr-2

 

P1200388_lr

 

P1200413_lr

 

P1200430_lr

 

Aquí están todas las fotos en el álbum de picasaweb:

Caminando con salud, del Cañuelo a cantarriján, sábado 15 noviembre 2014

 

 

Nos vemos.
Guillermo

Érase una vez hace 18 años…

 

Pues eso… un mes como este de hace 18 años (noviembre de 1996) empecé mi andadura por los interneses estos… alojado en el servidor Web Costasol (wcostasol), en una carpeta de usuarios con el nombre “guiller”, sí con la R final… cosas de Manolo (mi alojador). Aunque a los pocos meses fui ascendido a tener un directorio en la propia web de WCOSTASOL.ES, aunque seguía con “guiller” (ver la imagen 1), aunque después mejoró la cosa y tuve mi propio subdominio: guille.costasol.net (imagen 2).

 

1997 04 14 - Página personal del Guille
Imagen 1. El GuilleR en un subdirectorio (captura de abril 1997)

 

02 02 10 - el Guille   Visual Basic y más...
Imagen 2. El Guille en un subdominio (captura de febrero 2002)

 

Pero en diciembre de 2003 Manolo se dedicó a otras cosas y tuve que dejar el alojamiento de Web Costasol y buscarme el mío propio, y de paso crear un nombre de dominio, y así en el año 2004 (realmente a finales de 2003) es cuando nació el dominio/sitio/web/portal (o como prefieras llamarlo) actual: www.elguille.info (imagen 3).

 

04 01 03 - el Guille   La Web de la programación...  en elGuille.info
Imagen 3. ElGuille en su propio dominio (enero 2004)

 

También en el año 2003, en marzo para ser más concreto, Adolfo de Businet/Domitienda creó un sitio web llamado www.mundoprogramacion.com en el que alojé todo lo que tenía en mi sitio de “el guille en costasol”, y hasta la presente así ha sido, una especie de espejo del sitio “principal”, es decir, tanto elguille.info como mundoprogramacion.com muestran el mismo contenido. Así que, ya sabes si te falla un, aún tienes el otro.

Pero eso de publicar en mi sitio se hacía tedioso, a pesar de usar plantillas y demás, era un engorro cada vez que quería publicar cosas, y por esas fechas (año 2009) yo ya estaba más tiempo fuera de mi casa que dentro… así que, creé el blog www.elguillemola.com y empecé a publicar (en octubre de 2009) mis cosas particulares, que si correrías matutinas, que si caminatas por los montes, etc. Dejando para elguille.info las cosas técnicas, aunque después pensé que el blog también era un buen sitio para publicar mis artículos sobre la programación y demás, así que… desde hace unos años publico solo en el blog y pongo los enlaces en el “sitio oficial” de elGuille.

Son muchas las cosas que han pasado en estos 18 años, pero no te preocupes que no te las voy a contar, ¡hasta yo me aburriría! jejeje

Lo que si te digo es que el sitio de elguille.info aún sigue tan activo (en visitas) como lo fue hace unos cuantos años (desde el año 2009 que no publico prácticamente nada en el sitio, ya que lo suelo hacer en el blog), y eso es porque muchas de las cosas publicadas (sobre todo para .NET) aún siguen siendo válidas, y no te digo nada de todo lo que hay sobre VB6 (y anteriores) que también son textos muy solicitados… en fin… que a pesar de los años, aún tengo que seguir manteniendo ese sitio tan vetusto jejeje.

Me río por no llorar, porque a pesar de todo, y sin contar el trabajo que ello supuso y supone, me sigue costando dinero… y no digamos nada del foro (foros.elguille.org), que aunque yo no aparezco por ellos desde hace bastante tiempo, aún sigue teniendo movimiento y, espero, la gente sigue encontrando sus respuestas. Foros que inicié en el 2005 usando la beta de ASP.NET 2.0 y… hasta hoy (la última actualización del código de los mismos fue en marzo de 2009).

Que dije que no te iba a contar batallitas… pero… ¡es superior a mí! jajajaja

Bueno, pues lo dicho ¡Felicidades a elguille [.info]! y sus 18 añitos en la red de redes, usease Internet.

 

Nos vemos.
Guillermo

P.S.
Si quieres contactar conmigo o seguirme (no contesto a consultas, para eso están los foros, pero sí puedes escribirme lo que quieras), aquí tienes dónde localizarme:

Mi sitio: elguille.info
Mi sitio (2): mundoprogramacion.com
Mis foros: foros.elguille.org
Mi blog: elguillemola.com

Twitter: @elGuilleInfo
Facebook: facebook.com/elGuille.info
Facebook (personal): facebook.com/guillermosom
LinkedIn: linkedin.com/profile/view?id=87770054

P.S. 2
Y si quieres patrocinar mi sitio, ya sabes que será bienvenida tu contribución, contacta conmigo en este correo:
mensaje_elguille.info

P.S.3
Y si lo quieres es hacer un donativo, puedes usar los botones de "donar" que hay tanto en el blog como en mis sitios:
donar paypal

¡Gracias!