Mostrando entradas con la etiqueta desarrollo de software. Mostrar todas las entradas
Mostrando entradas con la etiqueta desarrollo de software. Mostrar todas las entradas

domingo, 22 de diciembre de 2024

Cursor: La integración de inteligencia artificial en el desarrollo

En el artículo previo vimos cómo utilizar chatbots en línea como asistentes en la programación. Sin embargo, este método se basa principalmente en cortar y pegar, lo cual puede ser problemático. No solo es tedioso usar constantemente Ctrl+C y Ctrl+V, sino que también dificulta que el modelo tenga en cuenta el contexto. Para proyectos grandes, esta técnica resulta poco útil y solo sirve en casos específicos, como micro mejoras en el código.

Teniendo esto en cuenta, era cuestión de tiempo que surgieran herramientas para solucionar estos problemas y mejorar el flujo de trabajo. Hoy hablaremos de Cursor, un entorno de desarrollo integrado (IDE) que integra modelos de lenguaje de última generación y que, actualmente, es uno de los más populares.

¿Qué es Cursor?

En el contexto de una herramienta de desarrollo basada en inteligencia artificial (IA), como Cursor, se puede definir como:

Cursor es un entorno de desarrollo integrado (IDE) impulsado por inteligencia artificial que mejora la productividad de los programadores. Utiliza modelos de lenguaje avanzados para ofrecer funcionalidades como autocompletado de código, generación de funciones o scripts, explicación de código existente, depuración asistida y sugerencias contextuales en tiempo real. Además, integra herramientas como búsqueda inteligente y análisis de código para optimizar el flujo de trabajo en el desarrollo de software.

La siguiente captura de pantalla pertenece al tutorial de bienvenida de la herramienta. Es útil para introducir Cursor, ya que muestra muy bien las funcionalidades principales que ofrece.

Tutorial de bienvenida de Cursor

Prompt and Edit (Editar con un Prompt)

Con la combinación de teclas Ctrl+K, se abre un diálogo directamente en el código, permitiendo utilizar prompts relacionados con el mismo, realizar refactorizaciones específicas, entre otras acciones.

Diálogo de edición en Cursor

En el diálogo que se abre, en la esquina inferior derecha, aparece un desplegable donde se puede seleccionar el modelo utilizado, como gpt-4o. Tras pulsar Enter, se genera la respuesta y la herramienta crea el nuevo código, que aparece destacado en verde. Si nos convence, debemos aprobar los cambios para que se guarden.

Código generado por Cursor

Chat with your Codebase

Mediante Ctrl+L, se abre una nueva pestaña en el lado derecho. Esta funcionalidad permite ampliar el contexto al especificar los archivos que queremos que el modelo tenga en cuenta, o incluso indicar que considere todo el código, utilizando @codebase.

Chat con la base de código en Cursor

Otra ventaja de esta funcionalidad es que explica los cambios propuestos directamente en la ventana, ayudando a entender mejor las modificaciones antes de aprobarlas.

Explicación de cambios en Cursor

En cualquier caso, estas son propuestas que deben ser aceptadas o descartadas manualmente para asegurarse de que se adapten a nuestras necesidades.




Autocompletado y Errores


También ofrece consultas a modelos para arreglar errores:



E incluso para autocompletado como Code Copilot, pero esta funcionalidad viene con limitaciones, al los pocos intentos me encontré con este mensaje y tuve que deshabilitarlo:

 





jueves, 5 de enero de 2012

Editores de texto enriquecido y Cross Site Scripting

Recientemente he tenido que incorporar un editor de texto enriquecido a una aplicación, www.tabladequesos.es, después de investigar entre las diferentes opciones que encontré, me decidí por Tinyemc, seguramente el editor de texto enriquecido más extendido entre los desarrolladores, se caracteriza por ser un edito WYSIWYG, que traducido, el acrónimo viene a significar lo que ves es lo que tienes, esto quiere decir que tu editas el texto como lo editarías en una aplicación tipo openoffice word y el propio editor lo traduce a HTML de forma transparente para el usuario, en mi caso luego quiero mostrar este texto dentro de una página generada mediante JSF (Java Server Faces), la primera opción es mostrarlo en una etiqueta de texto pero el resultado es que muestra el texto HTML en crudo, como si lo viésemos en un editor texto, sin que esté interpretado, para conseguir que se interprete como HTML es necesario poner un atributo de la etiqueta h:outputText escape="false", en este momento es cuando se me empezaron a encender en la cabeza las señales de alarma, este detalle hace que la aplicación sea vulnerable a los ataques de XSS (Cross Site Scripting), que no es ninguna tontería ya que según OWASP, que desde mi punto de vista es la biblia de la seguridad en aplicaciones web, es el segundo riesgo más importante en este tipo de desarrollos (ver top 10), indagué un poco más y vi que desde OWASP ofrecían una solución que afortunadamente estaba disponible en java, es un proyecto alojado en google code que se llama antisamy, básicamente consiste en un API y un fichero de configuración XML que es en el que se basa el análisis de código HTML para ver si es malicioso o no, en la zona de descarga se ofrecen varios de estos ficheros para que el usuario seleccione el que más se ajuste a sus necesidades, a día de hoy se dispone de cinco ficheros, entre los que destacan los de ebay y myspace, y como no el de tinymce, pues va a ser verdad que tinymce está muy extendido.

martes, 29 de noviembre de 2011

Tim O'Reilly en FICOD

La semana pasada tuve la suerte de poder asistir a varias charlas/Talleres en el FICOD (Foro internacional de Contenidos digitales) en el Palacio de Congresos de la Comunidad de Madrid, es la quinta edición pero yo era la primera vez que asistía, la organización y el Palacio de Congresos en si, me parecieron excelentes, servicios de traducción simultanea, traductor para La Lengua de signos, control de asistencia mediante lectura de código de barras de la acreditación, un verdadero despliegue y una iniciativa que me pareció verdaderamente positiva y que desde aquí animo a repetir.

Uno de los patrocinadores fué RTVE y no se si por esta razón todas las charlas importantes están colgadas en la página del FICOD, como no pude asistir a la de Tim O'Reilly hoy he estado viendo su presentación la cual me ha parecido muy aconsejable para hacerse una idea de en que punto nos encontramos y cuales son las tendencias actualmente en las Tecnologías de la Información.

miércoles, 20 de julio de 2011

The Art of Lean Software Development (El Arte de Desarrollo de Software con Lean)

The Art of Lean Software Development (El Arte de Desarrollo de Software con Lean)
De Curt Hibbs, Steve Jewett, and Mike Sullivan
2009 (O’Reilly )
ISBN: 978-0-596-51731-1



Recientemente he terminado de leer este libro, empecé a leerlo porque quería tener otra visión de lean distinta de la que me podían dar los libros de Mary y Tom Poppendieck, algo más introductorio por decirlo de alguna manera, en ese sentido me he quedado satisfecho con el libro ya que creo es una buena aproximación a lo que es Lean, pero si ya estás familiarizado con las metodologías ágiles y sus prácticas es posible que no aproveches los capítulos centrales del libro porque tocará tópicos sobre los que ya hayas pasado, si por el contrario no tienes experiencia con las metodologías ágiles puede ser un buena toma de contacto.


El índice resumido del libro es el siguiente:


1 POR QUÉ LEAN?
2 APLICANDO LEAN AL DESARROLLO DE SOFTWARE
3 PRACTICA 0: TRATAMIENTO DE CÓDIGO Y CONSTRUCCIONES MEDIANTE SCRIPTS
4 PRACTICA 1: TESTEO AUTOMÁTICO
5 PRACTICA 2: INTEGRACIÓN CONTINUA
6 PRACTICA 3: MENOS CÓDIGO
7 PRACTICA 4: ITERACIONES CORTAS
8 PRACTICA 5: PARTICIPACIÓN DEL USUARIO
9 QUÉ ES LO SIGUIENTE?

miércoles, 14 de abril de 2010

El último libro técnico que he leido: Scrum and XP from the trenches.

Libro muy práctico enfocado al día a día de Scrum , el autor, Henrik Kniberg, cuenta como han resuelto en su equipo los problemas más comunes que se encuentran los desarrolladores de software al aplicar Scrum, aunque muchos de ellos son problemas comunes al desarrollo de software, a mi me ha servido para familiarizarme con esta metodología de trabajo, el libro está disponible de forma gratuita en INFOQ.

lunes, 1 de septiembre de 2008

Metodologías de desarrollo.

Esta mañana me he preguntado qué método/metodología de desarrollo está pegando más fuerte, y siguiendo con el estilo de la semana pasada para saber que analizador de código estático está teniendo más éxito, he comparado la tradicional “unified proces” en adelante UP o RUP con las emergentes y consideradas ágiles “extreme programming” en adelante XP y “scrum” , el resultado lo podéis ver en google insights.


Desde mi experiencia personal que he trabajado intensamente tanto con RUP como con extreme programming, recomendaría uno u otro dependiendo del proyecto, principalmente tamaño, pero sin seguir de forma radical ninguno de los dos, aunque me incline ligeramente hacia las metodologías ágiles. A lo largo de los proyectos por los que he pasado, he visto desde los que se hacía necesaria la figura de una persona, o equipo de personas, que se encargue de tener los diagramas producto del diseño en sincronía con los cambios que se van haciendo en código (RUP), hasta proyectos en los que el extremismo por hacer “pair programming” , o programación por parejas, que es una práctica típica de XP mediante la cual dos programadores se sientan con un mismo ordenador y teclado, se llevaba tan a rajatabla que cuando uno de los miembros de la pareja se tenía levantar para ir al servicio el otro dejaba de programar y se dedica por ejemplo a leer el correo, tanto en el primer caso, que parece más efectivo generar los diagramas de diseño de bajo nivel mediante un herramienta de forma automática, como en el segundo que parece más razonable dejar el “pair programming” sólo para el núcleo del programa, o para formar a los nuevos miembros del equipo, o para superar un error tedioso, me parecen claros ejemplos de llevar la metodología demasiado lejos, pero no creo que se piense que estoy en contra de modelar con UML o en contra de la programación por parejas, todo lo contrario, me parecen verdaderamente útiles, pero en su justa medida.

A lo mejor es por mi educación en Ingeniería Informática, pero a mi UML me sigue pareciendo una herramienta imprescindible, sobre todo en las primeras fases del análisis, para hacer un modelo de alto nivel.

En cuanto a scrum sólo tengo unas ligeras nociones, pero viendo los resultados ofrecidos por google insights me están entrando ganas de mirarlo más en profundidad, parece que a día de hoy esta arrasando, y si que conozco alguna empresa en España que ha apostado por ella, habrá que mirar en las páginas de ofertas de trabajo para ver si de verdad se está usando.

Me resulta interesante ver que la consulta relacionada que está creciendo más es “Agile Unified Process” que es una versión simplificada de RUP añadiendo conceptos de las metodologías ágiles como el TDD (desarrollo guiado por test) pero conservando principios inamovibles como desarrollar a partir de un Modelo.




20/07/2011 Actulización de google insight añadiendo Lean



delicious | digg | technorati | yahoo | meneame