Browsing articles from "mayo, 2009"

A vueltas con .NET: ComboBox Multi-Columna

Aunque parezca mentira Visual Basic 2008 no incorpora por defecto un ComboBox capaz de mostrar varias columnas de datos. La única manera de hacerlo es programarlo nosotros mismos o buscar ese control por Internet.

Como ya os imaginais a estas alturas, no vamos a inventar nada que ya esté inventado y funcione perfectamente. Por tanto, vamos a añadir el control capaz de hacer lo que queremos y explicar cómo utilizarlo para mostrar los datos que nos interese. En nuestro caso vamos a utilizar el control Icon ComboBox, creado por Steve McMahon, de la conocida página vbaccelerator

iconcombobox

¿Cómo añadir el control a nuestro proyecto?

Lo primero será descargar el control.

Una vez descargado tenemos que añadir el control al toolbox de nuestro proyecto. Clickando con el botón derecho del ratón encima del toolbox marcamos “Choose Items“, dentro del nuevo menú le damos a Browse y seleccionamos el archivo .dll del control.

Llegados a éste punto tenemos el nuevo control añadido al toolbox y listo para usarse. Lo siguiente será añadir el control al formulario, declararlo, modificar los aspectos visuales y empezar a pasarle valores. Vamos a ello.

Añadir el control al formulario se hace igual que cualquier otro control de los que vienen por defecte en Visual Studio, por tanto arrastramos el control al formulario y empezamos a trabajar con él.

Declaramos el control. Como veis se trata de definir cuántas columnas va a tener el control y el espacio que van a ocupar:


Dim column As IconComboBoxColumn = New IconComboBoxColumn

'Por defecto el control ya trae una columna, sólo cambiamos su tamaño
IconComboDepartamento.Columns(0).ColumnWidth = 128

'Segunda columna
column.ColumnWidth = 32
IconComboDepartamento.Columns.Add(column)

'Tercera columna

column = New IconComboBoxColumn
column.ColumnWidth = 96
IconComboDepartamento.Columns.Add(column)

Ya tenemos el control declarado, ahora solo falta poblarlo y mostrarlo. El método para poblar el control consiste en añadirle Items, cada item es una linea del combobox y a cada item le añadiremos tantos subitems como columnas tengamos en el control. Con el ejemplo queda más claro.


Dim ici As IconComboItem = New IconComboItem
ici.Text = "Informática"

Dim subitem As IconComboSubItem = New IconComboSubItem
subitem.Text = "5 trabajadores"
ici.SubItems.Add(subitem)

subitem = New IconComboSubItem
subitem.Text = "Piso superior"
ici.SubItems.Add(subitem)

IconComboDepartamento.Items.Add(ici)

De éste manera hemos añadido una linea al combobox de 3 columnas.

may 22, 2009

Las oficinas de Google Zurich

De todos es sabido que los trabajadores de Google no son precisamente unos malsuertudos. Las oficinas del gran buscador son famosas por sus lujos excéntricos y las comodidades de que disponen sus asalariados. En las siguientes imagenes podéis observar las oficinas de esta empresa en Zurich. ¿Baberos a punto?

google-zurich9

Continue reading »

La vida en el Googleplex

Vía Alt1040 he visto este vídeo que nos muestra en un rápido recorrido de 200 segundos como es la vida en las oficinas centrales de Google en California. El Googleplex.

Las elecciones Europeas e Internet

El Partido Popular anuncia a bombo y platillo que están totalmente en contra de cortar la conexión de los usuarios pero resulta que a la hora de la verdad el partido está dividido. En su página web se declaran en contra de “la creación de sistemas de canon digital indiscriminados”, aseguran que “trabajarán en España y en Europa para que las leyes no estrangulen la libertad de los usuarios de internet” y que “propondrán en el marco europeo una normativa que garantice que ningún usuario sea privado de su acceso a internet”.

Hasta aquí estamos de acuerdo pero ¿por qué los eurodiputados populares se han dividido en la votación de la enmienda –finalmente aceptada– que exigía una orden judicial para cortar el acceso a internet? Ese tipo de acciones son las que hacen perder votantes que se sienten engañados.

Por su lado, el PSOE votó a favor de la enmienda que exige una autorización judicial previa. “Hoy el Parlamento ha defendido la libertad de acceso a la red, porque es de sentido común que las comunicaciones electrónicas gocen de las mismas garantías judiciales que el resto de las comunicaciones. Es una victoria de las libertades ciudadanas, un éxito de la democracia”.

Pero entonces, ¿por qué el PSOE vota eso y después el Gobierno se sienta en la mesa de negociación con operadoras y entidades de gestión de los derechos de autor (SGAE) para desconectar a los usuarios que se intercambian material protegido por derechos de autor?

En fin, ya podéis votar tranquilos porque sus programas son claros como el agua.

Un mundial de aviones de papel

El pasado sábado se celebró en Salzburgo (Austria) la final del Red Bull Paper Wings World Finals 2009. La final del mundial de aviones de papel llegó a su fin después de dos dias de intensa competición en el que un total de 253 participantes de 83 paises llegaron a los límites de la física de una hoja de papel A4. Los finalistas tuvieron que pasar por un un total 613 torneos en los que tomaron parte 37.017 competidores.

La competición consta de 3 categorías, Longest Distance (mayor distancia), Longest Airtime (mayor tiempo de vuelo) y Aerobatics (acrobacias). Los ganadores fueron, respectivamente, Brasil, Japón y Croacia.

Red Bull Paperwings World Final

En el apartado de mayor tiempo de vuelo el ganador fue Leonard Ang, quien consiguió que su avión se mantuviera en el aire un total de 11,66 segundos.  El japonés Takeshige Kishlura Kisshii se hizo con el título en el apartado de acrobacias mientras que el croata Jovica Kozlica repitió su título de 2006 en la categoría de mayor distancia, con una espectacular marca de 54, 43 metros.

No deja de resultar sorprendente que alguien consiga lanzar su avión de papel a esa distancia. Desconozco vuestras habilidades papirofléxicas pero os aseguro que las mías son prácticamente nulas y noticias como ésta me sorprenden mucho.

Por si a alguien le apetece recordar sus tiempo de infancia os recomiendo que echeis un vistazo por Avioncitos de Papel. Una web muy completa sobre aviones de papel, con planos, ilustraciones y demás información necesaria para construir el avión de papel que siempre deseasteis.

A vueltas con .NET: Modificar Connection Strings en Runtime

Esto del .NET me parece alucinante, la de cosas que se pueden llegar a hacer de forma rápida y sencilla es enorme. Sin hablar de la cantidad ingente de ejemplos y ayuda que podemos encontrar por Internet. Sin embargo, me he encontrado con un problema.

En una aplicación que estoy haciendo necesito poder leer los datos de diferentes bases de datos en función del dominio en el que se ha autentificado el usuario. Las bases de datos corresponden a diferentes fábricas alrededor del mundo así que necesito poder cambiar el ConnectionString que utilizan los DataSets en tiempo de ejecución.  Después de indagar ésto es lo que he conseguido, espero que alguien le ayude.

Lo primero que debemos hacer es declarar los diferentes ConnectionString que podemos utilizar, en nuestro caso lo haremos dentro de  My Project -> Settings.

mysettings

En mi caso tengo 3 Connection Strings, uno de ellos (ConnectionString) es el que utilizan los diferentes DataSets y los otros dos (SpainConnectionString y ChinaConnectionString) son los diferentes valores que puede tomar la primera variable. En la misma pantalla de Settings le damos a ViewCode y saltaremos al código de la clase Settings  que nos permite utilizar eventos específicos de esa clase.


Namespace My
'This class allows you to handle specific events on the settings class:
' The SettingChanging event is raised before a setting's value is changed.
' The PropertyChanged event is raised after a setting's value is changed.
' The SettingsLoaded event is raised after the setting values are loaded.
' The SettingsSaving event is raised before the setting values are saved.
Partial Friend NotInheritable Class MySettings
Public WriteOnly Property ChangeConnectionString() As String
Set(ByVal Value As String)
My.Settings("ConnectionString") = Value
End Set
End Property
End Class
End Namespace

Éste es el código que modifica el valor de la variable ConnectionString (también se puede utilizar para cambiar culaquier valor de la clase My Setting), ahora debemos llamar a éste proceso con el valor que nos interese.

En nuestro caso miramos el dominio del usuario y el rango de IP’s del usuario.

Private Sub GetDomain(ByVal HostName As String)
'Buscamos el dominio al que corresponde la ip que tenemos asignada,
'no el dominio al que nos hemos
'logueado desde Windows
Dim Direcciones As IPAddress() = Dns.GetHostAddresses(HostName)
'Recorremos todos los posibles dominios y cargamos el portal del dominio correspondiente
Select Case Mid(Mid(Direcciones(0).ToString(), 9), 1, InStr(Mid(Direcciones(0).ToString(), 9), ".") - 1)
Case My.Settings.SPAIN_IP
My.Settings.ChangeConnectionString = My.Settings.SPAINConnectionString
Case My.Settings.CHINA_IP
My.Settings.ChangeConnectionString = My.Settings.CHINAConnectionString
Case Else
'Si llegamos aqui es que no estamos en ningun dominio conocido, por tanto cerramos el portal
End Select
End Sub

Espero que os sea de ayuda.

may 4, 2009

La SGAE amenaza un festival benéfico

Leo una notícia publicada por El Mundo que mi cerebro no puede asimilar a estas horas de la mañana y sin mi primer café. Leo que la SGAE se lleva el 10% de lo recaudado en un festival benéfico en Almería para salvar la vida de un niño.

En el festival actuó entre otros David Bisbal sin cobrar un duro pero ahí, entre los matorrales acechaba el delegado en Almería de la SGAE . En el momento en que su presa se distrajo saltó cual Dientes de Sable a la yugular amenazando con cancelar el evento si no se pagaban sus tributos.

concierto

“De los 50.000 euros recaudados por unos padres en filántropo concierto para salvar al hijo -aquejado del Síndrome de Alexander-, la sociedad que representa a los músicos ha obligado a la familia a desembolsarle 5.000.”

¿Pero, dónde hemos llegado? Se acepta alegremente que una entidad como la SGAE decida si se celebran o no los conciertos mientras las miradas del gobierno apuntan hacia otro lado. Algunos silban, otros ríen viendo los benéficios y a la gran mayoría se le retuercen las tripas ante estas acciones. Un festival benéfico se presupone un acto desinteresado donde los artistas y el público van para apoyar a la causa.

“El hombre me llamó cuando estaba con el niño en rehabilitación en la clínica Fisiomarina. Me dijo que teníamos que vernos, y allí se vino”, dice Toñi, la madre. “Me explicó que había que dar una señal antes del concierto para que pudiera hacerse. Y que era ineludible firmar una solicitud de autorización a no ser que el autor cediera sus derechos. Así que firmé”.

“Que vida más triste” borra Youtube

Los chicos de “Que vida más triste” nos han dejado esta perla en la que borran Youtube subiendo un virus y se dedican a rehacer los vídeos más vistos para que nadie se de cuenta de su cagada.

“Ahora todo el mundo saca esos blogs, esos diarios de internet en los que cuenta su vida cotidiana en farragosas líneas de texto. ¿porque no cogen la cámara, se graban contando sus miserias y lo cuelgan directamente en la red?”

“¿Y por que no lo haces tu?”

“tienes razón, lo voy a hacer, cada domingo y de resaca”

Google estima nuevos brotes de gripe

La nueva herramienta de rastreo de Google para seguir el desarrollo de los casos de gripe porcina en México basa sus estimaciones en las búsquedas que realizan los internautas. Pero, en realidad ¿tienen sentido estas estadísticas?.

La empresa se dió cuenta que las personas afectadas con la nueva gripe tienden a buscar el mismo tipo de información en internet y estas búsquedas se pueden utilizar para detectar los posibles brotes de la pandemia. “Hemos comprobado que los usuarios de Google en México buscan temas relacionados con la gripe cuando están experimentando síntomas relacionados con ella”, dijo Jeremy Ginsberg, ingeniero líder del proyecto Flu Trends en Google.

gripeporcina

La teoría de Ginsberg es que las personas enfermas buscan información diferente a las que simplemente buscan información. Realmente, la idea tiene bastante sentido y aplicando algoritmos de Minería de Datos podría separarse por conjuntos la información obtenida referente a las búsquedas realizadas. Pero la fiabilidad de este sistema no se ha verificado por el momento contrastándola con la realidad de la pandemia. Así que los datos podrían ser no fiables.