Ver por etiquetas

Todas las etiquetas » C# (RSS)

Hemos leído: Adam Nathan: Windows Presentatio Foundation Unleashed

La idea de adelantar casi un año la lectura de este libro respecto a mi plan ha sido la de hacer un programa utilizando WPF, pero al final ha sido peor el remedio que la enfermedad. O dicho de otro modo: pese a ser enormemente potente, pese a soportar temas, pese a contener ideas relativamente nuevas y bien implementadas... no lo voy a hacer con WPF. Simplemente es que no me gusta cómo ha sido expresada dicha potencia. Me han dicho que quizás si leyera el libro equivalente de Petzold lo vería de...
Publicado por Rafael Ontivero | 6 comment(s)
Archivado en: ,

Concurrencia y más concurrencia

Quienes hayan seguido mi podcast sobre Hilos en .NET se habrán dado cuenta de que la concurrencia bien entendida no es trivial ni de lejos, y eso que yo sólo cubrí los aspectos más básicos y por separado, vistos uno a uno. Quien no lo haya hecho y sienta curiosidad por el tema, puede acceder aquí , registrarse, y bajarse el vídeo y la solución de ejemplo (hay que ir hacia abajo hasta encontrar mi presentación). Herb Sutter es uno de los...

El RFOG da un webcast… sobre hilos en .NET

Estos de Second Nug están que se salen los tíos. Nada más volver de vacaciones me encuentro un mensaje diciéndome si quiero hacer un Webcast sobre hilos de ejecución. ¡Pero qué has dicho, si yo me apunto a un bombardeo aunque no haya aviones! Así que bueno, acepté, y aquí estamos, recordando el evento. Arriba tenéis el cartel. Si hacéis clic sobre él os llevará a la Web de registro. Para que os hagáis una idea, primero voy a hablar de la teoría (pero sin mucha teoría), luego seguiré comentando aspectos...
Publicado por Rafael Ontivero | 12 comment(s)
Archivado en: ,,,

Interop en C# y C++/CLI. Dos puntos de vista de un mismo concepto.

El número 57 de la revista dotNetManía (que se corresponde a marzo del corriente) publica mi artículo de título homónimo a esta entrada que, como su nombre indica, repasa ciertas formas de Interop entre C# y una DLL nativa, así como C++/CLI y la misma DLL. Entre otras cosas explico cómo convertir un delegado en un callback nativo para ser pasado a una DLL que los requiera, cómo hacer justo lo contrario, que es usar un callback nativo desde código...
Publicado por Rafael Ontivero | con no comments

La estructura intraducible, I (de Interop y otras yerbas)

A veces resulta curioso cómo algo tan sencillo como mapear una estructura de C en .NET se puede convertir en un algo muy cercano a una pesadilla dependiendo del lenguaje que hayamos elegido para realizarlo. Partamos de la siguiente estructura de C: typedef struct { BYTE byOut[4]; // Outputs [0..3] BYTE byAux; // Aux output } usbOutput; A simple vista es algo muy elemental: un array de cuatro bytes y uno más después. Esto en una máquina Intel en realidad termina ocupando 8 bytes, 4 para el primer...

No uses goto, que yo lo usaré (III). Ganador[es]

Bueno, en la entrada anterior lancé un reto. Al principio estuve tentado de declararlo desierto, ya que todos os habéis centrado en la sentencia swtich , cuya mejor implementación a bajo nivel o bien utiliza gotos a mansalva o bien hace llamadas de tipo call , y muchas veces combinaciones de las mismas (y para ser justos con todos, ni me acordé cuando puse el reto). Pero una relectura del tema hace que no pueda declararlo desierto, ya que las tres entradas en las que se ha puesto algún ejemplo directo...

No uses goto, que yo lo usaré (II). Premio al que lo consiga.

En mi anterior entrada hablé sobre dos curiosidades que he encontrado utilizando el Reflector. En concreto, la que más sensación ha causado ha sido la del uso de goto dentro de la implementación de un método en la biblioteca de .NET. Ciertamente quiero en primer lugar romper una lanza a favor, si no de esos gotos en concreto, sí de su uso. Con esto no quiero decir que haya que utilizarlo al menos una vez en tus programas, de hecho, la mayoría de los que yo hago no lo usan, pero a veces es, si no...
Publicado por Rafael Ontivero | 9 comment(s)

El RFOG ya no es lo que era...

Os cuento una histora que me ha ocurrido esta misma tarde. Aparte de emocionarme al ver el nuevo iLiad con pantalla A4 (gracias, Alfredo Novoa) y de pensar que, pese a haber corregido varios defectos (ahora lleva para pasar página en tres de los cuatro lados), supongo que la velocidad leyendo Mobipocket va a ser la misma que con el iLiad, así que paso de momento. Bueno, ya me he ido por los Cerros de Úbeda. En fin, que la historia comienza con el cierre de una aplicación que tengo que montar mañana...

BUG: El bug del bool en interop desde C++ nativo

Basta que uno plante un circo para que le crezcan los enanos, y como se puede comprobar si uno mira al jardín de la vecina esa que está tan buena, a veces a uno le crecen sin estar bueno ni haber montado la carpa. No sé en qué pensarán estos señores de Microsoft, pero que el bug venga arrastrado desde por lo menos 2002 y no esté solucionado clama al cielo. Pero antes de despotricar –que lo haré-, vamos a ver en qué consiste. Uno tiene una inocente DLL que posee una función que devuelve un valor de...
Publicado por Rafael Ontivero | 4 comment(s)
Archivado en: ,,,

Primer asalto: VB.NET contra C#

Mañana por la tarde se va a desarrollar un evento por difusión Web que seguro no va a dejar indiferente a nadie, ya que, aparte del tema, dos pesos pesados del desarrollo van a pelearse para dirimir cuál de los dos lenguajes estrella del .NET es el mejor. El que quiera suscribirse al evento, que no es presencial, puede hacerlo aquí . Los integrantes del evento son Guillermo Som, alias El Guille y Marino Posadas , ambos MVP de sus respectivas áreas. Y la batalla promete ser de proporciones épicas...

Singleton con y sin Singleton

Ahora que están de moda los antipatrones, voy a explicar un patrón que es muy famoso pero que no me gusta absolutamente nada, no por el diseño del mismo, sino por los efectos laterales no deseados que genera. Por ello también voy a explicar otra forma de construirlo que me gusta más, aunque adolece de otras limitaciones. Singleton es un patrón que nos obliga a tener una sola instancia de una clase, es decir, globalmente sólo podremos disponer de un objeto de ese...
Publicado por Rafael Ontivero | 18 comment(s)
Archivado en: ,,,

Hemos leído: Serial Port Complete 2nd. Ed. (Jan Axelson)

Otro que ha caído como una pera madura de un árbol. Y no es porque no traiga información, que la trae, y mucha, sino porque… porque… aparte de los elementos de diseño hardware, que no me interesan lo más mínimo –para eso están los chatarrillas , como yo los llamo [1] -, no me aportan nada nuevo, sino más bien… se queda muy corto. Pero veamos qué trae el libro. Los primeros capítulos son un poco rollo, con una serie de explicaciones...
Publicado por Rafael Ontivero | con no comments
Archivado en: ,,,

C++/CLI y C# VII: GetLastError en escenarios de interop

Introducción Hay un tema que ha aparecido indirectamente en algunos mensajes del grupo de C# relativo al tema de Interop mediante atributos (que es el único que puede hacer C# y VB.NET), y que desde que estoy leyendo dicho grupo nadie ha advertido o ha tenido algún problema con él, o al menos yo no me he dado cuenta de ello. Cuando uno hace una llamada al API de Win32, muchas funciones devuelven un estado de error a través de un handle inválido o simplemente devolviendo FALSE . Es una consecuencia...
Publicado por Rafael Ontivero | con no comments
Archivado en: ,,

Eventos "a la" .NET

Dado que últimamente ni Word ni el Windows Live Writer ni siquiera la edición a mano en la plantilla de este blog me deja escribir algo coherente (cuando no son los acentos, son los ejemplos de código, etc), y como no vivo para la informática, sino que la informática vive para mí, esta entrada está en PDF. La podéis bajar de aquí .
Publicado por Rafael Ontivero | con no comments
Archivado en: ,

Eventos: Málaga, Malagón, el último que llegue es m... un empollón

Héteme aquí de nuevo ante la prístina superficie en blanco para ser cubierta de garabatos... Ejem, bueno, mejor digamos ante la plantilla del Comunity Sever para poner una nueva entrada en este blog. Y ocurre que el grupo de usuarios de Málaga.NET va a realizar el 15 de octubre en Málaga la Conferencia October.NET , un evento para desarrolladores (otros dirían "pogramadores", y alguno más, jodíos developers ) que tiene buena pinta, tanto por las firmas de los ponentes como por los contenidos...
Publicado por Rafael Ontivero | 3 comment(s)
Archivado en: ,

C++/CLI V: Propiedades

Las propiedades en C++/CLI tienen un tratamiento similar, por no decir idéntico, con su equivalente en C#, con la diferencia de que son algo más potentes, no porque lo hayan hecho así, sino por las características notacionales del C++. El concepto de propiedad no nace con el .NET, sino que existe desde mucho antes. Ya Borland en su Turbo Pascal Delphi implementa la idea, luego extendida a C++Builder: l as closures el __property . El concepto nace con la idea de tener una forma de acceder a variables...
Publicado por Rafael Ontivero | 2 comment(s)
Archivado en: ,,

C++ y C#: Enumeraciones compartidas

Acabo de leer en uno de los blogs a los que estoy suscrito un tema que considero bastante curioso e interesante, no porque sea una cosa que se vaya a utilizar todos los días (de hecho desaconsejo su uso), pero tiene su aplicación y su motivo. El artículo se titula " Sharing enums across C# and C++", es decir, "Compartiendo enumeraciones entre C# y C++". Ojo, no C++/CLI, sino C++. El de toda la vida. Para aquellos que no se aclaren mucho con el inglés, lo que básicamente hace el...
Publicado por Rafael Ontivero | con no comments
Archivado en: ,,

C++/CLI y C#: Asombrosas diferencias en el optimizador de código (y V)

Vamos para atrás, como los cangrejos. Vamos a finalizar esta serie de entradas no planeadas con un rápido repaso a nuestro código en C++/CLI compilado bajo Visual Studio 2008. En primer lugar, recordemos el código en cuestión: // TestCpp1.cpp : main project file. #include "stdafx.h" using namespace System; ref class Program { public : static void CallPrint( void ) { Console::WriteLine( "CallPrint" ); } static void DoWork( void ) { for ( int i=0;i<1000;i++) CallPrint(); } };...
Publicado por Rafael Ontivero | 5 comment(s)
Archivado en: ,,

C++/CLI y C#: Asombrosas diferencias en el optimizador de código (IV)

Por fin algo de coherencia en el tema. Vicente, en la segunda parte de esta serie, da en el clavo, pero el jitter sigue siendo bastante malo. ¿Por qué no hace el compilador de C# lo mismo que el de C++/CLI y deja más suelto el jitter . Sigo viéndolo un error bastante garrafal. Vamos a ello. Modifiquemos el programa y dejémoslo así: using System; using System.Collections.Generic; using System.Text; namespace TestCS1 { class Program { static void CallPrint() { //Console.WriteLine("CallPrint"...
Publicado por Rafael Ontivero | 3 comment(s)
Archivado en: ,,

C++/CLI y C#: Asombrosas diferencias en el optimizador de código (III)

Seguimos con el tema. En un comentario puesto en la segunda parte de esta entrega se comenta que conforme vaya el jitter dando vueltas sobre el mismo código, optimizará mejor el resultado. Es una de las cosas que también he leído por ahí, pero por desgracia no es cierto. Vamos a ello. Creemos una nueva solución con el nombre TestCS3 y piquemos el siguiente código: using System; using System.Collections.Generic; using System.Text; namespace TestCS1 { class Program { static void CallPrint() { //Console...
Publicado por Rafael Ontivero | con no comments
Archivado en: ,,
Más artículos Página siguiente >