miércoles, 24 de octubre de 2007

Tenga un proxy en su Windows con Squid para Windows

Hace unos días se arruino un disco rigido. Nada catastrófico sino fuera por que era el del servidor proxy de la red... :(
Unas cuantas máquinas se quedaron sin internet. Era un lindo Squid corriendo sobre Fedora 3. La alternativa más rápida para solucionarlo era instalar la conexión a internet en el servidor Windows 2000 Server y hacerlo funcionar como proxy.
Se me ocurrío buscar en la web si había una versión de Squid para Windows y por suerte encontre un par de sitios interesantes que me sacaron del apuro. Aquilos comparto con uds.
Lo primero que encontré fue esto que es de donde lo bajé y lo instalé.
Otro instructivo muy didactico lo encuentran aquí.
La única recomendación es que no se olviden de configurar esta linea:
dns_nameservers (DNS1) (DNS2)
con IPs de servidores DNS que correspondan segun su caso ya que si bien squid puede sacarlo del registro a veces esto falla.
Otra recomendación es que si lo van a poner como servicio traten de que la conexión a internet tambien se establezca al arrancar el equipo sino falla el test de DNS del SQUID y este no inicia) tranquilos, volverá a intentarlo.
Bueno... otra recomedación más... no sean pijoteros con el espacio que le destinan a la cache, no lo dejen en los 100 Megas que vienen por defecto, dependiendo de la cantidad de maquinas que tengan detras del proxy se suele llenar rápido.
Las pruebas que hice funcionaron pero no lo dejé en producción... (volvi al plan A :) ) todo lo que hagan queda a su entera responsabilidad. ;)


domingo, 21 de octubre de 2007

Kimi Räikkönen campeón del mundo de Formula 1

Bloc de Notas felicita al finlandes Kimi Räikkönen por haber obtenido el campeonato del mundo de felicita al finlandes Kimi Räikkönen por haber obtenido el campeonato del mundo de formula 1.
A un año del carreron de "Michael Schumacher" en su despedidad de la categoría Brasil nos vuelve a regalar otro gran premio para el recuerdo.
Hacía 21 años que no llegaban a la ultima competencia 3 pilotos con la posibilidad de obtener el campeonato y el que tenía menos posibilidades de los 3 fue el que finalmente se lo llevó.
Despues de una impecable largada del equipo Ferrari obteniendo el 1-2 (Massa-
Räikkönen) Hamilton pierde la posición con Alonzo y se va afuera, víctima de su propio nerviosismo cae al 18 lugar.
Desde ahí en adelante... todo a pedir de Ferrari.

Posiciones finales del campeonato de pilotos:

1º Kimi Räikkönen 110
2º Lewis Hamilton 109
3º Fernando Alonso 109

Gracias "Iceman" por el campeonato... y si queres... despues de leer este blog... podés sonreir.


miércoles, 17 de octubre de 2007

Mostrar y ocultar paneles en aplicaciones Winforms con VB.NET (o recorriendo colecciones de controles)

Cuando trabajamos con aplicaciones Windows solemos armar "ventanitas" con controles asociados a cierta funcionalidad de la aplicación.
En VB5 solía usar frames para est
o y tirabamos controles adentro de estos frames y lo mostrabamos u ocultabamos mediante la propiedad booleana 'visible'.
.NET nos ofrece varios controles para agrupar objetos. En este caso usaremos el control Panel.
la manera de mostrar u ocultar es la misma, mediante la propiedad 'visible' pero a medida que vamos agregando paneles cada vez que mostramos uno ten
emos que ocultar los demás y corremos el riesgo de que si lo hacemos uno por uno quizas en alguna parte nos olvidamos de ocultar alguno.
Para resolver esto aprovecharemos que los forms en .NET tienen una colección de los objetos que contienen y la vamos a recorrer para que no se nos saltee ningun panel.
Como ejemplo crearemos una aplicación winforms (en VS2005) donde dibujaremos el sgte. formulario:


Vemos que hay 3 paneles y tenemos 3 botones que muestran el panel 1, 2 o 3 solamente y en la parte inferior 2 botones que muestran u ocultan los 3 simultaneamente.


Para mostra y ocultar los paneles vamos a hacer un metodo que va a recorrer mediante un bucle For Each TODOS los controles del formulario y mediante un condicional verificamos si el control es de tipo 'Panel' en cuyo caso le asignamos a la propiedad visible el valor booleano que se recibe como paramentro (si este es 'true' mostramos y si es 'false' lo ocultamos).

El código del metodo es el sgte:

Private Sub paneles(ByVal visibilidad As Boolean)
'recorro todos los controles del formulario
For Each c As Control In Me.Controls
'si el control es de tipo Panel modifico su visibilidad segun el parametro
If TypeOf c Is Panel Then
c.Visible = visibilidad

End If
Next

End Sub

Luego en cada boton debo llamar al metodo 'paneles' y pasarle como parametros 'true' o 'false' segun corresponda, y de esta manera no tengo que preocuparme si sigo agregando paneles ya que este metodo recorre la coleccion completa de controles del formulario (o sea no se le va a pasar ninguno :) ).
Claro que en una aplicación real seguramente esto lo llame desde algun menú antes que de botones pero esto es solo un ejemplo. A propósito, vieron que interesante la manera de implementar menúes en VS2005? no? Bueno... esa la dejamos para la próxima entrada... :)
De yapa van el códifo (a continuación) y el proyecto en VB.NET para que lo puedan revisar (lo pueden bajar desde http://www.flr-si.com.ar/downloads/MostrarOcultarPaneles.zip ).

Código de la aplicación de ejemplo

Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'al cargar el formulario llamo al metodo que para ocultar los paneles
paneles(False)
End Sub

Private Sub btnpanel1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnpanel1.Click
'en cada boton llamo al metodo para ocultar los paneles
'y hago visible el panel correspondiente
paneles(False)
Panel1.Visible = True
End Sub

Private Sub btnpanel2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnpanel2.Click
paneles(False)
Panel2.Visible = True
End Sub

Private Sub btnpanel3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnpanel3.Click
paneles(False)
Panel3.Visible = True
End Sub

Private Sub btnmostrartodos_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnmostrartodos.Click
paneles(True)
End Sub

Private Sub btnocultartodos_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnocultartodos.Click
paneles(False)
End Sub

Private Sub paneles(ByVal visibilidad As Boolean)
'recorro todos los controles del formulario
For Each c As Control In Me.Controls
'si el control es de tipo Panel modifico su visibilidad segun el parametro
If TypeOf c Is Panel Then
c.Visible = visibilidad
End If
Next
End Sub

End Class


lunes, 15 de octubre de 2007

Nota 0 (cero), o bienvenidos.

Y bueno... alguna vez habia que empezar. Se supone que el primer post debería ser una declaración de objetivos del blog, que se va a subir de que va a tratar, etc, no!?
Bueno... no creo tenerla tan claro pero como ya dije... algun día había que empezar con esto de los blogs. Así que aquí vamos.
Ah! de lo que creo que voy a meter por aquí es algo de desarrollo, infraestructura, y todas aquellas que me resultaran util en mi trabajo y que sería bueno compartir o tener a mano...
Y quizas alguna que otra cosita extra.
Bueno... suerte... a ud y a mi...