Empezando con humor el día…

Para las cuentas de VBPrincipiantes, estoy usando Google Hosted. Para quien no lo sepa, es el sistema de hosting para emails que google nos proporciona gratuitamente, tiene un limite de 25 correos, cada uno de ellos de 2 GB de capacidad, con posibilidad a tener listas de correo, pseudónimos, y alguna cosilla más.


El cliente Web es el de GMail y, a pesar que uso el Outllook 2007, el otro día entre en él, entre otras cosas, porque cuando descargo los mails desde el Outlook en el servidor los mantiene como No leídos.


El caso esque yo estaba con mi maravillosa conexión de 56kb a internet, que se desconecta cuando le da por ahí, y navegando por el cliente Web de GMail… y claro… a mi conexión le apeteció desconectarse.


Pero lo importante de está historia no es que mi conexión es de 56KB y se desconecta cada 5 min, lo importante es el mensaje de error que salió a continuación en la aplicación de GMail:


«‘¡Horror! La página se ha corropompido»


La verdad si analizamos ese mensaje se me ocurren muchas preguntas…


¿De dónde han sacado la palabra corrompido?


Yo, la verdad no lo se, esa palabra no existe, aunque me imagino su «significado»


¿Quién traduce GMail?


¿Alguien que tenga a mano un diccionario de español?, lo dudo…


Y mi última pregunta… ¿Porqué es un horror?


Puede ser una Alerta, un Error, ¿Pero un horror…?


La verdad, yo ese mensaje lo pondría así:


Error: La página está corrupta (aunque no lo tengo muy claro)


Bueno eso fue el otro día… hoy intentando que ese horror, perdón error, volviese a salir para poder compartirlo con vosotros me encontre con uno nuevo.


Os cuento lo que hice para que saltase ese herror (huy! perdonad entre tanto horror y error ya me confundo…)


Abrí mi cuenta de GMail, y una vez que estaba cargada en el menú archivo active el «Trabajar sin conexión». El caso es que salió un error, sin problemas, que decía algo así como que se ha perdido la conexión… el caso es que cuando desactive el trabajar sin conexión el mensaje cambio a:


«… hemos vuelto»


Ahora mis preguntas son:


¿Quién ha vuelto y de dónde?


Preguntas sin respuesta…


Saludos

¿Qué hay debajo de Atlas?

Antes de leer: Recomiendo la descarga del código fuente para poder ver el código más cómodamente: Descárgalo aquí


En este artículo vamos a ver cómo funciona Atlas por debajo, analizando el código HTML que se genera en ejecución de un sencillo ejemplo:




 


 Que hay debajo de Atlas - Figura 1


 


Para quien aún no sepa que es Atlas, es la tencología de Microsoft para impplementar la metodología AJAX (Asynchronous JavaScript and XML). Destaco metodología ya que en numerosas webs lo confunden con una nueva tecnología, cuando se trata de la metodología de uso de unos estándares que llevan tiempo usandose.


 


Ahora, sin mas explicación, vamos a ver el código en modo de diseño de nuestro ejemplo:


 








1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<%@ Page Language=»VB» AutoEventWireup=»false» CodeFile=»Default.aspx.vb» Inherits=»_Default» %>

<%@ Register Assembly=»Microsoft.Web.Atlas» Namespace=»Microsoft.Web.UI.Controls»
TagPrefix=»cc2″ %>

<%@ Register Assembly=»Microsoft.Web.Atlas» Namespace=»Microsoft.Web.UI» TagPrefix=»cc1″ %>

<!DOCTYPE html PUBLIC «-//W3C//DTD XHTML 1.0 Transitional//EN» «http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd»>

<html xmlns=»http://www.w3.org/1999/xhtml» >
<head id=»Head1″ runat=»server»>
<title>Ejemplo de Atlas</title>
</head>
<body>
<form id=»form1″ runat=»server»>
<cc1:ScriptManager ID=»ScriptManager1″ runat=»server» EnablePartialRendering=»True»>
<ErrorTemplate>
<div style=»border-right: #000000 1px solid; padding-right: 12px; border-top: #000000 1px solid;
padding-left: 12px; padding-bottom: 12px; border-left: #000000 1px solid; width: 400px;
padding-top: 12px; border-bottom: #000000 1px solid; height: 140px; background-color: white;
text-align: left»
>
Ha ocurrido un error.
<asp:LinkButton ID=»okButton» runat=»server»>Aceptar</div>
</ErrorTemplate>
</cc1:ScriptManager>
<cc2:TimerControl ID=»TimerControl1″ runat=»server» Interval=»1000″>
</cc2:TimerControl>
<cc1:UpdatePanel ID=»UpdatePanel1″ runat=»server»>
<ContentTemplate>
</asp:Label ID=»Label1″ runat=»server»>
</ContentTemplate>
</cc1:UpdatePanel>
</form>
</body>
</html>
 


Y el código de servidor:



 







1
2
3
4
5
6
7
Partial Class _Default
Inherits System.Web.UI.Page

Protected Sub TimerControl1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles TimerControl1.Tick
Label1.Text = Now.ToString()
End Sub
End Class
 



 


Las directivas es lo primero que tenemos que ver:


 








1
2
3
4
<%@ Page Language=«VB» AutoEventWireup=«false» CodeFile=«Default.aspx.vb» Inherits=«_Default» %>
<%@ Register Assembly=«Microsoft.Web.Atlas» Namespace=«Microsoft.Web.UI.Controls»
TagPrefix=«cc2» %>
<%@ Register Assembly=«Microsoft.Web.Atlas» Namespace=«Microsoft.Web.UI» TagPrefix=«cc1» %>
 


 


Como podéis observar hay tres directivas, la directiva Page y dos directivas Register. Las directivas Register son las que registran los namespace para que puedan ser usados en la página.


 


Lo siguiente que debemos ver es el control ScriptManager:


 







1
2
3
4
5
6
7
8
9
10
        <cc1:ScriptManager ID=»ScriptManager1″ runat=»server» EnablePartialRendering=»True»>
<ErrorTemplate>
<div style=»border-right: #000000 1px solid; padding-right: 12px; border-top: #000000 1px solid;
padding-left: 12px; padding-bottom: 12px; border-left: #000000 1px solid; width: 400px;
padding-top: 12px; border-bottom: #000000 1px solid; height: 140px; background-color: white;
text-align: left»
>
Ha ocurrido un error.
<asp:LinkButton ID=»okButton» runat=»server»>Aceptar</div>
</ErrorTemplate>
</cc1:ScriptManager>
 


 


El control ScriptManager es el encargado de enviar al cliente el Framework necesario para que la aplicación funcione. Tiene una plantilla configurable, ErrorTemplate, que es la que se mostraría en caso de error con algún control de Atlas. En nuestro caso se mostraría así la página:


 



Que hay debajo de Atlas - Figura2


 


El control con el ID okButton es el encargado de cerrar el mensaje de error.


 








1
2
<cc2:TimerControl ID=»TimerControl1″ runat=»server» Interval=»1000″>
</cc2:TimerControl>


 


El control TimerControl1 lo hemos configurado para un intervalo de un segundo. Gestionamos su evento Tick con el siguiente código de servidor:









1
2
3
    Protected Sub TimerControl1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles TimerControl1.Tick
Label1.Text = Now.ToString()
End Sub


 


Lo que nos queda por ver de nuestro código es el UpdatePanel:


 








1
2
3
4
5
        <cc1:UpdatePanel ID=»UpdatePanel1″ runat=»server»>
<ContentTemplate>
</asp:Label ID=»Label1″ runat=»server»>
</ContentTemplate>
</cc1:UpdatePanel>


 


El ContentTemplate contiene el label que será modificado en el evento Tick del TimerControl1.


 


Ahora vamos a ver el código HTML que se genera al ejecutar la página:


 








1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<!DOCTYPE html PUBLIC «-//W3C//DTD XHTML 1.0 Transitional//EN» «http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd»>

<html xmlns=»http://www.w3.org/1999/xhtml»>
<head id=»Head1″>
<title>Ejemplo de Atlas </title>
<style type=»text/css»>
.atlas__delta { font-family:Lucida Console; }
</style>
</head>
<body>
<form name=»form1″ method=»post» action=»Default.aspx» id=»form1″>
<div>
<input type=»hidden» name=»__EVENTTARGET» id=»__EVENTTARGET» value=»» />
<input type=»hidden» name=»__EVENTARGUMENT» id=»__EVENTARGUMENT» value=»» />
<input type=»hidden» name=»__VIEWSTATE» id=»__VIEWSTATE» value=»/wEPDwUKLTk0MDE4NzkyOWRk9EIOzqMN99vC4R+EqZ/Z/mUuyzc=» />
</div>
<script type=»text/javascript»>
<!–
var theForm = document.forms[‘form1’];
if (!theForm) {
theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
// –>
</script>

</script src=»/AtlasJulio/WebResource.axd?d=_PQ3CYIRUazJB7M6SiIjSsYYjP76qKiR4TS1JTMp7m94q5o4IXP-fdF-NN6itFcADBLWhsNeag0rmZqQpUTFRiQiz894ql0Srt0Xs2KYgV01&amp;t=632899634700000000″
type=»text/javascript»>

</script src=»atlasglob.axd» type=»text/javascript»>

<table id=»__ErrorContainer» style=»display: none; margin: auto; text-align: center;»>
<tbody>
<tr>
<td>
<div style=»border-right: #000000 1px solid; padding-right: 12px; border-top: #000000 1px solid;
padding-left: 12px; padding-bottom: 12px; border-left: #000000 1px solid; width: 400px;
padding-top: 12px; border-bottom: #000000 1px solid; height: 140px; background-color: white;
text-align: left»
>
Ha ocurrido un error. <a id=»__ErrorContainer_okButton» href=»javascript:__doPostBack(‘__ErrorContainer$okButton’,»)»>
Aceptar</div>
</td>
</tr>
</tbody>
</table>
<div id=»UpdatePanel1″>
</span id=»Label1″>
</div>
<div>
<input type=»hidden» name=»__EVENTVALIDATION» id=»__EVENTVALIDATION» value=»/wEWAgLC49/9AgLQ4paJD3Bo5bbGWI5+cu56TzJXcuS9oH3J» />
</div>

<script type=»text/xml-script»>
<page xmlns:script=»http://schemas.microsoft.com/xml-script/2005″>
<components>
<pageRequestManager id=»_PageRequestManager» updatePanelIDs=»UpdatePanel1″ asyncPostbackControlIDs=»» scriptManagerID=»ScriptManager1″ form=»form1″ errorContainerID=»__ErrorContainer» />
<timer interval=»1000″ enabled=»true»>
<tick>
<postBack target=»TimerControl1″ eventArgument=»» />
</tick>
</timer>
<control id=»__ErrorContainer» visibilityMode=»Collapse»>
<bindings>
<binding dataContext=»_PageRequestManager» dataPath=»inErrorMode» property=»visible» />
</bindings>
</control>
<button id=»__ErrorContainer_okButton»>
<click>
<invokeMethod target=»_PageRequestManager» method=»clearError» />
</click>
</button>
</components>
</script>

<script type=»text/javascript»>
</script>

</form>
</body>
</html>


 


Lo primero que vemos importante en este código son una serie de campos ocultos:


 








1
2
3
<input type=»hidden» name=»__EVENTTARGET» id=»__EVENTTARGET» value=»» />
<input type=»hidden» name=»__EVENTARGUMENT» id=»__EVENTARGUMENT» value=»» />
<input type=»hidden» name=»__VIEWSTATE» id=»__VIEWSTATE» value=»/wEPDwUKLTk0MDE4NzkyOWRk9EIOzqMN99vC4R+EqZ/Z/mUuyzc=» />


 


Son los campos ocultos de ASP.NET (EventTarget, EventArgument y el famoso ViewState), necesarios para que el sistema de eventos de ASP.NET funcione junto con un Script que hace los PostBacks y genera el ViewState para que la página pueda ser recuperada en el servidor:


 








1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
        <script type=»text/javascript»>
<!–
var theForm = document.forms[‘form1’];
if (!theForm) {
theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
// –>
</script>
 


Lo siguiente que vemos ya es más interesante para el tema que tratamos ahora:


 








1
2
3
        </script src=»/AtlasJulio/WebResource.axd?d=_PQ3CYIRUazJB7M6SiIjSsYYjP76qKiR4TS1JTMp7m94q5o4IXP-fdF-NN6itFcADBLWhsNeag0rmZqQpUTFRiQiz894ql0Srt0Xs2KYgV01&amp;t=632899634700000000″
type=»text/javascript»>
</script src=»atlasglob.axd» type=»text/javascript»>
 


 


Esos Scripts importan el Framework de Atlas a nuestra página.


 


Si seguimos mirando nos encontramos con una tabla oculta:


 








1
2
3
4
5
6
7
8
9
10
11
12
13
14
        <table id=»__ErrorContainer» style=»display: none; margin: auto; text-align: center;»>
<tbody>
<tr>
<td>
<div style=»border-right: #000000 1px solid; padding-right: 12px; border-top: #000000 1px solid;
padding-left: 12px; padding-bottom: 12px; border-left: #000000 1px solid; width: 400px;
padding-top: 12px; border-bottom: #000000 1px solid; height: 140px; background-color: white;
text-align: left»
>
Ha ocurrido un error. <a id=»__ErrorContainer_okButton» href=»javascript:__doPostBack(‘__ErrorContainer$okButton’,»)»>
Aceptar</div>
</td>
</tr>
</tbody>
</table>
 


Se trata de la que se mostrará en caso de que haya un error en la actualización. Y más adelante una capa:


 








1
2
3
        <div id=»UpdatePanel1″>
</span id=»Label1″>
</div>
 


Es, como podéis observar, el UpdatePanel de nuestra página con su respectivo Label1 dentro.


 


Y ahora toca lo interesante:


 








1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
        <script type=»text/xml-script»>
<page xmlns:script=»http://schemas.microsoft.com/xml-script/2005″>
<components>
<pageRequestManager id=»_PageRequestManager» updatePanelIDs=»UpdatePanel1″ asyncPostbackControlIDs=»» scriptManagerID=»ScriptManager1″ form=»form1″ errorContainerID=»__ErrorContainer» />
<timer interval=»1000″ enabled=»true»>
<tick>
<postBack target=»TimerControl1″ eventArgument=»» />
</tick>
</timer>
<control id=»__ErrorContainer» visibilityMode=»Collapse»>
<bindings>
<binding dataContext=»_PageRequestManager» dataPath=»inErrorMode» property=»visible» />
</bindings>
</control>
<button id=»__ErrorContainer_okButton»>
<click>
<invokeMethod target=»_PageRequestManager» method=»clearError» />
</click>
</button>
</components>
</script>


 


Es un Script en formato XML. SI lo observamos detenidamente veremos como funciona:


 







1
<page xmlns:script=»http://schemas.microsoft.com/xml-script/2005″>


 


Se importa el esquema del XML y acto seguido se abre la etiqueta components. El primer componente que veremos es el pageRequestManager:


 







1
    <pageRequestManager id=»_PageRequestManager» updatePanelIDs=»UpdatePanel1″ asyncPostbackControlIDs=»» scriptManagerID=»ScriptManager1″ form=»form1″ errorContainerID=»__ErrorContainer» />


 


Como podemos observer contiene que controles usarán las respuestas asincrónicas, como se llama el scriptManager, el nombre del form y el nombre de la tabla que contiene el mensaje en caso de error.


 


El siguiente es el Timer:


 








1
2
3
4
5
    <timer interval=»1000″ enabled=»true»>
<tick>
<postBack target=»TimerControl1″ eventArgument=»» />
</tick>
</timer>
 


Incluye el intervalo de actualización, y su nombre. Vemos luego otros dos nuevos controles:


 








1
2
3
4
5
6
7
8
9
10
    <control id=»__ErrorContainer» visibilityMode=»Collapse»>
<bindings>
<binding dataContext=»_PageRequestManager» dataPath=»inErrorMode» property=»visible» />
</bindings>
</control>
<button id=»__ErrorContainer_okButton»>
<click>
<invokeMethod target=»_PageRequestManager» method=»clearError» />
</click>
</button>


 


El __ErrorContainer es el que se mostrará en caso de error y el __ErrorContainer_okButton es el que se usará para cerrar el mensaje de error.


 


Por último y como anécdota. El código HTML generado en ejecución (el mostrado en este ejemplo) lo he guardado en un archivo llamado Default.aspx.htm y al ejecutarlo funciona perfectamente, cada un segundo se actualiza la hora de la página:


 



Que hay debajo de Atlas - Figura3


 


He conseguido el JavaScript del Framework de Atlas y os lo dejo disponible para descargar. Lo hubiese incluido en el Post, pero ocupa 237 páginas de Word… y casi como que no… ¿no creéis?


 


Descargas:



Nota: Para la edición de este artículo me baso única y exclusivamente en la lectura y posterior interpretación del código ASP.NET y HTML, basándome en mis conocimientos de HTML, JavaScript, ASP.NET, la metodología AJAX y Atlas. 

MSCoder, una nueva revista especializada

MSCoder es una revista especializada en programación para las plataformas de Microsoft que apartir del 2 de octubre encontraremos en nuestros kioscos.

Esta revista, editada en tres idiomas (Español, francés y alemán), tratará sobre todos los aspectos de los sistemas de Microsoft. Mostrando las ventajas y desventajas de dichos sistemas y plataformas. Enseñaran cómo sacar provecho de los aspectos menos documentados y su posible empleo.

Además cada uno de los 6 números anuales incluirán un CD con gran cantidad de material adicional, documentacion, tutoriales y licencias.

Podéis informaros más en www.mscoder.org/es.

Además si queréis recibir los números antes de su publicación puedes inscribirte como betatester para recibirlos en formato PDF.

Como validar si un objeto implementa una interfaz (sin usar Reflection)

Bruno nos contaba hoy como validar si un objeto implementa una intefaz.


De paso que pruebo el Plugin de WLW os doy otra opción sin usar Reflection.


Ya comenta Rodrígo de hacerlo de esta forma y yo os enseño el código. Parece que es mucho más código, pero en realidad la comprobación es la función Comprobar().

‘Esta es la intefaz que vamos a utilizar.
Public Interface IClase
Property name() As String
End Interface

‘Esta es la clase que la implmenta
Public Class Clase_1
Implements IClase

Private _name As String

Public Property name() As String Implements IClase.name
Get
Return _name
End Get
Set(ByVal value As String)
_name = value
End Set
End Property
End Class

‘Esta es una clase que no la implementa
Public Class Clase_2
Private _name As String

Public Property name() As String
Get
Return _name
End Get
Set(ByVal value As String)
_name = value
End Set
End Property
End Class

‘Y aquí tenemos el ejemplo
Public Class Form1

‘Esta es la función para comprobar
Public Function Comprobar(ByVal Obj As Object) As Boolean
Try
Dim NewObj As Object
NewObj = CType(Obj, IClase)
Catch ex As Exception
Return False
Exit Function
End Try
Return True
End Function

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim Clase1 As New Clase_1()
Dim Clase2 As New Clase_2()

Dim _msg As String

If Comprobar(Clase1) Then
_msg = «Clase1 SI implmenta la intefaz» & Chr(13)
Else
_msg = «Clase1 NO implmenta la intefaz» & Chr(13)
End If

If Comprobar(Clase2) Then
_msg += «Clase2 SI implmenta la intefaz»
Else
_msg += «Clase2 NO implmenta la intefaz»
End If

MsgBox(_msg)
End Sub
End Class

Eso es todo [:D], espero que os sea útil.

Windows Live Writer y el código coloreado…

Bueno… siguiendo con el tema de los editores que tanto nos está gustando últimamente…


Han comentado en el blog de Rodrigo Corral que existe un plugin para Windows Live Writer que colorea el código… se trata de Buayacorp y lo he añadido a este post para que lo podáis descargar y probarlo.


Añade a Windows Live Writer (apartir de ahora WLW) una nueva opción:


Plugin de Windows Live Writer


Esta es la ventana donde escribimos el código (tiene varios lenguajes disponibles):


Ventana principal del Plugin


Y aquí tenéis el código coloreado:


Ventana con código C# coloreado


Y además es configurable:


Ventana de configuración del plugin


Espero que para los que uséis WLW, como yo, os sea útil :D.


 


Nota: Estas imagenes has sido tomadas de http://www.buayacorp.com/archivos/plugin-coloreador-de-sintaxis-para-windows-live-writer/.

Primera ojeada a &quot;Atlas&quot; Control Toolkit

Nota: Este artículo se refiere a la versión 1.0.60731.0 de "Atlas Control Toolkit".

En esta última versión del "Atlas" Control Toolkit han añadido cinco nuevos controles a la colección:

  • DynamicPopulate:

Este control reemplaza el contenido de un control con el resultado de un web service o de una llamada a un método de la página.

Ejemplo de DynamicPopulate

  • FilteredTextbox:

Previene que un usuario escriba carácteres inválidos en un textbox. Aún poniendo este control es necesaria una validación dado que si el usuario tiene deshabilitado el JScript este control no funcionará.

Ejemplo de FilteredTextbox

  • PagingBulletedList:

Ordena un BulletedList en diferentes páginas. Incluye en la parte superior las letrás por las que empiezan las palabras de cada página. Tiene diferentes opciones de personalización.

Ejemplo de PagingBulletedList

  • PasswordStrength:

Indica si una contraseña cumple unas determinadas características (número de caracteres alfanuméricos, número de caracteres especiales, etc.). Tiene diferentes formas de mostrarlo entre ellas gráficamente.

Ejemplo de PasswordStrength

  • Rating:

Permite hacer una valoración seleccionando una estrella entre cinco (al estilo de la valoración de Geeks.ms pero a estilo Atlas, si postback).

Ejemplo de Rating

 

Además esta versión del "Atlas" Control Toolkit permite hacer test.

Más información aquí.

 

Para ver el resto de ejemplos ir al sitio web de ejemplo y además lo podéis descargar el "Atlas" Control Toolkit aquí.

Editor avanzado en Geeks.ms

El otro día comentabamos Bruno y yo en su blog, sobre el editor que tenemos ahora en Geeks.ms tras la actualización a la versión 2.1. Echabamos en falta el cambio de colores, fuentes, etc. Y como alternativa, Bruno, nos daba el Windows Live Writer (Beta, muy estable por cierto [;)]).


El caso es que he encontrado una solución, para ello tenemos que modificar una opción en nuestro perfil de usuario. Os marco los pasos a seguir:



  1. Iniciamos sesión en Geeks.ms si no la hemos iniciado ya.
  2. Hacemos click en nuestro nombre (en la parte superior derecha de la página) para entrar en nuestro perfil de usuario.
  3. Accedemos al «tab» Site Options
  4. Y por último cambiamos la opción Content Editor a Enhanced para configurar el avanzado.

Eso es todo, ahora tendremos un editor más completito.


PD: No os olvidéis guardar los cambios en la parte inferior de la página [:D]

Advertencia sobre Geeks.ms

Trás la actualización de Geeks.ms a Community Server 2.1, ha aparecido en la página de edición del perfil de usuario un nuevo skin, el último de la lista. El nombre hace refencia al color verde, y como últimamente soy un poco adicto a dicho color (mi blog, C#, etc.) pues lo configuré… a partir de ahí no me paró Geeks.ms de dar errores, yo pensaba que el problema era del servidor, ya que el error que experimento dice:

"We are currently unable to serve your request

We apologize, but an error occurred and your request could not be completed.

This error has been logged. If you have additional information that you believe may have caused this error please report the problem here."

Tras toda la tarde sin poder visitar casi todas las páginas de Geeks.ms decidí avisar a Rodrígo Corral (para quien aún no lo sepa, administrador de Geeks.ms) y su respuesta es que él no tiene ningún problema con la página.

En ese momento ya extrañado decidi hacer una cosa, cerré la sesión en Geeks.ms, en ese momento todo funcionó bien… llegué a la conclusión que lo que proboca los errores es el nuevo skin… ¿por qué? no me lo preguntéis a mí…

Llegado a este momento es el momento de cambiar el skin, ¿no creéis?, el problema es que lá página de edición de perfiel no funciona, es una de las que me da error…

Mientras no soluciono este error… estoy "posteando" con Windows Live Writer (sí, del que nos hablaba Bruno el otro día en su blog, con su post "Posteando con Windows Live Writer (Beta)")

Y eso es todo… ya sabéis… ¡¡No pongáis el nuevo skin!!

ACTUALIZADO: Rodrigo Corral me ha solucionado el problema, ya puedo conectar sin problemas [:D]