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 ...

11 octubre 2006

Aplicaciones que ralentizan Windows

ThePCSpy ha publicado un artículo en el que muestras las aplicaciones que más ralentizan los sistemas Microsoft Windows. Para realizar el estudio han utilizado una máquina virtual y hecho pruebas a las aplicaciones más conocidas del mercado.
Para realizar las pruebas a cada una de las aplicaciones se reinstalaba dicha máquina virtual para comenzar con sistema operativo totalmente limpio.
Si estudian un poco el gráfico podrán ver datos interesantes.
Estos son los resultados publicados:


Genera tu logo Web 2.0

Con esta herramienta podrás generar tu logo al estilo de la Web 2.0
Simplemente haz de introducir el nombre que deseas ponerle al logo y elegir entre un par de opciones.
Con reflejo y beta:

Con reflejo sin beta:

Muy sencillito ...

09 octubre 2006

Pasar datos entre páginas web ASP Net 2.0

En este post me gustaría mostrarles que, además de en la url (lease querystrings), hay otra forma de pasar datos entre páginas asp.
Lo bueno que tiene esta otra forma, que por cierto solo funciona con ASP Net 2.0, es que en la url no va a mostrar ninguna información sobre los datos con los que queremos trabajar, esto se consigue usando Cross Page Postback.
Para trabajar con el ejemplo necesitaremos dos páginas, la origen (Default.aspx) y la de destino (Default2.aspx), la primera será la encargada de enviar los datos y la segunda de recorgerlos y mostrarlos.
Para ver el ejemplo completo aquí están las dos páginas
1. Origen:

2. Destino: Si se fijan, en la página de destino, en la url no aparece ningún tipo de querystring.

Cómo se hace:

1. En la página de origen lo único que hay que hacer es asignar la propiedad PostBackURL al botón encargado de lanzar la segunda página para que apunte a esta última.

2. En la página destino hay que hacer dos cosas:
2.1 Añadir la directiva @PreviousPageType apuntando a la página desde la que se ha llamado a la de destino.

2.2 En el evento load de esta segunda página ahora podremos insertar el código necesario para capturar los valores de la página de origen.


Bueno, espero que lo hayan pillado, ya saben para cualquier cuestión al respecto no duden en agregar comentarios.

08 octubre 2006

Página de entrada personalizada

¿Conocen Netvibes?
Es otro servicio que nos permite diseñarnos nuestra página de inicio cuando accedemos a la web. Me gusta más que Pageflakes porque nos permite más cosas, (sobre gustos no hay nada escrito), todo es cuestión de probarlo.


Gracioso y curioso

Microsoft anuncia que el entorno de desarrollo de Visual Basic 6 funcionará con Windows Vista, pero, Visual Studio 2005 no, para solucionarlo sacarán un service pack del que ya se puede bajar la primera beta.
Para poder bajarlo hay que estar inscrito en el programa Connect de Microsoft.

Apuntes sobre Master Pages

1. ¿Se les ha dado el caso de tener que utilizar una master page que no está en el mismo directorio que la página que la utiliza?
El primer problema con el que nos encontraremos será que todo aquello que haga uso de un path relativo no nos funcionará, por ejemplo las imágenes. Para corregirlo, con FrameWork 2.0, tenemos el método "ResolveClientUrl". En el ejemplo siguiente la primera imagen no será mostrada y la segunda sí ya que los path varían.




2. Acceder a controles de la Master Page desde nuestra página.
Cuando necesitemos acceder a cualquier propiedad, valor o lo que sea de un control alojado en la master desde la página en cuestión utilizaremos en nuestro código:

Dim Pie As Label = Me.Master.FindControl("LabelPie")
Pie.Text = "valor"

Enumerar procesos en memoria

Con el siguiente código podremos llenar un listview con los procesos que se ejecutan en un sistema.

Imports System.Diagnostics.Process
Public Class Form1
Dim Procesos As Process()
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
ListView1.Items.Clear()
Dim Proceso As Process
Procesos = Process.GetProcesses()
Dim proclength As Integer
For proclength = 0 To Procesos.Length - 1
Proceso = Procesos(proclength)
Dim InfProceso(2) As String
InfProceso(0) = Proceso.ProcessName
InfProceso(1) = Proceso.Id.ToString()
InfProceso(2) = Proceso.PagedMemorySize64.ToString()
Dim process_Listview As ListViewItem = New ListViewItem(InfProceso)
ListView1.Items.Add(process_Listview)
Next
Catch ex As Exception
MessageBox.Show(ex.Message())
End Try
End Sub
End Class

05 octubre 2006

Conseguida 3ª Estrella Microsoft

Después de bastante tiempo sin poder examinarme, hoy he conseguido mi 3ª Estrella del Progama "Desarrollador 5 Estrellas" de Microsoft. Aquí os muestro el certificado, ahora, a esperar que publiquen los dos últimas.
Si no conocéis el programa, animaros.

02 octubre 2006

Oracle Developer Tools for Visual Studio .Net

Oracle ha liberado lo que han denominado "Oracle Developer Tools for Visual Studio .Net". Es un plug-in que se integra en el entorno de Visual Studio y pensado para facilitar el desarrollo contra bases de datos Oracle.
Entre otras cosas incluye:
  • Use the Oracle Explorer to browse your Oracle schema, launch one of the many powerful designers and wizards to create and alter schema objects, and drag and drop schema objects onto your form to automatically generate .NET code.
  • The integrated context sensitive online help, including the Oracle SQL and PL/SQL Users Guides puts the Oracle documentation at your fingertips. And with the Oracle Data Window you won't have to leave the Visual Studio environment for routine database tasks like inserting and updating Oracle data or testing stored procedures! For maximum flexibility, there's also a SQL Query Window for executing any SQL statement or SQL script you choose.
  • The .NET Deployment Wizard makes it easy to deploy .NET stored procedures and functions into Oracle Database 10g Release 2.
Por supuesto es de descarga gratuita

WebCast sobre Application Blocks

Leo en blog de Williy Mejía la publicación por parte de Microsoft Latanoamérica de tres webcast sobre Applications Blocks.

He visto los tres primeros y la verdad es que los temas está muy bien explicados, vale la pena echarles un vistazo.

Microsoft Pre-release Software Visual Studio Code Name "Orcas"

Microsoft ha publicado y puesto a disposición de todo el que lo desee la futura versión de Visual Studio (Orcas). Se puede descargar desde aquí.

La descarga es en formato iso para su instalación en Virtual-PC 2004 SP1 o Virtual Server 2005 R2.

29 septiembre 2006

Web Service Software Factory

Microsoft ha publicado recientemente la Web Service Software Factory, se trata de una colección de herramientas, totalmente integrada en Visual Studio 2005, cuyo objetivo es facilitarnos y guiarnos (con buenas práticas) a la hora de desarrollar la capa de servicios de nuestras aplicaciones.

Buenas prácticas en .Net

Todo programador en .Net debiéramos tener siempre en cuenta los patrones y buenas prácticas como referencia a la hora de emprender proyectos de software. Como ya sabrán Microsoft nos ofrece documentación y código para ello. El único problema es la cantidad de información que estas recomendaciones ofrecen, a veces te puedes perder en ellas, son unos 30 documentos con un número ingente de páginas.
Pues bien, la buena noticia es que la gente de Gotdonet han puesto a nuestra disposición una herramienta que nos va a permitir navegar por toda la información de una manera sencilla. Hay dos versiones, una versión online (todavia beta) y otra para instalar.
Quien no le haya echado un vistazo a estas prácticas y al código (listo para usar) que nos ofrece, se está perdiendo una muy buena fuente de información.
Desde aquí les recomiendo su lectura.

19 septiembre 2006

Guía de referencia rápida de CSS 2.1

Página oficial de W3c con la Guía de Referencia CSS 2.1

Imagenes de espera para Ajax

En esta página podrás elegir e incluso diseñar, dentro de una serie de posibilidades, tu imágen de espera de conexión a servidores para páginas que usen ajax. (la típica imagen de conectadon con servidor ...)

18 septiembre 2006

Nueva versión de Atlas Control Toolkit

Incluye mejoras en la compatibilidad y la corrección de bugs, además de cuatro nuevos controles.

  • Animation: Añade efectos animados a controles cuando se producen eventos en los mismos.
  • NoBot: Permite identificar si hay un bot tratando de introducir datos automática y masivamente, como por ejemplo tratando de hacer un ataque a la fuerza a un formulario de login.
  • Slider: Control para generar barras de slide.
  • UpdatePanelAnimation: Extender para UpdatePanel. Permite ejecutar algunos efectos, al mismo.

La puedes descargar aquí

15 septiembre 2006

Códigos de estado en IIS

Este link te dirigirá a una página de Microsoft con el listado completo de los códigos de estado de Internet Information Server

Master Pages (ASP.Net)

Si deseas conocer todo lo relativo a este tema no dudes en visitar este link. Encontrarás temas superinteresantes.

¿Te gustaría añadir estilo a tus páginas web?

Estos tres links te muestran como puedes añadir unos efectos fantásticos a tus imágenes, textos, etc.
Visita Highslide, Thickbox y tambíen Lightbox.

Te sorprenderás

14 septiembre 2006

Error System.Data.OracleClient requires Oracle client software version 8.1.7 or greater.

Este error se debe a la falta de permisos de escritura en el directorio Home del Oracle en el servidor donde están alojadas las páginas ASP.
Solución:

  • Haz login con un usuario con permisos de administrador
  • Navega hasta el directorio ORACLE_HOME
  • Elige propiedades de este directorio
  • Pincha en el tab de "Seguridad"
  • En la lista de usuarios selecciona "Usuarios autenticados", si no está añade el grupo
  • Dale permisos de "Lectura y ejecución"
  • Marca la casilla de "Hacer posible que los permisos heredables se propaguen"

Espero que esto te ayude. Si no te funciona vuelve a comprobar los permisos efectivos porque te aseguro que el problema son los permisos.

Convertir código de C# a VB.Net

Desde esta página Developer Fusion podrás convertir código de c# a vb.net.

¿Problemas con Crystal Report.Net?

Este blog ASP Advice trata de muchas cosas sobre el tema que te pueden ayudar.

13 septiembre 2006

Recorrer todos los controles de un formulario (vb.net)

Private Sub BuscarCampos(ByVal Form_Controlw As Control)
Dim Controlw As Control
For Each Controlw In Form_Controlw.Controls
' SI ES CONTENEDOR SE BUSCA EN LA SUB DE FORMA RECURSIVA
If Controlw.HasChildren = True Then BuscarCampos(Controlw)
... aquí tu código
Next

Presentación

Hola a todos, este es el primer blog que hago, espero que les sirva de ayuda. La intención no es otra que, fundamentalmente, compartir código de programación en .Net y en todo lo relacionado con programación web. Espero que lo visiteis cuando necesiten algo.
Salu2 a todo el cyberspacio.