Angel Hernández

October 2008 - Posts

Insert multiple records in MySQL / Insertar múltiples registros en MySQL

Hi community, I'm preparing an integration demo as I mentioned some days ago, and just when I needed to insert multiple records in MySQL instance I've got an "Syntax Error" message Sad  I'm not an Linux or any other tool based on it specialist  (such as MySQL) and the syntax "seemed" Ok to me, hence I needed to read some of the documentation and it's "slightly" different to the ANSI SQL Syntax and T-SQL syntax I'm used to write. The pictures shown below depicts the wrong and right way to do it.

Cheers,

Angel


 Hola comunidad, estoy preparando un demo de integración como mencioné hace unos días, y justo cuando necesitaba insertar múltiples registros en mi instancia de MySQL recibí un mensaje de "Error de Sintaxis" Sad No soy un especialista en Linux u otra herramienta basada en él (como por ejemplo, MySQL) y la sintaxis "parecía"  correcta, por lo tanto necesité leer un poco de la documentación y es "levemente" distinta a la sintaxis de ANSI SQL y T-SQL con las que estoy familiarizado. Las imagénes a continuación muestran la manera correcta e incorrecta de hácerlo.

Saludos,

Angel

Wrong way / Manera Incorrecta

Right way / Manera Correcta

Tweaking a bit MSI files / Manipulando un poco los archivos MSI

 

Hi community, I'm setting up a demo with different technologies which includes Windows, Ubuntu, .NET, Java and maybe some MySQL, however I needed SQL Server 2000 sample databases and I had already the MSI file in my laptop so I remembered a nice tweak I used to do with this type of file. I'm talking about manipulating, modifying and extracting a specific file from the installer package. The stuff required to do it:

We need WinRAR to open the MSI and see its content and we can manipulate and see the file we're interested on by using Orca. It's a pretty straightforward procedure and it's really useful if we're talking about a large MSI file. The pictures shown below depicts the procedure.

 

Cheers,

 

Angel


 

Hola comunidad, actualmente preparo un demo que incluye diferentes tecnologías como Windows, Ubuntu, .NET, Java y quizás algo de MySQL, sin embargo,  necesitaba las bases de datos de ejemplo de SQL Server 2000 y ya tenía el archivo MSI en mi laptop por lo que me recordé de un truco que solía hacer con este tipo de archivo.  Me refiero a manipular, modificar y extraer un archivo específico del paquete de instalación. Lo necesario para realizarlo es:

Necesitamos WinRAR para abrir el archivo MSI y ver su contenido para luego manipular y ver el archivo en el cual estamos interesados utilizando  Orca. Es un procedimiento sencillo y útil si estamos hablando de un archivo MSI grande. Las imágenes a continuación  muestran el procedimiento.

 

 

Saludos,

 

Angel

Accessing a managed object from unmanaged memory (Native)

I'm currently writing an article that's related to WPF, Win32 and Hooks which use callbacks  to notify about the changes performed on a given object, well I received a couple of exceptions due to garbage collection and the callbacks my application had that moment. The solution was to implement the GCHandle structure and problem sorted. Below you can see the implementation

Regards,

Angel

Accediendo un objeto gestionado desde memoria no gestionada (Nativa)

Actualmente el artículo que escribo tiene que ver con WPF, Win32 y manejo de ganchos (Hooks) los cuales hacen uso de callbacks para notificar sobre los cambios realizados sobre de un objeto, pues bien recibí un par de excepciones porque el colector de basura estaba manipulando los callback que tenía en un momento dado. La solución fue implementar la estructura GCHandle y problema resuelto. Anexo muestro su implementación

Saludos,

Angel

Retrieving file path from IsolatedStorage

Some days ago I was working on a new article and I needed to retrieve a file embedded in my assembly, I usually extract it into the TEMP folder but before publishing anything (code) I test it on virtual machines and it failed on Windows Server 2008  Sad  but after investigating the cause I finally found the problem... Permissions.  Anyways, I wrote a method which returns the path of a file in the IsolatedStorage so we can reference it anywhere in our application.

Regards,

Angel

Recuperando ruta de archivo en el IsolatedStorage

En días pasados trabajando en un artículo nuevo tuve la necesidad de recuperar un archivo incrustado como recurso en mi ensamblaje, por lo general siempre lo extraigo en el directorio TEMP pero antes de publicar algo siempre lo pruebo en máquinas virtuales y en una con Windows Server 2008 falló Sad por lo que después de investigar el problema llegué al problema... Permisos. En fin, para evitar eso escribí una función que permite recuperar la ruta del archivo en el IsolatedStorage de manera que lo podemos referenciar desde nuestra aplicación. 

Saludos,

Angel

Implementing LINQ on SharePoint

LINQ  has been with us since .NET Framework 3.0 and has given us a variety of options in terms of performing queries, the simple fact of having a query engine built into the language is really interesting,  during this time I've used LINQ to query objects collections, XML and SQL server data sources but I haven't ever tried it on SharePoint. I'm currently developing a framework for SharePoint based projects for the company I work for CustomWare, which has given me freedom to create and innovate with new technology on the projects I'm engaged on and this is really cool, well until now we've been used to retrieve/manipulate a given object member of a collection by implementing for... foreach  recursive loops however it's not an elegant or stylized way but it works, we've always heard that "Necessity is the mother of all invention" and it's true because a couple of days ago I needed to "query" about the existence of a specific object in a SharePoint Site so I tried to accomplish it with LINQ and yea... It works perfectly Big Smile The following method returns a  SPListItem through a LINQ based query

However... We must comment about a couple of things here:

  • Anonymous Type ,  once a LINQ query is built the developer can then select a subset (properties) of the collection doing so obtains an "anonymous type" which is an object without a class definition, because the compiler infers the properties' type at runtime (feature present in F# as well).
  • Lambda Expressions,  is an anonymous function that may contain expressions and statements,  and can be used to create delegates or expression tree types.

Anonymous types can't be passed within methods because they don't have a "defined class" and they're inferred by the compiler, leaving us three ways to retrieve their value which are: 

  • Iterating through the resultset returned by the query
  • Use Reflection (but we need to be careful about performance impact) 

 

  • Use a method to perform a cast but the only catch is... We can't call it outside the same assembly

I hope this may be of some usefulness

A hug

Angel

 

 

 

Implementando LINQ con SharePoint

LINQ  ha estado con nosotros desde la versión 3.0 del .NET Framework  y consigo nos ha dado una variedad de opciones en términos de realizar consultas, el hecho de tener un motor de consulta que forma parte del lenguaje es realmente interesante, durante este tiempo he utilizado LINQ para consultar colecciones de objetos, XML y orígenes de datos basados en SQL pero nunca lo había implementado para SharePoint. Actualmente desarrollo un marco de trabajo para proyectos  basados en SharePoint para mi empresa actual CustomWare, la cual me ha dado libertad de crear e innovar con nueva tecnología en los proyectos, lo cual me emociona mucho, pues bien hasta ahora la manera que teníamos de recuperar/manipular un objeto específico de una colección era mediante la implementación de for… y foreach… recursivos sin embargo es algo no muy elegante ó estilizado pero hace el trabajo y funciona, se dice que la necesidad es la madre de toda creación y es verdad porque hace un par de días atrás necesitaba “consultar” sobre la existencia de un objeto específico en un Site de SharePoint y me puse a probar como se podría conseguir eso con LINQ y si… Funciona de maravilla Big Smile El siguiente método retorna un SPListItem a través de una consulta basada en LINQ

Sin embargo… vale la pena acotar unas cosas acá:

  • Tipos anónimos, cuando se crea una consulta en LINQ se puede seleccionar un subconjunto (propiedades)  de la colección creando así un “tipo anónimo” que es un objeto sin definición previa de una clase, ya que el compilador infiere el tipo de las propiedades en tiempo de ejecución (característica presente en F# también).
  • Expresiones Lambda, es una función anónima que puede contener expresiones y declaraciones que pueden ser utilizadas para crear delegados ó árboles de expresiones de tipo.

Los tipos anónimos no pueden ser pasados entre funciones ya que estos no tienen “clase definida” y ellos son inferidos por el compilador, por lo que tenemos tres maneras de recuperar su valor, las cuales menciono a continuación:

  • Iterando a través de los resultados retornados por la consulta
  • Utilizar Reflection (la cual debe usarse con cautela considerando el impacto sobre el rendimiento)

 

  • Utilizar una función que realice la conversión de tipo por nosotros, el único detalle es que no puede ser utilizada desde fuera del ensamblaje

Espero les sea útil

Un abrazo

Angel