Por llegar: video de novedades de RAD Studio 2010

agosto 5, 2009 en ¿Sabías que...?, ¿Sabías que...? [Delphi], Entrada Diario, Noticias, Noticias Delphi, Videos

Durante todos estos días parece que vamos a poder ver y conocer mas de cerca las ultimas novedades sobre RAD Studio 2010 y la muestra la tenemos en este video que publicó ayer Embarcadero y donde, David Intersimone y Nick Hodges , nos acompañan para conocer las novedades y nuevas caracteristicas del IDE.

Aunque el video está en inglés, os aconsejo que no os lo perdais porque hay cosas que no necesitan traducción y las vais a poder apreciar mejor que leyendo simplemente una nota técnica de caracteristicas.

La dirección original de la entrada de Embarcadero es:

http://www.embarcadero.com/rad-studio-2010/

Un comentario mas… por lo que allí se anuncia, el proximo 11 de agosto esta prevista la aparición de un segundo video sobre una de las muy esperadas novedades,  el comentado “Gesture manager“.

Sobre el contenido del video, se centra principalmente en las novedades a nivel de IDE, del propio entorno, y una de ellas, la mas llamativa es lo que han llamado “IDE Insight”, que viene a ser una ventana que nos facilitará una búsqueda rapida dentro del propio interfaz de trabajo. Si estamos editando en un formulario, IDE Insight nos facilitará la busqueda de las clases disponibles para introducir por ejemplo un componente en el mismo. Si estamos editando código, nos permitiría acceder a caracteristicas y opciones sin tener que acceder a los menús. Todo desde una única ventana de exploración. En el video se puede ver bastante bien todo esto.

Otra novedad que llama la atención y que a muchos sorprenderá, no se si positivamente o no porque parece ser que fue motivo de discrepancias durante la primera etapa de discusión, es la posibilidad de formatear el código de acuerdo a nuestras necesidades o manias :-)  por decirlo de alguna forma, con un simple [Ctrl + Alt + F]. Este formateo del codigo se va a realizar de acuerdo con las opciones fijadas en nuestro IDE.

Y respecto al depurador, parece que también se han incorporado algunas mejoras, a nivel de hilos de ejecución, permitiendo que se pueda depurar de forma aislada cada uno de ellos (existe una opción para congelar la depuración de cada hilo o thread).

Además de poder verlo en el propio video, también podeis leer la entrada del blog de Nick Hodges, donde nos lo comenta:

RAD Studio 2010 – IDE Features: IDE Insight


Otros blogs y entradas que se han hecho eco de esta noticia:

Background Compilation in Delphi 2010 and C++Builder 2010 de Andreano Lanusse

RAD Studio 2010 – IDE Insight Part 1 de Mack Duncan

Un poco de todo…

julio 16, 2009 en Delphi, Enlace interesante, Entrada Diario, Noticias, Noticias Delphi, Noticias Velneo, Velneo

Se nota que estamos en verano y no lo digo solo por la calor :-)  que ciertamente ya es sofocante buena parte de los días. Cuando llegan estas fechas suele bajar notablemente el numero de correos que se reciben en los foros, los blogs y páginas web casi lucen ese cartel de “a medio gas…” y los accesos en busca de información son mas esporádicos. Yo mismo, y hablo por mi, también tengo esa desgana que  hace que uno piense mas en salir a dar un paseo que no encerrarse en una habitación, caldeada por el sol del mediodía. Esta tarde no he salido a entrenar y me ha venido de perlas para escribir unas lineas en el blog, y compartir con vosotros unos cuantos pensamientos e ideas.

Estos días estaba dandole vueltas al tema de Velneo, pensando en la conveniencia de generar un nuevo blog para el contenido que pueda compartir de esta comunidad. Ahora que ya tenemos en la calle la v7 creo que es un buen momento para que se desliguen en mi blog  los dos mundos, y que cada uno siga su camino. Dejando así que lo que pueda escribir a partir de ahora sobre la v7, sea mucho o poco, adquiera su propia entidad. Delphi básico seguirá conteniendo todas las entradas que tiene hasta la fecha de hoy y lo que siga escribiendo de este entorno, y si finalmente no cambio de idea, abriré un nuevo blog que seguirá la misma filosofía que movió a Delphi, “Velneo desde cero”. El primer título que tuvo el blog de Delphi fue: “Lo más básico de Delphi”, quedando con el paso de unos años reducido a “Delphi básico”.

Velneo tiene otra dinámica de trabajo a la hora de generar contenido para el blog, principalmente por la forma en la que está construido el editor de procesos, tanto de la v6 como de la v7, que se aleja del concepto tradicional del fichero de texto plano, con formato o sin el. El blog y los post se enriquecen con las capturas de la instantaneas, que permiten visualizar las asignaciones de codigo hecha en cada linea que forma parte del bloque que se enmarca en la imagen. Tambien se presta a trabajar mas el uso de video “ayuda”, al estilo de Camtasia, donde se le puede mostrar al usuario los distintos pasos y razonamientos, (acompañados o no de audio). Y el texto adicional y propio del contenido que afecta a la entrada.

Todo esto no es malo pero es cierto que condiciona un poco (bajo mi punto de vista) sobre como se va añadiendo contenido al blog. En ese sentido, el hecho de que los editores de texto en Delphi sea mero texto, ayuda a compartir y difundir mas rapidamente el código que se comparte de programador a programador con un simple “copy&paste”. Aunque solo sea porque te permite copiar y pegar y en el caso de Velneo obliga a publicar las “fuentes” de las que se tiene que compartir el código. Así que no sería mala idea que Velneo agudizara la imaginación para que pudieramos compartir codigo desde un simple fichero de texto plano, cargando el contenido del proceso con un simple LoadFichero(‘Nombre de fichero’).

Pero ni una cosa ni otra, son impedimento para la persona que desea compartir sus puntos de vista, su experiencia y su deseo de aprender con una o otra comunidad.

Quizas por que creo que la dinamica de trabajo es distinta, es por lo que finalmente pensé que podría ser conveniente empezar a generar el nuevo contenido de Velneo en otro blog.

Twitter y el microbloggin nos ha traido noticias desde muchos espacios distintos y está ayudando a que se compartan las novedades y el contenido de los distintos blogs y webs, de una forma inmediata y efectiva.

Vamos a volver nuestra vista unos dias atrás, a ver que recuperamos del baul de cosas y asuntos a recordar…

Desde la comunidad oficial de Velneo algunos anuncios:

Blog de Velneo V7: Nueva revisión 7.1.1: Después de 35 días de la salida de la versión 7.1, ha.. http://tinyurl.com/lc4vmf

Blog de Velneo V7: ¿Qué es la abstracción?: En esta comunidad y en torno al producto Velneo se.. http://tinyurl.com/lowyed (http://velneo.es/73193/¿que-es-la-abstraccion/)

Velneo: SI alguien tiene cualquier duda sobre la nueva Velneo V7 7.1.1 tiene muchas vías para hacerla llegar… por aquí, en el blog, email…

velneoBlog de Velneo V7: ¿Cuándo tendremos soporte privado?: Atendiendo a las peticiones de muchos d.. http://velneo.es/73028/¿cuando-tendremos-soporte-privado/

No será el primero ni el ultimo anuncio de nuevas revisiones. Y no lo digo en tono de disculpa, pues existe una verdadera preocupación y mimo sobre el lanzamiento de la v7, quizás debido a que era algo muy esperado por la comunidad. Y la compañía ha puesto todo su esfuerzo en que aquella parte de su comunidad de programadores que deseen volcarse sobre la v7 y migrar sus aplicaciones, puedan hacerlo con todas las garantías y sin miedo. Así que esta revisión y las próximas que puedan venir van a ser fruto de del deseo de que esa imaginaria balanza que sopesa los pros y los contras de mantenerse en la v6 se incline hacia el lado de la v7.

No perderos, aunque solo sea por conocer a Juan Muñoz-Coboz (Arquitecto de la v7), por lo que os aconsejo visionar el video en el que habla sobre el concepto de abstracción.

Hablemos ahora de Delphi de mis amores y desamores… (Ainsssss…. la cantidad de horas de sueño que ya me ha robado :-)

andreanolanusse Delphi Conference Costa Rica, mas información http://tinyurl.com/lrlapy http://blogs.embarcadero.com/andreanolanusse/2009/07/14/delphi-conference-costa-rica/ El dia 21 de Julio los programadores de Delphi en Costa Rica tienen una cita obligada.

ZarkoGajic Generic Solution to Freeing Objects in Delphi’s TStrings: http://delphi.about.com/b/2009/07/13/generic-solution-free-object-delphi-tstrings.htm Se entiende ¿no? Liberar la memoria de objetos que se asignan a los punteros de las listas de cadena.

EmbarcaderoTech ActiveDelphi lança todas as edições em formato eletrônica: Para aqueles que estão buscando aprimorar seus conhec.. http://blogs.embarcadero.com/andreanolanusse/2009/07/10/activedelphi-lanca-todas-as-edicoes-em-formato-eletronica/ Andreano Lanusse comparte con la comunidad brasileña la edicion en formato electronico de todas las ediciones de esta revista.

JimMcKeethRT @AdobeApps: Why I Use Delphi http://nick.typepad.com/blog/2009/07/why-i-use-delphi.html Este enlace os puede servir para escuchar algunas razones a favor y en contra de usar Delphi. No quedaros solo en el post sino también con los comentarios.

marcocantu Activating Embarcadero “Buy One Get One Free” offer on our online shop, at http://shop.wintech-italia.com/offerta/bogo.html Esta oferta y similares, con distintas combinaciones de productos, ha sido anunciada recientemente por embarcadero, buscando formas de activar el mercado y la venta de su producto. Interesante si acompañara la situación financiera de las empresas a nivel mundial… Desgraciadamente, las empresas no se diferencian demasiado de cualquier economía familiar que busca amparo en el ahorro y no precisamente en el consumo.

malcolmgroves Completely brilliant, fan-sourced video for Japanese band Sour. Amazingly well coordinated via @MusicRadar http://www.youtube.com/watch?v=WfBlUQguvyw Y este se coló entre las entradas de Malcolm Groves que apuntaba a un video musical de youtube. Accedí por casualidad y me sorprendió. :-) Si. Es brillante y gracioso.

JimMcKeeth There are 1552 pages in O’Reilly’s Programming Python 3rd Ed. book. I think it covers everything but learning core python. Impressive. Una recomendacion que nos deja Jim McKeeth sobre el libro de O’Reilly que aborda la programación con Python.

andreanolanusse Artigo sobre como utilizar o banco de dados Cache com Delphi http://edn.embarcadero.com/br/article/36745 Y por ultimo este artículo que comenta en Twitter, Andreano Lanusse, escrito por Ricardo Barbieri para la comunidad brasileña. El centro de atención: las bases de datos orientadas a objetos y Delphi. No cuesta demasiado seguir y entender el contenido del mismo por lo que yo también os recomiendo que le deis un vistazo.

También se han comentado desde varios frentes y blogs, los programas betatester que estos días está poniendo en marcha Embarcadero para los productos de bases de datos. Como ER/Studio 8.5 , DB Artisan o Rapid SQL Dev 2.1 Beta Program. Quien pueda estar interesado existe un enlace en las paginas de Embarcadero para solicitar la participación. http://www.embarcadero.com/products/beta_programs.php

Y poco mas por hoy…. Ya casi es fin de semana. Mañana me toca salir un rato a entrenar (al menos una hora en las pistas de atletismo -si se pueden llamar así- :-)

Se huele el viernes… :-)

Ahhhh… Venga… animaros y votad en la encuesta sobre vuestra valoración de Quality Central  http://sjover.com/delphi/?p=497

Algunas ventajas… (¡si eres capaz de recordarlas!) – Parte III

junio 22, 2008 en Artículos, Código, Delphi, Entrada Diario, Sintaxis

Recordando la entrada anterior, en la que me cuestionaba la oportunidad de haber dotado una estructura clásica de nuestra programación, como puede ser la del registro (Record), de aspectos que podían acercarla notablemente a las clases, me llevó a profundizar un tanto sobre los motivos y ciertamente, tras la lectura de uno de los capítulos del libro “Delphi 2007 Handbook” de Marco Cantú, encontré que se aludían básicamente motivos de rapidez en la ejecución del código, por la forma en que se gestiona el acceso y la carga de la memoria en ambas estructuras. Los registros tienen menor coste en su gestión. Una variable local de registro, por poner un ejemplo, se gestiona en memoria desde la pila, motivo suficiente para que su coste sea menor que el soportado por una instancia de una clase que se ubica en una dirección de memoria y se gestiona desde el sistema de memoria (Memory Manager).

El ejemplo que pone M. Cantú para comentar como se sobrescriben los operadores creo que es claro y sencillo. Creo incluso que es el utilizado por todos los escritores conocidos para comentar estos aspectos. ya que la clase TPunto se presta como anillo al dedo para operaciones como cálculos de distancia asimilados en operadores básicos, como la suma (+), por poner el mas generalizado.

Ya sabéis que yo siempre me complico la existencia y cuando vi que ya me habían cogido el ejemplo del punto, ¡mierda! -exclame lamentándome- ¡ahora cual voy a coger yo…! Supuso que tuviera que activar las pocas neuronas libres y sanas que me quedan para inventarme algo que me sirviera para explicar cualquiera de los operadores redefinidos. Así que os pido perdón de forma anticipada si el ejemplo no es demasiado bueno ni claro. Se me ocurrió que una estructura de registro pudiera guardar tres precios distintos, que pudieran ser utilizados para calcular un total. Lo típico para no estrujarme demasiado la cabeza: Total es igual a cantidad por precio… jejeje :-)

Y en este caso, hoy llevaba en mente comentar uno de los menos conocidos, que era el operador Explicito, que nos permite convertir un registro a un tipo definido previamente, mediante una conversión explicita. En el caso del ejemplo de Marco Cantú, convertía un registro TRecordPoint, en su formato de texto, mediante la conversión string(C) siendo C la estructura de registro mencionada. El resultado de la conversión era un mensaje en el que se escribían las coordenadas del punto.

En nuestro caso, la conversión nos permitirá acceder a los métodos de una clase… de forma que solo sea creada una instancia de la misma, inspirandome en el patrón singleton, salvando las diferencias de que esto es un ejemplo patatero y para ir por casa.

Veamos…

Podemos empezar definiendo los tres tipos de tarifa.

Tarifa = (fbasica, fDoble, fTriple);

y la estructura que va a utilizarla y que nos devolverá la instancia de la clase creada. Este array nos permitirá acceder a los objetos cuando deseemos liberar la memoria que han reservado.

 TArrayTarifa = Array[Tarifa] of TTarifa;

Ahora la estructura del registro…

  TTarifaRecord = record
  private
    ListaTarifas: TArrayTarifa;
  public
   class operator Explicit(var ATarifa: TTarifaRecord): TTarifaSimple;
   class operator Explicit(var ATarifa: TTarifaRecord): TTarifaDoble;
    class operator Explicit(var ATarifa: TTarifaRecord): TTarifaTriple;
    procedure Inicializar;
    procedure Eliminar;
  end;

A ver que se nos ocurre para el primer operador Explicit

class operator TTarifaRecord.Explicit(var ATarifa: TTarifaRecord): TTarifaSimple;
begin
    if ATarifa.ListaTarifas[fBasica] = Nil then begin
      Result:= TTarifaSimple.Create;
      Result.Precio:= PrecioBasico;
      Result.NombreTarifa:= 'Tarifa básica';
      ATarifa.ListaTarifas[fBasica]:= Result;
    end
    else
      Result:= TTarifaSimple(ATarifa.ListaTarifas[fBasica]);
end;

Fijaros que para que el código funcione correctamente, previamente debemos invocar el método inicializar que nos permite asignar a Nil la estructura interna del array, que debe albergar una referencia a la instancia creada. En este caso concreto y para que se vea que puede ser hecho de varias formas, he asignado manualmente cada uno de los elementos del array pero lo propio podría haber sido el uso de [for] para recorrer el array, mediante una variable local de tipo Tarifa que es una enumeración y por lo tanto puede ser definidos los valores minimo y máximo mediante funciones como High o Low. En el método Eliminar, por el contrario, utilizaremos una nueva funcionalidad propia de esta versión de Delphi, que es otra de las novedades, y que reside en el uso de [for __ in _____ do] para recorrer el array.

Veamos que hace Inicializar.

procedure TTarifaRecord.Inicializar;
begin
  ListaTarifas[fBasica]:= Nil;
  ListaTarifas[fDoble]:= Nil;
  ListaTarifas[fTriple]:= Nil;
end;

Y finalmente, podemos ver la novedad de su uso, en el método Eliminar.

procedure TTarifaRecord.Eliminar;
var
  Item: TTarifa;
begin
  for Item in ListaTarifas do begin
     if Assigned(Item) then begin
       Item.Free;
     end;
  end;
  Inicializar;
end;

Y ahora ya, solo nos queda inventarnos un ejemplo donde podamos combinar su uso y probar que funciona correctamente.

procedure TForm1.Button1Click(Sender: TObject);
var
  c: Integer;   //cantidad
  t1, t2, t3: Double;    //total
begin
  //inicializamos a nil el array
  tf.Inicializar;

   c:= 5;

   t1:= c * TTarifaSimple(tf).Precio;
   t2:= c * TTarifaDoble(tf).Precio;
   t3:= c * TTarifaTriple(tf).Precio;

   //visualizamos el primer momento
   Edit11.Text:= FormatFloat('0.00', t1);
   Edit21.Text:= FormatFloat('0.00', t2);
   Edit31.Text:= FormatFloat('0.00', t3);

   //vamos a por el segundo momento
   //asignamos los precios a cero en las tres tarifas
   TTarifaSimple(tf).Precio:= 0;
   TTarifaDoble(tf).Precio:= 0;
   TTarifaTriple(tf).Precio:= 0;

   t1:= c * TTarifaTriple(tf).Precio;
   t2:= c * TTarifaDoble(tf).Precio;
   t3:= c * TTarifaSimple(tf).Precio;

   //segundo momento deberia tomar valores 0 en las tres
   //dada la asignacion anterior
   Edit12.Text:= FormatFloat('0.00', t1);
   Edit22.Text:= FormatFloat('0.00', t2);
   Edit32.Text:= FormatFloat('0.00', t3);

   //y para finalizar comprobaremos el nombre de la tarifa...
   EditNombreTarifa1.Text:=  TTarifaSimple(tf).NombreTarifa;
   EditNombreTarifa2.Text:=  TTarifaDoble(tf).NombreTarifa;
   EditNombreTarifa3.Text:=  TTarifaTriple(tf).NombreTarifa;

   //aqui deberia eliminar los objetos creados
   tf.Eliminar;
end;

Respecto al uso de la construcción [for... in] podemos decir que se asimila al concepto de iterador que ya hemos usado anteriormente desde el código que hemos compartido (¿recordais el ejemplo del buscador de ficheros? Alli por ejemplo comentábamos su uso, que nos acercaba a uno de los patrones básicos de programación) . En este caso, C# introdujo la idea de esta construcción y Net Framework la ha promovido con la interfaz IEnumerator. Pero en nuestro caso, con Delphi 2007, la construcción se encuentra ya implementada en las estructuras básicas y puede ser usada en los caracteres de un string, en conjuntos, matrices y objetos que soporten GetEnumerator, que nos dara paso a que pueda ser usado en nuestra propias clases creadas.

En una próxima entrada hablaremos del operador Implicito y de algunos de los clásicos, esperando que no se me ocurra otra extravagancia como la aportada como ejemplo ;-) Lo importante al fin y al cabo es divertirse… :-)

Descargar el ejemplo: Aquí

OF TOPICCCCC :-)

¡Felicidades a la Selección Española de Futbol, la selección de mi país por el paso a las semifinales de la Eurocopa… ! ¡Increible! ¡Qué partidazo frente a Italia!

Plas!!! Plas!!! Plas!!!

Nos hemos quitado una espina que teníamos clavada desde hace un montonazo de años
Creo sinceramente que ha ganado el mejor.

Ya era hora que también nos sonriera la suerte!!!!!!!!!!!!!!
:-)