Ver por etiquetas

Ocultación de datos y paso de variables
Published 24/4/2012 11:45 | Rafael Ontivero
Leo en Twitter un par de preguntas más que curiosas sobre dos cosas que se dan por supuestas en el desarrollo orientado a objetos. Aunque una de ellas está formulada al revés, yo aquí le voy a dar el sentido correcto, e intentaré responder, en la medida de mis conocimientos, a ambas. *** La primera de ellas es “¿por qué las variables de una clase no deben ser públicas?” Es una de las primeras cosas que nos enseñan en la POO...
WinTablet.info: Windows 8 y los Tablet
Published 25/9/2011 11:43 | Rafael Ontivero
Ya sabéis que me gusta meter baza en los nuevos productos de Microsoft más que a un pollo la mierda. No creo que os pille de sorpresa, pero en este caso estamos hablando de caviar Beluga ya que encima tenemos dominio y web propia. Sí, lo que leéis, el RFOG ha sido invitado a participar en un blog de temática exclusiva sobre Windows 8 y su orientación hacia los Tablet. Sin restricción de temática, sin censura y con libertad total de publicar lo que quiera (no, que no se os abran los ojos como platos...
Sobre delegados, closures, punteros y la falacia del puntero loco
Published 30/7/2010 12:45 | Rafael Ontivero
Leía esta mañana –mientras se carga una serie de gráficos en mi actual proyecto- el blog de Marino Posadas que, aunque publica poco, publica bien, y me he quedado más que estupefacto con lo que nos ha contado. He de matizar que en ningún momento dudo de la palabra de Marino, y es por eso por lo que me ha llamado tanto la atención de lo que nos ha contado. Antes de seguir aquí lo mejor es que leáis su entrada , y volváis a esta. *** El primer malentendido sobre el texto nos lo ha solucionado el propio...
Concurrencia y más concurrencia
Published 13/10/2009 16:33 | Rafael Ontivero
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...
Interop en C# y C++/CLI. Dos puntos de vista de un mismo concepto.
Published 1/3/2009 21:51 | Rafael Ontivero
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...
La estructura intraducible, I (de Interop y otras yerbas)
Published 19/12/2008 20:23 | Rafael Ontivero
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...
El RFOG ya no es lo que era...
Published 22/9/2008 21:13 | Rafael Ontivero
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...
Primer asalto: VB.NET contra C#
Published 5/5/2008 12:05 | Rafael Ontivero
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
Published 3/3/2008 19:20 | Rafael Ontivero
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...
Archivado en: ,,,
C++/CLI y C# VII: GetLastError en escenarios de interop
Published 25/11/2007 20:59 | Rafael Ontivero
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...
Archivado en: ,,
Eventos "a la" .NET
Published 31/10/2007 17:31 | Rafael Ontivero
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í .
Archivado en: ,
C++/CLI V: Propiedades
Published 24/9/2007 12:46 | Rafael Ontivero
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...
Archivado en: ,,
C++ y C#: Enumeraciones compartidas
Published 27/8/2007 12:51 | Rafael Ontivero
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...
Archivado en: ,,
C++/CLI y C#: Asombrosas diferencias en el optimizador de código (y V)
Published 17/8/2007 20:01 | Rafael Ontivero
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(); } };...
Archivado en: ,,
C++/CLI y C#: Asombrosas diferencias en el optimizador de código (IV)
Published 7/8/2007 18:15 | Rafael Ontivero
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"...
Archivado en: ,,
C++/CLI y C#: Asombrosas diferencias en el optimizador de código (III)
Published 7/8/2007 16:33 | Rafael Ontivero
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...
Archivado en: ,,
C++/CLI y C#: Asombrosas diferencias en el optimizador de Código (II)
Published 7/8/2007 11:49 | Rafael Ontivero
En mi anterior entrada demostraba la poca calidad del optimizador de C# frente a la del de C++/CLI. Comentarios vertidos en dicha entrada me han puesto en duda sobre si el jitter era capaz de realizar las optimizaciones oportunas o no sobre el código anteriormente citado. Lo cierto es que por mi experiencia práctica, la respuesta es que no, que por muy moderno, listo y guapo que fuera, como mucho cambiaría el orden de las instrucciones para mejorar los pipelines y el predictor de salto del procesador...
Archivado en: ,,
C++/CLI y C#: Asombrosas diferencias en el optimizador de código
Published 5/8/2007 12:08 | Rafael Ontivero
Lo que son las cosas. Esta pretendía ser una larga, sesuda y razonada entrada sobre las diferencias entre el optimizador de código del C# y el de C++/CLI, pero se ha quedado en apenas una nonada, ya que con el primer ejemplo tumbo de raíz el tema. Es decir, la cosa queda demostrada y bien demostrada. Todo el asunto viene por una entrada en el grupo de C# en la que se me discutía que el lenguaje de C# puede equipararse a C++/CLI e incluso a C++. Comparados con éstos dos últimos, el C# no es más que...
Archivado en: ,,
BUG: Tumbar el diseñador visual (I)
Published 9/7/2007 13:05 | Rafael Ontivero
Vamos a tumbar el diseñador visual. Es muy sencillo. Creemos un proyecto Windows Forms en C++/CLI y pongamos en la ficha principal dos o tres componentes. Cambiemos entre vista de ficha y vista de código. Hasta ahora todo bien. Ahora creemos un método como el ejemplo: void Hola( void ) { } Volvamos a cambiar de vista de código a vista de ficha. Todo sigue bien. Añadamos un nuevo método (sin borrar el anterior): int Hola( void ) { return 3; } Ahora cambiemos de nuevo a vista de ficha. ¡Tachán! Los...
Archivado en: ,,
Propiedades automáticas en C# 3.0: Reinventando la rueda… poligonal
Published 24/3/2007 13:36 | Rafael Ontivero
La nueva versión de C# trae una característica que se conoce como propiedades automáticas, que no es otra cosa que el hecho de poder definir propiedades elementales (es decir, aquellas propiedades sin efectos laterales que solamente son una representación de una variable miembro interna) de forma mucho más sencilla y teniendo que teclear menos código. La característica la he visto en el blog de Wriju, en concreto esta entrada recientemente colocada. También creo que esto haya sido comentado por aquí...
Archivado en: ,,