22 diciembre 2006

Mudanza

Bueno, este tiempo sin publicar se ha debido a que estaba de mudanza. Me ha costado un poco de tiempo preparar el nuevo dominio (propio), el nuevo wordpress (propio), backup, restore, etc.....

Espero que no les cause mucha molestia cambiar favoritos y feeds. En este nuevo sitio espero poder ofrecer más servicios.

La nueva web la podéis encontrar en NetCódigo

Por cierto, FELIZ NAVIDAD a todos

15 diciembre 2006

Liberado SP1 de Visual Studio 2005

Hoy estamos de liberaciones. Microsoft ha liberado el primer service pack para las distintas versiones de Visual Studio 2005. A saber:

Con este service pack ya se soporta Windows Vista ...
El documento (release notes) lo puedes encontrar aquí.

Creo que es todo.

ASP.NET AJAX 1.0 RC disponible

Microsoft ha liberado la primera release candidate de Ajax (la versión definitiva cada vez más cerca).Entre las nuevas características que podemos encontrar se encuentra:
  • Soporte de globalización
  • Invocación dinámica de proxies para servicios web
  • Cambios en el namespace y assemblies para asegurar la compatibilidad entre Ajax 1.0 y el futuro Ajax 1.0 incluido en el futuro Orcas.
Se supone que la versión definitiva saldrá en enero e incluirá instalación sencilla para sistemas no windows.Tambien se ha liberado ASP.NET AJAX Control Toolkit Released for ASP.NET AJAX RC (importante)
Aquí dejo los links de todo.

Bien esto parace que esto de las betas ha llegado a su final y llega el momento de la release definitiva.

09 diciembre 2006

Usar el UI (User Interface) de Office 2007

A partir de ahora Microsoft obliga a aquellos desarrolladores o empresas que vayan a utilizar el mismo UI que se usa en Office 2007, también conocido como RIBONX UI, a licenciarlo.



Por lo que he leído, Microsoft ha pensado que si ha invertido tanto dinero en el desarrollo de esta interface, aquellos que quieran usarla deben seguir algunas pautas.


El licenciamiento es gratuito y perpetuo, salvo en aquellas aplicaciones que hagan competencia directa a la suite de Office 2007, a estas no se les otorgará la licencia. Además, se deberá seguir de manera estricta la guia de estilo de la interfaz de usuario de Office 2007 que Microsoft pone a nuestra disposición.


La verdad, no sé si Microsoft obra de la manera correcta. Hasta la fecha, siempre ha invertido mucho dinero en sus UI y nunca ha requirido licenciarlo, claro, hasta ahora nos podían denunciar por plagio o por lo que fuera. Si nos licencia, ya no podrá hacerlo (siempre que sigamos la guía).
Para más información visitar el sitio de Microsoft de Office UI Licensing.

04 diciembre 2006

WMI. Fuente inagotable de información

La definición de Microsoft de WMI es la que sigue. Instrumental de administración de Windows (WMI) es un componente del sistema operativo Windows que permite obtener acceso mediante programación a información de administración en un entorno empresarial. WMI en .NET Framework se basa en la tecnología WMI original y permite el mismo desarrollo de aplicaciones y proveedores, además de las ventajas que ofrece la programación en .NET Framework.En mi opinión, WMI es espectacular. Cualquier información que queráis obtener de cualquier sistema windows, WMI la proporciona, desde el nombre del sistema operativo de una máquina, pasando por la memoria ram que tiene, las tarjetas de red, configuración de cualquier cosa del sistema, performance, servicios, tareas, services packs instalados, software instalado, etc. etc. etc.... La arquitectura de WMI consta de los niveles siguientes: Los componentes de software cliente realizan operaciones mediante WMI, como leer detalles de administración, configurar sistemas y realizar suscripciones a eventos. El administrador de objetos es un intermediario entre los proveedores y los clientes que proporciona ciertos servicios esenciales, como la publicación y suscripción estándar de eventos, el filtrado de eventos, motor de consultas y otros servicios. Los componentes de software de proveedor capturan y devuelven datos activos a las aplicaciones cliente, procesan llamadas a métodos procedentes de los clientes y vinculan al cliente con la infraestructura que se está administrando. A continuación muestro un pequeño ejemplo de cómo recuperar información con WMI y mostrarla en un treeview. Lo único extraño que pueden ver en el código es que no utilizo el TreeView que viene con Visual Studio sino uno de otro fabricante, simplemente lo he utilizado porque el de VS no permite retornos de carros, de resto todo normal. Simplemente recupero alguna información como nombre de máquina, microprocesador, video y discos. Pero ya digo, cualquier información del sistema se puede recuperar.

Código:


Imports System
Imports System.Management
Public Class WMI
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' RECOPILACION DE DATOS
Me.InformacionGeneral()
Me.Micro()
Me.Video()
Me.Discos()
Me.UltraTree1.ExpandAll()
End Sub
Private Sub InformacionGeneral()
' INFORMACION GENERAL
Try
Dim searcher As New ManagementObjectSearcher( _
"root\CIMV2", _
"SELECT * FROM Win32_ComputerSystem")
For Each queryObj As ManagementObject In searcher.Get()
Dim _Node As New Infragistics.Win.UltraWinTree.UltraTreeNode
_Node.Text = "Nombre PC:" & queryObj("Name").ToString & ControlChars.CrLf & _
"Fabricante:" & queryObj("Manufacturer").ToString & ControlChars.CrLf & _
"Modelo: " & queryObj("Model").ToString & ControlChars.CrLf & _
"Tipo: " & queryObj("SystemType").ToString & ControlChars.CrLf & _
"Memoria: " & queryObj("TotalPhysicalMemory").ToString
Me.UltraTree1.Nodes(0).Nodes.Add(_Node)
Next
Catch err As ManagementException
MessageBox.Show("Error recuperando información WMI: " & err.Message)
End Try
End Sub
Private Sub Micro()
' MICROPROCESADOR
Try
Dim searcher As New ManagementObjectSearcher( _
"root\CIMV2", _
"SELECT * FROM Win32_Processor")
Dim _Cantidad As Byte
Dim _Node As New Infragistics.Win.UltraWinTree.UltraTreeNode
For Each queryObj As ManagementObject In searcher.Get()
_Node.Text = "Modelo:" & queryObj("Name").ToString & ControlChars.CrLf & _
"Velocidad:" & queryObj("CurrentClockSpeed").ToString & " Mhz." & ControlChars.CrLf
_Cantidad = +1
Next
_Node.Text = _Node.Text & "Cantidad: " & _Cantidad.ToString
Me.UltraTree1.Nodes(1).Nodes.Add(_Node)
Catch err As ManagementException
MessageBox.Show("Error recuperando información WMI: " & err.Message)
End Try
End Sub
Private Sub Video()
' VIDEO
Try
Dim searcher As New ManagementObjectSearcher( _
"root\CIMV2", _
"SELECT * FROM Win32_DisplayConfiguration")
Dim _Node As New Infragistics.Win.UltraWinTree.UltraTreeNode
For Each queryObj As ManagementObject In searcher.Get()
_Node.Text = "Modelo:" & queryObj("Caption").ToString & ControlChars.CrLf & _
"Frecuencia:" & queryObj("DisplayFrequency").ToString & ControlChars.CrLf
Next
Me.UltraTree1.Nodes(2).Nodes.Add(_Node)
Catch err As ManagementException
MessageBox.Show("Error recuperando información WMI: " & err.Message)
End Try
End Sub
Private Sub Discos()
' DISCOS
Try
Dim searcher As New ManagementObjectSearcher( _
"root\CIMV2", _
"SELECT * FROM Win32_DiskDrive")
Dim _Node As New Infragistics.Win.UltraWinTree.UltraTreeNode
For Each queryObj As ManagementObject In searcher.Get()
_Node.Text = _Node.Text & "Nombre: " & queryObj("Caption").ToString & ControlChars.CrLf & _
"Tipo:" & queryObj("InterfaceType").ToString & ControlChars.CrLf & _
"Particiones:" & queryObj("Partitions").ToString & ControlChars.CrLf
Next
Me.UltraTree1.Nodes(3).Nodes.Add(_Node)
Catch err As ManagementException
MessageBox.Show("Error recuperando información WMI: " & err.Message)
Catch err As Exception
End Try
End Sub
End Class

Si se fijan, lo único que hay que hacer es una query sobre la clase WMI que se quiere consultar. Y ahora se preguntarán, ¿como sabré qué clase es la que debo consultar para lo que yo quiero hacer? No hay problema, aparte de la documentación de MSDN Microsoft nos proporciona una herramienta que pueden bajarse aquí y que incluye todas las clases y objetos de WMI. Y no sólo eso sino además genera código VBScript, VB.Net y C# listo para usar.
Realmente creo que WMI es fantástico, yo, para controlar el hardware y software instalado en mi empresa, he desarrollado un servicio que se instala en las máquinas y que alimenta una base de datos informando de todo aquello que me interesa saber de mi parque informático. Ahora no tengo que ir máquina a máquina para saber que memoria tiene o por ejemplo saber cuan viejo es mi parque partiendo de los micros instalados. Antes lo llevaba en papel y relamente era inoperante.
Espero que les sirva.

29 noviembre 2006

Mantener la posición en un Treeview con ASP.Net y ASP.Net Ajax después de un postback

En este post veremos como mantener a la vista la posición actual de un nodo elegido en un treeview después de que este ha sido seleccionado y que por lo tanto se produce un postback.

Lo he traducido en parte (solo el de asp) y creo que mejorado de un artículo que leí en developer.com
Si no se han dado cuenta, después de elegir un nodo en el treeview y al producirse dicho postback, el treeview vuelve a a posicionarse en el primer nodo superior del mismo, si el elegido no cabe en pantalla, pues ¿que sucedera?, pues que no se verá.

Veremos como solucionarlo tanto con ASP.Net como con ASP.Net Ajax.
Lo lograremos gracias a ejecutar un código javascript cada vez que se realice el postback.

Veamos primero dos imágenes que muestran lo que sucede sin dicho código javascript.


Después de elegir nodo se reposiciona el treeview en su lado superior.

ASP.Net
El código asp.net es bien sencillo, simplemente ponemos el treeview dentro de un panel y en la sección body cargamos el script en cuestión.

<body onload="CargarScriptLoad()">
<form id="form1" runat="server">
<div>
<asp:Panel ID="Panel1" runat="server">
<asp:TreeView ID="TreeView1" runat="server">
</asp:TreeView>
</asp:Panel>
</div>
</form>

Y en el codebehind.

Esto es todo, quizás lo más complicado de entender es el javascript, realmente lo único que hace es crear una función, que trabaja con el elemento seleccionado del treeview, y mueve el scroll del panel hasta la posición correcta.

ASP.Net Ajax
En ASP.Net Ajax el codebehind es exactamente igual, lo único que cambia es la adición de un scriptmanager, el updatepanel, el contentpanel y el trigger correspondiente.


<body onload="CargarScriptLoad()">
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />

<div>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Panel ID="Panel1" runat="server">
<asp:TreeView ID="TreeView1" runat="server">
</asp:TreeView>
</asp:Panel>
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="TreeView1" />
</Triggers>
</asp:UpdatePanel>
</div>

</form>
</body>


Resultado final.

Bueno espero haberme explicado.

26 noviembre 2006

Laboratorios Framework 3.0 en español

Hace unos días comenté en este blog la existencia de unos Hands on Lab sobre el Framework 3.0, eran en inglés, hoy leyendo la blogsfera, concretamente el blog de Grabiel veo que se pueden descargar ahora en español.
Lo puedes hacer desde aquí.

21 noviembre 2006

Desafío Gadget para Windows Vista Sidebar

Microsoft pone en marcha un concurso denominado Desafío Gadget para Windows Vista Sidebar destinado supongo yo a popularizar los gadgets para Windows Vista y Windows Live.

Los premios son los siguientes:
Primer premio: Una Microsoft® ORIGAMI Ultra Mobile PC
Segundo premio: Una Microsoft XBox® 360
Tercer Premio: Un Microsoft Zune 30GB Digital Player
4ra a 7ma Posición: Cuatro Premios subsecuentes para finalistas: Microsoft LifeCam VX-6000.

Los premios para estudiantes:
Primer premio: Una Microsoft® ORIGAMI Tablet PC y una Placa Conmemorativa de reconocimiento a la excelencia dirigida a la Universidad o centro de estudios.
2da a 6ta Posición: Cinco Premios subsecuentes para finalistas: Microsoft Zune 30GB Digital Player

Pues a animarse y a por ellos ....

19 noviembre 2006

¿Funcionarán mis aplicaciones Framework 2.0 con Framework 3.0?

Esta pregunta tiene una respuesta sencilla y contundente, .

Y esto es así porque realmente el motor del framework 3.0 es del 2.0. ????
La siguiente igualdad explica claramente el porque de esta afirmación.

Framework 3.0 = Framework 2.0 + WPF + WWF + WCF

WPF = Windows Presentation Foundation
WWF = Windows WorkFlow Foundation
WCF = Windows Comunication Foundation

Y la siguiente imagen, tomada de Microsoft, explica este tema incluyendo algunas cosas más.



Así queda claro que nuestras aplicaciones desarrolladas con la versión 2.0 no tendrán ningún problema en Windows Vista o versiones XP,2000, etc. que tengan FrameWork 3.0 instalado.

18 noviembre 2006

Clase Uri. Validando direcciones de http, ftp, etc.

En este post veremos como validar direcciones de http, https, ftp, mailto utilizando la clase Uri que nos proporciona el Framework de Microsoft.

Supongamos que tenemos un textbox, en su evento Validating incluiremos el siguiente código:

Dim _Direccion As New Uri(Me.TextBox1.Text.ToString)
If _Direccion.Scheme <> Uri.UriSchemeHttp Then
MessageBox.Show("Dirección HTTP incorrecta")
e.Cancel = True
End If

Creamos una variable local del tipo Uri y le asignamos el TextBox. Si no es una dirección http correcta mostrará un mensaje de error y abortará la validación.

Si queremos validar https cambiaremos la condición por Uri.UriSchemeHttps.
Si queremos validar ftp cambiaremos la condición por Uri.UriSchemeFtp.
Si queremos validar mailto cambiaremos la condición por Uri.UriSchemeMailTo.
Si queremos validar news cambiaremos la condición por Uri.UriSchemeNews.

En esta dirección podremos encontrar toda la información relativa a la clase Uri.

17 noviembre 2006

Nuevos Virtual Lab de Windows Vista

Ante la inminente salida al mercado de Windows Vista, Microsoft ha creado nuevos Virtuals Labs sobre el mismo.
Hay Labs sobre implemtentación, imágenes para su distribución, configuración del nuevo Firewall, nuevas políticas de sistema, etc.

Pueden acceder desde aquí

Cursos gratuitos de Microsoft .Net Framework 3.0

Microsoft ha puesto ha disposición de los desarrolladores tres cursos (¿premiun clinics?) sobre las nuevas tecnologías de Framework 3.0, son estos:

La página principal de estos clinics es esta.

He estado echándole un vistazo al 3.0 y la verdad es que está muy pero que muy bien, el workflow, por ejemplo, es algo que puede venir estupendo para muchos tipos de aplicaciones. Hay cambio de tecnología y debemos de cambiar también algo nuestro chip a la hora de desarrollar software.
Espero que estos cursos les ayude a ello.

07 noviembre 2006

ASP.Net Ajax 1.0 Beta 2

Microsoft ha liberado la beta 2 de su framework de Ajax. No ha pasado mucho desde la liberación de la beta 1.
Resumen:

ASP.NET AJAX Beta 2 has just been released and includes several improvements over the first Beta release, including adding the UpdateProgress control to ASP.NET 2.0 AJAX Extensions, and better support for script loading and localization. If you’re transitioning to Beta 2 an application that was built with an earlier “Atlas” CTP or the first Beta.

Download ASP.Net AJAX 1.0 Beta 2
Download ASP.Net AJAX Control Toolkit
Download ASP.Net 2.0 AJAX Futures November CTP

04 noviembre 2006

Internet Explorer 7 en español

Microsoft ha liberado IE 7 en español, lo podéis bajar de la web oficial.

03 noviembre 2006

Curso gratuito ASP.Net 2.0

Leo en el blog de Jorge Serrano que Microsoft oferta un curso gratuito de 3 horas de duración sobre 'Cómo crear tu primera aplicación web con ASP.Net 2.0'
El curso es el 2913 e incluso podemos descargarlo y hacerlo de forma desconectada.

01 noviembre 2006

GridView y ModalPopup en Ajax.Net

Navegando por los foros de Microsoft Ajax me encuentro bastantes preguntas sobre cómo editar una fila de un gridview en una ventana modal utilizando código del lado del cliente.
En este post daré una solución cuya ventana modal no es el control ModalPopupExtender, sino una ventana modal del propio navegador. Cuando estudie el control lo publicaré utilizándolo.

Tomaremos como ejemplo una de las páginas de un CRM open source que en mis ratos libres estoy desarrollando.
Realmente es muy simple, utilizaremos lo siguiente:
  • JavaScript para mostrar la ventana modal
  • Un TemplateField del GridView
  • El evento RowDataBound del GridView
  • Y nada más ....

Vamos por pasos:
1. El javascript de apertura de la ventana modal será.
function AbrirVentana(Pagina)
{

window.showModalDialog(Pagina);
}

Al método window.showmodaldialog se le pueden pasar parámetros como página, argumentos, tamaño, posición, etc, en este link podéis ver sus opciones y funcionamiento. En nuestro caso a la función AbrirVentana le pasaremos un parámetro que contendrá la página y el registro con el que queremos trabajar.

2. En el gridview añadiremos una template column que contendrá un buttonlink al que le pondremos como url la llamada al javascript pasándole como parámetro la columna única de la tabla con la que vamos a trabajar.

3. En el evento antes mencionado del gridview RowDataBound añadiremos el código necesario para asociar al template column el valor adecuado.

Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound
' PREPARACION DE LA APERTURA DE LA VENTANA MODAL
If e.Row.RowType <> DataControlRowType.DataRow Then Exit Sub
Dim row As GridViewRow = e.Row
Dim button As LinkButton = e.Row.FindControl("BtnModal")
If Not button Is Nothing Then
button.OnClientClick = "javascript:(AbrirVentana('EditCandidatos.aspx?Codigow=" & e.Row.Cells(1).Text & "'));"
End If
End Sub

Y esto es todo, algo importante a tener en cuenta en la ventana modal, es que, para que, si por ejemplo incluimos un formview para manejar el registro a tratar y no se nos abra una nueva ventana cuando por ejemplo pulsemos el botón editar del mismo es añadir al "head" el elemento

"base target="_self /"
(lo tengo que poner entre comillas porque el blog lo toma como un head de verdad)

Bueno, espero que les sirva de algo, saludos y si les apetecen pueden hacer comentarios.

26 octubre 2006

Diseñador de menús CSS

Bueno, después de unos cuantos días sin publicar nada en el blog (a veces no doy más) y unos cuantos post pendientes aquí va el más fácil de escribir.
He encontrado esta página web desde donde nos podemos bajar un programita gratuito para hacer distintos tipos de menús 100% CSS. La verdad es que en un momento dado te ahorra algo de trabajito ...

20 octubre 2006

ASP.Net Ajax Beta 1.0 liberado

Hoy Microsoft ha liberado la primera beta de su ASP.Net Ajax. Esta beta incluye los siguientes archivos:

Los cambios con respecto a la CTP anterior han sido muchos, muchos. Tanto que han puesto a nuestra disposición una guía de migración. una disponible como documento de Word y otra en formato PDF.

Lo primero que llama la atención es que ahora tenemos tres proyectos en vez de los dos anteriores. La diferencia estriba en que hay controles en el Value-Add y en el Toolkit. Según Microsoft en la versión definitiva irán juntos.
Si lo que comenta el documento de cambios es cierto, realmente hay muchas mejoras como por ejemplo:

  • Mejoras en el rendimiento. Lo que han hecho, entre otras, es dividir los ficheros javascript en otros más pequeños y más numerosos que además se descargarán sólo si hacen falta.
  • Mejoras en la depuración de proyectos.
  • Mayor compatibilidad con navegadores.
  • etc.

17 octubre 2006

Pasar valores entre formularios windows

Este post viene a cuento de una pregunta que me hicieron esta mañana, aun cuando la contesté, pensé que quizás fuera bueno incluirlo en el blog.
Mostraré dos ejemplos, en el primero simplemente un formulario (Origen) pasará dos valores a otro (Destino). En el segundo ejemplo iremos un poco más allá, el primer formulario (OrigenDialog) le pasará a un segundo (DestinoDialog) dos valores, pero este último le devolverá a su vez al primero estos dos valores, se hayan modificado o no, siempre que se pulse en el botón Aceptar.

En .Net hay varias formas de pasar valores entre formularios, mostraré la que según la documentación de Visual Studio 2005 Professional Edition es la más correcta y consume menos recursos.

- Ejemplo 1.
Como ya comenté, en este ejemplo un formulario le pasa dos valores a otro y se terminó.

En el formulario Origen incluiremos dos textbox cuyo contenido será lo que pasemos al form Destino y un botón para abrirlo.
En el formulario Destino, nos crearemos un procedimiento que será el encargado de recoger los valores.
En el evento click de dicho botón crearemos una variable de trabajo apuntando al form Destino y antes de abrirlo, le pasaremos dos parámentos al procedimiento creado para recoger los valores. Y ya está, esto es todo.

Aquí van las imágenes.
Código Form Origen:



Código Form Destino:

Resultado final:




- Ejemplo 2.
Para este ejemplo utilizaremos el método ShowDialog de la clase Form. Esto nos asegura que el primer formulario no se cierra sin haber cerrado previamente el segundo.
En el evento Click del botón del formuario OrigenDialog haremos lo siguiente:
1. Declararemos una variable para crear el segundo formulario.
2. Le pasaremos los valores al segundo formulario utilizando el mismo procedimiento que el primer ejemplo.
3. Declararemos una variable para saber si en el segundo formulario se ha pulsado el botón Aceptar o el Cancelar.
4. Si se pulsa Aceptar en el segundo formualario actualizaremos los textbox del primero con lo tecleado en el segundo.
5. Destruiremos el segundo formulario.




Formulario Destino.
A tener en cuenta de este formulario es que tenemos que asignar la propiedad DialogResult a los botones de Aceptar y Cancelar, asignándole al primero el valor OK y al segundo Cancel. Como se habrá entendido esta propiedad nos dirá si el usuario a aceptado o no los cambios realizados en este formulario.
El código de este segundo formulario es exactamente igual que el del primer ejemplo, solo tendremos el procedimiento de recolectar los valores pasados.
Imágenes:
Código OrigenDialog:

Código DestinoDialog:




Resultado final:



Espero no haberme liado, ya saben si hay dudas escribid en comentarios.

Petición

Escribo este post para hacer una petición propia. Me gustaría escribiaran algún comentario indicando que les gustaría ver en este blog sobre cualquier asunto .Net.
¿más código? ¿sobre qué? ¿más noticias? No sé, la verdad es que me gustaría saber algo sobre los que leen este blog.

Gracias y a animarse

16 octubre 2006

Cambio a Blogger Beta

Estoy cambiando el blog a la nueva beta de Blogger, si encuentran algún error, ya saben, es beta ....

14 octubre 2006

Unión de bloggers hispanos

Este proyecto lo encontré en un blog que pretender aunar cuantos más blogs hispanos mejor, Unión de Bloggers Hispanos, se trata del proyecto GoMeme 4.0, desde luego me parece una idea estupenda. A continuación indico de lo que se trata el proyecto.

Creo que sería interesante ver como nuestro ranking crece en Google y cualquier buscador de blogs. Para ello es que se creó GoMeme 4.0. Parece además interesante que cada bloggero en el círculo de UBH, se adhiera al proyecto y ayude a que su propio blog sea mas visible a las máqinas de búsqueda, no por el simple link, sino por la múltiple interrelación entre los enlaces que se generan gracias a todos aquellos que entran en el ‘juego’. Fervientemente los invito a continuar y a ayudarnos en el experimento, porque éste nos es un artículo ordinario. Se ha agregado información especial al final. Lea el artículo completamente y trate de seguir las instrucciones para su debida propagación.
La fuente siempre merece el crédito. Por qué no continuamos los enlacen en español?
NOTA: Asegúrese de agregar links reales en el listado de abajo.
Por ahora se estima que existen mas de un millon de bitácoras. Pero la mayoria de ellas no son visibles para los robots de búsqueda. Solo algunas “A-List” bitácoras aparecen a la cabeza en los resultados mostrados para un dterminado tópico, mientras que la mayoria de las bitácoras ni siquiera son identificados. La razón es que las bitácoras mas pequeñas no tienen suficientes enlaces(links) que se dirijan a ellos mismo. Pero este post podria solucionar eso!. Ayudemos a que las bitácoras mas pequeñas sean mas visibles a las maquinas de búsqueda!
El post aunque esta en Inglés es GoMeme 4.0. Esto es parte de un experimento para ver si nosotros podemos crear un post que ayude a 1000 bitácoras, a obtener posicionamientos mas altos en Google. Hasta ahora hemos tratado tres primeras variaciones. Nuestro primera prueba, GoMeme 1.0, se difundió a cerca de 740 bitácoras en dos y medio dias. Esta nueva version 4.0 es mas corta, mas simple, y encaja mas fácilmente dentro de tu bitácora.
Por qué estamos haciendo esto? Queremos ayudar a que miles de bitácoras obtengan mayor visibilidad en Google y otras máquinas de búsqueda. Cómo funciona? Solo sigue las instrucciones de abajo y republica este post en tu propia bitácora y agrega tu URL al final de la lista mostrada abajo. De la misma manera que este “meme” se propague en forma progresiva desde tu bitácora, asi mismo lo hará tu URL. Mas tarde, cuando tu bitácora sea puesta enlistada en las máquinas de búsqueda, ellas verán los enlaces apuntando hacia tu bitácora desde todo ese flujo de bitácoras que se enlazaron a través de ti, lo cual hará que ubiquen tu bitácora en una posicion superior cuando se muestren los resultados. Todos los que estan en la lista de abajo se beneficiarán en forma similar cuando este “meme” se difunda. Unete!
Instrucciones: Copia y pega este post completamente en un post de tu bitácora. A continuación agrega tu URL al final de la lista, y continúa la cadena!
Lista de Origen
1. Memes en español
2. Madurando con sentido
3. Cavaju
4. Momentanea
5. Imagenes de un talibano
6. MordorBlog
7. El oso
8. Sin imprenta
9. ALT1040
10. WR276
11. El Ecuador de hoy
12. Juan Javier
13. kevinhurlt
14. metablog
15. Mi mundo
16. Derrames intelectuales
17. Fatima Protesta
18. Erebe
19. Calú
20. Alex Vera
21. Bloggus
22. DeVilSoulBlack
23. Solo dehajo ser
24. Cero Cuatro
25. Enfoque de usuario
26. Jesús Nieves Montero
27. Gandika
28. El Catalejo
29. Curioseando
30. El especialista
31. Victor Solano
32. Alvaro Sanchez
33. A veces hace falta
34. Un mundo de ideas
35. Ciberescrituras
36. Cuarenton
37. Not etra be
38. Blogófago
39. Urbe y existencia
40. Blogpocket
41. eCuaderno
42. El ventanuco
42. Opiniones
43. Si puedo
44. El arbol de Diana
45. Desarrollo en la red
46. Sergio Rastafurbi
47. Hipótesis21
48. Con valor
49. My Space
50. Un poco de cada
51. Rufadas
52. La paradoja posible
53. Oabareload
54. Territorio enemigo
55. Hachemuda
56. il Maistro
57. Apocalypsofacto
58. Cladestinidad Pedagógica
59. Methos 189
60. Colombia Hoy
61. Redtales
62. Alambre
63. Domingo 1967
64. Veo y pienso
65. Unión de Bloggers Hispanos
66. NetCodigo e Internet
67.(Tu URL va aquí! Pero primeramente, por favor copia esta linea y múevela un espacio hacia abajo para que sea usada por la próxima persona).

12 octubre 2006

Añadir sumarios a un GridView ASP Net 2.0

En este post intentaré explicar cómo añadir sumarios a cualquier columna de un GridView. Estos sumarios pueden ser totales de una o más columnas o simplemente un texto.
En el ejemplo lo que haremos será:
  1. Incluir un sumario de texto a una columna
  2. Incluir una sumatoria de una columna.

Para ello primero tenemos que modificar la propiedad ShowFooter del GridView a True ya que por defecto está a False.


Simplemente con esto ya le hemos indicado al GridView que muestre una fila para los sumarios.
Ahora toca modificar el código, en el evento RowDataBound del GridView es donde lo incluiremos. Este evento se dispara cuando se crea el Header, Footer y por cada Row de la consulta asociada al GridView.
Para saber, dentro de este evento, porqué se ha disparado, contamos con la propiedad RowType del argumento e del evento. El código sería el siguiente:


Pasos:

  1. Declaramos una variable privada a nivel del módulo para acumular el total de la columna deseada.
  2. Si el RowType del argumento e es DataRow entonces acumularemos el total. Para poder recoger el valor de la row debemos declarar una variable del tipo DataRowView para poder acceder a los valores del GridView y poder así realizar los cálculos pertinentes.
  3. Si el RowType del argumento e es del tipo Footer, entonces asignaremos a la primera columna un literal como "Totales" y a la segunda columna le asignaremos nuestra variable privada que contiene el acumulado.

Resultado:

Ya saben, si tienen alguna duda dejar un comentario.

Encontrada vulnerabilidad en .Net FrameWork 2.0





En el boletín de seguridad de Microsoft MS06-056, comentan que:

Existe una vulnerabilidad de secuencias de comandos que implican a varios sitios en un servidor que ejecuta una versión vulnerable de .Net Framework 2.0 que podría infiltrar una secuencia de comandos de cliente en el explorador del usuario. La secuencia de comandos podría suplantar contenido, divulgar información o realizar las mismas acciones permitidas al usuario en el sitio Web afectado. Los intentos de aprovechar esta vulnerabilidad requieren la interacción del usuario.

Recuperar Special Folders

El siguiente código muestra como recuperar las carpetas especiales de un sistema windows. Ententiendo como carpetas especiales a "Archivos de Programa", "Temporal de Windows", "Mis Documentos", etc.
Para recuperarlas usaremos el espacio de nombres system, espacio que contiene clases fundamentales y clases base que definen tipos de datos de referencia y de valor de uso frecuente, eventos y controladores de eventos, interfaces, atributos y excepciones de procesamiento (según Microsoft).
En este espacio de nombre tenemos la clase Enviorment proporciona información acerca del entorno y la plataforma actuales, y la forma de manipularlos (también según Microsoft). Esta clase tiene un método denominado GetFolderPath que es el que utilizaremos para el tema de este post.
La clase Enviroment tiene a su vez un método denominado SpecialFolder que será el que le pasaremos como parámetro a GetFolderPath.
Verán que es muy sencillo, en el ejemplo rellenaremos un listbox con unas cuantas carpetas especiales.
Resultado:



Código:



Sencillito ...