October 2009 - Artículos - Jorge Serrano - MVP Visual Developer - Visual Basic

October 2009 - Artículos

Lo que os voy a contar es un poco largo, pero me gustaría que quedara aquí reflejado por si alguien se encuentra con la misma situación y ante la gran cantidad de horas que he gastado en la red tratando de resolver mi problema.

Me he vuelto loco intentando instalar un Windows 7 en un Fujitsu-Siemens, pero cuando uno se pone cabezón y los astros se alían con él,... al final lo consigue.

Todo se remonta al día (maldito el día) en el que decidí adquirir un Fujitsu-Siemens Amilo A1667, con sus 2 Gb de memoria RAM, su flamante y extenso disco duro, su tarjeta gráfica dedicada (por aquel entonces era muy difícil encontrar un portátil con una tarjeta gráfica dedicada, de 64 bits, con esas 2 Gb de memoria RAM y a un precio competitivo), con Windows XP preinstalado, y bueno... que iba muy bien, la verdad. Se calentaba bastante pero ninguna caja con su procesador AMD Turion 64bits.

Al Windows XP Home lo fusilé rápidamente por un Windows XP Profesional, y con él estuve tirando durante muchísimo tiempo con mis máquinas virtuales, etc. Problemas cero... bueno... cero cero no, porque al mes de comprarme el portátil, pasó por el servicio técnico con unos problemas raros en la pantalla. El resultado fue el cambio de pantalla y un mes sin ordenador esperando a que llegara la famosa pieza de Alemania (imaginaros).

Cuando me devolvieron el ordenador, era la wifi la que no funcionaba. Nuevamente al servicio técnico, 15 días más sin él.

Una vez que me devolvieron el ordenador, ningún problema hasta justo 1 mes de pasada la garantía... y ahí, zás... disco duro a la porra (literalmente) y DVD también... curioso. Ahí si que ya me dije que Fujitsu-Siemens nunca jamás... lo siento pero no me fío y habiendo pagado una pasta por el ordenador como pagué en su día.

Entonces y ya fuera de garantía, me dediqué a abrirle las tripas, cambié el disco duro y un DVD y perfecto.

Ahora bien, con mi bios 1.06c el ordenador funcionaba relativamente bien, pero cuando salió Windows Vista y quise instalárselo... que sí, que para eso estaba,... imposible intalarlo.
En la parte de asignación del disco duro y creación de particiones se quedaba frito, así una y otra vez. Como Vista no era de mi devoción, Windows XP y a seguir con él que va de fábula y estoy muy contento.

Por fin y pasado ya un tiempo, aparece la beta de Windows 7, y me dispuse a probarla en ese portátil para ver que tal iba, pero decepción... más de lo mismo... instalación bien hasta que aparece la pantalla de elección de disco duro y partición. Se queda congelado, frito, como con la instalación de Windows Vista y a correr.

Vaya... esto se complica. Total... era para probar, así que sigo con mi Windows XP.

Ahora que ha salido Windows 7, pienso que a ver si tengo la suerte de que me lo instale... pero que no,... que exactamente el mismo problema que con Windows Vista y con Windows 7 Beta.

En ese instante, hago oraciones a san buscador de internet y busco y busco... pero lo único interesante que encuentro es una información de Fujitsu-Siemens que ya leí hace un año en el que informaba que para la instalación de Vista se requería la actualización de la bios a la versión 1.07, algunos (uno o dos) comentarios que decían que sí funcionaba y punto pelota.

Bueno, bien... pero el enlace de Fujitsu-Siemens te sigue llevando como hace un año a nunca jamás... así que como si nada.

Y ahí es donde uno ya se mosquea y trata de buscar y rebuscar esa actualización a la versión 1.07, hasta que encuentro una página web que nada tiene que ver con Fujitsu-Siemens pero sí con el fabricante de la placa, y en ella un enlace para la versión 1.06c que ya tenía instalada de fábrica, y un enlace deshabilitado para la 1.07.

Corcho... no me lo puedo creer. Existe la 1.07 pero no se puede descargar... esto es ya la repanocha...

El caso es que mirando el enlace de la 1.06 y cambiando el número por el 1.07, he logrado acceder al fichero zip correspondiente. Menos mal...

Una vez descargado, veo un leame y los ficheros de la rom, pero la verdad es que uno decía peras y el otro limones... desastre total.

Desde el ordenador portátil daba error indicándome que no era una aplicación válida para ese sistema operativo (Windows XP), y al final me he puesto a buscar y buscar y he encontrado un programita de Windows que lee esa rom que me descargué y actualiza la bios sin rechistar.

El caso es que después de todo esto, he actualizado la bios a la versión 1.07.

Ahora bien... ¿funcionará la instalación de Windows 7?.

Pues al final lo he logrado, y sí, esa actualización de la bios permitía instalar Windows Vista, y como no, Windows 7.

Ahora mismo tengo un windows 7 instalado en un Fujitsu-Siemens Amilo A1667. Me ha costado pero lo he logrado.

Todo esto lo comento para indicar a quien tenga este portátil, que sí, que es posible instalar en él Windows 7... aunque me ha costado bastante.

Como el servicio técnico de Fujitsu-Siemens es tan bueno como sus portátiles, yo te indico aquí de forma breve cómo hacerlo:

1) Descargarse la P50CA BIOS 1.07 for Uniwill Standard.
[http://www.uniwill.com/UserDownload/P50CA/P50CA.php]

2) El enlace directo del fichero que no aparece en la web anterior es:
[http://www.uniwill.com/UserDownload/P50CA/bios/P50CA_BIOS_107.zip] (423 Kb)

3) Desde FreeDOS es posible que podamos actualizarlo, pero mucho mejor usar el AMI Flash Program.
[http://www.ami.com/support/downloadagreement.cfm?DLFile=support/downloads/amiflash.zip&InpDrvID=90] AFUWIN.exe es el programa idóneo para realizar la actualización de la bios.

Ni que decir tiene que la actualización de la bios es muy peligrosa, y que yo no me hago responsable de lo que puedas hacer con esta información y con los ficheros de los enlaces.

Eso sí,... si lo haces,... que no te quedes sin luz. Avisado queda. :-)

Publicado por Jorge Serrano | 9 comment(s)
Archivado en:

Me encuentro trabajando en un proyecto en que por necesidades del guión, me veo obligado a utilizar un control de tipo CheckedListBox.

Hasta aquí, nada anormal en la necesidad solicitada... nada anormal a excepción del Intellisense de Visual Studio 2008, herramienta de marras que utilizo para tal fin, aunque he revisado que el comportamiento se repite en Visual Studio 2010 Beta 2 y versiones anteriores.

El caso es que cuando ya tengo mis datos de acuerdo a List<objeto> y trato de pasárselo al control CheckedListBox, me doy cuenta de que Intellisense no ve el tan querido DataSource.

Por un momento pienso... "es imposible que a la gente de Microsoft se le haya pasado esto por alto.".
Por otro lado pienso... "si se les ha pasado por alto, tendré que hacerme un bucle para recorrer la colección e ir agregando cada elemento uno a uno..., un rollo, pero al menos solventaría el problema.".

No obstante, uno que es más desconfiado que nada y más terco aún, mira y remira la primera de las opciones y piensa... "debe haber alguna forma...", así que me pongo a buscar y lo primero que hago (porque no me creo lo que dice Intellisense) es mirar el visor de clases y objetos de Visual Studio 2008 y mirar allí la clase System.Windows.Forms.CheckedListBox.

Allí sí encuentro varias propiedades ocultas,... entre ellas la propiedad DataSource, DisplayMember y ValueMember, así que sí, están ahí.

Además, es lógico pensar que deberían estar ya que el control CheckedListBox hereda de ListControl (que implementa los miembros comunes de los controles ListBox y ComboBox), y que a su vez hereda de Control. Las propiedades DataSource, DisplayMember y ValueMember están por ahí gracias a la herencia para deleite y disfrute nuestro.

Así que... aunque no aparezca en el Intellisense... que no decaiga la fiesta... porqué... ¿podemos usarlo?.

Pues sí, así es.

Y para muestra un botón.

Arranco con una aplicación Windows escrita en C# y una clase que no merece mayor consideración que el propio código:

 

public struct Product
{

    
public string Code;
    
public string Name;

    
public Product(string code, string name)
    {
        
this.Code = code;
        
this.Name = name;
    }

    
public override string ToString()
    {
        
return this.Code + "\t" + this.Name;
    }

}

 

En el formulario he insetado un control Button y un control CheckedListBox.

Dentro del formulario, he agregado el siguiente código en lo que al evento MainForm_Load se refiere:

 

private void MainForm_Load(object sender, EventArgs e)
{
    
Product product;
    
List<Product> productsCollection = new List<Product>();
    product = 
new Product();
    product.Code = 
"A01";
    product.Name = 
"Naranjas";
    productsCollection.Add(product);
    product = 
new Product();
    product.Code = 
"A02";
    product.Name = 
"Peras";
    productsCollection.Add(product);
    
this.checkedListBox1.DataSource = productsCollection.ToList();
    
this.checkedListBox1.DisplayMember = "Code";
    
this.checkedListBox1.ValueMember = "";
}

 

Finalmente y en el control Button, he establecido un sencillo mecanismo para extraer aquellos elementos que hemos seleccionado:

 

private void button1_Click(object sender, EventArgs e)
{
    
foreach (var item in this.checkedListBox1.CheckedItems)
    {
        
Product product = (Product)(item);
        
MessageBox.Show(product.Code + Environment.NewLine + product.Name);
    }
}

 

Como podemos ver en este ejemplo, el control CheckedListBox no nos muestra en Visual Studio y "gracias" al Intellisense las propiedades DataSource, DisplayMember y ValueMember, sin embargo, están ahí y las podemos utilizar perfectamente.

Aún y así, hubiera sido un detalle que el control tuviera la posibilidad de chequear o deschequear una fila de datos del control a partir de un valor (true/false) pasado como parámetro, pero eso es motivo de otro estudio diferente que no viene al caso.

Sigo cacharreando con Visual Studio 2010 y viendo algunos comportamientos extraños algunas veces, pero viendo un hueco importante en Visual Studio 2010 Beta 2,... el que tiene que ver con el desarrollo de dispositivos móviles.

¿Dónde están las plantillas de desarrollo de aplicaciones Software para dispositivos móviles?. ¿Dónde está .NET Compact Framework 4.0?. ¿Tiene algo que ver lo que en algunos sitios de Internet comentan como Windows Mobile 7.0 (recordemos que recientemente, Microsoft lanzó Windows Mobile 6.5)?.

El caso es que si quieres desarrollar aplicaciones móviles en Visual Studio 2010 Beta 2, debes saber que va a ser que no.

En las referencias os pongo un enlace de Microsoft MSDN donde dicen lo siguiente:

"Visual Studio 2010 Beta 2 does not support Smart Device Development.".

Pero no te asustes, que más abajo pone esto otro (yo nada más leer eso me he asustado, no te creas):

"Microsoft is committed to making Visual Studio a great development tool for the mobile device developer, and will deliver mobile device tools for Visual Studio 2010, but cannot share details now.".

Es decir,... que con Visual Studio 2010 Beta 2 no podemos desarrollar aplicaciones Software para dispositivos móviles, pero con la versión RTM tendremos esa posibilidad... y según dice Microsoft será una gran herramienta de desarollo... ¿seguro?.

El tiempo lo dirá...

Referencias

Acceso a la información de Microsoft MSDN sobre el desarrollo de aplicaciones de dispositivos móviles en VS 2010 Beta 2.

Esta entrada tiene que ver con algunos comentarios que se han hecho en mi blog respecto a uno de los temas que trataba, y que a fin de cuentas y con el objetivo principal de aclarar y recabar opiniones enriquecedoras, encuentro este tema tan interesante como la propia programación o la propia toma de decisiones acerca de la arquitectura a elegir a la hora de abordar un proyecto, más que nada porque tiene relación directa con todo esto.

Es un tema peliagudo por las sensibilidades que pueden despertarse, pero está ahí, puede ocurrir y no se puede ignorar. Nuestra profesión no debe ignorar cualquier situación, y es bueno siempre cuestionarse absolutamente todo. ¿Lo estaremos haciendo bien o no?.

Hay quien sobre el tema que traigo querrá ver el vaso medio lleno, y en la otra parte el vaso medio vacío, como siempre, pero es bueno quitarse la gorra típica pro-Linux y pro-Windows, aparcar los prejuicios y plantearse cuestiones relativas al ámbito general del desarrollo y de las IT que es donde estamos centrados con independencia de en qué entorno u entornos nos encontramos más cómodos.

El caso es que la LSE (Bolsa de Valores de Londres - London Stock Exchange), tercera bolsa más grande del mundo, aceptó gastarse 40 millones de libras esterlinas en implantar Infolect y TradElect sobre 12 servidores HP Proliant entre Septiembre del año 2005 (fecha de la puesta en marcha de Infolect) y el T2 del año 2007 (última fase del TRM de la puesta en marcha de TradElect) [http://www.londonstockexchange.com/prices-and-news/stocks/welcome/18-06-2007-exchangelaunchtradelect.htm].
Estos productos fueron desarrollados por Accenture con la colaboración de Microsoft.

El diseño de TradElect (basado en .NET Framework, C#, SQL Server 2000 y con Windows Server 2003 como sistema operativo) era por otro lado obsoleto en el momento de la implantación, ya que hablamos de un producto del año 2003 implantado entre Septiembre de 2005 y Junio del 2007.
La decisión de implantar TradElect por otro lado la llevó a cabo la hasta entonces presidenta ejecutiva de la LSE, pero esto como todo lo que quiero poner, únicamente un dato, no una defensa ni en favor ni en contra de nada ni nadie.

Adicionalmente, se indican en algunos sitios Web que hay unos gastos elevados derivados del entorno Windows que no alcanzo a saber el porqué porque no se citan en ningún sitio cuales ni cuanto, y tampoco sé si son ciertos esos comentarios vertidos en la red sobre este tema o no.

Para ponernos en situación, el pasado año, concretamente el 8 de Septiembre de 2008, la LSE sufrió su peor fallo en 8 años obligando a la LSE a suspender sus operaciones durante casi 7 horas en el momento más crítico de la crisis de créditos estadounidense y la medida de sostenibilidad que impulsó el presidente estadounidense Barak Obama.
Se cortaron las cabezas entonces de toda la ejecutiva de la LSE, se perdieron muchas transacciones, dinero, y la reputación de la LSE se vió dañada y perjudicada.
"The London Stock Exchange (LSE.L) suffered its worst systems failure in eight years on Monday, forcing the world’s third largest share market to suspend trading for about seven hours and infuriating its users."

El caso de éxito que publicó Microsoft en su Web fue borrado este verano una vez que la LSE había dirigido sus esfuerzos y movimientos hacia MillenniumIT, basado en un sistema Linux, sistema operativo usado también por otras bolsas mundiales.
Sin embargo y buscando un poco, todavía se puede acceder a la información del caso de éxito [http://download.microsoft.com/download/f/1/f/f1f9101e-c4cd-400b-a7eb-2c71d221a627/LSE_WinServ03.pdf].

El caso es que según parece, una vez ocurrió el fallo del 8 de Septiembre de 2008 se empezó a barajar la posibilidad de saltar nuevamente a Linux de donde venían en la LSE previamente con el fin de ahorrar costes, pero la inversión realizada obligaba a continuar con el sistema que falló al menos de momento y hasta tener sustituto. Desde el 8 de Septiembre de 2008, el sistema no ha fallado.

Sin embargo, la dañada reputación, la petición de garantías respecto al uso de la LSE, y los posibles (y esto lo digo yo a título personal) bandazos de Accenture y Microsoft para depurar responsabilidades (si las hay), pudo hacer que la LSE con su nuevo director general a la cabeza moviera ficha hacia los entornos con los que trabajó unos años antes del "accidente" del 8 de Septiembre del 2008 y que se saben que funcionaban correctamente.

El argumento esgrimido (si no lo he traducido mal) por Steven J. Vaughan-Nichols defensor a ultranza de Linux y anti Microsoft indica que .NET Framework es incapaz de soportar procesos en tiempo real y que SQL Server no podrá llevarlo a cabo en ninguna de sus versiones [http://blogs.computerworld.com/london_stock_exchange_suffers_net_crash]:
"The programmers and serious database administrators in the audience can already see where this is going. Sorry, Microsoft, .NET Framework is simply incapable of performing this kind of work, and SQL Server 2000, or any version of SQL Server really, can’t possibly handle the world’s number three stock exchange’s transaction load on a consistent basis."

El resultado de todo lo sucedido hace un año es que la LSE ha terminado de adquirir totalmente hace poco más de un mes la empresa india MillenniumIT con sede en Sri Lanka por 18 millones de libras esterlinas [http://www.millenniumit.com/news/index.php?def_news=95 y http://www.londonstockexchange.com/about-the-exchange/media-relations/press-releases/2009/london-stock-exchange-group-to-acquire-millenniumit-for-us30m-18m.htm].

El dato curioso es que esta empresa se dedica al desarrollo de sistemas y aplicaciones bursátiles basándose en Linux/Unix, con Sun Solaris y Oracle como socios, concretamente con el producto Millennium Exchange [http://www.millenniumit.com/pdf/20090605_exchange.pdf].

Con esta adquisición, la LSE planea no solo ahorrar 10 millones de libras esterlinas anuales de gastos derivados y transaccionales a partir del 2011, sino que la compra de Millennium es para la LSE una fuente de ingresos y Know-How adicional que ahora sí tendrá gracias a la empresa que ha comprado y que posee una aplicación que podría revender o compartir con otras bolsas internacionales.

Sé que no tenemos toda la información, es más, seguro que las causas reales de lo que pasó nunca salgan a la luz, y también tengo claro que solo estamos teorizando y especulando, pero yo planteo preguntas al aire (hazte la tuya propia y trata de darla respuesta) y coméntala en voz alta con el punto de vista constructivo como objetivo siempre.

Lo que yo planteo son muchas preguntas, y son...

¿Es culpable de aquel fallo únicamente Microsoft que colaboró con Accenture en el proyecto?.
¿Es culpable únicamente Accenture?.
¿Es culpa de SQL Server que es incapaz y será incapaz de procesar en tiempo real la información de los procesos como afirma Steve?.
¿Es la plataforma .NET Framework incapaz de llevar a cabo operaciones transaccionales en tiempo real como ha indicado también Steve?.
¿Es culpable el sistema operativo de turno (Windows 2003 Server)?.
¿Falló la gestión del proyecto?.
¿Fue un fallo en el Software o en el Hardware lo que provocó el colapso el pasado 8 de Septiembre de 2008?.
¿Se realizaron test unitarios, test de funcionalidad, test de carga y pruebas fidedignas para un proyecto de esa naturaleza?.
¿Hubo calidad en el desarrollo del Software?.
¿Se mintió cuando se dijo que el sistema era capaz de mejorar el rendimiento, disponibilidad y agilidad de los procesos de la LSE que se hacían antes con Linux?.
¿Hubo sistemas redundantes capaces de continuar con los procesos detenidos o bloqueados, o como parece ser no los había (lo cual es MUY grave) o quizás sí los había pero fallaron?.
¿El diseño del entorno fue el culpable o debemos culpar a la plataforma .NET entera incluido SQL Server como hizo en nota de prensa el bueno de Steve?.
¿Tiene sentido seguir trabajando en el año 2008 con un SQL Server 2000 y más una empresa tan importante y que se gasta tanto dinero como la LSE?.
¿Falló todo?, ¿Infolect y TradElect o solo una parte [http://www.londonstockexchange.com/information-providers/technical-library/technical-specifications/tradelect-infolect.doc]?.
Pregunta conspiracional de turno (siempre tenemos que poner encima de la mesa todos los argumentos y descartarlos si acaso) ¿hubo mano negra en el sistema para que fallara y provocara el fallo en cadena que se produjo después de que las pruebas demostraran que el sistema era capaz de procesar ese volumen de información y más en tiempo real?.
¿Debemos olvidarnos de .NET, sistemas operativos Windows y SQL Server como bases de datos?.
¿Es malo el Software privativo y mucho mejor el Software no privativo?.
¿Somos los programadores de .NET tan pésimos?.
¿Hemos elegido los programadores de .NET la peor plataforma para desarrollar soluciones y aplicaciones Software?.

¿Dónde está el fallo?.

Yo tengo mis propias conclusiones con los pocos datos que tengo (y con tan pocos datos, seguramente mis conclusiones sean erróneas), pero prefiero que cada uno opine libremente lo que piensa y los que hayan tenido experiencia en el trabajo en tiempo real argumente o comente sus impresiones basados en sus experiencias o lo que sepan.

No se trata de buscar en sí culpables o mejores o peores, ganadores o perdedores, sino básicamente indicar dónde podrían estar los fallos para aprender de ellos, dónde debemos tener cuidado, o donde están las limitaciones para que sean conocidas por todos.

Un saludo.

Publicado por Jorge Serrano | 13 comment(s)
Archivado en:

Después de descargarme e instalar VS 2010 Beta 2 Express Edition para C#, VWD y VB en un Windows Vista 64 bits de forma satisfactoria, me he puesto a instalar un VS 2010 Beta 2 Ultimate en un Windows XP 32 bits.

La primera de las cosas que he de comentar es que la instalación de VS 2010 Beta 2 - Ultimate me mandó reiniciar el PC dos veces, algo que no me gustó mucho la verdad.
Otro aspecto a destacar es que una vez finalizado el proceso de instalación, el instalador nos devuelve un error con la instalación de Silverlight 3 si teníamos instaladas las Silverlight 3 SDK Tools para Visual Studio 2008 y Expression Blend 3. Podrás encontrar toda la información sobre este fallo en este enlace [http://blogs.msdn.com/amyd/archive/2009/10/21/visual-studio-2010-and-silverlight-3-sdk.aspx].
En las versiones Express Edition por otra parte, no he tenido ni el más mínimo problema.

Respecto al IDE, me parece más amigable (para los que no hayan probado la Beta 1) que VS 2008, y su acoplamiento con el TFS de turno es directo.
Simplemente he tenido que indicarle la url de mi tfs y me ha cogido a la primera y sin dudar todos los proyectos de equipo y ha asignado correctamente la ruta que tenía en mi VS 2008.
En resumen, ha funcionado perfectamente como era de esperar.

Respecto a la memoria usada, menos que en VS 2010 Beta 1, en concreto 256 Mb frente a los casi 540 Mb que ocupaba la Beta 1.
Lo gracioso es que si minimizo el IDE y lo vuelvo a restaurar, la ocupación de memoria baja hasta 5 veces.
No sé si es un comportamiento normal, pero me indican por otro lado que es posible que sea así para cargar en memoria algunos conjuntos globales para acceder a ellos más rápidamente.
Seguiré viendo esto no sea una fuga de memoria o cualquier otra cosa.

Volviendo al IDE nuevamente, el trabajo con el TFS y con la ventana del Explorador de Código Fuente es prácticamente la misma, apenas ha cambiado pese a que el IDE está reprogramado totalmente para WPF.
Si abro un proyecto del TFS creado con VS 2008, lo primero que me hace el IDE es actualizármelo (si quiero) a VS 2010 (como en versiones anteriores).

Aún y así, lo que me sigue sorprendiendo es el comportamiento de la memoria en VS 2010.
Si veo en el Administrador de tareas que mi VS 2010 tiene demasiada memoria asignada, minimizo para que se lance el proceso de liberación de memoria, algo que lanza en este caso el propio sistema operativo por debajo, y restauro. La diferencia de memoria consumida puede ser hasta 5 veces menos como me ha pasado a mí (haced la prueba).
Lo que sí hay que tener en cuenta es que Win32 ha dado paso a WPF con código manejado y que habrá algunos aspectos que deberán ser limados hasta la versión RTM, y que como es lógico, la aplicación consume más memoria para tracear y realizar procesos que no serán necesarios en la versión final, pero en términos generales, mucho más contento con esta Beta 2 que con la Beta 1 en cuanto a memoria consumida.

Finalmente, quiero comentar una opción que a veces pasa desapercibida.
Cuando iniciamos un nuevo proyecto (New Project), se abre una ventana donde podemos indicar la versión de .NET Framework que queremos utilizar (.NET Framework 2.0, .NET Framework 3.0, .NET Framework 3.5, .NET Framework 4.0 y More Frameworks).
La opción More Frameworks nos llevará a una página de Microsoft [http://msdn.microsoft.com/en-us/netframework/aa569263.aspx] dentro de la cual podremos lanzar la instalación de .NET Framework 3.5 SP1.
Recuerda que es muy recomendable actualizar .NET Frameowrk 3.5 a SP1 si no lo tienes, aunque a estas alturas casi todo el mundo lo tendrá instalado en sus sistemas.

Por último, quiero indicaros una url de Walkthroughs muy interesantes sobre VS 2010 y .NET Framework 4 Beta 2 [http://msdn.microsoft.com/es-es/vstudio/dd441784(en-us).aspx] y un enlace en español sobre la explicación de las versiones de Visual Studio 2010, más que nada para que no te pierdas [http://msdn.microsoft.com/es-es/ee692003.aspx].

Seguiremos estudiando el IDE, sus comportamientos, posibles bugs y más detalles.

Aprovechando la aparición de esta nueva Beta, los ejemplos que hice en el pasado CodeCamp 2009 en VS 2010 Beta 1, los haré, probaré y publicaré en mi blog con VS 2010 Beta 2.

Saludos.

 

¡Acabo de verlo en mi MSDN!

Microsoft ha puesto ya en MSDN el paquete Visual Studio 2010 Beta 2 Profesional (en inglés de momento). El problema es que aún no está disponible para la descarga, pero eso quiere decir que lo están preparando... :-)

Actualización: Ya están disponibles las descargas, incluida la versión Premium.

He visto que hay más cosas relacionadas con la Beta 2 de Visual Studio 2010 (.NET Framework 4.0 Beta 2 y otras cosillas) y es de suponer que vayan apareciendo en las próximas horas,... pero ya la tenemos ahí y que poco ha faltado para haberla podido usar en el CodeCamp 2009 de este fin de semana pasado... cachis...

Referencias

Acceso a MSDN (para subscriptores).

Hi all,

aquí estoy apurando las últimas horas del CodeCamp 2009 de Tarragona.

Mi valoración personal como ponente y asistente a algunas charlas es excelente.
No sé lo que opinará el resto, supongo que habrá de todo y que cada persona tendrá su propia opinión al respecto, pero yo lo que he olido, percibido y visto, es una satifacción general y una valoración bastante positiva de como se ha desarrollado todo.

Todos los asistentes, organizadores, ponentes, etc., han colaborado abiertamente sobre los posibles temas que pudieran aparecer (Mono, Windows, Silverlight, ASP.NET, ASP.NET MVC, Mobilidad, VB.NET, C#, accesibilidad Web, CRM, ... etc etc etc).

Ahora bien, estando aquí aparecen noticias o informaciones muy curiosas que sin tener que ver con el CodeCamp, son dignas de comentar por su "variedad" y su "curiosidad" (por llamarlo de alguna forma).

La primera de las noticias la podría resumir como un... "Amenábar, el director de cine español dice: I'm a PC", y es que según dice el diario El Pais: "...Sin ir más lejos, recuerda especialmente cómo hace unos años le "desaparecieron las primeras 30 páginas del tratamiento de Mar adentro en el Mac que tenía. Desde entonces, me pasé a PC"...". Es fantástico saber que hay gente que valora el entorno PC con mucho cariño. Pero claro, sin querer sangrar a la gente Mac, cosas como la que ha pasado con Snow Leopard estremece a más de uno, y es que según se lee en un blog de Macqueros, "Apple advierte que esta trabajando para solucionar el error en el Sistema Operativo que hace que cuando los usuarios entran como invitado en el Mac primero y luego accede a la cuenta normal (administrador) los datos del usuario desaparecen". Dentro de esta entrada del blog, se puede leer un comentario final bastante duro pero real: "Este es otro problema que se le encuentra al nuevo Snow Leopard con los que pierde credibilidad ante los Macqueros…". Para los incrédulos, Mac ha reconocido el error.

Y como estamos tratando "noticias" tecnológicas "curiosas", vamos con otra.
Facebook, Twitter y sitios así, son muy chulos. No los voy a inventar yo ahora, pero también son muy peligrosos de acuerdo a su uso.
Hace un tiempo apareció una noticia en los medios digitales sobre un ladronzuelo de Pensilvania, que el muy osado entró en la casa de su víctima con el fin de robarle, y que después de hacerlo, tuvo el coraje de entrar en su cuenta de facebook en el ordenador de su víctima y largarse sin cerrar su sesión... no está nada mal... ya que gracias a eso, se le pudo detener.
Esta noticia me recuerda a otra muy parecida cuyo olvidado ladrón no se dejó la sesión de facebook abierta, sino su móvil... También fué detenido como es lógico.

Y es que facebook es una herramienta muy valiosa no solo para RRHH, sino también para la policía, como puede desprenderse de la noticia aparecida muy recientemente en la que un caco buscado por el FBI, ha tenido la brillantísima idea de contar su fantástica vida de placeres en Cancún. Valiente este hombre que ha sido lógicamente detenido por el FBI ipso-facto, y más aún cuando entre la lista de sus contactos, estaba un ex oficial del departamento de Justicia. En fin... ver para creer...

Ahora bien... si algo merece la pena de ver y escuchar, es el video de la humorista Paz Padilla que en un programa de televisión empezó a contar muy en serio las bondades de Ubuntú (lo de la tilde en la última "u" es Paz Padilla copyright). No voy a decir nada... simplemente invitaros a ver el video porque no tiene desperdicio. Cada uno que haga su análisis. :-)

Y con esto, creo haber terminado las noticias frikis y curiosas durante una temporada... aunque pasan tantas cosas... que no sé si me aguantaré...

Saludos a todos desde el CodeCamp.

Referencias:

Acceso a la noticia del CodeCamp 2009 - Tarragona.

Acceso a la noticia del director de cine Amenábar.

Acceso a la noticia del blog CafeGuauGuau.

Acceso a la noticia oficial del error de Mac.

Acceso a la noticia del ladrón que dejó su sesión abierta en facebook.

Acceso a la noticia del ladrón que dejó su móvil en la casa de su víctima.

Acceso a la noticia del hombre buscado por el FBI que contaba como se lo pasaba de bien en Cancún.

Acceso al video de YouTube sobre Paz Padilla y el porqué Ubuntú es "asín".

Publicado por Jorge Serrano | 13 comment(s)
Archivado en:

Pues eso, que quizás te perdiste el pasado mes el Remix 2009 que realizó Microsoft en el SIMO (aquel evento que el año pasado no se pudo celebrar ante la crisis, pero que este año ha intentado replantearse el cómo hacerlo).

Si eres como yo, de los que no pudieron ir ya sea por estar en otro sitio o por cualquier otra razón, que sepas que puedes decargarte las ppts de las presentaciones dadas.

Más abajo encontrarás el enlace que te lleva a la página oficial de Microsoft del Remix 2009 en España para que puedas acceder a ese material.

¡Que lo disfrutes!

Referencias

Acceso al enlace directo del material de presentaciones, etc., del Remix 2009.

Publicado por Jorge Serrano | 1 comment(s)
Archivado en:

Ya se sabe que la guerra de las consolas o del espacio lúdico es una guerra de campo abierto.

El 1 de Octubre de 2009 se ha puesta a la venta la nueva versión de la consola portátil de Sony, hablo de la PSP Go.

Una de las novedades más controvertidas de la consola es la ausencia de lector UMD, lo que significa que para jugar a los juegos de PSP será necesario comprar los títulos a través del PSN o PlayStation Network, plataforma de red preparada por Sony para jugar a juegos en red y adquirir nuevos títulos entre otras características.

La nueva consola no está exenta de críticas respecto a dos temas fundamentales.

El primero de ellos tiene que ver con su batería, que Sony la ha incorporado "dentro" de la consola, tratando de evitar así el posible pirateo de la consola que permitiría ejecutar Software homebrew y juegos copiados ilegalmente.

El segundo de ellos tiene que ver con que para jugar a los juegos, debemos comprarlos en su red PSN, es decir, pasar por taquilla.

Sin embargo, Sony ha recibido tantas quejas que ha realizado dos procesos que benefician a los usuarios de una PSP GO, al menos temporalmente.

Por un lado y hasta el primer trimestre de 2010 incluido, un usuario de una PSP normal con un juego original en UMD y que ha adquirido una PSP GO, podrá descargarse uno de los 18 juegos que Sony ha puesto a disposición bajo esta promoción para la PSP GO. El problema es que esta acción solo la podrá realizar tres veces.

La segunda de las acciones temporales (y que me he encontrado de casualidad porque estaba un poco oculta) es que Sony ha hecho una oferta para adquirir el nuevo juego Gran Turismo totalmente gratuito. El problema es que esta oferta parece ser solo para Europa, aunque si eres un poco avispado, quizás creándote una cuenta de PSN como residente en Europa (España por ejemplo), es posible que el sistema "cuele" y te acepte la propuesta. Otro problema es que para estar dentro de la oferta, tienes de plazo hasta las 00:59 del 11/10/2009 (el periodo de promoción es de 10 días desde el 01/10/2009). Así que si te encuentras en esta situación... date prisa. ;-)

El caso es que Sony no creo que haya hecho las cosas bien con su PSP Go, de hecho, el aluvión de críticas que está cayendo sobre la marca nipona es realmente grande, y hay incluso grandes superficies en todo el mundo que están boicoteando a Sony PSP Go ya que entre otras cosas, obliga a los desarrolladores de juegos a que solo puedan usar la plataforma de Sony PSN para vender y distribuir sus juegos, llevándose una importante comisión por ello... ¿es esto competencia desleal?, ¿es esto el fin o el principio de una nueva forma de vender el Software lúdico?, ¿qué opina la Union Europea y otros organismos de esta forma de actuar?, ¿es lícito que solo exista una forma de adquirir Software y que las tiendas se queden en pañales?, ¿qué hacer con los juegos originales en UMD y que ya no valen para PSP Go?.

Muchas preguntas sin respuesta me temo.

Que cada uno piense lo que quiera.

Referencias:

Acceso al enlace de información de la oferta del juego Gran Turismo.

Publicado por Jorge Serrano | 6 comment(s)
Archivado en:

Es evidente que no me voy a quedar de brazos cruzados;

Como ya dejé constancia en otra entrada de otro blog en relación a este tema:

Lao Tsé: "Si das pescado a un hombre hambriento lo nutres durante una jornada. Si le enseñas a pescar, le nutrirás toda la vida."^

P.D.: Gracias Alejandro por levantar la liebre, sino se me habría pasado.

Refefencia:

Acceso a la iniciativa No al Recorte del Presupuesto en I+D.

Publicado por Jorge Serrano | 1 comment(s)
Archivado en:

Cuando trabajamos con fechas, nos vemos muchas veces empujados a trabajar con la fecha/hora del sistema local. Sin embargo, en muchas ocasiones, nos podemos encontrar con la necesidad de trabajar con la fecha/hora UTC partiendo de nuestra fecha/hora local.

Mucha gente, prefiere trabajar con fechas/horas UTC en lugar de las fechas/horas locales, y no les falta razón.

Imaginemos una aplicación Software distribuida internacionalmente en Ecuador y Madrid. La diferencia horaria es de 7 horas en horario verano. ¿Qué hacemos o qué podemos hacer con ciertas transacciones internas que a lo mejor se actualizan contra una base de datos compartida que está en Londres?.

Si imaginamos el escenario (en los blog de Geeks.ms dentro de las entradas se puede ver claramente esto que comento), un usuario que ha realizado una transacción a 7 horas de lejanía como por ejemplo Ecuador, puede tener un DateTime más temprano que el usuario que se encuentra 7 horas después en el orden horario en Madrid. ¿Y porqué debe ser primero Madrid que Ecuador en el ejemplo?, ¿sólo por que está más cerca del UTC que Ecuador?, ¿y porqué no utilizar como referencia el punto central UTC?.

Esto que a priori puede parecer trivial, se puede complicar mucho más.

¿Cómo resolver el problema?. Posiblemente tal y como hemos adelantado, utilizando las horas UTC (Coordinated Universal Time). Así, las zonas horarias quedan repartidas a lo largo de todo el mundo, y es fácil determinar que un evento se puede producir a una hora u otra a la derecha o izquierda del centro horario UTC, pero solo habrá una hora para todos, la hora UTC con independencia de la hora local en la que se produjo un determinado evento.

Quiero que sirva esta entrada, únicamente como reflexión de como podríamos trabajar con fechas/horas en nuestras aplicaciones Software y cómo .NET nos facilita esta tarea.

Para ello, empezaré por el final... es decir, por el resultado que quiero obtener y que es este:

En esta aplicación de Windows escrita en Visual Studio 2008 con C# como lenguaje de programación (y fácilmente traducible a VB.NET), en la que nos encontramos con 13 controles label y con 1 control listBox, dispuestos de forma ordenada dentro del formulario.

Los objetivos marcados son varios (partiendo de una fecha/hora local que en mi caso es la de mi ordenador de España):

  • Mostrar la fecha/hora UTC, que en el caso de España es UTC+2 en verano (aún estamos con ese horario hasta el cambio de fecha/hora que se producirá en breve), y UTC+1 para el resto del año.
  • Mostrar todas las zonas horarias en un control listBox. Cuando seleccionemos un elemento de la lista, se mostrará la fecha/hora del país o zona horaria a partir de la fecha/hora UTC calculada anteriormente.
  • Finalmente y como agregado al proyecto de ejemplo, mostraremos la fecha/hora en formato cultural de Estados Unidos y de Alemania.

Ahora... manos a la obra que empieza lo divertido...

  • Lo primero que hacemos es recuperar la fecha/hora local de España tal y como decía. Si estás en otra parte del mundo, tendrás la fecha/hora de donde te encuentres, siempre y cuando lo tengas así configurado en tu sistema.
// UTC - Universal Time, Coordinated
// http://en.wikipedia.org/wiki/Coordinated_Universal_Time

// Extraemos la fecha/hora de acuerdo al sistema local (situado en España)
// (UTC+2 en España en verano)
// (UTC+1 en España el resto del año)
DateTime localDateTime = DateTime
.Now;
localDateTime = localDateTime.ToLocalTime();
this.lblLocalDateTime.Text = localDateTime.ToString();

Nada que destacar aquí, ya que se trata de recoger los datos de fecha y hora actual. Lo único a comentar es el método ToLocalTime(), que lo hemos utilizado para convertir el objeto DateTime a la fecha/hora local. Poco que destacar, pero lo pongo para que se sepa que existe ese método.

  • Lo siguiente que haremos será convertir la fecha/hora local a su fecha UTC.

// Convertimos de fecha/hora local a su UTC correspondiente.
DateTime
 utcDateTime = localDateTime.ToUniversalTime();
this.lblUtcDateTime.Text = utcDateTime.ToString();

Aquí podemos ver que utilizamos el método ToUniversalTime(), que lo utilizamos para lograr nuestro propósito, convertir una fecha/hora local a su fecha/hora UTC. 

  • La siguiente acción a acometer es rellenar el control listBox con los identificadores de las zonas horarias, para que podamos seleccionar uno de ellos y podamos así obtener la fecha/hora de la zona horaria seleccionada:

// Obtenemos la lista de ids de TimeZoneInfo
ReadOnlyCollection<TimeZoneInfo> timeZoneInfoCollection = TimeZoneInfo
.GetSystemTimeZones();            
this.listBox1.ValueMember = "TimeZoneInfo.Id"
;
this.listBox1.DisplayMember = "TimeZoneInfo.BaseUtcOffset"
;
this.listBox1.DataSource = timeZoneInfoCollection.ToList(); 
  • Evidentemente, deberemos hacer algo para que al seleccionar la zona horaria, seleccionemos la fecha/hora correspondiente a partir de la fecha/hora UTC (lógicamente).
  • Recordemos que la fecha/hora UTC es la que se situaría en el centro teórico a partir del cual están repartidas las zonas horarias, por lo que para seleccionar una fecha/hora de una zona horaria, deberemos tomar como referencia la fecha/hora UTC. 
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    
// De acuerdo a la seleccide la zona horaria, cambiamos la
    
// fecha/hora con respecto a la fecha/hora UTC
    TimeZoneInfo timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById(this
.listBox1.SelectedValue.ToString());
    
DateTime worldDateTime = TimeZoneInfo.ConvertTimeFromUtc(Convert.ToDateTime(this
.lblUtcDateTime.Text), timeZoneInfo);
    
this
.lblWorldDateTime.Text = worldDateTime.ToString();
    
this.lblWordPlace.Text = this
.listBox1.SelectedValue.ToString();
// listBox1_SelectedIndexChanged

  • Para concluir, seleccionaremos la fecha/hora en formato USA y formato de Alemania, a partir de la fecha/hora local (España). 
// Mostamos el formato de fecha en formato USA (MM/dd/yyyy...)
CultureInfo usaCulture = CultureInfo.CreateSpecificCulture("en-US"
);
DateTime usaFormatDateTime = Convert.ToDateTime(this
.lblLocalDateTime.Text);
this
.lblUsaFormatDateTime.Text = usaFormatDateTime.ToString(usaCulture.DateTimeFormat);

// Mostramos el formato de fecha en formato Germany (dd.MM.yyyy...)
CultureInfo germanyCulture = CultureInfo.CreateSpecificCulture("de-DE"
);
this.lblGermanyFormatDateTime.Text = Convert.ToDateTime(this.lblLocalDateTime.Text).ToString(germanyCulture.DateTimeFormat);
  • Como podemos observar, trabajar con fechas/horas en .NET es realmente fácil, y trabajar con fechas/horas UTC como referencia es no solo fácil, sino también recomendado.
  • Espero que este sencillo ejemplo/demostración sirva para que reflexionemos a la hora de trabajar con fechas/horas en nuestras aplicaciones Software y cuales podrían ser las mejores recomendaciones de cara al trabajo con aplicaciones geográficamente separadas.
Referencias:

Acceso a la wikipedia para saber más sobre UTC.

Me llega una información de Lisa Feigenbaum (Program Manager de Microsoft) de un repositorio de cursos, tutoriales, laboratorios, ejemplos en C# y VB.NET y videos sobre diferentes tecnologías de Microsoft, incluyendo Visual Studio y .NET Framework.

Este material puede ser utilizado en eventos, charlas o incluso code-camps, como por ejemplo el futuro Code-Camp de Tarragona 2009 del que espero que te hayas apuntado.

Las casi 40 presentaciones están en inglés y han sido recopiladas por diferentes personas, entre las que está Doug Turnure (del equipo de Marketing).

Espero que la información te resulte muy útil.

Referencias:

Acceso directo a los cursos y materiales.

No me quiero extender mucho, pero durante estas dos últimas semanas en las que he estado de vacaciones, he desconectado bastante y he refrescado algunas de las cosas en las que pienso diariamente en mi trabajo.

Una de esas cosas es el trabajo en equipo.

El trabajo en equipo es fundamental en nuestro día a día, sea cual sea la tarea que tengamos encomendada, aunque cuando se habla de desarrollo Software y más concretamente cuando trabajamos varias personas en un mismo proyecto, vemos que el trabajo en equipo es crucial.

No quiero extenderme mucho contando las bondades del trabajo en equipo, y bla bla bla, pero sí me gustaría mostrar un video espectacular que demuestra eso mismo... el trabajo en equipo.

Es un video de la selva en su estado más puro y salvaje, donde las reglas se reducen a una... la supervivencia. Los humanos somos "a veces" un poco más racionales y no llegamos a esos extremos (aunque a veces creo que sí), pero creo que el video refleja crudamente el título de esta entrada,... el trabajo en equipo puede resolver los contratiempos.

Espero que lo disfruteis.

Referencias:

Acceso directo al video (YouTube).

Publicado por Jorge Serrano | 1 comment(s)
Archivado en:

Imaginemos que tenemos el logo de una empresa, y que queremos crear una página Web corporativa partiendo de los colores del logo... ¿cómo lo podemos hacer?.

Hay muchas posibilidades, pero hay una muy interesante que he encontrado de casualidad y que quiero compartir.

Se trata de una página Web en la cual indicamos la Url de la imagen y le indicamos la gama de colores que queremos extraer (5, 10, 15 ó 20).

Pulsamos el botón correspondiente, y en pocos segundos aparecerá la misma página Web con la imagen de la Url indicada y la gama de colores que ha extraído a partir de ella.

Los colores se extraen en 4 grupos con su color y su código HTML: gama de colores brillantes, gama de colores originales, gama de colores opacos, y gama de colores complementarios.

A mí me ha parecido un recurso muy útil y curioso, y espero que le sirva a más gente.

Referencias:

Acceso directo a la web para extraer la gama de colores de una determinada imagen.

Acceso corto a la misma página web.

Publicado por Jorge Serrano | con no comments
Archivado en: ,

Microsoft ha publicado la versión Preview 2 de su paquete ASP.NET MVC 2.

La novedad es que esta versión para Visual Studio 2008 SP1, será incluida en la Beta 2 de Visual Studio 2010 y que se supone aparecerá en breve.

Microsoft indica además, que la versión de ASP.NET MVC 2 RTM será incluida en Visual Studio 2010 RTM.

Recordemos que ASP.NET MVC 2 es un framework para desarrollar aplicaciones Web fácilmente testables y mantenibles a través del patrón MVC (Model-View-Controller).

La filosodía de MVC es la separación de las partes de una aplicación Web: La UI o interfaz de usuario usando la vista, el manejo de las entradas de usuario a través del controlador, y la lógica de control a través del modelo.

Referencias:

Acceso a la wikipedia para explicar en español el significado de MVC.

Acceso directo a CodePlex para acceder al proyecto ASP.NET MVC 2.

Acceso directo a la descarga de ASP.NET MVC 2 (2.1 Mb).

Publicado por Jorge Serrano | con no comments
Archivado en:

Microsoft tiene un producto que para muchos ha pasado desapercibido y que resulta especialmente interesante a la vez que útil para otros, especialmente para la comunidad de desarrolladores o para aquellos que quieren empezar a trabajar con ASP.NET y que no saben como hacerlo, o incluso para aquellos que quieren montar un sitio Web rápidamente o instalar algunos componentes para el desarrollo Web, ya sean en su versión RTM o versión RC.

Microsoft Web PI v2.0 o Microsoft Web Platform Installer v2.0, es un paquete gratuito elaborado por Microsoft y soportado en 9 idiomas, que contiene las partes o componentes fundamentales de una plataforma Web de Microsoft.

Este paquete incluye IIS (Internet Information Services), SQL Server 2008 Express Edition, .NET Framework, y Visual Web Developer 2008.

Adicionalmente, permite instalar también aplicaciones Web gratuitas para blogs, gestión de contenidos, etc, e incluso PHP.

En esta ocasión y para conocerlo más aún, os indico tres enlaces del blog de Pietro Brambati, quien nos explica en inglés algunas de sus características y como instalarlo en Windows XP y Windows 7.

Respecto a la instalación, la descarga se realiza a través de un lanzador que ocupa apenas 85 Kb y que lanza la aplicación de instalación que se conectará por Internet para descargar aproximadamente 1 Mb de instalador. A partir de aquí, se iniciará un asistente desde el cual podremos seleccionar la parte o las partes principales que queremos instalar. Evidentemente, necesitaremos estar conectados a Internet para instalar la parte o las partes que hemos seleccionado.

Referencias:

Acceso directo a la web oficial de Microsoft de Web Platform Installer.

Acceso al blog de Pietro Brambati sobre Microsoft Web Platform Installer v2.0.

Acceso al blog de Pietro Brambati sobre Microsoft Web Platform Installer v2.0 para Windows XP.

Acceso al blog de Pietro Brambati sobre Microsoft Web Platform Installer v2.0 para Windows 7.

Acceso a las partes gratuitas adicionales que se pueden instalar con Web PI v2.0.

Publicado por Jorge Serrano | 3 comment(s)
Archivado en: