Expresiones regulares: Novedad en XE (Parte I)

abril 3, 2011 en Artículos, ¿Sabías que...?, Delphi, Entrada Diario, XE

Una de las novedades que ha introducido XE, es la integración dentro de la llamada RTL (Run Time Library) de Delphi, de las Expresiones regulares, aspecto que ya estaba integrado en nuestro IDE, a través de una de las opciones de búsqueda pero que no se había hecho disponible hasta hoy de forma oficial dentro del entorno para nuestro uso en los proyectos.

En la ayuda de Delphi podeis acceder con este link, [ms-help://embarcadero.rs_xe/rad/VCL_and_RTL_Changes_for_XE.html], en donde se recogen los cambios de versión o novedades dentro de la VCL y RTL citados en el parrafo anterior.

Para empezar a trabajar con las Expresiones Regulares basicamente, tendremos que añadir a la clausula uses del módulo del proyecto que va a utilizarlas, la unidad RegularExpressions, que es la unidad que declara e implementa las clases que vamos a necesitar. Si accedeis a la información de la ayuda en linea, vereis que aparecen un conjunto de clases (7):

TGroup Un registro que contiene el resultado de una coincidencia con una porción de una expresion regular.
TGroupCollection Colección de instancias de TGroup.
TGroupCollectionEnumerator Contiene funciones y propiedades para recorrer los resultados de la colección de grupos.
TMatch Un registro conteniendo los resultados de una coincidencia con la expresión regular.
TMatchCollection Colección de instancias de TMatch.
TMatchCollectionEnumerator Contiene funciones y propiedades para recorrer los resultados de la colección de coincidencias.
TRegEx Un registro para manejar las expresiones regulares,

Lo cual, en principio no resulta demasiado claro, al menos si no se puede ver en un ejemplo o se ha trabajado anteriormente con Expresiones Regulares. Afortunadamente existen algunos ejemplos dentro de la ayuda bastante útiles por lo que considero que podemos remitirnos a ellos como guía.

Dentro de la dockwiki de embarcadero podéis acceder al link que contiene ejemplos nuevos propios de Xe http://docwiki.embarcadero.com/CodeExamples/en/Category:XE y ya dentro de esta página, yo eligiría para empezar a entender como se relacionan las distintas clases el vínculo: http://docwiki.embarcadero.com/CodeExamples/en/TMatchCollectionCount_(Delphi)

Pero antes de ver cualquier ejemplo, parece que lo mas apropiado es hacer una pequeña reseña al concepto de Expresiones Regulares, de forma que quien se ha podido acercar por primera vez al tema sepa de que hablamos. Así que, podemos dividir este artículo en dos entradas: ésta para intentar comprender las expresiones regulares y una segunda parte abordando el conjunto de clases de la unidad Regular Expressions.

Para empezar, decir simplemente que las expresiones regulares se remontan a la decada de 1950, en la que Kleene, lógico y matemático estadounidense, daba los primeros pasos al relacionar expresiones regulares y autómatas finitos.

Una expresión regular representa un patrón de cadenas de caracteres y se define por el total del conjunto de cadenas con las que concuerda o coincide. Es decir, a partir de un patrón fijado por nosotros encontramos un numero indeterminado de cadenas que podrían coincidir con el y que confortan lo que podríamos considerar el dominio de aplicación de dicho patrón o lenguaje de la expresión.

Un ejemplo: la expresión regular ‘abc|d’ admitiría las cadenas ‘abc’ ó ‘d’  pero no otras, dentro de ese lenguaje.

En la práctica, si consideraramos dentro de nuestro patrón los caracteres ASCI o cualquier subconjunto del mismo, podríamos denominar a dicho conjunto como su alfabeto. Imaginad uno cualquiera de esos alfabetos (|a|, |b|.. |z|),  veremos que existen 3 operaciones básicas que podríamos considerar respecto a la forma en que se interrelacionan: la primera podría ser la la selección de alternativas, ya vista en el ejemplo anterior. El caracter ‘|’ nos ha permitido discriminar dos opciones. Este tipo de caracteres que tienen un significado especial reciben el nombre de Metacaracteres o metasímbolos y no serían legales en el alfabeto, a no ser que exista otro metacaracter que desactive su valor especial. La segunda operación básica sería la Concatenación, que se formaría  por yuxtaposición (sin metacaracter). Esta operación nos permitiria enlazar o unir caracteres para formar una expresión. En el ejemplo anterior, ha permitido considerar ‘abc’ como agrupación de varios caracteres del alfabeto. Finalmente, existe la repetición o cerradura, la cual habitualmente se indica con el metacaracter ‘*’ y que asociado a una expresión regular, permite que esta se repita cero o mas veces.

Por ejemplo la expresión ‘a*’ que es la que habitualmente se pone como ejemplo, daría como resultado un lenguaje formado por las cadenas de cero o mas caracteres ’a': {ε, ‘a’, ‘aa’, ‘aaa’, …}. Formalmente podrían existir y serían distintos la representación  del conjunto vacío, de la representación (ε) representada anteriormente.

Y ya para finalizar estas ideas básicas, que nos pueden ayudar a entender las expresiones regulares, el hecho de que se pudieran necesitar expresiones mas complejas, hizo necesario que se consideraran algunas operaciones más, o bien restringir las existentes, a partir de esas básicas. Si el metacaracter del (*) permitía que se pudieran definir cero o más repeticiones, se restringía a que existieran una o mas repetición, mediante otro metacaracter como el simbolo de la suma (+). El punto (.) ampliaba el conjunto de operaciones como comodín, concordando con cualquier caracter del alfabeto. Otra operación posible era considerar un intervalo de caracteres, de forma que no fuera necesario enumerarlos todos en una expresión usando el metacaracter de alternancia (|). Se propone habitalmente el guión (-) para ello. Como ejemplo, podeis imaginar la expresión  A-Z equivalente a A|B|…|Z. Y nos queda, la operación de negación (no logico), que también habitualmente se representa mediante el metacaracter del circunflejo (^), aunque en otros caso podemos encontrar también la tilde (~) como equivalente.

Las expresiones regulares pueden ser agrupadas bajo identificadores que usados de forma recursiva permiten describir los lenguajes, formado parte íntima del proceso de analisis léxico de los compiladores, en el reconociento de tokens. Pero ese es un tema demasiado extenso y complejo para abordarlo desde la óptica de estas entradas, siendo mas propio de publicaciones técnicas entre las que personalmente os recomendaría el clásico ”Compiladores, principios, técnicas y herramientas - Isbn 978-970-26-1133-2″  o bien “Construccion de Compiladores de Kenneth C.Louden – Isbn 970-686-299-4″ que han sido y son pasto de mi lectura y mi infinita curiosidad, en los ratos perdidos.

En wikipedia podeis encontrar una referencia al tema http://es.wikipedia.org/wiki/Expresi%C3%B3n_regular.

Necesariamente, al hilo de estos comentarios, al referirnos a las Expresiones Regulares en la entrada, solo las tendríamos en consideración en el contexto de las búsquedas, para localizar o reemplazar términos coincidentes con las expresiones, o bien como elemento que permite validar un texto respecto a una expresión, algo también muy habitual en nuestros programas.

Uso de expresiones regulares en el IDE: optimizar búsquedas en nuestro código.

Deciamos al principio de la entrada, que las expresiones regulares ya existían en el entorno de desarrollo. La búsqueda de términos en nuestro código va a ser algo importante y habitual de nuestro trabajo diario. Son muchas las ocasiones en las que abrimos la ventana de diálogo bien a través del menú de Delphi (Search -> Find / Search -> Find in Files), bien a través de las teclas de atajo rápido (Ctrl + F / Shift + Ctrl + F).

Respecto a versiones anteriores, no han existido cambios salvo los meramente cosmeticos. En Delphi 2007 y versiones anteriores, tanto la búsqueda sencilla como multiple tenían una ventana de diálogo común y mediante un selector, el usuario seleccionaba si quería buscar en la unidad actual o bien en las unidades del proyecto (o cualquiera de las alternativas). Las versiones siguientes, hicieron desaparecer dicha ventana de dialogo para la búsqueda sencilla, quedando embebida en el editor de código a modo de panel, con las distintas opciones que existían.

Y la ventana finalmente, quedaría reservada para la búsqueda en multiples ficheros.

Ahora podemos relacionar las operaciones que hemos visto anteriormente respecto a las expresiones, con la implementación concreta que hace el IDE. Como resultado, la ayuda en linea nos dice que existen disponibles para nosotros los siguientes metacaracteres:

Descripcion
^ Un circunflejo al principio de la expresión encuentra su coincidencia en el principio de linea.
$ El signo del dolar finalizando la expresión hace coincidir con el final de linea. Para entender su uso podeis abrir un nuevo proyecto y escribir como término de busqueda la expresión ”Form.$”. 


En la imagen de ejemplo, veis que tan solo localizó una coincidencia, ya que le pedimos estrictamente que evalue coincidencias que se correspondan con el final de linea, precedidos de los caracteres “form” y un caracter cualquiera. Dicha condición solo la cumple el término resaltado. En la imagen os he marcado con una linea roja varios candidatos (3) de los cuales dos han sido excluidos.

. Un punto representa a cualquier caracter.
* Un asterisco tras un caracter o metacaracter en la expresión, permite encontar cualquier coincidencia en la que aparezca dicho caracter y cero o mas repeticiones del mismo. Una representación muy común para expresar cualquier caracter podría ser la combinación de los metacaracteres “.*”.
+ Un signo de suma resulta similar al visto en el asterisco, salvo que excluye de las coincidencas cualquier cadena con cero repeticiones, es decir, igual al patron de búsqueda.
[ ] El par de metacaracteres [] (corchetes) nos permitirán encontrar todas las coincidencias que combinen los caracteres incluidos en su interior.Creo que se verá mas claro con un ejemplo:

En nuestro ejemplo, la petición era la expresión [orau] y como resultado encontramos 49 coincidencias, que combinan los caracteres incluidos en el corchete.
[^] El metacaracter ^ tiene un significado especial al ser incluido en el interior de los corchetes, pasando a tomar el significado del no lógico, excluyendo de la coincidencia dichos caracteres. En el interior de una expresión puede ayudarnos a excluir resultados. La expresión “Form[^,]” en la imagen siguiente

hace que solo existan 3 coincidencias, de todas las posibles (os las he marcado con una linea de color rojo).
[-] El guión representa al rango de caracteres en el interior de un corchete.
{ } Las llaves permiten agrupar caracteres o expresiones, pudiendose anidar con un máximo de 10 grupos en una expresión sencilla.
\ Una barra invertida previa a cualquier metacaracter, permitiría desactivar el significado especial de éste, de forma que forme parte del alfabeto como cualquier otro caracter. Un ejemplo que me viene a la mente podría ser el uso de la barra invertida (\\) al considerar una ruta de fichero como parte de la expresión.

Aunque en la ayuda no aparece, también podemos usar el separador de alternativas “|” en nuestras busquedas. En la siguiente imagen se busca la expresion “Unit|Form” en la unidad del proyecto y son encontradas 7 coincidencias, entre las que aparecen tanto las coincidentes con Unit como con Form.

En el blog de Malcon Groves, podeis leer en inglés una introducción a este tema. Os aconsejo que le deis una lectura: Searching in Delphi Part 1 : Regular Expressions. La entrada se escribió en los primeros días del 2010, y formaba parte de un conjunto de reseñas de las novedades del IDE.

Yo también creo, como reflexiona Malcon en su entrada, que cobra vital importancia que nuestras búsquedas sean agiles y que encontremos facilmente en nuestro código los términos deseados y en eso, puede ser una herramienta de infinita utilidad saber usar las expresiones regulares. Quizás no tengamos costumbre de usarlas pero la lectura de esta entrada, intenta que reflexionemos sobre el beneficio que podemos encontrar en su uso cotidiano.

Hace unos días encontraba un pequeño problema durante la jornada laboral que dió origen a que me planteara escribir estas dos entradas, abordando las expresiones regulares. El proyecto era amplio, con una gran cantidad de unidades. Ademas existian varios proyectos vinculados a un grupo de proyecto. Y me planteaba la feliz idea de reemplazar un componente en todas las unidades que pudieran aparecer, con el objetivo final de sustituir su uso por otro componente similar ya existente en el proyecto, unificando así ambos en uno solo. Las busquedas en casos así son de vital importancia y hacerlas con agilidad, devolviendo resultados precisos permiten que realicemos la tarea de forma optima. El agrupamiento de resultados no ayudaba demasiado ya que no se ordena alfabeticamente sino que los resultados son agrupados en el mismo orden en el que aparecen las unidades en el proyecto. En mi opinión aquello era un gran error, ya que algunas de las decisiones respecto a los resultados se favorecen si se cuentan con distintos métodos de ordenación y resulta un caos tomarlas sin esa ordenación precisa. De ahí que me viese obligado a estudiar si las expresiones  podían ayudarme, cumpliendo ese comentario que tantas veces hemos compartido y que viene a decir que el blog se alimenta de las necesidades que hemos tenido en el desrrollo de nuestro trabajo. ;-)

En la siguiente parte, vamos a abordar la integración en la RTL de las Expresiones Regulares, que ha sido una de las novedades en XE (ahora ya estamos en condición de estudiarla). Así que os emplazo a que en un breve periodo de tiempo nos volvamos a encontrar en la segunda parte de esté artículo.

Espero que os haya sido de utilidad y os animo a que participeis de forma activa en la Comunidad.

Un abrazo a todos.

RAD Studio XE: Mejoras sobre la productividad.

agosto 14, 2010 en Delphi, Delphi Prism, Entrada Diario, Noticias, Noticias Delphi, Presentaciones, Promociones, Roadmap, Videos

Tenemos algunas novedades…

Embarcadero inicia la semana con la promoción pública de las nuevas características que van a incorporarse al próximo relaease de Rad Studio, a través de una campaña de videos y artículos en blogs de la comunidad. Los vídeos están siendo traducidos a varios idiomas por lo que, como viene siendo habitual, el español nos llega de la mano de Andreano Lanusse.

Durante varias semanas vamos a conocer estas novedades. Esta semana, se ha centrado principalmente en la integración del control de versiones, algo que en mi opinión era inexcusable que no existiera a la fecha actual. Me parece muy bueno que se haya hecho realidad.

Podéis ampliar la información consultando la siguiente entrada de embarcadero, en la que aparecen multiples enlaces a esta información publica que está siendo liberada:

http://www.embarcadero.com/rad-studio-xe-preview

Asimismo y en referencia al estado actual del mapa de ruta de Rad Studio existe el siguiente link

http://edn.embarcadero.com/article/39934

encontrado desde la lectura del blog de Michael Rozlog, en la que se comenta la actualización de este mapa de ruta

http://blogs.embarcadero.com/michaelrozlog/2010/08/12/37159/

Ahhh… olvidaba una cosa… quizás os esteis preguntando el por qué del nuevo nombre “XE”, “sufijo” o marca con el que están nombrando los últimos productos de Embarcadero. La respuesta, la deja David Intersimone en una de las entradas de su blog:  http://blogs.embarcadero.com/davidi/2010/08/11/40088/

En dicha entrada, David I expresa la idea que quiere resaltar Embarcadero aludiendo a lo heterogeneo, a una linea de productos y herramientas heterogeneas, de desarrollo de acceso a datos, con multiplicidad de tipos distintos de bases de datos y plataformas. Esa es la idea que subyace al nacimiento de este término, dentro de la estrategia de marketing que ha sido concebida por la empresa para diferenciar sus productos respecto al de sus competidores.

* Mas información:

Blogs de la comunidad hispana:

http://jachguate.wordpress.com/2010/08/13/nuevo-roadmap-para-rad-studio/#more-234

http://jachguate.wordpress.com/2010/08/10/rad-studio-xe/

Seguir la linea…

marzo 29, 2010 en ¿Sabías que...?, ¿Sabías que...? [Delphi], Delphi, Enlace interesante, Entrada Diario, Noticias, Noticias Delphi, Recordatorio

Espero que encontrarais interesante el artículo de Cary Jensen que compartimos en la entrada anterior y que resalté porque abordaba un tema que, aunque puede no ser crítico, no estaba de más conocerlo.

Shifting TFields in TDataSets Bound to TDBGrids…

Comentábamos que era uno de esos temas en los que se suele caer por accidente, y a veces ni siquiera se llega a ser consciente del problema, pues se tiene que dar la casualidad que al usuario le haya dado por alterar el orden de las columnas en un dbgrid y que justamente se haya escrito codigo que pueda acceder a través de un índice dentro del ClientDataset y que además no existan columnas persistentes… :-)  Quizás son demasiadas casualidades… pero seguro que si algún día se cruzan, será con fatalidad, en una de esas rejillas que tiene que salvar al mundo de una destrucción total:

-Atención sr. presidente… haga doble click en la rejilla para que los misiles destruyan el meteorito…
-Dios mio!!! Esto ha generado una excepción… Estamos todos perdidos…  Se ha bloqueado el sistema…
… (y se hizo el silencio en toda la Tierra… )  :-)

Fuera de lo meramente anecdótico, la idea es seguir trabajando en esa linea e ir seleccionando de cuando en cuando algunas entradas para destacarlas y compartirlas con la comunidad hispana de programadores. Y si es posible, incluso aportar la traducción como ya ha sucedido en dos ocasiones. Aunque eso, os confieso que no resulta tan sencillo, ni disponemos siempre de tiempo suficiente, teniendo en cuenta además, que intentamos hacer las cosas correctamente y solicitamos permiso -previamente- para poder llevar a cabo cualquiera de estas iniciativas. Creo que sería bueno que entre todos, poco a poco fueramos derribando los muros que van aislando a las distintas comunidades, de forma que existieran ventanas y espacios abiertos entre ellas, que las pudieran comunicar y hacer converger.

A veces me pregunto si vamos por buen camino… :-)  Solo hay que seguir las señales.

Hoy he seleccionado a través de la lectura del Twitter, y concretamente del perfil de Malcon Groves, una referencia a la entrada WeakRefence in Delphi – solving circular interface references escrita por Vincent Parrett.  Es una entrada muy interesante, donde se reflexiona acerca de las interfaces y el recuento de referencias, desde un punto de vista enfocado en varios frentes que se interrelacionan: la posibilidad de que nuestra aplicación no libere correctamente la memoria reservada, los posibles errores de acceso o violaciones, que emergerían al acceder desde nuestro código a referencias no validas, y la problemática real que plantea el hecho de tener que evitar las referencias circulares, puesto que éstas, se prohiben expresamente desde nuestro entorno. Vicent Parret utiliza para explicar esta problemática y proponer una posible solución, un ejemplo muy sencillo basado en la relación padre-hijo, aunque entiende que pueda ser resuelta de una forma mas formal desde el mismo compilador:

I still think this is something that could be solved in a better way by the delphi compiler/vcl guys n girls.

Esa posible solución se apoya en la posibilidad de crear una clase TWeakReferencedObject, que le permite evitar la referencia circular y establecer la relación entre las clases padre e hijo. Las últimas lineas de código de su entrada, donde comenta los metodos Get/Set que permiten acceder a la clase padre desde la clase hijo (TChild), lo harían de forma segura.

Ahora mismo no es posible descargar el código completo del ejemplo, puesto que existe un pequeño problema en el fichero zip. Pero en breve, nos ha comentado que lo va a reponer para que pueda ser descargado. Creo que sería interesante darle un vistazo a ese código.

Por cierto, el hecho de que el comentario partiera de Malcon Groves, no es casual ya que, anteriormente, podemos encontrar en su blog varias entradas abordando aspectos relacionados con las interfaces. Concretamente en Casting an Interface Reference to the Implementing Class in Delphi 2010 de fecha 16 deAgosto de 2009, hace una referencia a una de las novedades introducidas en Delphi 2010, relacionadas con las interfaces, que tiene que ver con el operador Is y la posibilidad de que ahora pueda ser utilizado para evaluar si un interface es implementado por una clase especifica:

In Delphi 2010, you can now use the is operator to test to see if an interface type is implemented by a specific class, and if so, cast it to that type and reference any non-interface methods, properties, etc.

Así que si tenéis unos minutos, creo que lo escrito por Malcon Groves puede ser un buen punto de parada para detenerse.

Más cosas en el tintero… (cambiamos de tercio):

Hace unos días hacíamos mención a Intraweb, a raíz del Seminario del día 26 de Febrero. Recordais que hablábamos sobre ello en la entrada Próxima cita el 26 de Febrero haciendo un breve repaso de las sesiones y lo que nos había parecido destacable. En lo que hace referencia a Intraweb, ya tenemos disponibles los ejemplos que se vieron en el seminario y que pueden ser descargados desde la url:

Descarga ejemplos del miniscurso Desmitificando el Intraweb

También es posible acceder al video del curso a través del enlace existente en Embarcadero: Desmitificando el Intraweb

De igual forma, Eliseo González, en uno de sus comentarios anteriores, compartía con nosotros la dirección de descarga de el total de vídeos que componían el seminario del día 26. Comento esto porque fácilmente puede pasar su comentario inadvertido dado que no queda a la vista. Esta es la dirección de Embarcadero en la que podemos encontrarlos:

Delphi Developer Day IV – Vídeos del Seminario

Mas cosas…

Comentaros también que ya está disponible el número 10 de la revista Blaise Magazine, número que requiere la suscripción puesto que ha finalizado el plazo de disponibilidad gratuita para usuarios que hubieran adquirido Delphi 2010 o Rad Studio 2010. Muchos vais a encontrar muy interesante su contenido y por eso lo remarco. Ahora mismo, es una de las pocas publicaciones activas centradas en el Mundo de Delphi y se encuentra traducida a varios idiomas, aunque de momento no a español.

Creo que nada mas por hoy.

Un saludo a todos.

Ultima oportunidad para actualizarse desde versiones anteriores…

octubre 10, 2009 en ¿Sabías que...?, ¿Sabías que...? [Delphi], Entrada Diario, Noticias, Noticias Delphi

Tim Delchiaro, anunciaba recientemente en la zona EDN (Embarcadero Developer Network) de Embardadero, las novedades en lo que se refiere a las condiciones para actualizarse a las versiones de Delphi, C++ Builder y Rad Studio 2010, desde versiones anteriores.

Este es el enlace donde se establece como fecha límite el 31 de Diciembre de 2009:

http://edn.embarcadero.com/article/40021

upgrade

El aspecto del cambio mas importante afecta a las versiones 2005 o anteriores ya que a partir de esa fecha, del 1 de Enero de 2010, ya no seria posible adquirir una licencia de actualización para acceder a las versiones 2010.

Si os parece podemos ver las preguntas mas interesantes que se pueden extraer del articulo y que el mismo Tim Delchiaro responde para despejar dudas:

What if I own version 2006, 2007 or 2009?
Registered users of versions 2006-2009 will still qualify for upgrade pricing to the 2010 products indefinitely. The upgrade expiration date only affects users of versions 2005 and earlier.

Si tenemos una versión 2006, 2007 o 2009 seguiremos beneficiandonos de los precios de las licencias de actualización. Tras expirar la fecha, los usuarios afectados de versiones anteriores ya no podrian beneficiarse de ello.

What if I own an older version (2005 or earlier) and still try to purchase an upgrade product after January 1st? Will it still just work?
No. You won’t be able to register the upgrade and the product will only function as a 30-day trial.

Si poseemos una versión anterior o igual a la del 2005, no se podrá registrar la licencia de actualizacion y funcionará únicamente como una trial de 30 días.

Do I need to have the older version installed on the same computer?
No. The checking for ownership is done based on your registration of the earlier 2006-2009 product. You must register the new version with the same Embarcadero account (formerly Borland Developer Network or CodeGear Developer Network) user name and password that you used to register your earlier qualifying product.

No es necesario tener instalado la version anterior en el equipo. Eso sí, eL registro de la nueva versión deberia hacerse con el usuario y contraseña registrado para el anterior producto.

What if I forgot my user name and password from the older registration or don’t remember which older versions I registered?
Just go to
https://members.embarcadero.com to have your password re-sent to you if you’ve forgotten it, and to look up your previously registered software if necessary.

La penúltima pregunta que he resaltado de entre las respondidas en la entrada de Embarcadero, hace relación a la posibilidad de que no recordemos el usuario o el password de registro que hicimos. En ese caso, deberíamos hacer uso de la página de registro, donde es posible reenviar a la dirección de correo los datos.  Eso ya lo sabeis ¿no?

As a user of an older version can I still upgrade to versions 2007 or 2009 after January 1st?
Yes. However, users generally want the latest version with the latest capabilities (like Windows 7, touch development, the C++ Class Explorer, and latest database drivers) rather than upgrading to an outdated earlier version.

Y la última pregunta en el aire tiene bastante miga y puede que muchos la pasen por alto. Se plantea a si mismo el caso de que un usuario, que tiene una versión 2005 o anterior, pueda actualizarse a las versiones 2007 o 2009 después del 1 de Enero del 2010, y explica en su respuesta que sí, sí seguiria siendo posible como actualización (pero solo para esas dos versiones). Hecho esto, se supone que el usuario ya estaría en condiciones de beneficiarse de la actualización a 2010. Al menos eso eslo que he creido entender de lo leído, que vendría a ser una penalización frente al coste de la actualización inmediata y en los terminos actuales a las versiones 2010 antes del 1 de Enero.

Las lecturas de este cambio en el sistema de adquisición de licencias de actualización pueden ser diversas, según la optica desde la que enfoquemos estos nuevos requisitos. Normalmente, desde nuestra posición, como desarrolladores, y también desde el sentido común, se podría interpretar como una medida de presión para que los usuarios actualicen el entorno, bien hacia las versiones 2010 (lo mas razonable), bien para una versión anterior, con derecho de actualización. Muchos dirían que es una forma de hacer caja.

Desde la empresa quizás la óptica es un tanto distinta: el deseo de pasar página, de conocer el numero real de usuarios que apuestan por sus productos, (en mi pueblo diríamos la “parroquia”, los parroquianos del producto  :-)    ). Un pequeño test para ver como respondemos los indecisos y saber hasta donde pueden llegar y arriesgar. Hasta cierto punto es razonable que Embarcadero desee tambien un compromiso por parte de sus usuarios, mas teniendo en cuenta que Microsoft sigue apretando el acelerador (y si no para muestra un boton, la reciente salida de la beta 2 de Visual Studio 2010 Team Foundation Server , disponible incluso para entornos productivos (aunque no recomendado) ) .

Diría una cosa pero me la callo por prudencia, porque si no me dicen que soy un pesado.  ;-) y que siempre me repito.

Yo sigo creyendo en mi herramienta . ¿se nota no…? 

;-)

 

 

Disponibles los videos del último seminario web hispano

septiembre 24, 2009 en Ado Express & DataSnap, Delphi, Entrada Diario, Noticias, Noticias Delphi, Seminario web, Videos

Parece que no nos equivocábamos. :-)

No han pasado ni seis días y ya tenemos disponibles los vídeos del último seminario. Ni falta hace decir que es así como se hace Comunidad. Comunidad con mayúsculas.

No tengo mucho mas que decir en ese sentido, ya que me parece importante la gestión eficaz del contenido. Y por eficaz se entiende, por supuesto, saber que el tiempo importa y que tiene que llegar en un “tiempo” razonable, valga la redundancia. Así que podéis imaginar que me alegra mucho ver que ya tenemos disponibles los vídeos. De hecho, mientras estoy escribiendo estas letras los estoy descargando, para verlos un poco más tarde con tranquilidad.

Este es el enlace a la web de Andreano Lanusse en Embarcadero, donde están disponibles para la descarga o para que puedan ser visionados desde la misma:

Seminario web 18/09 Delphi 2010

¡Comunidad!. ¡Comunidad!. ¡Comunidad!. Seguimos luchando para que sea una comunidad fuerte. Eso sí, cada uno en su papel y sabiendo qué puede y qué no puede aportar. Yo en ese sentido, lo tengo claro y no me avergüenza decir que nunca tendré la capacidad de esos gurús que ya existen y que todos conocemos. Tampoco es algo que me preocupe o me quite el sueño. :-) Mi granito de arena esta en este lado de la barrera, en la comunicación, que también es otra forma de ayudar.

Yo, como muchos programadores, somos profundamente egoístas al querer una comunidad fuerte, porque sabemos que, si nuestra herramienta está ahí, en la punta del huracán, tirando del carro tecnológico, nuestro futuro se vuelve más esperanzador.

Es puro y sano egoísmo. ¿No os parece?  ;-)

Seminario Web de 18 de Septiembre

septiembre 19, 2009 en Delphi, Entrada Diario, Noticias, Noticias Delphi, Seminario web, Videos

No se si llegaste a asistir o no. Si no es así, tan poco te preocupes ya que imagino que en próximos días lo podremos tener disponible desde las paginas de Embarcadero, para poder repasarlo con mas detenimiento, pues siempre quedan algunos detalles que se te escapan durante la celebración del evento.

No obstante, creo que la impresión general que se recibió fue muy positiva. El seminario duró tres horas y fue mantenido por Andreano Lanusse, de sobra conocido para todos los que formamos parte de esta comunidad de programadores, como máximo representante de Embarcadero para América latina o dicho de otro modo, para la comunidad de programadores hispanos de Delphi.

Fue un detalle que a nadie escapó, durante el inicio del acto, escuchar a David Intersimone, tras una breve introducción en ingles, intentar comunicarse con los oyentes con algunas frases en español, lo cual creo que se recibió como una muestra de respeto hacia nuestra comunidad. Una muestra simpática y bonita que seguro es agradecida.

Luego, ya respecto al contenido se dividió en dos partes claramente separadas, por un respiro de varios minutos en los que se aprovechó para responder algunas preguntas. La primera parte para comentar las novedades del IDE. Y ya la segunda, mas concreta, para ver las novedades de datasnap.

Yo creo que ha estado bien el seminario. Fue positivo. Quizás lo único que pudo deslucirlo un poco fue la mala recepción del sonido de las dos sesiones grabadas que fueron emitidas. Es decir, que había una diferencia grande entre la calidad del sonido en directo, oyendo a Andreano Lanusse y la del video, que hacia que en muchos momentos concreto no pudieras seguir las explicaciones y perdieras el hilo. Por lo demás, fue un buen seminario, muy positivo, donde se pudieron ver algunos detalles muy interesantes. A mi particularmente, lo que mas me gustó fue todo los relacionado con el soporte para dispositivos táctiles, que abre un abanico de posibilidades y alternativas a nuestros interfaces con un minimo coste de desarrollo.

Os animo, si no habéis podido asistir, a que  en próximos días no os lo perdáis ya que casi con seguridad va a estar disponible.

Así que no me queda mas que felicitar a Embarcadero, a Andreano Lanusse y a David Intersimone. ¡Enhorabuena por el seminario!. ¡Enhorabuena!

:-)