Archivo de la categoría: Miscellaneous
Conversaciones entre lenguages y compiladores – Vasado en una historia Real!
Con vuestro permiso y para no perder costumbre os invito a leer este relato corto en tono de humor… que lo disfrutéis!
Hace algunos días, en una de esas reuniones de profesionales, en las que aprovechando el buen recaudo de una cena, se discuten y se tratan todo tipo de temas sin orden ni concierto; recuerdo como entre medio de disertaciones sobre metodologías, lenguajes y sintaxis, me encontré “para variar” evocando aquellos tiempos en que el pan era pan, el vino, vino y los lenguajes eran lenguajes de ¡alto nivel!.A lo ancho de la alargada mesa se mantenían diversos “hilos” activos con diversas conversaciones “a saber cual la mejor”. Mientras sin saber porque, y acaloradamente empecé a recordar aquellos tiempos en los que los compiladores eras verdaderas joyas de la ingeniería. Aquellos tiempos en los que sin existir la programación orientada a objeto éramos capaces de depurar los ensamblados de los Intel 8086 de las lanzaderas espaciales “online” y en tiempo real, para terminar llevando a un puñado de astronautas a la luna… de pronto me grite para mis adentros :
“Pep!!! Eres un viejo incorregible, siempre terminas hablando de cómo era, pareces un petrificado historiador de informática”A caldo de la conversación y después de mi pausa se fueron apagando el resto de conversaciones. Sin darme cuenta concentre todas las miradas mientras argumentaba que a pesar de entender la incorporación de ciertas metodologías tales como el procedimiento de realizar un “Invoke” para poder manejar datos entre hilos, tenía cierta sensación de que la medida que avanzábamos en las técnicas perdíamos ciertas purezas del lenguaje. Para poner un ejemplo, desde cierto punto de vista aunque no global, podría entender que fuera el propio compilador que decidiera como cruzar esos datos que se generan entre hilos de ejecución diferentes, de forma que no me obligara a invocar un procedimiento a no ser que yo lo explicitara.
Me gustaría poder enseñaros una foto del las caras que reflejaban los que estaban atentos a mi conversación, en ese momento no se si ponían cara de bobo por absortos o porque realmente estaban pensando que Pep estaba más loco que una cabra. Una vez mas para mis adentros pensé ..
“quien me mandara a mi meterme en semejantes pasteles! … luego me quejo de mi fama! J”.
En honor a todos los presentes y en pro de mi integridad y dedicado a mis contertulios más próximos Vicenc Masanas y Marc Rubiño, os dejo el apunte que en una línea resume lo estaba intentando explicar y que ¡en una línea! Explica que mis pensamientos no eran tan salidos de contexto ni estaban en absoluto equivocados.CheckForIllegalCrossThreadCalls = false;
Para los que no estuvisteis en la cena… con este pragma instruimos al compilador si queremos controlar o no, las llamadas entre hilos a pesar de que sean “ilegales”, por lo tanto mi código podrá intercambiar datos entre hilos por contrabando sin necesidad de invoKar a nadie.Eso si en C++… ahora os dejo a vosotros que averigüéis si mi critica a los compiladores de C# o Visual Basic , eran infundadas y disponen de algo parecido.Cuidaros mucho y buen FinDe,Pep Lluis,
VB9 – Sobre los INICIALIZADORES.
Para añidir otra forma de verlo, a esta serie de «cortos»
Private Sub Inicializar()‘
‘Los Inicializadores de siempre
Dim MiPersona = New Persona
With MiPersona
.Nombre = «Carlos»
.Apellido = «Arjona»
.Edad = 28
End With
‘
‘Ahora en VB9, inicializadores basados en expresiones
‘nos permiten crear colecciones de objetos complejos
Dim TusPersonas = New List(Of Individuo) _
{ _
{ .Nombre = «Jose», _
.Apellido = «Garcia»} _
{ .Nombre = «Antonio», _
.Apeliido = «Garrido»} _
}
End Sub
Partial Class Individuo
Public Property Nombre As String
Public property Apellido as String
Public Property Edad as Integer
End Class
:-))
¡CatDotNet!
Venga! Venga! CATDOTNET
Ayer 26.03.2008 pudimos asistir al nacimiento oficial de CatDotNet, un grupo con un increíble potencial humano dispuesto a comerse «la Catalunya Central» a base de ilusión y pasión por divulgar la tecnología que nos ocupa la mayor parte de nuestro tiempo, eso sí! En compañía de personas con mucho ‘talante’ como el recién estrenado Presidente José Miguel Torres y como no soportado por el artífice Lleonar del Rio. A falta de nombrar el resto de plantilla por temor a que la memoria se despiste de alguno, decir que el mejor aval de CatDotNet esta en el gran equipo que han sido capaces de formar y comprometer.
¡FELICIDADES! … sin duda esta noticia refuerza la estupenda experiencia que brinda poder participar y pertenecer a la gran familia de grupos que en España alcanza ya casi su veintena.
Estaremos al tanto de sus gestas.
http://www.catdotnet.org/
PD. Para variar fue un placer compartir mesa con Vicenç Masanas y Marc Rubiño, peazo apasionaos capaces de conducirse durante dos Horas para arrimarse dando soporte a una comunidad donde compartir y colaborar se convierte en prioridad.
Vacaciones de Semana Santa
Hola a todos,
Algunos de vosotros estáis contactando a través de este blog para resolver alguna que otra consulta… en Semana Santa algunos tenemos la suerte de poder hacer un paréntesis y tomarnos un adelantado descanso. En tanto volvamos de vacaciones estaré respondiendo a todas las consultas pendientes, aproximadamente a partir del próximo Martes.
Hasta la vuelta y que disfrutéis de este paréntesis… sobre todos los que podáis tomaros estas «mini vacaciones»
Pep Lluis,
¿como puedo saber las propiedades disponibles del «user» en mi LDAP?
Dim EntradasEnElDirectorio As New DirectoryEntry(«LDAP://mi.servidor.com»)
Dim BusquedaEnElDirectorio As New DirectorySearcher(EntradasEnElDirectorio)
BusquedaEnElDirectorio.Filter = «(ObjectClass=user)»
Dim EntradaEnDirectorio As DirectoryEntry
For Each Busqueda As SearchResult In BusquedaEnElDirectorio.FindAll()
EntradaEnDirectorio = Busqueda.GetDirectoryEntry
For Each propiedad As String In EntradaEnDirectorio.Properties.PropertyNames
Me.ListBox1.Items.Add(propiedad)
Next
Next
Saludos,
Pep Lluis
Saber de nuestros Usuarios en LDAP, Rerellando un GridView desde una Consulta.
Imports System.DirectoryServices ‘Espacio de nombres
Public Class Form1
Private Datagrid As New DataGridView
‘Constructor para nuestro DataGridView
‘
‘ Nuestra particular clase para definir un Usuario
Private Class UserInfo
‘
‘Leer/Asignar su nombre
Private m_Nombre As String
Public Property Nombre() As String
Get
Return m_Nombre
End Get
Set(ByVal value As String)
m_Nombre = value
End Set
End Property
‘
‘Leer/Asignar su Descripcion
Private m_Descripcion As String
Public Property Descripcion() As String
Get
Return m_Descripcion
End Get
Set(ByVal value As String)
m_Descripcion = value
End Set
End Property
End Class
‘
‘ Al Cargar el Formulario
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
‘Incorporar el DataGridView a nuestro form
Me.Controls.Add(Datagrid)
Me.Datagrid.Dock = DockStyle.Fill ‘Ocupar toda el area del form
Me.Datagrid.AllowUserToAddRows = False ‘No se puede añadir celdas
Me.Datagrid.AllowUserToDeleteRows = False ‘No se puede eliminar celdas
Me.Datagrid.EditMode = DataGridViewEditMode.EditProgrammatically
‘Nuestros apuntes en el directorio del Servidor
Dim EntradasEnElDirectorio As New DirectoryEntry(LDAP://Servidor)
‘Nuestro buscador
Dim BusquedaEnElDirectorio As New DirectorySearcher(EntradasEnElDirectorio)
‘Filtro de busqueda
BusquedaEnElDirectorio.Filter = «(ObjectClass=user)»
‘Leer las entradas de usuario
Dim Entradas = From usuario As SearchResult In BusquedaEnElDirectorio.FindAll() _
Select usuario.GetDirectoryEntry
‘Rellenar el DataGridView con el resultado de la consulta, con la info requerida
Datagrid.DataSource = _
(From usuario In Entradas _
Select New UserInfo() With {.Nombre = usuario.Properties(«name»).Value, _
.Descripcion = usuario.Properties(«description»).Value}).ToList
End Sub
End Class
Saber sobre los Usuarios registrados en nuestro LDAP
En determinadas situaciones resulta de gran utilidad poder saber mas acerca de nuestros usuarios preguntando al LDAP de nuestro dominio.
Espero que os sea de utilidad.
‘Saber de los Usuarios de nuestro LDAPImports System.DirectoryServices ‘Espacio de nombres
Public Class ServiciosDeDirectorio
Private listBox1 As New ListBox() ‘Constructor del ListBox
Private Sub Form_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
‘Nuestros apuntes en el direccio
Dim EntradasEnElDirectorio As New DirectoryEntry(«LDAP://miServidor»)
‘Nuestro buscador
Dim BusquedaEnElDirectorio As New DirectorySearcher(EntradasEnElDirectorio)
‘Filtro de busqueda, en nuestro caso usuarios
BusquedaEnElDirectorio.Filter = «(ObjectClass=user)»
‘Nuestra entrada de usuario en cuestion
Dim EntradaEnDirectorio As DirectoryEntry
‘Incorporar el listbox a nuestro form
Me.Controls.Add(listBox1)
Me.listBox1.Dock = DockStyle.Fill ‘Ocupar toda el area del form
‘Para cada entrada en el directorio
For Each Busqueda As SearchResult In BusquedaEnElDirectorio.FindAll()
‘Obtenerla
EntradaEnDirectorio = Busqueda.GetDirectoryEntry
‘Añadir la informacion (en nuestro caso nombre/descripcion)
Me.listBox1.Items.AddRange(New Object() { _
EntradaEnDirectorio.Properties(«name»).Value, _
Space(12) + «->» + _
EntradaEnDirectorio.Properties(«description»).Value _
})
Next
End Sub End Class
Una Buena forma de despedir el año y empezar de nuevo!
Un año mas!
Saludo Navideño
La llegada de la Navidad, y en sí, el inicio de un nuevo año, hace despertar en una mayoría de nosotros diversas e incontenibles emociones y sentimientos. Sin saber exactamente porque razón, invaden nuestro interior, haciendo de estos, unos días muy especiales. Cuando se tiene la oportunidad de dirigirse a una comunidad en pro de transmitir un saludo, uno no puede evitar de pensar en frases sencillas entorno a la paz, la salud, el amor y todo lo relacionado con la felicidad, nuestro esfuerzo personal para conseguirlo, a demás de hacernos mejores personas en ese sentido, hace que este, nuestro mundo, sea un mundo mejor.
Hoy he mirado a las estrellas y en mi pequeñez intento buscar la humildad consciente de saberme un privilegiado que puede ocupar parte del día en compartir y divulgar su granito de conocimiento técnico con una inmensa comunidad que entiende un lenguaje común, la generosidad.
Desde esta pequeña ventana, no hay mejores fechas para demostrar mi admiración y reconocimiento a todos los anónimos, a todos esos incansables desinteresados que con su trabajo, entrega y participación hacen posible que este hilo sea una realidad por donde circula la energía hispana en forma de pasión por la tecnología.
Feliz Navidad y los mejores deseos para este 2008.
Pep Lluis.